diff --git a/docs/changelog/6.x.x.txt b/docs/changelog/6.x.x.txt index 6b7c44ae0..70fb41c35 100644 --- a/docs/changelog/6.x.x.txt +++ b/docs/changelog/6.x.x.txt @@ -2,6 +2,25 @@ - Fixed a bug in the collaboration system that caused replies to fail. - Fixed an inefficency in the asset system that caused a lot of extra work on the server when pasting. + - Fixed a bug in the groups system where group expiration intervals weren't + saving properly. + - fix [ 1170879 ] "default extension" is added to asset's URL upon every Save + - fix [ 1170200 ] folder view template file_loop -> always current time + - fix [ 1170650 ] Group problem + - fix [ 1170245 ] paste returns deleted content + - Fixed a problem with the FormProcessor url sub that wouldn't allow URLs to + start with / or a macro. + - fix [ 1171447 ] Poll shows no result + - fix [ 1171060 ] delete file from cs + - fix [ 1170290 ] 6.2.x->6.5.4 doesn't add Page macro to config file + - fix [ 1171469 ] [edited] post insert wrong timezone + - Updated the macro picker in the rich editor. + - fix [ 1171505 ] Previewing a post appends signature every time. + - fix [ 1170095 ] Sort-by fields don't. + - fix [ 1165645 ] Search not working + - fix [ 1170264 ] can't copy file + - fix [ 1170242 ] cs email url + - fix [ 1171110 ] nav ancestor 6.5.4 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 cc265a752..574228d5c 100644 --- a/docs/upgrades/upgrade_6.2.11-6.3.0.pl +++ b/docs/upgrades/upgrade_6.2.11-6.3.0.pl @@ -1616,6 +1616,7 @@ $macros->{"AssetProxy"} = "AssetProxy"; $macros->{"RandomAssetProxy"} = "RandomAssetProxy"; $macros->{"FileUrl"} = "FileUrl"; $macros->{"PageUrl"} = "PageUrl"; +$macros->{"Page"} = "Page"; $conf->set("paymentPlugins"=>"ITransact"); $conf->set("macros"=>$macros); $conf->set("assets"=>[ diff --git a/docs/upgrades/upgrade_6.5.4-6.5.5.pl b/docs/upgrades/upgrade_6.5.4-6.5.5.pl new file mode 100644 index 000000000..c267e3b7c --- /dev/null +++ b/docs/upgrades/upgrade_6.5.4-6.5.5.pl @@ -0,0 +1,42 @@ +#!/usr/bin/perl + +use lib "../../lib"; +use File::Path; +use Getopt::Long; +use strict; +use WebGUI::Session; +use WebGUI::SQL; + +my $configFile; +my $quiet; + +GetOptions( + 'configFile=s'=>\$configFile, + 'quiet'=>\$quiet +); + +WebGUI::Session::open("../..",$configFile); + +#-------------------------------------------- +print "\tPartitioning limbo\n" unless ($quiet); +my $sth = WebGUI::SQL->read("select lineage from asset where state='trash'"); +while (my ($lineage) = $sth->array) { + WebGUI::SQL->write("update asset set state='trash-limbo' where lineage like ".quote($lineage.'%')." and state='limbo'"); +} +$sth->finish; +WebGUI::SQL->write("update asset set state='clipboard-limbo' where state='limbo'"); + + +#-------------------------------------------- +print "\tRemoving old files\n" unless ($quiet); +# should have been removed in the 6.2-6.3 upgrade +unlink("../../sbin/Hourly/EmptyTrash.pm"); +unlink("../../lib/WebGUI/Wobject/IndexedSearch.pm"); +rmtree("../../lib/WebGUI/Wobject/IndexedSearch"); +unlink("../../lib/WebGUI/Wobject/Product.pm"); +unlink("../../lib/WebGUI/Wobject/SyndicatedContent.pm"); +unlink("../../lib/WebGUI/Wobject/Survey.pm"); + +WebGUI::Session::close(); + + diff --git a/lib/WebGUI/Asset.pm b/lib/WebGUI/Asset.pm index d1ba38388..2307220df 100644 --- a/lib/WebGUI/Asset.pm +++ b/lib/WebGUI/Asset.pm @@ -97,7 +97,6 @@ A lineage is a concatenated series of sequence numbers, each six digits long, th newByLineage newByPropertyHashRef newByUrl - republish paste processPropertiesFromFormPost promote @@ -302,14 +301,14 @@ sub checkExportPath { =head2 cut ( ) -Removes asset from lineage, places it in clipboard state. The "gap" in the lineage is changed in state to limbo. +Removes asset from lineage, places it in clipboard state. The "gap" in the lineage is changed in state to clipboard-limbo. =cut sub cut { my $self = shift; WebGUI::SQL->beginTransaction; - WebGUI::SQL->write("update asset set state='limbo', lastUpdatedBy=".quote($session{user}{userId}).", lastUpdated=".time()." where lineage like ".quote($self->get("lineage").'%')); + WebGUI::SQL->write("update asset set state='clipboard-limbo', lastUpdatedBy=".quote($session{user}{userId}).", lastUpdated=".time()." where lineage like ".quote($self->get("lineage").'%')." and state='published'"); WebGUI::SQL->write("update asset set state='clipboard', lastUpdatedBy=".quote($session{user}{userId}).", lastUpdated=".time()." where assetId=".quote($self->getId)); WebGUI::SQL->commit; $self->updateHistory("cut"); @@ -591,7 +590,9 @@ sub fixUrl { if (length($url) > 250) { $url = substr($url,220); } - $url .= ".".$session{setting}{urlExtension} if ($url =~ /\./ && $session{setting}{urlExtension} ne ""); + if ($session{setting}{urlExtension} ne "" && !($url =~ /\./)) { + $url .= ".".$session{setting}{urlExtension}; + } my ($test) = WebGUI::SQL->quickArray("select url from asset where assetId<>".quote($self->getId)." and url=".quote($url)); if ($test) { my @parts = split(/\./,$url); @@ -812,6 +813,10 @@ sub getAssetManagerControl { $output .= "var manager = new AssetManager(assets,columnHeadings,labels,crumbtrail);\n"; $output .= "manager.assetType='".$controlType."';\n" if (defined $controlType); $output .= "manager.disableDisplay(0);\n" if (defined $removeRank); + if ($controlType eq "ManageTrash" || $controlType eq "ManageClipboard") { + # $output .= "manager.displayCrumbTrail = false;\n"; + # $output .= "manager.sortEnabled = false;\n"; + } $output .= "manager.renderAssets();\n"; $output .= "\n"; return $output; @@ -1177,7 +1182,7 @@ A hash reference comprising modifiers to relative listing. Rules include: =head4 statesToInclude -An array reference containing a list of states that should be returned. Defaults to 'published'. Options include 'published', 'trash', 'cliboard', and 'limbo'. +An array reference containing a list of states that should be returned. Defaults to 'published'. Options include 'published', 'trash', 'cliboard', 'clipboard-limbo' and 'trash-limbo'. =head4 endingLineageLength @@ -1846,20 +1851,6 @@ sub newByUrl { #------------------------------------------------------------------- -=head2 republish ( ) - -Sets Asset properties state to published. - -=cut - -sub republish { - my $self = shift; - WebGUI::SQL->write("update asset set state='published', lastUpdatedBy=".quote($session{user}{userId}).", lastUpdated=".time()." where lineage like ".quote($self->get("lineage").'%')); - $self->{_properties}{state} = "published"; -} - -#------------------------------------------------------------------- - =head2 paste ( assetId ) Returns 1 if can paste an asset to a Parent. Sets the Asset to published. Otherwise returns 0. @@ -1873,9 +1864,10 @@ Alphanumeric ID tag of Asset. sub paste { my $self = shift; my $assetId = shift; - my $pastedAsset = WebGUI::Asset->new($assetId); + my $pastedAsset = WebGUI::Asset->newByDynamicClass($assetId); if ($self->getId eq $pastedAsset->get("parentId") || $pastedAsset->setParent($self)) { - $pastedAsset->republish; + WebGUI::SQL->write("update asset set state='published', lastUpdatedBy=".quote($session{user}{userId}).", lastUpdated=".time()." where lineage like ".quote($self->get("lineage").'%')." and (state='clipboard' or state='clipboard-limbo')"); + $self->{_properties}{state} = "published"; $pastedAsset->updateHistory("pasted to parent ".$self->getId); return 1; } @@ -1905,7 +1897,11 @@ sub processPropertiesFromFormPost { } $data{title} = "Untitled" unless ($data{title}); $data{menuTitle} = $data{title} unless ($data{menuTitle}); - $data{url} = $self->getParent->get("url").'/'.$data{menuTitle} unless ($data{url}); + unless ($data{url}) { + $data{url} = $self->getParent->get("url"); + $data{url} =~ s/(.*)\..*/$1/; + $data{url} .= '/'.$data{menuTitle}; + } $self->update(\%data); foreach my $form (keys %{$session{form}}) { if ($form =~ /^metadata_(\d+)$/) { @@ -1992,6 +1988,20 @@ sub promote { #------------------------------------------------------------------- +=head2 publish ( ) + +Sets an asset and it's descendants to a state of 'published' regardless of it's current state. + +=cut + +sub publish { + my $self = shift; + WebGUI::SQL->write("update asset set state='published', lastUpdatedBy=".quote($session{user}{userId}).", lastUpdated=".time()." where lineage like ".quote($self->get("lineage").'%')); + $self->{_properties}{state} = "published"; +} + +#------------------------------------------------------------------- + =head2 purge ( ) Returns 1. Deletes an asset from tables and removes anything bound to that asset. @@ -2022,7 +2032,7 @@ Returns 1. Purges self and all descendants. sub purgeTree { my $self = shift; - my $descendants = $self->getLineage(["self","descendants"],{returnObjects=>1, invertTree=>1, statesToInclude=>['trash','limbo']}); + my $descendants = $self->getLineage(["self","descendants"],{returnObjects=>1, invertTree=>1, statesToInclude=>['trash','trash-limbo']}); foreach my $descendant (@{$descendants}) { $descendant->purge; } @@ -2153,14 +2163,14 @@ sub swapRank { =head2 trash ( ) -Removes asset from lineage, places it in trash state. The "gap" in the lineage is changed in state to limbo. +Removes asset from lineage, places it in trash state. The "gap" in the lineage is changed in state to trash-limbo. =cut sub trash { my $self = shift; WebGUI::SQL->beginTransaction; - WebGUI::SQL->write("update asset set state='limbo', lastUpdatedBy=".quote($session{user}{userId}).", lastUpdated=".time()." where lineage like ".quote($self->get("lineage").'%')); + WebGUI::SQL->write("update asset set state='trash-limbo', lastUpdatedBy=".quote($session{user}{userId}).", lastUpdated=".time()." where lineage like ".quote($self->get("lineage").'%')); WebGUI::SQL->write("update asset set state='trash', lastUpdatedBy=".quote($session{user}{userId}).", lastUpdated=".time()." where assetId=".quote($self->getId)); WebGUI::SQL->commit; $self->{_properties}{state} = "trash"; @@ -2263,7 +2273,11 @@ Returns "". =cut sub view { - return ""; + my $self = shift; + if ($session{var}{adminOn}) { + return $self->getToolbar; + } + return undef; } #------------------------------------------------------------------- @@ -2329,7 +2343,7 @@ sub www_copy { Copies to clipboard assets in a list, then returns self calling method www_manageAssets(), if canEdit. Otherwise returns AdminConsole rendered insufficient privilege. -=cut +cut sub www_copyList { my $self = shift; @@ -3220,6 +3234,43 @@ sub www_promote { } +#------------------------------------------------------------------- + +=head2 www_restoreList ( ) + +Restores a piece of content from the trash back to it's original location. + +=cut + +sub www_purgeList { + my $self = shift; + return WebGUI::Privilege::insufficient() unless $self->canEdit; + foreach my $id ($session{cgi}->param("assetId")) { + my $asset = WebGUI::Asset->newByDynamicClass($id); + $asset->purge; + } + return $self->www_manageTrash(); +} + +#------------------------------------------------------------------- + +=head2 www_restoreList ( ) + +Restores a piece of content from the trash back to it's original location. + +=cut + +sub www_restoreList { + my $self = shift; + return WebGUI::Privilege::insufficient() unless $self->canEdit; + foreach my $id ($session{cgi}->param("assetId")) { + my $asset = WebGUI::Asset->newByDynamicClass($id); + $asset->publish; + } + return $self->www_manageTrash(); +} + + #------------------------------------------------------------------- =head2 www_setParent ( ) diff --git a/lib/WebGUI/Asset/File.pm b/lib/WebGUI/Asset/File.pm index 9b70ba259..ea6e4e0d8 100644 --- a/lib/WebGUI/Asset/File.pm +++ b/lib/WebGUI/Asset/File.pm @@ -95,6 +95,7 @@ sub duplicate { my $newAsset = $self->SUPER::duplicate(shift); my $newStorage = $self->getStorageLocation->copy; $newAsset->update({storageId=>$newStorage->getId,olderVersions=>''}); + return $newAsset; } diff --git a/lib/WebGUI/Asset/Post.pm b/lib/WebGUI/Asset/Post.pm index 997a00380..03d02461e 100644 --- a/lib/WebGUI/Asset/Post.pm +++ b/lib/WebGUI/Asset/Post.pm @@ -394,7 +394,7 @@ sub getTemplateVars { $var{"reply.url"} = $self->getReplyUrl; $var{'reply.withquote.url'} = $self->getReplyUrl(1); - $var{'url'} = $self->getUrl.'#'.$self->getId; + $var{'url'} = WebGUI::URL::getSiteURL().$self->getUrl.'#'.$self->getId; $var{'rating.value'} = $self->get("rating")+0; $var{'rate.url.1'} = $self->getRateUrl(1); @@ -467,7 +467,9 @@ sub getUploadControl { if ($self->get("storageId")) { my $i; foreach my $filename (@{$self->getStorageLocation->getFiles}) { - $uploadControl .= ''.$filename.'
'; + $uploadControl .= deleteIcon("func=deleteFile&filename=".$filename,$self->get("url"),WebGUI::International::get("delete file warning","Collaboration")) + .' '.$filename.'' + .'
'; $i++; } return $uploadControl unless ($i < $maxAttachments); @@ -650,7 +652,7 @@ sub processPropertiesFromFormPost { $data{endDate} = $self->getThread->getParent->get("endDate") unless ($session{form}{endDate}); ($data{synopsis}, $data{content}) = $self->getSynopsisAndContentFromFormPost; if ($self->getThread->getParent->get("addEditStampToPosts")) { - $data{content} .= "\n\n --- (Edited on ".WebGUI::DateTime::epochToHuman()." by ".$session{user}{alias}.") --- \n"; + $data{content} .= "\n\n --- (Edited on ".WebGUI::DateTime::epochToHuman(undef,"%z %Z [GMT%O]")." by ".$session{user}{alias}.") --- \n"; if ($self->getValue("contentType") eq "mixed" || $self->getValue("contentType") eq "html") { $data{content} = '

'.$data{content}.'

'; } @@ -809,6 +811,14 @@ sub www_approve { return $self->www_view; } +#------------------------------------------------------------------- +sub www_deleteFile { + my $self = shift; + $self->getStorageLocation->deleteFile($session{form}{filename}) if $self->canEdit; + return $self->www_edit; +} + + #------------------------------------------------------------------- =head2 www_deny ( ) @@ -883,7 +893,7 @@ sub www_edit { value=>$session{form}{subscribe} || 1 }); } - $content .= "\n\n".$session{user}{signature} if ($session{user}{signature}); + $content .= "\n\n".$session{user}{signature} if ($session{user}{signature} && !$session{form}{content}); } else { # edit return WebGUI::Privilege::insufficient() unless ($self->canEdit); $var{'form.header'} = WebGUI::Form::formHeader({action=>$self->getUrl}) diff --git a/lib/WebGUI/Asset/Redirect.pm b/lib/WebGUI/Asset/Redirect.pm index 44ff2e038..40aef6ad0 100644 --- a/lib/WebGUI/Asset/Redirect.pm +++ b/lib/WebGUI/Asset/Redirect.pm @@ -127,6 +127,7 @@ sub getName { } + #------------------------------------------------------------------- sub www_edit { my $self = shift; @@ -145,10 +146,10 @@ A web executable method that redirects the user to the specified page, or displa sub www_view { my $self = shift; if ($session{var}{adminOn}) { - return $self->www_edit; + return $self->getContainer->www_view; } WebGUI::HTTP::setRedirect($self->get("redirectUrl")); - return ""; + return undef; } diff --git a/lib/WebGUI/Asset/Wobject.pm b/lib/WebGUI/Asset/Wobject.pm index 48ce040f6..c05c24b03 100644 --- a/lib/WebGUI/Asset/Wobject.pm +++ b/lib/WebGUI/Asset/Wobject.pm @@ -100,6 +100,18 @@ sub definition { } +#------------------------------------------------------------------- + +=head2 deletePageCache ( ) + +Deletes the rendered page cache for this wobject. + +=cut + +sub deletePageCache { + my $self = shift; + WebGUI::Cache->new("wobject_".$self->getId."_".$session{user}{userId})->delete; +} #------------------------------------------------------------------- @@ -395,6 +407,12 @@ sub processMacros { } +#------------------------------------------------------------------- +sub processPropertiesFromFormPost { + my $self = shift; + $self->SUPER::processPropertiesFromFormPost; + $self->deletePageCache; +} #------------------------------------------------------------------- @@ -553,13 +571,14 @@ sub setCollateral { #------------------------------------------------------------------- -=head2 www_view ( ) +=head2 www_view ( [ disableCache ] ) Renders self->view based upon current style, subject to timeouts. Returns Privilege::noAccess() if canView is False. =cut sub www_view { my $self = shift; + my $disableCache = shift; return WebGUI::Privilege::noAccess() unless $self->canView; if ($self->get("encryptPage") && $session{env}{HTTPS} ne "on") { WebGUI::HTTP::setRedirect($self->getUrl); @@ -569,12 +588,12 @@ sub www_view { my $cache; my $output; my $useCache = ( - $session{form}{op} eq "" && $session{form}{pn} eq "" && - ( - ( $self->get("cacheTimeout") > 10 && $session{user}{userId} ne '1') || - ( $self->get("cacheTimeoutVisitor") > 10 && $session{user}{userId} eq '1') - ) && - not $session{var}{adminOn} + $session{form}{op} eq "" && $session{form}{pn} eq "" + && ( + ( $self->get("cacheTimeout") > 10 && $session{user}{userId} ne '1') + || ( $self->get("cacheTimeoutVisitor") > 10 && $session{user}{userId} eq '1') + ) + && !( $session{var}{adminOn} || $disableCache) ); if ($useCache) { $cache = WebGUI::Cache->new("wobject_".$self->getId."_".$session{user}{userId}); diff --git a/lib/WebGUI/Asset/Wobject/Collaboration.pm b/lib/WebGUI/Asset/Wobject/Collaboration.pm index c971cadd7..259c884dd 100644 --- a/lib/WebGUI/Asset/Wobject/Collaboration.pm +++ b/lib/WebGUI/Asset/Wobject/Collaboration.pm @@ -1025,6 +1025,14 @@ sub _xml_encode { return $text; } +#------------------------------------------------------------------- +sub www_view { + my $self = shift; + my $disableCache = ($session{form}{sortBy} ne ""); + return $self->SUPER::www_view($disableCache); +} + + #------------------------------------------------------------------- # print out RSS 2.0 feed describing the items visible on the first page sub www_viewRSS { @@ -1078,6 +1086,7 @@ sub www_viewRSS { + 1; diff --git a/lib/WebGUI/Asset/Wobject/Folder.pm b/lib/WebGUI/Asset/Wobject/Folder.pm index dc92c443f..17ca9bb26 100644 --- a/lib/WebGUI/Asset/Wobject/Folder.pm +++ b/lib/WebGUI/Asset/Wobject/Folder.pm @@ -159,7 +159,7 @@ sub view { title=>$child->get("title"), synopsis=>$child->get("synopsis"), size=>WebGUI::Utility::formatBytes($child->get("assetSize")), - "date.epoch"=>$child->get("dateStamp"), + "date.epoch"=>$child->get("lastUpdated"), "icon.small"=>$child->getIcon(1), "icon.big"=>$child->getIcon, type=>$child->getName, diff --git a/lib/WebGUI/Asset/Wobject/IndexedSearch.pm b/lib/WebGUI/Asset/Wobject/IndexedSearch.pm index ccb2a320d..3ad9590fd 100644 --- a/lib/WebGUI/Asset/Wobject/IndexedSearch.pm +++ b/lib/WebGUI/Asset/Wobject/IndexedSearch.pm @@ -387,6 +387,13 @@ sub www_edit { return $self->getAdminConsole->render($self->getEditForm->print,WebGUI::International::get("26","IndexedSearch")); } +#------------------------------------------------------------------- +sub www_view { + my $self = shift; + return $self->SUPER::www_view(1); +} + + #------------------------------------------------------------------- sub _buildPageList { my ($self, @userSpecifiedRoots, @roots, @allowedRoots, $pageId, @pages); diff --git a/lib/WebGUI/Asset/Wobject/Navigation.pm b/lib/WebGUI/Asset/Wobject/Navigation.pm index a9bcaa97e..07b9bbb0f 100644 --- a/lib/WebGUI/Asset/Wobject/Navigation.pm +++ b/lib/WebGUI/Asset/Wobject/Navigation.pm @@ -340,8 +340,8 @@ sub view { $pageData->{"page.isChild"} = ($asset->get("parentId") eq $current->getId); $pageData->{"page.isParent"} = ($asset->getId eq $current->get("parentId")); $pageData->{"page.isCurrent"} = ($asset->getId eq $current->getId); - $pageData->{"page.isDescendant"} = ( $currentLineage =~ m/^$pageLineage/ && !$pageData->{"page.isCurrent"}); - $pageData->{"page.isAnscestor"} = ( $pageLineage =~ m/^$currentLineage/ && !$pageData->{"page.isCurrent"}); + $pageData->{"page.isDescendant"} = ( $pageLineage =~ m/^$currentLineage/ && !$pageData->{"page.isCurrent"}); + $pageData->{"page.isAncestor"} = ( $currentLineage =~ m/^$pageLineage/ && !$pageData->{"page.isCurrent"}); my $currentBranchLineage = substr($currentLineage,0,12); $pageData->{"page.inBranchRoot"} = ($currentBranchLineage =~ m/^$pageLineage/); $pageData->{"page.isSibling"} = ( diff --git a/lib/WebGUI/Asset/Wobject/Poll.pm b/lib/WebGUI/Asset/Wobject/Poll.pm index be520f607..a827de1e2 100644 --- a/lib/WebGUI/Asset/Wobject/Poll.pm +++ b/lib/WebGUI/Asset/Wobject/Poll.pm @@ -368,6 +368,7 @@ sub www_vote { $u = WebGUI::User->new($session{user}{userId}); $u->karma($self->get("karmaPerVote"),"Poll (".$self->getId.")","Voted on this poll."); } + $self->deletePageCache; } return $self->getContainer->www_view; } diff --git a/lib/WebGUI/FormProcessor.pm b/lib/WebGUI/FormProcessor.pm index 0e2d5b945..2b38f4eec 100644 --- a/lib/WebGUI/FormProcessor.pm +++ b/lib/WebGUI/FormProcessor.pm @@ -621,7 +621,7 @@ sub url { return $session{form}{$_[0]}; } elsif (_checkEmailAddy($session{form}{$_[0]})) { return "mailto:".$session{form}{$_[0]}; - } elsif ($session{form}{$_[0]} =~ /:\/\//) { + } elsif ($session{form}{$_[0]} =~ /^\// || $session{form}{$_[0]} =~ /:\/\// || $session{form}{$_[0]} =~ /^\^/) { return $session{form}{$_[0]}; } return "http://".$session{form}{$_[0]}; diff --git a/lib/WebGUI/Operation/Group.pm b/lib/WebGUI/Operation/Group.pm index b55c8b9cc..65ab30a19 100644 --- a/lib/WebGUI/Operation/Group.pm +++ b/lib/WebGUI/Operation/Group.pm @@ -265,7 +265,11 @@ sub www_editGroup { $f->readOnly($g->groupId,WebGUI::International::get(379)); $f->text("groupName",WebGUI::International::get(84),$g->name); $f->textarea("description",WebGUI::International::get(85),$g->description); - $f->interval("expireOffset",WebGUI::International::get(367), WebGUI::DateTime::secondsToInterval($g->expireOffset)); + $f->interval( + -name=>"expireOffset", + -label=>WebGUI::International::get(367), + -value=>$g->expireOffset + ); $f->yesNo( -name=>"expireNotify", -value=>$g->expireNotify, @@ -332,7 +336,11 @@ sub www_editGroup { -value=>$g->dbQuery, -label=>WebGUI::International::get(1005) ); - $f->interval("dbCacheTimeout",WebGUI::International::get(1004), WebGUI::DateTime::secondsToInterval($g->dbCacheTimeout)); + $f->interval( + -name=>"dbCacheTimeout", + -label=>WebGUI::International::get(1004), + -value=>$g->dbCacheTimeout + ); $f->submit; $output .= $f->print; return _submenu($output,'87',"group add/edit"); diff --git a/lib/WebGUI/i18n/English/Collaboration.pm b/lib/WebGUI/i18n/English/Collaboration.pm index 83678e0a1..b240730cc 100644 --- a/lib/WebGUI/i18n/English/Collaboration.pm +++ b/lib/WebGUI/i18n/English/Collaboration.pm @@ -1,6 +1,11 @@ package WebGUI::i18n::English::Collaboration; our $I18N = { + 'delete file warning' => { + message => q|Are you sure you wish to delete this file?|, + lastUpdated => 1109618544, + }, + 'display last reply' => { message => q|Display last reply?|, lastUpdated => 1109618544, diff --git a/www/extras/assetManager/ManageTrash.js b/www/extras/assetManager/ManageTrash.js index bd6c425c9..741b974ae 100644 --- a/www/extras/assetManager/ManageTrash.js +++ b/www/extras/assetManager/ManageTrash.js @@ -3,12 +3,12 @@ //Creates a new asset object. function ManageTrash() { var asset = new Asset(); - asset.dragEnabled = false; + asset.allowMultiSelect = true; //displays the right click context menu asset.getContextMenu = function () { var arr = new Array(); - arr[arr.length] = new ContextMenuItem(this.labels["cut"],"javascript:" + this.evalReference() + ".cut()"); + arr[arr.length] = new ContextMenuItem(this.labels["restore"],"javascript:" + this.evalReference() + ".restore()"); arr[arr.length] = new ContextMenuItem("",""); arr[arr.length] = new ContextMenuItem(this.labels["purge"],"javascript:" + this.evalReference() + ".purge()"); return arr; @@ -19,6 +19,10 @@ asset.purge = function() { location.href = this.parent.getWrappedURL() + "func=purgeList" + AssetManager_getManager().getSelectedAssetIds(); } +asset.restore = function() { + location.href = this.parent.getWrappedURL() + "func=restoreList" + AssetManager_getManager().getSelectedAssetIds(); +} + return asset; } diff --git a/www/extras/tinymce/jscripts/tiny_mce/plugins/collateral/collateral.html b/www/extras/tinymce/jscripts/tiny_mce/plugins/collateral/collateral.html index 00da4038d..ab31607eb 100644 --- a/www/extras/tinymce/jscripts/tiny_mce/plugins/collateral/collateral.html +++ b/www/extras/tinymce/jscripts/tiny_mce/plugins/collateral/collateral.html @@ -21,16 +21,11 @@ function returnSelected(in_values) { @@ -56,7 +51,7 @@ function returnSelected(in_values) { - + @@ -87,10 +82,10 @@ function returnSelected(in_values) { - + - \ No newline at end of file +