Esempio n. 1
0
        public static PromptModuleInfo FromDnnModuleInfo(ModuleInfo dnnModule, bool?deleted = null)
        {
            var mim = new PromptModuleInfo
            {
                ModuleId     = dnnModule.ModuleID,
                Title        = dnnModule.ModuleTitle,
                FriendlyName = dnnModule.DesktopModule.FriendlyName,
                ModuleName   = dnnModule.DesktopModule.ModuleName,
                TabModuleId  = dnnModule.TabModuleID,
                ModuleDefId  = dnnModule.ModuleDefID
            };

            // assign command links
            mim.__ModuleId   = $"get-module {mim.ModuleId}";
            mim.__ModuleName = $"list-modules --name '{mim.ModuleName}' --all";

            // get a list of all pages this module is added to
            var addedTo = ModuleController.Instance.GetTabModulesByModule(mim.ModuleId);

            if (deleted.HasValue)
            {
                addedTo = addedTo.Where(x => x.IsDeleted == deleted.Value).ToList();
            }

            var sbAddedTo = new StringBuilder();

            foreach (var modInfo in addedTo)
            {
                if (sbAddedTo.Length > 0)
                {
                    sbAddedTo.Append(", ");
                }
                sbAddedTo.Append(modInfo.TabID);
            }
            mim.AddedToPages = sbAddedTo.ToString();
            return(mim);
        }
Esempio n. 2
0
        /// <inheritdoc/>
        public override IConsoleResultModel Run()
        {
            var max = this.Max <= 0 ? 10 : (this.Max > 500 ? 500 : this.Max);

            int total;
            var portalDesktopModules = DesktopModuleController.GetPortalDesktopModules(this.PortalId);

            var pageIndex = (this.Page > 0 ? this.Page - 1 : 0);

            pageIndex = pageIndex < 0 ? 0 : pageIndex;
            var pageSize = this.Max;

            pageSize         = pageSize > 0 && pageSize <= 100 ? pageSize : 10;
            this.ModuleName  = this.ModuleName?.Replace("*", "");
            this.ModuleTitle = this.ModuleTitle?.Replace("*", "");
            var modules = ModuleController.Instance.GetModules(this.PortalSettings.PortalId)
                          .Cast <ModuleInfo>().Where(ModulePermissionController.CanViewModule);

            if (!string.IsNullOrEmpty(this.ModuleName))
            {
                modules = modules.Where(module => module.DesktopModule.ModuleName.IndexOf(this.ModuleName, StringComparison.OrdinalIgnoreCase) >= 0);
            }
            if (!string.IsNullOrEmpty(this.ModuleTitle))
            {
                modules = modules.Where(module => module.ModuleTitle.IndexOf(this.ModuleTitle, StringComparison.OrdinalIgnoreCase) >= 0);
            }

            // Return only deleted modules with matching criteria.
            if (this.PageId.HasValue && this.PageId.Value > 0)
            {
                modules = modules.Where(x => x.TabID == this.PageId.Value);
            }
            if (this.Deleted.HasValue)
            {
                modules = modules.Where(module => module.IsDeleted == this.Deleted);
            }

            // Get distincts.
            modules = modules.GroupBy(x => x.ModuleID).Select(group => group.First()).OrderBy(x => x.ModuleID);
            var moduleInfos = modules as IList <ModuleInfo> ?? modules.ToList();

            total   = moduleInfos.Count;
            modules = moduleInfos.Skip(pageIndex * pageSize).Take(pageSize)
                      .Where(m =>
            {
                var moduleDefinition = ModuleDefinitionController.GetModuleDefinitionByID(m.ModuleDefID);
                return(portalDesktopModules.Any(kvp =>
                                                kvp.Value.DesktopModuleID == moduleDefinition?.DesktopModuleID));
            });

            var results = modules.Select(x => PromptModuleInfo.FromDnnModuleInfo(x, this.Deleted));

            var totalPages = total / max + (total % max == 0 ? 0 : 1);
            var pageNo     = this.Page > 0 ? this.Page : 1;

            return(new ConsoleResultModel
            {
                Data = results,
                PagingInfo = new PagingInfo
                {
                    PageNo = pageNo,
                    TotalPages = totalPages,
                    TotalRecords = total,
                    PageSize = max,
                },
                Records = results.Count(),
                Output = results.Count() == 0 ? this.LocalizeString("Prompt_NoModules") : "",
            });
        }