public override bool IsAuthorized(AuthFilterContext context)
        {
            Requires.NotNull("context", context);

            var principal = Thread.CurrentPrincipal;

            if (!principal.Identity.IsAuthenticated)
            {
                return(false);
            }

            var currentPortal = TestablePortalController.Instance.GetCurrentPortalSettings();

            bool isAdminUser = currentPortal.UserInfo.IsSuperUser || PortalSecurity.IsInRole(currentPortal.AdministratorRoleName);

            if (isAdminUser)
            {
                return(true);
            }

            bool isPageEditor = TabPermissionController.HasTabPermission("EDIT,CONTENT,MANAGE") || IsModuleAdmin(((DnnApiController)context.ActionContext.ControllerContext.Controller).PortalSettings);

            if (isPageEditor)
            {
                return(true);
            }

            return(false);
        }
Exemple #2
0
        public static string GetAccessRoles(UserInfo UserInfo)
        {
            List <string> AccessRoles = new List <string>();

            if (UserInfo.UserID > 0)
            {
                AccessRoles.Add("user");
            }
            else
            {
                AccessRoles.Add("anonymous");
            }

            if (UserInfo.UserID > -1 && (UserInfo.IsInRole("Administrators")))
            {
                AccessRoles.Add("admin");
            }
            if (TabPermissionController.HasTabPermission("EDIT"))
            {
                AccessRoles.Add("edit");
            }

            if (UserInfo.IsSuperUser)
            {
                AccessRoles.Add("host");
            }

            return(string.Join(",", AccessRoles));
        }
Exemple #3
0
        public static bool CanMovePage()
        {
            //Cannot move the host console page
            if ((IsHostConsolePage()))
            {
                return(false);
            }

            //Page Editors - Can only move children they have 'Manage' permission to, they cannot move the top level page
            if ((!PortalSecurity.IsInRole("Administrators")))
            {
                int parentTabID = PortalSettings.Current.ActiveTab.ParentId;
                if ((parentTabID == Null.NullInteger))
                {
                    return(false);
                }

                TabInfo parentTab      = TabController.Instance.GetTab(parentTabID, PortalSettings.Current.ActiveTab.PortalID, false);
                string  permissionList = "MANAGE";
                if ((!TabPermissionController.HasTabPermission(parentTab.TabPermissions, permissionList)))
                {
                    return(false);
                }
            }

            return(true);
        }
        /// <summary>
        /// Checks if current user is page editor of the passed tab
        /// </summary>
        /// <param name="tabId">Tab ID</param>
        /// <param name="portalSettings">Portal Settings related with the portal which contains the tab</param>
        /// <returns>Returns true if current user has a edit permission on the page or is admin of some module in the page. Otherwise, returns false</returns>
        public static bool IsPageEditor(int tabId, PortalSettings portalSettings)
        {
            var tabPermissions = TabPermissionController.GetTabPermissions(tabId, portalSettings.PortalId);

            return(TabPermissionController.HasTabPermission(tabPermissions, "EDIT,CONTENT,MANAGE") ||
                   IsModuleAdmin(portalSettings, TabController.Instance.GetTab(tabId, portalSettings.PortalId)));
        }
Exemple #5
0
        protected void Page_Load(object sender, EventArgs e)
        {
            JavaScript.RequestRegistration(CommonJs.jQuery, null, SpecificVersion.Latest);

            PageManager.Init(Page, PortalSettings);
            if (string.IsNullOrEmpty(Request.QueryString["mid"]) || (!string.IsNullOrEmpty(Request.QueryString["icp"]) && bool.Parse(Request.QueryString["icp"]) && (!string.IsNullOrEmpty(Request.QueryString["mid"]) && Request.QueryString["mid"] != "0")))
            {
                if (page != null && page.StateID.HasValue)
                {
                    HasReviewPermission = WorkflowManager.HasReviewPermission(page.StateID.Value, PortalSettings.UserInfo);
                }

                WebForms.LinkCSS(Page, "ThemeCSS", Page.ResolveUrl("~/Portals/" + PortalSettings.PortalId + "/vThemes/" + Core.Managers.ThemeManager.GetCurrentThemeName() + "/Theme.css"));
                WebForms.LinkCSS(Page, "SkinCSS", Page.ResolveUrl("~/Portals/_default/Skins/Vanjaro/Resources/css/skin.css"));

                //Skin js requried because using for openpopup update memeber Profile when user is registered user
                //VjDefaultPath used in Skin.js for loading icon.
                WebForms.RegisterClientScriptBlock(Page, "DefaultPath", "var VjThemePath='" + Page.ResolveUrl("~/Portals/_default/vThemes/" + Core.Managers.ThemeManager.GetCurrentThemeName()) + "'; var VjDefaultPath='" + Page.ResolveUrl("~/DesktopModules/Vanjaro/UXManager/Library/Resources/Images/") + "'; var VjSitePath='" + Page.ResolveUrl("~/DesktopModules/Vanjaro/") + "';", true);
                ClientResourceManager.RegisterScript(Page, Page.ResolveUrl("~/Portals/_default/Skins/Vanjaro/Resources/js/skin.js"), 2, "DnnFormBottomProvider");
                ClientResourceManager.RegisterScript(Page, Page.ResolveUrl("~/DesktopModules/Vanjaro/Common/Frameworks/Bootstrap/4.5.0/js/bootstrap.min.js"), 1, "DnnFormBottomProvider");

                string DirectoryPath = System.Web.Hosting.HostingEnvironment.MapPath("~/Portals/_default/vThemes/" + Core.Managers.ThemeManager.GetCurrentThemeName() + "/js/");
                if ((TabPermissionController.HasTabPermission("EDIT") || (page != null && page.StateID.HasValue && HasReviewPermission)) && Directory.Exists(DirectoryPath))
                {
                    string script = "";

                    foreach (string file in Directory.GetFiles(DirectoryPath))
                    {
                        string FileName = Path.GetFileName(file);
                        if (!string.IsNullOrEmpty(FileName))
                        {
                            if (FileName.EndsWith(".js"))
                            {
                                script += File.ReadAllText(DirectoryPath + "/" + FileName);
                            }
                        }
                    }

                    if (!string.IsNullOrEmpty(script.Trim()))
                    {
                        WebForms.RegisterStartupScript(Page, "ThemeBlocks", "LoadThemeBlocks = function (grapesjs) { grapesjs.plugins.add('ThemeBlocks', (editor, opts = {}) => { " + script + "}); };", true);
                    }
                }
                else
                {
                    string ThemeJS = "~/Portals/_default/vThemes/" + Core.Managers.ThemeManager.GetCurrentThemeName() + "/theme.js";
                    if (File.Exists(System.Web.Hosting.HostingEnvironment.MapPath(ThemeJS)))
                    {
                        ClientResourceManager.RegisterScript(Page, Page.ResolveUrl(ThemeJS));
                    }
                }
            }
            else
            {
                WebForms.LinkCSS(Page, "EditCSS", Page.ResolveUrl("~/Portals/_default/Skins/Vanjaro/Resources/css/edit.css"));
            }

            ResetModulePanes();
        }
