From 4cf3c9878f7a0bec6fd96a849de358c405c23803 Mon Sep 17 00:00:00 2001 From: Doug Bell Date: Wed, 21 Apr 2010 16:52:47 -0500 Subject: [PATCH] tree: crumbtrail and back/forward work --- lib/WebGUI/Admin.pm | 8 +++++++- www/extras/admin/admin.js | 33 +++++++++++++++++++++++++++++++-- 2 files changed, 38 insertions(+), 3 deletions(-) diff --git a/lib/WebGUI/Admin.pm b/lib/WebGUI/Admin.pm index 1484da1fd..9ccf89b25 100644 --- a/lib/WebGUI/Admin.pm +++ b/lib/WebGUI/Admin.pm @@ -226,7 +226,13 @@ sub www_getTreeData { $assetInfo->{ totalAssets } = $p->getRowCount; $assetInfo->{ sort } = $session->form->get( 'orderByColumn' ); $assetInfo->{ dir } = lc $session->form->get( 'orderByDirection' ); - $assetInfo->{ currentAsset } = { title => $asset->getTitle, helpers => $asset->getHelpers }; + $assetInfo->{ currentAsset } = { + assetId => $asset->getId, + url => $asset->getUrl, + title => $asset->getTitle, + icon => $asset->getIcon("small"), + helpers => $asset->getHelpers, + }; $assetInfo->{ crumbtrail } = []; for my $asset ( @{ $asset->getLineage( ['ancestors'], { returnObjects => 1 } ) } ) { diff --git a/www/extras/admin/admin.js b/www/extras/admin/admin.js index 71928eef7..f472eae71 100644 --- a/www/extras/admin/admin.js +++ b/www/extras/admin/admin.js @@ -96,7 +96,7 @@ WebGUI.Admin.prototype.gotoAsset } else if ( this.currentTab == "tree" ) { // Make tree request - this.tree.goto( this.currentAssetDef.url ); + this.tree.goto( url ); this.viewDirty = 1; } }; @@ -453,7 +453,9 @@ WebGUI.Admin.Tree { key: 'childCount' } ], metaFields: { - totalRecords: "totalAssets" // Access to value in the server response + totalRecords: "totalAssets", // Access to value in the server response + crumbtrail : "crumbtrail", + currentAsset : "currentAsset" } }; @@ -731,6 +733,7 @@ WebGUI.Admin.Tree.prototype.formatTitle WebGUI.Admin.Tree.prototype.goto = function ( assetUrl ) { + // TODO: Show loading screen var callback = { success : this.onDataReturnInitializeTable, failure : this.onDataReturnInitializeTable, @@ -756,6 +759,32 @@ WebGUI.Admin.Tree.prototype.onDataReturnInitializeTable = function ( sRequest, oResponse, oPayload ) { this.dataTable.onDataReturnInitializeTable.call( this.dataTable, sRequest, oResponse, oPayload ); + // Rebuild the crumbtrail + var crumb = oResponse.meta.crumbtrail; + var elCrumb = document.getElementById( "treeCrumbtrail" ); + elCrumb.innerHTML = ''; + for ( var i = 0; i < crumb.length; i++ ) { + var item = crumb[i]; + var elItem = document.createElement( "span" ); + elItem.className = "clickable"; + YAHOO.util.Event.addListener( elItem, "click", function(){ this.goto( item.url ) }, this, true ); + elItem.appendChild( document.createTextNode( item.title ) ); + + elCrumb.appendChild( elItem ); + elCrumb.appendChild( document.createTextNode( " > " ) ); + } + + // Final crumb item has a menu + var elItem = document.createElement( "span" ); + elItem.className = "clickable"; + YAHOO.util.Event.addListener( elItem, "click", function(){ alert( "TOADO" ) }, this, true ); + elItem.appendChild( document.createTextNode( oResponse.meta.currentAsset.title ) ); + elCrumb.appendChild( elItem ); + + // TODO: Update current asset + window.admin.navigate( oResponse.meta.currentAsset ); + + // TODO Hide loading screen }; /**