EditBranch asset helper now works

This commit is contained in:
Doug Bell 2010-08-04 13:42:55 -05:00
parent 13c27bc38b
commit 6a1ec0468e

View file

@ -51,7 +51,7 @@ sub process {
} }
return { return {
open_tab => $asset->getUrl('op=assetHelper;className=WebGUI::AssetHelper::EditBranch;func=editBranch'), openDialog => '?op=assetHelper;className=' . $class . ';method=editBranch;assetId=' . $asset->getId,
}; };
} }
@ -66,13 +66,27 @@ Creates a tabform to edit the Asset Tree. If canEdit returns False, returns insu
sub www_editBranch { sub www_editBranch {
my ($class, $asset) = @_; my ($class, $asset) = @_;
my $session = $asset->session; my $session = $asset->session;
my ( $style, $url ) = $session->quick( qw( style url ) );
$style->setLink( $url->extras('hoverhelp.css'), { rel => "stylesheet", type => "text/css" } );
$style->setScript( $url->extras('yui/build/yahoo-dom-event/yahoo-dom-event.js') );
$style->setScript( $url->extras('yui/build/container/container-min.js') );
$style->setScript( $url->extras('hoverhelp.js') );
$style->setRawHeadTags( <<'ENDHTML' );
<style type="text/css">
label.formDescription { display: block; margin-top: 1em; font-weight: bold }
</style>
ENDHTML
my $ac = WebGUI::AdminConsole->new($session,"assets"); my $ac = WebGUI::AdminConsole->new($session,"assets");
my $i18n = WebGUI::International->new($session,"Asset"); my $i18n = WebGUI::International->new($session,"Asset");
my $i18n2 = WebGUI::International->new($session,"Asset_Wobject"); my $i18n2 = WebGUI::International->new($session,"Asset_Wobject");
return $session->privilege->insufficient() unless ($asset->canEdit); return $session->privilege->insufficient() unless ($asset->canEdit);
my $change = '<br />'.$i18n->get("change") . ' '; my $change = '<br />'.$i18n->get("change") . ' ';
my $tabform = WebGUI::TabForm->new($session); my $tabform = WebGUI::TabForm->new($session);
$tabform->hidden({name=>"func",value=>"editBranchSave"}); $tabform->hidden({name=>"op",value=>"assetHelper"});
$tabform->hidden({name=>"className",value=>$class});
$tabform->hidden({name=>"method",value=>"editBranchSave"});
$tabform->hidden({name=>"assetId",value=>$asset->getId});
$tabform->addTab("properties",$i18n->get("properties"),9); $tabform->addTab("properties",$i18n->get("properties"),9);
$tabform->getTab("properties")->readOnly( $tabform->getTab("properties")->readOnly(
label => $i18n->get(104), label => $i18n->get(104),
@ -130,14 +144,14 @@ sub www_editBranch {
name => "displayTitle", name => "displayTitle",
label => $i18n2->get(174), label => $i18n2->get(174),
hoverHelp=> $i18n2->get('174 description'), hoverHelp=> $i18n2->get('174 description'),
value => $asset->getValue("displayTitle"), value => $asset->displayTitle,
uiLevel => 5, uiLevel => 5,
subtext => $change . WebGUI::Form::yesNo($session,{name=>"change_displayTitle"}) subtext => $change . WebGUI::Form::yesNo($session,{name=>"change_displayTitle"})
); );
$tabform->getTab("display")->template( $tabform->getTab("display")->template(
name => "styleTemplateId", name => "styleTemplateId",
label => $i18n2->get(1073), label => $i18n2->get(1073),
value => $asset->getValue("styleTemplateId"), value => $asset->styleTemplateId,
hoverHelp => $i18n2->get('1073 description'), hoverHelp => $i18n2->get('1073 description'),
namespace => 'style', namespace => 'style',
subtext => $change . WebGUI::Form::yesNo($session,{name=>"change_styleTemplateId"}) subtext => $change . WebGUI::Form::yesNo($session,{name=>"change_styleTemplateId"})
@ -146,7 +160,7 @@ sub www_editBranch {
name => "printableStyleTemplateId", name => "printableStyleTemplateId",
label => $i18n2->get(1079), label => $i18n2->get(1079),
hoverHelp => $i18n2->get('1079 description'), hoverHelp => $i18n2->get('1079 description'),
value => $asset->getValue("printableStyleTemplateId"), value => $asset->printableStyleTemplateId,
namespace => 'style', namespace => 'style',
subtext => $change . WebGUI::Form::yesNo($session,{name=>"change_printableStyleTemplateId"}) subtext => $change . WebGUI::Form::yesNo($session,{name=>"change_printableStyleTemplateId"})
); );
@ -155,7 +169,7 @@ sub www_editBranch {
name => 'mobileStyleTemplateId', name => 'mobileStyleTemplateId',
label => $i18n2->get('mobileStyleTemplateId label'), label => $i18n2->get('mobileStyleTemplateId label'),
hoverHelp => $i18n2->get('mobileStyleTemplateId description'), hoverHelp => $i18n2->get('mobileStyleTemplateId description'),
value => $asset->getValue('mobileStyleTemplateId'), value => $asset->mobileStyleTemplateId,
namespace => 'style', namespace => 'style',
subtext => $change . WebGUI::Form::yesNo($session,{name=>"change_mobileStyleTemplateId"}), subtext => $change . WebGUI::Form::yesNo($session,{name=>"change_mobileStyleTemplateId"}),
); );
@ -276,7 +290,17 @@ sub www_editBranch {
); );
} }
} }
return $tabform->print;
# Replace the cancel button with one that closes the dialog
$tabform->{_cancel} = WebGUI::Form::button( $session, {
value => $i18n->get('cancel','WebGUI'),
extras => sprintf(q|onclick="%s" class="backwardButton"|, 'parent.admin.closeModalDialog()'),
} );
return $session->style->process(
'<div class="yui-skin-sam">' . $tabform->print . '</div>',
"PBtmpl0000000000000137"
);
} }
#------------------------------------------------------------------- #-------------------------------------------------------------------
@ -321,69 +345,89 @@ sub www_editBranchSave {
$urlBase = $form->text("baseUrl"); $urlBase = $form->text("baseUrl");
$endOfUrl = $form->selectBox("endOfUrl"); $endOfUrl = $form->selectBox("endOfUrl");
} }
$pb->start($i18n->get('edit branch'), $session->url->extras('adminConsole/assets.gif'));
my $descendants = $asset->getLineage(["self","descendants"],{returnObjects=>1}); return $session->response->stream( sub {
DESCENDANT: foreach my $descendant (@{$descendants}) { my ( $session ) = @_;
if ( !$descendant->canEdit ) { my $pb = WebGUI::ProgressBar->new($session);
$pb->update(sprintf $i18n->get('skipping %s'), $descendant->getTitle); my @stack;
next DESCENDANT;
} return $pb->run(
$pb->update(sprintf $i18n->get('editing %s'), $descendant->getTitle); admin => 1,
my $url; title => $i18n->get('edit branch'),
if ($changeUrl) { icon => $session->url->extras('adminConsole/assets.gif'),
if ($urlBaseBy eq "parentUrl") { code => sub {
delete $descendant->{_parent}; my ( $bar ) = @_;
$data{url} = $descendant->getParent->get("url")."/"; $bar->update( 'Preparing... (i18n)' );
} $bar->total( $asset->getDescendantCount );
elsif ($urlBaseBy eq "specifiedBase") { my $iter = $asset->getLineageIterator(["self","descendants"]);
$data{url} = $urlBase."/"; DESCENDANT: while (1) {
} my $descendant = eval { $iter->() };
else { if (my $e = Exception::Class->caught()) {
$data{url} = ""; $session->log->error($@);
} next DESCENDANT;
if ($endOfUrl eq "menuTitle") { }
$data{url} .= $descendant->get("menuTitle"); last DESCENDANT unless $descendant;
}
elsif ($endOfUrl eq "title") { # Actual work...
$data{url} .= $descendant->get("title"); if ( !$descendant->canEdit ) {
} $pb->update(sprintf $i18n->get('skipping %s'), $descendant->getTitle);
else { next DESCENDANT;
$data{url} .= $descendant->get("url"); }
} $pb->update(sprintf $i18n->get('editing %s'), $descendant->getTitle);
$wobjectData{url} = $data{url}; my $url;
} if ($changeUrl) {
my $newData = $descendant->isa('WebGUI::Asset::Wobject') ? \%wobjectData : \%data; if ($urlBaseBy eq "parentUrl") {
my $revision; delete $descendant->{_parent};
if (scalar %$newData > 0) { $data{url} = $descendant->getParent->get("url")."/";
$revision = $descendant->addRevision( }
$newData, elsif ($urlBaseBy eq "specifiedBase") {
undef, $data{url} = $urlBase."/";
{skipAutoCommitWorkflows => 1, skipNotification => 1}, }
); else {
} $data{url} = "";
else { }
$revision = $descendant; if ($endOfUrl eq "menuTitle") {
} $data{url} .= $descendant->get("menuTitle");
foreach my $param ($form->param) { }
if ($param =~ /^metadata_(.*)$/) { elsif ($endOfUrl eq "title") {
my $fieldName = $1; $data{url} .= $descendant->get("title");
if ($form->yesNo("change_metadata_".$fieldName)) { }
$revision->updateMetaData($fieldName,$form->process($form)); else {
$data{url} .= $descendant->get("url");
}
$wobjectData{url} = $data{url};
}
my $newData = $descendant->isa('WebGUI::Asset::Wobject') ? \%wobjectData : \%data;
my $revision;
if (scalar %$newData > 0) {
$revision = $descendant->addRevision(
$newData,
undef,
{skipAutoCommitWorkflows => 1, skipNotification => 1},
);
}
else {
$revision = $descendant;
}
foreach my $param ($form->param) {
if ($param =~ /^metadata_(.*)$/) {
my $fieldName = $1;
if ($form->yesNo("change_metadata_".$fieldName)) {
$revision->updateMetaData($fieldName,$form->process($form));
}
}
}
} }
} if (WebGUI::VersionTag->autoCommitWorkingIfEnabled($session, {
} allowComments => 1,
} returnUrl => $asset->getUrl,
if (WebGUI::VersionTag->autoCommitWorkingIfEnabled($session, { }) eq 'redirect') {
allowComments => 1, return $asset->getUrl;
returnUrl => $asset->getUrl, };
}) eq 'redirect') { return { message => 'Assets saved! (i18n)' };
return undef; },
}; ),
delete $asset->{_parent}; } );
$session->asset($asset->getParent);
##Since this method originally returned the user to the AssetManager, we don't need
##to use $pb->finish to redirect back there.
return $asset->getParent->www_manageAssets;
} }