From 82b6bd33f8cca030326c91f84adc85ec755e849b Mon Sep 17 00:00:00 2001 From: JT Smith Date: Sun, 10 Nov 2002 20:09:10 +0000 Subject: [PATCH] Added new collateral management system. --- docs/upgrades/upgrade_4.7.0-4.8.0.sql | 72 +++++ lib/WebGUI/Macro/AdminBar.pm | 7 +- lib/WebGUI/Macro/File.pm | 41 +++ lib/WebGUI/Macro/I_imageWithTags.pm | 6 +- lib/WebGUI/Macro/Snippet.pm | 37 +++ lib/WebGUI/Macro/Thumbnail.pm | 4 +- lib/WebGUI/Macro/i_imageNoTags.pm | 4 +- lib/WebGUI/Operation.pm | 2 +- lib/WebGUI/Operation/Collateral.pm | 440 ++++++++++++++++++++++++++ lib/WebGUI/Operation/Help.pm | 24 +- lib/WebGUI/Operation/Image.pm | 387 ---------------------- lib/WebGUI/Paginator.pm | 50 ++- lib/WebGUI/Session.pm | 17 +- 13 files changed, 654 insertions(+), 437 deletions(-) create mode 100644 lib/WebGUI/Macro/File.pm create mode 100644 lib/WebGUI/Macro/Snippet.pm create mode 100644 lib/WebGUI/Operation/Collateral.pm delete mode 100644 lib/WebGUI/Operation/Image.pm diff --git a/docs/upgrades/upgrade_4.7.0-4.8.0.sql b/docs/upgrades/upgrade_4.7.0-4.8.0.sql index 29f4f2c20..9fb755b8d 100644 --- a/docs/upgrades/upgrade_4.7.0-4.8.0.sql +++ b/docs/upgrades/upgrade_4.7.0-4.8.0.sql @@ -29,6 +29,78 @@ insert into international (internationalId,languageId,namespace,message,lastUpda insert into settings values ("trackPageStatistics",0); alter table pageStatistics add column wobjectId int; alter table pageStatistics add column function varchar(60); +alter table images rename collateral; +alter table imageGroup rename collateralFolder; +alter table collateral change imageId collateralId int not null; +alter table collateral change imageGroupId collateralFolderId int not null; +alter table collateralFolder change imageGroupId collateralFolderId int not null; +alter table collateral add column collateralType varchar(30) not null default 'image'; +update incrementer set incrementerId='collateralId' where incrementerId='imageId'; +update incrementer set incrementerId='collateralFolderId' where incrementerId='imageGroupId'; +insert into help (helpId,namespace,titleId,bodyId,seeAlso) values (49, 'WebGUI', 785, 786, NULL); +delete from international where languageId=1 and namespace='WebGUI' and internationalId=394; +insert into international (internationalId,languageId,namespace,message,lastUpdated) values (394,1,'WebGUI','Manage collateral.', 1036954925); +delete from international where namespace='WebGUI' and internationalId=393; +insert into international (internationalId,languageId,namespace,message,lastUpdated) values (785,1,'WebGUI','Collateral, Manage', 1036954767); +insert into international (internationalId,languageId,namespace,message,lastUpdated) values (786,1,'WebGUI','', 1036954767); +insert into international (internationalId,languageId,namespace,message,lastUpdated) values (784,1,'WebGUI','Thumbnail', 1036954393); +insert into international (internationalId,languageId,namespace,message,lastUpdated) values (783,1,'WebGUI','Type', 1036954378); +insert into international (internationalId,languageId,namespace,message,lastUpdated) values (782,1,'WebGUI','Any', 1036913053); +insert into international (internationalId,languageId,namespace,message,lastUpdated) values (781,1,'WebGUI','Snippet', 1036912954); +insert into international (internationalId,languageId,namespace,message,lastUpdated) values (780,1,'WebGUI','File', 1036912946); +insert into international (internationalId,languageId,namespace,message,lastUpdated) values (779,1,'WebGUI','Image', 1036912938); +insert into international (internationalId,languageId,namespace,message,lastUpdated) values (778,1,'WebGUI','Folder Description', 1036906132); +insert into international (internationalId,languageId,namespace,message,lastUpdated) values (777,1,'WebGUI','Folder Id', 1036905972); +insert into international (internationalId,languageId,namespace,message,lastUpdated) values (776,1,'WebGUI','Edit Folder', 1036905944); +insert into international (internationalId,languageId,namespace,message,lastUpdated) values (775,1,'WebGUI','Are you certain you wish to delete this folder and move its contents to it\'s parent folder?', 1036903002); +insert into international (internationalId,languageId,namespace,message,lastUpdated) values (774,1,'WebGUI','Are you certain you wish to delete this collateral? It cannot be recovered once deleted.', 1036902945); +insert into international (internationalId,languageId,namespace,message,lastUpdated) values (773,1,'WebGUI','File', 1036893165); +insert into international (internationalId,languageId,namespace,message,lastUpdated) values (772,1,'WebGUI','Edit File', 1036893140); +insert into international (internationalId,languageId,namespace,message,lastUpdated) values (771,1,'WebGUI','Snippet', 1036893079); +insert into international (internationalId,languageId,namespace,message,lastUpdated) values (770,1,'WebGUI','Edit Snippet', 1036893050); +insert into international (internationalId,languageId,namespace,message,lastUpdated) values (769,1,'WebGUI','Organize in Folder', 1036893015); +insert into international (internationalId,languageId,namespace,message,lastUpdated) values (768,1,'WebGUI','Name', 1036892946); +insert into international (internationalId,languageId,namespace,message,lastUpdated) values (767,1,'WebGUI','Collateral Id', 1036892929); +insert into international (internationalId,languageId,namespace,message,lastUpdated) values (766,1,'WebGUI','Back to collateral list.', 1036892898); +insert into international (internationalId,languageId,namespace,message,lastUpdated) values (765,1,'WebGUI','Delete this collateral item.', 1036892866); +insert into international (internationalId,languageId,namespace,message,lastUpdated) values (764,1,'WebGUI','Edit this collateral item.', 1036892856); +insert into international (internationalId,languageId,namespace,message,lastUpdated) values (763,1,'WebGUI','Add a snippet.', 1036892785); +insert into international (internationalId,languageId,namespace,message,lastUpdated) values (762,1,'WebGUI','Add a file.', 1036892774); +insert into international (internationalId,languageId,namespace,message,lastUpdated) values (761,1,'WebGUI','Add an image.', 1036892765); +insert into international (internationalId,languageId,namespace,message,lastUpdated) values (760,1,'WebGUI','Delete this folder.', 1036892740); +insert into international (internationalId,languageId,namespace,message,lastUpdated) values (759,1,'WebGUI','Edit this folder.', 1036892731); +insert into international (internationalId,languageId,namespace,message,lastUpdated) values (758,1,'WebGUI','Add a folder.', 1036892705); +insert into international (internationalId,languageId,namespace,message,lastUpdated) values (757,1,'WebGUI','Manage Collateral', 1036892669); +insert into international (internationalId,languageId,namespace,message,lastUpdated) values (756,1,'WebGUI','Back to group list.', 1036867726); +insert into international (internationalId,languageId,namespace,message,lastUpdated) values (754,1,'WebGUI','Manage the users in this group.', 1036866994); +insert into international (internationalId,languageId,namespace,message,lastUpdated) values (753,1,'WebGUI','Edit this group.', 1036866979); +insert into international (internationalId,languageId,namespace,message,lastUpdated) values (752,1,'WebGUI','View this user\'s profile.', 1036864965); +insert into international (internationalId,languageId,namespace,message,lastUpdated) values (751,1,'WebGUI','Become this user.', 1036864905); +insert into international (internationalId,languageId,namespace,message,lastUpdated) values (750,1,'WebGUI','Delete this user.', 1036864742); +delete from international where namespace='WebGUI' and internationalId=393; +delete from international where namespace='WebGUI' and internationalId=396; +delete from international where namespace='WebGUI' and internationalId=397; +delete from international where namespace='WebGUI' and internationalId=389; +delete from international where namespace='WebGUI' and internationalId=383; +delete from international where namespace='WebGUI' and internationalId=544; +delete from international where namespace='WebGUI' and internationalId=545; +delete from international where namespace='WebGUI' and internationalId=546; +delete from international where namespace='WebGUI' and internationalId=547; +delete from international where namespace='WebGUI' and internationalId=548; +delete from international where namespace='WebGUI' and internationalId=549; +delete from international where namespace='WebGUI' and internationalId=550; +delete from international where namespace='WebGUI' and internationalId=392; +delete from international where namespace='WebGUI' and internationalId=382; +delete from international where namespace='WebGUI' and internationalId=390; +delete from international where namespace='WebGUI' and internationalId=673; +delete from international where namespace='WebGUI' and internationalId=628; +delete from international where namespace='WebGUI' and internationalId=686; +delete from international where namespace='WebGUI' and internationalId=641; +delete from international where namespace='WebGUI' and internationalId=676; +delete from international where namespace='WebGUI' and internationalId=631; +delete from help where namespace='WebGUI' and helpId=26; +delete from help where namespace='WebGUI' and helpId=23; +delete from help where namespace='WebGUI' and helpId=36; diff --git a/lib/WebGUI/Macro/AdminBar.pm b/lib/WebGUI/Macro/AdminBar.pm index 1f9ddcbec..a96b0e264 100644 --- a/lib/WebGUI/Macro/AdminBar.pm +++ b/lib/WebGUI/Macro/AdminBar.pm @@ -75,6 +75,7 @@ sub _replacement { 'http://validator.w3.org/check?uri=http%3A%2F%2F'.$session{env}{SERVER_NAME}. WebGUI::URL::page()=>WebGUI::International::get(399), WebGUI::URL::page('op=viewPageTree')=>WebGUI::International::get(447), + WebGUI::URL::page('op=listCollateral')=>WebGUI::International::get(394), %hash ); } @@ -96,12 +97,6 @@ sub _replacement { %hash ); } - if (WebGUI::Privilege::isInGroup($session{setting}{imageManagersGroup},$session{user}{userId})) { - %hash = ( - WebGUI::URL::page('op=listImages')=>WebGUI::International::get(394), - %hash - ); - } %hash = ( WebGUI::URL::page('op=viewHelpIndex')=>WebGUI::International::get(13), %hash diff --git a/lib/WebGUI/Macro/File.pm b/lib/WebGUI/Macro/File.pm new file mode 100644 index 000000000..d97b5ed04 --- /dev/null +++ b/lib/WebGUI/Macro/File.pm @@ -0,0 +1,41 @@ +package WebGUI::Macro::File; + +#------------------------------------------------------------------- +# WebGUI is Copyright 2001-2002 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 strict; +use Tie::CPHash; +use WebGUI::Attachment; +use WebGUI::Macro; +use WebGUI::Session; +use WebGUI::SQL; + +#------------------------------------------------------------------- +sub _replacement { + my (@param, $temp, %data, $file); + tie %data, 'Tie::CPHash'; + @param = WebGUI::Macro::getParams($_[0]); + %data = WebGUI::SQL->quickHash("select collateralId,filename,name from collateral where name=".quote($param[0])); + $file = WebGUI::Attachment->new($data{filename},"images",$data{collateralId}); + $temp = ' '.$data{name}.''; + return $temp; +} + +#------------------------------------------------------------------- +sub process { + my ($output, $temp); + $output = $_[0]; + $output =~ s/\^File\((.*?)\)\;/_replacement($1)/ge; + return $output; +} + +1; + + diff --git a/lib/WebGUI/Macro/I_imageWithTags.pm b/lib/WebGUI/Macro/I_imageWithTags.pm index 1af244a0d..021b43eb5 100644 --- a/lib/WebGUI/Macro/I_imageWithTags.pm +++ b/lib/WebGUI/Macro/I_imageWithTags.pm @@ -22,9 +22,9 @@ sub _replacement { my (@param, $temp, %data, $image); tie %data, 'Tie::CPHash'; @param = WebGUI::Macro::getParams($_[0]); - %data = WebGUI::SQL->quickHash("select * from images where name=".quote($param[0])); - $image = WebGUI::Attachment->new($data{filename},"images",$data{imageId}); - $temp = ''; + %data = WebGUI::SQL->quickHash("select filename,parameters,collateralId from collateral where name=".quote($param[0])); + $image = WebGUI::Attachment->new($data{filename},"images",$data{collateralId}); + $temp = ''; return $temp; } diff --git a/lib/WebGUI/Macro/Snippet.pm b/lib/WebGUI/Macro/Snippet.pm new file mode 100644 index 000000000..5dd5a5c63 --- /dev/null +++ b/lib/WebGUI/Macro/Snippet.pm @@ -0,0 +1,37 @@ +package WebGUI::Macro::Snippet; + +#------------------------------------------------------------------- +# WebGUI is Copyright 2001-2002 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 strict; +use Tie::CPHash; +use WebGUI::Macro; +use WebGUI::Session; +use WebGUI::SQL; + +#------------------------------------------------------------------- +sub _replacement { + my (@param, $temp); + @param = WebGUI::Macro::getParams($_[0]); + ($temp) = WebGUI::SQL->quickArray("select parameters from collateral where name=".quote($param[0])); + return $temp; +} + +#------------------------------------------------------------------- +sub process { + my ($output, $temp); + $output = $_[0]; + $output =~ s/\^Snippet\((.*?)\)\;/_replacement($1)/ge; + return $output; +} + +1; + + diff --git a/lib/WebGUI/Macro/Thumbnail.pm b/lib/WebGUI/Macro/Thumbnail.pm index 570a7711c..d489663ec 100644 --- a/lib/WebGUI/Macro/Thumbnail.pm +++ b/lib/WebGUI/Macro/Thumbnail.pm @@ -22,8 +22,8 @@ sub _replacement { my (@param, %data, $image); tie %data, 'Tie::CPHash'; @param = WebGUI::Macro::getParams($_[0]); - %data = WebGUI::SQL->quickHash("select * from images where name='$param[0]'"); - $image = WebGUI::Attachment->new($data{filename},"images",$data{imageId}); + %data = WebGUI::SQL->quickHash("select filename,collateralId from collateral where name='$param[0]'"); + $image = WebGUI::Attachment->new($data{filename},"images",$data{collateralId}); return $image->getThumbnail; } diff --git a/lib/WebGUI/Macro/i_imageNoTags.pm b/lib/WebGUI/Macro/i_imageNoTags.pm index d8c62deb5..a42e9814a 100644 --- a/lib/WebGUI/Macro/i_imageNoTags.pm +++ b/lib/WebGUI/Macro/i_imageNoTags.pm @@ -22,8 +22,8 @@ sub _replacement { my (@param, $image, %data); tie %data, 'Tie::CPHash'; @param = WebGUI::Macro::getParams($_[0]); - %data = WebGUI::SQL->quickHash("select * from images where name=".quote($param[0])); - $image = WebGUI::Attachment->new($data{filename},"images",$data{imageId}); + %data = WebGUI::SQL->quickHash("select collateralId,filename from collateral where name=".quote($param[0])); + $image = WebGUI::Attachment->new($data{filename},"images",$data{collateralId}); return $image->getURL; } diff --git a/lib/WebGUI/Operation.pm b/lib/WebGUI/Operation.pm index 4413ec8a3..21ff1b402 100644 --- a/lib/WebGUI/Operation.pm +++ b/lib/WebGUI/Operation.pm @@ -13,9 +13,9 @@ package WebGUI::Operation; use strict; use WebGUI::Operation::Account; use WebGUI::Operation::Admin; +use WebGUI::Operation::Collateral; use WebGUI::Operation::Group; use WebGUI::Operation::Help; -use WebGUI::Operation::Image; use WebGUI::Operation::International; use WebGUI::Operation::Package; use WebGUI::Operation::Page; diff --git a/lib/WebGUI/Operation/Collateral.pm b/lib/WebGUI/Operation/Collateral.pm new file mode 100644 index 000000000..693e2c78d --- /dev/null +++ b/lib/WebGUI/Operation/Collateral.pm @@ -0,0 +1,440 @@ +package WebGUI::Operation::Collateral; + +#------------------------------------------------------------------- +# WebGUI is Copyright 2001-2002 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 WebGUI::Attachment; +use WebGUI::DateTime; +use WebGUI::HTMLForm; +use WebGUI::Icon; +use WebGUI::International; +use WebGUI::Node; +use WebGUI::Operation::Shared; +use WebGUI::Paginator; +use WebGUI::Privilege; +use WebGUI::Session; +use WebGUI::SQL; +use Tie::IxHash; +use WebGUI::URL; + +our @ISA = qw(Exporter); +our @EXPORT = qw(&www_editCollateral &www_editCollateralSave &www_deleteCollateral + &www_deleteCollateralConfirm &www_listCollateral + &www_deleteFile &www_editCollateralFolder &www_editCollateralFolderSave &www_deleteCollateralFolder + &www_deleteCollateralFolderConfirm); + +#------------------------------------------------------------------- +sub _submenu { + return WebGUI::Privilege::insufficient unless (WebGUI::Privilege::isInGroup(4)); + my (%menu); + tie %menu, 'Tie::IxHash'; + $menu{WebGUI::URL::page('op=editCollateralFolder&fid=new')} = WebGUI::International::get(758); + $menu{WebGUI::URL::page('op=editCollateral&cid=new&type=image')} = WebGUI::International::get(761); + $menu{WebGUI::URL::page('op=editCollateral&cid=new&type=file')} = WebGUI::International::get(762); + $menu{WebGUI::URL::page('op=editCollateral&cid=new&type=snippet')} = WebGUI::International::get(763); + if ($session{form}{op} eq "editCollateral" || $session{form}{op} eq "deleteCollateral") { + $menu{WebGUI::URL::page('op=editCollateral&cid='.$session{form}{cid})} = WebGUI::International::get(764); + $menu{WebGUI::URL::page('op=deleteCollateral&cid='.$session{form}{cid})} = WebGUI::International::get(765); + } + $menu{WebGUI::URL::page('op=editCollateralFolder')} = WebGUI::International::get(759); + $menu{WebGUI::URL::page('op=deleteCollateralFolder')} = WebGUI::International::get(760); + $menu{WebGUI::URL::page('op=listCollateral')} = WebGUI::International::get(766); + return menuWrapper($_[0],\%menu); +} + +#------------------------------------------------------------------- +sub www_deleteCollateral { + return WebGUI::Privilege::insufficient unless (WebGUI::Privilege::isInGroup(4)); + my $output = '

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

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

'; + $output .= '' + .WebGUI::International::get(44).''; + $output .= '    '; + $output .= ''.WebGUI::International::get(45).''; + $output .= '
'; + return _submenu($output); +} + +#------------------------------------------------------------------- +sub www_deleteCollateralConfirm { + return WebGUI::Privilege::insufficient unless (WebGUI::Privilege::isInGroup(4)); + my $node = WebGUI::Node("images",$session{form}{cid}); + WebGUI::SQL->write("delete from collateral where collateralId=".$session{form}{cid}); + return www_listCollateral(); +} + +#------------------------------------------------------------------- +sub www_deleteCollateralFolder { + return WebGUI::Privilege::insufficient unless (WebGUI::Privilege::isInGroup(4)); + return WebGUI::Privilege::vitalComponent() unless ($session{scratch}{collateralFolderId} > 999); + my $output = '

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

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

'; + $output .= '' + .WebGUI::International::get(44).''; + $output .= '    '; + $output .= ''.WebGUI::International::get(45).''; + $output .= '
'; + return _submenu($output); +} + +#------------------------------------------------------------------- +sub www_deleteCollateralFolderConfirm { + return WebGUI::Privilege::insufficient unless (WebGUI::Privilege::isInGroup(4)); + return WebGUI::Privilege::vitalComponent() unless ($session{scratch}{collateralFolderId} > 999); + my ($parent) = WebGUI::SQL->quickArray("select parentId from collateralFolder + where collateralFolderId=".$session{scratch}{collateralFolderId}); + WebGUI::SQL->write("update collateral set collateralFolderId=$parent + where collateralFolderId=$session{scratch}{collateralFolderId}"); + WebGUI::SQL->write("delete from collateralFolder where collateralFolderId=".$session{scratch}{collateralFolderId}); + WebGUI::Session::setScratch("collateralFolderId",$parent); + return www_listCollateral(); +} + +#------------------------------------------------------------------- +sub www_deleteFile { + return WebGUI::Privilege::insufficient unless (WebGUI::Privilege::isInGroup(4)); + WebGUI::SQL->write("update collateral set filename='' where collateralId=".$session{form}{cid}); + return www_editCollateral(); +} + +#------------------------------------------------------------------- +sub www_editCollateral { + return WebGUI::Privilege::insufficient unless (WebGUI::Privilege::isInGroup(4)); + my ($canEdit, $file, $folderId, $output, $f, $collateral); + if ($session{form}{cid} eq "new") { + $collateral->{collateralType} = $session{form}{type}; + $collateral->{collateralId} = "new"; + $collateral->{username} = $session{user}{username}; + $collateral->{userId} = $session{user}{userId}; + $collateral->{parameters} = 'border="0"' if ($session{form}{type} eq "image"); + } else { + $collateral = WebGUI::SQL->quickHashRef("select * from collateral where collateralId=".$session{form}{cid}); + } + $canEdit = ($collateral->{userId} == $session{user}{userId} || WebGUI::Privilege::isInGroup($session{user}{userId})); + $folderId = $session{scratch}{collateralFolderId} || 0; + $f = WebGUI::HTMLForm->new; + $f->hidden("op","editCollateralSave"); + $f->hidden("collateralType",$collateral->{collateralType}); + $f->hidden("cid",$collateral->{collateralId}); + $f->readOnly( + -label=>WebGUI::International::get(767), + -value=>$collateral->{collateralId} + ); + $f->readOnly( + -label=>WebGUI::International::get(388), + -value=>epochToHuman($collateral->{dateUploaded},"%z") + ); + $f->readOnly( + -label=>WebGUI::International::get(387), + -value=>$collateral->{username} + ); + if ($canEdit) { + $f->text( + -name=>"name", + -value=>$collateral->{name}, + -label=>WebGUI::International::get(768) + ); + $f->select( + -name=>"collateralFolderId", + -value=>[$folderId], + -label=>WebGUI::International::get(769), + -options=>WebGUI::SQL->buildHashRef("select collateralFolderId,name from collateralFolder order by name") + ); + } else { + $f->readOnly( + -label=>WebGUI::International::get(768), + -value=>$collateral->{name} + ); + } + if ($collateral->{collateralType} eq "snippet") { + $output .= '

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

'; + if ($canEdit) { + $f->HTMLArea( + -name=>"parameters", + -value=>$collateral->{parameters}, + -label=>WebGUI::International::get(771) + ); + } else { + $f->readOnly( + -value=>$collateral->{parameters}, + -label=>WebGUI::International::get(771) + ); + } + } elsif ($collateral->{collateralType} eq "file") { + $output .= '

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

'; + if ($canEdit) { + if ($collateral->{filename} ne "") { + $f->readOnly( + -value=>''.WebGUI::International::get(391).'', + -label=>WebGUI::International::get(773) + ); + } else { + $f->file( + -name=>"filename", + -label=>WebGUI::International::get(773) + ); + } + } + $file = WebGUI::Attachment->new($collateral->{filename},"images",$collateral->{collateralId}); + if ($file->getFilename ne "") { + $f->readOnly( + -value=>' ' + .$file->getFilename.'' + ); + } + } else { + $output .= helpIcon(20); + $output .= '

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

'; + if ($canEdit) { + if ($collateral->{filename} ne "") { + $f->readOnly( + -value=>''. + WebGUI::International::get(391).'', + -label=>WebGUI::International::get(384) + ); + } else { + $f->file( + -name=>"filename", + -label=>WebGUI::International::get(384) + ); + } + } + $file = WebGUI::Attachment->new($collateral->{filename},"images",$collateral->{collateralId}); + if ($file->getFilename ne "") { + $f->readOnly( + -value=>'' + ); + } + if ($canEdit) { + $f->textarea( + -name=>"parameters", + -value=>$collateral->{parameters}, + -label=>WebGUI::International::get(385) + ); + } else { + $f->readOnly( + -label=>WebGUI::International::get(385), + -value=>$collateral->{parameters} + ); + } + } + $f->submit if ($canEdit); + $output .= $f->print; + return _submenu($output); +} + +#------------------------------------------------------------------- +sub www_editCollateralSave { + return WebGUI::Privilege::insufficient unless (WebGUI::Privilege::isInGroup(4)); + WebGUI::Session::setScratch("collateralFolderId",$session{form}{collateralFolderId}); + my ($test, $file, $addFile); + if ($session{form}{cid} eq "new") { + $session{form}{cid} = getNextId("collateralId"); + WebGUI::SQL->write("insert into collateral (collateralId,userId,username,collateralType) + values ($session{form}{cid}, + $session{user}{userId}, ".quote($session{user}{username}).", + ".quote($session{form}{collateralType}).")"); + } + $file = WebGUI::Attachment->new("","images",$session{form}{cid}); + $file->save("filename"); + if ($file->getFilename ne "") { + $addFile = ", filename=".quote($file->getFilename); + $session{form}{name} = $file->getFilename if ($session{form}{name} eq ""); + } + $session{form}{name} = "untitled" if ($session{form}{name} eq ""); + while (($test) = WebGUI::SQL->quickArray("select name from collateral + where name=".quote($session{form}{name})." and collateralId<>$session{form}{cid}")) { + if ($session{form}{name} =~ /(.*)(\d+$)/) { + $session{form}{name} = $1.($2+1); + } elsif ($test ne "") { + $session{form}{name} .= "2"; + } + } + WebGUI::SQL->write("update collateral set name=".quote($session{form}{name}).", parameters=" + .quote($session{form}{parameters}).", collateralFolderId=$session{form}{collateralFolderId}, dateUploaded=" + .time()." $addFile where collateralId=$session{form}{cid}"); + $session{form}{collateralType} = ""; + return www_listCollateral(); +} + +#------------------------------------------------------------------- +sub www_editCollateralFolder { + return WebGUI::Privilege::insufficient unless (WebGUI::Privilege::isInGroup(4)); + my ($output, $f, $folder, $folderId, $constraint); + $output .= '

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

'; + if ($session{form}{fid} eq "new") { + $folder->{collateralFolderId} = "new"; + $folder->{parentId} = $session{scratch}{collateralFolderId} || 0; + } else { + $folderId = $session{scratch}{collateralFolderId} || 0; + $folder = WebGUI::SQL->quickHashRef("select * from collateralFolder where collateralFolderId=$folderId"); + $constraint = "where collateralFolderId<>".$folder->{collateralFolderId}; + } + $f = WebGUI::HTMLForm->new; + $f->hidden("op","editCollateralFolderSave"); + $f->hidden("fid",$session{form}{fid}); + $f->readOnly( + -value=>$folder->{collateralFolderId}, + -label=>WebGUI::International::get(777) + ); + if ($folder->{collateralFolderId} eq "0") { + $f->hidden("parentId",0); + } else { + $f->select( + -name=>"parentId", + -value=>[$folder->{parentId}], + -label=>WebGUI::International::get(769), + -options=>WebGUI::SQL->buildHashRef("select collateralFolderId,name from collateralFolder + $constraint order by name") + ); + } + $f->text( + -value=>$folder->{name}, + -name=>"name", + -label=>WebGUI::International::get(768) + ); + $f->textarea( + -value=>$folder->{description}, + -name=>"description", + -label=>WebGUI::International::get(778) + ); + $f->submit; + $output .= $f->print; + return _submenu($output); +} + +#------------------------------------------------------------------- +sub www_editCollateralFolderSave { + return WebGUI::Privilege::insufficient unless (WebGUI::Privilege::isInGroup(4)); + if ($session{form}{fid} eq "new") { + $session{form}{fid} = getNextId("collateralFolderId"); + WebGUI::Session::setScratch("collateralFolderId",$session{form}{fid}); + WebGUI::SQL->write("insert into collateralFolder (collateralFolderId) values ($session{form}{fid})"); + } + $session{form}{name} = "untitled" if ($session{form}{name} eq ""); + while (my ($test) = WebGUI::SQL->quickArray("select name from collateralFolder + where name=".quote($session{form}{name})." and collateralFolderId<>$session{scratch}{collateralFolderId}")) { + if ($session{form}{name} =~ /(.*)(\d+$)/) { + $session{form}{name} = $1.($2+1); + } elsif ($test ne "") { + $session{form}{name} .= "2"; + } + } + WebGUI::SQL->write("update collateralFolder set parentId=$session{form}{parentId}, name=".quote($session{form}{name}) + .", description=".quote($session{form}{description}) + ." where collateralFolderId=$session{scratch}{collateralFolderId}"); + return www_listCollateral(); +} + +#------------------------------------------------------------------- +sub www_listCollateral { + return WebGUI::Privilege::insufficient unless (WebGUI::Privilege::isInGroup(4)); + my (%type, %user, $f, $row, $data, $sth, $url, $output, $parent, $p, $thumbnail, $file, $page, $constraints, $folderId); + tie %type, 'Tie::IxHash'; + tie %user, 'Tie::IxHash'; + %type = ( + '-delete-'=>WebGUI::International::get(782), + image=>WebGUI::International::get(779), + file=>WebGUI::International::get(780), + snippet=>WebGUI::International::get(781) + ); + %user = ( + '-delete-'=>WebGUI::International::get(782), + %{WebGUI::SQL->buildHashRef("select distinct(userId), username from collateral order by username")} + ); + $session{form}{keyword} = '-delete-' if (exists $session{form}{keyword} && $session{form}{keyword} eq ""); + WebGUI::Session::setScratch("keyword",$session{form}{keyword}); + WebGUI::Session::setScratch("collateralUser",$session{form}{collateralUser}); + WebGUI::Session::setScratch("collateralType",$session{form}{collateralType}); + WebGUI::Session::setScratch("collateralPageNumber",$session{form}{pn}); + WebGUI::Session::setScratch("collateralFolderId",$session{form}{fid}); + $folderId = $session{scratch}{collateralFolderId} || 0; + $constraints = "collateralFolderId=".$folderId; + $constraints .= " and userId=$session{scratch}{collateralUser}" if ($session{scratch}{collateralUser}); + $constraints .= " and collateralType=".quote($session{scratch}{collateralType}) if ($session{scratch}{collateralType}); + $constraints .= " and name like ".quote('%'.$session{scratch}{keyword}.'%') if ($session{scratch}{keyword}); + $p = WebGUI::Paginator->new(WebGUI::URL::page('op=listCollateral'),[],"",$session{scratch}{collateralPageNumber}); + $p->setDataByQuery("select collateralId, name, filename, collateralType, dateUploaded, username + from collateral where $constraints order by name"); + $page = $p->getPageData; + $output = helpIcon(49); + $output .= '

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

'; + $f = WebGUI::HTMLForm->new(1); + $f->hidden("op","listCollateral"); + $f->hidden("pn",1); + $f->text( + -name=>"keyword", + -value=>$session{scratch}{keyword}, + -size=>15 + ); + $f->select( + -name=>"collateralUser", + -value=>[$session{scratch}{collateralUser}], + -options=>\%user + ); + $f->select( + -name=>"collateralType", + -value=>[$session{scratch}{collateralType}], + -options=>\%type + ); + $f->submit(WebGUI::International::get(170)); + $output .= '
'.$f->print.'
'; + $output .= ''; + $output .= ''; + if ($folderId) { + ($parent) = WebGUI::SQL->quickArray("select parentId from collateralFolder + where collateralFolderId=$folderId"); + $output .= ''; + } + $sth = WebGUI::SQL->read("select collateralFolderId, name, description from collateralFolder + where parentId=$folderId and collateralFolderId<>0 order by name"); + while ($data = $sth->hashRef) { + $output .= ''; + } + $sth->finish; + foreach $row (@$page) { + $url = WebGUI::URL::page('op=editCollateral&cid='.$row->{collateralId}.'&fid='.$folderId); + $output .= ''; + $output .= ''; + $output .= ''; + $output .= ''; + $output .= ''; + if ($row->{filename} ne "" && $row->{collateralType} eq "image") { + $file = WebGUI::Attachment->new($row->{filename},"images",$row->{collateralId}); + $thumbnail = ''; + } elsif ($row->{filename} ne "" && $row->{collateralType} eq "file") { + $file = WebGUI::Attachment->new($row->{filename},"images",$row->{collateralId}); + $thumbnail = ''; + } else { + $thumbnail = ""; + } + $output .= ''; + $output .= ''; + } + $output .= '
'.WebGUI::International::get(768).'' + .WebGUI::International::get(783).''.WebGUI::International::get(387) + .''.WebGUI::International::get(388).'' + .WebGUI::International::get(784).'
' + .' '.WebGUI::International::get(542).'
' + .' '.$data->{name}.''.$data->{description}.'
'.$row->{name}.''.$type{$row->{collateralType}}.''.$row->{username}.''.epochToHuman($row->{dateUploaded},"%z").''.$thumbnail.'
'; + $output .= $p->getBarTraditional; + return _submenu($output); +} + +1; + diff --git a/lib/WebGUI/Operation/Help.pm b/lib/WebGUI/Operation/Help.pm index 86168f4a6..10a12bce8 100644 --- a/lib/WebGUI/Operation/Help.pm +++ b/lib/WebGUI/Operation/Help.pm @@ -50,21 +50,16 @@ sub _seeAlso { #------------------------------------------------------------------- sub www_deleteHelp { - if ($session{user}{userId} != 3) { - return ""; - } else { + return "" unless (WebGUI::Privilege::isInGroup(3)); my $output = '

Confirm

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

'; return $output; - } } #------------------------------------------------------------------- sub www_deleteHelpConfirm { - if ($session{user}{userId} != 3) { - return ""; - } else { + 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 @@ -74,14 +69,11 @@ sub www_deleteHelpConfirm { WebGUI::SQL->write("delete from help where helpId=".$session{form}{hid}." and namespace=".quote($session{form}{namespace})); return www_manageHelp(); - } } #------------------------------------------------------------------- sub www_editHelp { - if ($session{user}{userId} != 3) { - return ""; - } else { + return "" unless (WebGUI::Privilege::isInGroup(3)); my ($output, $f, %data, %help, @seeAlso); tie %data, 'Tie::IxHash'; tie %help, 'Tie::CPHash'; @@ -125,14 +117,11 @@ sub www_editHelp { $f->submit; $output .= $f->print; return $output; - } } #------------------------------------------------------------------- sub www_editHelpSave { - if ($session{user}{userId} != 3) { - return ""; - } else { + return "" unless (WebGUI::Privilege::isInGroup(3)); my (@seeAlso); if ($session{form}{hid} eq "new") { if ($session{form}{namespace_new} ne "") { @@ -165,12 +154,11 @@ sub www_editHelpSave { 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(); - } } #------------------------------------------------------------------- sub www_exportHelp { - return "" if ($session{user}{userId} != 3); + return "" unless (WebGUI::Privilege::isInGroup(3)); my ($export, $output, %help, $sth); $export = "#export of WebGUI ".$WebGUI::VERSION." help system.\n\n"; $sth = WebGUI::SQL->read("select * from help"); @@ -187,7 +175,7 @@ sub www_exportHelp { #------------------------------------------------------------------- sub www_manageHelp { my ($sth, @help, $output); - if ($session{user}{userId} != 3) { + unless (WebGUI::Privilege::isInGroup(3)) { return ""; } else { $output = '

Manage Help

'; diff --git a/lib/WebGUI/Operation/Image.pm b/lib/WebGUI/Operation/Image.pm deleted file mode 100644 index 2681b2d4f..000000000 --- a/lib/WebGUI/Operation/Image.pm +++ /dev/null @@ -1,387 +0,0 @@ -package WebGUI::Operation::Image; - -#------------------------------------------------------------------- -# WebGUI is Copyright 2001-2002 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 WebGUI::Attachment; -use WebGUI::DateTime; -use WebGUI::HTMLForm; -use WebGUI::Icon; -use WebGUI::International; -use WebGUI::Paginator; -use WebGUI::Privilege; -use WebGUI::Session; -use WebGUI::SQL; -use WebGUI::Template; -use WebGUI::URL; -use WebGUI::Utility; - -our @ISA = qw(Exporter); -our @EXPORT = qw(&www_editImage &www_editImageSave &www_viewImage &www_deleteImage &www_deleteImageConfirm &www_listImages &www_deleteImageFile &www_editImageGroup &www_editImageGroupSave &www_viewImageGroup &www_deleteImageGroup &www_deleteImageGroupConfirm); - - -#------------------------------------------------------------------- -sub www_deleteImage { - my ($output); - if (WebGUI::Privilege::isInGroup($session{setting}{imageManagersGroup})) { - $output .= helpIcon(23); - $output .= '

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

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

'; - $output .= '

'.WebGUI::International::get(44).''; - $output .= '    '. - WebGUI::International::get(45).'
'; - return $output; - } else { - return WebGUI::Privilege::insufficient(); - } -} - -#------------------------------------------------------------------- -sub www_deleteImageConfirm { - my ($image); - if (WebGUI::Privilege::isInGroup($session{setting}{imageManagersGroup})) { - $image = WebGUI::Attachment->new("","images",$session{form}{iid}); - $image->deleteNode; - WebGUI::SQL->write("delete from images where imageId=$session{form}{iid}"); - return www_listImages(); - } else { - return WebGUI::Privilege::insufficient(); - } -} - -#------------------------------------------------------------------- -sub www_deleteImageFile { - if (WebGUI::Privilege::isInGroup($session{setting}{imageManagersGroup})) { - WebGUI::SQL->write("update images set filename='' where imageId=$session{form}{iid}"); - return www_editImage(); - } else { - return WebGUI::Privilege::insufficient(); - } -} - -#------------------------------------------------------------------- -sub www_editImage { - my ($output, %data, $image, $f, $imageGroupId); - tie %data, 'Tie::CPHash'; - if (WebGUI::Privilege::isInGroup($session{setting}{imageManagersGroup})) { - if ($session{form}{iid} eq "new") { - $imageGroupId = $session{form}{gid}; - } else { - %data = WebGUI::SQL->quickHash("select * from images where imageId=$session{form}{iid}"); - $imageGroupId = $data{imageGroupId}; - } - $output = helpIcon(20); - $output .= '

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

'; - $f = WebGUI::HTMLForm->new; - $f->hidden("op","editImageSave"); - $f->hidden("iid",$session{form}{iid}); - $f->hidden("gid",$imageGroupId); - $f->readOnly($session{form}{iid},WebGUI::International::get(389)); - $f->text("name",WebGUI::International::get(383),$data{name}); - if ($data{filename} ne "") { - $f->readOnly(''.WebGUI::International::get(391).'', - WebGUI::International::get(384)); - } else { - $f->file("filename",WebGUI::International::get(384)); - } - $f->textarea("parameters",WebGUI::International::get(385),$data{parameters}); - $f->submit; - $output .= $f->print; - if ($data{filename} ne "") { - $image = WebGUI::Attachment->new($data{filename},"images",$data{imageId}); - $output .= '

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

'; - } - return $output; - } else { - return WebGUI::Privilege::insufficient(); - } -} - -#------------------------------------------------------------------- -sub www_editImageSave { - my ($file, $sqlAdd, $test); - if (WebGUI::Privilege::isInGroup($session{setting}{imageManagersGroup})) { - if ($session{form}{iid} eq "new") { - $session{form}{iid} = getNextId("imageId"); - WebGUI::SQL->write("insert into images (imageId) values ($session{form}{iid})"); - } - $file = WebGUI::Attachment->new("","images",$session{form}{iid}); - $file->save("filename"); - if ($file->getFilename) { - $sqlAdd = ", filename=".quote($file->getFilename); - } - while (($test) = WebGUI::SQL->quickArray("select name from images - where name=".quote($session{form}{name})." and imageId<>$session{form}{iid}")) { - if ($session{form}{name} =~ /(.*)(\d+$)/) { - $session{form}{name} = $1.($2+1); - } elsif ($test ne "") { - $session{form}{name} .= "2"; - } - } - WebGUI::SQL->write("update images set name=".quote($session{form}{name}). - $sqlAdd.", parameters=".quote($session{form}{parameters}).", userId=$session{user}{userId}, ". - " username=".quote($session{user}{username}). - ", imageGroupId=".$session{form}{gid}. - ", dateUploaded=".time()." where imageId=$session{form}{iid}"); - return www_listImages(); - } else { - return WebGUI::Privilege::insufficient(); - } -} - -#------------------------------------------------------------------- -sub www_listImages { - my ($f, $output, $sth, %data, @row, $image, $p, $i, $search, $search_group, - $isAdmin, $imageGroupId, $isImageManager, $imageGroupParentId); - tie %data, 'Tie::CPHash'; - if (WebGUI::Privilege::isInGroup(4)) { - $isImageManager = WebGUI::Privilege::isInGroup($session{setting}{imageManagersGroup}); - $isAdmin = WebGUI::Privilege::isInGroup(3); - if($session{form}{gid} ne "") { - $imageGroupId = $session{form}{gid}; - } else { - $imageGroupId = 0; - $session{form}{gid} = 0; - } - %data = WebGUI::SQL->quickHash("select parentId,name from imageGroup where imageGroupId=".$imageGroupId); - if($session{form}{pid} ne "") { - $imageGroupParentId = $session{form}{pid}; - } elsif($imageGroupId != 0) { - $imageGroupParentId = $data{parentId}; - } - $output = helpIcon(26); - $output .= '

'.WebGUI::International::get(393).' - '.$data{name}.'

'; - $output .= ''; - if($isImageManager) { - $output .= ''; - $output .= ''; - } - $f = WebGUI::HTMLForm->new(1); - $f->raw(''); - $output .= $f->print; - $output .= '
'.WebGUI::International::get(395).''; - $output .= ''.WebGUI::International::get(543).''); - $f->hidden("op","listImages"); - $f->text("keyword",'',$session{form}{keyword}); - $f->submit(WebGUI::International::get(170)); - $f->raw('

'; - if ($session{form}{keyword} ne "") { - $search = " where (name like '%".$session{form}{keyword}. - "%' or username like '%".$session{form}{keyword}. - "%' or filename like '%".$session{form}{keyword}."%') "; - $search_group = " where (name like '%".$session{form}{keyword}. - "%' or description like '%".$session{form}{keyword}."%') and imageGroupId>0"; - } else { - $search = " where imageGroupId='".$imageGroupId."' "; - $search_group = " where parentId='".$imageGroupId."' and imageGroupId>0 "; - } - # do image groups - if($imageGroupId > 0) { # show previous link - $row[$i] = ''; - $row[$i] .= '' - .' '.WebGUI::International::get(542).''; # FIXME folder icon - $row[$i] .= ''; - $i++; - } - $sth = WebGUI::SQL->read("select * from imageGroup $search_group order by name"); - while (%data = $sth->hash) { - $row[$i] = ''; - if ($isImageManager) { - $row[$i] .= deleteIcon('op=deleteImageGroup&gid='.$data{imageGroupId}.'&pid='.$imageGroupId); - $row[$i] .= editIcon('op=editImageGroup&gid='.$data{imageGroupId}.'&pid='.$imageGroupId); - } - $row[$i] .= viewIcon('op=viewImageGroup&gid='.$data{imageGroupId}.'&pid='.$imageGroupId); - $row[$i] .= ''; - $row[$i] .= '' - .' '.$data{name}.''; # FIXME folder icon - $row[$i] .= ''.$data{description}.' '; - $row[$i] .= '  '; - $row[$i] .= '  '; - $row[$i] .= ''; - $i++; - } - $sth->finish; - # do images - $sth = WebGUI::SQL->read("select * from images $search order by name"); - while (%data = $sth->hash) { - $image = WebGUI::Attachment->new($data{filename},"images",$data{imageId}); - $row[$i] = ''; - if ($isAdmin || $session{user}{userId} == $data{userId}) { - $row[$i] .= deleteIcon('op=deleteImage&iid='.$data{imageId}.'&gid='.$data{imageGroupId}); - $row[$i] .= editIcon('op=editImage&iid='.$data{imageId}.'&gid='.$data{imageGroupId}); - } - $row[$i] .= viewIcon('op=viewImage&iid='.$data{imageId}.'&gid='.$data{imageGroupId}); - $row[$i] .= ''; - $row[$i] .= ''; - $row[$i] .= ''.$data{name}.''; - $row[$i] .= ''.$data{username}.''; - $row[$i] .= ''.WebGUI::DateTime::epochToHuman($data{dateUploaded},"%M/%D/%y").''; - $row[$i] .= ''; - $i++; - } - $sth->finish; - $p = WebGUI::Paginator->new(WebGUI::URL::page('op=listImages&gid='.$session{form}{gid}),\@row); - $output .= ''; - $output .= $p->getPage($session{form}{pn}); - $output .= '
'; - $output .= $p->getBarTraditional($session{form}{pn}); - return $output; - } else { - return WebGUI::Privilege::insufficient(); - } -} - -#------------------------------------------------------------------- -sub www_viewImage { - my ($output, %data, $image,$f); - tie %data, 'Tie::CPHash'; - if (WebGUI::Privilege::isInGroup(4)) { - %data = WebGUI::SQL->quickHash("select * from images where imageId=$session{form}{iid}"); - $image = WebGUI::Attachment->new($data{filename},"images",$data{imageId}); - $output .= '

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

'; - $output .= ''.WebGUI::International::get(397).''; - $f = WebGUI::HTMLForm->new; - $f->readOnly($data{imageId},WebGUI::International::get(389)); - $f->readOnly($data{name},WebGUI::International::get(383)); - $f->readOnly($data{filename},WebGUI::International::get(384)); - $f->readOnly($data{parameters},WebGUI::International::get(385)); - $f->readOnly($data{username},WebGUI::International::get(387)); - $f->readOnly(WebGUI::DateTime::epochToHuman($data{dateUploaded},"%z %z"),WebGUI::International::get(388)); - $output .= $f->print; - $output .= '

'; - return $output; - } else { - return WebGUI::Privilege::insufficient(); - } -} - -#------------------------------------------------------------------- -sub www_deleteImageGroup { - my ($output); - if (WebGUI::Privilege::isInGroup($session{setting}{imageManagersGroup})) { - $output .= helpIcon(23); - $output .= '

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

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

'; - $output .= '

'.WebGUI::International::get(44).''; - $output .= '    '. - WebGUI::International::get(45).'
'; - return $output; - } else { - return WebGUI::Privilege::insufficient(); - } -} - -#------------------------------------------------------------------- -sub www_deleteImageGroupConfirm { - my ($image, %data); - tie %data, 'Tie::CPHash'; - if (WebGUI::Privilege::isInGroup($session{setting}{imageManagersGroup})) { - %data = WebGUI::SQL->quickHash("select parentId from imageGroup where imageGroupId=$session{form}{gid}"); - WebGUI::SQL->write("update images set imageGroupId=$data{parentId} where imageGroupId=$session{form}{gid}"); - WebGUI::SQL->write("update imageGroup set parentId=$data{parentId} where parentId=$session{form}{gid}"); - WebGUI::SQL->write("delete from imageGroup where imageGroupId=$session{form}{gid}"); - $session{form}{gid}=$session{form}{pid}; - return www_listImages(); - } else { - return WebGUI::Privilege::insufficient(); - } -} - -#------------------------------------------------------------------- -sub www_editImageGroup { - my ($output, %data, %parent_data, $image, $f); - tie %data, 'Tie::CPHash'; - tie %parent_data, 'Tie::CPHash'; - if (WebGUI::Privilege::isInGroup($session{setting}{imageManagersGroup})) { - if ($session{form}{gid} eq "new") { - - } else { - %data = WebGUI::SQL->quickHash("select * from imageGroup where imageGroupId=$session{form}{gid}"); - } - %parent_data = WebGUI::SQL->quickHash("select name from imageGroup where imageGroupId=$session{form}{pid}"); - $output = helpIcon(36); - $output .= '

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

'; - $f = WebGUI::HTMLForm->new; - $f->hidden("op","editImageGroupSave"); - $f->hidden("gid",$session{form}{gid}); - $f->hidden("pid",$session{form}{pid}); #FIXME make this dropdown group tree - $f->readOnly($session{form}{gid},WebGUI::International::get(546)); - $f->readOnly($parent_data{name},WebGUI::International::get(547)); - $f->text("name",WebGUI::International::get(548),$data{name}); - $f->text("description",WebGUI::International::get(549),$data{description}); - $f->submit; - $output .= $f->print; - return $output; - } else { - return WebGUI::Privilege::insufficient(); - } -} - -#------------------------------------------------------------------- -sub www_editImageGroupSave { - my ($test); - if (WebGUI::Privilege::isInGroup($session{setting}{imageManagersGroup})) { - if ($session{form}{gid} eq "new") { - $session{form}{gid} = getNextId("imageGroupId"); - WebGUI::SQL->write("insert into imageGroup (imageGroupId) values ($session{form}{gid})"); - } - while (($test) = WebGUI::SQL->quickArray("select name from imageGroup - where name=".quote($session{form}{name})." and imageGroupId<>$session{form}{gid}")) { - if ($session{form}{name} =~ /(.*)(\d+$)/) { - $session{form}{name} = $1.($2+1); - } elsif ($test ne "") { - $session{form}{name} .= "2"; - } - } - WebGUI::SQL->write("update imageGroup set name=".quote($session{form}{name}). - ", parentId=".$session{form}{pid}.", description=".quote($session{form}{description}). - " where imageGroupId=$session{form}{gid}"); - return www_listImages(); - } else { - return WebGUI::Privilege::insufficient(); - } -} - -#------------------------------------------------------------------- -sub www_viewImageGroup { - my ($output, %data, %parent_data, $image,$f); - tie %data, 'Tie::CPHash'; - tie %parent_data, 'Tie::CPHash'; - if (WebGUI::Privilege::isInGroup(4)) { - %data = WebGUI::SQL->quickHash("select * from imageGroup where imageGroupId=$session{form}{gid}"); - %parent_data = WebGUI::SQL->quickHash("select name from imageGroup where imageGroupId=".$data{parentId}); - $output .= '

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

'; - $output .= ''.WebGUI::International::get(397).''; - $f = WebGUI::HTMLForm->new; - $f->readOnly($data{imageGroupId},WebGUI::International::get(546)); - $f->readOnly($parent_data{name},WebGUI::International::get(547)); - $f->readOnly($data{name},WebGUI::International::get(548)); - $f->readOnly($data{description},WebGUI::International::get(549)); - $output .= $f->print; - return $output; - } else { - return WebGUI::Privilege::insufficient(); - } -} - -1; - - diff --git a/lib/WebGUI/Paginator.pm b/lib/WebGUI/Paginator.pm index a4366fb7c..24151b252 100644 --- a/lib/WebGUI/Paginator.pm +++ b/lib/WebGUI/Paginator.pm @@ -27,6 +27,8 @@ use WebGUI::URL; use WebGUI::Paginator; $p = WebGUI::Paginator->new("/index.pl/page_name?this=that",\@row); + $p->setDataByQuery($sql); + $html = $p->getBar; $html = $p->getBarAdvanced; $html = $p->getBarSimple; @@ -201,7 +203,7 @@ sub getFirstPageLink { $text = '|<'.WebGUI::International::get(404); if ($pn > 1) { return ''.$text.''; } else { return $text; @@ -228,7 +230,7 @@ sub getLastPageLink { $text = WebGUI::International::get(405).'>|'; if ($pn != $_[0]->getNumberOfPages) { return ''.$text.''; } else { return $text; @@ -254,7 +256,7 @@ sub getNextPageLink { $pn = $_[1] || $_[0]->getPageNumber; $text = WebGUI::International::get(92).'»'; if ($pn < $_[0]->getNumberOfPages) { - return ''.$text.''; + return ''.$text.''; } else { return $text; } @@ -335,7 +337,7 @@ sub getPageData { =cut sub getPageNumber { - return $session{form}{$_[0]->{_pn}} || 1; + return $_[0]->{_pn} || 1; } #------------------------------------------------------------------- @@ -359,7 +361,7 @@ sub getPageLinks { $output .= ' '.($i+1).' '; } else { $output .= ' '.($i+1).' '; } } @@ -385,7 +387,7 @@ sub getPreviousPageLink { $pn = $_[1] || $_[0]->getPageNumber; $text = '«'.WebGUI::International::get(91); if ($pn > 1) { - return ''.$text.''; + return ''.$text.''; } else { return $text; } @@ -394,7 +396,7 @@ sub getPreviousPageLink { #------------------------------------------------------------------- -=head2 new ( currentURL, rowArrayRef [, paginateAfter, alternateFormVar ] ) +=head2 new ( currentURL, rowArrayRef [, paginateAfter, pageNumber, formVar ] ) Constructor. @@ -412,25 +414,49 @@ sub getPreviousPageLink { The number of rows to display per page. If left blank it defaults to 50. -=item alternateFormVar +=item pageNumber - By default the paginator uses a form variable of "pn" to denote the + By default the paginator uses a form variable of "pn" to determine the page number. If you wish it to use some other variable, then specify - it here. + the page number here. + +=item formVar + + Specify the form variable the paginator should use in it's links. + Defaults to "pn". =cut sub new { - my ($class, $currentURL, $rowsPerPage, $rowRef, $formVar, $pageRef); + my ($class, $currentURL, $rowsPerPage, $rowRef, $formVar, $pageRef, $pn); $class = shift; $currentURL = shift; $rowRef = shift; $rowsPerPage = shift || 25; + $pn = shift || $session{form}{$formVar}; $formVar = shift || "pn"; - bless {_url => $currentURL, _rpp => $rowsPerPage, _rowRef => $rowRef, _pn => $formVar}, $class; + bless {_url => $currentURL, _rpp => $rowsPerPage, _rowRef => $rowRef, _formVar => $formVar, _pn => $pn}, $class; } #------------------------------------------------------------------- + +=head2 setDataByQuery ( query [, dbh ] ) + + Retrieves a data set from a database and replaces whatever data + set was passed in through the constructor. + + NOTE: This retrieves only the current page's data for efficiency. + +=item query + + An SQL query that will retrieve a data set. + +=item dbh + + A DBI-style database handler. Defaults to the WebGUI site handler. + +=cut + sub setDataByQuery { my ($sth, $pageCount, $rowCount, $dbh, $sql, $self, @row, $data); ($self, $sql, $dbh) = @_; diff --git a/lib/WebGUI/Session.pm b/lib/WebGUI/Session.pm index 9d751c082..23e221fcb 100644 --- a/lib/WebGUI/Session.pm +++ b/lib/WebGUI/Session.pm @@ -312,15 +312,20 @@ sub setCookie { =cut sub setScratch { - return "" unless ($session{var}{sessionId}); - if ($session{scratch}{$_[0]} ne "") { - WebGUI::SQL->write("update userSessionScratch set value=".quote($_[1])." - where sessionId=".quote($session{var}{sessionId})." and name=".quote($_[0])); + my ($name, $value) = @_; + return "" unless ($session{var}{sessionId} ne "" && $name ne "" && $value ne ""); + if ($value eq "-delete-") { + WebGUI::SQL->write("delete from userSessionScratch where sessionId=".quote($session{var}{sessionId}) + ." and name=".quote($name)); + $value = ""; + } elsif ($session{scratch}{$name} ne "") { + WebGUI::SQL->write("update userSessionScratch set value=".quote($value)." + where sessionId=".quote($session{var}{sessionId})." and name=".quote($name)); } else { WebGUI::SQL->write("insert into userSessionScratch (sessionId,name,value) values - (".quote($session{var}{sessionId}).", ".quote($_[0]).", ".quote($_[1]).")"); + (".quote($session{var}{sessionId}).", ".quote($name).", ".quote($value).")"); } - $session{scratch}{$_[0]} = $_[1]; + $session{scratch}{$name} = $value; } #-------------------------------------------------------------------