Exemple #6
0
        private static string GetReviewGlobalVariable(PortalSettings PortalSettings, bool HasReviewPermission)
        {
            string Script = string.Empty;

            if (TabPermissionController.HasTabPermission("EDIT") || HasReviewPermission)
            {
                ReviewSettings ReviewSetting = Core.Managers.PageManager.GetPageReviewSettings(PortalSettings);
                Script = "var VJIsPageDraft='" + ReviewSetting.IsPageDraft + "';  var VJIsContentApproval='" + ReviewSetting.IsContentApproval + "'; var VJNextStateName='" + ReviewSetting.NextStateName + "'; var VJIsLocked='" + ReviewSetting.IsLocked + "'; var VJIsModeratorEditPermission='" + ReviewSetting.IsModeratorEditPermission + "'; var VJLocal='" + Core.Managers.PageManager.GetCultureCode(PortalSettings) + "';";
            }
            return(Script);
        }
        private void context_PreRequestHandlerExecute(object sender, EventArgs e)
        {
            HttpApplication app = (HttpApplication)sender;

            if (app != null)
            {
                HttpContext context = app.Context;

                //Make sure we have a valid HttpContext and we're not dealing with static requests such as images etc...
                if (context != null && context.CurrentHandler is CDefault && context.Request.QueryString["popUp"] == null)
                {
                    PortalSettings p = PortalController.Instance.GetCurrentSettings() as PortalSettings;

                    if (p != null && p.UserInfo != null && TabPermissionController.HasTabPermission("EDIT"))
                    {
                        if (p.ActiveTab != null)
                        {
                            Page _Page = app.Context.CurrentHandler as Page;

                            string TabSkinSrc = p.ActiveTab.SkinSrc != null?p.ActiveTab.SkinSrc.ToLower() : string.Empty;

                            string QuerySkinSrc = context.Request.QueryString["SkinSrc"] != null ? context.Request.QueryString["SkinSrc"].ToLower() : null;

                            if (TabSkinSrc == "[G]Skins/Vanjaro/Base.ascx".ToLower() || QuerySkinSrc == "[G]Skins/Vanjaro/Base".ToLower())
                            {
                                ToggleUserMode(p);

                                string ControlPanel = HostController.Instance.GetSettings().ContainsKey("ControlPanel") ? HostController.Instance.GetSettings()["ControlPanel"].Value.ToLower() : null;

                                HostController.Instance.GetSettings()["ControlPanel"].Value = "DesktopModules/Vanjaro/UXManager/Library/Base.ascx";

                                _Page.PreRender += delegate(object ss, EventArgs ee)
                                {
                                    HostController.Instance.GetSettings()["ControlPanel"].Value = "DesktopModules/admin/Dnn.PersonaBar/UserControls/PersonaBarContainer.ascx";
                                };
                            }
                            else
                            {
                                string NavigateURL = p.ActiveTab.FullUrl;

                                string Script = "<script>var VanjaroMigrate_CurrentTabURL = '" + NavigateURL + "'; </script>";
                                _Page.ClientScript.RegisterStartupScript(_Page.GetType(), "VJ-HttpMod-Div", Script);
                            }
                        }
                    }
                }
            }
        }
Exemple #8
0
        /// <summary>
        /// Check if current user can see a specific page
        /// </summary>
        /// <param name="tab"> The TabInfo to be checked</param>
        /// <returns>True if current user can see the specific page. Otherwise, False</returns>
        internal static bool CanSeeVersionedPages(TabInfo tab)
        {
            if (!Thread.CurrentPrincipal.Identity.IsAuthenticated)
            {
                return(false);
            }

            var currentPortal = PortalController.Instance.GetCurrentPortalSettings();
            var isAdminUser   = currentPortal.UserInfo.IsSuperUser || PortalSecurity.IsInRole(currentPortal.AdministratorRoleName);

            if (isAdminUser)
            {
                return(true);
            }

            return(TabPermissionController.HasTabPermission(tab.TabPermissions, "EDIT,CONTENT,MANAGE"));
        }
Exemple #9
0
 private void LoadModuleInFrame()
 {
     if (!string.IsNullOrEmpty(Request.QueryString["mid"]) && TabPermissionController.HasTabPermission("EDIT"))
     {
         int mid = int.Parse(Request.QueryString["mid"]);
         List <ModuleInfo> ModulesToRemove = new List <ModuleInfo>();
         foreach (ModuleInfo m in PortalSettings.ActiveTab.Modules)
         {
             if (m.ModuleID != mid)
             {
                 ModulesToRemove.Add(m);
             }
         }
         foreach (ModuleInfo m in ModulesToRemove)
         {
             PortalSettings.ActiveTab.Modules.Remove(m);
         }
     }
 }
