Exemple #1
0
        private void ApplyXmlConfig(WidgetDefinition widget, XElement xml)
        {
            var displayName = xml.ChildElementValue("display-name");
            if (!String.IsNullOrEmpty(displayName))
            {
                widget.DisplayName = new LocalizableText(displayName);
            }

            var category = xml.ChildElementValue("category");
            if (!String.IsNullOrEmpty(category))
            {
                widget.Category = new LocalizableText(category);
                widget.Category.ResourceDescriptor.PluginName = widget.Plugin.Name;
                widget.Category.ResourceDescriptor.WidgetName = widget.Name;
            }

            var iconUrl = xml.ChildElementValue("icon-url");
            if (!String.IsNullOrEmpty(iconUrl))
            {
                widget.IconUrl = iconUrl;
            }

            var widgetProcessEventListenerType = xml.ChildElementValue("process-event-listener");
            if (!String.IsNullOrEmpty(widgetProcessEventListenerType))
            {
                var processor = (IWidgetProcessEventListener)Activator.CreateInstance(Type.GetType(widgetProcessEventListenerType, true));
                widget.WidgetProcessEventListener = processor;
            }

            var editorElement = xml.Element("editor");
            if (editorElement != null)
            {
                widget.EditorSettings = WidgetEditorSettings.From(editorElement);
            }
        }
 internal static WidgetDefinitionModel From(WidgetDefinition widgetDefinition)
 {
     return new WidgetDefinitionModel()
     {
         WidgetDefinitionId = widgetDefinition.Id,
         Name = widgetDefinition.Name
     };
 }
Exemple #3
0
 public WidgetDefinition LoadWidget(PluginDefinition plugin, string widgetName)
 {
     var directory = HostingEnvironment.MapPath(WidgetPaths.WidgetDirectoryVirtualPath(plugin.Name, widgetName));
     var widget = new WidgetDefinition(Path.GetFileName(directory), plugin);
     Configure(widget);
     LoadViews(widget);
     return widget;
 }
Exemple #4
0
    public WidgetDefinition Add(
        [NotNull] Type viewComponentType,
        [CanBeNull] ILocalizableString displayName = null)
    {
        var widget = new WidgetDefinition(viewComponentType, displayName);

        Add(widget);
        return(widget);
    }
Exemple #5
0
    public void Add(WidgetDefinition widget)
    {
        var existingWidget = _widgetsByName.GetOrDefault(widget.Name);

        if (existingWidget != null)
        {
            _widgetsByType[existingWidget.ViewComponentType] = widget;
        }

        _widgetsByName[widget.Name] = widget;
        _widgetsByType[widget.ViewComponentType] = widget;
    }
        public IHttpActionResult Post(WidgetDefinitionInputModel model)
        {
            if (String.IsNullOrWhiteSpace(model.Name))
            {
                return BadRequest("Invalid name for Widget Definition.");
            }

            WidgetDefinition widgetDefinition = new WidgetDefinition(model.Name);

            WidgetDefinitionRepository.Add(widgetDefinition);

            return Created(new Uri(Url.Link("GetWidgetDefinition", new { widgetDefinitionId = widgetDefinition.Id })), WidgetDefinitionModel.From(widgetDefinition));
        }
        private List <WidgetFilterOutput> GetNeededWidgetFiltersOutput(WidgetDefinition widget)
        {
            if (widget.UsedWidgetFilters == null || !widget.UsedWidgetFilters.Any())
            {
                return(new List <WidgetFilterOutput>());
            }

            var allNeededFilters = widget.UsedWidgetFilters.Distinct().ToList();

            return(_dashboardConfiguration.WidgetFilterDefinitions
                   .Where(definition => allNeededFilters.Contains(definition.Id))
                   .Select(x => new WidgetFilterOutput(x.Id, x.Name))
                   .ToList());
        }
Exemple #8
0
    protected virtual async Task <IHtmlContent> InvokeWidgetAsync(object arguments, WidgetDefinition widget)
    {
        PageWidgetManager.TryAdd(widget);

        var wrapperAttributesBuilder = new StringBuilder($"class=\"abp-widget-wrapper\" data-widget-name=\"{widget.Name}\"");

        if (widget.RefreshUrl != null)
        {
            wrapperAttributesBuilder.Append($" data-refresh-url=\"{widget.RefreshUrl}\"");
        }

        if (widget.AutoInitialize)
        {
            wrapperAttributesBuilder.Append(" data-widget-auto-init=\"true\"");
        }

        return(new HtmlContentBuilder()
               .AppendHtml($"<div {wrapperAttributesBuilder}>")
               .AppendHtml(await DefaultViewComponentHelper.InvokeAsync(widget.ViewComponentType, arguments))
               .AppendHtml("</div>"));
    }
