コード例 #1
0
        protected override EditorResult OnBuildEditor(Elements.ImageResizer element, ElementEditorContext context)
        {
            var viewModel = new ImageResizerEditorViewModel();
            var editor    = context.ShapeFactory.EditorTemplate(TemplateName: "Elements.ImageResizer", Model: viewModel);

            if (context.Updater != null)
            {
                context.Updater.TryUpdateModel(viewModel, context.Prefix, null, null);
                element.MediaId    = ParseImageId(viewModel.ImageId);
                element.Width      = viewModel.Width;
                element.Height     = viewModel.Height;
                element.Etc        = viewModel.Etc;
                element.Responsive = viewModel.Responsive;
            }

            var imageId = element.MediaId;

            if (imageId == null)
            {
                viewModel.CurrentImage = default(ImagePart);
                viewModel.Responsive   = true;
            }
            else
            {
                viewModel.CurrentImage = GetImage(imageId.Value);
            }
            viewModel.Width      = element.Width;
            viewModel.Height     = element.Height;
            viewModel.Etc        = element.Etc;
            viewModel.Responsive = element.Responsive;

            return(Editor(context, editor));
        }
コード例 #2
0
        private void UpdateEditor(ElementEditorContext context)
        {
            var contentTypeName  = (string)context.Element.Descriptor.StateBag["ContentTypeName"];
            var element          = (PlaceableContentItem)context.Element;
            var elementViewModel = new PlaceableContentItemViewModel {
                ContentItemId = element.ContentItemId
            };

            if (context.Updater != null)
            {
                context.Updater.TryUpdateModel(elementViewModel, context.Prefix, null, null);
            }

            var contentItemId = elementViewModel.ContentItemId;
            var contentItem   = contentItemId != null
                ? _contentManager.Value.Get(contentItemId.Value, VersionOptions.Latest)
                : _contentManager.Value.New(contentTypeName);

            dynamic contentEditorShape;

            if (context.Updater != null)
            {
                if (contentItem.Id == 0)
                {
                    _contentManager.Value.Create(contentItem, VersionOptions.Draft);
                }
                else
                {
                    var isDraftable    = contentItem.TypeDefinition.Settings.GetModel <ContentTypeSettings>().Draftable;
                    var versionOptions = isDraftable ? VersionOptions.DraftRequired : VersionOptions.Latest;
                    contentItem = _contentManager.Value.Get(contentItem.Id, versionOptions);
                }

                element.ContentItemId = contentItem.Id;

                // If the placed content item has the CommonPart attached, set its Container property to the Content (if any).
                // This helps preventing widget types from appearing as orphans.
                var commonPart = contentItem.As <ICommonPart>();
                if (commonPart != null)
                {
                    commonPart.Container = context.Content;
                }

                contentItem.IsPlaceableContent(true);
                contentEditorShape = _contentManager.Value.UpdateEditor(contentItem, context.Updater);

                _contentManager.Value.Publish(contentItem);
            }
            else
            {
                contentEditorShape = _contentManager.Value.BuildEditor(contentItem);
            }

            var elementEditorShape = context.ShapeFactory.EditorTemplate(TemplateName: "Elements.PlaceableContentItem", Model: elementViewModel, Prefix: context.Prefix);

            elementEditorShape.Metadata.Position = "Properties:0";
            contentEditorShape.Metadata.Position = "Properties:0";
            context.EditorResult.Add(elementEditorShape);
            context.EditorResult.Add(contentEditorShape);
        }
コード例 #3
0
        protected override EditorResult OnBuildEditor(FormElement element, ElementEditorContext context)
        {
            var contentType           = element.FormBindingContentType;
            var contentTypeDefinition = !String.IsNullOrWhiteSpace(contentType) ? _contentDefinitionManager.GetTypeDefinition(contentType) : default(ContentTypeDefinition);

            if (contentTypeDefinition == null)
            {
                return(null);
            }

            var viewModel = element.Data.GetModel <FormBindingSettings>() ?? new FormBindingSettings();

            viewModel.AvailableBindings = _bindingManager.DescribeBindingsFor(contentTypeDefinition).ToArray();

            if (context.Updater != null)
            {
                context.Updater.TryUpdateModel(viewModel, null, null, new[] { "AvailableBindings" });
                viewModel.Store(element.Data);
            }

            var bindingsEditor = context.ShapeFactory.EditorTemplate(TemplateName: "FormBindings", Model: viewModel);

            bindingsEditor.Metadata.Position = "Bindings:20";

            return(Editor(context, bindingsEditor));
        }
