From e6d1eb0ba0286fb9e9ead4d0e28a11584613d32d Mon Sep 17 00:00:00 2001 From: Shannon Date: Thu, 20 Nov 2014 16:28:50 +1100 Subject: [PATCH] Converts languages tree to new structure --- .../config/trees.Release.config | 2 +- src/Umbraco.Web.UI/config/trees.config | 6 +- .../Trees/LanguageTreeController.cs | 80 +++++++++++++++++++ src/Umbraco.Web/Umbraco.Web.csproj | 3 +- .../umbraco/Trees/loadLanguages.cs | 3 +- .../umbraco/settings/editLanguage.aspx.cs | 3 +- 6 files changed, 90 insertions(+), 7 deletions(-) create mode 100644 src/Umbraco.Web/Trees/LanguageTreeController.cs diff --git a/src/Umbraco.Web.UI/config/trees.Release.config b/src/Umbraco.Web.UI/config/trees.Release.config index 2124c72560..f58a051a2a 100644 --- a/src/Umbraco.Web.UI/config/trees.Release.config +++ b/src/Umbraco.Web.UI/config/trees.Release.config @@ -13,7 +13,7 @@ - + diff --git a/src/Umbraco.Web.UI/config/trees.config b/src/Umbraco.Web.UI/config/trees.config index 2124c72560..2f7ca1acf0 100644 --- a/src/Umbraco.Web.UI/config/trees.config +++ b/src/Umbraco.Web.UI/config/trees.config @@ -8,12 +8,12 @@ - + - + @@ -37,5 +37,5 @@ + iconClosed="icon-folder" iconOpen="icon-folder" sortOrder="10" />--> \ No newline at end of file diff --git a/src/Umbraco.Web/Trees/LanguageTreeController.cs b/src/Umbraco.Web/Trees/LanguageTreeController.cs new file mode 100644 index 0000000000..39fd1ebee5 --- /dev/null +++ b/src/Umbraco.Web/Trees/LanguageTreeController.cs @@ -0,0 +1,80 @@ +using System; +using System.Globalization; +using System.Net.Http.Formatting; +using umbraco; +using umbraco.BusinessLogic.Actions; +using Umbraco.Core; +using Umbraco.Web.Models.Trees; +using Umbraco.Web.Mvc; +using Umbraco.Web.WebApi.Filters; +using Constants = Umbraco.Core.Constants; + +namespace Umbraco.Web.Trees +{ + [UmbracoTreeAuthorize(Constants.Trees.Languages)] + [LegacyBaseTree(typeof(loadLanguages))] + [Tree(Constants.Applications.Settings, Constants.Trees.Languages, "Languages")] + [PluginController("UmbracoTrees")] + [CoreTree] + public class LanguageTreeController : TreeController + { + /// + /// The method called to render the contents of the tree structure + /// + /// + /// + /// All of the query string parameters passed from jsTree + /// + /// + /// We are allowing an arbitrary number of query strings to be pased in so that developers are able to persist custom data from the front-end + /// to the back end to be used in the query for model data. + /// + protected override TreeNodeCollection GetTreeNodes(string id, FormDataCollection queryStrings) + { + var nodes = new TreeNodeCollection(); + + if (id == Constants.System.Root.ToInvariantString()) + { + var languages = Services.LocalizationService.GetAllLanguages(); + foreach (var language in languages) + { + nodes.Add( + CreateTreeNode( + language.Id.ToString(CultureInfo.InvariantCulture), "-1", queryStrings, language.CultureInfo.DisplayName, "icon-flag-alt", false, + //TODO: Rebuild the language editor in angular, then we dont need to have this at all (which is just a path to the legacy editor) + "/" + queryStrings.GetValue("application") + "/framed/" + + Uri.EscapeDataString("/umbraco/settings/editLanguage.aspx?id=" + language.Id))); + } + } + return nodes; + } + + /// + /// Returns the menu structure for the node + /// + /// + /// + /// + protected override MenuItemCollection GetMenuForNode(string id, FormDataCollection queryStrings) + { + var menu = new MenuItemCollection(); + + if (id == Constants.System.Root.ToInvariantString()) + { + //Create the normal create action + var createMenuItem = menu.Items.Add(ui.Text("actions", ActionNew.Instance.Alias)); + createMenuItem.LaunchDialogUrl("/umbraco/create.aspx?nodeId=init&nodeType=initlanguages&nodeName=Languages", ui.GetText("general", "create")); + + //refresh action + menu.Items.Add(ui.Text("actions", ActionRefresh.Instance.Alias), true); + + return menu; + } + + //add delete option for all languages + menu.Items.Add(ui.Text("actions", ActionDelete.Instance.Alias)); + + return menu; + } + } +} \ No newline at end of file diff --git a/src/Umbraco.Web/Umbraco.Web.csproj b/src/Umbraco.Web/Umbraco.Web.csproj index c197ae6852..d871aced4e 100644 --- a/src/Umbraco.Web/Umbraco.Web.csproj +++ b/src/Umbraco.Web/Umbraco.Web.csproj @@ -506,6 +506,7 @@ + @@ -2160,4 +2161,4 @@ - + \ No newline at end of file diff --git a/src/Umbraco.Web/umbraco.presentation/umbraco/Trees/loadLanguages.cs b/src/Umbraco.Web/umbraco.presentation/umbraco/Trees/loadLanguages.cs index 7dd10e3755..8bd6d33ebf 100644 --- a/src/Umbraco.Web/umbraco.presentation/umbraco/Trees/loadLanguages.cs +++ b/src/Umbraco.Web/umbraco.presentation/umbraco/Trees/loadLanguages.cs @@ -29,7 +29,8 @@ using Umbraco.Core; namespace umbraco { - [Tree(Constants.Applications.Settings, "languages", "Languages", sortOrder: 4)] + [Obsolete("This is no longer used and will be removed from the codebase in the future")] + //[Tree(Constants.Applications.Settings, "languages", "Languages", sortOrder: 4)] public class loadLanguages : BaseTree { public loadLanguages(string application) : base(application) { } diff --git a/src/Umbraco.Web/umbraco.presentation/umbraco/settings/editLanguage.aspx.cs b/src/Umbraco.Web/umbraco.presentation/umbraco/settings/editLanguage.aspx.cs index 9bc4beefe7..bcb1a5f8db 100644 --- a/src/Umbraco.Web/umbraco.presentation/umbraco/settings/editLanguage.aspx.cs +++ b/src/Umbraco.Web/umbraco.presentation/umbraco/settings/editLanguage.aspx.cs @@ -11,6 +11,7 @@ using System.Web.UI.WebControls; using System.Web.UI.HtmlControls; using umbraco.cms.presentation.Trees; using Umbraco.Core; +using Umbraco.Web.Trees; namespace umbraco.settings { @@ -42,7 +43,7 @@ namespace umbraco.settings updateCultureList(); ClientTools - .SetActiveTreeType(TreeDefinitionCollection.Instance.FindTree().Tree.Alias) + .SetActiveTreeType(Constants.Trees.Languages) .SyncTree(helper.Request("id"), false); }