Beispiel #1
0
        public List<IModuleSettings> getModulesSettingsInPage(int PageId, string PaneName)
        {
            var modules = new List<IModuleSettings>();

            // Create Instance of Connection and Command Object
            using (var connection = Config.SqlConnectionString)
            using (var command = new SqlCommand("rb_GetModulesSettingsInPage", connection) {
                // Mark the Command as a SPROC
                CommandType = CommandType.StoredProcedure
            }) {

                // Add Parameters to SPROC
                var parameterPageId = new SqlParameter(StringsPageId, SqlDbType.Int, 4) { Value = PageId };
                command.Parameters.Add(parameterPageId);

                var parameterFriendlyName = new SqlParameter(StringsPaneName, SqlDbType.NVarChar, 50) { Value = PaneName };
                command.Parameters.Add(parameterFriendlyName);

                // Open the database connection and execute the command
                connection.Open();
                using (var reader = command.ExecuteReader()) {
                    try {
                        // Always call Read before accessing data.
                        while (reader.Read()) {
                            IModuleSettings module = new ModuleSettings();
                            module.ModuleID = reader.GetInt32(0);
                            module.ModuleDefID = reader.GetInt32(1);
                            module.ModuleOrder = reader.GetInt32(2);
                            module.ModuleTitle = reader.GetString(3);
                            module.PageID = PageId;
                            module.PaneName = PaneName;

                            modules.Add(module);
                        }
                    } finally {
                        reader.Close();
                        connection.Close();
                    }
                }
            }

            return modules;
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="PortalSettings"/> class.
        ///   The PortalSettings Constructor encapsulates all of the logic
        ///   necessary to obtain configuration settings necessary to render
        ///   a Portal Page view for a given request.<br/>
        ///   These Portal Settings are stored within a SQL database, and are
        ///   fetched below by calling the "GetPortalSettings" stored procedure.<br/>
        ///   This stored procedure returns values as SPROC output parameters,
        ///   and using three result sets.
        /// </summary>
        /// <param name="pageId">
        /// The page id.
        /// </param>
        /// <param name="portalAlias">
        /// The portal alias.
        /// </param>
        /// <remarks>
        /// </remarks>
        private PortalSettings(int pageId, string portalAlias)
        {
            this.ActivePage = new PageSettings();
            this.DesktopPages = new List<PageStripDetails>();
            this.ShowPages = true;
            this.MobilePages = new ArrayList();

            // Create Instance of Connection and Command Object
            using (var connection = Config.SqlConnectionString)
            using (var command = new SqlCommand("rb_GetPortalSettings", connection))
            {
                // Mark the Command as a SPROC
                command.CommandType = CommandType.StoredProcedure;

                // Add Parameters to SPROC
                var parameterPortalAlias = new SqlParameter("@PortalAlias", SqlDbType.NVarChar, 128)
                    {
                        Value = portalAlias // Specify the Portal Alias Dynamically
                    };
                command.Parameters.Add(parameterPortalAlias);
                var parameterPageId = new SqlParameter(StringsAtPageId, SqlDbType.Int, 4) { Value = pageId };
                command.Parameters.Add(parameterPageId);
                var parameterPortalLanguage = new SqlParameter("@PortalLanguage", SqlDbType.NVarChar, 12)
                    {
                       Value = this.PortalContentLanguage.Name
                    };
                command.Parameters.Add(parameterPortalLanguage);

                // Add out parameters to Sproc
                var parameterPortalId = new SqlParameter(StringsAtPortalId, SqlDbType.Int, 4)
                    {
                       Direction = ParameterDirection.Output
                    };
                command.Parameters.Add(parameterPortalId);
                var parameterPortalName = new SqlParameter("@PortalName", SqlDbType.NVarChar, 128)
                    {
                       Direction = ParameterDirection.Output
                    };
                command.Parameters.Add(parameterPortalName);
                var parameterPortalPath = new SqlParameter("@PortalPath", SqlDbType.NVarChar, 128)
                    {
                       Direction = ParameterDirection.Output
                    };
                command.Parameters.Add(parameterPortalPath);
                var parameterEditButton = new SqlParameter("@AlwaysShowEditButton", SqlDbType.Bit, 1)
                    {
                       Direction = ParameterDirection.Output
                    };
                command.Parameters.Add(parameterEditButton);
                var parameterPageName = new SqlParameter("@PageName", SqlDbType.NVarChar, 50)
                    {
                       Direction = ParameterDirection.Output
                    };
                command.Parameters.Add(parameterPageName);
                var parameterPageOrder = new SqlParameter("@PageOrder", SqlDbType.Int, 4)
                    {
                       Direction = ParameterDirection.Output
                    };
                command.Parameters.Add(parameterPageOrder);
                var parameterParentPageId = new SqlParameter("@ParentPageID", SqlDbType.Int, 4)
                    {
                       Direction = ParameterDirection.Output
                    };
                command.Parameters.Add(parameterParentPageId);
                var parameterMobilePageName = new SqlParameter("@MobilePageName", SqlDbType.NVarChar, 50)
                    {
                       Direction = ParameterDirection.Output
                    };
                command.Parameters.Add(parameterMobilePageName);
                var parameterAuthRoles = new SqlParameter("@AuthRoles", SqlDbType.NVarChar, 512)
                    {
                       Direction = ParameterDirection.Output
                    };
                command.Parameters.Add(parameterAuthRoles);
                var parameterShowMobile = new SqlParameter("@ShowMobile", SqlDbType.Bit, 1)
                    {
                       Direction = ParameterDirection.Output
                    };
                command.Parameters.Add(parameterShowMobile);
                SqlDataReader result;

                try
                {
                    // Open the database connection and execute the command
                    // try // jes1111
                    // {
                    connection.Open();
                    result = command.ExecuteReader(CommandBehavior.CloseConnection);
                    this.CurrentLayout = "Default";

                    // Read the first resultset -- Desktop Page Information
                    while (result.Read())
                    {
                        var tabDetails = new PageStripDetails
                            {
                                PageID = (int)result["PageID"],
                                ParentPageID = Int32.Parse("0" + result["ParentPageID"]),
                                PageName = (string)result["PageName"],
                                PageOrder = (int)result["PageOrder"],
                                PageLayout = this.CurrentLayout,
                                AuthorizedRoles = (string)result["AuthorizedRoles"]
                            };
                        this.PortalAlias = portalAlias;

                        // Update the AuthorizedRoles Variable
                        this.DesktopPages.Add(tabDetails);
                    }

                    if (this.DesktopPages.Count == 0)
                    {
                        return; // Abort load

                        // throw new Exception("The portal you requested has no Pages. PortalAlias: '" + portalAlias + "'", new HttpException(404, "Portal not found"));
                    }

                    // Read the second result --  Mobile Page Information
                    result.NextResult();

                    while (result.Read())
                    {
                        var tabDetails = new PageStripDetails
                            {
                                PageID = (int)result["PageID"],
                                PageName = (string)result["MobilePageName"],
                                PageLayout = this.CurrentLayout,
                                AuthorizedRoles = (string)result["AuthorizedRoles"]
                            };
                        this.MobilePages.Add(tabDetails);
                    }

                    // Read the third result --  Module Page Information
                    result.NextResult();

                    while (result.Read())
                    {
                        var m = new ModuleSettings
                            {
                                ModuleID = (int)result["ModuleID"],
                                ModuleDefID = (int)result["ModuleDefID"],
                                GuidID = (Guid)result["GeneralModDefID"],
                                PageID = (int)result["TabID"],
                                PaneName = (string)result["PaneName"],
                                ModuleTitle = (string)result["ModuleTitle"]
                            };
                        var value = result["AuthorizedEditRoles"];
                        m.AuthorizedEditRoles = !Convert.IsDBNull(value) ? (string)value : string.Empty;
                        value = result["AuthorizedViewRoles"];
                        m.AuthorizedViewRoles = !Convert.IsDBNull(value) ? (string)value : string.Empty;
                        value = result["AuthorizedAddRoles"];
                        m.AuthorizedAddRoles = !Convert.IsDBNull(value) ? (string)value : string.Empty;
                        value = result["AuthorizedDeleteRoles"];
                        m.AuthorizedDeleteRoles = !Convert.IsDBNull(value) ? (string)value : string.Empty;
                        value = result["AuthorizedPropertiesRoles"];
                        m.AuthorizedPropertiesRoles = !Convert.IsDBNull(value) ? (string)value : string.Empty;

                        // [email protected] (19/08/2004) Add support for move & delete module roles
                        value = result["AuthorizedMoveModuleRoles"];
                        m.AuthorizedMoveModuleRoles = !Convert.IsDBNull(value) ? (string)value : string.Empty;
                        value = result["AuthorizedDeleteModuleRoles"];
                        m.AuthorizedDeleteModuleRoles = !Convert.IsDBNull(value) ? (string)value : string.Empty;

                        // Change by [email protected]
                        // Date: 6/2/2003
                        value = result["AuthorizedPublishingRoles"];
                        m.AuthorizedPublishingRoles = !Convert.IsDBNull(value) ? (string)value : string.Empty;
                        value = result["SupportWorkflow"];
                        m.SupportWorkflow = !Convert.IsDBNull(value) ? (bool)value : false;

                        // Date: 27/2/2003
                        value = result["AuthorizedApproveRoles"];
                        m.AuthorizedApproveRoles = !Convert.IsDBNull(value) ? (string)value : string.Empty;
                        value = result["WorkflowState"];
                        m.WorkflowStatus = !Convert.IsDBNull(value)
                                               ? (WorkflowState)(0 + (byte)value)
                                               : WorkflowState.Original;

                        // End Change [email protected]
                        // Start Change [email protected]
                        try
                        {
                            value = result["SupportCollapsable"];
                        }
                        catch
                        {
                            value = DBNull.Value;
                        }

                        m.SupportCollapsable = DBNull.Value != value ? (bool)value : false;

                        // End Change  [email protected]
                        // Start Change [email protected]
                        try
                        {
                            value = result["ShowEveryWhere"];
                        }
                        catch
                        {
                            value = DBNull.Value;
                        }

                        m.ShowEveryWhere = DBNull.Value != value ? (bool)value : false;

                        // End Change  [email protected]
                        m.CacheTime = int.Parse(result["CacheTime"].ToString());
                        m.ModuleOrder = int.Parse(result["ModuleOrder"].ToString());
                        value = result["ShowMobile"];
                        m.ShowMobile = !Convert.IsDBNull(value) ? (bool)value : false;
                        m.DesktopSrc = result["DesktopSrc"].ToString();
                        m.MobileSrc = result["MobileSrc"].ToString();
                        m.Admin = bool.Parse(result["Admin"].ToString());
                        this.ActivePage.Modules.Add(m);
                    }

                    // Now read Portal out params
                    result.NextResult();
                    this.PortalID = (int)parameterPortalId.Value;
                    this.PortalName = (string)parameterPortalName.Value;

                    // jes1111 - this.PortalTitle = ConfigurationSettings.AppSettings["PortalTitlePrefix"] + this.PortalName;
                    this.PortalTitle = String.Concat(Config.PortalTitlePrefix, this.PortalName);

                    // jes1111 - this.PortalPath = Settings.Path.WebPathCombine(ConfigurationSettings.AppSettings["PortalsDirectory"], (string) parameterPortalPath.Value);
                    this.PortalPath = Path.WebPathCombine(Config.PortalsDirectory, (string)parameterPortalPath.Value);

                    // jes1111 - this.PortalSecurePath = ConfigurationSettings.AppSettings["PortalSecureDirectory"]; // added Thierry (tiptopweb) 12 Apr 2003
                    this.PortalSecurePath = Config.PortalSecureDirectory;
                    this.ActivePage.PageID = pageId;
                    this.ActivePage.PageLayout = this.CurrentLayout;
                    this.ActivePage.ParentPageID = Int32.Parse("0" + parameterParentPageId.Value);
                    this.ActivePage.PageOrder = (int)parameterPageOrder.Value;
                    this.ActivePage.MobilePageName = (string)parameterMobilePageName.Value;
                    this.ActivePage.AuthorizedRoles = (string)parameterAuthRoles.Value;
                    this.ActivePage.PageName = (string)parameterPageName.Value;
                    this.ActivePage.ShowMobile = (bool)parameterShowMobile.Value;
                    this.ActivePage.PortalPath = this.PortalPath; // [email protected] for page custom layout
                    result.Close(); // by Manu, fixed bug 807858

                    // }
                    // catch (Exception ex)
                    // {
                    // HttpContext.Current.Response.Write("Failed rb_GetPortalSettings for " + pageID.ToString() + ", " + portalAlias + ":<br/>"+ex.Message);
                    // HttpContext.Current.Response.End();
                    // //Response.Redirect("~/app_support/ErrorNoPortal.aspx",true);
                    // }
                }
                catch (SqlException sqex)
                {
                    var requestUri = HttpContext.Current.Request.Url;

                        throw new DatabaseUnreachableException("This may be a new db", sqex);

                    return;
                }
                finally
                {
                    // by Manu fix close bug #2
                    if (connection.State == ConnectionState.Open)
                    {
                        connection.Close();
                    }
                }
            }

            // Provide a valid tab id if it is missing

            // 11-10-2011
            // Changed to go to the first page that the user logged has permission to see

            //if (this.ActivePage.PageID == 0)
            //{
            //    this.ActivePage.PageID = ((PageStripDetails)this.DesktopPages[0]).PageID;
            //}

            // Go to get custom settings
            if (!Directory.Exists(Path.ApplicationPhysicalPath + this.PortalFullPath))
            {
                var portals = new PortalsDB();
                portals.CreatePortalPath(this.PortalAlias);
            }

            this.CustomSettings = GetPortalCustomSettings(this.PortalID, GetPortalBaseSettings(this.PortalPath));

            // Initialize Theme
            var themeManager = new ThemeManager(this.PortalPath);

            // Default
            themeManager.Load(this.CustomSettings["SITESETTINGS_THEME"].ToString());
            this.CurrentThemeDefault = themeManager.CurrentTheme;

            // Alternate
            if (this.CustomSettings["SITESETTINGS_ALT_THEME"].ToString() == this.CurrentThemeDefault.Name)
            {
                this.CurrentThemeAlt = this.CurrentThemeDefault;
            }
            else
            {
                themeManager.Load(this.CustomSettings["SITESETTINGS_ALT_THEME"].ToString());
                this.CurrentThemeAlt = themeManager.CurrentTheme;
            }

            // themeManager.Save(this.CustomSettings["SITESETTINGS_THEME"].ToString());
            // Set layout
            this.CurrentLayout = this.CustomSettings["SITESETTINGS_PAGE_LAYOUT"].ToString();

            // Jes1111
            // Generate DesktopPagesXml
            // jes1111 - if (bool.Parse(ConfigurationSettings.AppSettings["PortalSettingDesktopPagesXml"]))
            // if (Config.PortalSettingDesktopPagesXml)
            // this.DesktopPagesXml = GetDesktopPagesXml();
        }
Beispiel #3
0
        /// <summary>
        /// Handles the Load event of the Page control.
        /// </summary>
        /// <param name="sender">The source of the event.</param>
        /// <param name="e">The <see cref="T:System.EventArgs"/> instance containing the event data.</param>
        private void Page_Load(object sender, EventArgs e)
        {
            this.DeleteButton.Visible = true;
            this.UpdateButton.Visible = false;

            try
            {
                _moduleID = int.Parse(Request.Params["mID"]);

                module = RecyclerDB.GetModuleSettingsForIndividualModule(_moduleID);
                if (RecyclerDB.ModuleIsInRecycler(_moduleID))
                {
                    if (!Page.IsPostBack)
                    {
                        //load tab names for the dropdown list, then bind them
                        // TODO check if this works
                        //portalTabs = new PagesDB().GetPagesFlat(portalSettings.PortalID);
                        portalTabs = new PagesDB().GetPagesFlatTable(this.PortalSettings.PortalID);

                        ddTabs.DataBind();

                        //on initial load, disable the restore button until they make a selection
                        restoreButton.Enabled = false;
                        ddTabs.Items.Insert(0, "--Choose a Page to Restore this Module--");
                    }

                    // create an instance of the module
                    PortalModuleControl myPortalModule =
                        (PortalModuleControl) LoadControl(Path.ApplicationRoot + "/" + this.module.DesktopSrc);
                    myPortalModule.PortalID = this.PortalSettings.PortalID;
                    myPortalModule.ModuleConfiguration = module;

                    // add the module to the placeholder
                    PrintPlaceHolder.Controls.Add(myPortalModule);
                }
                else
                    //they're trying to view a module that isn't in the recycler - maybe a manual manipulation of the url...?
                {
                    pnlMain.Visible = false;
                    pnlError.Visible = true;
                }
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
        }
        /// <summary>
        /// Raises the <see cref="E:System.Web.UI.Control.Init"/> event.
        /// </summary>
        /// <param name="e">An <see cref="T:System.EventArgs"/> object that contains the event data.</param>
        /// <remarks></remarks>
        protected override void OnInit(EventArgs e)
        {
            var controlPath = string.Empty;

            // Try to get info on linked control
            var linkedModuleId = Int32.Parse(this.Settings["LinkedModule"].ToString());
            var dr = ModuleSettings.GetModuleDefinitionByID(linkedModuleId);
            try
            {
                if (dr.Read())
                {
                    controlPath = string.Format("{0}/{1}", Path.ApplicationRoot, dr["DesktopSrc"]);
                }
            }
            finally
            {
                dr.Close();
            }

            // Load control
            PortalModuleControl portalModule = null;
            try
            {
                if (controlPath.Length == 0) {
                    this.PlaceHolderModule.Controls.Add(
                        new LiteralControl(
                            string.Format("Module '{0}' not found!  Use Admin panel to add a linked control.", linkedModuleId)));
                    portalModule = new PortalModuleControl();

                } else {
                    if (controlPath.ToLowerInvariant().Trim().EndsWith(".ascx"))
                    {
                        portalModule = (PortalModuleControl)this.Page.LoadControl(controlPath);
                    }
                    else // MVC
                    {
                        var strArray = controlPath.Split(
                            new[] { '/', '\\' }, StringSplitOptions.RemoveEmptyEntries);
                        int index = 1;
                        if (!Path.ApplicationRoot.Equals(string.Empty))
                        {
                            index++;
                        }
                        var areaName = (strArray[index].ToLower() == "views") ? string.Empty : strArray[index];
                        var controllerName = strArray[strArray.Length - 2];
                        var actionName = strArray[strArray.Length - 1];

                        // var ns = strArray[2];
                        portalModule =

                            (PortalModuleControl)this.Page.LoadControl("~/DesktopModules/CoreModules/MVC/MVCModule.ascx");

                        ((MVCModuleControl)portalModule).ControllerName = controllerName;
                        ((MVCModuleControl)portalModule).ActionName = actionName;
                        ((MVCModuleControl)portalModule).AreaName = areaName;
                        ((MVCModuleControl)portalModule).ModID = linkedModuleId;

                        ((MVCModuleControl)portalModule).Initialize();
                    }

                    // Sets portal ID
                    portalModule.PortalID = this.PortalID;

                    // Update settings
                    var m = new ModuleSettings {
                        ModuleID = linkedModuleId,
                        PageID = this.ModuleConfiguration.PageID,
                        PaneName = this.ModuleConfiguration.PaneName,
                        ModuleTitle = this.ModuleConfiguration.ModuleTitle,
                        AuthorizedEditRoles = string.Empty,   // read only
                        AuthorizedViewRoles = string.Empty,   // read only
                        AuthorizedAddRoles = string.Empty,    // read only
                        AuthorizedDeleteRoles = string.Empty, // read only
                        AuthorizedPropertiesRoles = this.ModuleConfiguration.AuthorizedPropertiesRoles,
                        CacheTime = this.ModuleConfiguration.CacheTime,
                        ModuleOrder = this.ModuleConfiguration.ModuleOrder,
                        ShowMobile = this.ModuleConfiguration.ShowMobile,
                        DesktopSrc = controlPath,
                        MobileSrc = string.Empty, // not supported yet
                        SupportCollapsable = this.ModuleConfiguration.SupportCollapsable
                    };

                    // added [email protected]
                    portalModule.ModuleConfiguration = m;

                    portalModule.Settings["MODULESETTINGS_APPLY_THEME"] = this.Settings["MODULESETTINGS_APPLY_THEME"];
                    portalModule.Settings["MODULESETTINGS_THEME"] = this.Settings["MODULESETTINGS_THEME"];

                    // added so ShowTitle is independent of the Linked Module
                    portalModule.Settings["MODULESETTINGS_SHOW_TITLE"] = this.Settings["MODULESETTINGS_SHOW_TITLE"];

                    // added so that shortcut works for module "print this..." feature
                    this.PlaceHolderModule.ID = "Shortcut";

                    // added so AllowCollapsable -- [email protected]
                    if (portalModule.Settings.ContainsKey("AllowCollapsable"))
                        portalModule.Settings["AllowCollapsable"] = this.Settings["AllowCollapsable"];

                    // Add control to the page
                    this.PlaceHolderModule.Controls.Add(portalModule);
                }
            }
            catch (Exception ex)
            {
                ErrorHandler.Publish(LogLevel.Error, string.Format("Shortcut: Unable to load control '{0}'!", controlPath), ex);
                this.PlaceHolderModule.Controls.Add(
                    new LiteralControl(
                        string.Format("<br /><span class=\"NormalRed\">Unable to load control '{0}'!</span><br />", controlPath)));
                this.PlaceHolderModule.Controls.Add(new LiteralControl(ex.Message));
                return; // The controls has failed!
            }

            // Set title
            portalModule.PropertiesUrl = HttpUrlBuilder.BuildUrl(
                "~/DesktopModules/CoreModules/Admin/PropertyPage.aspx", this.PageID, "mID=" + this.ModuleID);
            portalModule.PropertiesText = "PROPERTIES";
            portalModule.AddUrl = string.Empty; // Readonly
            portalModule.AddText = string.Empty; // Readonly
            portalModule.EditUrl = string.Empty; // Readonly
            portalModule.EditText = string.Empty; // Readonly

            // jes1111
            portalModule.OriginalModuleID = this.ModuleID;
            CurrentCache.Remove(Key.ModuleSettings(linkedModuleId));

            base.OnInit(e);
        }
        /// <summary>
        /// Toes the show.
        /// </summary>
        /// <param name="text">
        /// The text.
        /// </param>
        /// <returns>
        /// </returns>
        /// <remarks>
        /// </remarks>
        private Control ToShow(string text)
        {
            var module = 0;
            if (text.StartsWith(TokenModule))
            {
                module = int.Parse(text.Substring(TokenModule.Length));
            }
            else if (text.StartsWith(TokenPortalModule))
            {
                module = int.Parse(text.Substring(TokenPortalModule.Length));
            }
            else
            {
                return new LiteralControl(text);
            }

            PortalModuleControl portalModule;
            var controlPath = string.Empty;
            using (var dr = ModuleSettings.GetModuleDefinitionByID(module))
            {
                if (dr.Read())
                {
                    controlPath = string.Format("{0}/{1}", Framework.Settings.Path.ApplicationRoot, dr["DesktopSrc"]);
                }
            }

            try
            {
                if (string.IsNullOrEmpty(controlPath))
                {
                    return new LiteralControl(string.Format("Module '{0}' not found! ", module));
                }

                portalModule = (PortalModuleControl)this.Page.LoadControl(controlPath);

                // Sets portal ID
                portalModule.PortalID = this.PortalID;

                var m = new ModuleSettings
                    {
                        ModuleID = module,
                        PageID = this.ModuleConfiguration.PageID,
                        PaneName = this.ModuleConfiguration.PaneName,
                        ModuleTitle = this.ModuleConfiguration.ModuleTitle,
                        AuthorizedEditRoles = string.Empty,
                        AuthorizedViewRoles = string.Empty,
                        AuthorizedAddRoles = string.Empty,
                        AuthorizedDeleteRoles = string.Empty,
                        AuthorizedPropertiesRoles = string.Empty,
                        CacheTime = this.ModuleConfiguration.CacheTime,
                        ModuleOrder = this.ModuleConfiguration.ModuleOrder,
                        ShowMobile = this.ModuleConfiguration.ShowMobile,
                        DesktopSrc = controlPath
                    };

                portalModule.ModuleConfiguration = m;

                portalModule.Settings["MODULESETTINGS_APPLY_THEME"].Value = false;
                portalModule.Settings["MODULESETTINGS_SHOW_TITLE"].Value = false;
            }
            catch (Exception ex)
            {
                ErrorHandler.Publish(
                    LogLevel.Warn, string.Format("Shortcut: Unable to load control '{0}'!", controlPath), ex);
                return
                    new LiteralControl(
                        string.Format("<br><span class=NormalRed>Unable to load control '{0}'!<br>", controlPath));
            }

            portalModule.PropertiesUrl = string.Empty;
            portalModule.AddUrl = string.Empty; // Readonly
            portalModule.AddText = string.Empty; // Readonly
            portalModule.EditUrl = string.Empty; // Readonly
            portalModule.EditText = string.Empty; // Readonly
            portalModule.OriginalModuleID = this.ModuleID;

            CurrentCache.Remove(Key.ModuleSettings(module));
            return portalModule;
        }
        /// <summary>
        ///   Initializes a new instance of the <see cref = "PortalModuleControl" /> class.
        /// </summary>
        public PortalModuleControl()
        {
            this.BaseSettings = new Dictionary<string, ISettingItem>();
            this.ButtonListAdmin = new List<Control>(3);
            this.ButtonListCustom = new List<Control>(3);
            this.ButtonListUser = new List<Control>(3);
            this.ApproveText = "SWI_APPROVE";
            this.ProductionVersionText = "SWI_SWAPTOPRODUCTION";
            this.PublishText = "SWI_PUBLISH";
            this.ReadyToApproveText = "SWI_READYTOAPPROVE";
            this.RejectText = "SWI_REJECT";
            this.RevertText = "SWI_REVERT";
            this.StagingVersionText = "SWI_SWAPTOSTAGING";
            this.SupportsPrint = true;
            this.Cacheable = true;

            // MVC
            var wrapper = new HttpContextWrapper(this.Context);

            var viewContext = new ViewContext { HttpContext = wrapper, ViewData = new ViewDataDictionary() };

            this.ViewContext = viewContext;

            // THEME MANAGEMENT
            var group = SettingItemGroup.THEME_LAYOUT_SETTINGS;
            var groupOrderBase = (int)SettingItemGroup.THEME_LAYOUT_SETTINGS;

            var applyTheme = new SettingItem<bool, CheckBox>
                {
                    Order = groupOrderBase + 10,
                    Group = group,
                    Value = true,
                    EnglishName = "Apply Theme",
                    Description = "Check this box to apply theme to this module"
                };
            this.BaseSettings.Add("MODULESETTINGS_APPLY_THEME", applyTheme);

            var themeOptions = new List<SettingOption>
                {
                    new SettingOption((int)ThemeList.Default, General.GetString("MODULESETTINGS_THEME_DEFAULT")),
                    new SettingOption((int)ThemeList.Alt, General.GetString("MODULESETTINGS_THEME_ALT"))
                };
            var theme = new SettingItem<string, ListControl>(new CustomListDataType(themeOptions, "Name", "Val"))
                {
                    Order = groupOrderBase + 20,
                    Group = group,
                    Value = ((int)ThemeList.Default).ToString(),
                    EnglishName = "Theme",
                    Description = "Choose theme for this module"
                };
            this.BaseSettings.Add("MODULESETTINGS_THEME", theme);

            if (HttpContext.Current != null)
            {
                // null in DesignMode
                // Added: Jes1111 - 2004-08-03
                var PortalSettings1 = (PortalSettings)HttpContext.Current.Items["PortalSettings"];

                // end addition: Jes1111
                if (PortalSettings1 != null)
                {
                    // fix by The Bitland Prince
                    this.PortalID = PortalSettings1.PortalID;

                    // added: Jes1111 2004-08-02 - custom module theme
                    if (PortalSettings1.CustomSettings.ContainsKey("SITESETTINGS_ALLOW_MODULE_CUSTOM_THEMES") &&
                        PortalSettings1.CustomSettings["SITESETTINGS_ALLOW_MODULE_CUSTOM_THEMES"].ToString().Length != 0 &&
                        bool.Parse(PortalSettings1.CustomSettings["SITESETTINGS_ALLOW_MODULE_CUSTOM_THEMES"].ToString()))
                    {
                        var tempList = new List<object>(new ThemeManager(PortalSettings1.PortalPath).GetThemes());
                        var themeList =
                            tempList.Cast<ThemeItem>().Where(item => item.Name.ToLower().StartsWith("module")).ToList();

                        var customThemeNo = new ThemeItem { Name = string.Empty };
                        themeList.Insert(0, customThemeNo);
                        var moduleTheme =
                            new SettingItem<string, ListControl>(new CustomListDataType(themeList, "Name", "Name"))
                                {
                                    Order = groupOrderBase + 25,
                                    Group = group,
                                    EnglishName = "Custom Theme",
                                    Description = "Set a custom theme for this module only"
                                };
                        this.BaseSettings.Add("MODULESETTINGS_MODULE_THEME", moduleTheme);
                    }
                }
            }

            // switches title display on/off
            var showTitle = new SettingItem<bool, CheckBox>
                {
                    Order = groupOrderBase + 30,
                    Group = group,
                    Value = true,
                    EnglishName = "Show Title",
                    Description = "Switches title display on/off"
                };
            this.BaseSettings.Add("MODULESETTINGS_SHOW_TITLE", showTitle);

            // switches last modified summary on/off
            var showModifiedBy = new SettingItem<bool, CheckBox>
                {
                    Order = groupOrderBase + 40,
                    Group = group,
                    Value = false,
                    EnglishName = "Show Modified by",
                    Description = "Switches 'Show Modified by' display on/off"
                };
            this.BaseSettings.Add("MODULESETTINGS_SHOW_MODIFIED_BY", showModifiedBy);

            // gman3001: added 10/26/2004
            // - implement width, height, and content scrolling options for all modules
            // - implement auto-stretch option
            // Windows height
            var controlHeight = new SettingItem<int, TextBox>
                {
                    Value = 0,
                    MinValue = 0,
                    MaxValue = 3000,
                    Required = true,
                    Order = groupOrderBase + 50,
                    Group = group,
                    EnglishName = "Content Height",
                    Description = "Minimum height(in pixels) of the content area of this module. (0 for none)"
                };
            this.BaseSettings.Add("MODULESETTINGS_CONTENT_HEIGHT", controlHeight);

            // Windows width
            var controlWidth = new SettingItem<int, TextBox>
                {
                    Value = 0,
                    MinValue = 0,
                    MaxValue = 3000,
                    Required = true,
                    Order = groupOrderBase + 60,
                    Group = group,
                    EnglishName = "Content Width",
                    Description = "Minimum width(in pixels) of the content area of this module. (0 for none)"
                };
            this.BaseSettings.Add("MODULESETTINGS_CONTENT_WIDTH", controlWidth);

            // Content scrolling option
            var scrollingSetting = new SettingItem<bool, CheckBox>
                {
                    Value = false,
                    Order = groupOrderBase + 70,
                    Group = group,
                    EnglishName = "Content Scrolling",
                    Description = "Set to enable/disable scrolling of Content based on height and width settings."
                };
            this.BaseSettings.Add("MODULESETTINGS_CONTENT_SCROLLING", scrollingSetting);

            // Module Stretching option
            var stretchSetting = new SettingItem<bool, CheckBox>
                {
                    Value = true,
                    Order = groupOrderBase + 80,
                    Group = group,
                    EnglishName = "Module Auto Stretch",
                    Description =
                        "Set to enable/disable automatic stretching of the module's width to fill the empty area to the right of the module."
                };
            this.BaseSettings.Add("MODULESETTINGS_WIDTH_STRETCHING", stretchSetting);

            // gman3001: END

            // BUTTONS
            group = SettingItemGroup.BUTTON_DISPLAY_SETTINGS;
            groupOrderBase = (int)SettingItemGroup.BUTTON_DISPLAY_SETTINGS;

            // Show print button in view mode?
            var printButton1 = new SettingItem<bool, CheckBox>
                {
                    Value = false,
                    Order = groupOrderBase + 20,
                    Group = group,
                    EnglishName = "Show Print Button",
                    Description = "Show print button in view mode?"
                };
            this.BaseSettings.Add("MODULESETTINGS_SHOW_PRINT_BUTTION", printButton1);

            // added: Jes1111 2004-08-29 - choice! Default is 'true' for backward compatibility
            // Show Title for print?
            var showTitlePrint = new SettingItem<bool, CheckBox>
                {
                    Value = true,
                    Order = groupOrderBase + 25,
                    Group = group,
                    EnglishName = "Show Title for Print",
                    Description = "Show Title for this module in print popup?"
                };
            this.BaseSettings.Add("MODULESETTINGS_SHOW_TITLE_PRINT", showTitlePrint);

            // added: Jes1111 2004-08-02 - choices for Button display on module
            var buttonDisplayOptions = new List<SettingOption>
                {
                    new SettingOption(
                        (int)ModuleButton.RenderOptions.ImageOnly,
                        General.GetString("MODULESETTINGS_BUTTON_DISPLAY_IMAGE")),
                    new SettingOption(
                        (int)ModuleButton.RenderOptions.TextOnly,
                        General.GetString("MODULESETTINGS_BUTTON_DISPLAY_TEXT")),
                    new SettingOption(
                        (int)ModuleButton.RenderOptions.ImageAndTextCSS,
                        General.GetString("MODULESETTINGS_BUTTON_DISPLAY_BOTH")),
                    new SettingOption(
                        (int)ModuleButton.RenderOptions.ImageOnlyCSS,
                        General.GetString("MODULESETTINGS_BUTTON_DISPLAY_IMAGECSS"))
                };
            var buttonDisplay =
                new SettingItem<string, ListControl>(new CustomListDataType(buttonDisplayOptions, "Name", "Val"))
                    {
                        Order = groupOrderBase + 30,
                        Group = group,
                        Value = ((int)ModuleButton.RenderOptions.ImageOnly).ToString(),
                        EnglishName = "Display Buttons as:",
                        Description =
                            "Choose how you want module buttons to be displayed. Note that settings other than 'Image only' may require Zen or special treatment in the Theme."
                    };
            this.BaseSettings.Add("MODULESETTINGS_BUTTON_DISPLAY", buttonDisplay);

            // Jes1111 - not implemented yet
            // // Show email button in view mode?
            // SettingItem EmailButton = new SettingItem<bool, CheckBox>();
            // EmailButton.Value = "False";
            // EmailButton.Order = _groupOrderBase + 30;
            // EmailButton.Group = _Group;
            // this.BaseSettings.Add("ShowEmailButton",EmailButton);

            // Show arrows buttons to move modules (admin only, property authorize)
            var arrowButtons = new SettingItem<bool, CheckBox>
                {
                    Value = true,
                    Order = groupOrderBase + 40,
                    Group = group,
                    EnglishName = "Show Arrow Admin Buttons",
                    Description = "Show Arrow Admin buttons?"
                };
            this.BaseSettings.Add("MODULESETTINGS_SHOW_ARROW_BUTTONS", arrowButtons);

            // Show help button if exists
            var helpButton1 = new SettingItem<bool, CheckBox>
                {
                    Value = true,
                    Order = groupOrderBase + 50,
                    Group = group,
                    EnglishName = "Show Help Button",
                    Description = "Show help button in title if exists documentation for this module"
                };
            this.BaseSettings.Add("MODULESETTINGS_SHOW_HELP_BUTTON", helpButton1);

            // LANGUAGE/CULTURE MANAGEMENT
            groupOrderBase = (int)SettingItemGroup.CULTURE_SETTINGS;
            group = SettingItemGroup.CULTURE_SETTINGS;

            var cultureList = Localization.LanguageSwitcher.GetLanguageList(true);

            var culture =
                new SettingItem<string, ListControl>(new MultiSelectListDataType(cultureList, "DisplayName", "Name"))
                    {
                        Value = string.Empty,
                        Order = groupOrderBase + 10,
                        Group = group,
                        EnglishName = "Culture",
                        Description =
                            "Please choose the culture. Invariant cultures shows always the module, if you choose one or more cultures only when culture is selected this module will shown."
                    };
            this.BaseSettings.Add("MODULESETTINGS_CULTURE", culture);

            // Localized module title
            var counter = groupOrderBase + 11;

            // Ignore invariant
            foreach (var c in
                cultureList.Where(c => c != CultureInfo.InvariantCulture && !this.BaseSettings.ContainsKey(c.Name)))
            {
                var localizedTitle = new SettingItem<string, TextBox>
                    {
                        Order = counter,
                        Group = group,
                        EnglishName = string.Format("Title ({0})", c.Name),
                        Description = string.Format("Set title for {0} culture.", c.EnglishName)
                    };
                this.BaseSettings.Add(string.Format("MODULESETTINGS_TITLE_{0}", c.Name), localizedTitle);
                counter++;
            }

            // SEARCH
            if (this.Searchable)
            {
                groupOrderBase = (int)SettingItemGroup.MODULE_SPECIAL_SETTINGS;
                group = SettingItemGroup.MODULE_SPECIAL_SETTINGS;

                var topicName = new SettingItem<string, TextBox>
                    {
                        Required = false,
                        Value = string.Empty,
                        // modified by Hongwei Shen([email protected]) 11/9/2005
                        // group base and order is not specified
                        Group = group,
                        Order = groupOrderBase,
                        EnglishName = "Topic",
                        Description = "Select a topic for this module. You may filter items by topic in Portal Search."
                    };

                // end of modification
                this.BaseSettings.Add("TopicName", topicName);
            }

            // Default configuration
            this.pageId = 0;

            this.moduleConfiguration = new ModuleSettings();

            var share = new SettingItem<bool, CheckBox>
                {
                    Value = false,
                    Order = groupOrderBase + 51,
                    Group = SettingItemGroup.MODULE_SPECIAL_SETTINGS,
                    EnglishName = "ShareModule",
                    Description = "Share Module"
                };
            this.BaseSettings.Add("SHARE_MODULE", share);
        }
        /// <summary>
        /// Creates the portal.
        /// </summary>
        /// <param name="templateID">The template ID.</param>
        /// <param name="templateAlias">The template alias.</param>
        /// <param name="portalAlias">The portal alias.</param>
        /// <param name="portalName">Name of the portal.</param>
        /// <param name="portalPath">The portal path.</param>
        /// <returns></returns>
        private int CreatePortal(int templateID, string templateAlias, string portalAlias, string portalName,
            string portalPath)
        {
            int newPortalID;

            PortalsDB portals = new PortalsDB();
            PagesDB tabs = new PagesDB();
            ModulesDB modules = new ModulesDB();
            UsersDB users = new UsersDB();

            // create an Array to stores modules ID and GUID for finding them later
            ArrayList templateModules = new ArrayList();
            moduleTemplate module;
            // create an Array to stores tabs ID for finding them later
            ArrayList templateTabs = new ArrayList();
            tabTemplate tab;

            // Create a new portal
            newPortalID = portals.AddPortal(portalAlias, portalName, portalPath);

            // Open the connection to the PortalTemplates Database
            SqlConnection myConnection = GetConnection();
            SqlConnection my2ndConnection = GetConnection();
            SqlConnection my3rdConnection = GetConnection();
            myConnection.Open();
            my2ndConnection.Open();
            my3rdConnection.Open();

            // get module definitions and save them in the new portal
            SqlDataReader myReader = GetTemplateModuleDefinitions(templateID, myConnection);

            // Always call Read before accessing data.
            while (myReader.Read()) {
                module.id = (int)myReader["ModuleDefID"];
                module.GuidID = GetGeneralModuleDefinitionByName(myReader["FriendlyName"].ToString(), my2ndConnection);
                try {
                    // save module definitions in the new portal
                    modules.UpdateModuleDefinitions(module.GuidID, newPortalID, true);
                    // Save the modules into a list for finding them later
                    templateModules.Add(module);
                } catch {
                    // tried to add a Module thas doesn´t exists in this implementation of the portal
                }
            }

            myReader.Close();

            // TODO: Is this still valid? Admin user will be created the first time the portal is accessed
            //if (!Config.UseSingleUserBase)
            //{
            //    // TODO: multiple portals still not supported
            //    Guid userID;

            //    // Create the "admin" User for the new portal
            //    string AdminEmail = "*****@*****.**";
            //    userID = users.AddUser("admin", AdminEmail, "admin", newPortalID);

            //    // Create a new row in a many to many table (userroles)
            //    // giving the "admins" role to the "admin" user
            //    users.AddUserRole("admin", userID);
            //}

            // Get all the Tabs in the Template Portal, store IDs in a list for finding them later
            // and create the Tabs in the new Portal
            myReader = GetTabsByPortal(templateID, myConnection);

            // Always call Read before accessing data.
            while (myReader.Read()) {
                // Save the tabs into a list for finding them later
                tab.oldID = (int)myReader["PageID"];
                tab.newID =
                    tabs.AddPage(newPortalID, myReader["PageName"].ToString(),
                                 Int32.Parse(myReader["PageOrder"].ToString()));
                templateTabs.Add(tab);
            }
            myReader.Close();

            //Clear SiteMaps Cache
            AppleseedSiteMapProvider.ClearAllAppleseedSiteMapCaches();

            // now I have to get them again to set up the ParentID for each Tab
            myReader = GetTabsByPortal(templateID, myConnection);

            // Always call Read before accessing data.
            while (myReader.Read()) {
                // Find the news TabID and ParentTabID
                IEnumerator myEnumerator = templateTabs.GetEnumerator();
                int newTabID = -1;
                int newParentTabID = -1;

                while (myEnumerator.MoveNext() && (newTabID == -1 || newParentTabID == -1)) {
                    tab = (tabTemplate)myEnumerator.Current;
                    if (tab.oldID == (int)myReader["PageID"])
                        newTabID = tab.newID;
                    if (tab.oldID == Int32.Parse("0" + myReader["ParentPageID"]))
                        newParentTabID = tab.newID;
                }

                if (newParentTabID == -1)
                    newParentTabID = 0;

                // Update the Tab in the new portal
                tabs.UpdatePage(newPortalID, newTabID, newParentTabID, myReader["PageName"].ToString(),
                                Int32.Parse(myReader["PageOrder"].ToString()), myReader["AuthorizedRoles"].ToString(),
                                myReader["MobilePageName"].ToString(), (bool)myReader["ShowMobile"]);

                // Finally use GetPortalSettings to access each Tab and its Modules in the Template Portal
                // and create them in the new Portal
                SqlDataReader result;

                try {
                    result = GetPageModules(Int32.Parse(myReader["PageID"].ToString()), my2ndConnection);

                    object myValue;

                    while (result.Read()) {
                        ModuleSettings m = new ModuleSettings();
                        m.ModuleID = (int)result["ModuleID"];
                        m.ModuleDefID = (int)result["ModuleDefID"];
                        m.PageID = newTabID;
                        m.PaneName = (string)result["PaneName"];
                        m.ModuleTitle = (string)result["ModuleTitle"];

                        myValue = result["AuthorizedEditRoles"];
                        m.AuthorizedEditRoles = !Convert.IsDBNull(myValue) ? (string)myValue : string.Empty;

                        myValue = result["AuthorizedViewRoles"];
                        m.AuthorizedViewRoles = !Convert.IsDBNull(myValue) ? (string)myValue : string.Empty;

                        myValue = result["AuthorizedAddRoles"];
                        m.AuthorizedAddRoles = !Convert.IsDBNull(myValue) ? (string)myValue : string.Empty;

                        myValue = result["AuthorizedDeleteRoles"];
                        m.AuthorizedDeleteRoles = !Convert.IsDBNull(myValue) ? (string)myValue : string.Empty;

                        myValue = result["AuthorizedPropertiesRoles"];
                        m.AuthorizedPropertiesRoles = !Convert.IsDBNull(myValue) ? (string)myValue : string.Empty;

                        myValue = result["AuthorizedMoveModuleRoles"];
                        m.AuthorizedMoveModuleRoles = !Convert.IsDBNull(myValue) ? (string)myValue : string.Empty;

                        myValue = result["AuthorizedDeleteModuleRoles"];
                        m.AuthorizedDeleteModuleRoles = !Convert.IsDBNull(myValue) ? (string)myValue : string.Empty;

                        myValue = result["AuthorizedPublishingRoles"];
                        m.AuthorizedPublishingRoles = !Convert.IsDBNull(myValue) ? (string)myValue : string.Empty;

                        myValue = result["SupportWorkflow"];
                        m.SupportWorkflow = !Convert.IsDBNull(myValue) ? (bool)myValue : false;

                        myValue = result["AuthorizedApproveRoles"];
                        m.AuthorizedApproveRoles = !Convert.IsDBNull(myValue) ? (string)myValue : string.Empty;

                        myValue = result["WorkflowState"];
                        m.WorkflowStatus = !Convert.IsDBNull(myValue)
                                               ? (WorkflowState)(0 + (byte)myValue)
                                               : WorkflowState.Original;

                        try {
                            myValue = result["SupportCollapsable"];
                        } catch {
                            myValue = DBNull.Value;
                        }
                        m.SupportCollapsable = DBNull.Value != myValue ? (bool)myValue : false;

                        try {
                            myValue = result["ShowEveryWhere"];
                        } catch {
                            myValue = DBNull.Value;
                        }
                        m.ShowEveryWhere = DBNull.Value != myValue ? (bool)myValue : false;

                        m.CacheTime = int.Parse(result["CacheTime"].ToString());
                        m.ModuleOrder = int.Parse(result["ModuleOrder"].ToString());

                        myValue = result["ShowMobile"];
                        m.ShowMobile = !Convert.IsDBNull(myValue) ? (bool)myValue : false;

                        // Find the new ModuleDefID assigned to the module in the new portal
                        myEnumerator = templateModules.GetEnumerator();
                        int newModuleDefID = 0;

                        while (myEnumerator.MoveNext() && newModuleDefID == 0) {
                            module = (moduleTemplate)myEnumerator.Current;
                            if (module.id == m.ModuleDefID)
                                newModuleDefID = modules.GetModuleDefinitionByGuid(newPortalID, module.GuidID);
                        }

                        if (newModuleDefID > 0) {
                            // add the module to the new tab
                            int newModuleID = modules.AddModule(newTabID, m.ModuleOrder, m.PaneName, m.ModuleTitle,
                                                                newModuleDefID, m.CacheTime, m.AuthorizedEditRoles,
                                                                m.AuthorizedViewRoles,
                                                                m.AuthorizedAddRoles, m.AuthorizedDeleteRoles,
                                                                m.AuthorizedPropertiesRoles,
                                                                m.AuthorizedMoveModuleRoles,
                                                                m.AuthorizedDeleteModuleRoles,
                                                                m.ShowMobile, m.AuthorizedPublishingRoles,
                                                                m.SupportWorkflow,
                                                                m.ShowEveryWhere, m.SupportCollapsable);
                            // At the end, get all ModuleSettings and save them in the new module
                            SqlDataReader dr = GetModuleSettings(m.ModuleID, my3rdConnection);

                            while (dr.Read()) {
                                Framework.Site.Configuration.ModuleSettings.UpdateModuleSetting(newModuleID, dr["SettingName"].ToString(),
                                                                   dr["SettingValue"].ToString());
                            }
                            dr.Close();
                        }
                    }

                    result.Close();
                } catch {
                    // Error? ignore Tab ...
                }
            }
            myReader.Close();

            // Set the CustomSettings of the New Portal based in the Template Portal
            myReader = GetPortalCustomSettings(templateID, myConnection);

            // Always call Read before accessing data.
            while (myReader.Read()) {
                PortalSettings.UpdatePortalSetting(newPortalID, myReader["SettingName"].ToString(),
                                                   myReader["SettingValue"].ToString());
            }

            myReader.Close();

            // close the conections
            myConnection.Close();
            myConnection.Dispose();
            my2ndConnection.Close();
            my2ndConnection.Dispose();
            my3rdConnection.Close();
            my3rdConnection.Dispose();

            // Create paths
            portals.CreatePortalPath(portalPath);

            return newPortalID;
        }
Beispiel #8
0
        /// <summary>
        /// MOST OF THIS METHOD'S CODE IS COPIED DIRECTLY FROM THE PortalSettings() CLASS
        ///   THE RECYCLER NEEDS TO BE ABLE TO RETRIEVE A MODULE'S ModuleSettings INDEPENDENT
        ///   OF THE TAB THE MODULE IS LOCATED ON (AND INDEPENDENT OF THE CURRENT 'ActiveTab'
        /// </summary>
        /// <param name="moduleId">
        /// The module ID.
        /// </param>
        /// <returns>
        /// The module settings.
        /// </returns>
        public static ModuleSettings GetModuleSettingsForIndividualModule(int moduleId)
        {
            // Create Instance of Connection and Command Object
            using (var connection = Config.SqlConnectionString)
            using (var command = new SqlCommand("rb_GetModuleSettingsForIndividualModule", connection))
            {
                // Mark the Command as a SPROC
                command.CommandType = CommandType.StoredProcedure;

                // Add Parameters to SPROC
                var parameterModuleId = new SqlParameter("@ModuleID", SqlDbType.Int, 4) { Value = moduleId };
                command.Parameters.Add(parameterModuleId);

                // Open the database connection and execute the command
                connection.Open();
                var result = command.ExecuteReader(CommandBehavior.CloseConnection);

                var m = new ModuleSettings();

                // Read the result set -- There is only one row!
                while (result.Read())
                {
                    m.ModuleID = (int)result["ModuleID"];
                    m.ModuleDefID = (int)result["ModuleDefID"];
                    m.PageID = (int)result["TabID"];
                    m.PaneName = (string)result["PaneName"];
                    m.ModuleTitle = (string)result["ModuleTitle"];

                    var myvalue = result["AuthorizedEditRoles"];
                    m.AuthorizedEditRoles = !Convert.IsDBNull(myvalue) ? (string)myvalue : string.Empty;

                    myvalue = result["AuthorizedViewRoles"];
                    m.AuthorizedViewRoles = !Convert.IsDBNull(myvalue) ? (string)myvalue : string.Empty;

                    myvalue = result["AuthorizedAddRoles"];
                    m.AuthorizedAddRoles = !Convert.IsDBNull(myvalue) ? (string)myvalue : string.Empty;

                    myvalue = result["AuthorizedDeleteRoles"];
                    m.AuthorizedDeleteRoles = !Convert.IsDBNull(myvalue) ? (string)myvalue : string.Empty;

                    myvalue = result["AuthorizedPropertiesRoles"];
                    m.AuthorizedPropertiesRoles = !Convert.IsDBNull(myvalue) ? (string)myvalue : string.Empty;

                    // [email protected] (19/08/2004) Add support for move & delete module roles
                    myvalue = result["AuthorizedMoveModuleRoles"];
                    m.AuthorizedMoveModuleRoles = !Convert.IsDBNull(myvalue) ? (string)myvalue : string.Empty;

                    myvalue = result["AuthorizedDeleteModuleRoles"];
                    m.AuthorizedDeleteModuleRoles = !Convert.IsDBNull(myvalue) ? (string)myvalue : string.Empty;

                    // Change by [email protected]
                    // Date: 6/2/2003
                    myvalue = result["AuthorizedPublishingRoles"];
                    m.AuthorizedPublishingRoles = !Convert.IsDBNull(myvalue) ? (string)myvalue : string.Empty;

                    myvalue = result["SupportWorkflow"];
                    m.SupportWorkflow = !Convert.IsDBNull(myvalue) ? (bool)myvalue : false;

                    // Date: 27/2/2003
                    myvalue = result["AuthorizedApproveRoles"];
                    m.AuthorizedApproveRoles = !Convert.IsDBNull(myvalue) ? (string)myvalue : string.Empty;

                    myvalue = result["WorkflowState"];
                    m.WorkflowStatus = !Convert.IsDBNull(myvalue)
                                           ? (WorkflowState)(0 + (byte)myvalue)
                                           : WorkflowState.Original;

                    // End Change [email protected]
                    // Start Change [email protected]
                    try
                    {
                        myvalue = result["SupportCollapsable"];
                    }
                    catch
                    {
                        myvalue = DBNull.Value;
                    }

                    m.SupportCollapsable = DBNull.Value != myvalue ? (bool)myvalue : false;

                    // End Change  [email protected]
                    // Start Change [email protected]
                    try
                    {
                        myvalue = result["ShowEveryWhere"];
                    }
                    catch
                    {
                        myvalue = DBNull.Value;
                    }

                    m.ShowEveryWhere = DBNull.Value != myvalue ? (bool)myvalue : false;

                    // End Change  [email protected]
                    m.CacheTime = int.Parse(result["CacheTime"].ToString());
                    m.ModuleOrder = int.Parse(result["ModuleOrder"].ToString());

                    myvalue = result["ShowMobile"];
                    m.ShowMobile = !Convert.IsDBNull(myvalue) ? (bool)myvalue : false;

                    m.DesktopSrc = result["DesktopSrc"].ToString();
                    m.MobileSrc = result["MobileSrc"].ToString();
                    m.Admin = bool.Parse(result["Admin"].ToString());
                }

                return m;
            }
        }
 private static IModuleSettings ConvertRb_ModuleToModuleSettings(rb_Modules rbModules, AppleseedDBContext context)
 {
     var guidid = new ModulesDB().GetModuleGuid(rbModules.ModuleID);
     var newmodule = new ModuleSettings
     {
         PageID = rbModules.TabID,
         ModuleID = rbModules.ModuleID,
         PaneName = rbModules.PaneName,
         ModuleTitle = rbModules.ModuleTitle,
         AuthorizedEditRoles = rbModules.AuthorizedEditRoles,
         AuthorizedViewRoles = rbModules.AuthorizedViewRoles,
         AuthorizedAddRoles = rbModules.AuthorizedAddRoles,
         AuthorizedDeleteRoles = rbModules.AuthorizedDeleteModuleRoles,
         AuthorizedPropertiesRoles = rbModules.AuthorizedPropertiesRoles,
         CacheTime = rbModules.CacheTime,
         ModuleOrder = rbModules.ModuleOrder,
         ShowMobile = rbModules.ShowMobile != null && ((rbModules.ShowMobile == null) && (bool)rbModules.ShowMobile),
         DesktopSrc = context.rb_GeneralModuleDefinitions.First(d => d.GeneralModDefID == guidid).DesktopSrc,
         //MobileSrc =  // not supported yet
         SupportCollapsable = rbModules.SupportCollapsable != null && (bool)rbModules.SupportCollapsable,
         ShowEveryWhere = rbModules.ShowEveryWhere != null && (bool)rbModules.ShowEveryWhere,
         GuidID = guidid,
     };
     return newmodule;
 }