コード例 #4
0
        protected override EditorResult OnBuildEditor(Elements.SmartGrid element, ElementEditorContext context)
        {
            var viewModel = new SmartGridViewModel {
                BackgroundImageId = element.BackgroundImageId != null?element.BackgroundImageId.ToString() : null,
                                        BackgroundSize = element.BackgroundSize,
                                        CustomClass    = element.CustomClass
            };

            // If an Updater is specified,
            // it means the element editor form is being submitted
            // and we need to read and store the submitted data.
            if (context.Updater != null)
            {
                if (context.Updater.TryUpdateModel(viewModel, context.Prefix, null, null))
                {
                    element.BackgroundImageId = Orchard.Layouts.Elements.ContentItem.Deserialize(viewModel.BackgroundImageId).FirstOrDefault();
                    element.BackgroundSize    = viewModel.BackgroundSize != null?viewModel.BackgroundSize.Trim() : null;

                    element.CustomClass = viewModel.CustomClass != null?viewModel.CustomClass.Trim() : null;
                }
            }
            viewModel.BackgroundImage = GetBackgroundImage(element, VersionOptions.Latest);
            var editorTemplate = context.ShapeFactory.EditorTemplate(
                TemplateName: "Elements/SmartGrid",
                Model: viewModel,
                Prefix: context.Prefix);

            return(Editor(context, editorTemplate));
        }
コード例 #5
0
        protected override EditorResult OnBuildEditor(PasswordField element, ElementEditorContext context)
        {
            var autoLabelEditor         = BuildForm(context, "AutoLabel", "Properties:1");
            var passwordFieldValidation = BuildForm(context, "PasswordFieldValidation", "Validation:10");

            return(Editor(context, autoLabelEditor, passwordFieldValidation));
        }
コード例 #6
0
        protected override EditorResult OnBuildEditor(Breadcrumbs element, ElementEditorContext context)
        {
            var viewModel = new BreadcrumbsEditorViewModel {
                CurrentMenuId  = element.MenuContentItemId,
                StartLevel     = element.StartLevel,
                StopLevel      = element.Levels,
                AddCurrentPage = element.AddCurrentPage,
                AddHomePage    = element.AddHomePage,
                Menus          = _menuService.GetMenus(),
            };
            var editor = context.ShapeFactory.EditorTemplate(TemplateName: "Elements.Breadcrumbs", Model: viewModel);

            if (context.Updater != null)
            {
                if (context.Updater.TryUpdateModel(viewModel, context.Prefix, null, null))
                {
                    element.StartLevel        = viewModel.StartLevel;
                    element.Levels            = viewModel.StopLevel;
                    element.AddCurrentPage    = viewModel.AddCurrentPage;
                    element.AddHomePage       = viewModel.AddHomePage;
                    element.MenuContentItemId = viewModel.CurrentMenuId;
                }
            }

            return(Editor(context, editor));
        }
コード例 #7
0
        protected override EditorResult OnBuildEditor(CheckBox element, ElementEditorContext context)
        {
            var autoLabelEditor    = BuildForm(context, "AutoLabel");
            var checkBoxEditor     = BuildForm(context, "CheckBox");
            var checkBoxValidation = BuildForm(context, "CheckBoxValidation", "Validation:10");

            return(Editor(context, autoLabelEditor, checkBoxEditor, checkBoxValidation));
        }
コード例 #8
0
        protected override EditorResult OnBuildEditor(Taxonomy element, ElementEditorContext context)
        {
            var autoLabelEditor    = BuildForm(context, "AutoLabel");
            var enumerationEditor  = BuildForm(context, "TaxonomyForm");
            var checkBoxValidation = BuildForm(context, "TaxonomyValidation", "Validation:10");

            return(Editor(context, autoLabelEditor, enumerationEditor, checkBoxValidation));
        }
コード例 #9
0
        protected override EditorResult OnBuildEditor(Query element, ElementEditorContext context)
        {
            var autoLabelEditor    = BuildForm(context, "AutoLabel", "Properties:1");
            var enumerationEditor  = BuildForm(context, "QueryForm", "Properties:15");
            var checkBoxValidation = BuildForm(context, "QueryValidation", "Validation:10");

            return(Editor(context, autoLabelEditor, enumerationEditor, checkBoxValidation));
        }
