U4-8193 replaced loadMacros with MacrosTreeController

This commit is contained in:
Yannis Guedel
2016-03-23 22:56:42 +01:00
parent 4defc881d4
commit bb7d5b4bd2
7 changed files with 95 additions and 71 deletions

View File

@@ -106,6 +106,8 @@
public const string Xslt = "xslt";
public const string Languages = "languages";
public const string Macros = "macros";
/// <summary>
/// alias for the user types tree.

View File

@@ -20,7 +20,7 @@
<add initialize="true" sortOrder="8" alias="mediaTypes" application="settings" title="Media Types" iconClosed="icon-folder" iconOpen="icon-folder-open" type="Umbraco.Web.Trees.MediaTypeTreeController, umbraco" />
<!--Developer-->
<add application="developer" alias="macros" title="Macros" type="umbraco.loadMacros, umbraco" iconClosed="icon-folder" iconOpen="icon-folder" sortOrder="2" />
<add application="developer" alias="macros" title="Macros" type="Umbraco.Web.Trees.MacrosTreeController, umbraco" iconClosed="icon-folder" iconOpen="icon-folder" sortOrder="2" />
<add application="developer" alias="packager" title="Packages" type="umbraco.loadPackager, umbraco" iconClosed="icon-folder" iconOpen="icon-folder" sortOrder="3" />
<add application="developer" alias="packagerPackages" title="Packager Packages" type="umbraco.loadPackages, umbraco" iconClosed="icon-folder" iconOpen="icon-folder" initialize="false" sortOrder="3" />
<add application="developer" alias="relationTypes" title="Relation Types" type="umbraco.loadRelationTypes, umbraco" iconClosed="icon-folder" iconOpen="icon-folder" sortOrder="4" />

View File

@@ -17,7 +17,7 @@
<add initialize="true" sortOrder="7" alias="dataTypes" application="settings" title="Data Types" iconClosed="icon-folder" iconOpen="icon-folder" type="Umbraco.Web.Trees.DataTypeTreeController, umbraco" />
<add initialize="true" sortOrder="8" alias="mediaTypes" application="settings" title="Media Types" iconClosed="icon-folder" iconOpen="icon-folder-open" type="Umbraco.Web.Trees.MediaTypeTreeController, umbraco" />
<!--Developer-->
<add application="developer" alias="macros" title="Macros" type="umbraco.loadMacros, umbraco" iconClosed="icon-folder" iconOpen="icon-folder" sortOrder="2" />
<add application="developer" alias="macros" title="Macros" type="Umbraco.Web.Trees.MacrosTreeController, umbraco" iconClosed="icon-folder" iconOpen="icon-folder" sortOrder="2" />
<add application="developer" alias="packager" title="Packages" type="umbraco.loadPackager, umbraco" iconClosed="icon-folder" iconOpen="icon-folder" sortOrder="3" />
<add application="developer" alias="packagerPackages" title="Packager Packages" type="umbraco.loadPackages, umbraco" iconClosed="icon-folder" iconOpen="icon-folder" initialize="false" sortOrder="3" />
<add application="developer" alias="relationTypes" title="Relation Types" type="umbraco.loadRelationTypes, umbraco" iconClosed="icon-folder" iconOpen="icon-folder" sortOrder="4" />

View File

@@ -0,0 +1,88 @@
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Net;
using System.Net.Http.Formatting;
using System.Web.Http;
using Umbraco.Core;
using Umbraco.Core.Models;
using Umbraco.Web.Models.Trees;
using Umbraco.Web.Mvc;
using Umbraco.Web.WebApi.Filters;
using umbraco;
using Umbraco.Core.Models.EntityBase;
using Umbraco.Core.Services;
using Umbraco.Web._Legacy.Actions;
using Constants = Umbraco.Core.Constants;
namespace Umbraco.Web.Trees
{
[UmbracoTreeAuthorize(Constants.Trees.Macros)]
[Tree(Constants.Applications.Developer, Constants.Trees.Macros, "Macros", sortOrder: 2)]
[PluginController("UmbracoTrees")]
[CoreTree]
public class MacrosTreeController : TreeController
{
protected override TreeNodeCollection GetTreeNodes(string id, FormDataCollection queryStrings)
{
var nodes = new TreeNodeCollection();
if (id == Constants.System.Root.ToInvariantString())
{
foreach (var macro in Services.MacroService.GetAll())
{
nodes.Add(CreateTreeNode(
macro.Id.ToString(),
id,
queryStrings,
macro.Name,
"icon-settings-alt",
false,
//TODO: Rebuild the macro editor in angular, then we dont need to have this at all (which is just a path to the legacy editor)
"/" + queryStrings.GetValue<string>("application") + "/framed/" +
Uri.EscapeDataString("/umbraco/developer/macros/editMacro.aspx?macroID=" + macro.Id)));
}
}
return nodes;
}
protected override MenuItemCollection GetMenuForNode(string id, FormDataCollection queryStrings)
{
var menu = new MenuItemCollection();
if (id == Constants.System.Root.ToInvariantString())
{
//Create the normal create action
menu.Items.Add<ActionNew>(Services.TextService.Localize("actions", ActionNew.Instance.Alias))
//Since we haven't implemented anything for macros in angular, this needs to be converted to
//use the legacy format
.ConvertLegacyMenuItem(null, "initmacros", queryStrings.GetValue<string>("application"));
//refresh action
menu.Items.Add<RefreshNode, ActionRefresh>(Services.TextService.Localize("actions", ActionRefresh.Instance.Alias), true);
return menu;
}
var macro = Services.MacroService.GetById(int.Parse(id));
if (macro == null) return new MenuItemCollection();
//add delete option for all languages
menu.Items.Add<ActionDelete>(Services.TextService.Localize("actions", ActionDelete.Instance.Alias))
//Since we haven't implemented anything for languages in angular, this needs to be converted to
//use the legacy format
.ConvertLegacyMenuItem(new UmbracoEntity
{
Id = macro.Id,
Level = 1,
ParentId = -1,
Name = macro.Name
}, "macros", queryStrings.GetValue<string>("application"));
return menu;
}
}
}

