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; +