/// <summary> /// Checks if the control has required parameters. /// Invalid: /// - ##RenderControl(_system/[controlName])## /// Valid: /// - ##RenderControl(_system/[controlName] key1="value1" key2="value2")## /// </summary> /// <returns></returns> public override CmsDependencyMessage[] ValidateDependency() { List <CmsDependencyMessage> ret = new List <CmsDependencyMessage>(); string[] templates = CmsContext.getTemplateNamesForCurrentUser(); CmsPage dummyPage = new CmsPage(); foreach (string template in templates) { dummyPage.TemplateName = template; CmsControlDefinition[] controlDefs = dummyPage.getAllControlDefinitions(); controlDefs = CmsControlDefinition.GetByControlNameOrPath(controlDefs, ControlName); foreach (CmsControlDefinition controlDef in controlDefs) { foreach (string keyToTest in keys) { bool keyExists = CmsControlUtils.hasControlParameterKey(CmsContext.currentPage, controlDef, keyToTest); if (!keyExists && existsMode == ExistsMode.MustExist) { ret.Add(CmsDependencyMessage.Error("CMS Control parameter '" + keyToTest + "' for control '" + controlDef.ControlNameOrPath + "' in template '" + dummyPage.TemplateName + "' is required, but was not found.")); } else if (keyExists && existsMode == ExistsMode.MustNotExist) { ret.Add(CmsDependencyMessage.Error("CMS Control parameter '" + keyToTest + "' for control '" + controlDef.ControlNameOrPath + "' in template '" + dummyPage.TemplateName + "' was found, and must be removed.")); } } } // foreach controlDef } // foreach template return(ret.ToArray()); }
/// <summary> /// Add a control that is located on disk or as a class name to the parentToAddControlTo. /// </summary> /// <param name="controlNameOrPathToAdd"></param> /// <param name="controlDefn"></param> /// <param name="parentToAddControlTo"></param> /// <param name="langToRenderFor"></param> /// <returns></returns> public static bool AddControlToPage(string controlNameOrPathToAdd, CmsControlDefinition controlDefnToAdd, System.Web.UI.UserControl parentToAddControlTo, CmsLanguage langToRenderFor) { if (ControlOnDiskExists(controlNameOrPathToAdd)) { Control ascxControl = LoadControlOnDisk(controlNameOrPathToAdd); if (ascxControl != null) { parentToAddControlTo.Controls.Add(ascxControl); ascxControl.ID = controlDefnToAdd.RawTemplateParameters; return(true); } } else if (ControlClassExists(controlNameOrPathToAdd)) { HatCMS.Controls.BaseCmsControl c = LoadControlFromClass(controlNameOrPathToAdd); if (c != null) { parentToAddControlTo.Controls.Add(c.ToLiteralControl(controlDefnToAdd, langToRenderFor)); return(true); } } return(false); }
} // getControlParameterKeys public static bool hasControlParameterKey(CmsPage page, CmsControlDefinition controlDefinition, string keyName) { string[] keys = getControlParameterKeys(page, controlDefinition); if (StringUtils.IndexOf(keys, keyName, StringComparison.CurrentCultureIgnoreCase) > -1) { return(true); } return(false); }
public abstract string getControlParameterKeyValue(CmsControlDefinition controlDefinition, string key, string defaultValue);
public abstract string[] getControlParameterKeys(CmsControlDefinition controlDefinition);
} // getControlParameterKeys public static string[] getControlParameterKeys(CmsPage page, CmsControlDefinition controlDefinition) { return(page.TemplateEngine.getControlParameterKeys(controlDefinition)); } // getControlParameterKeys
} // getControlParameterKeyValue public static string getControlParameterKeyValue(CmsPage page, CmsControlDefinition controlDefinition, string key, string defaultValue) { return(page.TemplateEngine.getControlParameterKeyValue(controlDefinition, key, defaultValue)); }
public CmsControlDependency(CmsControlDefinition controlDefinition) { controlNameOrPath = controlDefinition.ControlNameOrPath; existsMode = ExistsMode.MustExist; }