diff --git a/docs/upgrades/upgrade_3.8.0-3.9.0.sql b/docs/upgrades/upgrade_3.8.0-3.9.0.sql index a69089379..a303c68de 100644 --- a/docs/upgrades/upgrade_3.8.0-3.9.0.sql +++ b/docs/upgrades/upgrade_3.8.0-3.9.0.sql @@ -66,6 +66,24 @@ INSERT INTO international VALUES (44,'UserSubmission','English','Group To Modera INSERT INTO international VALUES (51,'UserSubmission','English','Display thumbnails?'); alter table UserSubmission add column displayThumbnails int not null default 0; INSERT INTO international VALUES (52,'UserSubmission','English','Thumbnail'); +alter table UserSubmission add column layout varchar(30) not null default 'traditional'; +INSERT INTO international VALUES (53,'UserSubmission','English','Layout'); +INSERT INTO international VALUES (54,'UserSubmission','English','Web Log'); +INSERT INTO international VALUES (55,'UserSubmission','English','Traditional'); +INSERT INTO international VALUES (56,'UserSubmission','English','Photo Gallery'); +INSERT INTO international VALUES (57,'UserSubmission','English','Responses'); + + + + + + + + + + + + diff --git a/lib/WebGUI/Wobject/UserSubmission.pm b/lib/WebGUI/Wobject/UserSubmission.pm index 2e12f3c65..784d18e64 100644 --- a/lib/WebGUI/Wobject/UserSubmission.pm +++ b/lib/WebGUI/Wobject/UserSubmission.pm @@ -53,6 +53,96 @@ sub _canEditMessage { } } +#------------------------------------------------------------------- +sub _traditionalView { + my (@row, $i, $image, $output, $p, $sth, %submission); + tie %submission, 'Tie::CPHash'; + $sth = WebGUI::SQL->read("select * from UserSubmission_submission + where wobjectId=".$_[0]->get("wobjectId")." and (status='Approved' or userId=$session{user}{userId}) order by dateSubmitted desc"); + while (%submission = $sth->hash) { + $submission{title} = WebGUI::HTML::filter($submission{title},'all'); + $row[$i] = ' + + '.$submission{title}.''; + if ($submission{userId} == $session{user}{userId}) { + $row[$i] .= ' ('.$submissionStatus{$submission{status}}.')'; + } + $row[$i] .= ''; + if ($_[0]->get("displayThumbnails")) { + if ($submission{image} ne "") { + $image = WebGUI::Attachment->new($submission{image},$_[0]->get("wobjectId"),$submission{submissionId}); + $row[$i] .= ''; + } else { + $row[$i] .= ''; + } + } + $row[$i] .= ''.epochToHuman($submission{dateSubmitted},"%z"). + ''.$submission{username}.''; + $i++; + } + $sth->finish; + $output .= ''. + '
'.WebGUI::International::get(20,$namespace).'
'; + $p = WebGUI::Paginator->new(WebGUI::URL::page(),\@row,$_[0]->get("submissionsPerPage")); + $output .= ''; + $output .= ''; + } + $output .= ''; + $output .= $p->getPage($session{form}{pn}); + $output .= '
'.WebGUI::International::get(99); + if ($_[0]->get("displayThumbnails")) { + $output .= ''.WebGUI::International::get(52,$namespace).''.WebGUI::International::get(13,$namespace). + ''.WebGUI::International::get(21,$namespace).'
'; + $output .= $p->getBarTraditional($session{form}{pn}); + return $output; +} + +#------------------------------------------------------------------- +sub _weblogView { + my (@row, $i, $image, $output, $p, $sth, %submission, $responses); + tie %submission, 'Tie::CPHash'; + $sth = WebGUI::SQL->read("select * from UserSubmission_submission + where wobjectId=".$_[0]->get("wobjectId")." and (status='Approved' or userId=$session{user}{userId}) order by dateSubmitted desc"); + while (%submission = $sth->hash) { + $submission{title} = WebGUI::HTML::filter($submission{title},'all'); + ($responses) = WebGUI::SQL->quickArray("select count(*) from discussion + where wobjectId=".$_[0]->get("wobjectId")." and subId=$submission{submissionId}"); + $row[$i] = ''.$submission{title}; + if ($submission{userId} == $session{user}{userId}) { + $row[$i] .= ' ('.$submissionStatus{$submission{status}}.')'; + } + $row[$i] .= ''; + if ($_[0]->get("displayThumbnails")) { + if ($submission{image} ne "") { + $image = WebGUI::Attachment->new($submission{image},$_[0]->get("wobjectId"),$submission{submissionId}); + $row[$i] .= ''; + } + } + $row[$i] .= WebGUI::International::get(40,$namespace) + .' '.$submission{username}.'' + .' - '.epochToHuman($submission{dateSubmitted},"%z \@ %Z").'
' + .$submission{content}.'

('.WebGUI::International::get(46,$namespace) + .' | '.$responses.' '.WebGUI::International::get(57,$namespace).')

'; + $i++; + } + $sth->finish; + if (WebGUI::Privilege::isInGroup($_[0]->get("groupToContribute"))) { + $output .= '' + .WebGUI::International::get(20,$namespace).''; + } + $output .= ''; + $p = WebGUI::Paginator->new(WebGUI::URL::page(),\@row,$_[0]->get("submissionsPerPage")); + $output .= $p->getPage($session{form}{pn}); + $output .= '
'; + $output .= $p->getBarTraditional($session{form}{pn}); + return $output; +} + #------------------------------------------------------------------- sub duplicate { my ($sth, $file, @row, $newSubmissionId, $w); @@ -66,6 +156,7 @@ sub duplicate { allowDiscussion=>$_[0]->get("allowDiscussion"), editTimeout=>$_[0]->get("editTimeout"), groupToPost=>$_[0]->get("groupToPost"), + layout=>$_[0]->get("layout"), displayThumbnails=>$_[0]->get("displayThumbnails"), groupToModerate=>$_[0]->get("groupToModerate") }); @@ -77,6 +168,7 @@ sub duplicate { WebGUI::SQL->write("insert into UserSubmission_submission values (".$w->get("wobjectId").", $newSubmissionId, ". quote($row[2]).", $row[3], ".quote($row[4]).", '$row[5]', ".quote($row[6]).", ". quote($row[7]).", ".quote($row[8]).", '$row[9]', '$row[10]')"); + WebGUI::Discussion::duplicate($_[0]->get("wobjectId"),$w->get("wobjectId"),$row[0],$newSubmissionId); } $sth->finish; } @@ -93,13 +185,14 @@ sub new { #------------------------------------------------------------------- sub purge { WebGUI::SQL->write("delete from UserSubmission_submission where wobjectId=".$_[0]->get("wobjectId")); + WebGUI::Discussion::purge($_[0]->get("wobjectId")); $_[0]->SUPER::purge(); } #------------------------------------------------------------------- sub set { $_[0]->SUPER::set($_[1],[qw(submissionsPerPage groupToContribute groupToApprove defaultStatus groupToModerate - groupToPost displayThumbnails editTimeout allowDiscussion)]); + groupToPost displayThumbnails editTimeout layout allowDiscussion)]); } #------------------------------------------------------------------- @@ -218,7 +311,11 @@ sub www_denySubmission { #------------------------------------------------------------------- sub www_edit { - my ($output, $f, $defaultStatus, $submissionsPerPage, $groupToApprove, $groupToModerate); + my (%layout, $layout, $output, $f, $defaultStatus, $submissionsPerPage, $groupToApprove, $groupToModerate); + %layout = (traditional=>WebGUI::International::get(55,$namespace), + weblog=>WebGUI::International::get(54,$namespace), + photogallery=>WebGUI::International::get(56,$namespace)); + $layout = $_[0]->get("layout") || "traditional"; $groupToApprove = $_[0]->get("groupToApprove") || 4; $groupToModerate = $_[0]->get("groupToModerate") || 4; $submissionsPerPage = $_[0]->get("submissionsPerPage") || 50; @@ -227,6 +324,7 @@ sub www_edit { $output = helpIcon(1,$namespace); $output .= '

'.WebGUI::International::get(18,$namespace).'

'; $f = WebGUI::HTMLForm->new; + $f->select("layout",\%layout,WebGUI::International::get(53,$namespace),[$layout]); $f->group("groupToApprove",WebGUI::International::get(1,$namespace),[$groupToApprove]); $f->group("groupToContribute",WebGUI::International::get(2,$namespace),[$_[0]->get("groupToContribute")]); $f->integer("submissionsPerPage",WebGUI::International::get(6,$namespace),$submissionsPerPage); @@ -256,6 +354,7 @@ sub www_editSave { groupToPost=>$session{form}{groupToPost}, editTimeout=>$session{form}{editTimeout}, allowDiscussion=>$session{form}{allowDiscussion}, + layout=>$session{form}{layout}, displayThumbnails=>$session{form}{displayThumbnails} }); return ""; @@ -445,50 +544,15 @@ sub www_showMessage { #------------------------------------------------------------------- sub www_view { - my (%submission, $image, $output, $sth, @row, $i, $p); + my ($output); $output = $_[0]->displayTitle; $output .= $_[0]->description; $output = $_[0]->processMacros($output); - $sth = WebGUI::SQL->read("select * from UserSubmission_submission - where wobjectId=".$_[0]->get("wobjectId")." and (status='Approved' or userId=$session{user}{userId}) order by dateSubmitted desc"); - while (%submission = $sth->hash) { - $submission{title} = WebGUI::HTML::filter($submission{title},'all'); - $row[$i] = ' - - '.$submission{title}.''; - if ($submission{userId} == $session{user}{userId}) { - $row[$i] .= ' ('.$submissionStatus{$submission{status}}.')'; - } - $row[$i] .= ''; - if ($_[0]->get("displayThumbnails")) { - if ($submission{image} ne "") { - $image = WebGUI::Attachment->new($submission{image},$_[0]->get("wobjectId"),$submission{submissionId}); - $row[$i] .= ''; - } else { - $row[$i] .= ''; - } - } - $row[$i] .= ''.epochToHuman($submission{dateSubmitted},"%z"). - ''.$submission{username}.''; - $i++; + if ($_[0]->get("layout") eq "weblog") { + $output .= $_[0]->_weblogView; + } else { + $output .= $_[0]->_traditionalView; } - $sth->finish; - $output .= ''. - '
'.WebGUI::International::get(20,$namespace).'
'; - $p = WebGUI::Paginator->new(WebGUI::URL::page(),\@row,$_[0]->get("submissionsPerPage")); - $output .= ''; - $output .= ''; - } - $output .= ''; - $output .= $p->getPage($session{form}{pn}); - $output .= '
'.WebGUI::International::get(99); - if ($_[0]->get("displayThumbnails")) { - $output .= ''.WebGUI::International::get(52,$namespace).''.WebGUI::International::get(13,$namespace). - ''.WebGUI::International::get(21,$namespace).'
'; - $output .= $p->getBarTraditional($session{form}{pn}); return $output; }