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 .= '
"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 .= '| '.WebGUI::International::get(103).' |
';
- $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('| '.WebGUI::International::get(103).' |
');
+ $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 .= ' '.WebGUI::International::get(105).' |
';
+ $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(' '.WebGUI::International::get(105).' |
');
%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 .= ' '.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");
- $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 .= '
';
+ $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 .= '
';
$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;