Monday, March 14, 2011
Sitecore Firebug Javascript Error
Friday, January 16, 2009
Configure RTE in Sitecore 6
Tuesday, October 21, 2008
Unofficial Sitecore 6 Active Directory Module Administrator’s Guide
Sitecore has released an Active Directory Module for Sitecore 6 which I believe to be the equivalent of the LDAP Module that was available for version 5.3 and below. This guide will explain how to configure the AD Module in your environment with one AD domain.
- Install the AD Module package (you should know how to do this already)
To verify that it was installed correctly check to see that the following files exist:
- /bin/LightLDAP.dll
- /bin/LightLDAPClient.dll
- /App_Config/Include/ldap.config
- /sitecore/admin/LDAPLogin.aspx
- /sitecore/admin/ProviderStatus.aspx
- Open /App_Config/ConnectionStrings.config and add a connection string similar to the one below.
<add name="LDAPConnection" connectionString="LDAP://{DomainController}/OU={LowestOUName},OU={OUNameAboveLowestOne},DC={DomainName},DC={com or org}"/>
- DomainController should be the name of one of your company's domain controller server's
- LowestOUName is the OU you want to get users from
- OUNameAboveLowestOne is the OU Name above the OU you want to get user's from, you may not have this entry or you may have multiples of this, check out MSDN for LDAP Query specifics.
- DomainName is the name of your domain
- Com or org is the .com or .org or .net domain extension
- Open the web.config file and find the <membership provider="sitecore"> tag and add a provider by cutting and pasting from below and filling in your values for the values in brackets.
<add name="{NameOfYourDomain}" type="LightLDAP.SitecoreADMembershipProvider" connectionStringName="LDAPConnection" applicationName="sitecore" minRequiredPasswordLength="1" minRequiredNonalphanumericCharacters="0" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" connectionUsername="{Sitecore LDAP User}" connectionPassword="{Sitecore LDAP User Password}" connectionProtection="Secure" attributeMapUsername="sAMAccountName" enableSearchMethods="true" />
- {NameOfYourDomain} is your domain name
- {Sitecore LDAP User} is the user that Sitecore will use to connect to your AD
- {Sitecore LDAP User Password} is the password of the above user/>
- Still within the <membership provider="sitecore"> tag, find the provider:
<add name="sitecore" type="Sitecore.Security.SitecoreMembershipProvider, Sitecore.Kernel" realProviderName="sql" providerWildcard="%" raiseEvents="true" />
and change the realProviderName to switcher so the line now reads
<add name="sitecore" type="Sitecore.Security.SitecoreMembershipProvider, Sitecore.Kernel" realProviderName="switcher" providerWildcard="%" raiseEvents="true" />
- Now find the <roleManager defaultProvider="sitecore" enabled="true"> tag and add a provider by cutting and pasting from below and filling in your values for the values in brackets.
<add name="{NameOfYourDomain}" type="LightLDAP.SitecoreADRoleProvider" ConnectionStringName="LDAPConnection" applicationName="sitecore" username="{Sitecore LDAP User}" password="{Sitecore LDAP User Password}" />
- {NameOfYourDomain} is your domain name
- {Sitecore LDAP User} is the user that Sitecore will use to connect to your AD
- {Sitecore LDAP User Password} is the password of the above user/>
- Still within the <roleManager defaultProvider="sitecore" enabled="true"> tag, find the provider:
<add name="sitecore" type="Sitecore.Security.SitecoreRoleProvider, Sitecore.Kernel" realProviderName="sql" raiseEvents="true" />
and change the realProviderName to switcher so the line now reads
<add name="sitecore" type="Sitecore.Security.SitecoreRoleProvider, Sitecore.Kernel" realProviderName="switcher" raiseEvents="true" />
- Add a machineKey to the <system.web> section. It will look like
<machineKey validationKey="" decryptionKey="" validation="SHA1" /> you can go here http://aspnetresources.com/tools/keycreator.aspx to have one created for you, just generate one using the default values on that page. Example:
<machineKey validationKey="F0893ED36F497B12D0374825033C51F92E85A028C05E65474FB39D41240A6F11F06B531FFC07C3A53239CE8B789C624A7486556E44D8F7165A249605E86375E7"
decryptionKey="7509A38E7B68F1A610D6463B977805F2008D9EDAF2C55E79" validation="SHA1" />
- Find a section in the web.config similar to <switchingProviders> and add the sections in bold.
<membership>
<provider providerName="sql" storeFullNames="true" wildcard="%" domains="*" />
<provider providerName="{NameOfYourDomain}" storeFullNames="false" wildcard="*" domains="{NameOfYourDomain}" />
</membership>
<roleManager>
<provider providerName="sql" storeFullNames="true" wildcard="%" domains="*" />
<provider providerName="{NameOfYourDomain}" storeFullNames="false" wildcard="*" domains="{NameOfYourDomain}" />
</roleManager>
<profile>
<provider providerName="sql" storeFullNames="true" wildcard="%" domains="*" />
</profile>
</switchingProviders>
- Open up /App_Config/Security/Domains.config.xml and add a domain.
<domain name="{NameOfYourDomain}" ensureAnonymousUser="false" />
If you've done everything correctly you should now be able to open up User Manager in Sitecore and see users from your AD OU listed.
Improving Sitecore 6 Active Directory Module Performance
There is a new module for Sitecore 6 called Active Directory Module which seems to replace the LDAP Module that was available in Sitecore v5.3 and below. This new module uses the ASP.NET Membership provider available with ASP.NET 2.0. The Official Administrator's guide to this new module explains how to configure it for your Sitecore environment. I will release my unofficial guide in the next day or so but in the meantime you should be aware there are significant performance issues with it that were not present in the old LDAP Module. At least for me and one other person there has been. These steps will explain how to work around these performance issues but aren't supported by Sitecore so be sure to backup all the files I tell you to edit. I haven't seen any problems with this workaround but if you do let me know and I'll investigate, as far as I know these changes do not cause any additional issues. So let's get to it.
When trying to use the User Manager and page through the many users from your AD domain you may notice that it is too slow to use. To improve this you'll want to do a few things:
Open up the web.config file and find the following line which defines the number of rows returned when paging through the grid which is a Component Art Web UI Grid.
<setting name="GridPageSize" value="15" />
Change the value to 24.
Now open up C:\Inetpub\wwwroot\{websitename}\WebSite\sitecore\shell\Applications\Security\UserManager\UserManager.aspx
Change the PageSize="20" property of the grid to PageSize="24"
Within the columns definitions of the grid comment out the columns for the Domain, Profile.Email, Profile.Comment, Profile.ClientLanguage and Profile.State. This is the change that really improves the performance. You probably don't care about all those fields anyway, and if you do, then just uncomment the one you want to see and it will appear in the grid.
As a side note, the Grid has a property called RunningMode which is set to CallBack, if you set it to Server instead it will cause the Grid to do a post back when paging which I have found did not significantly increase the performance of the paging but if commenting out the lines above doesn't help you may want to try that.
Also within your LDAP query in the AD Module try to get it down to one OU or a few OU's with few people in them, the more data it needs to bring back the worse performance will probably be.
With the changes above, open the User Manager and now instead taking a few minutes to get to the next page or not paging at all, it should only take < 1 min to page to the next set of users. Not great but better than what it was before we started.
The other pain point is managing roles with the Role Manager and managing user roles inside the Role Manager. Comment out the same lines as above in the following files and your performance using Role Manager should also increase.
All files in C:\Inetpub\wwwroot\{websitename}\WebSite\sitecore\shell\Applications\Security\RoleManager include similar Grids except for NewRole.xaml.xml.
And C:\Inetpub\wwwroot\SitecoreSix\WebSite\sitecore\shell\Applications\Security\SelectAccount\SelectAccount.xaml.xml contains a similar grid that you can comment out the Email and Profile.Comment columns.
Tuesday, October 14, 2008
Unofficial Sitecore Migration Guide Upgrading from Sitecore 5.3 rev 071114 to Sitecore 6
Upgrading from Sitecore 5.3 rev 071114 to Sitecore 6
Unofficial Sitecore Migration Guide Upgrading from Sitecore 5.3 rev 071114 to Sitecore 6
Unofficial Sitecore Migration Guide
Upgrading from Sitecore 5.3 rev 071114 to Sitecore 6
Step One: Install Sitecore 6
Screen shots of installation below.
Must be SQL 2005 or 2005 Express Database
Attempt to launch http://sitecore6/sitecore if you receive the error below then do the following: remove and then add the sitecore sql user to the Sitecore 6 databases as dbowner.
Databases:
{web site name}Sitecore_Core
{web site name}Sitecore_Master
{web site name}Sitecore_Web
Switch to the Advanced view, select Desktop, click the Hide Warning button. The username is Admin and the password is b.
Attempt to launch http://sitecore6, if you've done everything right you will see the screen below.
Ok if you've made it this far you now have a clean installation of Sitecore v6.
Step Two: Grant Access
Grant "Network Service" and "Internet Guest Account" Full Control rights to the Sitecore 6 web root within C:\inetpub\wwwroot if that's where you choose to install Sitecore 6.
Step Three: Make a backup copy of the original Sitecore 6 root folder
Just in case you need to revert back to an original file, make a copy of the Sitecore 6 web site root folder.
Step Four: Install updates to Sitecore 6
Download Sitecore 6.0.0 Update rev. 080912.zip which fixes Sitecore's problem with .NET 3.0 SP1. (Or download the lastest update which contains the fixes for all previous updates)
Install the update package and overwrite all when prompted.
To verify that is was install successfully check the version of Sitecore.Client.dll in the bin directory of the web site. It should say 6.0.0 rev. 080912 if it doesn't then the update wasn't installed.
Step Five: Install upgrade prerequisite packages
Download the Database Conversion tool and extract the contents which should give you two zip files: Sitecore Update Installation Wizard-2.0.0 rev. 080730.zip and V6DBConversionTool-1.0.0rev080923.zip
Install Sitecore Update Installation Wizard-2.0.0 rev. 080730.zip first and overwrite all when prompted. To verify that this update was successful verify that a Sitecore.Update.dll file exists in the bin directory of the web site.
Now install V6DBConversionTool-1.0.0rev080923.zip and overwrite all when prompted. To verify that this update was successful look in the sitecore/admin/ folder within the website root there should be a folder called upgrade with three folders in it and then additional files within those folders.
Step Six: Copy security template files
Copy the "security templates.xml" in the old Sitecore installation from /sitecore/shell and copy it to the new Sitecore 6 installation into /sitecore/shell.
Step Seven: Modify connectionstrings.config file
Open up App_Config/ConnectionStrings.config and rename the master connection string to v6_master. Then add connection strings to the Sitecore 5.3 databases except for the web database. Oh and the core database string for the 5.3 connections should be named v53_core. Example of a fully modified file is below.
<add
name="core"
connectionString="user id=sitecore;password=***;Data Source=bc-sitecore\SQLEXPRESS;Database=SitecoreSixSitecore_Core" />
<add
name="v6_master"
connectionString="user id=sitecore;password=***;Data Source=bc-sitecore\SQLEXPRESS;Database=SitecoreSixSitecore_Master" />
<add
name="web"
connectionString="user id=sitecore;password=***;Data Source=bc-sitecore\SQLEXPRESS;Database=SitecoreSixSitecore_Web" />
<add
name="master"
connectionString="user id=sitecore;password=***;Data Source=bc-sitecore;Database=sc531071114Master" />
<add
name="security"
connectionString="user id=sitecore;password=***;Data Source=bc-sitecore;Database=sc531071114Security" />
<add
name="extranet"
connectionString="user id=sitecore;password=***;Data Source=bc-sitecore;Database=sc531071114Extranet" />
<add
name="v53_core"
connectionString="user id=sitecore;password=***;Data Source=bc-sitecore;Database=sc531071114Core" />
<add
name="recyclebin"
connectionString="user id=sitecore;password=***;Data Source=bc-sitecore;Database=sc531071114RecycleBin" />
<add
name="archive"
connectionString="user id=sitecore;password=***;Data Source=bc-sitecore;Database=sc531071114Archive" />
Step Eight: Copy some include files
Copy the .include files in /sitecore/admin/upgrade/IncludeFiles to /App_Config/Include and rename the name.config.disabled files to name.config. Each include with the .config extension will be upgraded those with the .disabled extension will not be upgraded. So only rename those databases that you want to upgrade. To verify that Sitecore picked up all the databases, log into Sitecore and click on the database button in the lower right hand corner of the console, you should see all of them you add appear.
Step Nine: Pray that the conversion wizard works
First you'll need to go into IIS and grant anonymous access rights to the /sitecore/admin folder/
Then browse to http://{sitecoreurl}/sitecore/admin/upgrade/main.aspx. Go through the wizard and choose to automatically do the conversion process. And eventually you'll hit the "Start Conversion" button. If you were successful, depending on the size of your databases (my core and master were around 4GB), 1 hour later you will see:
If you were unsuccessful you may see the error below. This was a fairly easy fix for me. I was trying to convert a SQL 2000 database but since sys.objects doesn't exist in SQL 2000 I had to upgrade them to SQL 2005 and then run the conversion again. After doing that it was successful.
2652 14:15:52 ERROR Failed to upgrade the database
Exception: System.Data.SqlClient.SqlException
Message: Invalid object name 'sys.objects'.
Source: .Net SqlClient Data Provider
at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection)
at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection)
at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj)
at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)
at System.Data.SqlClient.SqlDataReader.ConsumeMetaData()
at System.Data.SqlClient.SqlDataReader.get_MetaData()
at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString)
at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async)
at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result)
at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method)
at System.Data.SqlClient.SqlCommand.ExecuteScalar()
at Sitecore.V6DBConversion.SqlServerDatabaseConverter.ExecuteScalar(String cs, String sql)
at Sitecore.V6DBConversion.SqlServerDatabaseConverter.Convert(SqlServerDataProvider provider, IOutput output)
Great, you've made it this far, now only a few more hours of waiting.
Step Ten: Rebuild some Sitecore databases
First let's clean up the databases by rebuilding the link database for the Core and Master databases. Then rebuild the search indexes on the Core and Quick Search options.
Step Eleven: Republish entire site
Go to the Home section and then the Publish option and Publish site. This is where you wait for a few hours while Sitecore copies data out of the master database to the new Web database. Don't screw with anything else just let it run and depending on the size a few hours later it will say successful. If not, start it again and do an incremental publish so you don't have to republish everything.
Step Twelve: Remove some old upgrade files
Remove and I do mean remove all the .config files within the /App_Config/Include folder. If you just copy them to another folder within that folder you'll get errors, so just get rid of them completely.
In the /App_Config/ConnectionString.config file get rid of all entries except the Core, Web and Master strings.
Delete the /sitecore/admin/upgrade folder
If a /sitecore/admin/packages/tool folder exists, delete that too, I didn't have one so I didn't need to delete it.
Delete the following files if you have them
- /sitecore/admin/upgrade.aspx, mine was named update.aspx
- /sitecore/admin/web.config
- /bin/sitecore.diffinstaller.dll, I didn't have this file
- /bin/DiffLib.dll, I didn't have this one either
- /bin/Sitecore.Upgrade.dll, mine was named Sitecore.Update.dll
- /bin/Sitecore.V6DBConversion.dll
Take offline and a few weeks later get rid of the security, extranet, archive and recyclebin and possibly the v6 master database from SQL.
Step Thirteen: Restore the clean web.config
You should have a copy of the clean v6 web.config file, copy that file to the new v6 web site root and replace the one that's already in there.
Step Fourteen: Copy custom files to the new v6 root
Copy your custom files from the v5.3 root to the v6 root
- Layouts
- Images
- Xsl
- Media
- Css
- Any other folders that are in your site that don't exist in the v6 site that are needed
Compile your solution against the new Sitecore dlls and copy the dll to the bin folder of the v6 site
Merge any web.config customizations from the v5.3 config file to the v6 config file, possibly app settings or ajax stuff.
Step Fifteen: Test, Test and Test
Test the site.
Wednesday, August 27, 2008
Sitecore 5.3 Archive Item
http://sdn5.sitecore.net/SDN5/End%20User/Site%20Administration/Item%20Management/Archiving%20Items.aspx
Sitecore Restore Archive Item
Anyway, this guy has a nice post on how to add the missing Restore option for Archived items. http://usoniandream.blogspot.com/2007/07/tutorial-restore-from-archive.html
One thing to note about Archiving items, just because you archive them doesn't mean they still aren't published. To truly archive an item, you should first make it as not publishable, then publish it (this will ensure the page is removed from the web database, then Archive the page, then save it. If you refresh the parent node of that page you'll notice that the page is now gone and now exists within the Archive database.
Wednesday, August 13, 2008
Sitecore and .NET Framework 3.5 SP1 Service Pack 1
Dear Sitecore Enthusiast,
You are receiving this message because you are subscribed to the Sitecore Product Issues and Patches mailing list.
On Monday, August 4th, Microsoft released the following service packs: Visual Studio 2008 SP1 and .NET 3.5 SP1.
Sitecore has discovered that these service packs introduce a bug in the LosFormatter class (System.Web.UI.LosFormatter in System.Web.dll, used to serialize and deserialize an ASP.NET ViewState). This bug causes stability issues in Sitecore products. Sitecore has raised this as an urgent priority issue with Microsoft (case number : SRQ080813600454) and is working to help resolve this issue.
In the meantime, PLEASE DO NOT INSTALL .NET 3.5 SP1 and Visual Studio 2008 SP1 on any server running a Sitecore product (including Sitecore WCMS, Intranet Portal, and Foundry) until further notice!
Symptoms associated with installing either of these service packs:
- Memory consumption increases dramatically and single core CPU usage goes up to 100% when opening the Access Viewer or Media Library applications.
- OutOfMemoryExceptions thrown in the Desktop and Content Editor.
- The browser becomes unresponsive when accessing Sitecore.
Please be aware that Microsoft may include this Service Pack as part of the monthly ‘Patch Tuesday’. Please take steps to avoid the automatic installation of these service packs.
Please be aware that the final version of SQL Server 2008 will require .NET 3.5 SP1.
If you have any questions about this issue, please contact Sitecore support.
Best Regards, Sitecore Support Team.
Tuesday, July 15, 2008
Installation Instructions for Sitecore CMS 6
Here are screenshots of the Sitecore 6 installation process in case you ever get there.
Sitecore 6 Installation Screenshots
Friday, June 13, 2008
Sitecore Item Url
Sitecore.Context.Item.Paths.GetFriendlyUrl();
Or
Item sitecoreItem = Sitecore.Context.Item;
String itemUrl = sitecoreItem.Paths.GetFriendlyUrl();
Very simple to do but not well documented.
Wednesday, June 11, 2008
How to define Sitecore Client Authoring Role
/sitecore/system/Ribbons/Chunks/Clipboard/Paste
/sitecore/system/Ribbons/Chunks/Clipboard/Cut
/sitecore/system/Ribbons/Chunks/Clipboard/Copy
/sitecore/system/Ribbons/Chunks/New/New
/sitecore/system/Ribbons/Chunks/Operations/Duplicate
/sitecore/system/Ribbons/Chunks/Operations/Copy To
/sitecore/system/Ribbons/Chunks/Operations/Move To
/sitecore/system/Ribbons/Chunks/Operations/Delete
/sitecore/system/Ribbons/Chunks/Publish/WebEdit
/sitecore/system/Ribbons/Chunks/Publish/Edit Preview
/sitecore/system/Ribbons/Chunks/Publish/Publishing Viewer
/sitecore/system/Ribbons/Chunks/Publish Restrictions/Lifetime
/sitecore/system/Ribbons/Chunks/Publish Restrictions/Change
/sitecore/system/Ribbons/Chunks/Rename/Rename
/sitecore/system/Ribbons/Chunks/Rename/Display Name
/sitecore/system/Ribbons/Chunks/Schedule/Reminder
/sitecore/system/Ribbons/Chunks/Schedule/Archive
/sitecore/system/Ribbons/Chunks/Sorting/Move Up
/sitecore/system/Ribbons/Chunks/Sorting/Move Down
/sitecore/system/Ribbons/Chunks/Sorting/Move First
/sitecore/system/Ribbons/Chunks/Sorting/Move Last
/sitecore/system/Ribbons/Chunks/Validate/Spellcheck
/sitecore/system/Ribbons/Chunks/Validate/Validate
/sitecore/system/Ribbons/Chunks/Versions/Add
/sitecore/system/Ribbons/Chunks/Versions/Compare
/sitecore/system/Ribbons/Chunks/Versions/Remove
/sitecore/system/Ribbons/Chunks/Workflow/WorkflowPanel
/sitecore/system/Ribbons/Chunks/Workflow Edit/Edit
/sitecore/system/Ribbons/Chunks/Write/Save
Monday, June 9, 2008
Iframes within Sitecore - $$iframe
The web.config needs to have the iframe items added to do this. See below.
replacers
replacer id="publish" singleinstance="true" type="Sitecore.Text.Replacer, Sitecore.Kernel" mode="on"
param desc="name"$(id)/param
replacements hint="raw:AddReplacement"
simple ignorecase="true" replacewith="" find="/Home"
simple ignorecase="true" replacewith="/sitecore/content/home/news" find="/sitecore/content/news"
simple ignorecase="false" replacewith="<iframe" find="$$iframe" forpublish="true"/simple
simple ignorecase="false" replacewith="></iframe>" find="iframe$$" forpublish="true"/simple
/replacements>
/replacer>
/replacers>
Enabling Edit chunk in Content Editor
You may not see the Edit chunk/button while being logged in as a newly created user.
Complete these steps to make it visible:
1. Switch to the core database;
2. Open the Security Editor;
3. Locate this item /sitecore/system/ribbons/chunks/workflow edit/edit;
4. Toggle the inherit checkbox as shown below
Sitecore Authoring Client Role
It sure would be nice if we could add a role to another role, sounds kind of like a SharePoint thing.
/sitecore/system/Ribbons/Chunks/Clipboard/Paste
/sitecore/system/Ribbons/Chunks/Clipboard/Cut
/sitecore/system/Ribbons/Chunks/Clipboard/Copy
/sitecore/system/Ribbons/Chunks/New/New
/sitecore/system/Ribbons/Chunks/Operations/Duplicate
/sitecore/system/Ribbons/Chunks/Operations/Copy To
/sitecore/system/Ribbons/Chunks/Operations/Move To
/sitecore/system/Ribbons/Chunks/Operations/Delete
/sitecore/system/Ribbons/Chunks/Publish/WebEdit
/sitecore/system/Ribbons/Chunks/Publish/Edit Preview
/sitecore/system/Ribbons/Chunks/Publish/Publishing Viewer
/sitecore/system/Ribbons/Chunks/Publish Restrictions/Lifetime
/sitecore/system/Ribbons/Chunks/Publish Restrictions/Change
/sitecore/system/Ribbons/Chunks/Rename/Rename
/sitecore/system/Ribbons/Chunks/Rename/Display Name /sitecore/system/Ribbons/Chunks/Schedule/Reminder
/sitecore/system/Ribbons/Chunks/Schedule/Archive
/sitecore/system/Ribbons/Chunks/Sorting/Move Up /sitecore/system/Ribbons/Chunks/Sorting/Move Down /sitecore/system/Ribbons/Chunks/Sorting/Move First /sitecore/system/Ribbons/Chunks/Sorting/Move Last /sitecore/system/Ribbons/Chunks/Validate/Spellcheck
/sitecore/system/Ribbons/Chunks/Validate/Validate
/sitecore/system/Ribbons/Chunks/Versions/Add
/sitecore/system/Ribbons/Chunks/Versions/Compare
/sitecore/system/Ribbons/Chunks/Versions/Remove
/sitecore/system/Ribbons/Chunks/Workflow/WorkflowPanel
/sitecore/system/Ribbons/Chunks/Workflow Edit/Edit /sitecore/system/Ribbons/Chunks/Write/Save