Exemple #1
0
        private static HtmlBuilder NavigationMenu(
            this HtmlBuilder hb,
            Context context,
            SiteSettings ss,
            long siteId,
            string referenceType)
        {
            var canManageGroups        = context.UserSettings?.DisableGroupAdmin != true;
            var canManageSite          = siteId != 0 && context.CanManageSite(ss: ss, site: true);
            var canManageDepts         = Permissions.CanManageTenant(context: context);
            var canManageUsers         = Permissions.CanManageTenant(context: context);
            var canManageRegistrations = Permissions.CanManageRegistrations(context: context);
            var canManageTenants       = Permissions.CanManageTenant(context: context) ||
                                         context.UserSettings?.EnableManageTenant == true;
            var canManageTrashBox = CanManageTrashBox(context: context, ss: ss);

            return(hb.Ul(
                       id: "NavigationMenu",
                       action: () => hb
                       .Li(
                           id: "NewMenuContainer",
                           action: () => hb
                           .Div(action: () => hb
                                .A(
                                    href: NewHref(
                                        context: context,
                                        ss: ss),
                                    attributes: SiteIndex(
                                        context: context,
                                        ss: ss)
                                        ? new HtmlAttributes()
                                    .OnClick("$p.templates($(this));")
                                    .DataAction("Templates")
                                    .DataMethod("post")
                                        : null,
                                    action: () => hb
                                    .Span(css: "ui-icon ui-icon-plus")
                                    .Text(text: Displays.New(context: context)))),
                           _using: ss.ReferenceType == "Sites" && context.Action == "index"
                            ? context.CanManageSite(ss: ss)
                            : context.CanCreate(ss: ss) &&
                           ss.ReferenceType != "Wikis" &&
                           context.Action != "trashbox")
                       .Li(
                           id: "ViewModeMenuContainer",
                           css: "sub-menu",
                           action: () => hb
                           .Div(
                               attributes: new HtmlAttributes().DataId("ViewModeMenu"),
                               action: () => hb
                               .Span(css: "ui-icon ui-icon-triangle-1-e")
                               .Text(text: Displays.View(context: context)))
                           .ViewModeMenu(
                               context: context,
                               ss: ss),
                           _using: Def.ViewModeDefinitionCollection
                           .Any(o => o.ReferenceType == referenceType))
                       .Li(
                           id: "SettingsMenuContainer",
                           css: "sub-menu",
                           action: () => hb
                           .Div(
                               attributes: new HtmlAttributes().DataId("SettingsMenu"),
                               action: () => hb
                               .Span(css: "ui-icon ui-icon-gear")
                               .Text(text: Displays.Manage(context: context)))
                           .SettingsMenu(
                               context: context,
                               ss: ss,
                               siteId: siteId,
                               canManageSite: canManageSite,
                               canManageDepts: canManageDepts,
                               canManageGroups: canManageGroups,
                               canManageUsers: canManageUsers,
                               canManageRegistrations: canManageRegistrations,
                               canManageTenants: canManageTenants,
                               canManageTrashBox: canManageTrashBox),
                           _using:
                           canManageSite ||
                           canManageDepts ||
                           canManageGroups ||
                           canManageUsers)
                       .Li(
                           id: "HelpMenuContainer",
                           css: "sub-menu",
                           action: () => hb
                           .Div(
                               attributes: new HtmlAttributes().DataId("HelpMenu"),
                               action: () => hb
                               .Span(css: "ui-icon ui-icon-help")
                               .Text(text: Displays.HelpMenu(context: context)))
                           .HelpMenu(context: context))
                       .Li(
                           id: "AccountMenuContainer",
                           css: "sub-menu",
                           action: () => hb
                           .Div(
                               attributes: new HtmlAttributes()
                               .DataId("AccountMenu")
                               .Id("AccountUserName"),
                               action: () => hb
                               .Span(css: "ui-icon ui-icon-person")
                               .Text(text: SiteInfo.UserName(
                                         context: context,
                                         userId: context.UserId)))
                           .AccountMenu(context: context))));
        }
        private static bool Using(
            Context context,
            SiteSettings ss,
            string referenceType,
            long siteId,
            NavigationMenu menu)
        {
            var canManageGroups = context.UserSettings?.AllowGroupAdministration(context: context) == true;
            var canCreateGroups = context.UserSettings?.AllowGroupCreation(context: context) == true;
            var canManageSite   = siteId != 0 && context.CanManageSite(
                ss: ss,
                site: true);
            var canManageDepts         = Permissions.CanManageTenant(context: context);
            var canManageUsers         = Permissions.CanManageUser(context: context);
            var canManageRegistrations = Permissions.CanManageRegistrations(context: context);
            var canManageTenants       = Permissions.CanManageTenant(context: context) ||
                                         context.UserSettings?.EnableManageTenant == true;
            var canManageTrashBox = CanManageTrashBox(
                context: context,
                ss: ss);
            var canUseApi     = context.UserSettings?.AllowApi(context: context) == true;
            var canUnlockSite = ss.LockedTable() &&
                                ss.LockedTableUser.Id == context.UserId;

            switch (menu.MenuId)
            {
            case "NewMenu":
                return(ss.ReferenceType == "Sites" && context.Action == "index"
                        ? context.CanManageSite(ss: ss)
                        : ss.ReferenceType == "Groups"
                            ? canCreateGroups
                            : context.CanCreate(ss: ss) &&
                       ss.ReferenceType != "Wikis" &&
                       context.Action != "trashbox");

            case "ViewModeMenu":
                return(Def.ViewModeDefinitionCollection
                       .Any(o => o.ReferenceType == referenceType));

            case "SettingsMenu":
                return(canManageSite ||
                       canManageDepts ||
                       canManageGroups ||
                       canManageUsers ||
                       canUnlockSite);

            case "SettingsMenu_SiteSettings":
                return(canManageSite);

            case "SettingsMenu_DeptAdmin":
                return(canManageDepts);

            case "SettingsMenu_GroupAdmin":
                return(canManageGroups);

            case "SettingsMenu_UserAdmin":
                return(canManageUsers);

            case "SettingsMenu_Registrations":
                return(canManageRegistrations);

            case "SettingsMenu_TrashBox":
                return(canManageTrashBox);

            case "SettingsMenu_TenantAdmin":
                return(canManageTenants);

            case "SettingsMenu_ImportSitePackage":
                return(Parameters.SitePackage.Import &&
                       canManageSite &&
                       ss.IsSite(context: context) &&
                       ss.ReferenceType == "Sites" ||
                       (context.Controller == "items" &&
                        ss.SiteId == 0 &&
                        context.UserSettings?.AllowCreationAtTopSite(context: context) == true));

            case "SettingsMenu_ExportSitePackage":
                return(Parameters.SitePackage.Export &&
                       canManageSite &&
                       ss.IsSite(context: context));

            case "AccountMenu_ShowStartGuide":
                return(context.UserSettings?.ShowStartGuideAvailable(context: context) == true);

            case "AccountMenu_EditProfile":
                return(Parameters.Service.ShowProfiles);

            case "AccountMenu_ChangePassword":
                return(Parameters.Service.ShowChangePassword);

            case "AccountMenu_ApiSettings":
                return(Parameters.Api.Enabled &&
                       context.ContractSettings.Api != false &&
                       canUseApi);

            case "LockTableMenu_LockTable":
            case "LockTableMenu_ForceUnlockTable":
                return(canManageSite &&
                       ss.AllowLockTable == true);

            case "LockTableMenu_UnlockTable":
                return(ss.AllowLockTable == true);

            case "AccountMenu_Responsive":
                return(context.Mobile);

            default:
                return(true);
            }
        }