diff --git a/lib/WebGUI/Asset.pm b/lib/WebGUI/Asset.pm index e55889838..adf2a6342 100644 --- a/lib/WebGUI/Asset.pm +++ b/lib/WebGUI/Asset.pm @@ -552,6 +552,7 @@ Returns a text string of HTML code for the Asset Manager Control Page. English o sub getAssetManagerControl { my $self = shift; my $children = shift; + my $controlType = shift; WebGUI::Style::setLink($session{config}{extrasURL}.'/assetManager/assetManager.css', {rel=>"stylesheet",type=>"text/css"}); WebGUI::Style::setScript($session{config}{extrasURL}.'/assetManager/Tools.js', {type=>"text/javascript"}); WebGUI::Style::setScript($session{config}{extrasURL}.'/assetManager/ContextMenu.js', {type=>"text/javascript"}); @@ -559,6 +560,9 @@ sub getAssetManagerControl { WebGUI::Style::setScript($session{config}{extrasURL}.'/assetManager/Display.js', {type=>"text/javascript"}); WebGUI::Style::setScript($session{config}{extrasURL}.'/assetManager/EventManager.js', {type=>"text/javascript"}); WebGUI::Style::setScript($session{config}{extrasURL}.'/assetManager/AssetManager.js', {type=>"text/javascript"}); + WebGUI::Style::setScript($session{config}{extrasURL}.'/assetManager/AssetManagerAsset.js', {type=>"text/javascript"}); + WebGUI::Style::setScript($session{config}{extrasURL}.'/assetManager/CrumbTrailAsset.js', {type=>"text/javascript"}); + WebGUI::Style::setScript($session{config}{extrasURL}.'/assetManager/'.$controlType.'.js', {type=>"text/javascript"}) if (defined $controlType); my $output = '
@@ -596,10 +600,14 @@ sub getAssetManagerControl { $output .= "labels['move'] = 'Move';\n"; $output .= "labels['view'] = 'View';\n"; $output .= "labels['delete'] = 'Delete';\n"; + $output .= "labels['restore'] = 'Restore';\n"; + $output .= "labels['purge'] = 'Purge';\n"; $output .= "labels['go'] = 'Go';\n"; $output .= "labels['properties'] = 'Properties';\n"; $output .= "labels['editTree'] = 'Edit Tree';\n"; - $output .= "var manager = new AssetManager(assets,columnHeadings,labels,crumbtrail); manager.renderAssets();\n\n"; + $output .= "var manager = new AssetManager(assets,columnHeadings,labels,crumbtrail);\n"; + $output .= "manager.assetType='".$controlType."';\n" if (defined $controlType); + $output .= "manager.renderAssets();\n\n"; return $output; } @@ -2310,7 +2318,7 @@ sub www_manageClipboard { $limit = 1; } foreach my $assetData (@{$self->getAssetsInClipboard($limit)}) { - push(@assets,WebGUI::Asset->newByDynamicClass($assetData->{assetId},$assetData->{className})); + push(@assets,WebGUI::Asset->newByDynamicClass($assetData->{assetId},"ManageClipboard",$assetData->{className})); } return $ac->render($self->getAssetManagerControl(\@assets), $header); } @@ -2344,7 +2352,7 @@ sub www_manageTrash { foreach my $assetData (@{$self->getAssetsInTrash($limit)}) { push(@assets,WebGUI::Asset->newByDynamicClass($assetData->{assetId},$assetData->{className})); } - return $ac->render($self->getAssetManagerControl(\@assets), $header); + return $ac->render($self->getAssetManagerControl(\@assets,"ManageTrash"), $header); } diff --git a/www/extras/assetManager/Asset.js b/www/extras/assetManager/Asset.js index 167ba388c..6d01726cd 100644 --- a/www/extras/assetManager/Asset.js +++ b/www/extras/assetManager/Asset.js @@ -6,6 +6,7 @@ function Asset() { //properties this.url = ""; this.rank = 1; + this.labels = new Array(); this.assetId = ""; this.type = ""; this.title = ""; @@ -13,23 +14,23 @@ function Asset() { this.lastUpdate = ""; this.icon = ""; this.div = null; + this.dragEnabled = true; + this.allowMultiSelect = true; this.isParent=false; - //methods - this.edit = Asset_edit; - this.view = Asset_view; - this.go = Asset_go; - this.setRank = Asset_setRank; -// this.displayProperties = Asset_displayProperties; - this.setParent = Asset_setParent; -} - //---------Method Implementations ------------- +this.registerEvents = function() { + this.div.ondblclick=Asset_doubleClick; + this.div.onmousedown=Asset_mouseDown; + this.div.oncontextmenu=Asset_rightClick; + +} + //Moving to a new parent (move) //---------------------- //url + ?||& + func=setParent&assetId= + assetId -function Asset_setParent(asset) { +this.setParent = function(asset) { //parentURL location.href = "http://" + manager.tools.getHostName(location.href) + manager.tools.addParamDelimiter(this.url) + "func=setParent&assetId="+ asset.assetId; } @@ -38,33 +39,117 @@ function Asset_setParent(asset) { //Set the rank of an asset amongst its siblings (move) //--------------------------------------------- //url + ?||& + func=setRank&rank= + newRank -function Asset_setRank(rank) { +this.setRank = function(rank) { //to child location.href = "http://" + manager.tools.getHostName(location.href) + manager.tools.addParamDelimiter(this.url) + "func=setRank&rank="+ rank; } +//url + ?||& + func=editTree +this.editTree = function() { + //parentURL + location.href = "http://" + manager.tools.getHostName(location.href) + manager.tools.addParamDelimiter(this.url) + "func=editTree"; +} + + //Edit the properties of an asset (edit) //------------------------------- //url + ?||& + func=edit -function Asset_edit() { +this.edit = function() { location.href = "http://" + manager.tools.getHostName(location.href) + manager.tools.addParamDelimiter(this.url) + "func=edit&proceed=manageAssets"; } //Edit the properties of an asset (edit) //------------------------------- //url + ?||& + func=edit -function Asset_go() { +this.go = function() { location.href = "http://" + manager.tools.getHostName(location.href) + manager.tools.addParamDelimiter(this.url) + "func=manageAssets"; } - //View an asset (view) //------------- //url + ?||& + func=view -function Asset_view() { +this.view = function() { location.href = "http://" + manager.tools.getHostName(location.href) + this.url; } +//displays the right click context menu +this.getContextMenu = function () { + var arr = new Array(); + if (AssetManager_getManager().display.overObjects.length == 1) { + arr[arr.length] = new ContextMenuItem(this.labels["go"],"javascript:manager.display.contextMenu.owner.go()"); + arr[arr.length] = new ContextMenuItem("
","");
+ arr[arr.length] = new ContextMenuItem(this.labels["view"],"javascript:manager.display.contextMenu.owner.view()");
+ arr[arr.length] = new ContextMenuItem(this.labels["edit"],"javascript:manager.display.contextMenu.owner.edit()");
+ }
+
+ arr[arr.length] = new ContextMenuItem(this.labels["delete"],"javascript:manager.remove()");
+ arr[arr.length] = new ContextMenuItem("
","");
+ arr[arr.length] = new ContextMenuItem(this.labels["cut"],"javascript:AssetManager_getManager().cut()");
+ arr[arr.length] = new ContextMenuItem(this.labels["copy"],"javascript:manager.copy()");
+
+ if (AssetManager_getManager().display.overObjects.length ==1) {
+ arr[arr.length] = new ContextMenuItem("
","");
+ arr[arr.length] = new ContextMenuItem(this.labels["editTree"],"javascript:manager.display.contextMenu.owner.editTree()");
+ }
+
+ return arr;
+}
+
+this.select= function() {
+ this.div.className="am-grid-row-over";
+}
+
+this.deselect = function() {
+ this.div.className="am-grid-row";
+}
+
+}//end object
+
+//Staic Methods
+function Asset_doubleClick(e) {
+ alert("here");
+ var dom = document.getElementById&&!document.all;
+ var e=dom? e : event;
+ var obj =dom? e.target : e.srcElement
+
+ AssetManager_getManager().getAsset(obj).go();
+}
+
+function Asset_rightClick(e) {
+ var dom = document.getElementById&&!document.all;
+ e=dom? e : event;
+
+ if (!dom) {
+ e.cancelBubble = true;
+ e.returnValue = false;
+ }
+
+ obj =dom? e.target : e.srcElement
+
+ var asset = AssetManager_getManager().getAsset(obj);
+
+ manager.display.contextMenu.owner = asset;
+ manager.displayContextMenu(e.clientX,e.clientY,asset);
+
+ return false;
+}
+
+function Asset_mouseDown(e) {
+ var dom = document.getElementById&&!document.all;
+ e=dom? e : event;
+
+ //Display_adjustScrollBars(e);
+
+ if (e.button==2) {
+ //this is a hack to get the context menu stuff to work right in IE
+ if (!dom) {
+ e.cancelBubble = true;
+ e.returnValue = false;
+ }
+ }
+
+ return false;
+}
diff --git a/www/extras/assetManager/AssetManager.js b/www/extras/assetManager/AssetManager.js
index 35334dbd5..7920e6ee7 100644
--- a/www/extras/assetManager/AssetManager.js
+++ b/www/extras/assetManager/AssetManager.js
@@ -18,6 +18,9 @@ function AssetManager(assetArrayData,headerArrayData,labels,crumbtrail) {
this.keys[4] = "size";
this.parentURL = "";
+
+ this.assetType = "Asset";
+
this.labels = labels;
this.crumbtrail = crumbtrail;
@@ -29,7 +32,6 @@ function AssetManager(assetArrayData,headerArrayData,labels,crumbtrail) {
this.getAsset= AssetManager_getAsset;
this.buildCrumbTrail = AssetManager_buildCrumbTrail;
this.displayContextMenu = AssetManager_displayContextMenu;
- this.editTree=AssetManager_editTree;
this.remove = AssetManager_remove;
this.cut = AssetManager_cut;
this.copy = AssetManager_copy;
@@ -44,6 +46,9 @@ function AssetManager_getManager() {
//renders the full asset manager
function AssetManager_renderAssets() {
+
+ var parent = this.buildCrumbTrail();
+
var gridStr = '
","");
- arr[arr.length] = new ContextMenuItem(this.labels["view"],"javascript:manager.display.contextMenu.owner.view()");
- arr[arr.length] = new ContextMenuItem(this.labels["edit"],"javascript:manager.display.contextMenu.owner.edit()");
- }
-
- if (!asset.isParent) {
- arr[arr.length] = new ContextMenuItem(this.labels["delete"],"javascript:manager.remove()");
- arr[arr.length] = new ContextMenuItem("
","");
- arr[arr.length] = new ContextMenuItem(this.labels["cut"],"javascript:AssetManager_getManager().cut()");
- arr[arr.length] = new ContextMenuItem(this.labels["copy"],"javascript:manager.copy()");
-
- if (this.display.overObjects.length ==1) {
- arr[arr.length] = new ContextMenuItem("
","");
- arr[arr.length] = new ContextMenuItem(this.labels["editTree"],"javascript:manager.editTree()");
- }
- }
-
- manager.contextMenu.render(arr,x,y,asset);
-}
-
-
-//url + ?||& + func=editTree
-function AssetManager_editTree() {
- //parentURL
- location.href = this.tools.addParamDelimiter(this.parentURL) + "func=editTree";
+function AssetManager_displayContextMenu(x,y,asset) {
+ manager.contextMenu.render(asset.getContextMenu(),x,y,asset);
}
@@ -205,7 +184,7 @@ function AssetManager_remove() {
}
//returns the asset IDS of all selected assets
-function AssetManager_getSelectedAssetIds() {
+function AssetManager_getSelectedAssetIds() {
var assetIds = "";
for (i=0;i
","");
+ arr[arr.length] = new ContextMenuItem(this.labels["purge"],"javascript:manager.display.contextMenu.owner.purge()");
+ return arr;
+}
+
+asset.select= function() {
+ this.div.className="am-crumbtrail-over";
+}
+
+asset.deselect = function() {
+ this.div.className="am-crumbtrail";
+}
+
+ return asset;
+
+}
+