diff --git a/lib/WebGUI/Operation/Help.pm b/lib/WebGUI/Operation/Help.pm index 10a12bce8..c0f8350bb 100644 --- a/lib/WebGUI/Operation/Help.pm +++ b/lib/WebGUI/Operation/Help.pm @@ -17,6 +17,7 @@ use Tie::CPHash; use WebGUI::HTMLForm; use WebGUI::Icon; use WebGUI::International; +use WebGUI::Operation::Shared; use WebGUI::Session; use WebGUI::SQL; use WebGUI::URL; @@ -48,112 +49,125 @@ sub _seeAlso { return $output; } +#------------------------------------------------------------------- +sub _submenu { + my (%menu); + tie %menu, 'Tie::IxHash'; + %menu = %{$_[1]}; + if (($session{form}{op} eq "editHelp" && $session{form}{hid} ne "new") || $session{form}{op} eq "deleteHelp") { + $menu(WebGUI::URL::page('op=editHelpIndex&hid='.$session{form}{hid}) = "Edit this help."; + $menu(WebGUI::URL::page('op=deleteHelpIndex&hid='.$session{form}{hid}) = "Delete this help."; + } + $menu{WebGUI::URL::page('op=viewHelpIndex')} = WebGUI::International::get(13); + return menuWrapper($_[0],\%menu); +} + #------------------------------------------------------------------- sub www_deleteHelp { return "" unless (WebGUI::Privilege::isInGroup(3)); - my $output = '

Confirm

Are you sure? Deleting help is never a good idea. Yes / No

'; - return $output; + my $output = '

Confirm

Are you sure? Deleting help is never a good idea. Yes / No

'; + return _submen($output); } #------------------------------------------------------------------- sub www_deleteHelpConfirm { return "" unless (WebGUI::Privilege::isInGroup(3)); - my ($titleId, $bodyId) = WebGUI::SQL->quickArray("select titleId,bodyId from help where helpId=".$session{form}{hid}." - and namespace=".quote($session{form}{namespace})); - WebGUI::SQL->write("delete from international where internationalId=$titleId - and namespace=".quote($session{form}{namespace})); - WebGUI::SQL->write("delete from international where internationalId=$bodyId - and namespace=".quote($session{form}{namespace})); - WebGUI::SQL->write("delete from help where helpId=".$session{form}{hid}." - and namespace=".quote($session{form}{namespace})); - return www_manageHelp(); + my ($titleId, $bodyId) = WebGUI::SQL->quickArray("select titleId,bodyId from help where helpId=".$session{form}{hid}." + and namespace=".quote($session{form}{namespace})); + WebGUI::SQL->write("delete from international where internationalId=$titleId + and namespace=".quote($session{form}{namespace})); + WebGUI::SQL->write("delete from international where internationalId=$bodyId + and namespace=".quote($session{form}{namespace})); + WebGUI::SQL->write("delete from help where helpId=".$session{form}{hid}." + and namespace=".quote($session{form}{namespace})); + return www_manageHelp(); } #------------------------------------------------------------------- sub www_editHelp { return "" unless (WebGUI::Privilege::isInGroup(3)); - my ($output, $f, %data, %help, @seeAlso); - tie %data, 'Tie::IxHash'; - tie %help, 'Tie::CPHash'; - if ($session{form}{hid} ne "new") { - %help = WebGUI::SQL->quickHash("select * from help where - helpId=$session{form}{hid} and namespace=".quote($session{form}{namespace})); - $help{title} = WebGUI::International::get($help{titleId},$help{namespace}); - $help{body} = WebGUI::International::get($help{bodyId},$help{namespace}); - $help{seeAlso} =~ s/\n//g; - $help{seeAlso} =~ s/\r//g; - $help{seeAlso} =~ s/ //g; - @seeAlso = split(/;/,$help{seeAlso}); - } else { - $help{titleId} = "new"; - $help{bodyId} = "new"; - $help{namespace} = "WebGUI"; - } - $output = '

Edit Help

