From cff0a9ae9dd8b27944d8b5ff9da6643733e94a2b Mon Sep 17 00:00:00 2001 From: Colin Kuskie Date: Thu, 5 Mar 2009 00:15:20 +0000 Subject: [PATCH] Templates for archive, and edit story. Added switches and URLs for adding stories. Fixed date problems in the date_loop. Fixed an autocommit issue with folders when there's no currently open version tag. --- ...oot_import_storyarchive_storyarchive.wgpkg | Bin 0 -> 983 bytes .../root_import_storymanager_editstory.wgpkg | Bin 918 -> 997 bytes lib/WebGUI/Asset/Wobject/StoryArchive.pm | 19 ++++--- lib/WebGUI/i18n/English/Asset_StoryArchive.pm | 6 ++ t/Asset/Wobject/StoryArchive.t | 53 ++++++++++++------ 5 files changed, 52 insertions(+), 26 deletions(-) create mode 100644 docs/upgrades/packages-7.7.0/root_import_storyarchive_storyarchive.wgpkg diff --git a/docs/upgrades/packages-7.7.0/root_import_storyarchive_storyarchive.wgpkg b/docs/upgrades/packages-7.7.0/root_import_storyarchive_storyarchive.wgpkg new file mode 100644 index 0000000000000000000000000000000000000000..386ad0b8db92862538ef6b6b55383454f76acdd6 GIT binary patch literal 983 zcmV;|11S6-iwFP!00000|Ls*3ZNx2;9zq2eMI&DBtq0) z^&5K4FItKxg$UleW!-nxKL|T_>mPK3sNn#c`#<}te{=uPpCZEd7chjbHd2upbDf^^ z?|%n)l_{AqWjNFJ7S*g~O0;=(lSyS5Jw}np(-cjtI8ls%8Z$OV-vv}#uZy%sXl{C*sEV-z`MgpSGVzErLRQx`C>LwXlSu2Q^GQkoWD z+C*A5`!!L?oL{qB|5QMT*36XN);EK2L84EmY%)3<{C4)~WcBvzs?z0pq@}AT+Er`2KaleG>ou?Bdcm{z(t!U2+XYo?Npo$djZD%4Z!Jw6r*r^@&ypUGsgA^z6V<$A!TBu|UN)-tIV3}YT0 zMMpg&4cGUq^8c7!09;p#Bm#d+8E!DDMr54;SDxHz!F*=w?)H*Yx z9i9!DmHRdmbl`ve%kzZ^^EYn?;}78>J+3fteZJPPCJ}utGpH~=RJ&@7S#QX6YpCmU zTG7!yi~_%k2vvkJD&dVzuwig;wm-gWAJHE#emun+{p{nJfoBGu8Q2E{KLK0F-$wut F004#l<UHA3tyWJl^lL|2U2l1b(NZ$Ai8Z-9C)g z=5ac%>-s%E@O|IwSgz~z+>QlP+J7>skN{{Qr-Ut^UN4ha$fv`4bMTnWnemy_Zz*I@ zyY+v+{JsB0a`s9#+2 zhSr~d?U`4p;3*c0V5#4lG@VJ2R42D77YawmCd4vI%@iFD1x670G1rr9*WLu+lqpl+ zPO}*$a)F~d$nbhfSj5+6mQx30&Uh-x<8|<@66g%0XoBL$QNCtaT)}}IN2X%0u9yjG zUJ1@smn3>4UA_A}K@1oWT^tc*Uet4tlvtIePI~I@k1uzNTY^G)Xu9-LFjam_aF#ePpa4!IKLlFe^l{p`-ffm1bqv7Z=A|T&n9!UC|iNPYcB2jV(3o zz$ocCN(!+qG;TOFA~PILD)rsCn0CJpJR*R-a2D6=9e7T^ci0f^QqMmTT=-c~gE1Or zL|&`CWn`?5$|Xt9xq|A&k$z|tMCw^+MhmnJcQp=mN$$!(Kkyn=!Fe;|kv2-f)mKgD zO)$$QTDPABl_CK~YQj&@GaQ~xKD>WS7Lo6HxU5*ecTFJj9iF3%KI(0=TV~C{AQ%k% zz-#nh;1!YJOYbUU+|~r}VH7SmpGkv`1z(Su{+9@-mm;>|5GvE>_zbZ1!AH*}PYo z3)e$3+<|k@Z!iWugmYBFoAdSAJpOI@i#ooIqzXh9Pk3zWOW)TwUti-+xvQ~bV8_6Y TfgJ|i@BVdB5<*h!mEE}Jxp_E1aU%E#yS`JC@$v$Fc-I8Lk8tW@;A)iAr;fZbXwr{cP9 zv)*jfS}mtyxvo=dRxD6i{Ys=l0z&gRC2aDzzeHjo9~bN7V4391{>0V)No1mSi~r61 z_vTN@*)s(S*0=I^f9U-iwOV88{h~P{=kV}r1Dep5iVGBA+v-@~ zzP~a@vEVTlieRZv%{6_~6BsG%@1*+Fc5QQ63n-Fm?>goJq&=g<5=s|h=rU#O+i^0Y zM26TebQzwV6Xx@oG3pconKB+ra^D=EF)W7Ak_W!gsTVrsUjJNJN(42=1?Q?tBAr`RBb7#o0a~JpeWJ`kp+jV!_&#RK znGks*xZ)~}GZacm27)K?fxidFj8>ztrf?L~IdI)E!PJNFEf2t!Z!c}_|5OKbX>VV$ zF2w<6{&rV^(vK+;)|iWEKorH>-D)m`Yj?yNC@i$LPo~BQ8eyvMn;p(&j9AI0()RYj zFx)YsOx2Pqr5IxJC`O`VjkpTmKv>;sZg;-_r5l-yUdYoZ1>%2!j41bzBAl%ry9rKb zT=;VJo@5e5NTjQG6p|pM@TdMIsXK+g4^5pFes$hgQ2s^h5f)-W)KJiU!J`u-Fw5Gr z)VaEFa@w?u5$c!`Iv=EkMbov%D9Q-n9FN`)4?3NmCZtYhFz@ucjQK7^ELhNOiRCoi z9&w*Q>=^^PwfdIZcD5R&_)G^GPSNCI8LBAa$$96D;EZ=$g@{P4fJQWnwM6rBLgHht zz;9N~%RCohmJBpSJnB|Yg2WKBjbfNG)AA%R^n6Nga=%WyT?7>)0fcYtJ_25+(;pli z-iMONL+(xHFy5ID@U+KlBK|{K%Uu z%B09ghJ1El=paL*gffFF0dn;+7*4eEqAoD=L>en|sAq5~9)*H@wDo3Dc%gQt?W-?p zNE>JU*Zk^ZX|xe}no5{1%g<*rngdlH?@$qDxIa`A=9}P8Fu?0U2j$_7`K&( 'template', label => $i18n->get('template'), hoverHelp => $i18n->get('template help'), - filter => 'fixId', namespace => 'StoryArchive', - defaultValue => '', + defaultValue => 'yxD5ka7XHebPLD-LXBwJqw', }, storyTemplateId => { tab => 'display', fieldType => 'template', label => $i18n->get('story template'), hoverHelp => $i18n->get('story template help'), - filter => 'fixId', namespace => 'Story', defaultValue => '', }, @@ -126,7 +124,6 @@ sub definition { fieldType => 'template', label => $i18n->get('edit story template'), hoverHelp => $i18n->get('edit story template help'), - filter => 'fixId', namespace => 'Story/Edit', defaultValue => 'E3tzZjzhmYoNlAyP2VW33Q', }, @@ -207,7 +204,8 @@ sub getFolder { isHidden => 1, }); $newVersionTag->commit(); - $oldVersionTag->setWorking(); + ##Restore the old one, if it exists + $oldVersionTag->setWorking() if $oldVersionTag; ##Get a new version of the asset from the db with the correct state $folder = WebGUI::Asset->newByUrl($session, $folderUrl); @@ -266,6 +264,8 @@ sub view { #This is an example of debugging code to help you diagnose problems. #WebGUI::ErrorHandler::warn($self->get("templateId")); + use Data::Dumper; + $session->log->warn(Dumper $var); return $self->processTemplate($var, undef, $self->{_viewTemplate}); } @@ -306,16 +306,19 @@ sub viewTemplateVariables { if ($storyDate ne $lastStoryDate) { push @{ $var->{date_loop} }, {}; $datePointer = $var->{date_loop}->[-1]; - $datePointer->{epochDate} = $creationDate; - $datePointer->{storyLoop} = []; + $datePointer->{epochDate} = $creationDay; + $datePointer->{story_loop} = []; $lastStoryDate = $storyDate; } - push @{$datePointer->{storyLoop}}, { + push @{$datePointer->{story_loop}}, { url => $story->getUrl, title => $story->getTitle, creationDate => $creationDate } } + + $var->{addStoryUrl} = $self->getUrl('func=add;class=WebGUI::Asset::Story'); + $var->{canPostStories} = $self->canPostStories; return 1; } diff --git a/lib/WebGUI/i18n/English/Asset_StoryArchive.pm b/lib/WebGUI/i18n/English/Asset_StoryArchive.pm index e25680a37..88959c04d 100644 --- a/lib/WebGUI/i18n/English/Asset_StoryArchive.pm +++ b/lib/WebGUI/i18n/English/Asset_StoryArchive.pm @@ -165,6 +165,12 @@ our $I18N = { lastUpdated => 0, }, + 'add a story' => { + message => q|Add a Story.|, + context => q|label for the URL to add a story to the archive.|, + lastUpdated => 0, + }, + }; 1; diff --git a/t/Asset/Wobject/StoryArchive.t b/t/Asset/Wobject/StoryArchive.t index 7e62b4748..55db09389 100644 --- a/t/Asset/Wobject/StoryArchive.t +++ b/t/Asset/Wobject/StoryArchive.t @@ -70,12 +70,15 @@ my $class = 'WebGUI::Asset::Wobject::StoryArchive'; my $loaded = use_ok($class); my $storage; +my $versionTag; SKIP: { skip "Unable to load module $class", $tests unless $loaded; -$archive = WebGUI::Asset->getDefault($session)->addChild({className => $class}); +$archive = WebGUI::Asset->getDefault($session)->addChild({className => $class, title => 'My Stories', url => '/home/mystories'}); +$versionTag = WebGUI::VersionTag->getWorking($session); +$versionTag->commit; isa_ok($archive, 'WebGUI::Asset::Wobject::StoryArchive', 'created StoryArchive'); @@ -155,9 +158,15 @@ is($folder->getFirstChild->getTitle, 'First Story', '... and it is the correct c # ################################################################ -my $oldFolder = $archive->getFolder(997966800); -my $tomorrow = time()+24*3600; +my $wgBday = 997966800; +my $oldFolder = $archive->getFolder($wgBday); + +my $tomorrow = time()+24*3600; my $newFolder = $archive->getFolder($tomorrow); + +my ($wgBdayMorn,undef) = $session->datetime->dayStartEnd($wgBday); +my ($tomorrowMorn,undef) = $session->datetime->dayStartEnd($tomorrow); + my $story = $oldFolder->addChild({ className => 'WebGUI::Asset::Story', title => 'WebGUI is released'}); $session->db->write('update asset set creationDate=997966800 where assetId=?',[$story->getId]); $story = $newFolder->addChild({ className => 'WebGUI::Asset::Story', title => "There's always tomorrow" }); @@ -174,26 +183,28 @@ KEY: foreach my $key (keys %{ $templateVars }) { cmp_deeply( $templateVars, { - date_loop => [ + canPostStories => 0, + addStoryUrl => '/home/mystories?func=add;class=WebGUI::Asset::Story', + date_loop => [ { - epochDate => 997966800, - storyLoop => [ { - creationDate => 997966800, - url => '/home/untitled/august_16_2001/webgui-is-released', + epochDate => $wgBdayMorn, + story_loop => [ { + creationDate => $wgBday, + url => '/home/mystories/august_16_2001/webgui-is-released', title => 'WebGUI is released', }, ], }, { epochDate => ignore(), - storyLoop => [ { + story_loop => [ { creationDate => ignore(), url => re('first-story'), title => 'First Story', }, ], }, { - epochDate => $tomorrow, - storyLoop => [{ + epochDate => $tomorrowMorn, + story_loop => [{ creationDate => $tomorrow, url => re('theres-always-tomorrow'), title => "There's always tomorrow", @@ -209,6 +220,7 @@ $folder->addChild({ className => 'WebGUI::Asset::Story', title => 'Story 3'}); $folder->addChild({ className => 'WebGUI::Asset::Story', title => 'Story 4'}); $archive->update({storiesPerPage => 3}); +$session->user({userId => 3}); $templateVars = {}; $archive->viewTemplateVariables($templateVars); @@ -217,21 +229,24 @@ KEY: foreach my $key (keys %{ $templateVars }) { delete $templateVars->{$key}; } + cmp_deeply( $templateVars, { - date_loop => [ + canPostStories => 1, + addStoryUrl => '/home/mystories?func=add;class=WebGUI::Asset::Story', + date_loop => [ { - epochDate => 997966800, - storyLoop => [ { - creationDate => 997966800, - url => '/home/untitled/august_16_2001/webgui-is-released', + epochDate => $wgBdayMorn, + story_loop => [ { + creationDate => $wgBday, + url => '/home/mystories/august_16_2001/webgui-is-released', title => 'WebGUI is released', }, ], }, { epochDate => ignore(), - storyLoop => [ + story_loop => [ { creationDate => ignore(), url => re('first-story'), @@ -258,7 +273,9 @@ END { if (defined $archive and ref $archive eq $class) { $archive->purge; } - WebGUI::VersionTag->getWorking($session)->rollback; + if ($versionTag) { + $versionTag->rollback; + } foreach my $user ($editor, $reporter, $reader) { $user->delete if defined $user; }