Exemple #1
0
        protected string BuildToolUrl(string toolName, bool isHostTool, string moduleFriendlyName,
                                      string controlKey, string navigateUrl, bool showAsPopUp)
        {
            if (isHostTool && !UserController.Instance.GetCurrentUserInfo().IsSuperUser)
            {
                return("javascript:void(0);");
            }

            if (!string.IsNullOrEmpty(navigateUrl))
            {
                return(navigateUrl);
            }

            string returnValue = "javascript:void(0);";

            switch (toolName)
            {
            case "PageSettings":
                if (TabPermissionController.CanManagePage())
                {
                    returnValue = _navigationManager.NavigateURL(PortalSettings.ActiveTab.TabID, "Tab", "action=edit&activeTab=settingTab");
                }
                break;

            case "CopyPage":
                if (TabPermissionController.CanCopyPage())
                {
                    returnValue = _navigationManager.NavigateURL(PortalSettings.ActiveTab.TabID, "Tab", "action=copy&activeTab=copyTab");
                }
                break;

            case "DeletePage":
                if (TabPermissionController.CanDeletePage())
                {
                    returnValue = _navigationManager.NavigateURL(PortalSettings.ActiveTab.TabID, "Tab", "action=delete");
                }
                break;

            case "PageTemplate":
                if (TabPermissionController.CanManagePage())
                {
                    returnValue = _navigationManager.NavigateURL(PortalSettings.ActiveTab.TabID, "Tab", "action=edit&activeTab=advancedTab");
                }
                break;

            case "PageLocalization":
                if (TabPermissionController.CanManagePage())
                {
                    returnValue = _navigationManager.NavigateURL(PortalSettings.ActiveTab.TabID, "Tab", "action=edit&activeTab=localizationTab");
                }
                break;

            case "PagePermission":
                if (TabPermissionController.CanAdminPage())
                {
                    returnValue = _navigationManager.NavigateURL(PortalSettings.ActiveTab.TabID, "Tab", "action=edit&activeTab=permissionsTab");
                }
                break;

            case "ImportPage":
                if (TabPermissionController.CanImportPage())
                {
                    returnValue = _navigationManager.NavigateURL(PortalSettings.ActiveTab.TabID, "ImportTab");
                }
                break;

            case "ExportPage":
                if (TabPermissionController.CanExportPage())
                {
                    returnValue = _navigationManager.NavigateURL(PortalSettings.ActiveTab.TabID, "ExportTab");
                }
                break;

            case "NewPage":
                if (TabPermissionController.CanAddPage())
                {
                    returnValue = _navigationManager.NavigateURL("Tab", "activeTab=settingTab");
                }
                break;

            case "PublishPage":
                if (TabPermissionController.CanAdminPage())
                {
                    returnValue = _navigationManager.NavigateURL(PortalSettings.ActiveTab.TabID);
                }
                break;

            default:
                if (!string.IsNullOrEmpty(moduleFriendlyName))
                {
                    var additionalParams = new List <string>();
                    returnValue = GetTabURL(additionalParams, toolName, isHostTool,
                                            moduleFriendlyName, controlKey, showAsPopUp);
                }
                break;
            }
            return(returnValue);
        }
 public virtual bool CanAddPage(int tabId)
 {
     return(this.CanAdminPage(tabId) || TabPermissionController.CanAddPage(this.GetTabById(tabId)));
 }
        protected virtual bool HasToolPermissions(string toolName)
        {
            bool isHostTool = false;

            if ((ToolInfo.ToolName == toolName))
            {
                isHostTool = ToolInfo.IsHostTool;
            }
            else if ((AllTools.ContainsKey(toolName)))
            {
                isHostTool = AllTools[toolName].IsHostTool;
            }

            if ((isHostTool && !UserController.Instance.GetCurrentUserInfo().IsSuperUser))
            {
                return(false);
            }

            bool returnValue = true;

            switch (toolName)
            {
            case "PageSettings":
            case "CopyDesignToChildren":
            case "CopyPermissionsToChildren":
                returnValue = TabPermissionController.CanManagePage();

                if ((returnValue && toolName == "CopyPermissionsToChildren"))
                {
                    if ((!PortalSecurity.IsInRole("Administrators")))
                    {
                        returnValue = false;
                    }
                }
                break;

            case "CopyPage":
                returnValue = TabPermissionController.CanCopyPage();
                break;

            case "DeletePage":
                returnValue = (TabPermissionController.CanDeletePage());
                break;

            case "ImportPage":
                returnValue = TabPermissionController.CanImportPage();
                break;

            case "ExportPage":
                returnValue = TabPermissionController.CanExportPage();
                break;

            case "NewPage":
                returnValue = TabPermissionController.CanAddPage();
                break;

            case "Help":
                returnValue = !string.IsNullOrEmpty(Host.HelpURL);
                break;

            default:
                //if it has a module definition, look it up and check permissions
                //if it doesn't exist, assume no permission
                string friendlyName = "";
                if ((ToolInfo.ToolName == toolName))
                {
                    friendlyName = ToolInfo.ModuleFriendlyName;
                }
                else if ((AllTools.ContainsKey(toolName)))
                {
                    friendlyName = AllTools[toolName].ModuleFriendlyName;
                }

                if ((!string.IsNullOrEmpty(friendlyName)))
                {
                    returnValue = false;
                    ModuleInfo moduleInfo;

                    if ((isHostTool))
                    {
                        moduleInfo = GetInstalledModule(Null.NullInteger, friendlyName);
                    }
                    else
                    {
                        moduleInfo = GetInstalledModule(PortalSettings.PortalId, friendlyName);
                    }

                    if ((moduleInfo != null))
                    {
                        returnValue = ModulePermissionController.CanViewModule(moduleInfo);
                    }
                }
                break;
            }

            return(returnValue);
        }
 /// <summary>
 /// Checks if current user is page admin of the currentpage
 /// </summary>
 /// <returns>Returns true if current user has any admin permission. Otherwise returns false</returns>
 public static bool IsPageAdmin()
 {
     return(TabPermissionController.CanAddContentToPage() || TabPermissionController.CanAddPage() || TabPermissionController.CanAdminPage() || TabPermissionController.CanCopyPage() ||
            TabPermissionController.CanDeletePage() || TabPermissionController.CanExportPage() || TabPermissionController.CanImportPage() || TabPermissionController.CanManagePage());
 }
        public TabDto GetPortalTabs(UserInfo userInfo, int portalId, string cultureCode, bool isMultiLanguage, bool excludeAdminTabs = true,
                                    string roles      = "", bool disabledNotSelectable = false, int sortOrder      = 0,
                                    int selectedTabId = -1, string validateTab         = "", bool includeHostPages = false, bool includeDisabled = false, bool includeDeleted = false, bool includeDeletedChildren = true)
        {
            var portalInfo = PortalController.Instance.GetPortal(portalId);

            var rootNode = new TabDto
            {
                Name        = portalInfo.PortalName,
                ImageUrl    = IconPortal,
                TabId       = Null.NullInteger.ToString(CultureInfo.InvariantCulture),
                ChildTabs   = new List <TabDto>(),
                HasChildren = true
            };
            var tabs = new List <TabInfo>();

            cultureCode = string.IsNullOrEmpty(cultureCode) ? portalInfo.CultureCode : cultureCode;
            if (portalId > -1)
            {
                tabs =
                    TabController.GetPortalTabs(
                        isMultiLanguage
                            ? TabController.GetTabsBySortOrder(portalId, portalInfo.DefaultLanguage, true)
                            : TabController.GetTabsBySortOrder(portalId, cultureCode, true), Null.NullInteger, false,
                        "<" + Localization.GetString("None_Specified") + ">", true, includeDeleted, true, false, false, includeDeletedChildren)
                    .Where(t => (!t.DisableLink || includeDisabled) && !t.IsSystem)
                    .ToList();

                if (userInfo.IsSuperUser && includeHostPages)
                {
                    tabs.AddRange(
                        TabController.Instance.GetTabsByPortal(-1)
                        .AsList()
                        .Where(t => !t.IsDeleted && !t.DisableLink && !t.IsSystem)
                        .ToList());
                }
            }
            else
            {
                if (userInfo.IsSuperUser)
                {
                    tabs = TabController.Instance.GetTabsByPortal(-1).AsList().Where(t => !t.IsDeleted && !t.DisableLink && !t.IsSystem).ToList();
                }
            }

            tabs = excludeAdminTabs
                ? tabs.Where(tab => tab.Level == 0 && tab.TabID != portalInfo.AdminTabId).ToList()
                : tabs.Where(tab => tab.Level == 0).ToList();

            if (!string.IsNullOrEmpty(validateTab))
            {
                tabs = ValidateModuleInTab(tabs, validateTab).ToList();
            }
            var filterTabs = FilterTabsByRole(tabs, roles, disabledNotSelectable);

            rootNode.HasChildren = tabs.Count > 0;
            rootNode.Selectable  = SecurityService.Instance.IsPagesAdminUser();
            foreach (var tab in tabs)
            {
                string tooltip;
                var    nodeIcon = GetNodeIcon(tab, out tooltip);
                var    node     = new TabDto
                {
                    Name        = tab.LocalizedTabName, //$"{tab.TabName} {GetNodeStatusIcon(tab)}",
                    TabId       = tab.TabID.ToString(CultureInfo.InvariantCulture),
                    ImageUrl    = nodeIcon,
                    Tooltip     = tooltip,
                    ParentTabId = tab.ParentId,
                    HasChildren = tab.HasChildren,
                    Selectable  = filterTabs.Contains(tab.TabID) && TabPermissionController.CanAddPage(tab),
                    ChildTabs   = new List <TabDto>()
                };
                rootNode.ChildTabs.Add(node);
            }
            rootNode.ChildTabs = ApplySort(rootNode.ChildTabs, sortOrder).ToList();

            return(selectedTabId > -1
                ? MarkSelectedTab(rootNode, selectedTabId, portalInfo, cultureCode, isMultiLanguage, validateTab)
                : rootNode);
        }
        public TabDto SearchPortalTabs(UserInfo userInfo, string searchText, int portalId, string roles = "", bool disabledNotSelectable = false, int sortOrder = 0, string validateTab = "", bool includeHostPages = false, bool includeDisabled = false, bool includeDeleted = false)
        {
            var rootNode = new TabDto
            {
                Name        = PortalSettings.PortalName,
                ImageUrl    = IconPortal,
                TabId       = Null.NullInteger.ToString(CultureInfo.InvariantCulture),
                ChildTabs   = new List <TabDto>(),
                HasChildren = true
            };
            Func <TabInfo, bool> searchFunc;

            if (string.IsNullOrEmpty(searchText))
            {
                searchFunc = page => true;
            }
            else
            {
                searchFunc =
                    page => page.LocalizedTabName.IndexOf(searchText, StringComparison.InvariantCultureIgnoreCase) > -1;
            }
            var tabs = new List <TabInfo>();

            if (portalId > -1)
            {
                tabs =
                    TabController.Instance.GetTabsByPortal(portalId)
                    .Where(
                        tab =>
                        (includeDisabled || !tab.Value.DisableLink) &&
                        (includeDeleted || !tab.Value.IsDeleted) &&
                        (tab.Value.TabType == TabType.Normal) &&
                        searchFunc(tab.Value) &&
                        !tab.Value.IsSystem)
                    .Select(tab => tab.Value).ToList();

                if (userInfo.IsSuperUser && includeHostPages)
                {
                    tabs.AddRange(TabController.Instance.GetTabsByPortal(-1).Where(tab => !tab.Value.DisableLink && searchFunc(tab.Value) && !tab.Value.IsSystem)
                                  .OrderBy(tab => tab.Value.TabOrder)
                                  .Select(tab => tab.Value)
                                  .ToList());
                }
            }
            else
            {
                if (userInfo.IsSuperUser)
                {
                    tabs = TabController.Instance.GetTabsByPortal(-1).Where(tab => !tab.Value.DisableLink && searchFunc(tab.Value) && !tab.Value.IsSystem)
                           .OrderBy(tab => tab.Value.TabOrder)
                           .Select(tab => tab.Value)
                           .ToList();
                }
            }

            var filterTabs = FilterTabsByRole(tabs, roles, disabledNotSelectable);

            rootNode.HasChildren = tabs.Any();
            rootNode.Selectable  = SecurityService.Instance.IsPagesAdminUser();
            foreach (var tab in tabs)
            {
                string tooltip;
                var    nodeIcon = GetNodeIcon(tab, out tooltip);
                var    node     = new TabDto
                {
                    Name        = tab.LocalizedTabName,
                    TabId       = tab.TabID.ToString(CultureInfo.InvariantCulture),
                    ImageUrl    = nodeIcon,
                    ParentTabId = tab.ParentId,
                    HasChildren = false,
                    Selectable  = filterTabs.Contains(tab.TabID) && TabPermissionController.CanAddPage(tab)
                };
                rootNode.ChildTabs.Add(node);
            }
            rootNode.ChildTabs = ApplySort(rootNode.ChildTabs, sortOrder).ToList();
            if (!string.IsNullOrEmpty(validateTab))
            {
                rootNode.ChildTabs = ValidateModuleInTab(rootNode.ChildTabs, validateTab).ToList();
            }
            return(rootNode);
        }