'; - $f = WebGUI::HTMLForm->new(); - $f->hidden("op","editHelpSave"); - $f->hidden("hid",$session{form}{hid}); - $f->readOnly($session{form}{hid},"Help ID"); - if ($session{form}{hid} eq "new") { - %data = WebGUI::SQL->buildHash("select namespace,namespace from help order by namespace"); - $f->combo("namespace",\%data,"Namespace",[$help{namespace}]); - } else { - $f->hidden("namespace",$session{form}{namespace}); - $f->readOnly($session{form}{namespace},"Namespace"); - } - $f->hidden("titleId",$help{titleId}); - $f->readOnly($help{titleId},"Title ID"); - $f->text("title","Title",$help{title}); - $f->hidden("bodyId",$help{bodyId}); - $f->readOnly($help{bodyId},"Body ID"); - $f->HTMLArea("body","Body",$help{body},'','','',20,60); - %data = WebGUI::SQL->buildHash("select concat(help.helpId,',',help.namespace), - concat(international.message,' (',help.helpId,'/',help.namespace,')') - from help,international where help.titleId=international.internationalId - and help.namespace=international.namespace and international.languageId=1 order by international.message"); - $f->select("seeAlso",\%data,"See Also",\@seeAlso,8,1); - $f->submit; - $output .= $f->print; - return $output; + my ($output, $f, %data, %help, @seeAlso); + tie %data, 'Tie::IxHash'; + tie %help, 'Tie::CPHash'; + if ($session{form}{hid} ne "new") { + %help = WebGUI::SQL->quickHash("select * from help where + helpId=$session{form}{hid} and namespace=".quote($session{form}{namespace})); + $help{title} = WebGUI::International::get($help{titleId},$help{namespace}); + $help{body} = WebGUI::International::get($help{bodyId},$help{namespace}); + $help{seeAlso} =~ s/\n//g; + $help{seeAlso} =~ s/\r//g; + $help{seeAlso} =~ s/ //g; + @seeAlso = split(/;/,$help{seeAlso}); + } else { + $help{titleId} = "new"; + $help{bodyId} = "new"; + $help{namespace} = "WebGUI"; + } + $output = '

Edit Help

'; + $f = WebGUI::HTMLForm->new(); + $f->hidden("op","editHelpSave"); + $f->hidden("hid",$session{form}{hid}); + $f->readOnly($session{form}{hid},"Help ID"); + if ($session{form}{hid} eq "new") { + %data = WebGUI::SQL->buildHash("select namespace,namespace from help order by namespace"); + $f->combo("namespace",\%data,"Namespace",[$help{namespace}]); + } else { + $f->hidden("namespace",$session{form}{namespace}); + $f->readOnly($session{form}{namespace},"Namespace"); + } + $f->hidden("titleId",$help{titleId}); + $f->readOnly($help{titleId},"Title ID"); + $f->text("title","Title",$help{title}); + $f->hidden("bodyId",$help{bodyId}); + $f->readOnly($help{bodyId},"Body ID"); + $f->HTMLArea("body","Body",$help{body},'','','',20,60); + %data = WebGUI::SQL->buildHash("select concat(help.helpId,',',help.namespace), + concat(international.message,' (',help.helpId,'/',help.namespace,')') + from help,international where help.titleId=international.internationalId + and help.namespace=international.namespace and international.languageId=1 order by international.message"); + $f->select("seeAlso",\%data,"See Also",\@seeAlso,8,1); + $f->submit; + $output .= $f->print; + return _submenu($output); } #------------------------------------------------------------------- sub www_editHelpSave { return "" unless (WebGUI::Privilege::isInGroup(3)); - my (@seeAlso); - if ($session{form}{hid} eq "new") { - if ($session{form}{namespace_new} ne "") { - $session{form}{namespace} = $session{form}{namespace_new}; - } - ($session{form}{titleId}) = WebGUI::SQL->quickArray("select max(internationalId) from international - where namespace=".quote($session{form}{namespace})); - $session{form}{titleId}++; - $session{form}{bodyId} = $session{form}{titleId}+1; - ($session{form}{hid}) = WebGUI::SQL->quickArray("select max(helpId) from help - where namespace=".quote($session{form}{namespace})); - $session{form}{hid}++; - WebGUI::SQL->write("insert into international (internationalId,languageId,namespace) values - ($session{form}{titleId},1,".quote($session{form}{namespace}).")"); - WebGUI::SQL->write("insert into international (internationalId,languageId,namespace) values - ($session{form}{bodyId},1,".quote($session{form}{namespace}).")"); - WebGUI::SQL->write("insert into help (helpId,namespace,titleId,bodyId) values - ($session{form}{hid},".quote($session{form}{namespace}).",$session{form}{titleId}, - $session{form}{bodyId})"); + my (@seeAlso); + if ($session{form}{hid} eq "new") { + if ($session{form}{namespace_new} ne "") { + $session{form}{namespace} = $session{form}{namespace_new}; } - @seeAlso = $session{cgi}->param('seeAlso'); - if ($seeAlso[0] ne "") { - $session{form}{seeAlso} = join(";",@seeAlso); - $session{form}{seeAlso} .= ';'; - } - WebGUI::SQL->write("update international set message=".quote($session{form}{title}).", lastUpdated=".time()." - where internationalId=$session{form}{titleId} and languageId=1 and namespace=".quote($session{form}{namespace})); - WebGUI::SQL->write("update international set message=".quote($session{form}{body}).", lastUpdated=".time()." - where internationalId=$session{form}{bodyId} and languageId=1 and namespace=".quote($session{form}{namespace})); - WebGUI::SQL->write("update help set seeAlso=".quote($session{form}{seeAlso})." - where helpId=$session{form}{hid} and namespace=".quote($session{form}{namespace})); - return www_manageHelp(); + ($session{form}{titleId}) = WebGUI::SQL->quickArray("select max(internationalId) from international + where namespace=".quote($session{form}{namespace})); + $session{form}{titleId}++; + $session{form}{bodyId} = $session{form}{titleId}+1; + ($session{form}{hid}) = WebGUI::SQL->quickArray("select max(helpId) from help + where namespace=".quote($session{form}{namespace})); + $session{form}{hid}++; + WebGUI::SQL->write("insert into international (internationalId,languageId,namespace) values + ($session{form}{titleId},1,".quote($session{form}{namespace}).")"); + WebGUI::SQL->write("insert into international (internationalId,languageId,namespace) values + ($session{form}{bodyId},1,".quote($session{form}{namespace}).")"); + WebGUI::SQL->write("insert into help (helpId,namespace,titleId,bodyId) values + ($session{form}{hid},".quote($session{form}{namespace}).",$session{form}{titleId}, + $session{form}{bodyId})"); + } + @seeAlso = $session{cgi}->param('seeAlso'); + if ($seeAlso[0] ne "") { + $session{form}{seeAlso} = join(";",@seeAlso); + $session{form}{seeAlso} .= ';'; + } + WebGUI::SQL->write("update international set message=".quote($session{form}{title}).", lastUpdated=".time()." + where internationalId=$session{form}{titleId} and languageId=1 and namespace=".quote($session{form}{namespace})); + WebGUI::SQL->write("update international set message=".quote($session{form}{body}).", lastUpdated=".time()." + where internationalId=$session{form}{bodyId} and languageId=1 and namespace=".quote($session{form}{namespace})); + WebGUI::SQL->write("update help set seeAlso=".quote($session{form}{seeAlso})." + where helpId=$session{form}{hid} and namespace=".quote($session{form}{namespace})); + return www_manageHelp(); } #------------------------------------------------------------------- @@ -175,33 +189,30 @@ sub www_exportHelp { #------------------------------------------------------------------- sub www_manageHelp { my ($sth, @help, $output); - unless (WebGUI::Privilege::isInGroup(3)) { - return ""; - } else { - $output = '

