| John's profileJohn West Blogs about Si...PhotosBlogLists | Help |
|
11/26/2009 Sitecore Cache Configuration Reference PublishedSitecore published the Cache Configuration Reference: “This document describes caching features of the Sitecore Web Content Management System (CMS). Developers and administrators should read this document to optimize caching, which can improve solution performance, reduce server load, and increase system capacity.” I updated my post that links to the best Sitecore documentation to include a link to this new resource. 11/11/2009 How to Evaluate Sitecore as a DeveloperLike any Web Content Management System (WCM or CMS), the best way for a developer to evaluate Sitecore is to build a prototype using the product. The best way to learn Sitecore is to attend at least the Sitecore .NET Developer or Sitecore HTML Developer training (the latter focuses on XSL). If you choose HTML training, then you should know HTML, JavaScript, and CSS. If you choose .NET training, then you should also know XML, ASP.NET, C#, and Visual Studio. And it never hurts to know a little about Microsoft SQL Server. But first, schedule a live Web demo of the product with Sitecore. Do some research before attending training, working with the technology, or involving any information and system architects, users, business analysts, or other parties in the prototyping process. Spend as much time as you can afford reading about Sitecore. Check out the Sitecore Web site and the Sitecore Developer Network (SDN), especially the SDN forums. Manage your profile and sign up for newsletters on the Sitecore Portal. If you are a Sitecore partner, check out the Sitecore Partner Network (SPN). Before architecting a solution, I think that developers should read through at least these in approximately the following order:
Further reading before installing Sitecore:
For some reason, organizations often want to start by configuring the production servers. I would first focus on the development environments, then test environments, then production content management, and finally production content delivery. You can get the latest Sitecore setup executable from this page on the Sitecore Developer Network, and you can get the Starter Kit there as well. If you are a Sitecore partner, you can download the Nicam demo site from the Sitecore Partner Network. Customers can contact Sitecore for access to Nicam. The Starter Kit and Nicam are useful for demonstrations and (to some extent) education, but neither follows best practices, and neither should form any basis for production solutions. If you run into any trouble installing Sitecore, see the Installation Troubleshooting guide, or contact your regional Sitecore office. Use the cookbooks to implement what you’ve read:
If you want to use XSL, see the Presentation Component XSL Reference. For information about Sitecore Application Programmer Interfaces (APIs), see:
Most Sitecore developers really appreciate NET Reflector from RedGate.
If the above topics don’t cover what you need, check additional resources listed in this post that contains links to the best documentation, common forum topics, and other resources. These should be particularly helpful:
You might want to review various blogs about Sitecore. Lars Fløe Nielsen maintains this list of current blogs relevant to Sitecore. Partners and customers can access the Sitecore Support Portal at http://support.sitecore.net. 10/21/2009 Sitecore Guide to Reusing and Sharing Data PublishedSitecore recently published a guide to Reusing and Sharing Data. “Sitecore developers should read this document to determine a strategy for reusing data on multiple pages of a Web site or sharing data to multiple managed Web sites and external applications.” I updated my post that links to the best Sitecore documentation. Sitecore 6.2 WebDAV Configuration Guide PublishedWith the release of CMS 6.2 (the release notes describe new features), Sitecore published the WebDAV Configuration Guide. “This document provides a technical overview and configuration details for the Sitecore Web-based Distributed Authoring and Versioning (WebDAV) implementation. CMS administrators, architects, and developers should read this document before implementing WebDAV featutres in a Sitecore solution.” I updated my post that links to the best Sitecore documentation. 10/20/2009 Sitecore Online Marketing Suite Cookbook PublishedSitecore recently published the Online Marketing Suite Cookbook. I updated my post that links to the best Sitecore documentation. “The Online Marketing Suite Cookbook contains instructions for marketers and content authors working with Sitecore Analytics. This guide contains step by step instructions on the key tasks involved in setting up and configuring the Sitecore Online Marketing Suite on your Web site. The topics covered include creating profiles, goals, and campaigns, as well as content profiling, multivariate tests, and using the Sitecore reports to analyze your analytics data.” 9/15/2009 Use the Sitecore 6.1 Rules Engine to Control Item NamesUpdate: Shared source project created: http://trac.sitecore.net/ItemNamingRules. With Sitecore CMS 6.1, you can use the rules engine to control item names. For example, you may want to enforce character limits in the names of items that correspond to URLs. For more information about the rules engine, see the the Rules Engine Cookbook on the Sitecore Developer Network. You may also want to read my previous post about the rules engine and conditional rendering. Sitecore supports at least five techniques to control item names:
You can continue to use settings, events, pipelines, and validation to control item names. But with 6.1, you can use the rules engine as well. A rule consists of one or more conditions and one or more actions. When Sitecore evaluates a rule, if the conditions specified in that rule evaluate to true, then Sitecore invokes the actions specified in that rule. For the condition part of this rule, users might want to apply the rule to one or more specific items, to all items based on a data template, to an item and its descendants, to the descendants of an item, to items matching a query, or to some other collection of items. I assume that the default conditions that ship with the product meet the most common requirements. Two conditions that might be helpful when determining whether or not to rename an item: whether the item has layout details for the default device, and whether the item has layout details for any device: [See http://trac.sitecore.net/ItemNamingRules for code.] For instructions to insert the condition definition items under the /Sitecore/System/Settings/Rules/Common/Conditions item using the System/Rules/Condition data template, or for instructions to use either of these conditions in a rule, see the Rules Engine Cookbook. Some strings for cutting and pasting:
Name: When the item has layout details for the default device” using the System/Rules/Condition data template Text: when the item has layout details for any device Type: Sitecore.Sharedsource.Rules.Conditions.HasLayoutDetailsForDefaultDevice, Assembly
Name: When the item has layout details for any device Text: when the item has layout details for any device Type: Sitecore.Sharedsource.Rules.Conditions.HasLayoutDetailsForAnyDevice,assembly
Regarding the action part of the rule, there would be numerous parameters to specify for a single action. The solution should not force the user to specify parameters they don’t use. But because actions are not aware of each other, the user might have to specify the same parameters to multiple actions. More importantly, the user has to understand the impact of ordering actions. For example, it doesn’t make sense to ensure a minimum name length before removing invalid characters. I thought about merging certain actions and hard-coding certain parameters, but I generally like a flexible approach. Then I started prototyping, and realized that the flexible approach was more work for both me and any user. So I merged some of the actions (the strong words indicate parameters):
It’s honestly a coincidence that this simplification eliminates all of the duplicate parameters that I would otherwise have to pass to additional actions. I also sorted the actions so that the user interface displays them in the order in which the user should add them to the rule. I started out with a base class for actions that rename items: [See http://trac.sitecore.net/ItemNamingRules for code.] Then I created classes for each action: [See http://trac.sitecore.net/ItemNamingRules for code.] For instructions to insert the action definition items under the /Sitecore/System/Settings/Rules/Common/actions item using the System/Rules/Action data template, or for instructions to use any of these actions in a rule, see the Rules Engine Cookbook. Some strings for cutting and pasting:
Name: Replace Invalid Characters in Item Name Text: replace characters in the item name that do not match the regular expression [MatchPattern,Text,,pattern] with [ReplaceWith,Text,,this character sequence] Type: Sitecore.Sharedsource.Rules.Actions.Naming.ReplaceInvalidCharacters, Assembly
Name: Ensure Minimum Length of Item Name Text: ensure a minimum name length by appending characters from [DefaultName,Text,,index] Type: Sitecore.Sharedsource.Rules.Actions.Naming.EnsureMinimumLength, Assembly
Name: Ensure Item Name is Unique Text: ensure item name is unique and does not exceed [MaxLength,int,,maximum length] characters Type: Sitecore.Sharedsource.Rules.Actions.Naming.EnsureUnique, Assembly
Name: Lowercase Item Name Text: lowercase letters Type: Sitecore.Sharedsource.Rules.Actions.Naming.Lowercase, Assembly
Finally, insert the the rule definition item under the /Sitecore/System/Settings/Rules/Item Saved/Rules item using the System/Rules/Rule data template. For instructions to insert a rule, see the Rules Engine Cookbook. Before entering any parameters, my rule looks like this: And after entering parameters: Now, when I save any item that has layout details for any device, whether I save that item through the UI or through an API call, Sitecore replaces invalid characters with underscores, merges sequences of underscores into a single underscore, trims underscores from the beginning and the end of the item name, appends to the item name to ensure at least seven characters, appends a timestamp to the item name if required to make it unique among its siblings, and ensures that the item name does not exceed 35 characters. Warning: Like almost any customization, this could have dangerous repercussions, especially if configured incorrectly (for example, by renaming any item in the wrong branch, or in the Core database). Additionally, I didn’t significantly test this before posting, and there are definitely still some issues to think about. For example, you probably don’t want to rename the home item, you don’t want these rules to apply to the __Standard values of data templates (even though they may contain layout details), etc. But enough people ask about this topic that I thought it was time to describe this approach. After some refinement, I will try to make this a shared source project. 9/11/2009 SDN Poll: Do You Know of Sitecore Solutions that Embed Renderings in Rich Text Editor Fields?With some customization, Sitecore CMS users can embed renderings in the content of Rich Text Editor (RTE) fields. For example, a user editing an RTE field can insert a snippet that represents a video rendering, and use the properties of that rendering to select a video and enter any other parameters much like they could do in the Developer Center. The customization uses ASP.NET APIs to process renderings in RTE fields while rendering pages. Instead of using this approach, if acceptable to the users, I would add a field to the data template to allow the user to select one or more videos, and configure renderings to always embedding any selected videos in the same places on the page. I realize that this alternative solution does not account for all cases. But the RTE approach never seemed like a good idea to me for at least two reasons:
In Sitecore 6, the Design Pane of the Page Editor gives non-technical users point-and-click control of where renderings appear on the page. In 6.1, conditional rendering and parameters templates could further reduce the need for the RTE customization in some solutions. To get an idea of if, how, and why people use this feature, or what alternatives they use to avoid it, I created a poll on the Sitecore Developer Network: http://sdn.sitecore.net/SDN5/Forum/ShowPost.aspx?PostID=20973 Please take the time to make a selection. Your feedback on this issue is important to me. Thanks & regards, -John 9/1/2009 Windows 7 Tips, Tricks, and Annoyances for Sitecore DevelopersAfter about a week of light use, I find myself relatively happy with Windows 7. Some of the changes are helpful, others have little impact, while few make me less productive. Not much of a post at the moment, but it's only been a week, and I've probably already forgotten the initial annoyances. I will try to update this page to help other developers make the switch. When installing, I intended to update my post about configuring a Sitecore developer workstation. But the installation was so much like Windows Vista or 2008 that this didn't seem to be necessary. Probably the most important thing that I noticed is that by default, IIS application pools don't run as NETWORK SERVICE. It appears that Windows creates a transitory user named after the application pool. But these users don't appear in the list of users, apparently making it impossible to apply NTFS permissions for these accounts. I am sure there is a way to set permissions, but I couldn't find it. My workaround is to change the owner of the application pool to NETWORK SERVICE, though I assume this defeats some kind of stability, reliability, or security advantage to the transitory users. Update: One of my Most Valuable Colleagues did some research on this subject, primarily starting from http://learn.iis.net/page.aspx/624/application-pool-identities/. Apparently Windows 2008 Service Pack 2 introduced the “Application Pool Identities” security feature, which uses the “Virtual Accounts” feature to allow you to configure unique application pool owners without actually managing any accounts. These users don’t appear in the UI, so if you want to set permissions for the user, you have to type something like "IIS AppPool\DefaultAppPool" into the security dialog, where what appears as the machine/domain doesn’t mean much to me, and what appears as the username is actually the name of the application pool. Update again: one potential advantage of application pool identities: it should be easier to determine the correct w3wp.exe process to attach in the Visual Studio debugger. I use the QuickLaunch toolbar extensively. This toolbar doesn't appear in Windows 7, so you have to create it yourself. No big deal there, but this toolbar had the handy "Show the Desktop" icon, which minimizes all windows so that you can see the icons on the desktop. It took me a while to find the equivalent feature in Windows 7, but it's really easy - just click the rectangle at the far-right corner of the task bar (or press Windows-D). Update: It is really surprising how slow and unreliable the “Show Desktop” feature has become in Windows 7. For me, as long as the hard disk is thrashing due to application activity, nothing minimizes. It makes me very nervous when my operating cannot reliably perform such a simple operation. Update again: The Show Desktop feature in Windows 7 is absolutely terrible. You click it, it ignores you, you ALT-TAB to an application, you start typing, and THEN it minimizes that application. And this is not even when the disk is thrashing or the icon is the spinning wheel. I have no explanation, but I really want one from Microsoft. Update: I just rebooted, and my “QuickLaunch” toolbar disappeared. I was able to get it back somehow, but it had lost my preferences. I am starting to seriously question whether Windows 7 is any more stable than early betas of Vista, or if it’s just a new UI for the broken bits. I click on things and they just don’t respond. I often have to do the same thing several times to actually get that thing done. It’s like the UI is not aware of the mouse clicking as long as the disk is thrashing (this is a brand-new, well-equipped machine). And the cursor is not even the spinning wheel when this occurs. Maybe this is another new security feature – if you can’t use the computer, you can’t compromise its security? Update: I couldn’t get Microsoft File Transfer manager working on Windows 7. There is probably some browser security setting that would allow it, but no information from Microsoft. Yes, I did try the MSI, and no, it didn’t help. So I’m back in Windows 2008 to download from MSDN. Sigh… Update: My Windows 7 x64 C:\Windows folder is already over 16GB. That seems ridiculous for a consumer operating system. The same directory on my Vista partition is about 12GB, Windows 2008 is about the same as Windows 7. XP is under 7GB. Other than the language bar issues described below (which I believe descend from XP), for me, the most annoying thing so far is the changes to VPN. It's as if the entire "Manage Network Connections" area of the Network control panel is simply gone, replaced with a dumbed-down interface that might make some sense to end-users, but provides little value for me. I cannot find a way to add an icon to connect to a VPN to my “QuickLaunch” toolbar (or the Startup folder, as some people do to connect to the VPN automatically when they log in). Instead of clicking twice as I had in the past (the VPN icon on the QuickLaunch toolbar, and then the Connect button), I have to click three times - first the network icon in the notification area, then the VPN entry to show the Connect button, and finally the Connect button. Not a big deal, but I don't understand the reason for this change. Update: I installed all updates available through Windows Update, and Windows did not prompt me to reboot. But the Shut Down button on the Start menu indicates that I must reboot to install additional updates. This seems like a bug. Update again: I used that button to reboot and there was no indication that Windows actually installed any updates. The button is back to normal now. I really don't understand the default taskbar. I use a large monitor and I have good eyesight, I use the same applications every day, and I don't have hundreds of icons to differentiate, despite the fact that most softwares try to add useless icons everywhere they can (Adobe Reader? Give me a break, who opens that using an icon? And why does it need a startup program? For their terrible reader malware, Adobe doesn’t get a link from my blog, even though I have to use it because other PDF readers can’t open some files). So I don't need huge icons. Here's my taskbar configuration: This isn't specific to Windows 7, but Windows 7 maintains many of the annoyances that Microsoft introduced with Windows Vista, such as User Account Control (UAC). For example, I frequently right-click on a file and open it with an application such as Notepad++, only to find that even though I am an administrator who has used Windows since 1995, Microsoft still doesn't trust me not to fat-finger everything all the time. So I can’t save changes to the file (typically hosts), or extract the archive where I want to, etc. So I have to copy whatever's in Notepad++ to the Windows clipboard, close the application, find the icon for that application (on my "QuickLaunch" toolbar), run it as administrator, and paste in the text. I configure certain icons in the QuickLaunch toolbar (Visual Studio, Notepad++, DOS prompt, 7-Zip, etc.) to run as administrator so I don't have to remember to right-click them and run them as administrator. And I have to open Windows explorer and find the hosts file to drag into Notepad++ because for some reason the directory doesn’t appear in the Open File dialog. Maybe I could type in the path, but this is another puzzler that just leaves me scratching my head. In the words of (horeslips) Nancy Kerrigan, “Why? Why?” I also disable UAC to the extent possible so I don’t have to tell Microsoft “Yes, I really did press that button” all the time. I have been sure the last several thousand times that I clicked that icon. Maybe this is dangerous, but I've been using computers for a very long time and have never experienced any malware. UAC couldn't prevent social engineering tactics anyway, and I think we can all agree that those are the primary attack vectors. Some other annoyances seem to go further back. For example, Windows 7 sometimes adds “ – Shortcut” to the name of shortcuts. How does this help anyone, and why isn’t the icon overlay enough? It just looks dirty. Update: I am in Denmark this week, using a Danish keyboard. Microsoft still hasn’t fixed any of the issues with the language bar. It’s as if they expect that there are two keyboards connected to the machine, and it keeps switching randomly between their layouts. It is incredibly frustrating to not be able to type on a computer without several mouse clicks to reset the keyboard layout. Microsoft, you need to accommodate the fact that I use different keyboards at *different* times, but I only use *one keyboard at a time*, regardless of the number of open applications. I would assume that is the most common use case. So when I get to the office I have to log in (not sure which keyboard layout to use when entering special characters in my password), reset the default keyboard, log out, and log back in. And do the same when I go home at night, to use the laptop keyboard. And the same the next morning… Update: I think we may need two versions of Windows, one for people who know how to use computers, and one for people that are learning how to use computers. Microsoft seems to be targeting the learners with Windows 7, where most of their customers are in the other group. I think this is the wrong direction, and I am concerned that the next server version of Windows will have to follow Windows 7. Well, feel free to comment about where I'm wrong, post suggestions to address my annoyances, or add your own suggestions for Sitecore developers transitioning to Windows 7. 7/31/2009 Sitecore Security Hardening Cookbook PublishedSitecore today published the Security Hardening Cookbook for the Sitecore Web Content Management System. I updated my post that links to the best Sitecore documentation. 7/7/2009 Sitecore CMS 6.1 (Rendering) Parameters TemplatesWith Sitecore CMS, you’ve always been able to pass a data source item and any number of additional parameters to control how each sublayout and rendering functions. Prior to version 6.1, you could enter parameters in the control properties dialog as key=value pairs. Sitecore parses XSL code and uses reflection to determine the parameters available for XSL and .NET presentation components. For example, if you add the IncludeDetails parameter to the default sample XSL rendering: <xsl:param name="IncludeDetails" /> Then you will see this parameter in the control properties dialog, along with the default parameters: Sitecore 6.1 introduces parameters templates to let you define specific user interfaces to enter parameters for each rendering and sublayout. The Presentation Components Reference manual describes parameter templates in detail, but here’s my quick summary of how to implement a parameters template:
The fields you defined in the parameters template now appear in the new control properties dialog: 7/6/2009 Prevent Sitecore Reviewers from Approving their Own ChangesIn some organizations, Sitecore CMS users function as both editors and reviewers in a single workflow, but should not be able to review and approve their own changes. There is no “out-of-the-box” Sitecore feature that meets this requirement, but it’s relatively easy to add one. Add a class such as the following to the Visual Studio project: namespace Sitecore.Sharedsource.Workflow.Actions public class ValidateApprover Sitecore.Web.UI.Sheer.SheerResponse.Alert( In the Content Editor, under the Approve command under the Review state of the workflow, insert an item named ValidateApprover using the System/Workflow/Action data template. In the Data section, in the Type string field, enter the type signature: Sitecore.Sharedsource.Workflow.Actions.ValidateApprover, Assembly I added this class to the Sitecore Shared Source Library project and updated the corresponding documentation. 6/30/2009 Sitecore CMS 6.1 and OMS 1 DocumentationIn addition to releasing Sitecore Content Management System (CMS) 6.1 and Online Marketing Suite (OMS) 1, Sitecore today published new and updated documentation for both products. I updated my post that provides links to the best Sitecore documentation. I think the most significant changes include:
Most other documents contain minor updates and corrections. As always, send corrections and suggestions to the documentation team using the email address listed in the footer of every page on the Sitecore Developer Network (SDN). 6/13/2009 Sitecore 6.1 Rules Engine and Conditional RenderingYou’ve always been able to use code and configuration to control Sitecore behavior. Sitecore CMS 6.1, scheduled for release at the end of this June, 2009, includes a rules engine, allowing you to control Sitecore behavior through the browser-based user interface. The Sitecore rules engine supports the Online Marketing Suite (OMS), but also provides features such as conditional rendering. Conditional rendering allows you to define actions to invoke to control properties of each rendering dynamically bound to the page. You can use the rules engine to define other types of rules through the user interface, such as to control insert options, or to invoke specific operations after events on specific items, such as save or delete . The rules engine involves three primary concepts: conditions, actions, and rules. Like most concepts in Sitecore, each of these involves a definition item containing metadata. A condition definition item references a .NET class that contains a condition to evaluate, such as to determine whether an item is associated with a specific data template. Conditions define parameters, such as to allow the user to specify the data template. Sitecore provides a number of default conditions that you can use, such as checking whether an item is on the descendant-or-self axis of another item, or whether a specific field of an item contains a specific value. Of course you can implement custom conditions. An action definition item references a .NET class that contains an action to implement, such as to set the data source of a rendering. Actions define parameters, such as to allow the user to select the that data source. Sitecore provides a number of actions that you can use, such as hiding a rendering or adding a template to insert options. Of course you can easily implement custom actions. A rule definition item brings together some number of rules and actions, such as if the context item is on the ancestor-or-self axis of another item, then do not invoke a rendering. You have to define rules before you can use them. You can enter multiple conditions in a rule definition item (separated by “and” or “or”), , and you can select multiple actions to invoke when those conditions evaluate to True. The rules engine interface looks a lot like the Microsoft Outlook wizard for creating a rule, such as to move messages matching some criteria from one folder to another. You choose the conditions to evaluate and the actions that you want to invoke, and then enter parameters for both. You can see how Sitecore uses the rules engine internally by investigating the Rule field (a new data template field type in Sitecore CMS 6.1) in the Data section of the rule definition items beneath the /Sitecore/System/Settings/Rules item. For example, the /Sitecore/System/Settings/Rules/Insert Options/Rules/Conditional Renderings Conditions item defines that, when determining effective insert options for an item, if the selected item is a child of the /Sitecore/System/Settings/Rules/Conditional Renderings/Conditions item and is associated with the Common/Folder data template, then effective insert options should include the System/Rules/Condition data template: In the first field of this user interface, you click conditions to add to the list of conditions to evaluate to determine whether to invoke the action(s). In the second field, you can select actions to invoke if those conditions evaluate to True. In the third field, clicking on any instance of the word “where” reverses the condition to “except where” – Sitecore applies the action when the condition is not true instead of when the condition is true. Clicking on the word “Conditions” allows you to select a parent item other than the /Sitecore/System/Settings/Rules/Insert Options/Rules/Conditional Renderings Conditions item (parameter of the condition and the action). Clicking on Folder or Condition allows you to select a data template other than Common/Folder or System/Rules/Condition (a parameter of the condition). Imagine a site in that consists of the home item (/sitecore/content/home) and its two children named A and B. All three of these items are currently associated with a single data template, and all use the layout details defined in the standard values of that data template. For the B item and all of its descendants, you don’t want to activate a rendering specified in layout details of the standard values of the data template. You could hard-code this logic in the rendering, or create a new data template inheriting from the existing data template, override standard values in the new data template, and change the data template associated with all of the items in the B branch to this new template. Or you could use conditional rendering features of the rules engine. To use the rules engine for this purpose, insert a conditional rendering rule definition item, and then edit the rule. The rule is blank by default: The example rule applies to the B item and its descendants, so click “where item is a subitem of a specific item” condition to add that condition to the rule: You could click the word “where” to reverse the condition to “except where”. The user interface displays the word “specific” is red to indicate that you need to enter a parameter value. Click the word “specific” to select an item to define that parameter (the B item): The UI refreshes to show that the parameter definition. Now select the “hide rendering” rule to invoke that rule when the condition is true: Actions can have parameters too, but this one doesn’t. This rule says that, before invoking any rendering associated with this conditional rendering rule, if the context item is B or a descendant of B, then don’t invoke that rendering. To apply the conditional rendering rule to all items associated with the data template, in the standard values for the data template, in layout details, in control properties for the rendering, select the conditional rendering rule: You can also configure global conditional rendering rules, that apply to all renderings, but too many of these could get expensive. The default global conditional rendering rule applies multivariate tests if multivariate tests are enabled, applying multivariate tests to all renderings for which the user has chosen to apply a multivariate tests. Multivariate tests basically vary the data source of the rendering using a .NET class to implement some randomization or other data source management strategy, which is really a form of conditional rendering. With the release of Sitecore CMS 6.1 and OMS 1, Sitecore will release documentation providing providing further details about the rules engine and conditional rendering. Update 30.June.2009: Sitecore today published the Rules Engine Cookbook, which also covers conditional rendering. 6/10/2009 Sitecore 6.1, the Page Editor, Edit Frames, and the Field EditorWith all of the hype about the release of the Sitecore Online Marketing Suite (OMS) at the end of this June 2009, it’s important to remember that OMS depends on Sitecore CMS 6.1. This CMS release includes several useful new features:
This post describes two of these features that work well together: edit frames and the field editor. Sitecore 6.0 replaced WebEdit with the Page Editor. The Page Editor replaced content markers (green circles activating the Content Editor and context menus) with inline editing features that allow the user to edit directly in the page. It would not be possible for Sitecore to provide inline editing user interface components for every type of field. How would Sitecore know what user interface would make sense to change the value of a checkbox while inline editing on your Web site? What about your custom field types? So in the 6.0 Page Editor, you had to show the fields to edit certain types of data, or develop controls to let the user update those fields. Sitecore 6.1 introduces edit frames, which let you add menus of UI commands when inline editing in the Page Editor. 6.1 also introduces the field editor, which lets you edit fields using controls similar to those used in the Content Editor, but with a much more lightweight UI. You can use edit frames and the field editor to provide simplified editing for data template field types that don’t support inline editing. An edit frame creates something like an HTML <div> element around the enclosed components when the user is editing inline in the Page Editor. For example, I added a checkbox field named Boolean to the sample item data template and the following to the sample XSL rendering (of course you can do the same in .NET): <br /> The result: If the user hovers over anything in this <div>, the browser indicates the content enclosed in the <div>, and adds a control above the <div>: If the user clicks the arrow in the control, the browser displays an edit frame menu, allowing the user to choose from Sitecore UI commands configured by an administrator: Sitecore provides two default edit frame menu commands that you can use, and you can write your own. The Insert New edit frame menu command activates a user interface that allows the user to insert an item using the insert options defined for context item: If the user creates an item, the Page Editor refreshes to that item: The Edit Item edit frame menu command activates the field editor, and you can specify which fields to include. I specified my field named Boolean: Just like after closing the Rich Text Editor, I have to save after changing any field in the field editor. Then: The edit frame can contain any amount of markup, including inline editing controls for any number of fields, plus whatever other markup you enclose within the <sc:editFrame> element. You can have multiple edit frames on a page, each with different edit frame menu commands. You can implement your own edit frame menu commands, and of course use security to control access to edit frame commands. I was surprised at how easy it was to develop an edit frame menu command to list all fields in the item that don’t provide inline editing controls, excluding fields defined in the standard template. Sitecore will release this example as shared source when it releases Sitecore CMS 6.1. At that time, the Client Configuration Cookbook will describe edit frames and the field editor in more detail than this post. Update 30.June.2009: Sitecore today published the updated Client Configuration Cookbook describing edit frames and the field editor. 6/1/2009 Configuring a Sitecore Workstation Part 9: Issues I Still Have with WindowsThis post is the last in a series about Configuring a Sitecore Workstation. Previous post: Turn the System Over. I still have a few outstanding issues with Windows (or Microsoft maybe):
Configuring a Sitecore Workstation Part 8: Turn the System OverThis post is part of a series about Configuring a Sitecore Workstation. Previous post: Configure a User Account. When turning a system over to a user:
At your discretion, on to the last post in the series: Issues I Still Have with Windows. Configuring a Sitecore Workstation Part 7: Configure a User AccountThis post is part of a series about Configuring a Sitecore Workstation. Previous post: Image the System. Configure each user account as follows:
To configure Internet Explorer:
If time permits, defragment and check the hard drive for errors. I configure the following on my own systems:
My Word configuration instructions may be a little detailed, but I write technical documentation for a living:
On to the next post in the series: Turn the System Over. 5/31/2009 Configuring a Sitecore Workstation Part 6: Image the SystemThis post is part of a series about Configuring a Sitecore Workstation. Previous post: Configure Applications. Image the system so that in the future you could easily restore it to its current state.
When restoring an image:
After imaging or restoring an image, rename the machine to identify the organization and include the vendor’s hardware identifier. On to the next post in the series: Configure a User Account. Configuring a Sitecore Workstation Part 5: Configure ApplicationsThis post is part of a series about Configuring a Sitecore Workstation. Previous post: Configure Core Components. Install and configure applications:
Finally you can install Sitecore:
Add each site to the trusted sites zone, and test each site by at least viewing the home page and logging in to the CMS. Before making copies of each of the subdirectories within c:\inetpub\sitecore to create a template to restore the site to its current state, start a command prompt (as administrator):
For a developer workstation, install the relevant components described in a previous post in this series, First Boot and Preparation. For Visual Studio 2008, disable:
Remember to eject the disk. Install Visual Studio 2008 Service Pack 1. Then launch Visaul Studio:
For myself:
@echo off explorer /root,g:\current\deliverables explorer /root,c:\inetpub\sitecore\site\data\logs exit I try not to install any of the following, and especially don’t let them run at startup:
Now that everything is installed, clean up the system by emptying the recycle bin and removing anything unnecessary including all but the latest restore points, C:\dell, c:\temp\*, and c:\install.log. ***TODO: how to delete restore points?*** On to the next post in the series: Image the System. Configuring a Sitecore Workstation Part 4: Configure Core ComponentsThis post is part of a series about Configuring a Sitecore Workstation. Previous post: First Boot and Preparation. To install Windows:
To configure core components:
To install IIS on Windows XP (or do something similar on Windows 2003, and be sure to enable ASP.NET in IIS Web Service Extensions), in Add/Remove Windows Components wizard in the Add or Remove Programs control panel, install World Wide Web Service. While you’re there, you might as well remove MSN Explorer, Outlook Express, and Windows Messenger. To install IIS on Windows 2008 (or something similar on Windows 2008 or Windows 7):
Now that IIS is is installed, check for Windows updates, and make sure .NET 3.5 service pack 1 is installed. On to the next post in the series: Configure Applications. |
|
|