예제 #1
0
        public JsonResult LoadVeConfig(int fieldId, int siteId)
        {
            var result = new JSendResponse {
                Status = JSendStatus.Success
            };

            VisualEditorStyleVm StyleMapFn(VisualEditorStyle entry) => new VisualEditorStyleVm
            {
                Name       = entry.Name,
                Element    = entry.Tag,
                Overrides  = entry.OverridesTag,
                Styles     = entry.StylesItems.Any() ? entry.StylesItems.ToDictionary(k => k.Name.Replace(' ', '_'), v => v.ItemValue) : null,
                Attributes = entry.AttributeItems.Any() ? entry.AttributeItems.ToDictionary(k => k.Name, v => v.ItemValue) : null
            };

            VisualEditorPluginVm PluginMapFn(VisualEditorPlugin entry) => new VisualEditorPluginVm
            {
                Name = entry.Name,
                Url  = entry.Url
            };

            var veCommands     = FieldService.GetResultVisualEditorCommands(fieldId, siteId).Where(n => n.On).ToList();
            var includedStyles = FieldService.GetResultStyles(fieldId, siteId).Where(ves => ves.On).OrderBy(ves => ves.Order).ToList();
            var model          = new VisualEditorConfigVm
            {
                StylesSet    = includedStyles.Where(ves => !ves.IsFormat).Select(StyleMapFn),
                FormatsSet   = includedStyles.Where(ves => ves.IsFormat).Select(StyleMapFn).EmptyIfNull(),
                ExtraPlugins = VisualEditorHelpers.GetVisualEditorPlugins(veCommands).Select(PluginMapFn).EmptyIfNull(),
                Toolbar      = VisualEditorHelpers.GenerateToolbar(veCommands)
            };

            if (fieldId != 0)
            {
                var field = FieldService.Read(fieldId);
                model.Language            = field.VisualEditor.Language;
                model.DocType             = field.VisualEditor.DocType;
                model.FullPage            = field.VisualEditor.FullPage;
                model.EnterMode           = field.VisualEditor.EnterMode;
                model.ShiftEnterMode      = field.VisualEditor.ShiftEnterMode;
                model.UseEnglishQuotes    = field.VisualEditor.UseEnglishQuotes;
                model.DisableListAutoWrap = field.VisualEditor.DisableListAutoWrap;
                model.Height      = field.VisualEditor.Height;
                model.BodyClass   = field.RootElementClass;
                model.ContentsCss = field.ExternalCssItems.Select(css => css.Url);
            }

            try
            {
                result.Data = model;
            }
            catch (Exception)
            {
                result.Status  = JSendStatus.Error;
                result.Message = "Непредвиденная ошибка на сервере";
            }

            return(JsonCamelCase(result));
        }