Triggered by this question: How to mass delete Tridion MessageCenter warnings? I have been moved to issue the Tridion Bookmarklet challenge.

As this is a community challenge, we'll be making use of this question to do the voting.

What you need to do

  • Create a useful and well-constructed bookmarklet which enhances the Tridion GUI in some way. It should work with SDL Tridion 2013, but you may wish to consider making it work for 2011 as well.
  • Publish it on-line. You can put it on your own web site, or host it somewhere else. (SDL Tridion world, Google code... whatever - I don't care, as long as it's available via the Internet.)
  • Publicise it. You should tweet a link to your entry using #tridionlet. You also need to link to it in an answer to this question. Use whatever other means are at your disposal to publicise your entry.
  • Apportion the credit correctly. You can enter as a team if you like - so if one person is responsible for the functional aspects, and another for hacking out gnarly javascript, you should say so. Just as long as it's clear who should get the kudos.
  • Get this all done by the end of 31 December 2014.

What happens once you've done this?

The judging will be done by the community. This is the reason why you need to link to your entry from an answer to this question.

We'll wait until the end of January, which should give people a chance to finish their New Year celebrations, and actually read the code... maybe try the bookmarklets out in real life. There'll be a burst of publicity during January to make sure people think about voting, and then whoever has the most votes by the end of 31 January 2015 will be the winner.

Is it better to wait until January to vote?

Yes - the entries might be improved right up to the deadline. Who knows? Also - some people may prefer not to put their entry on-line until quite late on, or may feel pressured by seeing other entries getting more votes (or less).

  • Entrants: remember that many people will wait until January to vote, so don't read too much into it until then.
  • Voters: I'm putting you on your honour to vote for the best entries. So please don't just vote for your mates, and please don't vote to show some kind of company loyalty. This is personal, not corporate.
  • Nice challenge, Dom. Any preference for license? I'm assuming we're looking for open source contributions? And is the judging criteria on "usefulness?" – Alvin Reyes Aug 25 '14 at 4:09
  • Good point. Alvin. Well it's a requirement that the code be on-line, so at least open source in that sense. But indeed, I think it's implicit that people should also be able to use the code, and modify it for their own purposes, etc. My own preference would be an MIT license, but let's leave it up to the entrants. I think it comes under "usefulness". I think people should judge on "everything", but "useful and well-constructed" should be the basis. – Dominic Cronin Aug 25 '14 at 4:54
  • Hmmm.... is this one still needed? twitter.com/#!/puf/status/102032773413486592 (see curlette.com/?p=818 for an explanation that didn't fit in 140 characters). – Frank van Puffelen Sep 28 '14 at 22:52
  • Just a reminder folks.... end of 31 Dec. Hmm... do we need to specify a timezone? :-) – Dominic Cronin Dec 13 '14 at 8:25
  • Ok folks. It is now officially 2015, and the bookmarklet challenge is closed to new entries. Now the fun really starts, because we are (still) open for voting. Your vote should be based on "useful and well-constructed", so you can consider both functional and technical aspects. Happy New Year, and happy voting. – Dominic Cronin Jan 1 '15 at 11:00
  • 1
    Clarification: Now that we've all started giving feedback on the bookmarklets, it's inevitable that some things won't be perfect. So although the competition is now closed for new entries, it seems reasonable to allow bug-fixes. In a similar vein, improving the documentation to make it more accurate or complete is OK too. Hey - it's a friendly competition. If you want to make an improvement that you think would overstep the bounds of fair play, then find a way to release it to the community in a way that makes it clear what is additional to your competition entry. – Dominic Cronin Jan 2 '15 at 11:46
  • Was this the first Tridion community competition? Kudos to Dom for asking an interesting question and starting something new. Now how do we get this goodness into PowerTools? ;-) Or is this the new new new(?) thing? – Alvin Reyes Jan 3 '15 at 7:11
  • Of course, bookmarklets are just a gateway drug. :-) But I see a case for integrating some things into the power tools, while others are better as bookmarklets or browser extensions. – Dominic Cronin Jan 3 '15 at 8:53
  • Well that's it - the votes are in. It's now February, and the clear winner is UI Beardcore with Multiple Upload. Congratulations to our worthy winner, and also to everyone else who took part. Thanks to everyone. – Dominic Cronin Feb 2 '15 at 19:43
  • UI Beardcore has the top vote of 15 as of February 6th. @DominicCronin, we don't need to "freeze" voting (by closing the question), right? – Alvin Reyes Feb 6 '15 at 23:53
  • 1
    I'd prefer to keep the question open. After all, it's a good reference to all the entries. And yeah, uibeardcore has already won. – Dominic Cronin Feb 7 '15 at 8:21
  • Sounds good. @FrankTaylor showed me a trick to use in another bookmarklet. Consider it an after-thought submission. – Alvin Reyes Feb 11 '15 at 23:09
  • You just reminded me that I should accept the winning answer. – Dominic Cronin Feb 12 '15 at 6:23
  • 1
    Alright: here's for thinking outside the box: Bookmarklets inside Schema Default urls. We've tried it for fun, but unfortunately (and perhaps rightly so), the inserted source code gets heavily escaped, and the onclick event on the schema description link gets precedence over the actual injected javascript. Bummer... – MDa Feb 20 '15 at 13:45

