diff --git a/docs/credits.txt b/docs/credits.txt
index e778ff125..58ec93eec 100644
--- a/docs/credits.txt
+++ b/docs/credits.txt
@@ -75,7 +75,11 @@ Tie::IxHash..........................Gurusamy Sarathy
XML::RSSLite.........................Jerrad Pierce
Scott Thomason
-Midas................................Mike Kaply
+Midas................................The Mozilla Development Team
+ Mike Kaply
Classic Rich Edit....................Bratta
+Tab DHTML............................Garrett Smith
+ dhtmlkitchen.com
+
diff --git a/lib/WebGUI/Operation/Page.pm b/lib/WebGUI/Operation/Page.pm
index a7d0a5403..3b8a136a1 100644
--- a/lib/WebGUI/Operation/Page.pm
+++ b/lib/WebGUI/Operation/Page.pm
@@ -17,10 +17,11 @@ use WebGUI::Grouping;
use WebGUI::HTMLForm;
use WebGUI::Icon;
use WebGUI::International;
+use WebGUI::Page;
use WebGUI::Privilege;
use WebGUI::Session;
use WebGUI::SQL;
-use WebGUI::Page;
+use WebGUI::TabForm;
use WebGUI::URL;
use WebGUI::Utility;
@@ -207,14 +208,29 @@ sub www_deletePageConfirm {
return WebGUI::Privilege::insufficient();
}
}
-
+use WebGUI::TabForm;
#-------------------------------------------------------------------
sub www_editPage {
my ($f, $endDate, $output, $subtext, $childCount, %hash, %page);
tie %hash, "Tie::IxHash";
tie %page, "Tie::CPHash";
if (WebGUI::Privilege::canEditPage($session{form}{npp})) {
- $f = WebGUI::HTMLForm->new;
+ my %tabs;
+ tie %tabs, 'Tie::IxHash';
+ %tabs = (
+ properties=>{
+ name=>WebGUI::International::get(103)
+ },
+ style=>{
+ name=>WebGUI::International::get(105),
+ uiLevel=>5
+ },
+ privileges=>{
+ name=>WebGUI::International::get(107),
+ uiLevel=>6
+ }
+ );
+ $f = WebGUI::TabForm->new(\%tabs);
if ($session{form}{npp} ne "") {
my $buildFromPage = $session{form}{npp};
if ($buildFromPage == 0) {
@@ -231,75 +247,66 @@ sub www_editPage {
($childCount) = WebGUI::SQL->quickArray("select count(*) from page where parentId=$page{pageId}");
}
$page{endDate} = (addToDate(time(),10)) if ($page{endDate} < 0);
- $output = helpIcon(1);
+ #$output = helpIcon(1);
$output .= '
'.WebGUI::International::get(102).'
';
$f->hidden("pageId",$page{pageId});
$f->hidden("parentId",$page{parentId});
$f->hidden("op","editPageSave");
- $f->submit if ($page{pageId} ne "new");
- $f->raw(
- -value=>'| '.WebGUI::International::get(103).' |
',
- -uiLevel=>5
- );
- $f->readOnly(
+ $f->getTab("properties")->readOnly(
-value=>$page{pageId},
-label=>WebGUI::International::get(500),
-uiLevel=>3
);
- $f->text("title",WebGUI::International::get(99),$page{title});
- $f->text(
+ $f->getTab("properties")->text("title",WebGUI::International::get(99),$page{title});
+ $f->getTab("properties")->text(
-name=>"menuTitle",
-label=>WebGUI::International::get(411),
-value=>$page{menuTitle},
-uiLevel=>1
);
- $f->yesNo(
+ $f->getTab("properties")->yesNo(
-name=>"hideFromNavigation",
-value=>$page{hideFromNavigation},
-label=>WebGUI::International::get(886),
-uiLevel=>6
);
- $f->text(
+ $f->getTab("properties")->text(
-name=>"urlizedTitle",
-label=>WebGUI::International::get(104),
-value=>$page{urlizedTitle},
-uiLevel=>3
);
- $f->select(
+ $f->getTab("properties")->select(
-name=>"languageId",
-label=>WebGUI::International::get(304),
-value=>[$page{languageId}],
-uiLevel=>1,
-options=>WebGUI::International::getLanguages()
);
- $f->url(
+ $f->getTab("properties")->url(
-name=>"redirectURL",
-label=>WebGUI::International::get(715),
-value=>$page{redirectURL},
-uiLevel=>9
);
- $f->textarea(
+ $f->getTab("properties")->textarea(
-name=>"synopsis",
-label=>WebGUI::International::get(412),
-value=>$page{synopsis},
-uiLevel=>3
);
- $f->textarea(
+ $f->getTab("properties")->textarea(
-name=>"metaTags",
-label=>WebGUI::International::get(100),
-value=>$page{metaTags},
-uiLevel=>7
);
- $f->yesNo(
+ $f->getTab("properties")->yesNo(
-name=>"defaultMetaTags",
-label=>WebGUI::International::get(307),
-value=>$page{defaultMetaTags},
-uiLevel=>5
);
- $f->raw(
- -value=>' '.WebGUI::International::get(105).' |
',
- -uiLevel=>5
- );
%hash = WebGUI::SQL->buildHash("select styleId,name from style where name<>'Reserved' order by name");
if (WebGUI::Privilege::isInGroup(5)) {
$subtext = ' select(
+ $f->getTab("style")->select(
-name=>"styleId",
-options=>\%hash,
-label=>WebGUI::International::get(105),
@@ -316,28 +323,24 @@ sub www_editPage {
-uiLevel=>5
);
if ($childCount) {
- $f->yesNo(
+ $f->getTab("style")->yesNo(
-name=>"recurseStyle",
-subtext=>' '.WebGUI::International::get(106),
-uiLevel=>9
);
}
- $f->readOnly(
+ $f->getTab("style")->readOnly(
-value=>_selectPositions($page{templateId}),
-label=>WebGUI::International::get(356),
-uiLevel=>5
);
- $f->raw(
- -value=>' '.WebGUI::International::get(107).' |
',
- -uiLevel=>6
- );
- $f->date(
+ $f->getTab("privileges")->date(
-name=>"startDate",
-label=>WebGUI::International::get(497),
-value=>$page{startDate},
-uiLevel=>6
);
- $f->date(
+ $f->getTab("privileges")->date(
-name=>"endDate",
-label=>WebGUI::International::get(498),
-value=>$page{endDate},
@@ -357,7 +360,7 @@ sub www_editPage {
$clause = "userId=$page{ownerId}";
}
my $users = WebGUI::SQL->buildHashRef("select userId,username from users where $clause order by username");
- $f->select(
+ $f->getTab("privileges")->select(
-name=>"ownerId",
-options=>$users,
-label=>WebGUI::International::get(108),
@@ -371,14 +374,14 @@ sub www_editPage {
} else {
$subtext = "";
}
- $f->group(
+ $f->getTab("privileges")->group(
-name=>"groupIdView",
-label=>WebGUI::International::get(872),
-value=>[$page{groupIdView}],
-subtext=>$subtext,
-uiLevel=>6
);
- $f->group(
+ $f->getTab("privileges")->group(
-name=>"groupIdEdit",
-label=>WebGUI::International::get(871),
-value=>[$page{groupIdEdit}],
@@ -387,18 +390,14 @@ sub www_editPage {
-uiLevel=>6
);
if ($childCount) {
- $f->yesNo(
+ $f->getTab("privileges")->yesNo(
-name=>"recursePrivs",
-subtext=>' '.WebGUI::International::get(116),
-uiLevel=>9
);
}
- $f->raw(
- -value=>'
|
',
- -uiLevel=>5
- );
if ($page{pageId} eq "new") {
- $f->whatNext(
+ $f->getTab("properties")->whatNext(
-options=>{
gotoNewPage=>WebGUI::International::get(823),
backToPage=>WebGUI::International::get(847)
@@ -407,7 +406,6 @@ sub www_editPage {
-uiLevel=>1
);
}
- $f->submit;
$output .= $f->print;
return $output;
} else {
diff --git a/lib/WebGUI/TabForm.pm b/lib/WebGUI/TabForm.pm
new file mode 100644
index 000000000..d6d2f6f17
--- /dev/null
+++ b/lib/WebGUI/TabForm.pm
@@ -0,0 +1,63 @@
+package WebGUI::TabForm;
+
+use strict;
+use WebGUI::Form;
+use WebGUI::HTMLForm;
+use WebGUI::Session;
+
+sub getTab {
+ return $_[0]->{_tab}{$_[1]}{form};
+}
+
+sub hidden {
+ $_[0]->{_form}->hidden($_[1],$_[2]);
+}
+
+sub new {
+ my ($class, $tabs) = @_;
+ my $form = WebGUI::HTMLForm->new(1);
+ foreach my $key (keys %{$tabs}) {
+ $tabs->{$key}{uiLevel} = 9 unless ($tabs->{$key}{uiLevel});
+ $tabs->{$key}{form} = WebGUI::HTMLForm->new;
+ }
+ bless {_submit=>WebGUI::Form::submit(),_form=>$form,_tab=>$tabs}, $class;
+}
+
+
+
+sub print {
+ my $output = '
+
+
+
+
+
+
+ ';
+ my $i = 1;
+ my $tabs;
+ my $form;
+ foreach my $key (keys %{$_[0]->{_tab}}) {
+ $tabs .= ''.$_[0]->{_tab}{$key}{name}.' ';
+ $form .= '';
+ $form .= $_[0]->{_tab}{$key}{form}->printRowsOnly;
+ $form .= '
';
+ $i++;
+ }
+ $_[0]->{_form}->raw(''.$tabs.$_[0]->{_submit}.'
');
+ $_[0]->{_form}->raw($form);
+ $output .= $_[0]->{_form}->print;
+ $output .= '';
+ return $output;
+}
+
+sub submit {
+ $_[0]->{_submit} = WebGUI::Form::submit($_[1]);
+}
+
+1;
+