package WebGUI::Operation::Style; #------------------------------------------------------------------- # WebGUI is Copyright 2001-2003 Plain Black LLC. #------------------------------------------------------------------- # Please read the legal notices (docs/legal.txt) and the license # (docs/license.txt) that came with this distribution before using # this software. #------------------------------------------------------------------- # http://www.plainblack.com info@plainblack.com #------------------------------------------------------------------- use Exporter; use strict; use Tie::CPHash; use WebGUI::HTMLForm; use WebGUI::Icon; use WebGUI::International; use WebGUI::Operation::Shared; use WebGUI::Paginator; use WebGUI::Privilege; use WebGUI::Session; use WebGUI::SQL; use WebGUI::URL; use WebGUI::Utility; our @ISA = qw(Exporter); our @EXPORT = qw(&www_copyStyle &www_deleteStyle &www_deleteStyleConfirm &www_editStyle &www_editStyleSave &www_listStyles); #------------------------------------------------------------------- sub _submenu { my (%menu); tie %menu, 'Tie::IxHash'; $menu{WebGUI::URL::page('op=editStyle&sid=new')} = WebGUI::International::get(158); if (($session{form}{op} eq "editStyle" && $session{form}{sid} ne "new") || $session{form}{op} eq "deleteStyleConfirm") { $menu{WebGUI::URL::page('op=editStyle&sid='.$session{form}{sid})} = WebGUI::International::get(803); $menu{WebGUI::URL::page('op=copyStyle&sid='.$session{form}{sid})} = WebGUI::International::get(804); $menu{WebGUI::URL::page('op=deleteStyle&sid='.$session{form}{sid})} = WebGUI::International::get(805); $menu{WebGUI::URL::page('op=listStyles')} = WebGUI::International::get(814); } return menuWrapper($_[0],\%menu); } #------------------------------------------------------------------- sub www_copyStyle { return WebGUI::Privilege::insufficient unless (WebGUI::Privilege::isInGroup(5)); my (%style); tie %style, 'Tie::CPHash'; %style = WebGUI::SQL->quickHash("select * from style where styleId=$session{form}{sid}"); WebGUI::SQL->write("insert into style (styleId,name,body,styleSheet) values (".getNextId("styleId").", ".quote('Copy of '.$style{name}).", ".quote($style{body}).", ".quote($style{styleSheet}).")"); return _submenu(www_listStyles()); } #------------------------------------------------------------------- sub www_deleteStyle { return WebGUI::Privilege::insufficient unless (WebGUI::Privilege::isInGroup(5)); return WebGUI::Privilege::vitalComponent() if ($session{form}{sid} < 1000 && $session{form}{sid} > 0); my ($output); $output .= helpIcon(4); $output .= '

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

'; $output .= WebGUI::International::get(155).'

'; $output .= '

'.WebGUI::International::get(44).''; $output .= '    '.WebGUI::International::get(45).'
'; return _submenu($output); } #------------------------------------------------------------------- sub www_deleteStyleConfirm { return WebGUI::Privilege::insufficient unless (WebGUI::Privilege::isInGroup(5)); return WebGUI::Privilege::vitalComponent() if ($session{form}{sid} < 1000 && $session{form}{sid} > 0); WebGUI::SQL->write("delete from style where styleId=".$session{form}{sid}); WebGUI::SQL->write("update page set styleId=2 where styleId=".$session{form}{sid}); return www_listStyles(); } #------------------------------------------------------------------- sub www_editStyle { return WebGUI::Privilege::insufficient unless (WebGUI::Privilege::isInGroup(5)); my ($output, %style, $f); tie %style, 'Tie::CPHash'; if ($session{form}{sid} eq "new") { $style{body} = "^AdminBar;\n\n\n\n^-;\n\n"; $style{styleSheet} = ' '; } else { %style = WebGUI::SQL->quickHash("select * from style where styleId=$session{form}{sid}"); } $output .= helpIcon(16); $output .= '

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

'; $f = WebGUI::HTMLForm->new; $f->hidden("op","editStyleSave"); $f->hidden("sid",$session{form}{sid}); $f->readOnly($session{form}{sid},WebGUI::International::get(380)); $f->text("name",WebGUI::International::get(151),$style{name}); $f->textarea("body",WebGUI::International::get(501),$style{body},'','','',(5+$session{setting}{textAreaRows})); $f->textarea("styleSheet",WebGUI::International::get(154),$style{styleSheet},'','','',(5+$session{setting}{textAreaRows})); $f->submit; $output .= $f->print; return _submenu($output); } #------------------------------------------------------------------- sub www_editStyleSave { return WebGUI::Privilege::insufficient unless (WebGUI::Privilege::isInGroup(5)); if ($session{form}{sid} eq "new") { $session{form}{sid} = getNextId("styleId"); WebGUI::SQL->write("insert into style (styleId) values ($session{form}{sid})"); } $session{form}{body} = "^AdminBar;\n\n\n\n^-;\n\n" if ($session{form}{body} eq ""); WebGUI::SQL->write("update style set name=".quote($session{form}{name}).", body=".quote($session{form}{body}).", styleSheet=".quote($session{form}{styleSheet})." where styleId=".$session{form}{sid}); return www_listStyles(); } #------------------------------------------------------------------- sub www_listStyles { return WebGUI::Privilege::insufficient unless (WebGUI::Privilege::isInGroup(5)); my ($output, $sth, @data, @row, $i, $p); $output = helpIcon(9); $output .= '

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

'; $sth = WebGUI::SQL->read("select styleId,name from style order by name"); while (@data = $sth->array) { $row[$i] = '' .deleteIcon('op=deleteStyle&sid='.$data[0]) .editIcon('op=editStyle&sid='.$data[0]) .copyIcon('op=copyStyle&sid='.$data[0]) .''; $row[$i] .= ''.$data[1].''; $i++; } $sth->finish; $p = WebGUI::Paginator->new(WebGUI::URL::page('op=listStyles'),\@row); $output .= ''; $output .= $p->getPage($session{form}{pn}); $output .= '
'; $output .= $p->getBarTraditional($session{form}{pn}); return _submenu($output); } 1;