diff --git a/docs/changelog/6.x.x.txt b/docs/changelog/6.x.x.txt index a49c0660c..8b96ca95b 100644 --- a/docs/changelog/6.x.x.txt +++ b/docs/changelog/6.x.x.txt @@ -8,6 +8,7 @@ attached. - Added AssetProxy macro, which replaces the Navigation, I, Snippet, and File macros. + - Added Folder asset type. - Added the RandomAssetProxy macro, which replaces the RandomImage and RandomSnippet macros. - Renamed the i macro to FileUrl. diff --git a/docs/upgrades/upgrade_6.2.11-6.3.0.pl b/docs/upgrades/upgrade_6.2.11-6.3.0.pl index c9b3bce33..698a0119e 100644 --- a/docs/upgrades/upgrade_6.2.11-6.3.0.pl +++ b/docs/upgrades/upgrade_6.2.11-6.3.0.pl @@ -668,7 +668,6 @@ $conf->set("paymentPlugins"=>"ITransact"); $conf->set("macros"=>$macros); $conf->set("assets"=>[ 'WebGUI::Asset::Wobject::Navigation', - 'WebGUI::Asset::Wobject::Layout', 'WebGUI::Asset::Wobject::Poll', 'WebGUI::Asset::Wobject::Article', 'WebGUI::Asset::Wobject::DataForm', @@ -685,6 +684,10 @@ $conf->set("assets"=>[ 'WebGUI::Asset::File::Image', 'WebGUI::Asset::Snippet' ]); +$conf->set("assetContainers"=>[ + 'WebGUI::Asset::Wobject::Folder', + 'WebGUI::Asset::Wobject::Layout' + ]); $conf->write; @@ -1215,12 +1218,14 @@ sub getNewId { 'Auth/WebGUI/Create' => { '1' => 'PBtmpl0000000000000011' }, + 'Folder' => { + '15' => 'PBtmpl0000000000000078' + }, 'Layout' => { '6' => 'PBtmpl0000000000000131', '3' => 'PBtmpl0000000000000109', '7' => 'PBtmpl0000000000000135', '2' => 'PBtmpl0000000000000094', - '15' => 'PBtmpl0000000000000078', '1' => 'PBtmpl0000000000000054', '4' => 'PBtmpl0000000000000118', '5' => 'PBtmpl0000000000000125' diff --git a/docs/upgrades/upgrade_6.2.11-6.3.0.sql b/docs/upgrades/upgrade_6.2.11-6.3.0.sql index a815ec166..aab43983f 100644 --- a/docs/upgrades/upgrade_6.2.11-6.3.0.sql +++ b/docs/upgrades/upgrade_6.2.11-6.3.0.sql @@ -94,6 +94,11 @@ create table Layout ( contentPositions text ); +create table Folder ( + assetId varchar(22) not null primary key, + templateId varchar(22) not null +); + create table FileAsset ( assetId varchar(22) not null primary key, storageId varchar(22) not null, @@ -216,7 +221,7 @@ INSERT INTO template VALUES ('1','Default Page','\"> INSERT INTO template VALUES ('1','File','\r\n

\r\n
\r\n
\">\" alt=\"\" border=\"0\" />','FileAsset',1,1); INSERT INTO template VALUES ('2','Image','\r\n

\r\n
\r\n\" />','ImageAsset',1,1); -INSERT INTO template VALUES ('15','File Folder','\">\r\n\r\n

\r\n
\r\n\r\n\r\n

\r\n
\r\n\r\n\r\n

\r\n
\r\n\r\n\r\n\r\n
 
\r\n
\r\n\r\n\r\n
\r\n \">/assets/folder.gif\" border=\"0\" alt=\"Folder\" />
\r\n
\r\n
\r\n\r\n\r\n
 
\r\n
\r\n\r\n\r\n
 
\r\n\r\n\r\n
\r\n \r\n
\r\n
\r\n\r\n
 
\r\n','page',1,1); +INSERT INTO template VALUES ('15','File Folder','\">\r\n

\r\n
\r\n\r\n\r\n

\r\n
\r\n\r\n\r\n

\r\n
\r\n\r\n\r\n\r\n\r\n \r\n \r\n\r\n\r\n\r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n\r\n\r\n
\">\" border=\"0\" alt=\"\">\">
\">\" border=\"0\" alt=\"\">\">^D(\"%z %Z\",);
', 'Folder',1,1); alter table HttpProxy add column cookieJarStorageId varchar(22); diff --git a/etc/WebGUI.conf.original b/etc/WebGUI.conf.original index 3b6afd1f5..f139bdd7e 100644 --- a/etc/WebGUI.conf.original +++ b/etc/WebGUI.conf.original @@ -2,7 +2,6 @@ assets = WebGUI::Asset::File::Image, \ WebGUI::Asset::File, \ WebGUI::Asset::Snippet, \ WebGUI::Asset::Redirect, \ - WebGUI::Asset::Wobject::Layout, \ WebGUI::Asset::Wobject::USS, \ WebGUI::Asset::Wobject::Poll, \ WebGUI::Asset::Wobject::SyndicatedContent, \ @@ -14,6 +13,9 @@ assets = WebGUI::Asset::File::Image, \ WebGUI::Asset::Wobject::Survey, \ WebGUI::Asset::FilePile +assetContainers = WebGUI::Asset::Wobject::Layout, \ + WebGUI::Asset::Wobject::Folder + sitename = www.example.com, example.com dsn = DBI:mysql:www_example_com diff --git a/lib/WebGUI/Asset.pm b/lib/WebGUI/Asset.pm index bb9e7e62d..755c99c8b 100644 --- a/lib/WebGUI/Asset.pm +++ b/lib/WebGUI/Asset.pm @@ -666,7 +666,7 @@ sub getAssetAdderLinks { WebGUI::ErrorHandler::warn("Couldn't get the name of ".$class." because ".$@); } else { my $url = $self->getUrl("func=add&class=".$class); - $url .= "&".$addToUrl if ($addToUrl); + $url = WebGUI::URL::append($url,$addToUrl) if ($addToUrl); push(@links, { label=>$label, url=>$url @@ -2245,7 +2245,6 @@ Saves and updates history. If canEdit, returns www_manageAssets() if a new Asset sub www_editSave { my $self = shift; -WebGUI::ErrorHandler::warn("got here"); return $self->getAdminConsole->render(WebGUI::Privilege::insufficient()) unless $self->canEdit; my $object; if ($session{form}{assetId} eq "new") { diff --git a/lib/WebGUI/Asset/Template.pm b/lib/WebGUI/Asset/Template.pm index 92b365220..03ba392f3 100644 --- a/lib/WebGUI/Asset/Template.pm +++ b/lib/WebGUI/Asset/Template.pm @@ -116,7 +116,7 @@ sub definition { }, namespace=>{ fieldType=>'combo', - defaultValue=>'style' + defaultValue=>undef } } }); @@ -192,7 +192,7 @@ Specify the namespace to build the list for. sub getList { my $class = shift; my $namespace = shift; - return WebGUI::SQL->buildHashRef("select asset.assetId,asset.title from template left join asset on asset.assetId=template.assetId where template.namespace=".quote($namespace)." and template.showInForms=1 order by asset.title",WebGUI::SQL->getSlave); + return WebGUI::SQL->buildHashRef("select asset.assetId,asset.title from template left join asset on asset.assetId=template.assetId where template.namespace=".quote($namespace)." and template.showInForms=1 and state='published' order by asset.title",WebGUI::SQL->getSlave); } diff --git a/lib/WebGUI/Asset/Wobject/Folder.pm b/lib/WebGUI/Asset/Wobject/Folder.pm new file mode 100644 index 000000000..f4ec7c332 --- /dev/null +++ b/lib/WebGUI/Asset/Wobject/Folder.pm @@ -0,0 +1,183 @@ +package WebGUI::Asset::Wobject::Folder; + +=head1 LEGAL + + ------------------------------------------------------------------- + WebGUI is Copyright 2001-2004 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::Wobject; +use WebGUI::Icon; +use WebGUI::Session; +use WebGUI::Utility; + +our @ISA = qw(WebGUI::Asset::Wobject); + +=head1 NAME + +Package WebGUI::Asset::Wobject::Folder + +=head1 DESCRIPTION + +Display a list of assets and sub folders just like in an operating system filesystem. + +=head1 SYNOPSIS + +use WebGUI::Asset::Wobject::Folder; + + +=head1 METHODS + +These methods are available from this class: + +=cut + + + +#------------------------------------------------------------------- + +=head2 definition ( definition ) + +Defines the properties of this asset. + +=head3 definition + +A hash reference passed in from a subclass definition. + +=cut + +sub definition { + my $class = shift; + my $definition = shift; + push(@{$definition}, { + tableName=>'Folder', + className=>'WebGUI::Asset::Wobject::Folder', + properties=>{ + templateId =>{ + fieldType=>"template", + defaultValue=>'PBtmpl0000000000000054' + } + } + }); + return $class->SUPER::definition($definition); +} + + + +#------------------------------------------------------------------- + +=head2 getEditForm () + +Returns the TabForm object that will be used in generating the edit page for this asset. + +=cut + +sub getEditForm { + my $self = shift; + my $tabform = $self->SUPER::getEditForm(); + $tabform->getTab("display")->template( + -value=>$self->getValue('templateId'), + -namespace=>"Folder" + ); + #if ($self->get("assetId") eq "new") { + # $tabform->getTab("properties")->whatNext( + # -options=>{ + # gotoNewPage=>WebGUI::International::get(823), + # backToPage=>WebGUI::International::get(847) + # }, +# ); +# } + return $tabform; +} + + +#------------------------------------------------------------------- +sub getIcon { + my $self = shift; + my $small = shift; + return $session{config}{extrasURL}.'/assets/small/folder.gif' if ($small); + return $session{config}{extrasURL}.'/assets/folder.gif'; +} + +#------------------------------------------------------------------- + +=head2 getName () + +Returns the displayable name of this asset. + +=cut + +sub getName { + return "Folder"; +} + + +#------------------------------------------------------------------- + +=head2 getUiLevel () + +Returns the UI level of this asset. + +=cut + +sub getUiLevel { + return 5; +} + + +#------------------------------------------------------------------- +sub view { + my $self = shift; + my $children = $self->getLineage( ["children"], { returnObjects=>1 }); + my %vars; + foreach my $child (@{$children}) { + if (ref $child eq "WebGUI::Asset::Wobject::Folder") { + push(@{$vars{"subfolder_loop"}}, { + id => $child->getId, + url => $child->getUrl, + title => $child->get("title") + }); + } else { + my $isImage = (ref $child =~ /^WebGUI::Asset::File::Image/); + my $thumbnail = $child->getThumbnailUrl if ($isImage); + my $isFile = (ref $child =~ /^WebGUI::Asset::File/); + my $file = $child->getFileUrl if ($isFile); + push(@{$vars{"file_loop"}},{ + id=>$child->getId, + title=>$child->get("title"), + size=>WebGUI::Utility::formatBytes($child->get("assetSize")), + "date.epoch"=>$child->get("dateStamp"), + "icon.small"=>$child->getIcon(1), + "icon.big"=>$child->getIcon, + type=>$child->getName, + url=>$child->getUrl, + isImage=>$isImage, + isImage=>$isFile, + "thumbnail.url"=>$thumbnail, + "file.url"=>$file + }); + } + } + return $self->processTemplate(\%vars,$self->get("templateId")); +} + + +sub www_edit { + my $self = shift; + return $self->getAdminConsole->render(WebGUI::Privilege::insufficient()) unless $self->canEdit; + return $self->getAdminConsole->render($self->getEditForm->print,"Edit Folder"); +} + + + +1; + diff --git a/lib/WebGUI/i18n/English/Asset.pm b/lib/WebGUI/i18n/English/Asset.pm index eee157b96..22f036416 100644 --- a/lib/WebGUI/i18n/English/Asset.pm +++ b/lib/WebGUI/i18n/English/Asset.pm @@ -20,6 +20,11 @@ our $I18N = { context => q|The name of the properties tab on the edit page.| }, + 'make package' => { + message => q|Make package?|, + lastUpdated => 1099344172, + }, + 'asset id' => { message => q|Asset ID|, lastUpdated => 1099344172,