Getting Revision History to work in the Products Module sample
When editing a product, nothing happens when I click on "Revision History" in the right column. How can I get this to work like the News Module?
Hi bemara57,
We are really sorry for the late answer. Unfortunately "Revision History" feature was not implemented in the Products Module for the official release, but it will be added in the next service pack. We will also extend the documentation for the sample module.
Best wishes,
Ivan Pelovski
the Telerik team
Hello bemara57,
There was a problem in Sitefinity that did not allow to store versions of types outside of Telerik.Sitefinity and Telerik.Sitefinity.Model assemblies. The fix for this issue will be added to the next Sitefinity internal build (probably this week). Also check the Sitefinity SDK release where the code of Products module will be updated. Here are the changes that will enable version history and comparison in the Products module:
Add the following properties to ProductsResources class
/// <summary>/// word: Tags/// </summary>[ResourceEntry("Tags", Value = "Tags", Description = "word: Tags", LastModified = "2011/02/09")]public string Tags get return this["Tags"]; /// <summary>/// Word: Category/// </summary>[ResourceEntry("Category", Value = "Category", Description = "word", LastModified = "2011/02/09")]public string Category get return this["Category"]; /// <summary>/// Version comparison screeen Title/// </summary>[ResourceEntry("VersionComparison", Value = "version comparison", Description = "word: News", LastModified = "2011/02/09")]public string VersionComparison get return this["VersionComparison"]; using Telerik.Sitefinity.Utilities.TypeConverters;[SuppressMessage("Microsoft.StyleCop.CSharp.NamingRules", "SA1300:ElementMustBeginWithUpperCaseLetter", Justification = "This method is obsolete")][SuppressMessage("Microsoft.StyleCop.CSharp.DocumentationRules", "SA1600:ElementsMustBeDocumented", Justification = "This method is obsolete")]public override void Initialize(ModuleSettings settings) base.Initialize(settings); Config.RegisterSection<ProductsConfig>(); Res.RegisterResource<ProductsResources>(); ObjectFactory.RegisterWebService(typeof(ProductsBackendService), "Sitefinity/Services/Content/Products.svc"); //register templatable controls ControlTemplates.RegisterTemplatableControl(typeof(MasterListView), typeof(ProductItem)); ControlTemplates.RegisterTemplatableControl(typeof(ProductDetailsView), typeof(ProductItem)); //register the assembly with the TypeResolutionService TypeResolutionService.RegisterAssembly(typeof(ProductsModule).Assembly.GetName());#region Dialogs definitionstring versioningParams = string.Concat( "?ControlDefinitionName=", ProductsDefinitions.BackendDefinitionName, "&moduleName=", ProductsDefinitions.ModuleName, "&typeName=", typeof(ProductItem).AssemblyQualifiedName, "&title=", Res.Get<ProductsResources>().PermissionsForProducts, "&backLabelText=", Res.Get<ProductsResources>().BackToItems, "&" + ProductsDefinitions.ComparisonViewHistoryScreenQueryParameter + "=" + ProductsDefinitions.BackendVersionComapreViewName);DialogElement versioningDialogElement = DefinitionsHelper.CreateDialogElement( productsGridView.DialogsConfig, DefinitionsHelper.HistoryCommandName, "VersionHistoryDialog", versioningParams);productsGridView.DialogsConfig.Add(versioningDialogElement);string versioningGridParams = string.Concat( "?ControlDefinitionName=", ProductsDefinitions.BackendDefinitionName, "&moduleName=", ProductsDefinitions.ModuleName, "&typeName=", typeof(ProductItem).AssemblyQualifiedName, "&title=", Res.Get<ProductsResources>().PermissionsForProducts, "&backLabelText=", Res.Get<ProductsResources>().BackToItems, "&" + ProductsDefinitions.ComparisonViewHistoryScreenQueryParameter + "=" + ProductsDefinitions.BackendVersionComapreViewName);DialogElement versioningGridDialogElement = DefinitionsHelper.CreateDialogElement( productsGridView.DialogsConfig, ProductsDefinitions.HistoryGridCommandName, "VersionHistoryDialog", versioningGridParams);productsGridView.DialogsConfig.Add(versioningGridDialogElement);parameters = string.Concat( "?ControlDefinitionName=", ProductsDefinitions.BackendDefinitionName, "&ViewName=", ProductsDefinitions.BackendVersionPreviewViewName, "&backLabelText=", Res.Get<Labels>().BackToRevisionHistory, "&SuppressBackToButtonLabelModify=true");DialogElement previewVersionDialogElement = DefinitionsHelper.CreateDialogElement( productsGridView.DialogsConfig, DefinitionsHelper.VersionPreviewCommandName, "ContentViewEditDialog", parameters);productsGridView.DialogsConfig.Add(previewVersionDialogElement);#endregion#region Versioning Comparison Screenvar versionComparisonView = new ComparisonViewElement(backendContentView.ViewsConfig) Title = "VersionComparison", ViewName = ProductsDefinitions.BackendVersionComapreViewName, ViewType = typeof(VersionComparisonView), DisplayMode = FieldDisplayMode.Read, ResourceClassId = typeof(ProductsResources).Name, UseWorkflow = false;backendContentView.ViewsConfig.Add(versionComparisonView);versionComparisonView.Fields.Add(new ComparisonFieldElement(versionComparisonView.Fields) FieldName = "Title", Title = "lTitle", ResourceClassId = typeof(ProductsResources).Name );versionComparisonView.Fields.Add(new ComparisonFieldElement(versionComparisonView.Fields) FieldName = "Content", Title = "Content", ResourceClassId = typeof(ProductsResources).Name );versionComparisonView.Fields.Add(new ComparisonFieldElement(versionComparisonView.Fields) FieldName = "WhatIsInTheBox", Title = "WhatIsInTheBox", ResourceClassId = typeof(ProductsResources).Name );versionComparisonView.Fields.Add(new ComparisonFieldElement(versionComparisonView.Fields) FieldName = "Price", Title = "Price", ResourceClassId = typeof(ProductsResources).Name );versionComparisonView.Fields.Add(new ComparisonFieldElement(versionComparisonView.Fields) FieldName = "QuantityInStock", Title = "QuantityInStock", ResourceClassId = typeof(ProductsResources).Name );versionComparisonView.Fields.Add(new ComparisonFieldElement(versionComparisonView.Fields) FieldName = "Category", Title = "Category", ResourceClassId = typeof(ProductsResources).Name );versionComparisonView.Fields.Add(new ComparisonFieldElement(versionComparisonView.Fields) FieldName = "Tags", Title = "Tags", ResourceClassId = typeof(ProductsResources).Name );versionComparisonView.Fields.Add(new ComparisonFieldElement(versionComparisonView.Fields) FieldName = "UrlName", Title = "UrlName", ResourceClassId = typeof(ProductsResources).Name );#endregion#region Preview History Formvar previewLocalization = new Dictionary<string, string>() "ItemVersionOfClientTemplate", Res.Get<VersionResources>().ItemVersionOfClientTemplate , "PreviouslyPublished", Res.Get<VersionResources>().PreviouslyPublishedBrackets , "CannotDeleteLastPublishedVersion", Res.Get<VersionResources>().CannotDeleteLastPublishedVersion ;var previewExternalScripts = DefinitionsHelper.GetExtenalClientScripts( "Telerik.Sitefinity.Versioning.Web.UI.Scripts.VersionHistoryExtender.js, Telerik.Sitefinity", "OnDetailViewLoaded");var productsHistoryPreviewDetailView = new DetailFormViewElement(backendContentView.ViewsConfig) Title = "EditItem", ViewName = ProductsDefinitions.BackendVersionPreviewViewName, ViewType = typeof(DetailFormView), ShowSections = true, DisplayMode = FieldDisplayMode.Read, ShowTopToolbar = false, ResourceClassId = typeof(ProductsResources).Name, ExternalClientScripts = previewExternalScripts, WebServiceBaseUrl = "~/Sitefinity/Services/Content/Products.svc/", ShowNavigation = true, Localization = previewLocalization, UseWorkflow = false;backendContentView.ViewsConfig.Add(productsHistoryPreviewDetailView);ProductsDefinitions.CreateBackendSections(productsHistoryPreviewDetailView, FieldDisplayMode.Read);#endregionpublic static void FillActionMenuItems(ConfigElementList<WidgetElement> menuItems, ConfigElement parent, string resourceClassId) menuItems.Add( CreateActionMenuCommand(menuItems, "View", HtmlTextWriterTag.Li, PreviewCommandName, "View", resourceClassId)); menuItems.Add( CreateActionMenuCommand(menuItems, "Delete", HtmlTextWriterTag.Li, DeleteCommandName, "Delete", resourceClassId, "sfDeleteItm")); menuItems.Add( CreateActionMenuSeparator(menuItems, "Separator", HtmlTextWriterTag.Li, "sfSeparator", "Edit", resourceClassId)); menuItems.Add( CreateActionMenuCommand(menuItems, "Content", HtmlTextWriterTag.Li, EditCommandName, "Content", resourceClassId)); menuItems.Add( CreateActionMenuCommand(menuItems, "Permissions", HtmlTextWriterTag.Li, PermissionsCommandName, "Permissions", resourceClassId)); menuItems.Add( CreateActionMenuCommand(menuItems, "History", HtmlTextWriterTag.Li, HistoryGridCommandName, "HistoryMenuItemTitle", "VersionResources"));/// <summary>/// Common name used for a command that displays the history of an item./// </summary>public const string HistoryGridCommandName = "historygrid";