From 156f48f4650fc07ce631e1612e373777b6a05606 Mon Sep 17 00:00:00 2001
From: Matthew Wilson
Date: Tue, 19 Jul 2005 17:16:41 +0000
Subject: [PATCH] bunch of fixes
---
lib/WebGUI/AdminConsole.pm | 5 ++++-
lib/WebGUI/Asset.pm | 2 +-
lib/WebGUI/Asset/Post.pm | 11 +++++++++--
lib/WebGUI/Asset/Post/Thread.pm | 8 +++++---
lib/WebGUI/Asset/Shortcut.pm | 1 +
lib/WebGUI/Asset/Wobject/Collaboration.pm | 4 +++-
lib/WebGUI/Asset/Wobject/IndexedSearch.pm | 13 ++++++++-----
lib/WebGUI/Asset/Wobject/Survey.pm | 16 ++++++++--------
lib/WebGUI/Form.pm | 2 +-
lib/WebGUI/Storage.pm | 6 +++++-
10 files changed, 45 insertions(+), 23 deletions(-)
diff --git a/lib/WebGUI/AdminConsole.pm b/lib/WebGUI/AdminConsole.pm
index df468f079..c829d795a 100644
--- a/lib/WebGUI/AdminConsole.pm
+++ b/lib/WebGUI/AdminConsole.pm
@@ -67,15 +67,18 @@ sub _formatFunction {
my $url;
if (exists $function->{func}) {
$url = WebGUI::URL::page("func=".$function->{func});
+ $url = '#' if $session{form}{func} eq $function->{func};
} else {
$url = WebGUI::URL::page("op=".$function->{op});
+ $url = '#' if $session{form}{op} eq $function->{op};
}
return {
title=>WebGUI::International::get($function->{title}{id}, $function->{title}{namespace}),
icon=>$session{config}{extrasURL}."/adminConsole/".$function->{icon},
'icon.small'=>$session{config}{extrasURL}."/adminConsole/small/".$function->{icon},
url=>$url,
- canUse=>WebGUI::Grouping::isInGroup($function->{group})
+ canUse=>WebGUI::Grouping::isInGroup($function->{group}),
+ isCurrentOpFunc=>($session{form}{op} eq $function->{op} || $session{form}{func} eq $function->{func})
};
}
diff --git a/lib/WebGUI/Asset.pm b/lib/WebGUI/Asset.pm
index 7ce4f0a55..6599880e3 100644
--- a/lib/WebGUI/Asset.pm
+++ b/lib/WebGUI/Asset.pm
@@ -1409,7 +1409,7 @@ sub getLineage {
if ($rules->{returnObjects}) {
my $parent = $relativeCache{$parentId};
$relativeCache{$id} = $asset;
- $asset->{_parent} = $parent;
+ $asset->{_parent} = $parent if exists $relativeCache{$properties->{parentId}};
$parent->{_firstChild} = $asset unless(exists $parent->{_firstChild});
$parent->{_lastChild} = $asset;
}
diff --git a/lib/WebGUI/Asset/Post.pm b/lib/WebGUI/Asset/Post.pm
index 22e2c8487..61629a3e8 100644
--- a/lib/WebGUI/Asset/Post.pm
+++ b/lib/WebGUI/Asset/Post.pm
@@ -665,12 +665,19 @@ sub processPropertiesFromFormPost {
$self->setStatusApproved;
}
my $storage = $self->getStorageLocation;
- my $filename = $storage->addFileFromFormPost("file");
+ my $filename;
+ my $attachmentLimit = $self->getThread->getParent->get("attachmentsPerPost");
+ $filename = $storage->addFileFromFormPost("file", $attachmentLimit) if $attachmentLimit;
if (defined $filename) {
$self->setSize($storage->getFileSize($filename));
$storage->setPrivileges($self->get("ownerUserId"), $self->get("groupIdView"), $self->get("groupIdEdit"));
foreach my $file (@{$storage->getFiles}) {
- $storage->generateThumbnail($file);
+ if ($storage->isImage($file)) {
+ $storage->generateThumbnail($file,$session{setting}{maxImageSize});
+ $storage->deleteFile($file);
+ $storage->renameFile('thumb-'.$file,$file);
+ $storage->generateThumbnail($file);
+ }
}
}
$session{form}{proceed} = "redirectToParent";
diff --git a/lib/WebGUI/Asset/Post/Thread.pm b/lib/WebGUI/Asset/Post/Thread.pm
index 1eea09212..5f94bf615 100644
--- a/lib/WebGUI/Asset/Post/Thread.pm
+++ b/lib/WebGUI/Asset/Post/Thread.pm
@@ -510,7 +510,8 @@ Subscribes the user to this thread.
sub subscribe {
my $self = shift;
$self->createSubscriptionGroup;
- WebGUI::Grouping::addUsersToGroups([$session{user}{userId}],[$self->get("subscriptionGroupId")]);
+ WebGUI::Cache->new("cspost_".$self->getId."_".$session{user}{userId}."_".$session{scratch}{discussionLayout}."_".$session{form}{pn})->delete;
+ WebGUI::Grouping::addUsersToGroups([$session{user}{userId}],[$self->get("subscriptionGroupId")]);
}
#-------------------------------------------------------------------
@@ -528,7 +529,7 @@ sub trash {
if ($self->getParent->get("lastPostId") eq $self->getId) {
my $parentLineage = $self->getThread->get("lineage");
my ($id, $date) = WebGUI::SQL->quickArray("select Post.assetId, Post.dateSubmitted from Post, asset where asset.lineage like ".quote($parentLineage.'%')." and Post.assetId<>".quote($self->getId)." and Post.assetId=asset.assetId order by Post.dateSubmitted desc");
- $self->getParent->setLastPost($id,$date);
+ $self->getParent->setLastPost('','') ? $self->getParent->setLastPost($id,$date) : $id;
}
}
@@ -569,7 +570,8 @@ Negates the subscribe method.
sub unsubscribe {
my $self = shift;
- WebGUI::Grouping::deleteUsersFromGroups([$session{user}{userId}],[$self->get("subscriptionGroupId")]);
+ WebGUI::Cache->new("cspost_".$self->getId."_".$session{user}{userId}."_".$session{scratch}{discussionLayout}."_".$session{form}{pn})->delete;
+ WebGUI::Grouping::deleteUsersFromGroups([$session{user}{userId}],[$self->get("subscriptionGroupId")]);
}
diff --git a/lib/WebGUI/Asset/Shortcut.pm b/lib/WebGUI/Asset/Shortcut.pm
index bc1570da2..75728bb22 100644
--- a/lib/WebGUI/Asset/Shortcut.pm
+++ b/lib/WebGUI/Asset/Shortcut.pm
@@ -212,6 +212,7 @@ sub getShortcut {
}
}
$self->{_shortcut}{_properties}{templateId} = $self->get("overrideTemplateId") if ($self->get("overrideTemplate"));
+ $self->{_shortcut}{_properties}{collaborationTemplateId} = $self->get("overrideTemplateId") if ($self->get("overrideTemplate"));
$self->{_shortcut}{_properties}{title} = $self->get("title") if ($self->get("overrideTitle"));
$self->{_shortcut}{_properties}{description} = $self->get("description") if ($self->get("overrideDescription"));
$self->{_shortcut}{_properties}{title} = $self->get("displayTitle") if ($self->get("overrideDisplayTitle"));
diff --git a/lib/WebGUI/Asset/Wobject/Collaboration.pm b/lib/WebGUI/Asset/Wobject/Collaboration.pm
index 8e3128733..9dd8829cd 100644
--- a/lib/WebGUI/Asset/Wobject/Collaboration.pm
+++ b/lib/WebGUI/Asset/Wobject/Collaboration.pm
@@ -830,7 +830,7 @@ sub setLastPost {
my $self = shift;
my $id = shift;
my $date = shift;
- $self->update(lastPostId=>$id, lastPostDate=>$date);
+ $self->update({lastPostId=>$id, lastPostDate=>$date});
}
#-------------------------------------------------------------------
@@ -843,6 +843,7 @@ Subscribes a user to this collaboration system.
sub subscribe {
my $self = shift;
+ WebGUI::Cache->new("wobject_".$self->getId."_".$session{user}{userId})->delete;
WebGUI::Grouping::addUsersToGroups([$session{user}{userId}],[$self->get("subscriptionGroupId")]);
}
@@ -856,6 +857,7 @@ Unsubscribes a user from this collaboration system
sub unsubscribe {
my $self = shift;
+ WebGUI::Cache->new("wobject_".$self->getId."_".$session{user}{userId})->delete;
WebGUI::Grouping::deleteUsersFromGroups([$session{user}{userId}],[$self->get("subscriptionGroupId")]);
}
diff --git a/lib/WebGUI/Asset/Wobject/IndexedSearch.pm b/lib/WebGUI/Asset/Wobject/IndexedSearch.pm
index bdc47dd39..62dff69ce 100644
--- a/lib/WebGUI/Asset/Wobject/IndexedSearch.pm
+++ b/lib/WebGUI/Asset/Wobject/IndexedSearch.pm
@@ -105,7 +105,7 @@ sub getEditForm {
$sth->finish;
unless(%indexName) {
return "" . WebGUI::International::get(2,"Asset_IndexedSearch") .
- "
" . WebGUI::International::get(3,"Asset_IndexedSearch") . "
";
+ "" . WebGUI::International::get(3,"Asset_IndexedSearch") . "
";
}
# Index to use
@@ -381,10 +381,13 @@ sub view {
#-------------------------------------------------------------------
sub www_edit {
- my $self = shift;
- return WebGUI::Privilege::insufficient() unless $self->canEdit;
- $self->getAdminConsole->setHelp("search add/edit");
- return $self->getAdminConsole->render($self->getEditForm->print,WebGUI::International::get("26","Asset_IndexedSearch"));
+ my $self = shift;
+ return WebGUI::Privilege::insufficient() unless $self->canEdit;
+ $self->getAdminConsole->setHelp("search add/edit");
+ my $form = $self->getEditForm;
+ my $output = $form;
+ $output = $form->print unless $form =~ /^getAdminConsole->render($output,WebGUI::International::get("26","Asset_IndexedSearch"));
}
#-------------------------------------------------------------------
diff --git a/lib/WebGUI/Asset/Wobject/Survey.pm b/lib/WebGUI/Asset/Wobject/Survey.pm
index f92bab3f5..a15a2d69e 100644
--- a/lib/WebGUI/Asset/Wobject/Survey.pm
+++ b/lib/WebGUI/Asset/Wobject/Survey.pm
@@ -687,12 +687,12 @@ sub www_edit {
#-------------------------------------------------------------------
sub www_editSave {
return WebGUI::Privilege::insufficient() unless ($_[0]->canEdit);
- $_[0]->SUPER::www_editSave();
+ my $output = $_[0]->SUPER::www_editSave();
if ($session{form}{proceed} eq "addQuestion") {
$session{form}{qid} = "new";
return $_[0]->www_editQuestion;
}
- return "";
+ return $output;
}
#-------------------------------------------------------------------
@@ -728,7 +728,7 @@ sub www_editAnswer {
$question = WebGUI::SQL->buildHashRef("select Survey_questionId,question
from Survey_question where Survey_id=".quote($self->get("Survey_id"))." order by sequenceNumber");
$question = { ('-1' => WebGUI::International::get(82,'Asset_Survey'),%$question) };
- $f->select(
+ $f->selectList(
-name=>"gotoQuestion",
-options=>$question,
-value=>[$answer->{gotoQuestion}],
@@ -855,11 +855,11 @@ sub www_editQuestion {
while (%data = $sth->hash) {
$output .=
deleteIcon('func=deleteAnswerConfirm&qid='.$question->{Survey_questionId}.'&aid='.$data{Survey_answerId},
- $self->getUrl,WebGUI::International::get(45,'Asset_Survey')).
- editIcon('func=editAnswer&qid='.$question->{Survey_questionId}.'&aid='.$data{Survey_answerId}, $self->getUrl).
- moveUpIcon('func=moveAnswerUp'.'&qid='.$question->{Survey_questionId}.'&aid='.$data{Survey_answerId}, $self->getUrl).
- moveDownIcon('func=moveAnswerDown&qid='.$question->{Survey_questionId}.'&aid='.$data{Survey_answerId}, $self->getUrl).
- ' '.$data{answer}.'
';
+ $self->get("url"),WebGUI::International::get(45,'Asset_Survey')).
+ editIcon('func=editAnswer&qid='.$question->{Survey_questionId}.'&aid='.$data{Survey_answerId}, $self->get("url")).
+ moveUpIcon('func=moveAnswerUp'.'&qid='.$question->{Survey_questionId}.'&aid='.$data{Survey_answerId}, $self->get("url")).
+ moveDownIcon('func=moveAnswerDown&qid='.$question->{Survey_questionId}.'&aid='.$data{Survey_answerId}, $self->get("url")).
+ ' '.$data{answer}.'
';
}
$sth->finish;
}
diff --git a/lib/WebGUI/Form.pm b/lib/WebGUI/Form.pm
index 7abe6b3b6..d3247de27 100644
--- a/lib/WebGUI/Form.pm
+++ b/lib/WebGUI/Form.pm
@@ -1676,7 +1676,7 @@ sub template {
#Remove entries from template list that the user does not have permission to view.
for my $assetId ( keys %{$templateList} ) {
- my $asset = WebGUI::Asset->new($assetId);
+ my $asset = WebGUI::Asset::Template->new($assetId);
if (!$asset->canView($userId)) {
delete $templateList->{$assetId};
diff --git a/lib/WebGUI/Storage.pm b/lib/WebGUI/Storage.pm
index cca395cd0..ea7c322c4 100644
--- a/lib/WebGUI/Storage.pm
+++ b/lib/WebGUI/Storage.pm
@@ -190,9 +190,12 @@ Provide the form variable name to which the file being uploaded is assigned. Not
sub addFileFromFormPost {
my $self = shift;
my $formVariableName = shift;
- return "" if (WebGUI::HTTP::getStatus() =~ /^413/);
+ my $attachmentLimit = shift;
+ return "" if (WebGUI::HTTP::getStatus() =~ /^413/);
my $filename;
+ my $attachmentCount = 1;
foreach my $tempPath ($session{cgi}->upload($formVariableName)) {
+ last if $attachmentCount > $attachmentLimit;
if ($tempPath =~ /([^\/\\]+)$/) {
$filename = $1;
} else {
@@ -206,6 +209,7 @@ sub addFileFromFormPost {
$filename = WebGUI::URL::makeCompliant($filename);
my $bytesread;
my $file = FileHandle->new(">".$self->getPath($filename));
+ $attachmentCount++;
if (defined $file) {
my $buffer;
binmode $file;