From 67d6329c22f15802617c444664849c338164fee9 Mon Sep 17 00:00:00 2001 From: JT Smith Date: Mon, 30 Sep 2002 01:58:29 +0000 Subject: [PATCH] Made a central attachment management system for wobjects that attach files directly to their property lists. --- docs/upgrades/upgrade_4.6.9-4.7.0.sql | 2 +- lib/WebGUI/Wobject.pm | 75 ++++++++++++++++++++++++++- lib/WebGUI/Wobject/Article.pm | 34 +----------- lib/WebGUI/Wobject/Item.pm | 17 +----- lib/WebGUI/Wobject/Product.pm | 47 +++-------------- 5 files changed, 84 insertions(+), 91 deletions(-) diff --git a/docs/upgrades/upgrade_4.6.9-4.7.0.sql b/docs/upgrades/upgrade_4.6.9-4.7.0.sql index 83e1f6eef..2272953b6 100644 --- a/docs/upgrades/upgrade_4.6.9-4.7.0.sql +++ b/docs/upgrades/upgrade_4.6.9-4.7.0.sql @@ -1,5 +1,5 @@ insert into webguiVersion values ('4.7.0','upgrade',unix_timestamp()); - +update international set internationalId=728, namespace='WebGUI' where internationalId=12 and namespace='Product'; diff --git a/lib/WebGUI/Wobject.pm b/lib/WebGUI/Wobject.pm index 6d4776165..2f74f4998 100644 --- a/lib/WebGUI/Wobject.pm +++ b/lib/WebGUI/Wobject.pm @@ -245,6 +245,41 @@ sub duplicate { #------------------------------------------------------------------- +=head2 fileProperty ( name, labelId ) + + Returns a file property form row which can be used in any Wobject + properties page. + + NOTE: This method is meant for use with www_deleteFile. + +=item name + + The name of the property that stores the filename. + +=item labelId + + The internationalId of the form label for this file. + +=cut + +sub fileProperty { + my ($self, $f, $labelId, $name); + $self = shift; + $name = shift; + $labelId = shift; + $f = WebGUI::HTMLForm->new; + if ($self->get($name) ne "") { + $f->readOnly(''. + WebGUI::International::get(391).'', + WebGUI::International::get($labelId,$self->get("namespace"))); + } else { + $f->file($name,WebGUI::International::get($labelId,$self->get("namespace"))); + } + return $f->printRowsOnly; +} + +#------------------------------------------------------------------- + =head2 get ( [ propertyName ] ) Returns a hash reference containing all of the properties of this @@ -720,6 +755,39 @@ sub www_deleteConfirm { #------------------------------------------------------------------- +=head2 www_deleteFile ( ) + + Displays a confirmation message relating to the deletion of a file. + +=cut + +sub www_deleteFile { + $_[0]->confirm( + WebGUI::International::get(728), + WebGUI::URL::page('func=deleteFileConfirm&wid='.$_[0]->get("wobjectId").'&file='.$session{form}{file}), + WebGUI::URL::page('func=edit&wid='.$_[0]->get("wobjectId")) + ); +} + +#------------------------------------------------------------------- + +=head2 www_deleteFileConfirm ( ) + + Deletes a file from this instance. + +=cut + +sub www_deleteFileConfirm { + if (WebGUI::Privilege::canEditPage()) { + $_[0]->set({$session{form}{file}=>''}); + return $_[0]->www_edit(); + } else { + return WebGUI::Privilege::insufficient(); + } +} + +#------------------------------------------------------------------- + =head2 www_deleteMessage ( ) Displays a message asking for confirmation to delete a message from @@ -1019,10 +1087,15 @@ sub www_search { #------------------------------------------------------------------- -=head2 www_showMessage ( ) +=head2 www_showMessage ( [menuItem] ) Shows a message from a discussion. +=item menuItem + + You can optionally extend this method by passing in an HTML string + of menu items to be added to the menu of this display. + =cut sub www_showMessage { diff --git a/lib/WebGUI/Wobject/Article.pm b/lib/WebGUI/Wobject/Article.pm index cb09bcb92..7558e18f7 100644 --- a/lib/WebGUI/Wobject/Article.pm +++ b/lib/WebGUI/Wobject/Article.pm @@ -54,26 +54,6 @@ sub set { $_[0]->SUPER::set($_[1],[qw(image linkTitle linkURL attachment convertCarriageReturns alignImage allowDiscussion)]); } -#------------------------------------------------------------------- -sub www_deleteAttachment { - if (WebGUI::Privilege::canEditPage()) { - $_[0]->set({attachment=>''}); - return $_[0]->www_edit(); - } else { - return WebGUI::Privilege::insufficient(); - } -} - -#------------------------------------------------------------------- -sub www_deleteImage { - if (WebGUI::Privilege::canEditPage()) { - $_[0]->set({image=>''}); - return $_[0]->www_edit(); - } else { - return WebGUI::Privilege::insufficient(); - } -} - #------------------------------------------------------------------- sub www_edit { my ($output, $editTimeout, $groupToModerate, %hash, $f); @@ -88,24 +68,14 @@ sub www_edit { $output = helpIcon(1,$namespace); $output .= '

'.WebGUI::International::get(12,$namespace).'

'; $f = WebGUI::HTMLForm->new; - if ($_[0]->get("image") ne "") { - $f->readOnly(''. - WebGUI::International::get(391).'',WebGUI::International::get(6,$namespace)); - } else { - $f->file("image",WebGUI::International::get(6,$namespace)); - } + $f->raw($_[0]->fileProperty("image",6)); %hash = ( right => WebGUI::International::get(15,$namespace), left => WebGUI::International::get(16,$namespace), center => WebGUI::International::get(17,$namespace) ); $f->select("alignImage",\%hash,WebGUI::International::get(14,$namespace),[$_[0]->get("alignImage")]); - if ($_[0]->get("attachment") ne "") { - $f->readOnly(''. - WebGUI::International::get(391).'',WebGUI::International::get(9,$namespace)); - } else { - $f->file("attachment",WebGUI::International::get(9,$namespace)); - } + $f->raw($_[0]->fileProperty("attachment",9)); $f->text("linkTitle",WebGUI::International::get(7,$namespace),$_[0]->get("linkTitle")); $f->url("linkURL",WebGUI::International::get(8,$namespace),$_[0]->get("linkURL")); $f->yesNo("convertCarriageReturns",WebGUI::International::get(10,$namespace),$_[0]->get("convertCarriageReturns") diff --git a/lib/WebGUI/Wobject/Item.pm b/lib/WebGUI/Wobject/Item.pm index e2e12a926..14bc14752 100644 --- a/lib/WebGUI/Wobject/Item.pm +++ b/lib/WebGUI/Wobject/Item.pm @@ -45,16 +45,6 @@ sub set { $_[0]->SUPER::set($_[1],[qw(linkURL attachment)]); } -#------------------------------------------------------------------- -sub www_deleteAttachment { - if (WebGUI::Privilege::canEditPage()) { - $_[0]->set({attachment=>''}); - return $_[0]->www_edit(); - } else { - return WebGUI::Privilege::insufficient(); - } -} - #------------------------------------------------------------------- sub www_edit { my ($output, $f); @@ -63,12 +53,7 @@ sub www_edit { $output .= '

'.WebGUI::International::get(6,$namespace).'

'; $f = WebGUI::HTMLForm->new; $f->url("linkURL",WebGUI::International::get(1,$_[0]->get("namespace")),$_[0]->get("linkURL")); - if ($_[0]->get("attachment") eq "") { - $f->file("attachment",WebGUI::International::get(2,$_[0]->get("namespace"))) - } else { - $f->readOnly('' - .WebGUI::International::get(3,$namespace).'',WebGUI::International::get(2,$_[0]->get("namespace"))) - } + $f->raw($_[0]->fileProperty("attachment",2)); $output .= $_[0]->SUPER::www_edit($f->printRowsOnly); return $output; } else { diff --git a/lib/WebGUI/Wobject/Product.pm b/lib/WebGUI/Wobject/Product.pm index 8b80eb76a..c7f971b5a 100644 --- a/lib/WebGUI/Wobject/Product.pm +++ b/lib/WebGUI/Wobject/Product.pm @@ -27,22 +27,6 @@ our $namespace = "Product"; our $name = WebGUI::International::get(1,$namespace); -#------------------------------------------------------------------- -sub _fileProperty { - my ($filename, $f, $labelId, $name); - $name = shift; - $labelId = shift; - $filename = shift; - $f = WebGUI::HTMLForm->new; - if ($filename ne "") { - $f->readOnly(''. - WebGUI::International::get(391).'',WebGUI::International::get($labelId,$namespace)); - } else { - $f->file($name,WebGUI::International::get($labelId,$namespace)); - } - return $f->printRowsOnly; -} - #------------------------------------------------------------------- sub _reorderAccessories { my ($sth, $i, $id); @@ -344,25 +328,6 @@ sub www_deleteFeatureConfirm { } } -#------------------------------------------------------------------- -sub www_deleteFile { - $_[0]->confirm( - WebGUI::International::get(12,$namespace), - WebGUI::URL::page('func=deleteFileConfirm&wid='.$_[0]->get("wobjectId").'&file='.$session{form}{file}), - WebGUI::URL::page('func=edit&wid='.$_[0]->get("wobjectId")) - ); -} - -#------------------------------------------------------------------- -sub www_deleteFileConfirm { - if (WebGUI::Privilege::canEditPage()) { - $_[0]->set({$session{form}{file}=>''}); - return $_[0]->www_edit(); - } else { - return WebGUI::Privilege::insufficient(); - } -} - #------------------------------------------------------------------- sub www_deleteRelated { $_[0]->confirm( @@ -437,12 +402,12 @@ sub www_edit { $f = WebGUI::HTMLForm->new; $f->text("price",WebGUI::International::get(10,$namespace),$_[0]->get("price")); $f->text("productNumber",WebGUI::International::get(11,$namespace),$_[0]->get("productNumber")); - $f->raw(_fileProperty("image1",7,$_[0]->get("image1"))); - $f->raw(_fileProperty("image2",8,$_[0]->get("image2"))); - $f->raw(_fileProperty("image3",9,$_[0]->get("image3"))); - $f->raw(_fileProperty("brochure",13,$_[0]->get("brochure"))); - $f->raw(_fileProperty("manual",14,$_[0]->get("manual"))); - $f->raw(_fileProperty("warranty",15,$_[0]->get("warranty"))); + $f->raw($_[0]->fileProperty("image1",7)); + $f->raw($_[0]->fileProperty("image2",8)); + $f->raw($_[0]->fileProperty("image3",9)); + $f->raw($_[0]->fileProperty("brochure",13)); + $f->raw($_[0]->fileProperty("manual",14)); + $f->raw($_[0]->fileProperty("warranty",15)); $templates = WebGUI::SQL->buildHashRef("select productTemplateId,name from Product_template order by name"); $f->select("productTemplateId",$templates,WebGUI::International::get(61,$namespace),[$template]); $output .= $_[0]->SUPER::www_edit($f->printRowsOnly);