Example #1
0
        public ViewResult Update(ElementDataViewModel model, string session)
        {
            var sessionState    = _objectStore.Get <ElementSessionState>(session);
            var contentId       = sessionState.ContentId;
            var contentType     = sessionState.ContentType;
            var describeContext = CreateDescribeContext(contentId, contentType);
            var descriptor      = _elementManager.GetElementDescriptorByTypeName(describeContext, model.TypeName);
            var elementData     = ElementDataHelper.Deserialize(sessionState.ElementData);
            var data            = Request.Form.ToDictionary();
            var element         = _elementManager.ActivateElement(descriptor, e => e.Data = data);
            var context         = CreateEditorContext(session, describeContext.Content, element, postedElementData: data, elementData: elementData, updater: this);
            var editorResult    = _elementManager.UpdateEditor(context);
            var viewModel       = new EditElementViewModel {
                Layout       = describeContext.Content.As <ILayoutAspect>(),
                EditorResult = editorResult,
                TypeName     = model.TypeName,
                DisplayText  = descriptor.DisplayText,
                ElementData  = element.Data.Serialize(),
                Tabs         = editorResult.CollectTabs().ToArray(),
                SessionKey   = session
            };

            if (!ModelState.IsValid)
            {
                _transactionManager.Cancel();
            }
            else
            {
                viewModel.ElementHtml        = RenderElement(element, describeContext);
                viewModel.Submitted          = true;
                viewModel.ElementEditorModel = _mapper.ToEditorModel(element, describeContext);
            }
            return(View("Edit", viewModel));
        }
Example #2
0
        public ViewResult Create(string id, string session, int?contentId = null, string contentType = null)
        {
            var sessionState = new ElementSessionState {
                TypeName    = id,
                ElementData = null,
                ContentId   = contentId,
                ContentType = contentType
            };

            _objectStore.Set(session, sessionState);

            var describeContext = CreateDescribeContext(contentId, contentType);
            var descriptor      = _elementManager.GetElementDescriptorByTypeName(describeContext, id);
            var element         = _elementManager.ActivateElement(descriptor);
            var context         = CreateEditorContext(session, describeContext.Content, element);
            var editorResult    = _elementManager.BuildEditor(context);
            var viewModel       = new EditElementViewModel {
                SessionKey   = session,
                Layout       = describeContext.Content.As <ILayoutAspect>(),
                EditorResult = editorResult,
                TypeName     = id,
                DisplayText  = descriptor.DisplayText,
                ElementData  = element.Data.Serialize(),
                Submitted    = !descriptor.EnableEditorDialog,
                ElementHtml  = RenderElement(element, describeContext),
                Tabs         = editorResult.CollectTabs().ToArray()
            };

            return(View(viewModel));
        }
Example #3
0
        public ViewResult Edit(string session)
        {
            var sessionState    = _objectStore.Get <ElementSessionState>(session);
            var contentId       = sessionState.ContentId;
            var contentType     = sessionState.ContentType;
            var typeName        = sessionState.TypeName;
            var elementData     = ElementDataHelper.Deserialize(sessionState.ElementData);
            var describeContext = CreateDescribeContext(contentId, contentType);
            var descriptor      = _elementManager.GetElementDescriptorByTypeName(describeContext, typeName);
            var data            = elementData.Combine(ElementDataHelper.Deserialize(sessionState.ElementEditorData));
            var element         = _elementManager.ActivateElement(descriptor, e => e.Data = data);
            var context         = CreateEditorContext(session, describeContext.Content, element, postedElementData: data, elementData: elementData);
            var editorResult    = _elementManager.BuildEditor(context);

            var viewModel = new EditElementViewModel {
                Layout       = describeContext.Content.As <ILayoutAspect>(),
                EditorResult = editorResult,
                TypeName     = typeName,
                DisplayText  = descriptor.DisplayText,
                ElementData  = element.Data.Serialize(),
                Tabs         = editorResult.CollectTabs().ToArray(),
                SessionKey   = session,
                Submitted    = !descriptor.EnableEditorDialog,
            };

            return(View(viewModel));
        }