コード例 #10
0
        protected override EditorResult OnBuildEditor(UrlField element, ElementEditorContext context)
        {
            var autoLabelEditor           = BuildForm(context, "AutoLabel", "Properties:1");
            var webAddressFieldEditor     = BuildForm(context, "UrlField", "Properties:15");
            var webAddressFieldValidation = BuildForm(context, "UrlFieldValidation", "Validation:10");

            return(Editor(context, autoLabelEditor, webAddressFieldEditor, webAddressFieldValidation));
        }
コード例 #11
0
        protected override EditorResult OnBuildEditor(TextArea element, ElementEditorContext context)
        {
            var autoLabelEditor    = BuildForm(context, "AutoLabel");
            var textAreaEditor     = BuildForm(context, "TextArea");
            var textAreaValidation = BuildForm(context, "TextAreaValidation", "Validation:10");

            return(Editor(context, autoLabelEditor, textAreaEditor, textAreaValidation));
        }
コード例 #12
0
        protected override EditorResult OnBuildEditor(EmailField element, ElementEditorContext context)
        {
            var autoLabelEditor      = BuildForm(context, "AutoLabel");
            var emailFieldEditor     = BuildForm(context, "EmailField");
            var emailFieldValidation = BuildForm(context, "EmailFieldValidation", "Validation:10");

            return(Editor(context, autoLabelEditor, emailFieldEditor, emailFieldValidation));
        }
        protected override EditorResult OnBuildEditor(TextArea element, ElementEditorContext context)
        {
            var autoLabelEditor    = BuildForm(context, "AutoLabel", "Properties:1");
            var placeholderEditor  = BuildForm(context, "Placeholder", "Properties:10");
            var textAreaEditor     = BuildForm(context, "TextArea", "Properties:15");
            var textAreaValidation = BuildForm(context, "TextAreaValidation", "Validation:10");

            return(Editor(context, autoLabelEditor, placeholderEditor, textAreaEditor, textAreaValidation));
        }
        protected override EditorResult OnBuildEditor(EmailField element, ElementEditorContext context)
        {
            var autoLabelEditor      = BuildForm(context, "AutoLabel", "Properties:1");
            var placeholderEditor    = BuildForm(context, "Placeholder", "Properties:10");
            var emailFieldEditor     = BuildForm(context, "EmailField", "Properties:15");
            var emailFieldValidation = BuildForm(context, "EmailFieldValidation", "Validation:10");

            return(Editor(context, autoLabelEditor, placeholderEditor, emailFieldEditor, emailFieldValidation));
        }
コード例 #15
0
        protected override EditorResult OnBuildEditor(Section element, ElementEditorContext context)
        {
            var editor = context.ShapeFactory.EditorTemplate(TemplateName: "Elements.Section", Model: element);

            if (context.Updater != null)
            {
                context.Updater.TryUpdateModel(element, context.Prefix, null, null);
            }

            return(Editor(context, editor));
        }
コード例 #16
0
        protected override EditorResult OnBuildEditor(Paragraph element, ElementEditorContext context) {
            var viewModel = new ParagraphEditorViewModel {
                Text = element.Content
            };
            var editor = context.ShapeFactory.EditorTemplate(TemplateName: "Elements.Paragraph", Model: viewModel);

            if (context.Updater != null) {
                context.Updater.TryUpdateModel(viewModel, context.Prefix, null, null);
                element.Content = viewModel.Text;
            }

            return Editor(context, editor);
        }
コード例 #17
0
        protected override EditorResult OnBuildEditor(ButtonPopover element, ElementEditorContext context)
        {
            var editor = context.ShapeFactory.EditorTemplate(TemplateName: "Elements.ButtonPopover", Model: element);

            if (context.Updater == null)
            {
                return(Editor(context, editor));
            }

            context.Updater.TryUpdateModel(element, context.Prefix, null, null);

            return(Editor(context, editor));
        }
コード例 #18
0
        private ElementEditorContext CreateEditorContext(Element element, ElementDataDictionary elementData = null)
        {
            elementData = elementData ?? new ElementDataDictionary();
            var context = new ElementEditorContext {
                Element       = element,
                Updater       = this,
                ValueProvider = elementData.ToValueProvider(_cultureAccessor.CurrentCulture),
                ShapeFactory  = _shapeFactory
            };

            ValueProvider = context.ValueProvider;
            return(context);
        }
コード例 #19
0
        private ElementEditorContext CreateEditorContext(IContent content, Element element, ElementDataDictionary elementData, IUpdateModel updater, dynamic shapeFactory)
        {
            var context = new ElementEditorContext {
                Content       = content,
                Element       = element,
                Updater       = updater,
                ValueProvider = elementData.ToValueProvider(_cultureAccessor.CurrentCulture),
                ElementData   = elementData,
                ShapeFactory  = shapeFactory,
                Prefix        = Prefix
            };

            return(context);
        }