Exemple #9
0
        private void Configure(WidgetDefinition widget)
        {
            var files = new DirectoryInfo(Server.MapPath(widget.VirtualPath)).GetFiles();

            var iconFile = files.FirstOrDefault(f => f.Name.IgnoreCaseStartsWith("icon."));
            if (iconFile != null)
            {
                widget.IconUrl = UrlUtil.Combine(widget.VirtualPath, iconFile.Name);
            }

            widget.Editable = files.Any(f => f.Name.IgnoreCaseEquals("Editor.aspx"));

            var configFile = files.FirstOrDefault(f => f.Name.IgnoreCaseEquals("config.config"));
            if (configFile != null)
            {
                ApplyXmlConfig(widget, XDocument.Load(configFile.FullName).Root);
            }

            if (widget.DisplayName == null)
            {
                widget.DisplayName = new LocalizableText(String.Format("{{ Plugin={0}, Key={1} }}", widget.Plugin.Name, widget.Name));
            }
        }
        private void CreateTextWidgetDefinition()
        {
            var widgetDefinition = WidgetDefinitionRepository.FindByName("Text");

            ParameterDefinition textParameterDefinition = new ParameterDefinition("Text");
            ParameterDefinition fontSizeParameterDefinition = new ParameterDefinition("FontSize");
            ParameterDefinition textColourParameterDefinition = new ParameterDefinition("TextColour");

            if (widgetDefinition == null)
            {
                widgetDefinition = new WidgetDefinition("Text");
                widgetDefinition.AddParameterDefinition(textParameterDefinition);
                widgetDefinition.AddParameterDefinition(fontSizeParameterDefinition);
                widgetDefinition.AddParameterDefinition(textColourParameterDefinition);

                WidgetDefinitionRepository.Add(widgetDefinition);
            }
            else
            {
                if (!widgetDefinition.ParameterDefinitions.Any(x => x.Name == "Text"))
                {
                    widgetDefinition.AddParameterDefinition(textParameterDefinition);
                    WidgetDefinitionRepository.Update(widgetDefinition);
                }

                if (!widgetDefinition.ParameterDefinitions.Any(x => x.Name == "FontSize"))
                {
                    widgetDefinition.AddParameterDefinition(fontSizeParameterDefinition);
                    WidgetDefinitionRepository.Update(widgetDefinition);
                }
                if (!widgetDefinition.ParameterDefinitions.Any(x => x.Name == "TextColour"))
                {
                    widgetDefinition.AddParameterDefinition(textColourParameterDefinition);
                    WidgetDefinitionRepository.Update(widgetDefinition);
                }
            }
        }
Exemple #11
0
    private async Task <bool> IsGrantedAsyncInternal(WidgetDefinition widget, string wantedWidgetName)
    {
        if (widget == null)
        {
            throw new ArgumentNullException(wantedWidgetName);
        }

        if (widget.RequiredPolicies.Any())
        {
            foreach (var requiredPolicy in widget.RequiredPolicies)
            {
                if (!(await AuthorizationService.AuthorizeAsync(requiredPolicy)).Succeeded)
                {
                    return(false);
                }
            }
        }
        else if (widget.RequiresAuthentication && !CurrentUser.IsAuthenticated)
        {
            return(false);
        }

        return(true);
    }
Exemple #12
0
        public static List <WidgetDefinition> GetDefinitions()
        {
            var userCountWidget = new WidgetDefinition(
                UserCountWidgetViewComponent.WidgetName,
                LocalizableString.Create <DashboardDemoResource>(UserCountWidgetViewComponent.DisplayName),
                typeof(UserCountWidgetViewComponent)
                )
                                  .SetDefaultDimension(6, 3)
                                  .AddRequiredPermission(IdentityPermissions.Users.Default);

            var roleListWidget = new WidgetDefinition(
                RoleListWidgetViewComponent.WidgetName,
                LocalizableString.Create <DashboardDemoResource>(RoleListWidgetViewComponent.DisplayName),
                typeof(RoleListWidgetViewComponent)
                )
                                 .SetDefaultDimension(6, 3)
                                 .AddRequiredPermission(IdentityPermissions.Roles.Default);

            return(new List <WidgetDefinition>
            {
                userCountWidget,
                roleListWidget
            });
        }
Exemple #13
0
        private void LoadViews(WidgetDefinition widget)
        {
            var viewsDir = new DirectoryInfo(Server.MapPath(widget.ViewsFolderVirtualPath));
            if (!viewsDir.Exists)
            {
                return;
            }

            foreach (var viewDir in viewsDir.GetDirectories())
            {
                if (viewsDir.IsHidden()) continue;

                var viewFile = viewDir.GetFiles("Default.*", SearchOption.TopDirectoryOnly).FirstOrDefault();
                var view = new WidgetViewDefinition(widget)
                {
                    Name = viewDir.Name,
                    Extension = viewFile.Extension
                };
                widget.Views.Add(view);
            }
        }
