Inheritance: IHasUIElements
コード例 #1
0
        public void MacroSerializer_ToXml()
        {
            var macro = new MacroEditorModel
                {
                    Alias = "test",
                    Name = "Test",
                    Id = new HiveId("my-macro.macro"),
                    CacheByPage = true,
                    CachePeriodSeconds = 1234,
                    CachePersonalized = false,
                    MacroType = "ChildAction",
                    RenderContentInEditor = true,
                    SelectedItem = "RenderTwitterFeed",
                    UseInEditor = false
                };
            macro.MacroParameters.Add(new MacroParameterDefinitionModel { Alias = "test1", Name = "Test1", ParameterEditorId = Guid.NewGuid(), Show = true });
            macro.MacroParameters.Add(new MacroParameterDefinitionModel { Alias = "test2", Name = "Test2", ParameterEditorId = Guid.NewGuid(), Show = false });

            var xml = MacroSerializer.ToXml(macro);

            Assert.AreEqual(macro.Alias, xml.Root.Attribute("alias").Value);
            Assert.AreEqual(macro.Name, xml.Root.Attribute("name").Value);
            Assert.AreEqual(macro.CacheByPage, (bool)xml.Root.Attribute("cacheByPage"));
            Assert.AreEqual(macro.CachePeriodSeconds, (int)xml.Root.Attribute("cachePeriodSeconds"));
            Assert.AreEqual(macro.CachePersonalized, (bool)xml.Root.Attribute("cachePersonalized"));
            Assert.AreEqual(macro.MacroType.ToString(), xml.Root.Attribute("macroType").Value);
            Assert.AreEqual(macro.RenderContentInEditor, (bool)xml.Root.Attribute("renderContentInEditor"));
            Assert.AreEqual(macro.SelectedItem, xml.Root.Attribute("selectedItem").Value);
            Assert.AreEqual(macro.UseInEditor, (bool)xml.Root.Attribute("useInEditor"));
            
            //TODO: test parameter values
            Assert.AreEqual(2, xml.Root.Elements("parameter").Count());
        }
コード例 #2
0
        public ActionResult EditForm(MacroEditorModel model)
        {
            Mandate.ParameterNotNull(model, "model");

            //validate the model
            TryUpdateModel(model);

            model.Alias = model.Alias.ToRebelAlias();

            //if at this point the model state is invalid, return the result which is the CreateNew view
            if (!ModelState.IsValid)
            {
                EnsureModelListData(model);
                return View("Edit", model);
            }

            return ProcessSubmit(model);
        }
コード例 #3
0
 public static XDocument ToXml(MacroEditorModel model)
 {
     return new XDocument(
         new XElement("macro",                             
                      new XAttribute("alias", model.Alias),
                      new XAttribute("name", model.Name),
                      new XAttribute("cacheByPage", model.CacheByPage),
                      new XAttribute("cachePeriodSeconds", model.CachePeriodSeconds),
                      new XAttribute("cachePersonalized", model.CachePersonalized),
                      new XAttribute("macroType", model.MacroType),
                      new XAttribute("renderContentInEditor", model.RenderContentInEditor),
                      new XAttribute("selectedItem", model.SelectedItem),
                      new XAttribute("useInEditor", model.UseInEditor),
                      model.MacroParameters.Select(x => new XElement("parameter",
                                                                     new XAttribute("alias", x.Alias),
                                                                     new XAttribute("name", x.Name),
                                                                     new XAttribute("show", x.Show),
                                                                     new XAttribute("parameterEditorId", x.ParameterEditorId)))));
 }
コード例 #4
0
 /// <summary>
 /// Ensure the ViewBag has all of its required list data
 /// </summary>
 private void EnsureModelListData(MacroEditorModel model)
 {
     model.AvailableParameterEditors = GetMacroParameterEditors();
     model.AvailableMacroItems = BackOfficeRequestContext.RegisteredComponents
         .MacroEngines
         .Select(x => new Tuple<string, IEnumerable<SelectListItem>>(
                          x.Metadata.EngineName,
                          x.Value.GetMacroItems(BackOfficeRequestContext)));
 }
コード例 #5
0
        private ActionResult ProcessSubmit(MacroEditorModel model)
        {
            Mandate.ParameterNotNull(model, "model");

            var macroFile = PerformSave(model);

            //set the notification
            Notifications.Add(new NotificationMessage(
                "Macro.Save.Message".Localize(this),
                "Macro.Save.Title".Localize(this),
                NotificationType.Success));

            //add path for entity for SupportsPathGeneration (tree syncing) to work     
            using (var uow = Hive.Create())
            {
                GeneratePathsForCurrentEntity(uow.Repositories.GetEntityPaths<File>(macroFile.Id, FixedRelationTypes.DefaultRelationType));
            }

            return RedirectToAction("Edit", new { id = macroFile.Id });
        }
コード例 #6
0
        internal File PerformSave(MacroEditorModel model)
        {
            Mandate.ParameterNotNull(model, "model");

            using (var uow = Hive.Create())
            {
                var fileName = model.Alias.ToRebelAlias() + ".macro";
                var newFileId = new HiveId(fileName);
                var macroFile = new File
                {
                    Name = fileName,
                    ContentBytes = Encoding.UTF8.GetBytes(MacroSerializer.ToXml(model).ToString())
                };
                var existing = uow.Repositories.Get<File>(newFileId);
                //delete the file first before re-saving as AddOrUpdate seems to append to the file
                if (existing != null)
                    uow.Repositories.Delete<File>(newFileId);
                uow.Repositories.AddOrUpdate(macroFile);
                //TODO: the Hive IO provider commit seems to do nothing :( ... needs to be implemented!
                uow.Complete();

                return macroFile;
            }
        }
コード例 #7
0
        public ActionResult CreateNewForm(CreateMacroModel createModel)
        {
            Mandate.ParameterNotNull(createModel, "createModel");            
            Mandate.That<NullReferenceException>(!string.IsNullOrEmpty(createModel.Name));

            //validate the model
            TryUpdateModel(createModel);
            //if at this point the model state is invalid, return the result which is the CreateNew view
            if (!ModelState.IsValid)
            {
                return View(createModel);
            }

            //everything is valid, now we need to render out the editor for this macro
            var editorModel = new MacroEditorModel
            {
                Name = createModel.Name,
                MacroType = createModel.MacroType,
                Alias = createModel.Name.ToRebelAlias(),
                SelectedItem = ""
            };

            EnsureModelListData(editorModel);


            return ProcessSubmit(editorModel);
        }