Exemple #10
0
        private Pages GetPage()
        {
            Pages page;

            if (!string.IsNullOrEmpty(Request.QueryString["revisionversion"]) && TabPermissionController.HasTabPermission("EDIT"))
            {
                page = PageManager.GetByVersion(PortalSettings.ActiveTab.TabID, Convert.ToInt32(Request.QueryString["revisionversion"]), PageManager.GetCultureCode(PortalSettings));
            }
            else if (!string.IsNullOrEmpty(Request.QueryString["uxmode"]) && Convert.ToBoolean(Request.QueryString["uxmode"]))
            {
                page = PageManager.GetLatestVersion(PortalSettings.ActiveTab.TabID, true, PageManager.GetCultureCode(PortalSettings), true);
            }
            else
            {
                page = PageManager.GetLatestVersion(PortalSettings.ActiveTab.TabID, PageManager.GetCultureCode(PortalSettings));
            }

            return(page);
        }
        public static bool HasTabPermission(string permissionKey)
        {
            var principal = Thread.CurrentPrincipal;

            if (!principal.Identity.IsAuthenticated)
            {
                return(false);
            }

            var currentPortal = PortalController.Instance.GetCurrentPortalSettings();

            bool isAdminUser = currentPortal.UserInfo.IsSuperUser || PortalSecurity.IsInRole(currentPortal.AdministratorRoleName);

            if (isAdminUser)
            {
                return(true);
            }

            return(TabPermissionController.HasTabPermission(permissionKey));
        }
        private BaseModel GetBaseModel()
        {
            BaseModel item = new BaseModel
            {
                LoadingImage      = Page.ResolveUrl("~/DesktopModules/Vanjaro/UXManager/Library/Resources/Images/loading.gif"),
                AboutUrl          = AppManager.GetAboutUrl(),
                Logo              = Page.ResolveUrl("~/DesktopModules/Vanjaro/UXManager/Library/Resources/Images/Vanjaro.png"),
                MenuMarkUp        = MenuManager.RenderMenu(MenuManager.ParseMenuCategoryTree(null), null),
                NotificationCount = Core.Managers.NotificationManager.RenderNotificationsCount(PortalSettings.PortalId),
                ToolbarMarkUp     = ToolbarManager.RenderMenu(),
                LanguageMarkUp    = LanguageManager.RenderLanguages(),
                HasShortcut       = (ShortcutManager.GetShortcut().Where(x => x.Shortcut.Visibility).Count() > 0)
            };

            item.ShortcutMarkUp       = item.HasShortcut ? ShortcutManager.RenderShortcut() : string.Empty;
            item.HasTabEditPermission = TabPermissionController.HasTabPermission("EDIT");
            item.ShowUXManagerToolbar = Editor.VjObjects.ShowUXManagerToolbar;
            item.ShowUXManager        = string.IsNullOrEmpty(Core.Managers.CookieManager.GetValue("InitGrapejs")) ? false : Convert.ToBoolean(Core.Managers.CookieManager.GetValue("InitGrapejs"));
            return(item);
        }
Exemple #13
0
            public static Pages GetLatestVersion(int TabID, bool IgnoreDraft, string Locale, bool GetDefaultLocale)
            {
                UserInfo     UserInfo = (PortalController.Instance.GetCurrentSettings() as PortalSettings).UserInfo;
                List <Pages> pages    = GetPages(TabID).Where(a => a.Locale == Locale).ToList();
                Pages        page     = new Pages();

                if (!IgnoreDraft && (TabPermissionController.HasTabPermission("EDIT") || WorkflowManager.HasReviewPermission(UserInfo)))
                {
                    page = pages.OrderByDescending(a => a.Version).FirstOrDefault();
                }
                else
                {
                    page = pages.Where(a => a.IsPublished == true).OrderByDescending(a => a.Version).FirstOrDefault();
                }

                if (page == null && !string.IsNullOrEmpty(Locale) && GetDefaultLocale)
                {
                    return(GetLatestVersion(TabID, IgnoreDraft, null, false));
                }
                return(page);
            }
Exemple #14
0
            public static Pages GetLatestVersion(int TabID, UserInfo UserInfo)
            {
                List <Pages> pages = GetPages(TabID).ToList();
                Pages        page  = new Pages();

                try
                {
                    if (TabPermissionController.HasTabPermission("EDIT") || WorkflowManager.HasReviewPermission(UserInfo))
                    {
                        page = pages.OrderByDescending(a => a.Version).FirstOrDefault();
                    }
                    else
                    {
                        page = pages.Where(a => a.IsPublished == true).OrderByDescending(a => a.Version).FirstOrDefault();
                    }
                }
                catch (Exception)
                {
                    page = new Pages();
                }
                return(page);
            }
        internal static string GetAccessRoles(UserInfo UserInfo)
        {
            List <string> AccessRoles = new List <string>();

            if (UserInfo.UserID > 0)
            {
                AccessRoles.Add("user");
            }
            else
            {
                AccessRoles.Add("anonymous");
            }

            if (UserInfo.IsSuperUser)
            {
                AccessRoles.Add("host");
                AccessRoles.Add("review");
            }

            if (UserInfo.UserID > -1 && (UserInfo.IsInRole("Administrators")))
            {
                AccessRoles.Add("admin");
                AccessRoles.Add("review");
            }

            if (TabPermissionController.HasTabPermission("EDIT"))
            {
                AccessRoles.Add("pageedit");
            }

            if (WorkflowManager.HasReviewPermission(UserInfo))
            {
                AccessRoles.Add("review");
            }

            return(string.Join(",", AccessRoles.Distinct()));
        }
