示例#1
0
        protected WidgetModel PrepareWidgetModel(Widget widget)
        {
            var widgetPlugin = _widgetService.LoadWidgetPluginBySystemName(widget.PluginSystemName);
            if (widgetPlugin == null || !widgetPlugin.PluginDescriptor.Installed)
                return null;    //don't throw an exception. Maybe, plugin widget was deleted.
            var model = new WidgetModel()
            {
                Id = widget.Id,
                WidgetZoneId = widget.WidgetZoneId,
                WidgetZoneName = widget.WidgetZone.GetLocalizedEnum(_localizationService, _workContext),
                PluginFriendlyName = widgetPlugin.PluginDescriptor.FriendlyName,
                DisplayOrder = widget.DisplayOrder,
            };

            return model;
        }
        public ActionResult WidgetUpdate(WidgetModel model, GridCommand command)
        {
            if (!_permissionService.Authorize(StandardPermissionProvider.ManageWidgets))
                return AccessDeniedView();

            var widget = _widgetService.LoadWidgetBySystemName(model.SystemName);
            if (widget.IsWidgetActive(_widgetSettings))
            {
                if (!model.IsActive)
                {
                    //mark as disabled
                    _widgetSettings.ActiveWidgetSystemNames.Remove(widget.PluginDescriptor.SystemName);
                    _settingService.SaveSetting(_widgetSettings);
                }
            }
            else
            {
                if (model.IsActive)
                {
                    //mark as active
                    _widgetSettings.ActiveWidgetSystemNames.Add(widget.PluginDescriptor.SystemName);
                    _settingService.SaveSetting(_widgetSettings);
                }
            }
            var pluginDescriptor = widget.PluginDescriptor;
            //display order
            pluginDescriptor.DisplayOrder = model.DisplayOrder;
            PluginFileParser.SavePluginDescriptionFile(pluginDescriptor);
            //reset plugin cache
            _pluginFinder.ReloadPlugins();

            return List(command);
        }