diff --git a/lib/WebGUI/Asset.pm b/lib/WebGUI/Asset.pm index 40003283e..7100cce0b 100644 --- a/lib/WebGUI/Asset.pm +++ b/lib/WebGUI/Asset.pm @@ -1341,6 +1341,10 @@ sub getHelpers { label => $i18n->get('delete'), confirm => $i18n->get('43'), }, + upload_files => { + className => 'WebGUI::AssetHelper::UploadFiles', + label => $i18n->get('upload files'), + }, }; # Merge additional helpers for this class from config diff --git a/lib/WebGUI/AssetHelper/UploadFiles.pm b/lib/WebGUI/AssetHelper/UploadFiles.pm new file mode 100644 index 000000000..f78e0bf9c --- /dev/null +++ b/lib/WebGUI/AssetHelper/UploadFiles.pm @@ -0,0 +1,249 @@ +package WebGUI::AssetHelper::UploadFiles; + +use strict; +use Class::C3; +use base qw/WebGUI::AssetHelper/; +use WebGUI::Form::File; +use WebGUI::TabForm; + +=head1 LEGAL + + ------------------------------------------------------------------- + WebGUI is Copyright 2001-2009 Plain Black Corporation. + ------------------------------------------------------------------- + Please read the legal notices (docs/legal.txt) and the license + (docs/license.txt) that came with this distribution before using + this software. + ------------------------------------------------------------------- + http://www.plainblack.com info@plainblack.com + ------------------------------------------------------------------- + +=head1 NAME + +Package WebGUI::AssetHelper::UploadFiles + +=head1 DESCRIPTION + +Creates multiple file assets from form uploads beneath the current asset. + +=head1 METHODS + +These methods are available from this class: + +=cut + +#------------------------------------------------------------------- + +=head2 process () + +Opens a new tab for displaying the form and the output for editing a branch. + +=cut + +sub process { + my ($self) = @_; + my $asset = $self->asset; + my $session = $self->session; + my $i18n = WebGUI::International->new($session, "Asset"); + if (! $asset->canEdit) { + return { + error => $i18n->get('38', 'WebGUI'), + } + } + + return { + openDialog => $self->getUrl( 'uploadFiles' ), + }; +} + +#------------------------------------------------------------------- + +=head2 www_uploadFiles ( ) + +Creates a tabform to edit the Asset Tree. If canEdit returns False, returns insufficient Privilege page. + +=cut + +sub www_uploadFiles { + my ($self) = @_; + my $asset = $self->asset; + my $session = $self->session; + my $i18n = WebGUI::International->new($session, 'Asset'); + my ( $style, $url ) = $session->quick( qw( style url ) ); + $style->setCss( $url->extras('hoverhelp.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' ); + +ENDHTML + my $tabform = WebGUI::TabForm->new($session); + $tabform->hidden({name=>"op",value=>"assetHelper"}); + $tabform->hidden({name=>"helperId",value=>$self->id}); + $tabform->hidden({name=>"method",value=>"uploadFilesSave"}); + if ($session->config->get("enableSaveAndCommit")) { + $tabform->submitAppend(WebGUI::Form::submit($session, { + name => "saveAndCommit", + value => WebGUI::International->new($session, 'Asset')->get("save and commit"), + })); + } + my $prop_tab = $tabform->addTab("properties",$i18n->get("properties","Asset")); + my $sec_tab = $tabform->addTab("security",$i18n->get(107,"Asset"),6); + $prop_tab->yesNo( + name => "isHidden", + value => 1, + label => $i18n->get(886, 'Asset'), + hoverHelp => $i18n->get('886 description', 'Asset'), + uiLevel => 6, + ); + $prop_tab->yesNo( + name => "newWindow", + value => 0, + label => $i18n->get(940, 'Asset'), + hoverHelp => $i18n->get('940 description', 'Asset'), + uiLevel => 6, + ); + $prop_tab->file( + name => 'upload_files', + label => $i18n->get("upload files"), + hoverHelp => $i18n->get("upload files description"), + maxAttachments => 100, + ); + my $subtext; + if ($session->user->isAdmin) { + $subtext = $session->icon->manage('op=listUsers'); + } + else { + $subtext = ""; + } + my $clause; + if ($session->user->isAdmin) { + my $group = WebGUI::Group->new($session,4); + my $contentManagers = $group->getAllUsers(); + push (@$contentManagers, $session->user->userId); + $clause = "userId in (".$session->db->quoteAndJoin($contentManagers).")"; + } + else { + $clause = "userId=".$session->db->quote($asset->get("ownerUserId")); + } + my $users = $session->db->buildHashRef("select userId,username from users where $clause order by username"); + $sec_tab->selectBox( + name => "ownerUserId", + options => $users, + label => $i18n->get(108, 'Asset'), + hoverHelp => $i18n->get('108 description', 'Asset'), + value => [$asset->get("ownerUserId")], + subtext => $subtext, + uiLevel => 6, + ); + $sec_tab->group( + name => "groupIdView", + label => $i18n->get(872, 'Asset'), + hoverHelp => $i18n->get('872 description', 'Asset'), + value => [$asset->get("groupIdView")], + uiLevel => 6, + ); + $sec_tab->group( + name => "groupIdEdit", + label => $i18n->get(871, 'Asset'), + hoverHelp => $i18n->get('871 description', 'Asset'), + value => [$asset->get("groupIdEdit")], + excludeGroups => [1,7], + uiLevel => 6, + ); + + return $session->style->process( + '