support for loading actions directly from search results
This commit is contained in:
@@ -36,7 +36,7 @@ angular.module("umbraco.directives")
|
||||
'</div>';
|
||||
}
|
||||
template += '<ul>' +
|
||||
'<umb-tree-item ng-repeat="child in tree.root.children" eventhandler="eventhandler" path="{{path}}" activetree="{{activetree}}" node="child" section="{{section}}" ng-animate="animation()"></umb-tree-item>' +
|
||||
'<umb-tree-item ng-repeat="child in tree.root.children" eventhandler="eventhandler" path="{{path}}" activetree="{{activetree}}" node="child" tree="child" section="{{section}}" ng-animate="animation()"></umb-tree-item>' +
|
||||
'</ul>' +
|
||||
'</li>' +
|
||||
'</ul>';
|
||||
|
||||
@@ -29,7 +29,8 @@ angular.module("umbraco.directives")
|
||||
eventhandler: '=',
|
||||
path: '@',
|
||||
node:'=',
|
||||
activetree:'@'
|
||||
activetree:'@',
|
||||
tree:'='
|
||||
},
|
||||
|
||||
template: '<li ng-swipe-right="options(this, node, $event)"><div ng-style="setTreePadding(node)" class="{{node.stateCssClass}}" ng-class="{\'loading\': node.loading}">' +
|
||||
@@ -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 = '<ul ng-class="{collapsed: !node.expanded}"><umb-tree-item ng-repeat="child in node.children" eventhandler="eventhandler" activetree="{{activetree}}" path="{{path}}" node="child" section="{{section}}" ng-animate="animation()"></umb-tree-item></ul>';
|
||||
var template = '<ul ng-class="{collapsed: !node.expanded}"><umb-tree-item ng-repeat="child in node.children" eventhandler="eventhandler" activetree="{{activetree}}" path="{{path}}" tree="tree" node="child" section="{{section}}" ng-animate="animation()"></umb-tree-item></ul>';
|
||||
var newElement = angular.element(template);
|
||||
$compile(newElement)(scope);
|
||||
element.append(newElement);
|
||||
|
||||
@@ -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;
|
||||
},
|
||||
|
||||
|
||||
@@ -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({
|
||||
|
||||
@@ -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);
|
||||
};
|
||||
|
||||
@@ -13,20 +13,23 @@
|
||||
<uc1:ContentTypeControlNew id="ContentTypeControlNew1" HideStructure="true" runat="server"></uc1:ContentTypeControlNew>
|
||||
<cc1:Pane id="Pane1andmore" runat="server">
|
||||
|
||||
<asp:DataGrid id="dgEditExtras" runat="server" AutoGenerateColumns="False" Width="100%" BorderStyle="None" HeaderStyle-CssClass="gridHeader" ItemStyle-CssClass="gridItem" GridLines="Horizontal" HeaderStyle-Font-Bold=True OnItemDataBound="dgEditExtras_itemdatabound">
|
||||
<asp:DataGrid id="dgEditExtras" runat="server" ItemStyle-BorderStyle="NotSet" HeaderStyle-BorderStyle="NotSet" BorderStyle="NotSet" AutoGenerateColumns="False" CssClass="table" OnItemDataBound="dgEditExtras_itemdatabound">
|
||||
<Columns>
|
||||
<asp:BoundColumn DataField="id" HeaderText="" Visible="False"></asp:BoundColumn>
|
||||
<asp:BoundColumn DataField="name" HeaderText="Property name"></asp:BoundColumn>
|
||||
|
||||
<asp:TemplateColumn HeaderText="Member can edit">
|
||||
<ItemTemplate>
|
||||
<asp:CheckBox ID="ckbMemberCanEdit" Runat="server"></asp:CheckBox>
|
||||
</ItemTemplate>
|
||||
</asp:TemplateColumn>
|
||||
|
||||
<asp:TemplateColumn HeaderText="Show on profile">
|
||||
<ItemTemplate>
|
||||
<asp:CheckBox ID="ckbMemberCanView" Runat="server"></asp:CheckBox>
|
||||
</ItemTemplate>
|
||||
</asp:TemplateColumn>
|
||||
|
||||
</Columns>
|
||||
</asp:DataGrid>
|
||||
|
||||
|
||||
@@ -387,6 +387,7 @@
|
||||
<Compile Include="umbraco.presentation\umbraco\create.aspx.cs">
|
||||
<SubType>ASPXCodeBehind</SubType>
|
||||
</Compile>
|
||||
<Compile Include="umbraco.presentation\umbraco\Trees\loadPackager.cs" />
|
||||
<Compile Include="WebApi\Binders\MemberBinder.cs" />
|
||||
<Compile Include="WebApi\ControllerContextExtensions.cs" />
|
||||
<Compile Include="WebApi\CustomDateTimeConvertor.cs" />
|
||||
@@ -1587,7 +1588,6 @@
|
||||
<Compile Include="umbraco.presentation\umbraco\Trees\BaseTree.cs" />
|
||||
<Compile Include="umbraco.presentation\umbraco\Trees\ContentRecycleBin.cs" />
|
||||
<Compile Include="umbraco.presentation\umbraco\Trees\FileSystemTree.cs" />
|
||||
<Compile Include="umbraco.presentation\umbraco\Trees\loadPackager.cs" />
|
||||
<Compile Include="umbraco.presentation\umbraco\Trees\loadContent.cs" />
|
||||
<Compile Include="umbraco.presentation\umbraco\Trees\loadcontentItemType.cs" />
|
||||
<Compile Include="umbraco.presentation\umbraco\Trees\loadDataTypes.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
|
||||
/// </summary>
|
||||
[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.
|
||||
/// </summary>
|
||||
/// <param name="Javascript">The javascript.</param>
|
||||
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.
|
||||
/// </summary>
|
||||
/// <param name="Tree">The tree.</param>
|
||||
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);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user