Exemple #16
0
        public static int SaveTabInfoObject(TabInfo tab, TabInfo relativeToTab, TabRelativeLocation location, string templateFileId)
        {
            //Validation:
            //Tab name is required
            //Tab name is invalid
            string invalidType;

            if (!TabController.IsValidTabName(tab.TabName, out invalidType))
            {
                switch (invalidType)
                {
                case "EmptyTabName":
                    throw new DotNetNukeException("Page name is required.", DotNetNukeErrorCode.PageNameRequired);

                case "InvalidTabName":
                    throw new DotNetNukeException("Page name is invalid.", DotNetNukeErrorCode.PageNameInvalid);
                }
            }
            else if ((Validate_IsCircularReference(tab.PortalID, tab.TabID)))
            {
                throw new DotNetNukeException("Cannot move page to that location.", DotNetNukeErrorCode.PageCircularReference);
            }

            bool usingDefaultLanguage = (tab.CultureCode == PortalSettings.Current.DefaultLanguage) || tab.CultureCode == null;

            if (PortalSettings.Current.ContentLocalizationEnabled)
            {
                if ((!usingDefaultLanguage))
                {
                    TabInfo defaultLanguageSelectedTab = tab.DefaultLanguageTab;

                    if ((defaultLanguageSelectedTab == null))
                    {
                        //get the siblings from the selectedtab and iterate through until you find a sibbling with a corresponding defaultlanguagetab
                        //if none are found get a list of all the tabs from the default language and then select the last one
                        var selectedTabSibblings = TabController.Instance.GetTabsByPortal(tab.PortalID).WithCulture(tab.CultureCode, true).AsList();
                        foreach (TabInfo sibling in selectedTabSibblings)
                        {
                            TabInfo siblingDefaultTab = sibling.DefaultLanguageTab;
                            if (((siblingDefaultTab != null)))
                            {
                                defaultLanguageSelectedTab = siblingDefaultTab;
                                break;
                            }
                        }

                        //still haven't found it
                        if ((defaultLanguageSelectedTab == null))
                        {
                            var defaultLanguageTabs = TabController.Instance.GetTabsByPortal(tab.PortalID).WithCulture(PortalSettings.Current.DefaultLanguage, true).AsList();
                            defaultLanguageSelectedTab = defaultLanguageTabs[defaultLanguageTabs.Count];
                            //get the last tab
                        }
                    }

                    relativeToTab = defaultLanguageSelectedTab;
                }
            }


            if ((location != TabRelativeLocation.NOTSET))
            {
                //Check Host tab - don't allow adding before or after
                if ((IsHostConsolePage(relativeToTab) && (location == TabRelativeLocation.AFTER || location == TabRelativeLocation.BEFORE)))
                {
                    throw new DotNetNukeException("You cannot add or move pages before or after the Host tab.", DotNetNukeErrorCode.HostBeforeAfterError);
                }

                TabInfo parentTab      = GetParentTab(relativeToTab, location);
                string  permissionList = "ADD,COPY,EDIT,MANAGE";
                //Check permissions for Page Editors when moving or inserting
                if ((!PortalSecurity.IsInRole("Administrators")))
                {
                    if (((parentTab == null) || !TabPermissionController.HasTabPermission(parentTab.TabPermissions, permissionList)))
                    {
                        throw new DotNetNukeException("You do not have permissions to add or move pages to this location. You can only add or move pages as children of pages you can edit.",
                                                      DotNetNukeErrorCode.PageEditorPermissionError);
                    }
                }

                if (((parentTab != null)))
                {
                    tab.ParentId = parentTab.TabID;
                    tab.Level    = parentTab.Level + 1;
                }
                else
                {
                    tab.ParentId = Null.NullInteger;
                    tab.Level    = 0;
                }
            }

            if ((tab.TabID > Null.NullInteger && tab.TabID == tab.ParentId))
            {
                throw new DotNetNukeException("Parent page is invalid.", DotNetNukeErrorCode.ParentTabInvalid);
            }

            tab.TabPath = Globals.GenerateTabPath(tab.ParentId, tab.TabName);
            //check whether have conflict between tab path and portal alias.
            if (TabController.IsDuplicateWithPortalAlias(PortalSettings.Current.PortalId, tab.TabPath))
            {
                throw new DotNetNukeException("The page path is duplicate with a site alias", DotNetNukeErrorCode.DuplicateWithAlias);
            }

            try
            {
                if ((tab.TabID < 0))
                {
                    if ((tab.TabPermissions.Count == 0 && tab.PortalID != Null.NullInteger))
                    {
                        //Give admin full permission
                        ArrayList permissions = PermissionController.GetPermissionsByTab();

                        foreach (PermissionInfo permission in permissions)
                        {
                            TabPermissionInfo newTabPermission = new TabPermissionInfo();
                            newTabPermission.PermissionID   = permission.PermissionID;
                            newTabPermission.PermissionKey  = permission.PermissionKey;
                            newTabPermission.PermissionName = permission.PermissionName;
                            newTabPermission.AllowAccess    = true;
                            newTabPermission.RoleID         = PortalSettings.Current.AdministratorRoleId;
                            tab.TabPermissions.Add(newTabPermission);
                        }
                    }

                    PortalSettings _PortalSettings = PortalController.Instance.GetCurrentPortalSettings();

                    if (_PortalSettings.ContentLocalizationEnabled)
                    {
                        Locale defaultLocale = LocaleController.Instance.GetDefaultLocale(tab.PortalID);
                        tab.CultureCode = defaultLocale.Code;
                    }
                    else
                    {
                        tab.CultureCode = Null.NullString;
                    }

                    if ((location == TabRelativeLocation.AFTER && (relativeToTab != null)))
                    {
                        tab.TabID = TabController.Instance.AddTabAfter(tab, relativeToTab.TabID);
                    }
                    else if ((location == TabRelativeLocation.BEFORE && (relativeToTab != null)))
                    {
                        tab.TabID = TabController.Instance.AddTabBefore(tab, relativeToTab.TabID);
                    }
                    else
                    {
                        tab.TabID = TabController.Instance.AddTab(tab);
                    }

                    if (_PortalSettings.ContentLocalizationEnabled)
                    {
                        TabController.Instance.CreateLocalizedCopies(tab);
                    }

                    TabController.Instance.UpdateTabSetting(tab.TabID, "CacheProvider", "");
                    TabController.Instance.UpdateTabSetting(tab.TabID, "CacheDuration", "");
                    TabController.Instance.UpdateTabSetting(tab.TabID, "CacheIncludeExclude", "0");
                    TabController.Instance.UpdateTabSetting(tab.TabID, "IncludeVaryBy", "");
                    TabController.Instance.UpdateTabSetting(tab.TabID, "ExcludeVaryBy", "");
                    TabController.Instance.UpdateTabSetting(tab.TabID, "MaxVaryByCount", "");
                }
                else
                {
                    TabController.Instance.UpdateTab(tab);

                    if ((location == TabRelativeLocation.AFTER && (relativeToTab != null)))
                    {
                        TabController.Instance.MoveTabAfter(tab, relativeToTab.TabID);
                    }
                    else if ((location == TabRelativeLocation.BEFORE && (relativeToTab != null)))
                    {
                        TabController.Instance.MoveTabBefore(tab, relativeToTab.TabID);
                    }
                }
            }
            catch (Exception ex)
            {
                Logger.Error(ex);

                if (ex.Message.StartsWith("Page Exists"))
                {
                    throw new DotNetNukeException(ex.Message, DotNetNukeErrorCode.PageExists);
                }
            }

            // create the page from a template
            if (!string.IsNullOrEmpty(templateFileId))
            {
                XmlDocument xmlDoc = new XmlDocument {
                    XmlResolver = null
                };
                try
                {
                    var templateFile = FileManager.Instance.GetFile(Convert.ToInt32(templateFileId));
                    xmlDoc.Load(FileManager.Instance.GetFileContent(templateFile));
                    TabController.DeserializePanes(xmlDoc.SelectSingleNode("//portal/tabs/tab/panes"), tab.PortalID, tab.TabID, PortalTemplateModuleAction.Ignore, new Hashtable());

                    //save tab permissions
                    DeserializeTabPermissions(xmlDoc.SelectNodes("//portal/tabs/tab/tabpermissions/permission"), tab);
                }
                catch (Exception ex)
                {
                    Exceptions.LogException(ex);
                    throw new DotNetNukeException("Unable to process page template.", ex, DotNetNukeErrorCode.DeserializePanesFailed);
                }
            }

            //todo: reload tab from db or send back tabid instead?
            return(tab.TabID);
        }
        public static List <IUIData> GetData(string Identifier, Dictionary <string, string> parameters, UserInfo userInfo)
        {
            Dictionary <string, IUIData> Settings = new Dictionary <string, IUIData>
            {
                { "AppPath", new UIData {
                      Name = "AppPath", Value = HttpContext.Current.Request.ApplicationPath.TrimEnd('/') + "/DesktopModules/Vanjaro/UXManager/Extensions/Menu/Pages"
                  } }
            };

            PagesController pc = new PagesController();

            switch (Identifier.ToLower())
            {
            case "setting_pages":
            {
                dynamic DeletedPages = Managers.PagesManager.GetDeletedPageList();
                Settings.Add("PagesTree", new UIData {
                        Name = "PagesTree", Options = Managers.PagesManager.GetPagesTreeView()
                    });
                Settings.Add("DeletedPages", new UIData {
                        Name = "DeletedPages", Options = DeletedPages.Data
                    });
                Settings.Add("DeletedPagesCount", new UIData {
                        Name = "DeletedPagesCount", Options = DeletedPages.totalRecords
                    });
                Settings.Add("PageItem", new UIData {
                        Name = "PageItem", Options = new PageItem()
                    });
                Settings.Add("List_PageItem", new UIData {
                        Name = "List_PageItem", Options = new List <PageItem>()
                    });
                Settings.Add("PageSetting", new UIData {
                        Name = "PageSetting", Options = pc.GetDefaultPagesSettings(PortalSettings.Current.PortalId, PortalSettings.Current.CultureCode).Data
                    });
                Settings.Add("DefaultPagesSettingsRequest", new UIData {
                        Name = "DefaultPagesSettingsRequest", Options = new UpdateDefaultPagesSettingsRequest()
                    });
                Settings.Add("PageMoveRequest", new UIData {
                        Name = "PageMoveRequest", Options = new PageMoveRequest()
                    });

                Settings.Add("HasTabPermission", new UIData {
                        Name = "HasTabPermission", Value = Factories.AppFactory.GetAccessRoles(userInfo).Contains("admin").ToString().ToLower()
                    });
                return(Settings.Values.ToList());
            }

            case "setting_detail":
            {
                int    pid = 0;
                bool   copy = false;
                string ParentPageValue = "-1", SitemapPriorityValue = "-1";
                if (parameters.Count > 0)
                {
                    pid = int.Parse(parameters["pid"]);
                    if (parameters.ContainsKey("copy"))
                    {
                        copy = bool.Parse(parameters["copy"]);
                    }
                }
                bool HasTabPermission = pid > 0 ? TabPermissionController.HasTabPermission(TabController.Instance.GetTab(pid, PortalSettings.Current.PortalId).TabPermissions, "EDIT") : true;
                Settings.Add("HasTabPermission", new UIData {
                        Name = "HasTabPermission", Value = HasTabPermission.ToString()
                    });
                if (copy)
                {
                    Settings.Add("IsCopy", new UIData {
                            Name = "IsCopy", Value = copy.ToString()
                        });
                }

                if (HasTabPermission)
                {
                    PageSettings pageSettings = new PageSettings();
                    pageSettings = pid > 0 ? Managers.PagesManager.GetPageDetails(pid).Data : Managers.PagesManager.GetDefaultSettings();
                    if (copy)
                    {
                        pageSettings.Name       += "_Copy";
                        pageSettings.AbsoluteUrl = null;
                    }
                    ParentPageValue      = pid > 0 && pageSettings.ParentId.HasValue ? pageSettings.ParentId.ToString() : ParentPageValue;
                    SitemapPriorityValue = pid > 0 && pageSettings.SiteMapPriority != Null.NullInteger ? pageSettings.SiteMapPriority.ToString() : SitemapPriorityValue;
                    if (pageSettings.TabId > 0)
                    {
                        Settings.Add("PageUrls", new UIData {
                                Name = "PageUrls", Options = GetCustomUrls(pageSettings.TabId)
                            });
                    }
                    else
                    {
                        Settings.Add("PageUrls", new UIData {
                                Name = "PageUrls", Options = ""
                            });
                    }

                    if (pageSettings.SiteAliases != null)
                    {
                        Settings.Add("SiteAlias", new UIData {
                                Name = "SiteAlias", Options = pageSettings.SiteAliases.Where(x => x.Key == PortalSettings.Current.PortalAlias.PortalAliasID), OptionsText = "Value", OptionsValue = "Key", Value = PortalSettings.Current.PortalAlias.PortalAliasID.ToString()
                            });
                    }

                    Settings.Add("DeletedModules", new UIData {
                            Name = "DeletedModules", Options = Managers.PagesManager.GetAllDeletedModules(pid, PortalSettings.Current.CultureCode)
                        });

                    //disableLink Yes and Display In Menu Yes mean Folder Page
                    if (string.IsNullOrEmpty(pageSettings.PageType))
                    {
                        pageSettings.PageType = "Standard";
                    }

                    pageSettings.PageType   = pageSettings.PageType.ToLower() == "url" ? "URL" : (pageSettings.DisableLink && pageSettings.IncludeInMenu) ? "Folder" : "Standard";
                    pageSettings.AllowIndex = pid > 0 ? pageSettings.AllowIndex : true;

                    string        SiteUrl     = PortalSettings.Current.PortalAlias != null ? PortalSettings.Current.PortalAlias.HTTPAlias : ServiceProvider.NavigationManager.NavigateURL();
                    List <Layout> pageLayouts = Managers.PagesManager.GetLayouts();
                    Settings.Add("PagesTemplate", new UIData {
                            Name = "PagesTemplate", Options = pageSettings
                        });
                    Settings.Add("PageLayouts", new UIData {
                            Name = "PageLayouts", Options = pageLayouts
                        });
                    Settings.Add("Permissions", new UIData {
                            Name = "Permissions", Options = Managers.PagesManager.GetPagePermission(pageSettings, PortalSettings.Current.PortalId)
                        });
                    Settings.Add("ParentPage", new UIData {
                            Name = "ParentPage", Options = Library.Managers.PageManager.GetParentPages(PortalSettings.Current).Select(a => new { a.TabID, a.TabName }), OptionsText = "TabName", OptionsValue = "TabID", Value = ParentPageValue
                        });
                    Settings.Add("SitemapPriority", new UIData {
                            Name = "SitemapPriority", Options = "", OptionsText = "label", OptionsValue = "value", Value = SitemapPriorityValue
                        });
                    Settings.Add("URLType", new UIData {
                            Name = "URLType", Options = Managers.UrlManager.StatusCodes, OptionsText = "Value", OptionsValue = "Key", Value = "200"
                        });
                    Settings.Add("WorkingPageUrls", new UIData {
                            Name = "WorkingPageUrls", Options = new SeoUrl()
                            {
                                SaveUrl = new DotNetNuke.Entities.Urls.SaveUrlDto()
                            }
                        });

                    Settings.Add("ModuleItem", new UIData {
                            Name = "ModuleItem", Options = new Recyclebin.ModuleItem()
                        });
                    Settings.Add("List_ModuleItem", new UIData {
                            Name = "List_ModuleItem", Options = new List <Recyclebin.ModuleItem>()
                        });
                    Settings.Add("DefaultPageTitle", new UIData {
                            Name = "DefaultPageTitle", Value = GetPageTitle(pid, PortalSettings.Current.PortalId)
                        });
                    Settings.Add("SiteUrl", new UIData {
                            Name = "SiteUrl", Value = SiteUrl.EndsWith("/") ? SiteUrl : SiteUrl + "/"
                        });

                    int defaultWorkflow = Core.Managers.WorkflowManager.GetDefaultWorkflow(pageSettings.TabId);
                    Settings.Add("ddlWorkFlows", new UIData {
                            Name = "ddlWorkFlows", Options = Core.Managers.WorkflowManager.GetDDLWorkflow(PortalSettings.Current.PortalId, false), OptionsText = "Text", OptionsValue = "Value", Value = defaultWorkflow.ToString()
                        });
                    Settings.Add("MaxRevisions", new UIData {
                            Name = "MaxRevisions", Value = Core.Managers.WorkflowManager.GetMaxRevisions(pageSettings.TabId).ToString()
                        });
                    Settings.Add("ReplaceTokens", new UIData {
                            Name = "ReplaceTokens", Value = Core.Managers.SettingManager.GetValue(PortalSettings.Current.PortalId, pageSettings.TabId, Identifier, "ReplaceTokens", AppFactory.GetViews()) ?? bool.FalseString
                        });
                    Settings.Add("WorkflowStateInfo", new UIData {
                            Name = "WorkflowStateInfo", Value = Core.Managers.WorkflowManager.GetWorkflowStatesInfo(defaultWorkflow)
                        });

                    DotNetNuke.Services.Localization.Locale DefaultLocale = DotNetNuke.Services.Localization.LocaleController.Instance.GetDefaultLocale(PortalSettings.Current.PortalId);
                    Settings.Add("IsDefaultLocale", new UIData {
                            Name = "IsDefaultLocale", Options = pid > 0 ? DefaultLocale.Code == PortalSettings.Current.CultureCode : true, Value = DefaultLocale.Code
                        });
                    Settings.Add("LocalizedPage", new UIData {
                            Name = "LocalizedPage", Options = Managers.PagesManager.AddDefaultLocalization(pid, pageSettings)
                        });
                    Settings.Add("Languages", new UIData {
                            Name = "Languages", Value = PortalSettings.Current.CultureCode, Options = LocalizationManager.GetActiveLocale(PortalSettings.Current.PortalId).Where(a => a.Value.ToLower() == PortalSettings.Current.CultureCode.ToLower()), OptionsText = "Text", OptionsValue = "Value"
                        });
                }

                return(Settings.Values.ToList());
            }

            case "setting_savetemplateas":
            {
                int pid = 0;
                if (parameters.Count > 0)
                {
                    pid = int.Parse(parameters["pid"]);
                }

                PageSettings pageSettings = new PageSettings();
                pageSettings = pid > 0 ? Managers.PagesManager.GetPageDetails(pid).Data : Managers.PagesManager.GetDefaultSettings();
                Settings.Add("Name", new UIData {
                        Name = "Name", Value = pageSettings.Name
                    });
                Settings.Add("PID", new UIData {
                        Name = "PID", Value = pid.ToString()
                    });
                Settings.Add("Icon", new UIData {
                        Name = "Icon", Value = ""
                    });
                return(Settings.Values.ToList());
            }

            case "setting_recyclebin":
            {
                Settings.Add("DeletedPages", new UIData {
                        Name = "DeletedPages", Options = Managers.PagesManager.GetDeletedPageList().Data
                    });
                return(Settings.Values.ToList());
            }

            case "setting_choosetemplate":
            {
                int          pid = PortalSettings.Current.ActiveTab.TabID;
                bool         HasTabPermission = pid > 0 ? TabPermissionController.HasTabPermission(TabController.Instance.GetTab(pid, PortalSettings.Current.PortalId).TabPermissions, "EDIT") : true;
                PageSettings pageSettings     = new PageSettings();
                pageSettings = pid > 0 ? Managers.PagesManager.GetPageDetails(pid).Data : Managers.PagesManager.GetDefaultSettings();
                List <Layout> pageLayouts = Managers.PagesManager.GetLayouts();
                Settings.Add("HasTabPermission", new UIData {
                        Name = "HasTabPermission", Value = HasTabPermission.ToString()
                    });
                Settings.Add("PagesTemplate", new UIData {
                        Name = "PagesTemplate", Options = pageSettings
                    });
                Settings.Add("PageLayouts", new UIData {
                        Name = "PageLayouts", Options = pageLayouts
                    });
                Settings.Add("DisplayChooseTemplate", new UIData {
                        Name = "DisplayChooseTemplate", Options = (PageManager.GetPages(PortalSettings.Current.ActiveTab.TabID).Count == 0)
                    });
                return(Settings.Values.ToList());
            }

            default:
                return(null);
            }
        }
        protected void Page_Load(object sender, EventArgs e)
        {
            if (Request.QueryString["m2v"] == null)
            {
                m2v = null;
            }
            else
            {
                m2v = Convert.ToBoolean(Request.QueryString["m2v"]);
            }

            if (IsAllowed())
            {
                if (string.IsNullOrEmpty(Request.QueryString["ctl"]) && (string.IsNullOrEmpty(Request.QueryString["icp"]) || Convert.ToBoolean(Request.QueryString["icp"]) == false))
                {
                    if (string.IsNullOrEmpty(Request.QueryString["uxmode"]))
                    {
                        Literal lt = new Literal();
                        IDictionary <string, object> dynObjects = new ExpandoObject() as IDictionary <string, object>;
                        dynObjects.Add("Setting", GetBaseModel());
                        string Template = RazorEngineManager.RenderTemplate("VanjaroUXManager", Page.ResolveUrl("~/DesktopModules/Vanjaro/UXManager/Library/"), "Base", dynObjects);
                        Template = new DNNLocalizationEngine(null, Server.MapPath("~/DesktopModules/Vanjaro/UXManager/Library/App_LocalResources/Shared.resx"), ShowMissingKeys).Parse(Template);
                        lt.Text  = Template;
                        Controls.Add(lt);
                    }

                    string DirectoryPath = System.Web.Hosting.HostingEnvironment.MapPath("~/DesktopModules/Vanjaro/UXManager/Library/Resources/tui/");
                    if (Directory.Exists(DirectoryPath))
                    {
                        foreach (string file in Directory.GetFiles(DirectoryPath))
                        {
                            string FileName = Path.GetFileName(file);
                            if (!string.IsNullOrEmpty(FileName))
                            {
                                if (FileName.EndsWith(".js"))
                                {
                                    WebForms.RegisterClientScriptInclude(Page, FileName.Replace(".", ""), Page.ResolveUrl("~/DesktopModules/Vanjaro/UXManager/Library/Resources/tui/" + FileName), false);
                                }
                                else
                                {
                                    WebForms.LinkCSS(Page, FileName.Replace(".", ""), Page.ResolveUrl("~/DesktopModules/Vanjaro/UXManager/Library/Resources/tui/" + FileName), false);
                                }
                            }
                        }
                    }

                    WebForms.LinkCSS(Page, "UXManagerAppCss", Page.ResolveUrl("~/DesktopModules/Vanjaro/UXManager/Library/Resources/StyleSheets/app.css"));
                    WebForms.LinkCSS(Page, "GrapesJsCss", Page.ResolveUrl("~/DesktopModules/Vanjaro/UXManager/Library/Resources/Scripts/GrapesJs/css/grapes.min.css"));
                    WebForms.LinkCSS(Page, "GrapickJsCss", Page.ResolveUrl("~/DesktopModules/Vanjaro/UXManager/Library/Resources/Scripts/GrapesJs/css/grapick.min.css"));
                    WebForms.RegisterClientScriptInclude(Page, "GrapesJsJs", Page.ResolveUrl("~/DesktopModules/Vanjaro/UXManager/Library/Resources/Scripts/uxmanager.min.js"), false);
                    WebForms.LinkCSS(Page, "GrapesJsPanelCss", Page.ResolveUrl("~/DesktopModules/Vanjaro/UXManager/Library/Resources/Scripts/jsPanel/jspanel.min.css"));
                    WebForms.LinkCSS(Page, "GrapesJspluginCss", Page.ResolveUrl("~/DesktopModules/Vanjaro/UXManager/Library/Resources/Scripts/GrapesJsManagers/css/uxmanager.css"));
                    WebForms.LinkCSS(Page, "FontawesomeV4Css", Page.ResolveUrl("~/DesktopModules/Vanjaro/UXManager/Library/Resources/Scripts/GrapesJs/css/fontawesome/v4.css"));

                    if (!IsAllowed())
                    {
                        WebForms.RegisterClientScriptBlock(Page, "MenuSettingsBlocks", "$(document).ready(function(){$('[href=\"#MenuSettings\"]').click();$('#mode-switcher').remove();setTimeout(function(){$('.gjs-cv-canvas__frames').css('pointer-events','none');}, 100); });", true);
                    }

                    LocalizeGrapeJS();

                    FrameworkManager.Load(this, "FontAwesome");
                }
                string NavigateURL  = PageManager.GetCurrentTabUrl(PortalSettings);
                string ClientScript = "var AppMenus=" + JsonConvert.SerializeObject(AppManager.GetAll(AppType.Module)) + "; var m2vPageTabUrl='" + NavigateURL + "'; var CurrentTabUrl ='" + NavigateURL + "'; var IsAdmin=" + PortalSettings.UserInfo.IsInRole("Administrators").ToString().ToLower() + ";";
                WebForms.RegisterClientScriptBlock(Page, "GrapesJsAppsExts", ClientScript, true);

                if (TabPermissionController.HasTabPermission("EDIT") && !Request.QueryString.AllKeys.Contains("mid"))
                {
                    string OpenPopup = string.Empty;
                    if (m2v.HasValue && !m2v.Value && (Vanjaro.Core.Managers.PageManager.GetPages(PortalSettings.ActiveTab.TabID).Count == 0))
                    {
                        OpenPopup = "#/choosetemplate";
                    }
                    else if (Request.QueryString["m2vsetup"] != null && Request.QueryString["m2vsetup"] == "page")
                    {
                        OpenPopup = "#detail";
                    }

                    if (!string.IsNullOrEmpty(OpenPopup))
                    {
                        NavigateURL = PageManager.GetCurrentTabUrl(PortalSettings, "&mid=0&icp=true&guid=10E56C75-548E-4A10-822E-52E6AA2AB45F" + OpenPopup);
                        WebForms.RegisterStartupScript(Page, "m2v", "<script type=\"text/javascript\" vanjarocore=\"true\">OpenPopUp(event, 800,'right','Choose Template', '" + NavigateURL + "')</script>", false);
                    }
                }
            }
        }
