Exemple #1
0
        /// <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());
        }
Exemple #2
0
        /// <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);
        }
Exemple #3
0
 /// <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);
 }