version tags admin pane is working

This commit is contained in:
Doug Bell 2010-08-04 16:28:25 -05:00
parent 2d6a822a00
commit 90d974d911
3 changed files with 116 additions and 32 deletions

View file

@ -134,35 +134,6 @@ sub getTreePaginator {
}
#----------------------------------------------------------------------
=head2 getVersionTagTemplateVars
=cut
sub getVersionTagTemplateVars {
my ( $self ) = @_;
my $session = $self->session;
my ( $user ) = $session->quick(qw( user ));
my $vars = [];
my $working = WebGUI::VersionTag->getWorking( $session, "nocreate" );
my $tags = WebGUI::VersionTag->getOpenTags($session);
if ( @$tags ) {
for my $tag ( @$tags ) {
next unless $user->isInGroup( $tag->get("groupToUse") );
push @$vars, {
name => $tag->get("name"),
isWorking => ( $working && $working->getId eq $tag->getId ) ? 1 : 0,
joinUrl => $tag->getJoinUrl,
editUrl => $tag->getEditUrl,
};
}
}
return $vars;
}
#----------------------------------------------------------------------
=head2 www_getClipboard ( )
@ -293,6 +264,44 @@ sub www_getTreeData {
#----------------------------------------------------------------------
=head2 www_getVersionTags
Get the current version tags a user can join
=cut
sub www_getVersionTags {
my ( $self ) = @_;
my $session = $self->session;
my ( $user ) = $session->quick(qw( user ));
my $vars = [];
my $current = WebGUI::VersionTag->getWorking( $session, "nocreate" );
my $tags = WebGUI::VersionTag->getOpenTags($session);
if ( @$tags ) {
for my $tag ( @$tags ) {
next unless $user->isInGroup( $tag->get("groupToUse") );
my $isCurrent = ( $current && $current->getId eq $tag->getId ) ? 1 : 0;
my $icon = $isCurrent
? $session->url->extras( 'icon/tag_green.png' )
: $session->url->extras( 'icon/tag_blue.png' )
;
push @$vars, {
tagId => $tag->getId,
name => $tag->get("name"),
isCurrent => $isCurrent,
joinUrl => $tag->getJoinUrl,
editUrl => $tag->getEditUrl,
icon => $icon,
};
}
}
return JSON->new->encode( $vars );
}
#----------------------------------------------------------------------
=head2 www_processAssetHelper ( )
Process the given asset helper with the given asset
@ -329,7 +338,6 @@ sub www_view {
# Add vars for AdminBar
$var->{adminPlugins} = $self->getAdminPluginTemplateVars;
$var->{versionTags} = $self->getVersionTagTemplateVars;
$var->{newContentTabs} = $self->getNewContentTemplateVars;
# Add vars for current user
@ -393,6 +401,7 @@ __DATA__
<!-- placeholder for version tags -->
<dt id="versionTags" class="a-m-t">Version Tags (i18n)</dt>
<dd class="a-m-d"><div class="bd">
<div id="versionTagItems"></div>
</div></dd>
<!-- placeholder for clipboard -->
<dt id="clipboard" class="a-m-t">Clipboard (i18n)</dt>

View file

@ -142,7 +142,7 @@ a:link {
padding: 0;
}
#clipboardItems a {
#clipboardItems a, #versionTagItems a {
display: block;
padding: 2px;
}

View file

@ -250,7 +250,7 @@ WebGUI.Admin.prototype.updateAdminBar
}
else if ( id == "versionTags" ) {
admin.requestUpdateVersionTags.call( admin );
}
};
@ -327,6 +327,81 @@ WebGUI.Admin.prototype.pasteAsset
this.gotoAsset( url );
};
/**
* requestUpdateVersionTags( )
* Request the new set of version tags from the server
*/
WebGUI.Admin.prototype.requestUpdateVersionTags
= function ( ) {
var callback = {
success : function (o) {
var versionTags = YAHOO.lang.JSON.parse( o.responseText );
this.updateVersionTags( versionTags );
},
failure : function (o) {
},
scope: this
};
var ajax = YAHOO.util.Connect.asyncRequest( 'GET', '?op=admin;method=getVersionTags', callback );
};
/**
* updateVersionTags( tags )
* Update the version tag list with the given tags
*/
WebGUI.Admin.prototype.updateVersionTags
= function ( tags ) {
// Clear out the old tags
var div = document.getElementById( 'versionTagItems' );
while ( div.childNodes.length > 0 ) {
div.removeChild( div.childNodes[0] );
}
for ( var i = 0; i < tags.length; i++ ) {
var tag = tags[i];
var a = document.createElement('a');
var icon = document.createElement('img');
icon.src = tag.icon;
a.appendChild( icon );
a.appendChild( document.createTextNode( tag.name ) );
div.appendChild( a );
this.addJoinTagHandler( a, tag.tagId );
if ( tag.isCurrent ) {
this.updateCurrentVersionTag( tag );
}
}
};
/**
* addJoinTagHandler( elem, tagId )
* Add an onclick handler to join a version tag
*/
WebGUI.Admin.prototype.addJoinTagHandler
= function ( elem, tagId ) {
var self = this;
YAHOO.util.Event.on( elem, "click", function(){
// Update version tags after join in case paste fails
var updateAfterJoin = function(){
this.requestUpdateVersionTags();
this.afterNavigate.unsubscribe( updateAfterJoin );
};
self.afterNavigate.subscribe(updateAfterJoin, self );
self.joinTag( tagId );
}, self );
};
/**
* joinTag( id )
* Join a new version tag
*/
WebGUI.Admin.prototype.joinTag
= function ( id ) {
var url = appendToUrl( this.currentAssetDef.url, 'op=setWorkingVersionTag;tagId=' + id );
this.gotoAsset( url );
};
/**
* updateAssetHelpers( assetDef )
* Update the asset helpers. assetDef must contain: