Permissions default to those of the parent, but if they are overridden in the FilePile form the form settings are now taken.
218 lines
6.7 KiB
Perl
218 lines
6.7 KiB
Perl
package WebGUI::Asset::FilePile;
|
|
|
|
=head1 LEGAL
|
|
|
|
-------------------------------------------------------------------
|
|
WebGUI is Copyright 2001-2006 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
|
|
-------------------------------------------------------------------
|
|
|
|
=cut
|
|
|
|
use strict;
|
|
use WebGUI::Asset;
|
|
use WebGUI::Asset::File;
|
|
use WebGUI::Asset::File::Image;
|
|
use WebGUI::SQL;
|
|
use WebGUI::Storage::Image;
|
|
use WebGUI::TabForm;
|
|
use WebGUI::Utility;
|
|
|
|
our @ISA = qw(WebGUI::Asset);
|
|
|
|
|
|
=head1 NAME
|
|
|
|
Package WebGUI::Asset::FilePile
|
|
|
|
=head1 DESCRIPTION
|
|
|
|
Provides a mechanism to upload files to WebGUI.
|
|
|
|
=head1 SYNOPSIS
|
|
|
|
use WebGUI::Asset::FilePile;
|
|
|
|
|
|
=head1 METHODS
|
|
|
|
These methods are available from this class:
|
|
|
|
=cut
|
|
|
|
#-------------------------------------------------------------------
|
|
sub edit {
|
|
my $self = shift;
|
|
my $tabform = WebGUI::TabForm->new($self->session,);
|
|
my $i18n = WebGUI::International->new($self->session, 'Asset_FilePile');
|
|
$tabform->hidden({
|
|
name=>"func",
|
|
value=>"add"
|
|
});
|
|
$tabform->hidden({
|
|
name=>"doit",
|
|
value=>"1"
|
|
});
|
|
$tabform->hidden({
|
|
name=>"class",
|
|
value=>"WebGUI::Asset::FilePile"
|
|
});
|
|
if ($self->session->form->process("proceed")) {
|
|
$tabform->hidden({
|
|
name=>"proceed",
|
|
value=>$self->session->form->process("proceed")
|
|
});
|
|
}
|
|
$tabform->addTab("properties",$i18n->get("properties","Asset"));
|
|
$tabform->getTab("properties")->yesNo(
|
|
-name=>"isHidden",
|
|
-value=>1,
|
|
-label=>$i18n->get(886),
|
|
-hoverHelp=>$i18n->get('886 description'),
|
|
-uiLevel=>6
|
|
);
|
|
$tabform->getTab("properties")->yesNo(
|
|
-name=>"newWindow",
|
|
-value=>0,
|
|
-label=>$i18n->get(940),
|
|
-hoverHelp=>$i18n->get('940 description'),
|
|
-uiLevel=>6
|
|
);
|
|
$tabform->addTab("security",$i18n->get(107,"Asset"),6);
|
|
my $subtext;
|
|
if ($self->session->user->isInGroup(3)) {
|
|
$subtext = $self->session->icon->manage('op=listUsers');
|
|
} else {
|
|
$subtext = "";
|
|
}
|
|
my $clause;
|
|
if ($self->session->user->isInGroup(3)) {
|
|
my $group = WebGUI::Group->new($self->session,4);
|
|
my $contentManagers = $group->getAllUsers();
|
|
push (@$contentManagers, $self->session->user->userId);
|
|
$clause = "userId in (".$self->session->db->quoteAndJoin($contentManagers).")";
|
|
} else {
|
|
$clause = "userId=".$self->session->db->quote($self->get("ownerUserId"));
|
|
}
|
|
my $users = $self->session->db->buildHashRef("select userId,username from users where $clause order by username");
|
|
$tabform->getTab("security")->selectBox(
|
|
-name=>"ownerUserId",
|
|
-options=>$users,
|
|
-label=>$i18n->get(108),
|
|
-hoverHelp=>$i18n->get('108 description'),
|
|
-value=>[$self->get("ownerUserId")],
|
|
-subtext=>$subtext,
|
|
-uiLevel=>6
|
|
);
|
|
$tabform->getTab("security")->group(
|
|
-name=>"groupIdView",
|
|
-label=>$i18n->get(872),
|
|
-hoverHelp=>$i18n->get('872 description'),
|
|
-value=>[$self->get("groupIdView")],
|
|
-uiLevel=>6
|
|
);
|
|
$tabform->getTab("security")->group(
|
|
-name=>"groupIdEdit",
|
|
-label=>$i18n->get(871),
|
|
-hoverHelp=>$i18n->get('871 description'),
|
|
-value=>[$self->get("groupIdEdit")],
|
|
-excludeGroups=>[1,7],
|
|
-uiLevel=>6
|
|
);
|
|
$tabform->getTab("properties")->file(
|
|
-label=>$i18n->get("upload files"),
|
|
-hoverHelp=>$i18n->get("upload files description"),
|
|
-maxAttachments=>100
|
|
);
|
|
$self->getAdminConsole->setHelp("file pile add/edit","Asset_FilePile");
|
|
return $self->getAdminConsole->render($tabform->print,$i18n->get("add pile"));
|
|
}
|
|
|
|
#-------------------------------------------------------------------
|
|
sub editSave {
|
|
my $self = shift;
|
|
my $tempStorage = WebGUI::Storage->create($self->session);
|
|
$tempStorage->addFileFromFormPost("file");
|
|
foreach my $filename (@{$tempStorage->getFiles}) {
|
|
my $storage = WebGUI::Storage::Image->create($self->session);
|
|
$storage->addFileFromFilesystem($tempStorage->getPath($filename));
|
|
#$storage->setPrivileges($self->getParent->get("ownerUserId"),$self->getParent->get("groupIdView"),$self->getParent->get("groupIdEdit"));
|
|
my %data;
|
|
my $selfName = 'WebGUI::Asset::File';
|
|
$selfName = "WebGUI::Asset::File::Image" if ($storage->isImage($filename));
|
|
foreach my $definition (@{$selfName->definition($self->session)}) {
|
|
foreach my $property (keys %{$definition->{properties}}) {
|
|
$data{$property} = $self->session->form->process(
|
|
$property,
|
|
$definition->{properties}{$property}{fieldType},
|
|
$definition->{properties}{$property}{defaultValue}
|
|
);
|
|
}
|
|
}
|
|
$storage->setPrivileges($data{"ownerUserId"},$data{"groupIdView"},$data{"groupIdEdit"});
|
|
$data{className} = $selfName;
|
|
$data{storageId} = $storage->getId;
|
|
$data{filename} = $data{title} = $data{menuTitle} = $filename;
|
|
$data{templateId} = 'PBtmpl0000000000000024';
|
|
if ($selfName eq "WebGUI::Asset::File::Image") {
|
|
$data{templateId} = 'PBtmpl0000000000000088';
|
|
$data{parameters} = 'alt="'.$self->get("title").'"';
|
|
}
|
|
$data{url} = $self->getParent->get('url').'/'.$filename;
|
|
my $newAsset = $self->getParent->addChild(\%data);
|
|
delete $newAsset->{_storageLocation};
|
|
$newAsset->setSize($storage->getFileSize($filename));
|
|
$newAsset->generateThumbnail if ($selfName eq "WebGUI::Asset::File::Image");
|
|
}
|
|
$tempStorage->delete;
|
|
return $self->getParent->www_manageAssets if ($self->session->form->process("proceed") eq "manageAssets");
|
|
return $self->getParent->www_view;
|
|
}
|
|
|
|
#-------------------------------------------------------------------
|
|
sub getIcon {
|
|
my $self = shift;
|
|
my $small = shift;
|
|
if ($small) {
|
|
return $self->session->url->extras('assets/small/filePile.gif');
|
|
}
|
|
return $self->session->url->extras('assets/filePile.gif');
|
|
}
|
|
|
|
|
|
#-------------------------------------------------------------------
|
|
|
|
=head2 getName
|
|
|
|
Returns the displayable name of this asset.
|
|
|
|
=cut
|
|
|
|
sub getName {
|
|
my $self = shift;
|
|
my $i18n = WebGUI::International->new($self->session);
|
|
return $i18n->get('assetName',"Asset_FilePile");
|
|
}
|
|
|
|
|
|
|
|
#-------------------------------------------------------------------
|
|
sub www_edit {
|
|
my $self = shift;
|
|
unless ($self->session->form->process("doit")) {
|
|
return $self->edit;
|
|
} else {
|
|
return $self->editSave;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
1;
|
|
|