Manage Help

'; - $output .= 'This interface is for WebGUI developers only. If you\'re not a developer, leave this alone. Also, - this interface works ONLY under MySQL and is not supported by Plain Black under any - circumstances.

'; - $output .= 'Add new help.'; - $output .= ' · '; - $output .= 'Export help.'; - $output .= '

'; - $sth = WebGUI::SQL->read("select help.helpId,help.namespace,international.message from help,international - where help.titleId=international.internationalId and help.namespace=international.namespace - and international.languageId=1 order by international.message"); - while (@help = $sth->array) { - $output .= '' - .'' - .'' - .''; - } - $sth->finish; - $output .= '
' - .deleteIcon("op=deleteHelp&hid=".$help[0]."&namespace=".$help[1]) - .editIcon("op=editHelp&hid=".$help[0]."&namespace=".$help[1]) - .''._helpLink($help[0],$help[1],$help[2]).''.$help[0].'/'.$help[1].'
'; - return $output; + return "" unless (WebGUI::Privilege::isInGroup(3)) { + $output = '

Manage Help

'; + $output .= 'This interface is for WebGUI developers only. If you\'re not a developer, leave this alone. Also, + this interface works ONLY under MySQL and is not supported by Plain Black under any + circumstances.

'; + $output .= 'Add new help.'; + $output .= ' · '; + $output .= 'Export help.'; + $output .= '

'; + $sth = WebGUI::SQL->read("select help.helpId,help.namespace,international.message from help,international + where help.titleId=international.internationalId and help.namespace=international.namespace + and international.languageId=1 order by international.message"); + while (@help = $sth->array) { + $output .= '' + .'' + .'' + .''; } + $sth->finish; + $output .= '
' + .deleteIcon("op=deleteHelp&hid=".$help[0]."&namespace=".$help[1]) + .editIcon("op=editHelp&hid=".$help[0]."&namespace=".$help[1]) + .''._helpLink($help[0],$help[1],$help[2]).''.$help[0].'/'.$help[1].'
'; + return _submenu($output); } #------------------------------------------------------------------- @@ -210,8 +221,7 @@ sub www_viewHelp { $namespace = $session{form}{namespace} || "WebGUI"; tie %help, 'Tie::CPHash'; %help = WebGUI::SQL->quickHash("select * from help where helpId=$session{form}{hid} and namespace='$namespace'"); - $output = '

'.WebGUI::International::get(93).': '. - WebGUI::International::get($help{titleId},$help{namespace}).'

'; + $output = '

'.WebGUI::International::get(93).': '.WebGUI::International::get($help{titleId},$help{namespace}).'

'; $output .= WebGUI::International::get($help{bodyId},$help{namespace}); $output .= '

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