From 30f147a9d304bfe2c01652644a1a9cebe6926950 Mon Sep 17 00:00:00 2001 From: perploug Date: Tue, 8 Oct 2013 10:27:22 +0200 Subject: [PATCH 01/77] excluding appsettings and connectionstrings config --- .../src/common/directives/umbtreeitem.directive.js | 7 ++++++- src/Umbraco.Web.UI.Client/src/less/tree.less | 14 ++++++++++++++ src/Umbraco.Web.UI/Umbraco.Web.UI.csproj | 2 -- 3 files changed, 20 insertions(+), 3 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/common/directives/umbtreeitem.directive.js b/src/Umbraco.Web.UI.Client/src/common/directives/umbtreeitem.directive.js index 1fe91ae975..a4c64994c3 100644 --- a/src/Umbraco.Web.UI.Client/src/common/directives/umbtreeitem.directive.js +++ b/src/Umbraco.Web.UI.Client/src/common/directives/umbtreeitem.directive.js @@ -32,7 +32,7 @@ angular.module("umbraco.directives") activetree:'@' }, - template: '
  • ' + + template: '
  • ' + '' + '' + '' + @@ -139,6 +139,10 @@ angular.module("umbraco.directives") scope.loadChildren(null, scope.node, true); }else if( !node.metaData.treeAlias && activePath.indexOf(node.id) >= 0){ scope.loadChildren(null, scope.node, true); + + scope.path = activePath.filter( function(element) { + return listToDelete.indexOf(obj.id) === -1; + }); } } }; @@ -146,6 +150,7 @@ angular.module("umbraco.directives") //if the current path contains the node id, we will auto-expand the tree item children scope.expandActivePath(scope.node, scope.activetree, scope.path); + scope.node.stateCssClass = scope.node.cssClasses.join(" "); var template = '
    '; var newElement = angular.element(template); diff --git a/src/Umbraco.Web.UI.Client/src/less/tree.less b/src/Umbraco.Web.UI.Client/src/less/tree.less index 78aca06998..b162bb34bb 100644 --- a/src/Umbraco.Web.UI.Client/src/less/tree.less +++ b/src/Umbraco.Web.UI.Client/src/less/tree.less @@ -208,6 +208,20 @@ li.root > div > a.umb-options { float: left } + +// Tree item states +// ------------------------- +div.not-published > i.icon,div.not-published > a{ + color: @grayLight; +} +div.protected:before{ + content:"\e256"; + font-family: 'icomoon'; + color: red; + position: absolute; +} + + // Tree context menu // ------------------------- .umb-actions { diff --git a/src/Umbraco.Web.UI/Umbraco.Web.UI.csproj b/src/Umbraco.Web.UI/Umbraco.Web.UI.csproj index 7591222b9d..17315299ba 100644 --- a/src/Umbraco.Web.UI/Umbraco.Web.UI.csproj +++ b/src/Umbraco.Web.UI/Umbraco.Web.UI.csproj @@ -623,7 +623,6 @@ Designer - ClientDependency.config Designer @@ -635,7 +634,6 @@ BaseRestExtensions.config - log4net.config From 90ec849b5f7e329da1dfff7f77d7f0bb4dfcb49e Mon Sep 17 00:00:00 2001 From: perploug Date: Tue, 8 Oct 2013 10:35:13 +0200 Subject: [PATCH 02/77] adding tree states css --- src/Umbraco.Web.UI.Client/src/less/tree.less | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/Umbraco.Web.UI.Client/src/less/tree.less b/src/Umbraco.Web.UI.Client/src/less/tree.less index b162bb34bb..ae28237eb0 100644 --- a/src/Umbraco.Web.UI.Client/src/less/tree.less +++ b/src/Umbraco.Web.UI.Client/src/less/tree.less @@ -217,8 +217,11 @@ div.not-published > i.icon,div.not-published > a{ div.protected:before{ content:"\e256"; font-family: 'icomoon'; - color: red; + color: @red; position: absolute; + font-size: 20px; + padding-left: 7px; + padding-top: 7px; } From dfc3e468c47e96e8d90e7648a55fa77f9877b382 Mon Sep 17 00:00:00 2001 From: perploug Date: Tue, 8 Oct 2013 11:07:42 +0200 Subject: [PATCH 03/77] fixes: U4-3046 rollback dialog --- .../umbraco.presentation/umbraco/dialogs/rollBack.aspx.cs | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/Umbraco.Web/umbraco.presentation/umbraco/dialogs/rollBack.aspx.cs b/src/Umbraco.Web/umbraco.presentation/umbraco/dialogs/rollBack.aspx.cs index 0d4e739cdc..cbe0ab3d7f 100644 --- a/src/Umbraco.Web/umbraco.presentation/umbraco/dialogs/rollBack.aspx.cs +++ b/src/Umbraco.Web/umbraco.presentation/umbraco/dialogs/rollBack.aspx.cs @@ -158,8 +158,6 @@ namespace umbraco.presentation.dialogs feedBackMsg.Text = ui.Text("rollback", "documentRolledBack", vars, new global::umbraco.BusinessLogic.User(0)) + "

    " + ui.Text("closeThisWindow") + ""; diffPanel.Visible = false; pl_buttons.Visible = false; - - ClientTools.ChangeContentFrameUrl("editContent.aspx?Id=" + d.Id.ToString()); } } } From 196ce492bea520b0af3ec27e99060b309175d07e Mon Sep 17 00:00:00 2001 From: perploug Date: Tue, 8 Oct 2013 13:18:42 +0200 Subject: [PATCH 04/77] Section menu overflow detection and extra tray --- .../directives/umbsections.directive.js | 75 +++++++++++++++++++ .../src/common/services/navigation.service.js | 11 ++- src/Umbraco.Web.UI.Client/src/less/grid.less | 17 ++++- .../src/less/sections.less | 13 +++- .../src/views/common/navigation.controller.js | 14 +--- .../src/views/directives/umb-navigation.html | 33 +------- .../src/views/directives/umb-sections.html | 50 +++++++++++++ 7 files changed, 164 insertions(+), 49 deletions(-) create mode 100644 src/Umbraco.Web.UI.Client/src/common/directives/umbsections.directive.js create mode 100644 src/Umbraco.Web.UI.Client/src/views/directives/umb-sections.html diff --git a/src/Umbraco.Web.UI.Client/src/common/directives/umbsections.directive.js b/src/Umbraco.Web.UI.Client/src/common/directives/umbsections.directive.js new file mode 100644 index 0000000000..d2544f171c --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/common/directives/umbsections.directive.js @@ -0,0 +1,75 @@ +/** +* @ngdoc directive +* @name umbraco.directives.directive:umbSections +* @restrict E +**/ +function sectionsDirective($timeout, $window, navigationService, sectionResource) { + return { + restrict: "E", // restrict to an element + replace: true, // replace the html element with the template + templateUrl: 'views/directives/umb-sections.html', + link: function (scope, element, attr, ctrl) { + + scope.maxSections = 7; + scope.overflowingSections = 0; + + function loadSections(){ + sectionResource.getSections() + .then(function (result) { + scope.sections = result; + calculateHeight(); + }); + } + + function calculateHeight(){ + $timeout(function(){ + //total height minus room for avatar and help icon + var height = $(window).height()-200; + scope.totalSections = scope.sections.length; + scope.maxSections = Math.floor(height / 70); + scope.needTray = false; + + if(scope.totalSections > scope.maxSections){ + scope.needTray = true; + scope.overflowingSections = scope.maxSections - scope.totalSections; + } + }); + } + + //When the user logs in + scope.$on("authenticated", function (evt, data) { + //populate their sections if the user has changed + if (data.lastUserId !== data.user.id) { + loadSections(); + } + }); + + //on page refresh: + if(!scope.sections){ + loadSections(); + } + + //on page resize + window.onresize = calculateHeight; + + scope.avatarClick = function(){ + navigationService.showUserDialog(); + }; + + scope.sectionClick = function(section){ + navigationService.showTree(section.alias); + }; + + scope.sectionDblClick = function(section){ + navigationService.changeSection(section.alias); + }; + + scope.trayClick = function(){ + navigationService.showTray(); + }; + + } + }; +} + +angular.module('umbraco.directives').directive("umbSections", sectionsDirective); diff --git a/src/Umbraco.Web.UI.Client/src/common/services/navigation.service.js b/src/Umbraco.Web.UI.Client/src/common/services/navigation.service.js index 2495bbf00c..12b0f4b6f4 100644 --- a/src/Umbraco.Web.UI.Client/src/common/services/navigation.service.js +++ b/src/Umbraco.Web.UI.Client/src/common/services/navigation.service.js @@ -31,7 +31,7 @@ angular.module('umbraco.services') ui.showContextMenu = false; ui.showContextMenuDialog = false; ui.stickyNavigation = false; - + ui.showTray = false; service.hideUserDialog(); //$("#search-form input").focus(); break; @@ -60,6 +60,7 @@ angular.module('umbraco.services') ui.showContextMenuDialog = false; ui.showSearchResults = false; ui.stickyNavigation = false; + ui.showTray = false; break; } } @@ -122,6 +123,13 @@ angular.module('umbraco.services') setMode("tree"); }, + showTray: function () { + ui.showTray = true; + }, + + hideTray: function () { + ui.showTray = false; + }, /** * @ngdoc method * @name umbraco.services.navigationService#syncTree @@ -192,7 +200,6 @@ angular.module('umbraco.services') return; } - service.active = false; $timeout(function(){ diff --git a/src/Umbraco.Web.UI.Client/src/less/grid.less b/src/Umbraco.Web.UI.Client/src/less/grid.less index dc2c1b5345..1734cba772 100644 --- a/src/Umbraco.Web.UI.Client/src/less/grid.less +++ b/src/Umbraco.Web.UI.Client/src/less/grid.less @@ -66,14 +66,26 @@ body { position: absolute; } -/* refactor colors into a seperate class */ #applications { z-index: 1000; height: 100%; - position: relative; + left: 0px; + top: 0; + bottom: 0; + position: absolute; text-align: center } +#applications-tray { + z-index: 900; + left: 80px; + top: 0; + bottom: 0; + position: absolute; + height: 100%; + text-align: center; +} + #search-form { display: block; margin: 0px; @@ -105,7 +117,6 @@ body { padding-top: 100px; } - #dialog { min-width: 500px; left: 100%; diff --git a/src/Umbraco.Web.UI.Client/src/less/sections.less b/src/Umbraco.Web.UI.Client/src/less/sections.less index 19ce8cb0c3..3f6f10ae74 100644 --- a/src/Umbraco.Web.UI.Client/src/less/sections.less +++ b/src/Umbraco.Web.UI.Client/src/less/sections.less @@ -6,6 +6,7 @@ ul.sections { display: block; background: @blackLight; height: 100%; + width: 80px; } ul.sections li { @@ -97,8 +98,7 @@ ul.sections li.current a{ padding-left: 0px; } -ul.sections li.help { - +ul.sections li.help { margin: 0; position: absolute; bottom: 0; @@ -110,3 +110,12 @@ ul.sections li.help { ul.sections li.help a { border-bottom: none; } + +// Section slide-out tray for additional apps +// ------------------------- +li.expand a, li.expand{border: none !Important;} + +ul.sections-tray { + padding-top: 100px; + width: 80px; +} diff --git a/src/Umbraco.Web.UI.Client/src/views/common/navigation.controller.js b/src/Umbraco.Web.UI.Client/src/views/common/navigation.controller.js index 0985db5a02..20703fe9c7 100644 --- a/src/Umbraco.Web.UI.Client/src/views/common/navigation.controller.js +++ b/src/Umbraco.Web.UI.Client/src/views/common/navigation.controller.js @@ -30,20 +30,10 @@ function NavigationController($scope,$rootScope, $location, $log, $routeParams, //the tree event handler i used to subscribe to the main tree click events $scope.treeEventHandler = $({}); - $scope.selectedId = navigationService.currentId; - $scope.sections = navigationService.sections; - //When the user logs in - $scope.$on("authenticated", function (evt, data) { - //populate their sections if the user has changed - if (data.lastUserId !== data.user.id) { - sectionResource.getSections() - .then(function (result) { - $scope.sections = result; - }); - } - }); + + //This reacts to clicks passed to the body element which emits a global call to close all dialogs $rootScope.$on("closeDialogs", function (event) { diff --git a/src/Umbraco.Web.UI.Client/src/views/directives/umb-navigation.html b/src/Umbraco.Web.UI.Client/src/views/directives/umb-navigation.html index eb169d2218..a1aa9da0ba 100644 --- a/src/Umbraco.Web.UI.Client/src/views/directives/umb-navigation.html +++ b/src/Umbraco.Web.UI.Client/src/views/directives/umb-navigation.html @@ -1,37 +1,10 @@

    -
    - -
    + + -
  • ' + ''; diff --git a/src/Umbraco.Web.UI.Client/src/common/directives/umbtreeitem.directive.js b/src/Umbraco.Web.UI.Client/src/common/directives/umbtreeitem.directive.js index a4c64994c3..427399fbea 100644 --- a/src/Umbraco.Web.UI.Client/src/common/directives/umbtreeitem.directive.js +++ b/src/Umbraco.Web.UI.Client/src/common/directives/umbtreeitem.directive.js @@ -29,7 +29,8 @@ angular.module("umbraco.directives") eventhandler: '=', path: '@', node:'=', - activetree:'@' + activetree:'@', + tree:'=' }, template: '
  • ' + @@ -61,7 +62,7 @@ angular.module("umbraco.directives") about it. */ scope.options = function(e, n, ev){ - emitEvent("treeOptionsClick", {element: e, node: n, event: ev}); + emitEvent("treeOptionsClick", {element: e, tree: scope.tree, node: n, event: ev}); }; /** @@ -71,7 +72,7 @@ angular.module("umbraco.directives") defined on the tree */ scope.select = function(e,n,ev){ - emitEvent("treeNodeSelect", { element: e, node: n, event: ev }); + emitEvent("treeNodeSelect", { element: e, tree: scope.tree, node: n, event: ev }); }; /** method to set the current animation for the node. @@ -95,7 +96,7 @@ angular.module("umbraco.directives") scope.load = function(arrow, node) { if (node.expanded) { enableDeleteAnimations = false; - emitEvent("treeNodeCollapsing", { element: arrow, node: node }); + emitEvent("treeNodeCollapsing", { element: arrow, tree: scope.tree, node: node }); node.expanded = false; } else { @@ -106,19 +107,19 @@ angular.module("umbraco.directives") /* helper to force reloading children of a tree node */ scope.loadChildren = function(arrow, node, forceReload){ //emit treeNodeExpanding event, if a callback object is set on the tree - emitEvent("treeNodeExpanding", { element: arrow, node: node }); + emitEvent("treeNodeExpanding", { element: arrow, tree: scope.tree, node: node }); if (node.hasChildren && (forceReload || !node.children || (angular.isArray(node.children) && node.children.length === 0))) { //get the children from the tree service treeService.loadNodeChildren({ node: node, section: scope.section }) .then(function(data) { //emit expanded event - emitEvent("treeNodeExpanded", { element: arrow, node: node, children: data }); + emitEvent("treeNodeExpanded", { element: arrow, tree: scope.tree, node: node, children: data }); enableDeleteAnimations = true; }); } else { - emitEvent("treeNodeExpanded", { element: arrow, node: node, children: node.children }); + emitEvent("treeNodeExpanded", { element: arrow, tree: scope.tree, node: node, children: node.children }); node.expanded = true; enableDeleteAnimations = true; } @@ -152,7 +153,7 @@ angular.module("umbraco.directives") scope.expandActivePath(scope.node, scope.activetree, scope.path); scope.node.stateCssClass = scope.node.cssClasses.join(" "); - var template = '
    '; + var template = '
    '; var newElement = angular.element(template); $compile(newElement)(scope); element.append(newElement); diff --git a/src/Umbraco.Web.UI.Client/src/common/services/navigation.service.js b/src/Umbraco.Web.UI.Client/src/common/services/navigation.service.js index 12b0f4b6f4..d07157f962 100644 --- a/src/Umbraco.Web.UI.Client/src/common/services/navigation.service.js +++ b/src/Umbraco.Web.UI.Client/src/common/services/navigation.service.js @@ -168,6 +168,10 @@ angular.module('umbraco.services') //TODO: investicate if we need to halt watch triggers //and instead pause them and then manually tell the tree to digest path changes //as this might be a bit heavy loading + if(!angular.isArray(path)){ + path = path.split(","); + } + this.ui.currentPath = path; }, diff --git a/src/Umbraco.Web.UI.Client/src/common/services/search.service.js b/src/Umbraco.Web.UI.Client/src/common/services/search.service.js index 39dda8f5d5..2801ba300a 100644 --- a/src/Umbraco.Web.UI.Client/src/common/services/search.service.js +++ b/src/Umbraco.Web.UI.Client/src/common/services/search.service.js @@ -13,6 +13,7 @@ angular.module('umbraco.services') _.each(data, function(el){ el.menuUrl = "UmbracoTrees/ContentTree/GetMenu?id=" + el.id + "&application=content"; + el.metaData = {treeAlias: "content"}; }); m.results.push({ @@ -32,6 +33,7 @@ angular.module('umbraco.services') _.each(data, function(el){ el.menuUrl = "UmbracoTrees/MediaTree/GetMenu?id=" + el.id + "&application=media"; + el.metaData = {treeAlias: "media"}; }); m.results.push({ diff --git a/src/Umbraco.Web.UI.Client/src/views/common/navigation.controller.js b/src/Umbraco.Web.UI.Client/src/views/common/navigation.controller.js index 20703fe9c7..51421b9b16 100644 --- a/src/Umbraco.Web.UI.Client/src/views/common/navigation.controller.js +++ b/src/Umbraco.Web.UI.Client/src/views/common/navigation.controller.js @@ -43,6 +43,7 @@ function NavigationController($scope,$rootScope, $location, $log, $routeParams, } }); + //this reacts to the options item in the tree $scope.treeEventHandler.bind("treeOptionsClick", function (ev, args) { ev.stopPropagation(); @@ -64,9 +65,8 @@ function NavigationController($scope,$rootScope, $location, $log, $routeParams, $scope.currentNode = args.node; args.scope = $scope; - if(args.event && args.event.altKey){ - args.skipDefault = true; - } + //always skip default + args.skipDefault = true; navigationService.showMenu(ev, args); }; diff --git a/src/Umbraco.Web.UI/umbraco/members/EditMemberType.aspx b/src/Umbraco.Web.UI/umbraco/members/EditMemberType.aspx index 3e274b567f..324f8fb0fa 100644 --- a/src/Umbraco.Web.UI/umbraco/members/EditMemberType.aspx +++ b/src/Umbraco.Web.UI/umbraco/members/EditMemberType.aspx @@ -13,20 +13,23 @@ - + + + + diff --git a/src/Umbraco.Web/Umbraco.Web.csproj b/src/Umbraco.Web/Umbraco.Web.csproj index 457bfc6b6d..1988830f85 100644 --- a/src/Umbraco.Web/Umbraco.Web.csproj +++ b/src/Umbraco.Web/Umbraco.Web.csproj @@ -387,6 +387,7 @@ ASPXCodeBehind + @@ -1587,7 +1588,6 @@ - diff --git a/src/Umbraco.Web/umbraco.presentation/umbraco/Trees/loadPackager.cs b/src/Umbraco.Web/umbraco.presentation/umbraco/Trees/loadPackager.cs index 4935886e9a..19d303cbc2 100644 --- a/src/Umbraco.Web/umbraco.presentation/umbraco/Trees/loadPackager.cs +++ b/src/Umbraco.Web/umbraco.presentation/umbraco/Trees/loadPackager.cs @@ -23,6 +23,7 @@ using umbraco.interfaces; using umbraco.DataLayer; using umbraco.BusinessLogic.Utils; using Umbraco.Core; +using umbraco.cms.presentation.Trees; namespace umbraco { @@ -30,9 +31,14 @@ namespace umbraco /// Handles loading of the packager application into the developer application tree /// [Tree(Constants.Applications.Developer, "packager", "Packages", sortOrder: 3)] - public class loadPackager : ITree + public class loadPackager : BaseTree { #region TreeI Members + public loadPackager(string application) : base(application) { } + protected override void CreateRootNode(ref XmlTreeNode rootNode) + { + + } private int _id; private string _app; @@ -59,7 +65,7 @@ namespace umbraco /// Renders the Javascript. /// /// The javascript. - public void RenderJS(ref StringBuilder Javascript) + public override void RenderJS(ref StringBuilder Javascript) { Javascript.Append( @"function openPackageCategory(url) { @@ -71,37 +77,37 @@ namespace umbraco /// Renders the specified tree item. /// /// The tree. - public void Render(ref XmlDocument Tree) + public override void Render(ref XmlTree tree) { - XmlElement root = Tree.DocumentElement; + string[,] items = { { "BrowseRepository.aspx", "Install from repository" }, { "CreatePackage.aspx", "Createdjjj Packages" }, { "installedPackages.aspx", "Installedjj packages" }, { "StarterKits.aspx", "Starter kit" }, { "installer.aspx", "Install local package" } }; for (int i = 0; i <= items.GetUpperBound(0); i++) { - - XmlElement treeElement = Tree.CreateElement("tree"); - treeElement.SetAttribute("nodeID", "-1"); - treeElement.SetAttribute("text", items[i, 1]); - treeElement.SetAttribute("icon", "icon-folder"); - treeElement.SetAttribute("openIcon", "folder_o.gif"); - + XmlTreeNode xNode = XmlTreeNode.Create(this); + xNode.NodeID = "-1"; + xNode.Text = items[i, 1]; + xNode.Icon = "icon-folder"; + xNode.OpenIcon = "icon-folder"; + + //Make sure the different sections load the correct childnodes. switch (items[i, 0]) { case "installedPackages.aspx": if (cms.businesslogic.packager.InstalledPackage.GetAllInstalledPackages().Count > 0) { - treeElement.SetAttribute("src", "tree.aspx?app=" + this._app + "&id=" + this._id + "&treeType=packagerPackages&packageType=installed" + "&rnd=" + Guid.NewGuid()); - treeElement.SetAttribute("nodeType", "installedPackages"); - treeElement.SetAttribute("menu", "L"); - treeElement.SetAttribute("text", ui.Text("treeHeaders", "installedPackages")); - treeElement.SetAttribute("hasChildren", "true"); + xNode.Source = "tree.aspx?app=" + this._app + "&id=" + this._id + "&treeType=packagerPackages&packageType=installed" + "&rnd=" + Guid.NewGuid(); + xNode.NodeType = "installedPackages"; + xNode.Menu.Add(umbraco.BusinessLogic.Actions.ActionRefresh.Instance); + xNode.Text = ui.Text("treeHeaders", "installedPackages"); + xNode.HasChildren = true; } else { - treeElement.SetAttribute("text", ""); + xNode.Text = ""; } break; @@ -116,63 +122,59 @@ namespace umbraco // the repositories will then be fetched from the loadPackages class. if (repos.Count > 1) { - treeElement.SetAttribute("src", "tree.aspx?app=" + this._app + "&id=" + this._id + "&treeType=packagerPackages&packageType=repositories" + "&rnd=" + Guid.NewGuid()); - treeElement.SetAttribute("nodeType", "packagesRepositories"); - treeElement.SetAttribute("menu", "L"); - treeElement.SetAttribute("text", ui.Text("treeHeaders", "repositories")); - treeElement.SetAttribute("hasChildren", "true"); + xNode.Source = "tree.aspx?app=" + this._app + "&id=" + this._id + "&treeType=packagerPackages&packageType=repositories" + "&rnd=" + Guid.NewGuid(); + xNode.NodeType = "packagesRepositories"; + xNode.Menu.Add(umbraco.BusinessLogic.Actions.ActionRefresh.Instance); + xNode.Text = ui.Text("treeHeaders", "repositories"); + xNode.HasChildren = true; } //if only one repo, then just list it directly and name it as the repository. //the packages will be loaded from the loadPackages class with a repoAlias querystring else if (repos.Count == 1) { - treeElement.SetAttribute("text", repos[0].Name); - treeElement.SetAttribute("src", "tree.aspx?app=" + this._app + "&id=" + this._id + "&treeType=packagerPackages&packageType=repository&repoGuid=" + repos[0].Guid + "&rnd=" + Guid.NewGuid()); - treeElement.SetAttribute("nodeType", "packagesRepository"); - treeElement.SetAttribute("menu", "L"); - treeElement.SetAttribute("action", "javascript:openPackageCategory('BrowseRepository.aspx?repoGuid=" + repos[0].Guid + "');"); - treeElement.SetAttribute("icon", "icon-server-alt"); - treeElement.SetAttribute("openIcon", "icon-server-alt"); - treeElement.SetAttribute("hasChildren", "true"); + xNode.Text = repos[0].Name; + xNode.Source = "tree.aspx?app=" + this._app + "&id=" + this._id + "&treeType=packagerPackages&packageType=repository&repoGuid=" + repos[0].Guid + "&rnd=" + Guid.NewGuid(); + xNode.NodeType = "packagesRepository"; + xNode.Menu.Add(umbraco.BusinessLogic.Actions.ActionRefresh.Instance); + xNode.Action = "javascript:openPackageCategory('BrowseRepository.aspx?repoGuid=" + repos[0].Guid + "');"; + xNode.Icon = "icon-server-alt"; + xNode.HasChildren = true; } //if none registered, then remove the repo node. else if (repos.Count == 0) { - treeElement.SetAttribute("text", ""); + xNode.Text = ""; } break; case "CreatePackage.aspx": - treeElement.SetAttribute("src", "tree.aspx?app=" + this._app + "&id=" + this._id + "&treeType=packagerPackages&packageType=created" + "&rnd=" + Guid.NewGuid()); - treeElement.SetAttribute("nodeType", "createdPackages"); - treeElement.SetAttribute("menu", "C,L"); - treeElement.SetAttribute("text", ui.Text("treeHeaders", "createdPackages")); - treeElement.SetAttribute("hasChildren", "true"); + xNode.Source = "tree.aspx?app=" + this._app + "&id=" + this._id + "&treeType=packagerPackages&packageType=created" + "&rnd=" + Guid.NewGuid(); + xNode.NodeType = "createdPackages"; + xNode.Menu.Add(umbraco.BusinessLogic.Actions.ActionNew.Instance); + xNode.Menu.Add(umbraco.BusinessLogic.Actions.ActionRefresh.Instance); + xNode.Text = ui.Text("treeHeaders", "createdPackages"); + xNode.HasChildren = true; break; case "installer.aspx": - treeElement.SetAttribute("src", ""); - treeElement.SetAttribute("nodeType", "uploadPackage"); + xNode.Source = ""; + xNode.NodeType = "uploadPackage"; //treeElement.SetAttribute("menu", ""); - treeElement.SetAttribute("icon", "icon-page-up"); - treeElement.SetAttribute("openIcon", "icon-page-up"); - treeElement.SetAttribute("action", "javascript:openPackageCategory('" + items[i, 0] + "');"); - treeElement.SetAttribute("text", ui.Text("treeHeaders", "localPackage")); + xNode.Icon = "icon-page-up"; + xNode.Action = "javascript:openPackageCategory('" + items[i, 0] + "');"; + xNode.Text = ui.Text("treeHeaders", "localPackage"); break; case "StarterKits.aspx": - treeElement.SetAttribute("src", ""); - treeElement.SetAttribute("nodeType", "starterKits"); - //treeElement.SetAttribute("menu", "L"); - treeElement.SetAttribute("action", "javascript:openPackageCategory('" + items[i, 0] + "');"); - treeElement.SetAttribute("icon", "icon-flash"); - treeElement.SetAttribute("openIcon", "icon-flash"); - - treeElement.SetAttribute("text", ui.Text("treeHeaders", "installStarterKit")); + xNode.Source = ""; + xNode.NodeType = "starterKits"; + xNode.Action = "javascript:openPackageCategory('" + items[i, 0] + "');"; + xNode.Icon = "icon-flash"; + xNode.Text = ui.Text("treeHeaders", "installStarterKit"); break; @@ -180,9 +182,8 @@ namespace umbraco break; } - if (treeElement.GetAttribute("text") != "") - root.AppendChild(treeElement); - + if (xNode.Text != "") + tree.Add(xNode); } } From 7c5b6851a1f6a49e665ac73512c721367c0a5503 Mon Sep 17 00:00:00 2001 From: perploug Date: Tue, 8 Oct 2013 15:29:53 +0200 Subject: [PATCH 06/77] Added standard js libs to usercontrol proxy --- .../src/common/services/navigation.service.js | 7 +- .../src/views/common/navigation.controller.js | 2 +- .../Umbraco/dashboard/UserControlProxy.aspx | 16 ++++- .../UserControlProxy.aspx.designer.cs | 72 +++++++++++++++++++ .../umbraco/dashboard/ExamineManagement.ascx | 12 ++-- 5 files changed, 99 insertions(+), 10 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/common/services/navigation.service.js b/src/Umbraco.Web.UI.Client/src/common/services/navigation.service.js index d07157f962..8fa6e5ccec 100644 --- a/src/Umbraco.Web.UI.Client/src/common/services/navigation.service.js +++ b/src/Umbraco.Web.UI.Client/src/common/services/navigation.service.js @@ -53,6 +53,11 @@ angular.module('umbraco.services') ui.showContextMenu = false; ui.showSearchResults = true; ui.showContextMenuDialog = false; + + $timeout(function(){ + $(".form-search input").focus(); + }); + break; default: ui.showNavigation = false; @@ -122,7 +127,7 @@ angular.module('umbraco.services') } setMode("tree"); }, - + showTray: function () { ui.showTray = true; }, diff --git a/src/Umbraco.Web.UI.Client/src/views/common/navigation.controller.js b/src/Umbraco.Web.UI.Client/src/views/common/navigation.controller.js index 51421b9b16..2c27650873 100644 --- a/src/Umbraco.Web.UI.Client/src/views/common/navigation.controller.js +++ b/src/Umbraco.Web.UI.Client/src/views/common/navigation.controller.js @@ -25,7 +25,7 @@ function NavigationController($scope,$rootScope, $location, $log, $routeParams, //trigger search with a hotkey: keyboardService.bind("ctrl+shift+s", function(){ - $scope.nav.showTree(""); + $scope.nav.showSearch(); }); //the tree event handler i used to subscribe to the main tree click events diff --git a/src/Umbraco.Web.UI/Umbraco/dashboard/UserControlProxy.aspx b/src/Umbraco.Web.UI/Umbraco/dashboard/UserControlProxy.aspx index afca6cd0b6..a2c2a341bb 100644 --- a/src/Umbraco.Web.UI/Umbraco/dashboard/UserControlProxy.aspx +++ b/src/Umbraco.Web.UI/Umbraco/dashboard/UserControlProxy.aspx @@ -1,10 +1,24 @@ <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="UserControlProxy.aspx.cs" Inherits="Umbraco.Web.UI.Umbraco.Dashboard.UserControlProxy" %> +<%@ Register TagPrefix="umb" Namespace="ClientDependency.Core.Controls" Assembly="ClientDependency.Core" %> +<%@ Register TagPrefix="cc1" Namespace="umbraco.uicontrols" Assembly="controls" %> - + + + + + + + + + + + + +
    diff --git a/src/Umbraco.Web.UI/Umbraco/dashboard/UserControlProxy.aspx.designer.cs b/src/Umbraco.Web.UI/Umbraco/dashboard/UserControlProxy.aspx.designer.cs index 80d3584afb..19ac019a8f 100644 --- a/src/Umbraco.Web.UI/Umbraco/dashboard/UserControlProxy.aspx.designer.cs +++ b/src/Umbraco.Web.UI/Umbraco/dashboard/UserControlProxy.aspx.designer.cs @@ -12,6 +12,78 @@ namespace Umbraco.Web.UI.Umbraco.Dashboard { public partial class UserControlProxy { + /// + /// ClientLoader control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::umbraco.uicontrols.UmbracoClientDependencyLoader ClientLoader; + + /// + /// CssInclude1 control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::ClientDependency.Core.Controls.CssInclude CssInclude1; + + /// + /// JsInclude1 control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::ClientDependency.Core.Controls.JsInclude JsInclude1; + + /// + /// JsInclude3 control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::ClientDependency.Core.Controls.JsInclude JsInclude3; + + /// + /// JsInclude6 control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::ClientDependency.Core.Controls.JsInclude JsInclude6; + + /// + /// JsInclude11 control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::ClientDependency.Core.Controls.JsInclude JsInclude11; + + /// + /// JsInclude12 control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::ClientDependency.Core.Controls.JsInclude JsInclude12; + + /// + /// JsInclude2 control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::ClientDependency.Core.Controls.JsInclude JsInclude2; + /// /// form1 control. /// diff --git a/src/Umbraco.Web.UI/umbraco/dashboard/ExamineManagement.ascx b/src/Umbraco.Web.UI/umbraco/dashboard/ExamineManagement.ascx index 127ecac644..f713f35bee 100644 --- a/src/Umbraco.Web.UI/umbraco/dashboard/ExamineManagement.ascx +++ b/src/Umbraco.Web.UI/umbraco/dashboard/ExamineManagement.ascx @@ -28,15 +28,14 @@
    -
    -

    Examine Management

    - Examine Management - + +

    Examine Management

    +
    -

    Indexers

    +

    Indexers

    @@ -151,7 +150,7 @@
    -

    Searchers

    +

    Searchers

    @@ -212,7 +211,6 @@
    -
    From 2fc8244f710f36ca2d6b8bc4a87b043f05d99777 Mon Sep 17 00:00:00 2001 From: Sebastiaan Janssen Date: Tue, 8 Oct 2013 19:00:24 +0200 Subject: [PATCH 07/77] Fix NuGet package creation --- build/NuSpecs/UmbracoCms.Core.nuspec | 3 --- 1 file changed, 3 deletions(-) diff --git a/build/NuSpecs/UmbracoCms.Core.nuspec b/build/NuSpecs/UmbracoCms.Core.nuspec index 8698aaeb09..028817ea61 100644 --- a/build/NuSpecs/UmbracoCms.Core.nuspec +++ b/build/NuSpecs/UmbracoCms.Core.nuspec @@ -59,8 +59,6 @@ - - @@ -68,5 +66,4 @@ - \ No newline at end of file From 8b2e2f844744d2b9311945f25f7b47e9475d8310 Mon Sep 17 00:00:00 2001 From: Sebastiaan Janssen Date: Tue, 8 Oct 2013 19:00:57 +0200 Subject: [PATCH 08/77] Create appSettings.config / connectionString.config if they don't exist yet --- src/Umbraco.Web.UI/Umbraco.Web.UI.csproj | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/Umbraco.Web.UI/Umbraco.Web.UI.csproj b/src/Umbraco.Web.UI/Umbraco.Web.UI.csproj index 17315299ba..902f5e7caf 100644 --- a/src/Umbraco.Web.UI/Umbraco.Web.UI.csproj +++ b/src/Umbraco.Web.UI/Umbraco.Web.UI.csproj @@ -2597,11 +2597,18 @@ xcopy "$(ProjectDir)"..\packages\SqlServerCE.4.0.0.0\x86\*.* "$(TargetDir)x86\" - + - + + + + + + + From 0184b396bed47253ec8f1d6585b80d36ef0aa5f8 Mon Sep 17 00:00:00 2001 From: Sebastiaan Janssen Date: Tue, 8 Oct 2013 19:08:30 +0200 Subject: [PATCH 09/77] Whoops! Left a weird linebreak in there --- src/Umbraco.Web.UI/Umbraco.Web.UI.csproj | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/Umbraco.Web.UI/Umbraco.Web.UI.csproj b/src/Umbraco.Web.UI/Umbraco.Web.UI.csproj index 902f5e7caf..e43bd53fe4 100644 --- a/src/Umbraco.Web.UI/Umbraco.Web.UI.csproj +++ b/src/Umbraco.Web.UI/Umbraco.Web.UI.csproj @@ -2599,8 +2599,7 @@ xcopy "$(ProjectDir)"..\packages\SqlServerCE.4.0.0.0\x86\*.* "$(TargetDir)x86\" - + From f85f418d52d3eb9bb75601d8e5e83f1912a7368f Mon Sep 17 00:00:00 2001 From: Sebastiaan Janssen Date: Tue, 8 Oct 2013 20:41:54 +0200 Subject: [PATCH 10/77] We need Json.Net v5+ --- build/NuSpecs/UmbracoCms.Core.nuspec | 1 + 1 file changed, 1 insertion(+) diff --git a/build/NuSpecs/UmbracoCms.Core.nuspec b/build/NuSpecs/UmbracoCms.Core.nuspec index 028817ea61..295d41b097 100644 --- a/build/NuSpecs/UmbracoCms.Core.nuspec +++ b/build/NuSpecs/UmbracoCms.Core.nuspec @@ -27,6 +27,7 @@ + From 38761e141343b047eb820bc98405a0d140f9162f Mon Sep 17 00:00:00 2001 From: Shannon Date: Wed, 9 Oct 2013 11:01:43 +1100 Subject: [PATCH 11/77] started on member create dialog (wip!) --- .../src/views/member/create.html | 81 +++++++++++++------ .../views/member/member.create.controller.js | 16 ++++ src/Umbraco.Web/Editors/MemberController.cs | 18 +++++ 3 files changed, 91 insertions(+), 24 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/views/member/create.html b/src/Umbraco.Web.UI.Client/src/views/member/create.html index 652a9c07c9..a298159e92 100644 --- a/src/Umbraco.Web.UI.Client/src/views/member/create.html +++ b/src/Umbraco.Web.UI.Client/src/views/member/create.html @@ -1,31 +1,64 @@
    - -
  • + + - + diff --git a/src/Umbraco.Web.UI.Client/src/views/member/member.create.controller.js b/src/Umbraco.Web.UI.Client/src/views/member/member.create.controller.js index d749fc8fe0..adbf4dfd7f 100644 --- a/src/Umbraco.Web.UI.Client/src/views/member/member.create.controller.js +++ b/src/Umbraco.Web.UI.Client/src/views/member/member.create.controller.js @@ -7,34 +7,7 @@ * The controller for the member creation dialog */ function memberCreateController($scope, $routeParams, memberTypeResource, iconHelper) { - - $scope.currentStep = 1; - $scope.memberModel = null; - $scope.memberType = null; - - $scope.submitMember = function () { - - //we need to broadcast the saving event for the toggle validators to work - $scope.$broadcast("saving"); - //ensure the drop down is dirty so the styles validate - $scope.memberCreate.$setDirty(true); - - if ($scope.memberCreate.$invalid) { - return; - } - - alert("whoohoo!"); - - //#media/media/edit/{{currentNode.id}}?doctype={{docType.alias}}&create=true - }; - $scope.selectMemberType = function (alias) { - $scope.memberType = alias; - $scope.currentStep = 2; - }; - - - memberTypeResource.getTypes($scope.currentNode.id).then(function (data) { $scope.allowedTypes = iconHelper.formatContentTypeIcons(data); }); diff --git a/src/Umbraco.Web.UI.Client/src/views/member/member.edit.controller.js b/src/Umbraco.Web.UI.Client/src/views/member/member.edit.controller.js index 493739842b..df2b122ed0 100644 --- a/src/Umbraco.Web.UI.Client/src/views/member/member.edit.controller.js +++ b/src/Umbraco.Web.UI.Client/src/views/member/member.edit.controller.js @@ -13,7 +13,7 @@ function MemberEditController($scope, $routeParams, $q, $timeout, $window, membe if ($routeParams.create) { //we are creating so get an empty member item - memberResource.getScaffold($routeParams.id, $routeParams.doctype) + memberResource.getScaffold($routeParams.doctype) .then(function(data) { $scope.loaded = true; $scope.content = data; diff --git a/src/Umbraco.Web.UI.Client/src/views/propertyeditors/boolean/boolean.controller.js b/src/Umbraco.Web.UI.Client/src/views/propertyeditors/boolean/boolean.controller.js index bafd28e90b..1891e628c6 100644 --- a/src/Umbraco.Web.UI.Client/src/views/propertyeditors/boolean/boolean.controller.js +++ b/src/Umbraco.Web.UI.Client/src/views/propertyeditors/boolean/boolean.controller.js @@ -23,4 +23,4 @@ function booleanEditorController($scope, $rootScope, assetsService) { }; } -angular.module("umbraco").controller("Umbraco.Editors.BooleanController", booleanEditorController); \ No newline at end of file +angular.module("umbraco").controller("Umbraco.PropertyEditors.BooleanController", booleanEditorController); \ No newline at end of file diff --git a/src/Umbraco.Web.UI.Client/src/views/propertyeditors/boolean/boolean.html b/src/Umbraco.Web.UI.Client/src/views/propertyeditors/boolean/boolean.html index 37e1030614..afdeca161f 100644 --- a/src/Umbraco.Web.UI.Client/src/views/propertyeditors/boolean/boolean.html +++ b/src/Umbraco.Web.UI.Client/src/views/propertyeditors/boolean/boolean.html @@ -1,3 +1,3 @@ -
    +
    diff --git a/src/Umbraco.Web.UI.Client/src/views/propertyeditors/checkboxlist/checkboxlist.controller.js b/src/Umbraco.Web.UI.Client/src/views/propertyeditors/checkboxlist/checkboxlist.controller.js index d343fe903e..fe31c6ad78 100644 --- a/src/Umbraco.Web.UI.Client/src/views/propertyeditors/checkboxlist/checkboxlist.controller.js +++ b/src/Umbraco.Web.UI.Client/src/views/propertyeditors/checkboxlist/checkboxlist.controller.js @@ -1,4 +1,4 @@ -angular.module("umbraco").controller("Umbraco.Editors.CheckboxListController", +angular.module("umbraco").controller("Umbraco.PropertyEditors.CheckboxListController", function($scope) { if (!angular.isObject($scope.model.config.items)) { diff --git a/src/Umbraco.Web.UI.Client/src/views/propertyeditors/checkboxlist/checkboxlist.html b/src/Umbraco.Web.UI.Client/src/views/propertyeditors/checkboxlist/checkboxlist.html index cfed867ae2..ae691215e7 100644 --- a/src/Umbraco.Web.UI.Client/src/views/propertyeditors/checkboxlist/checkboxlist.html +++ b/src/Umbraco.Web.UI.Client/src/views/propertyeditors/checkboxlist/checkboxlist.html @@ -1,4 +1,4 @@ -
    +