コード例 #20
0
        protected override EditorResult OnBuildEditor(HtmlBlockElement element, ElementEditorContext context)
        {
            var viewModel = new Orchard.Layouts.ViewModels.MarkdownEditorViewModel
            {
                Text = element.Content
            };
            var editor = context.ShapeFactory.EditorTemplate(TemplateName: "Elements.HtmlBlockElement", Model: viewModel);

            if (context.Updater != null)
            {
                context.Updater.TryUpdateModel(viewModel, context.Prefix, null, null);
                element.Content = viewModel.Text;
            }

            return(Editor(context, editor));
        }
コード例 #21
0
        protected override EditorResult OnBuildEditor(Heading element, ElementEditorContext context)
        {
            var viewModel = new HeadingEditorViewModel {
                Text  = element.Content,
                Level = element.Level
            };
            var editor = context.ShapeFactory.EditorTemplate(TemplateName: "Elements.Heading", Model: viewModel);

            if (context.Updater != null)
            {
                context.Updater.TryUpdateModel(viewModel, context.Prefix, null, null);
                element.Content = viewModel.Text;
                element.Level   = viewModel.Level;
            }

            return(Editor(context, editor));
        }
コード例 #22
0
        protected override EditorResult OnBuildEditor(Image element, ElementEditorContext context)
        {
            var viewModel = new ImageEditorViewModel();
            var editor    = context.ShapeFactory.EditorTemplate(TemplateName: "Elements.Image", Model: viewModel);

            if (context.Updater != null)
            {
                context.Updater.TryUpdateModel(viewModel, context.Prefix, null, null);
                element.MediaId = ParseImageId(viewModel.ImageId);
            }

            var imageId = element.MediaId;

            viewModel.CurrentImage = imageId != null?GetImage(imageId.Value) : default(ImagePart);

            return(Editor(context, editor));
        }
コード例 #23
0
        private ElementEditorContext CreateEditorContext(
            string session,
            IContent content,
            Element element,
            ElementDataDictionary elementData = null,
            IUpdateModel updater = null)
        {
            var context = new ElementEditorContext {
                Session       = session,
                Content       = content,
                Element       = element,
                Updater       = updater,
                ElementData   = elementData ?? new ElementDataDictionary(),
                ValueProvider = ValueProvider,
                ShapeFactory  = _shapeFactory
            };

            return(context);
        }
コード例 #24
0
        protected override EditorResult OnBuildEditor(Element element, ElementEditorContext context)
        {
            var viewModel = new NamedElementViewModel {
                Name      = element.GetName(),
                Alternate = element.GetAlternate()
            };

            if (context.Updater != null && context.Updater.TryUpdateModel(viewModel, context.Prefix, null, null))
            {
                element.SetName(viewModel.Name?.Trim());
                element.SetAlternate(viewModel.Alternate?.Trim());
            }

            var editorShape = context.ShapeFactory.EditorTemplate(TemplateName: "Elements/NamedElement", Model: viewModel, Prefix: context.Prefix);

            editorShape.Metadata.Position = "Meta:5";

            return(Editor(context, editorShape));
        }
コード例 #25
0
        protected override EditorResult OnBuildEditor(Reddit element, ElementEditorContext context)
        {
            var viewModel = new RedditEditorViewModel
            {
                Subreddit    = element.Subreddit,
                CacheMinutes = element.CacheMinutes
            };

            var editor = context.ShapeFactory.EditorTemplate(TemplateName: "Elements.Reddit", Model: viewModel);

            if (context.Updater != null)
            {
                context.Updater.TryUpdateModel(viewModel, context.Prefix, null, null);
                element.Subreddit    = viewModel.Subreddit;
                element.CacheMinutes = viewModel.CacheMinutes;
            }

            return(Editor(context, editor));
        }
コード例 #26
0
        private ElementEditorContext CreateEditorContext(
            string session,
            IContent content,
            Element element,
            ElementDataDictionary elementData       = null,
            ElementDataDictionary postedElementData = null,
            IUpdateModel updater = null)
        {
            postedElementData = postedElementData ?? new ElementDataDictionary();
            var context = new ElementEditorContext {
                Session       = session,
                Content       = content,
                Element       = element,
                Updater       = updater,
                ElementData   = elementData ?? new ElementDataDictionary(),
                ValueProvider = postedElementData.ToValueProvider(_cultureAccessor.CurrentCulture),
                ShapeFactory  = _shapeFactory
            };

            ValueProvider = context.ValueProvider;
            return(context);
        }