Exemple #7
0
        protected override void OnLoad(EventArgs e)
        {
            base.OnLoad(e);

            imgAddModule.Click                 += imgAddModule_Click;
            optMode.SelectedIndexChanged       += optMode_SelectedIndexChanged;
            optModuleType.SelectedIndexChanged += optModuleType_SelectedIndexChanged;
            cboTabs.SelectedIndexChanged       += cboTabs_SelectedIndexChanged;
            cmdVisibility.Click                += cmdVisibility_Click;
            cboPanes.SelectedIndexChanged      += cboPanes_SelectedIndexChanged;
            cboPosition.SelectedIndexChanged   += cboPosition_SelectedIndexChanged;
            imgAdmin.Click     += imgAdmin_Click;
            cmdAdmin.Click     += cmdAdmin_Click;
            imgHost.Click      += imgHost_Click;
            cmdHost.Click      += cmdHost_Click;
            cmdAddModule.Click += AddModule_Click;

            cmdAddTab.Click        += PageFunctions_Click;
            cmdAddTabIcon.Click    += PageFunctions_Click;
            cmdEditTab.Click       += PageFunctions_Click;
            cmdEditTabIcon.Click   += PageFunctions_Click;
            cmdDeleteTab.Click     += PageFunctions_Click;
            cmdDeleteTabIcon.Click += PageFunctions_Click;
            cmdCopyTab.Click       += PageFunctions_Click;
            cmdCopyTabIcon.Click   += PageFunctions_Click;
            cmdExportTab.Click     += PageFunctions_Click;
            cmdExportTabIcon.Click += PageFunctions_Click;
            cmdImportTab.Click     += PageFunctions_Click;
            cmdImportTabIcon.Click += PageFunctions_Click;

            cmdExtensions.Click     += CommonTasks_Click;
            cmdExtensionsIcon.Click += CommonTasks_Click;
            cmdFiles.Click          += CommonTasks_Click;
            cmdFilesIcon.Click      += CommonTasks_Click;
            cmdRoles.Click          += CommonTasks_Click;
            cmdRolesIcon.Click      += CommonTasks_Click;
            cmdSite.Click           += CommonTasks_Click;
            cmdSiteIcon.Click       += CommonTasks_Click;
            cmdUsers.Click          += CommonTasks_Click;
            cmdUsersIcon.Click      += CommonTasks_Click;

            try
            {
                if (IsPageAdmin())
                {
                    tblControlPanel.Visible = true;
                    cmdVisibility.Visible   = true;
                    rowControlPanel.Visible = true;

                    Localize();

                    if (Globals.IsAdminControl())
                    {
                        cmdAddModule.Enabled = false;
                    }
                    if (!Page.IsPostBack)
                    {
                        optModuleType.Items.FindByValue("0").Selected = true;

                        if (!TabPermissionController.CanAddPage())
                        {
                            DisableAction(imgAddTabIcon, "iconbar_addtab_bw.gif", cmdAddTabIcon, cmdAddTab);
                        }
                        if (!TabPermissionController.CanManagePage())
                        {
                            DisableAction(imgEditTabIcon, "iconbar_edittab_bw.gif", cmdEditTabIcon, cmdEditTab);
                        }
                        if (!TabPermissionController.CanDeletePage() || TabController.IsSpecialTab(TabController.CurrentPage.TabID, PortalSettings))
                        {
                            DisableAction(imgDeleteTabIcon, "iconbar_deletetab_bw.gif", cmdDeleteTabIcon, cmdDeleteTab);
                        }
                        else
                        {
                            ClientAPI.AddButtonConfirm(cmdDeleteTab, Localization.GetString("DeleteTabConfirm", LocalResourceFile));
                            ClientAPI.AddButtonConfirm(cmdDeleteTabIcon, Localization.GetString("DeleteTabConfirm", LocalResourceFile));
                        }
                        if (!TabPermissionController.CanCopyPage())
                        {
                            DisableAction(imgCopyTabIcon, "iconbar_copytab_bw.gif", cmdCopyTabIcon, cmdCopyTab);
                        }
                        if (!TabPermissionController.CanExportPage())
                        {
                            DisableAction(imgExportTabIcon, "iconbar_exporttab_bw.gif", cmdExportTabIcon, cmdExportTab);
                        }
                        if (!TabPermissionController.CanImportPage())
                        {
                            DisableAction(imgImportTabIcon, "iconbar_importtab_bw.gif", cmdImportTabIcon, cmdImportTab);
                        }
                        if (!TabPermissionController.CanAddContentToPage())
                        {
                            pnlModules.Visible = false;
                        }
                        if (!GetModulePermission(PortalSettings.PortalId, "Site Settings"))
                        {
                            DisableAction(imgSiteIcon, "iconbar_site_bw.gif", cmdSiteIcon, cmdSite);
                        }
                        if (GetModulePermission(PortalSettings.PortalId, "User Accounts") == false)
                        {
                            DisableAction(imgUsersIcon, "iconbar_users_bw.gif", cmdUsersIcon, cmdUsers);
                        }
                        if (GetModulePermission(PortalSettings.PortalId, "Security Roles") == false)
                        {
                            DisableAction(imgRolesIcon, "iconbar_roles_bw.gif", cmdRolesIcon, cmdRoles);
                        }
                        if (GetModulePermission(PortalSettings.PortalId, "Digital Asset Management") == false)
                        {
                            DisableAction(imgFilesIcon, "iconbar_files_bw.gif", cmdFilesIcon, cmdFiles);
                        }
                        if (GetModulePermission(PortalSettings.PortalId, "Extensions") == false)
                        {
                            DisableAction(imgExtensionsIcon, "iconbar_extensions_bw.gif", cmdExtensionsIcon, cmdExtensions);
                        }
                        UserInfo objUser = UserController.GetCurrentUserInfo();
                        if (objUser != null)
                        {
                            if (objUser.IsSuperUser)
                            {
                                hypMessage.ImageUrl = Upgrade.UpgradeIndicator(DotNetNukeContext.Current.Application.Version, Request.IsLocal, Request.IsSecureConnection);
                                if (!String.IsNullOrEmpty(hypMessage.ImageUrl))
                                {
                                    hypMessage.ToolTip     = Localization.GetString("hypUpgrade.Text", LocalResourceFile);
                                    hypMessage.NavigateUrl = Upgrade.UpgradeRedirect();
                                }
                                cmdHost.Visible = true;
                            }
                            else //branding
                            {
                                if (PortalSecurity.IsInRole(PortalSettings.AdministratorRoleName) && Host.DisplayCopyright)
                                {
                                    hypMessage.ImageUrl    = "~/images/branding/iconbar_logo.png";
                                    hypMessage.ToolTip     = DotNetNukeContext.Current.Application.Description;
                                    hypMessage.NavigateUrl = Localization.GetString("hypMessageUrl.Text", LocalResourceFile);
                                }
                                else
                                {
                                    hypMessage.Visible = false;
                                }
                                cmdHost.Visible  = false;
                                cmdAdmin.Visible = GetModulePermission(PortalSettings.PortalId, "Console");
                            }
                            imgHost.Visible  = cmdHost.Visible;
                            imgAdmin.Visible = cmdAdmin.Visible;
                        }
                        BindData();
                        int intItem;
                        for (intItem = 0; intItem <= PortalSettings.ActiveTab.Panes.Count - 1; intItem++)
                        {
                            cboPanes.Items.Add(Convert.ToString(PortalSettings.ActiveTab.Panes[intItem]));
                        }
                        if (cboPanes.Items.FindByValue(Globals.glbDefaultPane) != null)
                        {
                            cboPanes.Items.FindByValue(Globals.glbDefaultPane).Selected = true;
                        }
                        if (cboPermission.Items.Count > 0)
                        {
                            cboPermission.SelectedIndex = 0; //view
                        }
                        LoadPositions();

                        if (!string.IsNullOrEmpty(Host.HelpURL))
                        {
                            var version = Globals.FormatVersion(DotNetNukeContext.Current.Application.Version, false);
                            cmdHelp.NavigateUrl     = Globals.FormatHelpUrl(Host.HelpURL, PortalSettings, version);
                            cmdHelpIcon.NavigateUrl = cmdHelp.NavigateUrl;
                            cmdHelp.Enabled         = true;
                            cmdHelpIcon.Enabled     = true;
                        }
                        else
                        {
                            cmdHelp.Enabled     = false;
                            cmdHelpIcon.Enabled = false;
                        }
                        SetMode(false);
                        SetVisibility(false);
                    }

                    //Register jQuery
                    jQuery.RequestRegistration();
                }
                else if (IsModuleAdmin())
                {
                    tblControlPanel.Visible = true;
                    cmdVisibility.Visible   = false;
                    rowControlPanel.Visible = false;
                    if (!Page.IsPostBack)
                    {
                        SetMode(false);
                        SetVisibility(false);
                    }
                }
                else
                {
                    tblControlPanel.Visible = false;
                }
            }
            catch (Exception exc) //Module failed to load
            {
                Exceptions.ProcessModuleLoadException(this, exc);
            }
        }