14 Answers 14

up vote 16 down vote accepted

I`ll keep it simple.

Its like an extension (Tools | MultipleUpload), but just a bookmarklet:

http://tridion.uibeardcore.com/2014/07/tools-multipleupload/#bookmarklet

  • Nice feature and cool video (is that under 10 seconds??). – Alvin Reyes Jan 3 '15 at 6:55
  • Thanks, I hope it would be useful. And it has 09.25 to be precise, however, it is not a video, but a Gif image. – UI Beardcore Jan 6 '15 at 9:55
  • Maybe Tridion gifs could be part of the next community challenge? :-) – Alvin Reyes Jan 6 '15 at 19:32
  • I know this is an old post, but beardcore's site appears to be down. Would anyone happen to have this bookmarklet lying around somewhere? – Quirijn Jun 24 at 10:53

Mine isn't that fancy, but it's useful. http://blog.frankmtaylor.com/2014/12/30/pub-up-a-bookmarklet-for-tridion/

It's Pub Up. All it does is keep you in the same folder that you're currently in, but take you one publication higher.

My bookmarklet doesn't require updating; it calls JS from a server and executes it. So if you find bugs, I'll be able to resolve them for everyone, simultaneously.

Here's the Gist: https://gist.github.com/paceaux/c07df26d2950e7ac683a

  • Awesome! Not to take away from this, but the BluePrint viewer lets you do the same, but it's definitely 2-3 clicks slower than Pub Up. – Alvin Reyes Jan 3 '15 at 6:52
  • I'm working on speeding up Pub Up, too. I'm using a less than optimal technique to route you to the higher publication, right now: URL rewriting. The plan is to actually use the Tridion GUI to do it. – paceaux Jan 5 '15 at 14:22

Thanks Dom for raising the bar through this challenge and given everyone an opportunity to unleash the power of Anguilla Framework.

This is My first entry to the Bookmarklet Challenge - File Details of a Multimedia Component

(And before I submit, I would like to Thanks Robert Curlette and Orlov (UI Beardcore) for their helps directly and indirectly :))

My entry is meant to display the File Name and the File Size of the file uploaded in a Multimedia Component. The details of the Bookmarklet is here: Bookmarklet - File Details

  • Great for troubleshooting binaries! – Alvin Reyes Jan 3 '15 at 7:16

I Accept the challenge,

My submission for this challenge is a Chrome Extension that removes the messages / notifications from the SDL Tridion 2013 SP1 GUI. It works on the Active Tab in Chrome that has /SDL/ in the URL it wont work when your in the component TAB. Since it's for public use, i needed to check on SDL in the url so it won't interfere with any other open TAB.

There is nothing like a challenge to bring out the best in man.

Link to Chrome Extension

  • Great to have our first challenger. I'm not going to quibble that it's not a bookmarklet - it's definitely in the spirit of the thing, and also a very interesting direction. Right now, though, it's a little difficult to see how it works. Are you planning to write about how one builds such a thing? – Dominic Cronin Aug 31 '14 at 17:21
  • Thanks Dominic, I will write on how it's done on my blog soon. – Roel van Roozendaal Sep 1 '14 at 5:41
  • 1
    @DominicCronin Blog post is done, tridion.e-kix.nl/2014/09/06/tridion-chrome-extension – Roel van Roozendaal Sep 6 '14 at 10:41

My entry is Rename Tridion Item: http://blog.building-blocks.com/sdl-tridion-bookmarklet-challenge-entry-rename-tridion-item

Disclaimer: not very tested!

Thanks to UI Beardcore for the basic code.

  • 1
    There's an assisted-by UI Beardcore theme going on here. I'm imagining him saying, "oh, you mean without following the rules? I can help you with that." :-) – Alvin Reyes Jan 3 '15 at 7:14

I try to bend the rules of the challenge ;-) and add this handy tool. This bookmarklet helps you to quickly logon to the SDL documentation portal.

See the raw code in Gist, just add this in the location field of a new bookmarklet.

Gist, the full source and blog post are available.

  • The rules have already been bent once. The spirit of the challenge is pretty wide. I hope that as long as an entry is somehow relevant to Tridion, people will judge on the basis of "useful and well-constructed". Especially if there's an innovation in some direction we hadn't thought of. – Dominic Cronin Dec 19 '14 at 5:42
  • You should still tweet it though. That rule is very strict! :-) – Dominic Cronin Dec 19 '14 at 5:44
  • Definitely goes well with: xkcd.com/386. – Alvin Reyes Jan 3 '15 at 7:00

My entry to the 2014 Bookmarklet Challenge, sponsored by Dom, is a simple notification of the currently selected item's WebDavUrl: http://www.mrgn.co/2014/12/bookmarklet-challenge-get-an-items-webdavurl/

Thank you

I accept the bookmarklet challenge and my entry is a Bookmarklet to count the number of items in the dashboard view. It can be installed from the blog page here and the raw code is also on github

Special thanks to UI Beardcore for the help in cleanly acquiring a reference to the Dashboard view.

  • Nice! It's fascinating watching a question evolve into another question and then into a competition, resulting in a submission by the author of the original question. – Alvin Reyes Jan 3 '15 at 7:20
  • Community power! – robrtc Jan 3 '15 at 12:33

I'd like to throw my hat into the ring with a Get Creation Info Tridion bookmarklet.

It simply displays the creation date and creating user of a selected item in the main working area.

enter image description here

Here is the compressed source that needs to be added as the bookmark URL:

javascript:(function(e,t,n,r,i,s){try{while(i=e.frames[n++]){if((r=i.$display&&i.$display.getView())&&r.getId()==t){s=r;break}}var o=window.top.frames[1];var u=s.getMainInterface().getListSelection().getVersionlessIds()[0];var a=i.$models.getItem(u);if(a!==undefined){setTimeout(function(){var e=a.getCreationDate();var t="unknown";var n=a.getCreatorId();var r=i.$models.getItem(n);if(r!==undefined){if(r.getInfo().FullName!==undefined){t=r.getInfo().FullName}else{t=r.getInfo().Title}}alert("This item ("+u+") was first created on "+e+" by "+t)},400)}else{alert("Please select an item...")}}catch(f){alert("Please select an item...")}})(window.top,"DashboardView",0)

(I used the following online tool for the compression: http://jscompress.com/)

And here is the uncompressed source code:

javascript: (function (UI, B, e, a, r, d)
{
    try
    {
        while (r = UI.frames[e++])
        {
            if ((a = r.$display && r.$display.getView()) && a.getId() == B)
            {
                d = a;
                break;
            }
        }

    var m1 = window.top.frames[1];
        var itemId = d.getMainInterface().getListSelection().getVersionlessIds()[0];
        var item = r.$models.getItem(itemId);

        if(item !== undefined){
          setTimeout(function(){
            var creationDate = item.getCreationDate();
            var creatorName = 'unknown';

            var creatorId = item.getCreatorId();
            var creator = r.$models.getItem(creatorId);

            if (creator !== undefined) {              
              if (creator.getInfo().FullName !== undefined){
                creatorName = creator.getInfo().FullName
              }
              else
              {  
                creatorName = creator.getInfo().Title;
              }              
            }

            alert('This item (' + itemId + ') was first created on ' + creationDate + ' by ' + creatorName);
          }, 400);
        }
        else {
          alert('Please select an item...');
        }
    }
    catch (x) {alert('Please select an item...');};
})(window.top, 'DashboardView', 0)

I'd like to thank the following people, whose source code I took 'inspiration' from:

As well as the Anguilla Snippets on the Tridion Practice site.

Disclaimer: This code is not production quality, and has had only limited testing.

  • useful when you need to "educate" others on how to use your content model and organization correctly. ;-) – Alvin Reyes Jan 3 '15 at 7:21

A second submission. Not nearly as exciting as the first. What it does is look at your active frame (whether you're navigating, or you have a specific item open), and it makes that item available on the window object as a anguillaMediator.

Essentially, it acts as a mediator, or a shortcut, for doing stuff with Anguilla. It could be very useful for building more complex bookmarklets.

http://blog.frankmtaylor.com/2014/12/30/a-neat-tridion-trick-with-the-pub-up-bookmarklet/

  • +1. I'll have to borrow the fishing poll metaphor next time I guilt someone into sharing. ;-) – Alvin Reyes Jan 3 '15 at 7:05
  • Oh and I'm curious what term the other @Frank might use for the anguilla Mediator. I miss the debates on terms like "Schema Template" and what exactly is a Mediator. :-) – Alvin Reyes Jan 3 '15 at 7:06
  • Anguilla Utility? Anguilla Object Inspector? Anguilla Doohickey? – paceaux Jan 5 '15 at 14:24
  • "Mediator" is validated in true Mr. P form: twitter.com/puf/status/551346778914963456. Forgive me for doubting, but it was fun asking. "Frank makes mediators." – Alvin Reyes Jan 5 '15 at 14:26

Entry number 2

This one opens the schema (in a new tab) of the Component you have currently selected. I often want to check the fields etc of a component, and this is a quick way to open it up.

The bookmarklet works out the owning publication of the schema in question, and opens it in a new tab.

http://www.mrgn.co/2014/12/bookmarklet-challenge-open-schema/

*please let me know any bugs... testing is limited to say the least

  • This is definitely going to be part of my "BA Toolkit" -- designing Schemas from scratch is one thing, but I frequently have to revisit content models built by people who are not me. ;-) – Alvin Reyes Jan 3 '15 at 7:29

This is My second entry to the Bookmarklet Challenge - Localize An Item

My entry is meant to Localize a selected Item. The details can be found here - Bookmarklet - Localize an Item

  • Localize is also available in the Organize ribbon toolbar, but with enough bookmarklets you might opt to create your own custom "shortcuts" menu, akin to the Quick Access Toolbar in Word. – Alvin Reyes Jan 3 '15 at 7:27

View Schema Info Bookmarklet, http://www.curlette.com/?p=1393

My 2nd entry into the Bookmarklet Challenge.

Using some CSS that Frank Taylor posted awhile back along with Paul Irish's CSS injecting bookmarklet, you can "auto-document" elements in pages.

In addition to class and id, you can display other attributes such as property, typeof, and resource. For example, before and after divs you might use content:

div::before{
    content: attr(property) attr(typeof) attr(resource);
  }
div::after{
  content:attr(class) attr(id); 
}

Use the browser Console or the bookmarklet to get the CSS in. This gets you column, region, field, and link data from the "delivery-side content model" you get for free with STRI.

auto-documented screenshot

The alternative are TBB and/or HTML-on-Staging approaches, but this is a quick-and-dirty way to get a screenshot since I don't always have access to the server.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .