/// <summary> /// Validates the form data. Checks the code name format and if the code name is unique. /// </summary> public bool ValidateData() { // Check the required fields for emptiness bool isValid = EditForm.ValidateData(); if (isValid) { if ((EditForm.EditedObject == null) || (EditForm.ParentObject == null)) { UIFormControl.ShowError(GetString("general.saveerror")); return(false); } // Create a temporary variant object in order to check the code name format rules and uniqueness MVTVariantInfo variant = new MVTVariantInfo(); variant.MVTVariantName = VariantCodeName; variant.MVTVariantID = EditForm.EditedObject.GetIntegerValue("MVTVariantID", 0); variant.MVTVariantPageTemplateID = EditForm.ParentObject.GetIntegerValue("PageTemplateID", 0); // Validate the codename format if (!ValidationHelper.IsCodeName(VariantCodeName)) { isValid = false; UIFormControl.ShowError(String.Format(GetString("general.codenamenotvalid"), VariantCodeName)); } // Check if the code name already exists else if (!variant.CheckUniqueCodeName()) { isValid = false; UIFormControl.ShowError(String.Format(GetString("general.codenamenotunique"), VariantCodeName)); } } return(isValid); }
/// <summary> /// Handles UniGrid's OnAction event. /// </summary> /// <param name="actionName">Name of the action which should be performed</param> /// <param name="actionArgument">ID of the item the action should be performed with</param> protected void gridElem_OnAction(string actionName, object actionArgument) { int mvtvariantId = ValidationHelper.GetInteger(actionArgument, 0); if (mvtvariantId > 0) { switch (actionName.ToLowerCSafe()) { case "delete": if (CheckPermissions("CMS.MVTest", PERMISSION_MANAGE)) { // Get the web part instance Guid in order to clear the webpart's cache Guid webPartInstanceGuid = Guid.Empty; MVTVariantInfo vi = MVTVariantInfoProvider.GetMVTVariantInfo(mvtvariantId); // Delete the object MVTVariantInfoProvider.DeleteMVTVariantInfo(mvtvariantId); RaiseOnDelete(); // Log widget variant synchronization if ((vi != null) && (vi.MVTVariantDocumentID > 0)) { // Log synchronization DocumentSynchronizationHelper.LogDocumentChange(Node, TaskTypeEnum.UpdateDocument, tree); } } break; } } }
/// <summary> /// Checks code name in template uniqueness. /// </summary> /// <param name="codeName">New code name</param> /// <returns>True if code name is unique</returns> private bool CheckUniqueCodeName(string codeName) { var dummyMVT = new MVTVariantInfo { MVTVariantName = codeName, MVTVariantPageTemplateID = mTemplateID, MVTVariantDocumentID = (variantType == VariantTypeEnum.Widget) ? Node.DocumentID : 0 }; return(dummyMVT.CheckUniqueValues()); }
/// <summary> /// Handles the OnAfterSave event of the EditForm control. /// </summary> void EditForm_OnAfterSave(object sender, EventArgs e) { if (UIFormControl.EditedObject != null) { // Clear cache CacheHelper.TouchKey("om.mvtvariant|bytemplateid|" + (UIFormControl.EditedObject as MVTVariantInfo).MVTVariantPageTemplateID); // Log widget variant synchronization MVTVariantInfo variantInfo = (MVTVariantInfo)UIFormControl.EditedObject; if (variantInfo.MVTVariantDocumentID > 0) { // Log synchronization TreeProvider tree = new TreeProvider(CMSContext.CurrentUser); TreeNode node = tree.SelectSingleDocument(variantInfo.MVTVariantDocumentID); DocumentSynchronizationHelper.LogDocumentChange(node, TaskTypeEnum.UpdateDocument, tree); } } }
/// <summary> /// Handles UniGrid's OnAction event. /// </summary> /// <param name="actionName">Name of the action which should be performed</param> /// <param name="actionArgument">ID of the item the action should be performed with</param> protected void gridElem_OnAction(string actionName, object actionArgument) { int mvtvariantId = ValidationHelper.GetInteger(actionArgument, 0); if (mvtvariantId > 0) { switch (actionName.ToLower()) { case "delete": if (CheckPermissions("CMS.MVTest", CMSAdminControl.PERMISSION_MODIFY)) { // Get the web part instance Guid in order to clear the webpart's cache Guid webPartInstanceGuid = Guid.Empty; MVTVariantInfo vi = MVTVariantInfoProvider.GetMVTVariantInfo(mvtvariantId); // Delete the object MVTVariantInfoProvider.DeleteMVTVariantInfo(mvtvariantId); this.RaiseOnDelete(); // Log widget variant synchronization if ((vi != null) && (vi.MVTVariantDocumentID > 0)) { // Log synchronization DocumentSynchronizationHelper.LogDocumentChange(Node, TaskTypeEnum.UpdateDocument, tree); } // Clear web part variants from the cache if (vi != null) { CMSContext.CurrentDocument = null; ReloadWebPartCache(vi.MVTVariantZoneID, vi.MVTVariantInstanceGUID); } } break; } } }
/// <summary> /// Raises event postback event. /// </summary> /// <param name="eventArgument">Event argument</param> /// <param name="uniqueCode">Unique code</param> /// <param name="variantId">Variant ID</param> public void RaisePostBackEvent(string eventArgument, string uniqueCode, int variantId) { // Check permissions if (!CheckPermissions("Manage") || stopProcessing) { return; } // Get the argument string arg = eventArgument.ToLowerCSafe(); if (arg == "remove") { // Remove variant action int documentId = 0; if (VariantMode == VariantModeEnum.MVT) { // Is MVT zone => remove the MVT variant MVTVariantInfo variantObj = MVTVariantInfoProvider.GetMVTVariantInfo(variantId); if (variantObj != null) { // Delete the variant MVTVariantInfoProvider.DeleteMVTVariantInfo(variantObj); documentId = variantObj.MVTVariantDocumentID; } } else if (VariantMode == VariantModeEnum.ContentPersonalization) { // Is Content personalization zone => remove the Content personalization variant ContentPersonalizationVariantInfo variantObj = ContentPersonalizationVariantInfoProvider.GetContentPersonalizationVariant(variantId); if (variantObj != null) { // Delete the variant ContentPersonalizationVariantInfoProvider.DeleteContentPersonalizationVariant(variantObj); documentId = variantObj.VariantDocumentID; } } else { return; } // Log widget variant synchronization if (documentId > 0) { TreeProvider tree = new TreeProvider(MembershipContext.AuthenticatedUser); TreeNode node = DocumentHelper.GetDocument(documentId, tree); DocumentSynchronizationHelper.LogDocumentChange(node, TaskTypeEnum.UpdateDocument, tree); } switch (SliderMode) { // Remove zone variant case VariantTypeEnum.Zone: if ((WebPartZoneControl != null) && (WebPartZoneControl.ZoneInstance != null)) { // Remove the variant from WebPartZoneControl.ZoneInstance.ZoneInstanceVariants. // It is necessary to remove the variants from the PartInstanceVariants list manually because the PageLoad method has already run // and the PartInstanceVariants list was populated with the old values. WebPartZoneControl.RemoveVariantFromCache(variantId); } break; // Remove web part or widget variant case VariantTypeEnum.WebPart: case VariantTypeEnum.Widget: if ((WebPartControl != null) && (WebPartControl.PartInstance != null)) { // Remove the variant from WebPartControls.PartInstance.PartInstanceVariants. // It is necessary to remove the variants from the PartInstanceVariants list manually because the PageLoad method has already run // and the PartInstanceVariants list was populated with the old values. WebPartControl.RemoveVariantFromCache(variantId); // If there are no other variants present, set the VariantMode to None to allow refreshing the add variant buttons. if ((WebPartControl.PartInstance.PartInstanceVariants == null) || (WebPartControl.PartInstance.PartInstanceVariants.Count == 0)) { mVariantMode = VariantModeEnum.None; } } break; default: break; } // Refresh the variant slider position => choose the last variant ltrScript.Text = ScriptHelper.GetScript( @"cpVariantSliderPositionElem = GetCPVariantSliderPositionElem(); UpdateVariantPosition('" + uniqueCode + @"', '-1'); SaveSlidersConfiguration();"); } }
/// <summary> /// Validates the form data. Checks the code name format and if the code name is unique. /// </summary> public bool ValidateData() { // Check the required fields for emptiness bool isValid = EditForm.ValidateData(); if (isValid) { if ((EditForm.EditedObject == null) || (EditForm.ParentObject == null)) { UIFormControl.ShowError(GetString("general.saveerror")); return false; } // Create a temporary variant object in order to check the code name format rules and uniqueness MVTVariantInfo variant = new MVTVariantInfo(); variant.MVTVariantName = VariantCodeName; variant.MVTVariantID = EditForm.EditedObject.GetIntegerValue("MVTVariantID", 0); variant.MVTVariantPageTemplateID = EditForm.ParentObject.GetIntegerValue("PageTemplateID", 0); // Validate the codename format if (!ValidationHelper.IsCodeName(VariantCodeName)) { isValid = false; UIFormControl.ShowError(String.Format(GetString("general.codenamenotvalid"), VariantCodeName)); } // Check if the code name already exists else if (!variant.CheckUniqueCodeName()) { isValid = false; UIFormControl.ShowError(String.Format(GetString("general.codenamenotunique"), VariantCodeName)); } } return isValid; }
/// <summary> /// Checks code name in template uniqueness. /// </summary> /// <param name="codeName">New code name</param> /// <returns>True if code name is unique</returns> private bool CheckUniqueCodeName(string codeName) { var dummyMVT = new MVTVariantInfo { MVTVariantName = codeName, MVTVariantPageTemplateID = mTemplateID, MVTVariantDocumentID = (variantType == VariantTypeEnum.Widget) ? Node.DocumentID : 0 }; return dummyMVT.CheckUniqueValues(); }