Added TabForm.

This commit is contained in:
JT Smith 2003-02-23 01:04:53 +00:00
parent 713811353c
commit 7a83c6a00f
3 changed files with 108 additions and 43 deletions

View file

@ -75,7 +75,11 @@ Tie::IxHash..........................Gurusamy Sarathy
XML::RSSLite.........................Jerrad Pierce XML::RSSLite.........................Jerrad Pierce
Scott Thomason Scott Thomason
Midas................................Mike Kaply Midas................................The Mozilla Development Team
Mike Kaply
Classic Rich Edit....................Bratta Classic Rich Edit....................Bratta
Tab DHTML............................Garrett Smith
dhtmlkitchen.com

View file

@ -17,10 +17,11 @@ use WebGUI::Grouping;
use WebGUI::HTMLForm; use WebGUI::HTMLForm;
use WebGUI::Icon; use WebGUI::Icon;
use WebGUI::International; use WebGUI::International;
use WebGUI::Page;
use WebGUI::Privilege; use WebGUI::Privilege;
use WebGUI::Session; use WebGUI::Session;
use WebGUI::SQL; use WebGUI::SQL;
use WebGUI::Page; use WebGUI::TabForm;
use WebGUI::URL; use WebGUI::URL;
use WebGUI::Utility; use WebGUI::Utility;
@ -207,14 +208,29 @@ sub www_deletePageConfirm {
return WebGUI::Privilege::insufficient(); return WebGUI::Privilege::insufficient();
} }
} }
use WebGUI::TabForm;
#------------------------------------------------------------------- #-------------------------------------------------------------------
sub www_editPage { sub www_editPage {
my ($f, $endDate, $output, $subtext, $childCount, %hash, %page); my ($f, $endDate, $output, $subtext, $childCount, %hash, %page);
tie %hash, "Tie::IxHash"; tie %hash, "Tie::IxHash";
tie %page, "Tie::CPHash"; tie %page, "Tie::CPHash";
if (WebGUI::Privilege::canEditPage($session{form}{npp})) { 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 "") { if ($session{form}{npp} ne "") {
my $buildFromPage = $session{form}{npp}; my $buildFromPage = $session{form}{npp};
if ($buildFromPage == 0) { if ($buildFromPage == 0) {
@ -231,75 +247,66 @@ sub www_editPage {
($childCount) = WebGUI::SQL->quickArray("select count(*) from page where parentId=$page{pageId}"); ($childCount) = WebGUI::SQL->quickArray("select count(*) from page where parentId=$page{pageId}");
} }
$page{endDate} = (addToDate(time(),10)) if ($page{endDate} < 0); $page{endDate} = (addToDate(time(),10)) if ($page{endDate} < 0);
$output = helpIcon(1); #$output = helpIcon(1);
$output .= '<h1>'.WebGUI::International::get(102).'</h1>'; $output .= '<h1>'.WebGUI::International::get(102).'</h1>';
$f->hidden("pageId",$page{pageId}); $f->hidden("pageId",$page{pageId});
$f->hidden("parentId",$page{parentId}); $f->hidden("parentId",$page{parentId});
$f->hidden("op","editPageSave"); $f->hidden("op","editPageSave");
$f->submit if ($page{pageId} ne "new"); $f->getTab("properties")->readOnly(
$f->raw(
-value=>'<tr><td colspan=2><b>'.WebGUI::International::get(103).'</b></td></tr>',
-uiLevel=>5
);
$f->readOnly(
-value=>$page{pageId}, -value=>$page{pageId},
-label=>WebGUI::International::get(500), -label=>WebGUI::International::get(500),
-uiLevel=>3 -uiLevel=>3
); );
$f->text("title",WebGUI::International::get(99),$page{title}); $f->getTab("properties")->text("title",WebGUI::International::get(99),$page{title});
$f->text( $f->getTab("properties")->text(
-name=>"menuTitle", -name=>"menuTitle",
-label=>WebGUI::International::get(411), -label=>WebGUI::International::get(411),
-value=>$page{menuTitle}, -value=>$page{menuTitle},
-uiLevel=>1 -uiLevel=>1
); );
$f->yesNo( $f->getTab("properties")->yesNo(
-name=>"hideFromNavigation", -name=>"hideFromNavigation",
-value=>$page{hideFromNavigation}, -value=>$page{hideFromNavigation},
-label=>WebGUI::International::get(886), -label=>WebGUI::International::get(886),
-uiLevel=>6 -uiLevel=>6
); );
$f->text( $f->getTab("properties")->text(
-name=>"urlizedTitle", -name=>"urlizedTitle",
-label=>WebGUI::International::get(104), -label=>WebGUI::International::get(104),
-value=>$page{urlizedTitle}, -value=>$page{urlizedTitle},
-uiLevel=>3 -uiLevel=>3
); );
$f->select( $f->getTab("properties")->select(
-name=>"languageId", -name=>"languageId",
-label=>WebGUI::International::get(304), -label=>WebGUI::International::get(304),
-value=>[$page{languageId}], -value=>[$page{languageId}],
-uiLevel=>1, -uiLevel=>1,
-options=>WebGUI::International::getLanguages() -options=>WebGUI::International::getLanguages()
); );
$f->url( $f->getTab("properties")->url(
-name=>"redirectURL", -name=>"redirectURL",
-label=>WebGUI::International::get(715), -label=>WebGUI::International::get(715),
-value=>$page{redirectURL}, -value=>$page{redirectURL},
-uiLevel=>9 -uiLevel=>9
); );
$f->textarea( $f->getTab("properties")->textarea(
-name=>"synopsis", -name=>"synopsis",
-label=>WebGUI::International::get(412), -label=>WebGUI::International::get(412),
-value=>$page{synopsis}, -value=>$page{synopsis},
-uiLevel=>3 -uiLevel=>3
); );
$f->textarea( $f->getTab("properties")->textarea(
-name=>"metaTags", -name=>"metaTags",
-label=>WebGUI::International::get(100), -label=>WebGUI::International::get(100),
-value=>$page{metaTags}, -value=>$page{metaTags},
-uiLevel=>7 -uiLevel=>7
); );
$f->yesNo( $f->getTab("properties")->yesNo(
-name=>"defaultMetaTags", -name=>"defaultMetaTags",
-label=>WebGUI::International::get(307), -label=>WebGUI::International::get(307),
-value=>$page{defaultMetaTags}, -value=>$page{defaultMetaTags},
-uiLevel=>5 -uiLevel=>5
); );
$f->raw(
-value=>'<tr><td colspan=2><hr size=1><b>'.WebGUI::International::get(105).'</b></td></tr>',
-uiLevel=>5
);
%hash = WebGUI::SQL->buildHash("select styleId,name from style where name<>'Reserved' order by name"); %hash = WebGUI::SQL->buildHash("select styleId,name from style where name<>'Reserved' order by name");
if (WebGUI::Privilege::isInGroup(5)) { if (WebGUI::Privilege::isInGroup(5)) {
$subtext = ' &nbsp; <a href="'.WebGUI::URL::page('op=listStyles') $subtext = ' &nbsp; <a href="'.WebGUI::URL::page('op=listStyles')
@ -307,7 +314,7 @@ sub www_editPage {
} else { } else {
$subtext = ""; $subtext = "";
} }
$f->select( $f->getTab("style")->select(
-name=>"styleId", -name=>"styleId",
-options=>\%hash, -options=>\%hash,
-label=>WebGUI::International::get(105), -label=>WebGUI::International::get(105),
@ -316,28 +323,24 @@ sub www_editPage {
-uiLevel=>5 -uiLevel=>5
); );
if ($childCount) { if ($childCount) {
$f->yesNo( $f->getTab("style")->yesNo(
-name=>"recurseStyle", -name=>"recurseStyle",
-subtext=>' &nbsp; '.WebGUI::International::get(106), -subtext=>' &nbsp; '.WebGUI::International::get(106),
-uiLevel=>9 -uiLevel=>9
); );
} }
$f->readOnly( $f->getTab("style")->readOnly(
-value=>_selectPositions($page{templateId}), -value=>_selectPositions($page{templateId}),
-label=>WebGUI::International::get(356), -label=>WebGUI::International::get(356),
-uiLevel=>5 -uiLevel=>5
); );
$f->raw( $f->getTab("privileges")->date(
-value=>'<tr><td colspan=2><hr size=1><b>'.WebGUI::International::get(107).'</b></td></tr>',
-uiLevel=>6
);
$f->date(
-name=>"startDate", -name=>"startDate",
-label=>WebGUI::International::get(497), -label=>WebGUI::International::get(497),
-value=>$page{startDate}, -value=>$page{startDate},
-uiLevel=>6 -uiLevel=>6
); );
$f->date( $f->getTab("privileges")->date(
-name=>"endDate", -name=>"endDate",
-label=>WebGUI::International::get(498), -label=>WebGUI::International::get(498),
-value=>$page{endDate}, -value=>$page{endDate},
@ -357,7 +360,7 @@ sub www_editPage {
$clause = "userId=$page{ownerId}"; $clause = "userId=$page{ownerId}";
} }
my $users = WebGUI::SQL->buildHashRef("select userId,username from users where $clause order by username"); my $users = WebGUI::SQL->buildHashRef("select userId,username from users where $clause order by username");
$f->select( $f->getTab("privileges")->select(
-name=>"ownerId", -name=>"ownerId",
-options=>$users, -options=>$users,
-label=>WebGUI::International::get(108), -label=>WebGUI::International::get(108),
@ -371,14 +374,14 @@ sub www_editPage {
} else { } else {
$subtext = ""; $subtext = "";
} }
$f->group( $f->getTab("privileges")->group(
-name=>"groupIdView", -name=>"groupIdView",
-label=>WebGUI::International::get(872), -label=>WebGUI::International::get(872),
-value=>[$page{groupIdView}], -value=>[$page{groupIdView}],
-subtext=>$subtext, -subtext=>$subtext,
-uiLevel=>6 -uiLevel=>6
); );
$f->group( $f->getTab("privileges")->group(
-name=>"groupIdEdit", -name=>"groupIdEdit",
-label=>WebGUI::International::get(871), -label=>WebGUI::International::get(871),
-value=>[$page{groupIdEdit}], -value=>[$page{groupIdEdit}],
@ -387,18 +390,14 @@ sub www_editPage {
-uiLevel=>6 -uiLevel=>6
); );
if ($childCount) { if ($childCount) {
$f->yesNo( $f->getTab("privileges")->yesNo(
-name=>"recursePrivs", -name=>"recursePrivs",
-subtext=>' &nbsp; '.WebGUI::International::get(116), -subtext=>' &nbsp; '.WebGUI::International::get(116),
-uiLevel=>9 -uiLevel=>9
); );
} }
$f->raw(
-value=>'<tr><td colspan=2><hr size=1/></td></tr>',
-uiLevel=>5
);
if ($page{pageId} eq "new") { if ($page{pageId} eq "new") {
$f->whatNext( $f->getTab("properties")->whatNext(
-options=>{ -options=>{
gotoNewPage=>WebGUI::International::get(823), gotoNewPage=>WebGUI::International::get(823),
backToPage=>WebGUI::International::get(847) backToPage=>WebGUI::International::get(847)
@ -407,7 +406,6 @@ sub www_editPage {
-uiLevel=>1 -uiLevel=>1
); );
} }
$f->submit;
$output .= $f->print; $output .= $f->print;
return $output; return $output;
} else { } else {

63
lib/WebGUI/TabForm.pm Normal file
View file

@ -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 = '
<script src="'.$session{config}{extrasURL}.'/tabs/utils.js" type="text/javascript"></script>
<script src="'.$session{config}{extrasURL}.'/tabs/viewport.js" type="text/javascript"></script>
<script src="'.$session{config}{extrasURL}.'/tabs/global.js" type="text/javascript"></script>
<script src="'.$session{config}{extrasURL}.'/tabs/cookie.js" type="text/javascript"></script>
<script src="'.$session{config}{extrasURL}.'/tabs/tabs.js" type="text/javascript"></script>
<link href="'.$session{config}{extrasURL}.'/tabs/tabs.css" rel="stylesheet" rev="stylesheet" type="text/css">
';
my $i = 1;
my $tabs;
my $form;
foreach my $key (keys %{$_[0]->{_tab}}) {
$tabs .= '<span id="tab'.$i.'" class="tab';
if ($i == 1) {
$tabs .= ' tabActive';
}
$tabs .= '">'.$_[0]->{_tab}{$key}{name}.'</span> ';
$form .= '<div id="content'.$i.'" class="tabBody"><table>';
$form .= $_[0]->{_tab}{$key}{form}->printRowsOnly;
$form .= '</table></div>';
$i++;
}
$_[0]->{_form}->raw('<div class="tabs">'.$tabs.$_[0]->{_submit}.'</div>');
$_[0]->{_form}->raw($form);
$output .= $_[0]->{_form}->print;
$output .= '<script>tabInit();</script>';
return $output;
}
sub submit {
$_[0]->{_submit} = WebGUI::Form::submit($_[1]);
}
1;