Exemple #14
0
 public bool TryAdd(WidgetDefinition widget)
 {
     return(GetWidgetList()
            .AddIfNotContains(widget));
 }
        private void CreateTimetableWidgetDefinitionIfNotExists()
        {
            var widgetDefinition = WidgetDefinitionRepository.FindByName("Timetable");

            ParameterDefinition pollingIntervalParameterDefinition = new ParameterDefinition("PollingIntervalInSeconds", "30");
            ParameterDefinition stopIdentifierParameterDefinition = new ParameterDefinition("StopIdentifier");
            ParameterDefinition operatorNameParameterDefinition = new ParameterDefinition("OperatorName");
            ParameterDefinition numResultsParameterDefinition = new ParameterDefinition("NumResults", "6");

            ParameterDefinition walkingDistanceToStopParameterDefinition = new ParameterDefinition("WalkingDistanceToStopInSeconds", "1");
            ParameterDefinition operatorDisplayNameParameterfinition = new ParameterDefinition("OperatorDisplayName", "");

            if (widgetDefinition == null)
            {
                widgetDefinition = new WidgetDefinition("Timetable");

                widgetDefinition.AddParameterDefinition(pollingIntervalParameterDefinition);
                widgetDefinition.AddParameterDefinition(stopIdentifierParameterDefinition);
                widgetDefinition.AddParameterDefinition(operatorNameParameterDefinition);
                widgetDefinition.AddParameterDefinition(numResultsParameterDefinition);

                widgetDefinition.AddParameterDefinition(walkingDistanceToStopParameterDefinition);
                widgetDefinition.AddParameterDefinition(operatorDisplayNameParameterfinition);

                WidgetDefinitionRepository.Add(widgetDefinition);
            }
            else
            {
                bool updateNeeded = false;
                if (!widgetDefinition.ParameterDefinitions.Any(x => x.Name == "PollingIntervalInSeconds"))
                {
                    widgetDefinition.AddParameterDefinition(pollingIntervalParameterDefinition);
                    updateNeeded = true;
                }

                if (!widgetDefinition.ParameterDefinitions.Any(x => x.Name == "StopIdentifier"))
                {
                    widgetDefinition.AddParameterDefinition(stopIdentifierParameterDefinition);
                    updateNeeded = true;
                }

                if (!widgetDefinition.ParameterDefinitions.Any(x => x.Name == "OperatorName"))
                {
                    widgetDefinition.AddParameterDefinition(operatorNameParameterDefinition);
                    updateNeeded = true;
                }

                if (!widgetDefinition.ParameterDefinitions.Any(x => x.Name == "NumResults"))
                {
                    widgetDefinition.AddParameterDefinition(numResultsParameterDefinition);
                    updateNeeded = true;
                }

                if (!widgetDefinition.ParameterDefinitions.Any(x => x.Name == "WalkingDistanceToStopInSeconds"))
                {
                    widgetDefinition.AddParameterDefinition(walkingDistanceToStopParameterDefinition);
                    updateNeeded = true;
                }

                if (!widgetDefinition.ParameterDefinitions.Any(x => x.Name == "OperatorDisplayName"))
                {
                    widgetDefinition.AddParameterDefinition(operatorDisplayNameParameterfinition);
                    updateNeeded = true;
                }

                if (updateNeeded)
                {
                    WidgetDefinitionRepository.Update(widgetDefinition);
                }
            }
        }
        private void CreateImageWidgetDefinitionIfNotExists()
        {
            var widgetDefinition = WidgetDefinitionRepository.FindByName("Image");

            ParameterDefinition imageIdentifierParameterDefinition = new ParameterDefinition("ImageIdentifier");
            ParameterDefinition iamgeFillParameterDefinition = new ParameterDefinition("ImageFill", "Scale");

            if (widgetDefinition == null)
            {
                widgetDefinition = new WidgetDefinition("Image");
                widgetDefinition.AddParameterDefinition(imageIdentifierParameterDefinition);

                WidgetDefinitionRepository.Add(widgetDefinition);
            }
            else
            {
                if (!widgetDefinition.ParameterDefinitions.Any(x => x.Name == "ImageIdentifier"))
                {
                    widgetDefinition.AddParameterDefinition(imageIdentifierParameterDefinition);
                    WidgetDefinitionRepository.Update(widgetDefinition);
                }

                if (!widgetDefinition.ParameterDefinitions.Any(x => x.Name == "ImageFill"))
                {
                    widgetDefinition.AddParameterDefinition(iamgeFillParameterDefinition);
                    WidgetDefinitionRepository.Update(widgetDefinition);
                }
            }
        }
Exemple #17
0
        public async Task <bool> CheckPermissionsAsync(IAuthorizationService authorizationService, WidgetDefinition widget)
        {
            foreach (var permission in widget.RequiredPermissions)
            {
                if (!await authorizationService.IsGrantedAsync(permission))
                {
                    return(false);
                }
            }

            return(true);
        }