diff --git a/docs/upgrades/upgrade_3.7.0-3.8.0.sql b/docs/upgrades/upgrade_3.7.0-3.8.0.sql index e5f090f9f..e4a01d0ca 100644 --- a/docs/upgrades/upgrade_3.7.0-3.8.0.sql +++ b/docs/upgrades/upgrade_3.7.0-3.8.0.sql @@ -84,6 +84,11 @@ delete from international where internationalId=2 and namespace='Article'; delete from international where internationalId=5 and namespace='Article'; update international set message='(Select \"Yes\" only if you aren\'t adding <br> manually.)' where internationalId='11' and namespace='Article' and language='English'; + +update international set message='Select \"Yes\" to change all the pages under this page to this style.' where internationalId='106' and namespace='WebGUI' and language='English'; +update international set message='Select \"Yes\" to change the privileges of all pages under this page to these privileges.' where internationalId='116' and namespace='WebGUI' and language='English'; +INSERT INTO international VALUES (500,'WebGUI','English','Page ID'); +delete from international where internationalId=98 and namespace='WebGUI'; delete from international where internationalId=1 and namespace='MessageBoard'; delete from international where internationalId=1 and namespace='SiteMap'; delete from international where internationalId=2 and namespace='Article'; diff --git a/lib/WebGUI.pm b/lib/WebGUI.pm index 050383361..f58564c01 100644 --- a/lib/WebGUI.pm +++ b/lib/WebGUI.pm @@ -35,7 +35,7 @@ sub _displayAdminBar { tie %hash2, "Tie::IxHash"; #--content adder $hash{WebGUI::URL::page()} = WebGUI::International::get(1); - $hash{WebGUI::URL::page('op=addPage')} = WebGUI::International::get(2); + $hash{WebGUI::URL::page('op=editPage&npp='.$session{page}{pageId})} = WebGUI::International::get(2); $hash{WebGUI::URL::page('op=selectPackageToDeploy')} = WebGUI::International::get(376); foreach $key (keys %{$session{wobject}}) { $hash2{WebGUI::URL::page('func=edit&wid=new&namespace='.$key)} = $session{wobject}{$key}; diff --git a/lib/WebGUI/Operation/Page.pm b/lib/WebGUI/Operation/Page.pm index 394a3be04..1a7d7556b 100644 --- a/lib/WebGUI/Operation/Page.pm +++ b/lib/WebGUI/Operation/Page.pm @@ -12,18 +12,18 @@ package WebGUI::Operation::Page; use Exporter; use strict; -use WebGUI::Form; +use WebGUI::HTMLForm; +use WebGUI::Icon; use WebGUI::International; use WebGUI::Privilege; use WebGUI::Session; -use WebGUI::Shortcut; use WebGUI::SQL; use WebGUI::Template; use WebGUI::URL; use WebGUI::Utility; our @ISA = qw(Exporter); -our @EXPORT = qw(&www_viewPageTree &www_movePageUp &www_movePageDown &www_addPage &www_addPageSave &www_cutPage &www_deletePage &www_deletePageConfirm &www_editPage &www_editPageSave &www_pastePage); +our @EXPORT = qw(&www_viewPageTree &www_movePageUp &www_movePageDown &www_cutPage &www_deletePage &www_deletePageConfirm &www_editPage &www_editPageSave &www_pastePage); #------------------------------------------------------------------- sub _recursivelyChangePrivileges { @@ -84,67 +84,6 @@ sub _traversePageTree { return $output; } -#------------------------------------------------------------------- -sub www_addPage { - my ($output, @array, %hash); - tie %hash, "Tie::IxHash"; - if (WebGUI::Privilege::canEditPage()) { - $output = helpLink(1); - $output .= '

'.WebGUI::International::get(98).'

'; - $output .= formHeader(); - $output .= WebGUI::Form::hidden("op","addPageSave"); - if ($session{form}{root}) { - $output .= WebGUI::Form::hidden("root","1"); - } - $output .= ''; - $output .= tableFormRow(WebGUI::International::get(99), - WebGUI::Form::text("title",20,128,$session{form}{title})); - $output .= tableFormRow(WebGUI::International::get(411), - WebGUI::Form::text("menuTitle",20,128,$session{form}{menuTitle})); - %hash = sortHash(WebGUI::Template::getList()); - $array[0] = "Default"; - $output .= ''; - $output .= tableFormRow(WebGUI::International::get(356),WebGUI::Form::selectList("template",\%hash, \@array, 1, 0, "updateTemplateImage(this.form.template.value)").'
'); - $output .= tableFormRow(WebGUI::International::get(412), - WebGUI::Form::textArea("synopsis",$session{form}{synopsis})); - $output .= tableFormRow(WebGUI::International::get(100), - WebGUI::Form::textArea("metaTags",$session{form}{metaTags})); - $output .= tableFormRow(WebGUI::International::get(307),WebGUI::Form::checkbox("defaultMetaTags",1,1)); - $output .= formSave(); - $output .= '
'; - return $output; - } else { - return WebGUI::Privilege::insufficient(); - } -} - -#------------------------------------------------------------------- -sub www_addPageSave { - my ($urlizedTitle, $nextSeq, $parentId, $menuTitle); - if (WebGUI::Privilege::canEditPage()) { - ($nextSeq) = WebGUI::SQL->quickArray("select max(sequenceNumber) from page where parentId=$session{page}{pageId}"); - $nextSeq += 1; - if ($session{form}{title} eq "") { - $session{form}{title} = "no title"; - } - if ($session{form}{root}) { - $parentId = 0; - } else { - $parentId = $session{page}{pageId}; - } - if ($session{form}{menuTitle} eq "") { - $menuTitle = $session{form}{title}; - } else { - $menuTitle = $session{form}{menuTitle}; - } - $urlizedTitle = WebGUI::URL::makeUnique(WebGUI::URL::urlize($menuTitle)); - WebGUI::SQL->write("insert into page values (".getNextId("pageId").", $parentId, ".quote($session{form}{title}).", $session{page}{styleId}, $session{user}{userId}, $session{page}{ownerView}, $session{page}{ownerEdit}, $session{page}{groupId}, $session{page}{groupView}, $session{page}{groupEdit}, $session{page}{worldView}, $session{page}{worldEdit}, '$nextSeq', ".quote($session{form}{metaTags}).", '$urlizedTitle', '$session{form}{defaultMetaTags}', '$session{form}{template}', ".quote($menuTitle).", ".quote($session{form}{synopsis}).")"); - return ""; - } else { - return WebGUI::Privilege::insufficient(); - } -} - #------------------------------------------------------------------- sub www_cutPage { if ($session{page}{pageId} < 26) { @@ -165,7 +104,7 @@ sub www_deletePage { if ($session{page}{pageId} < 26) { return WebGUI::Privilege::vitalComponent(); } elsif (WebGUI::Privilege::canEditPage()) { - $output .= helpLink(3); + $output .= helpIcon(3); $output .= '

'.WebGUI::International::get(42).'

'; $output .= WebGUI::International::get(101).'

'; $output .= '

"No", "1"=>"Yes"); - $output = helpLink(1); + if (WebGUI::Privilege::canEditPage($session{form}{npp})) { + $f = WebGUI::HTMLForm->new; + if ($session{form}{npp} ne "") { + %page = WebGUI::SQL->quickHash("select * from page where pageId=$session{form}{npp}"); + $page{templatePosition} = 'A'; + $page{pageId} = "new"; + $page{title} = $page{menuTitle} = $page{urlizedTitle} = $page{synopsis} = ''; + $page{parentId} = $session{form}{npp}; + $page{ownerEdit} = 1; + $page{ownerView} = 1; + } else { + %page = %{$session{page}}; + } + $output = helpIcon(1); $output .= '

'.WebGUI::International::get(102).'

'; - $output .= formHeader(); - $output .= WebGUI::Form::hidden("op","editPageSave"); - $output .= ''; - $output .= ''; - $output .= tableFormRow(WebGUI::International::get(99), - WebGUI::Form::text("title",20,128,$session{page}{title})); - $output .= tableFormRow(WebGUI::International::get(411), - WebGUI::Form::text("menuTitle",20,128,$session{page}{menuTitle})); - $output .= tableFormRow(WebGUI::International::get(104), - WebGUI::Form::text("urlizedTitle",20,128,$session{page}{urlizedTitle})); + $f->hidden("pageId",$page{pageId}); + $f->hidden("parentId",$page{parentId}); + $f->hidden("op","editPageSave"); + $f->raw(''); + $f->readOnly($page{pageId},WebGUI::International::get(500)); + $f->text("title",WebGUI::International::get(99),$page{title}); + $f->text("menuTitle",WebGUI::International::get(411),$page{menuTitle}); + $f->text("urlizedTitle",WebGUI::International::get(104),$page{urlizedTitle}); %hash = sortHash(WebGUI::Template::getList()); - $array[0] = $session{page}{template}; - $output .= ''; - $output .= tableFormRow(WebGUI::International::get(356), - WebGUI::Form::selectList("template",\%hash,\@array,1,0,"updateTemplateImage(this.form.template.value)").'
'); - $output .= tableFormRow(WebGUI::International::get(412),WebGUI::Form::textArea("synopsis",$session{page}{synopsis})); - $output .= tableFormRow(WebGUI::International::get(100),WebGUI::Form::textArea("metaTags",$session{page}{metaTags})); - $output .= tableFormRow(WebGUI::International::get(307),WebGUI::Form::checkbox("defaultMetaTags",1,$session{page}{defaultMetaTags})); - $output .= ''; + $f->select("template",\%hash,WebGUI::International::get(356),[$page{templatePosition}],'','', + 'onChange="updateTemplateImage(template.value)"', + '
'); + $f->textarea("synopsis",WebGUI::International::get(412),$page{synopsis}); + $f->textarea("metatags",WebGUI::International::get(100),$page{metaTags}); + $f->yesNo("defaultMetaTags",WebGUI::International::get(307),$page{defaultMetaTags}); + $f->raw(''); %hash = WebGUI::SQL->buildHash("select styleId,name from style where name<>'Reserved' order by name"); - $array[0] = $session{page}{styleId}; - $output .= tableFormRow(WebGUI::International::get(105), - WebGUI::Form::selectList("styleId",\%hash,\@array). - ' '.WebGUI::International::get(6).''); - $output .= tableFormRow("",WebGUI::Form::checkbox("recurseStyle","yes").' '.WebGUI::International::get(106).''); - $output .= ''; - %hash = WebGUI::SQL->buildHash("select users.userId,users.username from users,groupings where groupings.groupId=4 and groupings.userId=users.userId order by users.username"); - $array[0] = $session{page}{ownerId}; - $output .= tableFormRow(WebGUI::International::get(108), - WebGUI::Form::selectList("ownerId",\%hash,\@array). - ' '. - WebGUI::International::get(7).''); - $array[0] = $session{page}{ownerView}; - $output .= tableFormRow(WebGUI::International::get(109), - WebGUI::Form::selectList("ownerView",\%yesNo,\@array)); - $array[0] = $session{page}{ownerEdit}; - $output .= tableFormRow(WebGUI::International::get(110), - WebGUI::Form::selectList("ownerEdit",\%yesNo,\@array)); - %hash = WebGUI::SQL->buildHash("select groupId,groupName from groups where groupName<>'Reserved' order by groupName"); - $array[0] = $session{page}{groupId}; - $output .= tableFormRow(WebGUI::International::get(111), - WebGUI::Form::selectList("groupId",\%hash,\@array). - ' '. - WebGUI::International::get(5).''); - $array[0] = $session{page}{groupView}; - $output .= tableFormRow(WebGUI::International::get(112),WebGUI::Form::selectList("groupView",\%yesNo,\@array)); - $array[0] = $session{page}{groupEdit}; - $output .= tableFormRow(WebGUI::International::get(113),WebGUI::Form::selectList("groupEdit",\%yesNo,\@array)); - $array[0] = $session{page}{worldView}; - $output .= tableFormRow(WebGUI::International::get(114),WebGUI::Form::selectList("worldView",\%yesNo,\@array)); - $array[0] = $session{page}{worldEdit}; - $output .= tableFormRow(WebGUI::International::get(115),WebGUI::Form::selectList("worldEdit",\%yesNo,\@array)); - $output .= tableFormRow("",WebGUI::Form::checkbox("recursePrivs","yes").' '.WebGUI::International::get(116).''); - $output .= formSave(); - $output .= '
'.WebGUI::International::get(103).'
'.WebGUI::International::get(103).'

'.WebGUI::International::get(105).'

'.WebGUI::International::get(105).'

'.WebGUI::International::get(107).'
'; + $f->select("styleId",\%hash,WebGUI::International::get(105),[$page{styleId}],'','','', + '   '.WebGUI::International::get(6).''); + $f->yesNo("recurseStyle",'','','','   '.WebGUI::International::get(106)); + $f->raw('
'.WebGUI::International::get(107).''); + %hash = WebGUI::SQL->buildHash("select users.userId,users.username from users,groupings + where groupings.groupId=4 and groupings.userId=users.userId order by users.username"); + $f->select("ownerId",\%hash,WebGUI::International::get(108),[$page{ownerId}],'','','', + '   '.WebGUI::International::get(7).''); + $f->yesNo("ownerView",WebGUI::International::get(109),$page{ownerView}); + $f->yesNo("ownerEdit",WebGUI::International::get(110),$page{ownerEdit}); + $f->group("groupId",WebGUI::International::get(111),[$page{groupId}],'','','', + '   '.WebGUI::International::get(5).''); + $f->yesNo("groupView",WebGUI::International::get(112),$page{groupView}); + $f->yesNo("groupEdit",WebGUI::International::get(113),$page{groupEdit}); + $f->yesNo("worldView",WebGUI::International::get(114),$page{worldView}); + $f->yesNo("worldEdit",WebGUI::International::get(115),$page{worldEdit}); + $f->yesNo("recursePrivs",'','','','   '.WebGUI::International::get(116)); + $f->submit; + $output .= $f->print; return $output; } else { return WebGUI::Privilege::insufficient(); @@ -264,23 +194,45 @@ sub www_editPage { #------------------------------------------------------------------- sub www_editPageSave { - my (%parent, $urlizedTitle, $test); - if (WebGUI::Privilege::canEditPage()) { - if ($session{form}{title} eq "") { - $session{form}{title} = "no title"; - } - $urlizedTitle = WebGUI::URL::makeUnique( - WebGUI::URL::urlize($session{form}{urlizedTitle}), - $session{page}{pageId} - ); - WebGUI::SQL->write("update page set title=".quote($session{form}{title}).", styleId=$session{form}{styleId}, ownerId=$session{form}{ownerId}, ownerView=$session{form}{ownerView}, ownerEdit=$session{form}{ownerEdit}, groupId='$session{form}{groupId}', groupView=$session{form}{groupView}, groupEdit=$session{form}{groupEdit}, worldView=$session{form}{worldView}, worldEdit=$session{form}{worldEdit}, metaTags=".quote($session{form}{metaTags}).", urlizedTitle='$urlizedTitle', defaultMetaTags='$session{form}{defaultMetaTags}', template='$session{form}{template}', menuTitle=".quote($session{form}{menuTitle}).", synopsis=".quote($session{form}{synopsis})." where pageId=$session{page}{pageId}"); - if ($session{form}{recurseStyle} eq "yes") { - _recursivelyChangeStyle($session{page}{pageId}); + my ($nextSeq, $pageId); + if ($session{form}{pageId} eq "new") { + $pageId = $session{form}{parentId}; + } else { + $pageId = $session{form}{pageId}; + } + if (WebGUI::Privilege::canEditPage($pageId)) { + if ($session{form}{pageId} eq "new") { + ($nextSeq) = WebGUI::SQL->quickArray("select max(sequenceNumber) from page where pageId=$session{page}{parentId}"); + $nextSeq += 1; + $session{form}{pageId} = getNextId("pageId"); + WebGUI::SQL->write("insert into page (pageId,sequenceNumber,parentId) + values ($session{form}{pageId},$nextSeq,$session{form}{parentId})"); } - if ($session{form}{recursePrivs} eq "yes") { - _recursivelyChangePrivileges($session{page}{pageId}); - } - WebGUI::Session::refreshPageInfo($session{page}{pageId}); + $session{form}{title} = "no title" if ($session{form}{title} eq ""); + $session{form}{menuTitle} = $session{form}{title} if ($session{form}{menuTitle} eq ""); + $session{form}{urlizedTitle} = $session{form}{menuTitle} if ($session{form}{urlizedTitle} eq ""); + $session{form}{urlizedTitle} = WebGUI::URL::makeUnique(WebGUI::URL::urlize($session{form}{urlizedTitle}),$session{form}{pageId}); + WebGUI::SQL->write("update page set + title=".quote($session{form}{title}).", + styleId=$session{form}{styleId}, + ownerId=$session{form}{ownerId}, + ownerView=$session{form}{ownerView}, + ownerEdit=$session{form}{ownerEdit}, + groupId='$session{form}{groupId}', + groupView=$session{form}{groupView}, + groupEdit=$session{form}{groupEdit}, + worldView=$session{form}{worldView}, + worldEdit=$session{form}{worldEdit}, + metaTags=".quote($session{form}{metaTags}).", + urlizedTitle='$session{form}{urlizedTitle}', + defaultMetaTags='$session{form}{defaultMetaTags}', + template='$session{form}{template}', + menuTitle=".quote($session{form}{menuTitle}).", + synopsis=".quote($session{form}{synopsis})." + where pageId=$session{form}{pageId}"); + _recursivelyChangeStyle($session{page}{pageId}) if ($session{form}{recurseStyle}); + _recursivelyChangePrivileges($session{page}{pageId}) if ($session{form}{recursePrivs}); + WebGUI::Session::refreshPageInfo($session{page}{pageId}) if ($session{form}{pageId} == $session{page}{pageId}); return ""; } else { return WebGUI::Privilege::insufficient(); diff --git a/lib/WebGUI/Operation/Root.pm b/lib/WebGUI/Operation/Root.pm index c61ebccf9..2a87e57d4 100644 --- a/lib/WebGUI/Operation/Root.pm +++ b/lib/WebGUI/Operation/Root.pm @@ -32,7 +32,7 @@ sub www_listRoots { if (WebGUI::Privilege::isInGroup(3)) { $output = helpLink(28); $output .= '

'.WebGUI::International::get(408).'

'; - $output .= '
'.WebGUI::International::get(409).'
'; $output .= ''; $sth = WebGUI::SQL->read("select * from page where title<>'Reserved' and parentId=0 order by title"); diff --git a/lib/WebGUI/Privilege.pm b/lib/WebGUI/Privilege.pm index 7c826006d..8c3426f8f 100644 --- a/lib/WebGUI/Privilege.pm +++ b/lib/WebGUI/Privilege.pm @@ -36,15 +36,21 @@ sub adminOnly { #------------------------------------------------------------------- sub canEditPage { - my ($isContentManager); + my ($isContentManager,%page); + tie %page, 'Tie::CPHash'; + if ($_[0] ne "") { + %page = WebGUI::SQL->quickHash("select * from page where pageId=$_[0]"); + } else { + %page = %{$session{page}}; + } $isContentManager = isInGroup(4); - if ($session{page}{worldEdit} && $isContentManager) { + if ($page{worldEdit} && $isContentManager) { return 1; - } elsif ($session{user}{userId} eq $session{page}{ownerId} && $session{page}{ownerEdit} && $isContentManager) { + } elsif ($session{user}{userId} eq $page{ownerId} && $page{ownerEdit} && $isContentManager) { return 1; } elsif (isInGroup(3)) { return 1; - } elsif (isInGroup($session{page}{groupId}) && $session{page}{groupEdit} && $isContentManager) { + } elsif (isInGroup($page{groupId}) && $page{groupEdit} && $isContentManager) { return 1; } else { return 0;