2016 has been a crazy year – let’s just agree on this and not get into the details!  But, 2016 also did have some positive moments, especially in the Tridion community. Here I hope to highlight some of the positive contributions the community has made this year and hope that next year we will see continued support for these amazing initiatives!

DXA

This year has been the year the DXA framework (formerly known as the SDL Tridion Reference Implementation) has made made some traction and we’ve seen increased usage in projects.   The DXA team recently released version 1.7 and if you’re curious to find out what has been added, fixed and improved in this version then please see the release notes here.

We can see that DXA has been very active from a number of areas, such as their github repository with 1465 commits (https://github.com/sdl/dxa-web-application-dotnet/commits/master) and 360 questions on the Tridion StackExchange forum (http://tridion.stackexchange.com/questions/tagged/dxa?sort=newest&pageSize=50)

One of the nice things about using DXA is the modules that play nicely with other SDL products, such as Experience Manager, Audience Manager, Media Manager and Context Expressions. If you’d like to download them for free, then the latest versions can be found here, https://github.com/sdl/dxa-modules/releases

The official documentation has some good content and can be used as a reference, https://docs.sdl.com/LiveContent/content/en-US/SDL%20DXA-v7/GUID-8173623D-D605-4962-AFBD-25D5F6DC6D93

And if you prefer online or classroom training, it’s now available from SDL for DXA too, http://training.sdl.com/services/education-certification/training-product/web-content-management/index-tab4.html

If you would like to build a small microsite with your team in a workshop setting, then you may be interested in the DXA Microsite workshop that I teach. It is a 4 day course where we go over all the basics and walk the team through building a microsite based on your requirements. It is taught both online and remote. If you’re interested, please contact me at robert.curlette@gmail.com and mention the DXA microsite workshop.

Alchemy

Alchemy is the framework that makes your editors and authors happy, and saves time for everyone using the Tridion CMS Editor interface. A full plugin GUI framework created by Alex Klock and supported by Content Bloom, this is the framework you’ll install in 2017 to impress your content authoring team. The only requirement is that you use Tridion 2013 or SDL Web 8.

Installing the framework takes minutes, thanks to the nice MSI install, and it’s a 1 time install on the CMS server. The installer can be downloaded from here, just need to register first,  https://www.alchemywebstore.com/ See how easy it is with this video from John Winter, http://www.tridiondeveloper.com/how-to-install-and-uninstall-alchemy-for-tridion-web

Alex Klock and Tanner Brine  presented Alchemy at the Tridion Developer Summit 2015 and the video can be seen here, http://2015.tridiondevelopersummit.com/2015/home/transmute-tridion-into-the-lean-green-content-management-machine-of-your-dreams-with-alchemy4tridion/

This year the Alchemy Webstore  saw a lot of nice improvements and is a really easy to use one-stop-shop for finding all your Alchemy community plugins. As of now, all plugins are free, and can be used in your project without worries. Several new plugins arrived this year, including ‘CommonKeyboardShortcuts’ (https://www.alchemywebstore.com/plugins/CommonKeyboardShortcuts), Save Close Publish Page, (https://www.alchemywebstore.com/plugins/Save-Close-Publish-Page), and Peek (https://www.alchemywebstore.com/plugins/Peek).

Another reason to use Alchemy is the excellent packaging model, with .A4T files, and easy drag-n-drop deployment of the plugins you write. So, if you haven’t given it a spin, please do so now.

And, if you’d like to watch some video tutorials to help get you started, check out the amazing Alchemy Code Dojo presented by John Winter here, where he builds an Alchemy plugin from scratch in front of a live audience, https://vimeo.com/170368377

In case you can’t get enough of John or videos, check out the excellent series below on creating an Alchemy plugin:

Creating an Alchemy Plugin: Step 1 – The tools, http://www.tridiondeveloper.com/creating-an-alchemy-plugin-step-1-the-tools

Creating an Alchemy Plugin 2: Sample project overview and refactoring, http://www.tridiondeveloper.com/creating-an-alchemy-video-2-sample-project-overview-and-refactoring

Creating an Alchemy Plugin 3: Ribbon Toolbar and Context Menu, http://www.tridiondeveloper.com/creating-an-alchemy-plugin-2-ribbon-toolbar-and-context-menu

Alchemy Training Video 4: Creating a Popup Window, http://www.tridiondeveloper.com/alchemy-training-video-4-creating-a-popup-window

Alchemy Training Video 5: Adding CSS and JavaScript to our Tridion Popup Window, http://www.tridiondeveloper.com/alchemy-training-video-5-adding-css-and-javascript-to-our-tridion-popup-window

If you would like a hands-on workshop or course on Alchemy, I am teaching a 2 day course online or onsite, and if interested please contact me at robert.curlette@gmail.com

Conferences

Finally, this year we saw 3 technical Tridion conference events, recognizing the appreciation of sharing knowledge in the Tridion (SDL Web) community and that meeting and discussing technical solutions in person is priceless.

The Tridion Developer Summit saw more than 140 Tridion developers and consultants get together in Amsterdam for another 2 days and over 20 great sessions and sharing. If you missed it, or would like to see a talk again, all videos are available online here, http://2016a.tridiondevelopersummit.com/2016/videos-tds/

The next TDS is taking place on 11-12 May 2017 in Amsterdam and promises to be filled with technical Tridion content and lots of sharing opportunities.  Registration will open in early January.  If you would like to attend or present, please contact me at robert.curlette@gmail.com

This year we saw the first India Tridion Developer Summit, and I was honored to present about the Alchemy Framework. It was very well organized and had more than 60 enthusiastic Tridion developers from across India attending. I really enjoyed meeting so many active Tridion implementors and discussing implementations with them over delicious Indian food. I wrote about my experience here, http://www.curlette.com/?p=1492 Great job for the organizers and a nice writeup by Pankaj Gaur here, https://pankajgaur83.wordpress.com/2016/02/11/highlights-sdl-web-8-dev-summit-at-india/

Just last month we had the SDL Connect event in San Francisco and it was filled with an amazing energy and spirit. Days 1 and Day 2 were mostly for the business and marketing professionals.   It was great connecting with former colleagues and meeting new people.  Highlights from day 1 are here, https://www.youtube.com/watch?v=SeRe95Q8nAM.  The best was saved for last, and on day 3 we had a day of technical Tridion sessions in the same flavor as TDS, including a great Product Roadmap presentation by Alvin Reyes, DXA session by Bart Koopman, Cache invalidation talk by Mihai, Alchemy talk by Tanner Brine, and I presented a talk about upgrading to Web 8. Overall the event was a lot of fun and I look forward to the next one.

DD4T

This year the DD4T framework continued to mature and we saw a 2.1 version released.  But, most importantly, a decision was made to merge DD4T and DXA into 1 version, and to be named ‘DXA 2.0′.  We expect to see a release of the love child of DXA and DD4T sometime in 2017.   You can read more about it from Nuno and Quirijn here, and from Pankaj about why it’s merging here.

Summary

2016 was a year that we saw the DXA and Alchemy frameworks mature and gain wider acceptance. This should be a bright spot for anyone working with Tridion and investing in improving their implementations. I hope next year will bring more opportunities for sharing, more conferences, more events, and most of all, more fun!

powershell plus     Screen Shot 2016-03-21 at 16.58.40

Developing Alchemy extensions has the goal of improving the Tridion User Experience for Developers, Authors and Editors.  But, what about making it easier for us to develop Alchemy Plugins?  Peter Kjaer had us in mind when he developed the excellent Alchemy Powershell Plugins.  You only need 5 minutes to get started with these scripts and they will save you lots of time and no more dragging and dropping the Plugin after you build every time.

The plugin watched the /bin/debug folder of your Alchemy Visual Studio project and automagically sends the .a4t file to Tridion and updates the GUI.

Follow these easy steps to get it running:

If your server is connected to the Internet then you can get started with 1 easy command at the PowerShell Command Line from https://github.com/pkjaer/tridion-powershell-modules/blob/master/README.md:

wget “https://raw.githubusercontent.com/pkjaer/tridion-powershell-modules/master/Alchemy/Installation/Install.ps1″ | iex

Otherwise, if your server is behind a firewall and unable to executre the wget command, have no fear, the quick manual install process is here!

1.  Download the Powershell scripts from https://github.com/pkjaer/tridion-powershell-modules (Download .zip button) or in a terminal type ‘git clone https://github.com/pkjaer/tridion-powershell-modules.git’

2.  Open the PowerShell Command Prompt or the PowerShell ISE and go to ‘Alchemy/Installation’.    Install the scripts with ‘.\Install-Local.ps1′.  If you use only the ‘Install.ps1′ script then it will require an Internet connection.

3.  Start the Alchemy Plugin Monitor script by typing  ‘Start-AlchemyPluginMonitor’

4.  Enter the folder of your plugin’s bin/debug folder

5.  Go into Visual Studio and build the project.  If you have the PowerShell ISE open, you will see the PowerShell script copying the .A4T file to Tridion.

 

Summary

Using the Alchemy Framework has many benefits when building Tridion GUI Extensions.  One of the strongest features in my opinion is the packaging of  files in an .A4T package, and the ease of deployment of the .A4T files with the Alchemy Webstore, Drag-n-Drop or PowerShell.  These PowerShell scripts from Peter Kjaer support and strengthen the Alchemy Development Tooling Pipeline, making our lives easier as Developers and help us bring the magic of Alchemy plugins to users faster than ever before.

This year the SDL Web Dev Summit India was hosted in Delhi and I had the opportunity to present about the Tridion Alchemy Framework.  For the presentation I ported to Alchemy an older custom ASP script to delete (and unlocalize) All Blueprint Children.  In this article I will highlight the process I used and include a link to the sourcecode.  I stil need to polish a few things before I add it to the Alchemy store, but please have a look at my code and hopefully it will help you in building your Alchemy plugins.

Screen Shot 2016-02-08 at 18.45.53

Here I will outline the steps I followed to write the plugin.  I won’t dive into too much detail, but I hope this will help you get started.

Prep work

Writing a plugin involves looking at some good code samples.  So, my first step was to download and install every Alchemy plugin and also every sourcecode repository that was available.

The latest version of the Alchemy VSIX Visual Studio Plugin has a nice Project Type called ‘Starter Plugin Project’. This creates a nice example with a button in the ribbon and also context menu. In my presentation I was able to go from File, New Project to having an Alchemy Plugin in my Tridion system in under 3 minutes.  The reason I like the starter project so much (aside form the fact it’s very easy and fast to use) is it has a great clean structure of the files and folders, and provides an excellent reference.

Writing the GUI

The GUI is now much easier to write and install than ever before (especially if you’ve done GUI Extensions!).  However, there is some rhyme and reason for a lot of the things in the Alchemy framework and I will try to highlight a few here.

1.  Create the Static folder.  This holds your Commands .js file (which is executed when you fire the GUI event, and the same one we used in older GUI Extensions).  Also in static you’ll have any .aspx popup files and css/js files your popup uses.   In Static I create a Commands folder.

2. Next create a new Alchemy GUI item, Alchemy Javascript Command
Screen Shot 2016-02-22 at 17.36.19

 

3.  In the .js file, I define a command name, ‘UnLocalizeAllCommand’ that is very important and will be used later.  I also borrowed some code from Mark Richardson’s ‘Real Time Publishing Stats’ plugin to open the popup .aspx file.  *Note – in this version your popup must be an .aspx file and not .html.  Otherwise, it will not be deployed to the views folder when you deploy the .a4t file.

4.  Under static, create a Views folder and in there the .aspx page for the popup.  The Javascript code to call the WebApi Controller (with CoreSevrice) was quite tricky to get correct.  You can see it here on Github

5.  Next is to Add the button to the GUI.  The context menu is added with ContextMenuUnlocalizeAll.cs and Ribbon is from RibbonToolbar.cs.

6.  Next we tell Alchemy what files to include for us with the ResourceGroupFiles.cs and PopupResourceGroup.cs files.

7.  With the PluginCommandSet.cs we specify the same command name we used in step 3.

8.  Now we could build and deploy the Alchemy Plugin and we should be able to see the items in the context menu and ribbon bar.  The last step is to add the functionality to do something.

9.  Create the controller, UnLocalizeController.cs,  in a new Controllers folder and make sure to reference the Core Service Client.  Here is where the main functionality is impemented.  Carefully look at the AlchemyRootPrefix attribute and also the Route attribute on the class.  These 2 parameters define how we access the service.

10.  Finally, build the project to create the .A4T file.  If you get annoyed with the alchemy popup window, disable it by opening your .csproj file (in Notepad++ you’ll need to run it with the Admin user) and follow my tip here to disable it for Dev.

11.  Drag and drop your .A4T file into the Tridion Alchemy GUI Admin and then refresh the GUI.  With a bit of luck and the right star alignment your new Alchemy Plugin should be working.  If not, use the browser’s JavaScript console to help debug any .js errors coming from the plugin.

Full Source Code is available here:  https://github.com/rcurlette/AlchemyUnlocalizeAllChildren/

Summary

I hope this article helped you understand the flow of building an Alchemy plugin and assists you in your plugin dev.  Please share your plugins on the Alchemy WebStore so we can all benefit from the community.  Special thanks to Pankaj Guar for inviting me to speak at the SDL Web Developer Summit India!  Big thanks to Content Bloom and Alex Klock for creating the Alchemy Framework and sharing with the world!

1SDL Web India Dev Summit - Group

1SDL Web India Dev Summit – Group

 

Getting started with the Alchemy Framework for Tridion GUI Extensions is made easy with the great documentation provided on the online A4T API documentation site.

When first getting started you might use the HelloWorld sample project or the Big Box of Samples project.  Both are great places to start exploring the structure of an Alchemy plugin.

After the exploration you’ll want to make a small change, possibly some new text in the popup in the BBS project.  The popup text is in the View files at /Static/Views.

Then you’ll build the project and get an upload to alchemy webstore popup.   While this is great and we want to use this when our plugin is ready, we probably don’t intend to put our personal Hello World project in the Alchemy webstore.

Disable the Upload the Alchemy Webstore Popup

The Alchemy authors have thought of it all – including an easy way to configure this popup.
1.  Open the .csproj file for your project
2.  Update the following line.  I prefer to leave it to Release.  The HelloWorld plugin has it set to ‘true’.  I’m guessing that was the original implementation, but I very much like the Release|Debug mode switch.

<AlchemyUploadDialog>Debug|Release</AlchemyUploadDialog>
<AlchemyUploadDialog>true</AlchemyUploadDialog>

Change to:

<AlchemyUploadDialog>Release</AlchemyUploadDialog>

My Current Flow for Developing Plugins

(September, 2015)
1. Make a change in the VS project
2. Build
3. Open the Alchemy GUI
4. Uninstall existing plugin
5. Open windows explorer – drag and drop the .a4t file
6. Open gui and see change

Improved Flow

To help us all and also “celebrate the Anti-RSI gods”, Mark Williams has written a great blog post of how to automate the above steps, leaning on the PowerShell script from Jan Horsman. Get it setup to speed up your Alchemy Plugin hacking.

Summary

Writing Alchemy Plugins is fun and easy thanks to all the hard work Alex Klock and the team at Content Bloom have put into the Framework.  It’s quite addictive and has been described as a ‘lifestyle’ by Tanner Brine at this year’s Tridion Developer Summit Alchemy Presentation.  Good luck with your own alchemy concoctions!