From f0b9408ab1ac3dc914655faef57ca918aaac827a Mon Sep 17 00:00:00 2001 From: Doug Bell Date: Thu, 15 Jul 2010 15:11:04 -0500 Subject: [PATCH] add clipboard --- lib/WebGUI/Admin.pm | 45 ++++++++++++++++++++++++++------------- www/extras/admin/admin.js | 45 ++++++++++++++++++++++++++++++++++++++- 2 files changed, 74 insertions(+), 16 deletions(-) diff --git a/lib/WebGUI/Admin.pm b/lib/WebGUI/Admin.pm index 2800ba73f..3b3ed966f 100644 --- a/lib/WebGUI/Admin.pm +++ b/lib/WebGUI/Admin.pm @@ -88,20 +88,6 @@ sub getAdminPluginTemplateVars { #---------------------------------------------------------------------- -=head2 getClipboardTemplateVars - -=cut - -sub getClipboardTemplateVars { - my ( $self ) = @_; - my $session = $self->session; - my $vars = []; - my $clipboardItems = $session->asset->getAssetsInClipboard(1); - -} - -#---------------------------------------------------------------------- - =head2 getNewContentTemplateVars =cut @@ -178,6 +164,34 @@ sub getVersionTagTemplateVars { #---------------------------------------------------------------------- +=head2 www_getClipboard ( ) + +Get the assets currently on the user's clipboard + +=cut + +sub www_getClipboard { + my ( $self ) = @_; + my $session = $self->session; + my ( $user, $form ) = $session->quick(qw{ user form }); + + my $assets = WebGUI::Asset->getRoot( $session )->getAssetsInClipboard(1); + my @assetInfo = (); + for my $asset ( @{$assets} ) { + push @assetInfo, { + assetId => $asset->getId, + url => $asset->getUrl, + title => $asset->menuTitle, + revisionDate => $asset->revisionDate, + icon => $asset->getIcon("small"), + }; + } + + return JSON->new->encode( \@assetInfo ); +} + +#---------------------------------------------------------------------- + =head2 www_getTreeData ( ) Get the Tree data for a given asset URL @@ -266,7 +280,6 @@ sub www_view { # Add vars for AdminBar $var->{adminPlugins} = $self->getAdminPluginTemplateVars; $var->{versionTags} = $self->getVersionTagTemplateVars; - #$var->{clipboardAssets} = $self->getClipboardTemplateVars; $var->{newContentTabs} = $self->getNewContentTemplateVars; # Add vars for current user @@ -301,6 +314,7 @@ sub www_view { $style->setScript( $url->extras( 'yui/build/paginator/paginator-min.js ' ) ); $style->setScript($url->extras('yui/build/animation/animation-min.js')); $style->setScript( $url->extras( 'yui/build/datasource/datasource-min.js ' ) ); + $style->setScript( $url->extras( 'yui/build/connection/connection-min.js ' ) ); $style->setScript( $url->extras( 'yui/build/datatable/datatable-min.js ' ) ); $style->setScript( $url->extras( 'yui/build/container/container-min.js' ) ); $style->setScript($url->extras('yui/build/tabview/tabview-min.js')); @@ -339,6 +353,7 @@ __DATA__
Clipboard (i18n)
+
Asset Helpers (i18n)
diff --git a/www/extras/admin/admin.js b/www/extras/admin/admin.js index 6e2cf6fe6..e01120428 100644 --- a/www/extras/admin/admin.js +++ b/www/extras/admin/admin.js @@ -200,7 +200,7 @@ WebGUI.Admin.prototype.updateAdminBar } else if ( id == "clipboard" ) { - + admin.requestUpdateClipboard.call( admin ); } else if ( id == "newContent" ) { @@ -210,6 +210,49 @@ WebGUI.Admin.prototype.updateAdminBar } }; +/** + * requestUpdateClipboard( ) + * Request the new set of clipboard assets from the server + */ +WebGUI.Admin.prototype.requestUpdateClipboard += function ( ) { + var callback = { + success : function (o) { + var clipboard = YAHOO.lang.JSON.parse( o.responseText ); + this.updateClipboard( clipboard ); + }, + failure : function (o) { + + }, + scope: this + }; + + var ajax = YAHOO.util.Connect.asyncRequest( 'GET', '?op=admin;method=getClipboard', callback ); +}; + +/** + * updateClipboard( assets ) + * Update the clipboard list with the given assets + */ +WebGUI.Admin.prototype.updateClipboard += function ( assets ) { + // Clear out the old clipboard + var div = document.getElementById( 'clipboardItems' ); + while ( div.childNodes.length > 0 ) { + div.removeChild( div.childNodes[0] ); + } + + for ( var i = 0; i < assets.length; i++ ) { + var asset = assets[i]; + var a = document.createElement('a'); + var icon = document.createElement('img'); + icon.src = asset.icon; + a.appendChild( icon ); + a.appendChild( document.createTextNode( asset.title ) ); + div.appendChild( a ); + } +}; + /**************************************************************************** * WebGUI.Admin.LocationBar */