diff --git a/docs/upgrades/upgrade_6.2.9-6.3.0.sql b/docs/upgrades/upgrade_6.2.9-6.3.0.sql
index 98ddb30f4..95858b4a1 100644
--- a/docs/upgrades/upgrade_6.2.9-6.3.0.sql
+++ b/docs/upgrades/upgrade_6.2.9-6.3.0.sql
@@ -198,3 +198,7 @@ INSERT INTO template VALUES ('7','Side By Side','\">
INSERT INTO template VALUES ('6','Right Column','\">\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 _div\" class=\"dragable\"> \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 _div\" class=\"dragable\"> \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 ','page',1,1);
INSERT INTO template VALUES ('1','Default Page','\">\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 _div\" class=\"dragable\"> \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 ','page',1,1);
+INSERT INTO template VALUES ('1','File','\r\n
\r\n\r\n\">
\" alt=\"\" border=\"0\" />','FileAsset',1,1);
+
+INSERT INTO template VALUES ('2vyWxxtft_ut0sfoyJm4Hg','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\r\n \r\n \r\n
\r\n\r\n\r\n
\r\n','page',1,1);
+
diff --git a/lib/WebGUI/Asset.pm b/lib/WebGUI/Asset.pm
index 9ce97773a..683fec25f 100644
--- a/lib/WebGUI/Asset.pm
+++ b/lib/WebGUI/Asset.pm
@@ -466,7 +466,8 @@ sub getNextChildRank {
sub getParent {
my $self = shift;
- return WebGUI::Asset->newByDynamicClass($self->get("parentId"));
+ $self->{_parent} = WebGUI::Asset->newByDynamicClass($self->get("parentId")) unless (exists $self->{_parent});
+ return $self->{_parent};
}
sub getParentLineage {
@@ -612,6 +613,24 @@ sub paste {
return 0;
}
+sub processPropertiesFromFormPost {
+ my $self = shift;
+ my %data;
+ foreach my $definition (@{$self->definition}) {
+ foreach my $property (keys %{$definition->{properties}}) {
+ $data{$property} = WebGUI::FormProcessor::process(
+ $property,
+ $definition->{properties}{fieldType},
+ $definition->{properties}{defaultValue}
+ );
+ }
+ }
+ $data{title} = "Untitled" unless ($data{title});
+ $data{menuTitle} = $data{title} unless ($data{menuTitle});
+ $data{url} = $self->getParent->get("url").'/'.$data{menuTitle} unless ($data{url});
+ $self->update(\%data);
+}
+
sub promote {
my $self = shift;
my ($sisterLineage) = WebGUI::SQL->quickArray("select max(lineage) from asset
@@ -747,7 +766,12 @@ sub update {
sub www_add {
my $self = shift;
- my $newAsset = WebGUI::Asset->newByDynamicClass("new",$session{form}{class},$self->get);
+ my %properties = %{$self->get};
+ delete $properties{title};
+ delete $properties{menuTitle};
+ delete $properties{url};
+ delete $properties{description};
+ my $newAsset = WebGUI::Asset->newByDynamicClass("new",$session{form}{class},\%properties);
return $newAsset->www_edit();
}
@@ -830,20 +854,11 @@ sub www_editSave {
my $object;
if ($session{form}{assetId} eq "new") {
$object = $self->addChild({className=>$session{form}{class}});
+ $object->{_parent} = $self;
} else {
$object = $self;
}
- my %data;
- foreach my $definition (@{$object->definition}) {
- foreach my $property (keys %{$definition->{properties}}) {
- $data{$property} = WebGUI::FormProcessor::process(
- $property,
- $definition->{properties}{fieldType},
- $definition->{properties}{defaultValue}
- );
- }
- }
- $object->update(\%data);
+ $object->processPropertiesFromFormPost;
return $self->www_manageAssets if ($session{form}{afterEdit} eq "assetManager" && $session{form}{assetId} eq "new");
return $object->getParent->www_manageAssets if ($session{form}{afterEdit} eq "assetManager");
return $object->www_view;
diff --git a/lib/WebGUI/Asset/File.pm b/lib/WebGUI/Asset/File.pm
index 4aa8430af..f6b938e5a 100644
--- a/lib/WebGUI/Asset/File.pm
+++ b/lib/WebGUI/Asset/File.pm
@@ -17,8 +17,10 @@ package WebGUI::Asset::File;
use strict;
use WebGUI::Asset;
use WebGUI::HTTP;
+use WebGUI::Icon;
use WebGUI::Session;
use WebGUI::Storage;
+use WebGUI::Template;
our @ISA = qw(WebGUI::Asset);
@@ -138,6 +140,33 @@ sub getName {
}
+sub processPropertiesFromFormPost {
+ my $self = shift;
+ $self->SUPER::processPropertiesFromFormPost;
+ my $storage = WebGUI::Storage->create;
+ my $filename = $storage->addFileFromFormPost("file");
+ if (defined $filename) {
+ my $oldVersions;
+ if ($self->get("filename")) { # do file versioning
+ my @old = split("\n",$self->get("olderVersions"));
+ push(@old,$self->get("storageId")."|".$self->get("filename"));
+ $oldVersions = join("\n",@old);
+ }
+ my %data;
+ $data{filename} = $filename;
+ $data{storageId} = $storage->getId;
+ $data{olderVersions} = $oldVersions;
+ $data{title} = $filename unless ($session{form}{title});
+ $data{menuTitle} = $filename unless ($session{form}{menuTitle});
+ $data{url} = $self->getParent->getUrl.'/'.$filename unless ($session{form}{url});
+ $self->update(\%data);
+ $self->setSize($storage->getFileSize($filename));
+ } else {
+ $storage->delete;
+ }
+}
+
+
#-------------------------------------------------------------------
=head2 purge
@@ -161,18 +190,24 @@ sub purge {
sub view {
my $self = shift;
my $storage = WebGUI::Storage->get($self->get("storageId"));
-use WebGUI::Utility;
- if (isIn($storage->getFileExtension($self->get("filename")),qw("jpg","png","gif"))) {
- return '
';
- } else {
- return '
'.$self->get("filename").'';
- }
+ my $toolbar = deleteIcon('func=delete',$self->get("url"),WebGUI::International::get(43))
+ .editIcon('func=edit',$self->get("url"))
+ .moveUpIcon('func=promote',$self->get("url"))
+ .moveDownIcon('func=demote',$self->get("url"))
+ .cutIcon('func=cut',$self->get("url"))
+ .copyIcon('func=copy',$self->get("url"));
+ my %var = %{$self->get};
+ $var{controls} = $toolbar;
+ $var{fileUrl} = $storage->getUrl($self->get("filename"));
+ $var{fileIcon} = $storage->getFileIconUrl($self->get("filename"));
+ return WebGUI::Template::process("1","FileAsset",\%var);
}
-sub view2 {
+sub www_view {
my $self = shift;
+ return WebGUI::Privilege::noAccess() unless $self->canView;
if ($session{var}{adminOn}) {
return $self->www_edit;
}
@@ -181,44 +216,6 @@ sub view2 {
return "";
}
-#-------------------------------------------------------------------
-
-=head2 www_editSave
-
-Gathers data from www_edit and persists it.
-
-=cut
-
-sub www_editSave {
- my $self = shift;
- my $output = $self->SUPER::www_editSave();
- my $storage = WebGUI::Storage->create;
- my $filename = $storage->addFileFromFormPost("file");
- if (defined $filename) {
- my $oldVersions;
- if ($self->get($filename)) { # do file versioning
- my @old = split("\n",$self->get("olderVersions"));
- push(@old,$self->get("storageId")."|".$self->get("filename"));
- $oldVersions = join("\n",@old);
- }
- $self->update({
- filename=>$filename,
- storageId=>$storage->getId,
- olderVersions=>$oldVersions
- });
- $self->setSize($storage->getFileSize($filename));
- } else {
- $storage->delete;
- }
- return $output;
-}
-
-#sub www_view {
-# my $self = shift;
-# return WebGUI::Privilege::noAccess() unless $self->canView;
-# return $self->view;
-#}
-
1;
diff --git a/lib/WebGUI/Asset/Wobject.pm b/lib/WebGUI/Asset/Wobject.pm
index 3098d1188..3d9854444 100644
--- a/lib/WebGUI/Asset/Wobject.pm
+++ b/lib/WebGUI/Asset/Wobject.pm
@@ -322,10 +322,10 @@ sub processTemplate {
.editIcon('func=edit',$self->get("url"))
.moveUpIcon('func=promote',$self->get("url"))
.moveDownIcon('func=demote',$self->get("url"))
- # .moveTopIcon('func=moveTop&wid='.${$wobject}{wobjectId})
- # .moveBottomIcon('func=moveBottom&wid='.${$wobject}{wobjectId})
.cutIcon('func=cut',$self->get("url"))
.copyIcon('func=copy',$self->get("url"));
+ # .moveTopIcon('func=moveTop&wid='.${$wobject}{wobjectId})
+ # .moveBottomIcon('func=moveBottom&wid='.${$wobject}{wobjectId})
# if (${$wobject}{namespace} ne "WobjectProxy" && isIn("WobjectProxy",@{$session{config}{wobjects}})) {
# $wobjectToolbar .= shortcutIcon('func=createShortcut');
#}