Exemple #19
0
        private void AddModulePanes()
        {
            //Get the Page Markup
            if (!IsAllowed())
            {
                if (FindControlRecursive(this, "ContentPane") == null)
                {
                    Controls.Add(ParseControl("<div id=\"ContentPane\" runat=\"server\" />"));
                }

                BuildPanes();
                return;
            }
            if (string.IsNullOrEmpty(Request.QueryString["ctl"]))
            {
                if (FindControlRecursive(this, "ContentPane") == null)
                {
                    Controls.Add(ParseControl("<div id=\"ContentPane\" runat=\"server\" />"));
                }

                Control ContentPane = FindControlRecursive(this, "ContentPane");

                StringBuilder sb = new StringBuilder();
                page = GetPage();
                if (page != null)
                {
                    InjectStyle(page);
                    if (page.ReplaceTokens)
                    {
                        sb.Append(new TokenReplace().ReplaceEnvironmentTokens(page.Content));
                    }
                    else
                    {
                        sb.Append(page.Content.ToString());
                    }
                }

                if (page != null && page.StateID.HasValue)
                {
                    HasReviewPermission = WorkflowManager.HasReviewPermission(page.StateID.Value, PortalSettings.UserInfo);
                }


                if (TabPermissionController.HasTabPermission("EDIT") || (page != null && page.StateID.HasValue && HasReviewPermission))
                {
                    FrameworkManager.Load(this, "jQuerySweetAlert");
                    FrameworkManager.Load(this, "Toastr");
                }

                if ((TabPermissionController.HasTabPermission("EDIT") || HasReviewPermission))
                {
                    WebForms.RegisterClientScriptBlock(Page, "ReviewGlobalVariable", GetReviewGlobalVariable(PortalSettings, HasReviewPermission), true);
                }

                if (!TabPermissionController.HasTabPermission("EDIT") && HasReviewPermission)
                {
                    FrameworkManager.Load(this, "FontAwesome");
                }

                if (TabPermissionController.HasTabPermission("EDIT"))
                {
                    try
                    {
                        string Fonts = JsonConvert.SerializeObject(Core.Managers.ThemeManager.GetDDLFonts("all"));
                        WebForms.RegisterClientScriptBlock(Page, "VJThemeFonts", "var VJFonts=" + Fonts + ";", true);
                    }
                    catch (Exception) { }
                }


                HtmlDocument html = new HtmlDocument();
                html.LoadHtml(sb.ToString());
                InjectBlocks(page, html);

                string ClassName = "vj-wrapper";
                if (!string.IsNullOrEmpty(Request.QueryString["m2v"]) && string.IsNullOrEmpty(Request.QueryString["pv"]))
                {
                    ClassName += " m2vDisplayNone";
                }
                ContentPane.Controls.Add(ParseControl("<div class=\"" + ClassName + "\"><div id=\"VjContentPane\">" + InjectModules(html.DocumentNode.OuterHtml) + "</div></div>"));
                InjectLoginAuthentication();
            }
            else
            {
                string FolderPath = HttpContext.Current.Server.MapPath("~/Portals/_default/vThemes/" + Core.Managers.ThemeManager.GetCurrentThemeName() + "/Layout.Edit.html");
                string Content    = System.IO.File.ReadAllText(FolderPath);
                Controls.Add(ParseControl(Content));
            }
            BuildPanes();
        }
 private bool IsAllowed()
 {
     if (PortalSettings.UserId > 0 && TabPermissionController.CanViewPage() && (TabPermissionController.HasTabPermission("EDIT") || MenuManager.GetExtentions().Count > 0))
     {
         return(true);
     }
     else
     {
         return(false);
     }
 }
 /// <summary>
 /// Sets the visibility.
 /// </summary>
 private void SetVisibility()
 {
     this.Visible = this.IsAdmin;
     this.ModuleSettingsItem.Visible = TabPermissionController.HasTabPermission("EDIT");
 }