View File

@@ -326,6 +326,7 @@
<Compile Include="Editors\IEditorValidator.cs" />
<Compile Include="Editors\EditorModelEventManager.cs" />
<Compile Include="HtmlHelperBackOfficeExtensions.cs" />
<Compile Include="Trees\MacrosTreeController.cs" />
<Compile Include="Trees\UserTypesTreeController.cs" />
<Compile Include="_Legacy\Actions\Action.cs" />
<Compile Include="_Legacy\Actions\ActionAssignDomain.cs" />
@@ -1547,7 +1548,6 @@
<Compile Include="umbraco.presentation\umbraco\Trees\BaseTree.cs" />
<Compile Include="umbraco.presentation\umbraco\Trees\FileSystemTree.cs" />
<Compile Include="umbraco.presentation\umbraco\Trees\loadDictionary.cs" />
<Compile Include="umbraco.presentation\umbraco\Trees\loadMacros.cs" />
<Compile Include="umbraco.presentation\umbraco\Trees\loadMemberGroups.cs" />
<Compile Include="umbraco.presentation\umbraco\Trees\loadPackages.cs" />
<Compile Include="umbraco.presentation\umbraco\Trees\loadScripts.cs" />

View File

@@ -1,66 +0,0 @@
using System;
using System.Text;
using umbraco.DataLayer;
using umbraco.cms.presentation.Trees;
using Umbraco.Core;
using Umbraco.Web.Trees;
namespace umbraco
{
/// <summary>
/// Handles loading of the cache application into the developer application tree
/// </summary>
[Tree(Constants.Applications.Developer, "macros", "Macros", sortOrder: 2)]
public class loadMacros : BaseTree
{
public loadMacros(string application) : base(application) { }
protected override void CreateRootNode(ref XmlTreeNode rootNode)
{
rootNode.NodeType = "init" + TreeAlias;
rootNode.NodeID = "init";
}
/// <summary>
/// Renders the JS.
/// </summary>
/// <param name="Javascript">The javascript.</param>
public override void RenderJS(ref StringBuilder Javascript)
{
Javascript.Append(
@"
function openMacro(id) {
UmbClientMgr.contentFrame('developer/macros/editMacro.aspx?macroID=' + id);
}
");
}
/// <summary>
/// This will call the normal Render method by passing the converted XmlTree to an XmlDocument.
/// TODO: need to update this render method to do everything that the obsolete render method does and remove the obsolete method
/// </summary>
/// <param name="tree"></param>
public override void Render(ref XmlTree tree)
{
foreach(var macros in ApplicationContext.Current.DatabaseContext.Database.Query<dynamic>("select id, macroName from cmsMacro order by macroName"))
{
XmlTreeNode xNode = XmlTreeNode.Create(this);
xNode.NodeID = macros.id.ToString();
xNode.Text = macros.macroName;
xNode.Action = "javascript:openMacro(" + macros.id + ");";
xNode.Icon = " icon-settings-alt";
xNode.OpenIcon = "icon-settings-alt";
OnBeforeNodeRender(ref tree, ref xNode, EventArgs.Empty);
if (xNode != null)
{
tree.Add(xNode);
}
OnAfterNodeRender(ref tree, ref xNode, EventArgs.Empty);
}
}
}
}

View File

@@ -44,7 +44,7 @@ namespace umbraco.cms.presentation.developer
if (IsPostBack == false)
{
ClientTools
.SetActiveTreeType(TreeDefinitionCollection.Instance.FindTree<loadMacros>().Tree.Alias)
.SetActiveTreeType(Constants.Trees.Macros)
.SyncTree("-1,init," + _macro.Id, false);
string tempMacroAssembly = _macro.ControlAssembly ?? "";
@@ -292,7 +292,7 @@ namespace umbraco.cms.presentation.developer
Page.Validate();
ClientTools
.SetActiveTreeType(TreeDefinitionCollection.Instance.FindTree<loadMacros>().Tree.Alias)
.SetActiveTreeType(Constants.Trees.Macros)
.SyncTree("-1,init," + _macro.Id.ToInvariantString(), true); //true forces the reload
var tempMacroAssembly = macroAssembly.Text;