コード例 #27
0
        private void UpdateEditor(SnippetDescriptor descriptor, ElementEditorContext context)
        {
            var viewModel = new SnippetViewModel {
                Descriptor = descriptor
            };

            if (context.Updater != null)
            {
                foreach (var fieldDescriptor in descriptor.Fields)
                {
                    var name   = fieldDescriptor.Name;
                    var result = context.ValueProvider.GetValue(name);

                    if (result == null)
                    {
                        continue;
                    }

                    context.Element.Data[name] = result.AttemptedValue;
                }
            }

            viewModel.FieldEditors = descriptor.Fields.Select(x => {
                var fieldEditorTemplateName  = $"Elements.Snippet.Field.{x.Type ?? "Text"}";
                var fieldDescriptorViewModel = new SnippetFieldViewModel {
                    Descriptor = x,
                    Value      = context.Element.Data.Get(x.Name)
                };
                var fieldEditor = context.ShapeFactory.EditorTemplate(TemplateName: fieldEditorTemplateName, Model: fieldDescriptorViewModel, Prefix: context.Prefix);

                return(fieldEditor);
            }).ToList();

            var snippetEditorShape = context.ShapeFactory.EditorTemplate(TemplateName: "Elements.Snippet", Model: viewModel, Prefix: context.Prefix);

            snippetEditorShape.Metadata.Position = "Fields:0";

            context.EditorResult.Add(snippetEditorShape);
        }
コード例 #28
0
        protected override EditorResult OnBuildEditor(ContentItem element, ElementEditorContext context)
        {
            var layoutPart = context.Content;
            var viewModel  = new ContentItemEditorViewModel();
            var editor     = context.ShapeFactory.EditorTemplate(TemplateName: "Elements.ContentItem", Model: viewModel);

            if (context.Updater != null)
            {
                context.Updater.TryUpdateModel(viewModel, context.Prefix, null, null);
                element.ContentItemIds = ContentItem.Deserialize(viewModel.ContentItemIds);
                element.DisplayType    = viewModel.DisplayType;
            }

            var contentItemIds  = element.ContentItemIds;
            var displayType     = element.DisplayType;
            var layoutContentId = layoutPart != null ? layoutPart.Id : 0;

            viewModel.ContentItems = GetContentItems(RemoveCurrentContentItemId(contentItemIds, layoutContentId)).ToArray();
            viewModel.DisplayType  = displayType;

            return(Editor(context, editor));
        }
コード例 #29
0
        protected override EditorResult OnBuildEditor(SlickSlider element, ElementEditorContext context)
        {
            var viewModel = new SlickSliderEditorViewModel();
            var editor    = context.ShapeFactory.EditorTemplate(TemplateName: "Elements.SlickSlider", Model: viewModel);

            if (context.Updater != null)
            {
                context.Updater.TryUpdateModel(viewModel, context.Prefix, null, null);
                element.MediaItemIds = ContentItem.Deserialize(viewModel.ContentItemIds);
                element.SliderId     = viewModel.SliderId;
                element.Config       = XmlHelper.Serialize(viewModel.Config);
            }

            var contentItemIds = element.MediaItemIds;
            var layoutPart     = context.Content;
            var layoutId       = layoutPart != null ? layoutPart.Id : 0;

            viewModel.ContentItems = GetContentItems(RemoveCurrentContentItemId(contentItemIds, layoutId)).ToArray();
            viewModel.SliderId     = element.SliderId;
            viewModel.Config       = GetConfigObjectFromString(element.Config);

            return(Editor(context, editor));
        }
コード例 #30
0
        protected override EditorResult OnBuildEditor(VectorImage element, ElementEditorContext context)
        {
            var viewModel = new VectorImageEditorViewModel {
                VectorImageId = element.MediaId.ToString(),
                Width         = element.Width,
                Height        = element.Height
            };
            var editor = context.ShapeFactory.EditorTemplate(TemplateName: "Elements.VectorImage", Model: viewModel);

            if (context.Updater != null)
            {
                context.Updater.TryUpdateModel(viewModel, context.Prefix, null, null);
                element.MediaId = ParseVectorImageId(viewModel.VectorImageId);
                element.Width   = viewModel.Width;
                element.Height  = viewModel.Height;
            }

            var mediaId = element.MediaId;

            viewModel.CurrentVectorImage = mediaId != null?GetVectorImage(mediaId.Value) : default(VectorImagePart);

            return(Editor(context, editor));
        }