Exemple #22
0
        /// <summary>
        /// Gets an instance of the Employment module with the given <paramref name="moduleDefinition"/> and <paramref name="jobGroupId"/> which can be viewed by the current user.
        /// </summary>
        /// <param name="portalSettings">The portal id.</param>
        /// <param name="moduleDefinition">The module definition.</param>
        /// <param name="jobGroupId">ID of the Job Group displayed on the module.</param>
        /// <returns>A non-deleted <see cref="ModuleInfo"/> with the given <paramref name="moduleDefinition"/>, or null if none exists.</returns>
        public static ModuleInfo GetCurrentModuleByDefinition(PortalSettings portalSettings, ModuleDefinition moduleDefinition, int?jobGroupId)
        {
            var moduleController = new ModuleController();
            var tabController    = new TabController();

// GetModulesByDefinition's obsolete status was rescinded after DNN 5.0
#pragma warning disable 618

            return((from ModuleInfo module in moduleController.GetModulesByDefinition(portalSettings.PortalId, moduleDefinition.ToString())
                    where !module.IsDeleted && PortalSecurity.HasNecessaryPermission(SecurityAccessLevel.View, portalSettings, module)
                    let moduleJobGroupSetting = ModuleSettings.JobGroupId.GetValueAsInt32For(EmploymentController.DesktopModuleName, module, ModuleSettings.JobGroupId.DefaultValue)
                                                let tab = tabController.GetTab(module.TabID, portalSettings.PortalId, false)
                                                          where tab != null && !tab.IsDeleted && TabPermissionController.HasTabPermission(tab.TabPermissions, "VIEW") && (jobGroupId.Equals(moduleJobGroupSetting) || moduleJobGroupSetting == null)
                                                          orderby !jobGroupId.Equals(moduleJobGroupSetting), moduleJobGroupSetting != null // false then true (i.e. job groups are equal *first*, then module's job group is null)
                    select module).FirstOrDefault());

#pragma warning restore 618
        }
Exemple #23
0
 public bool HasTabPermission(string PermissionKey)
 {
     return(TabPermissionController.HasTabPermission(PortalSettings.ActiveTab.TabPermissions, PermissionKey));
 }
 /// <summary>
 /// Sets the visibility.
 /// </summary>
 private void SetVisibility()
 {
     this.SettingsLink.Visible = TabPermissionController.HasTabPermission("EDIT");
     this.HostLink.Visible     = this.UserInfo.IsSuperUser;
 }