/// <summary> /// gets all the dependencies for a control. The control can either be located on disk, or as a class type. /// </summary> /// <param name="controlNameOrPath"></param> /// <returns></returns> public static CmsDependency[] getControlDependencies(string controlNameOrPath) { List <CmsDependency> dMsgs = new List <CmsDependency>(); try { Control ascxControl = LoadControlOnDisk(controlNameOrPath); if (ascxControl != null) { Type ascxControlType = ascxControl.GetType(); // -- ascx Controls can implement the magic "getDependecies" method if (ascxControlType.GetMethod("getDependencies") != null) { CmsDependency[] dependencies = (CmsDependency[])ExecuteDynamicCode.InvokeMethod(ascxControlType.Assembly.Location, ascxControlType.Name, "getDependencies", new object[0]); dMsgs.AddRange(dependencies); } } else { HatCMS.Controls.BaseCmsControl c = LoadControlFromClass(controlNameOrPath); if (c != null) { dMsgs.AddRange(c.getDependencies()); } } } catch (Exception ex) { Console.Write(ex.Message); } return(dMsgs.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); }
/// <summary> /// returns DateTime.MinValue if the control's last modified date could not be determined. /// </summary> /// <param name="controlNameOrPath"></param> /// <returns></returns> public static DateTime getControlLastModifiedDate(string controlNameOrPath) { try { if (ControlOnDiskExists(controlNameOrPath)) { string virtualPath = "~/" + TemplateEngine.TemplateEngineV2.CONTROLS_SUBDIR + controlNameOrPath + ".ascx"; string controlFNOnDisk = System.Web.Hosting.HostingEnvironment.MapPath(virtualPath); return(new System.IO.FileInfo(controlFNOnDisk).LastWriteTime); } else if (ControlClassExists(controlNameOrPath)) { HatCMS.Controls.BaseCmsControl baseControl = LoadControlFromClass(controlNameOrPath); return(new System.IO.FileInfo(baseControl.GetType().Assembly.Location).LastWriteTime); } } catch { } return(DateTime.MinValue); }