package WebGUI::Widget::Article; #------------------------------------------------------------------- # WebGUI is Copyright 2001 Plain Black Software. #------------------------------------------------------------------- # 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 WebGUI::Macro; use WebGUI::Privilege; use WebGUI::Session; use WebGUI::SQL; use WebGUI::Utility; use WebGUI::Widget; #------------------------------------------------------------------- sub purge { WebGUI::SQL->write("delete from Article where widgetId=$_[0]",$_[1]); purgeWidget($_[0],$_[1]); } #------------------------------------------------------------------- sub widgetName { return "Article"; } #------------------------------------------------------------------- sub www_add { my ($output); if (WebGUI::Privilege::canEditPage()) { $output = '

Add Article

'; $output .= WebGUI::Form::hidden("widget","Article"); $output .= WebGUI::Form::hidden("func","addSave"); $output .= ''; $output .= ''; $output .= ''; $output .= ''; $output .= ''; $output .= ''; $output .= ''; $output .= ''; $output .= ''; $output .= ''; $output .= ''; $output .= ''; $output .= ''; $output .= '
Title'.WebGUI::Form::text("title",20,30,'Article').'
Display the title?'.WebGUI::Form::checkbox("displayTitle",1).'
Process macros?'.WebGUI::Form::checkbox("processMacros",1,1).'
Start Date'.WebGUI::Form::text("startDate",20,30,'01/01/2000',1).'
End Date'.WebGUI::Form::text("endDate",20,30,'01/01/2100',1).'
Body'.WebGUI::Form::textArea("body",'',50,10,1).'
Image'.WebGUI::Form::file("image").'
Link Title'.WebGUI::Form::text("linkTitle",20,30).'
Link URL'.WebGUI::Form::text("linkURL",20,2048).'
Attachment'.WebGUI::Form::file("attachment").'
Convert Carriage Returns'.WebGUI::Form::checkbox("convertCarriageReturns",1).' (check if you\'re not adding <br> manually)
'.WebGUI::Form::submit("save").'
'; return $output; } else { return WebGUI::Privilege::insufficient(); } return $output; } #------------------------------------------------------------------- sub www_addSave { my ($widgetId, $displayTitle, $image, $attachment); if (WebGUI::Privilege::canEditPage()) { $widgetId = create(); $image = saveAttachment("image",$widgetId); $attachment = saveAttachment("attachment",$widgetId); WebGUI::SQL->write("insert into Article set widgetId=$widgetId, startDate='".humanToMysqlDate($session{form}{startDate})."', endDate='".humanToMysqlDate($session{form}{endDate})."', convertCarriageReturns='$session{form}{convertCarriageReturns}', body=".quote($session{form}{body}).", image=".quote($image).", linkTitle=".quote($session{form}{linkTitle}).", linkURL=".quote($session{form}{linkURL}).", attachment=".quote($attachment),$session{dbh}); return ""; } else { return WebGUI::Privilege::insufficient(); } } #------------------------------------------------------------------- sub www_deleteAttachment { if (WebGUI::Privilege::canEditPage()) { WebGUI::SQL->write("update Article set attachment='' where widgetId=$session{form}{wid}",$session{dbh}); return www_edit(); } else { return WebGUI::Privilege::insufficient(); } } #------------------------------------------------------------------- sub www_deleteImage { if (WebGUI::Privilege::canEditPage()) { WebGUI::SQL->write("update Article set image='' where widgetId=$session{form}{wid}",$session{dbh}); return www_edit(); } else { return WebGUI::Privilege::insufficient(); } } #------------------------------------------------------------------- sub www_edit { my ($output, %article); if (WebGUI::Privilege::canEditPage()) { %article = WebGUI::SQL->quickHash("select widget.title, widget.displayTitle, date_format(Article.startDate,'%m/%d/%Y') as start, date_format(Article.endDate,'%m/%d/%Y') as end, Article.body, Article.image, Article.linkTitle, Article.linkURL, Article.attachment, widget.processMacros, Article.convertCarriageReturns from widget left join Article on (widget.widgetId=Article.widgetId) where widget.widgetId=$session{form}{wid}",$session{dbh}); $output = '

Edit Article

'; $output .= WebGUI::Form::hidden("wid",$session{form}{wid}); $output .= WebGUI::Form::hidden("func","editSave"); $output .= ''; $output .= ''; $output .= ''; $output .= ''; $output .= ''; $output .= ''; $output .= ''; if ($article{image} ne "") { $output .= ''; } else { $output .= ''; } $output .= ''; $output .= ''; if ($article{attachment} ne "") { $output .= ''; } else { $output .= ''; } $output .= ''; $output .= ''; $output .= '
Title'.WebGUI::Form::text("title",20,30,$article{title}).'
Display the title?'.WebGUI::Form::checkbox("displayTitle","1",$article{displayTitle}).'
Process macros?'.WebGUI::Form::checkbox("processMacros","1",$article{processMacros}).'
Start Date'.WebGUI::Form::text("startDate",20,30,$article{start},1).'
End Date'.WebGUI::Form::text("endDate",20,30,$article{end},1).'
Body'.WebGUI::Form::textArea("body",$article{body},50,10,1).'
ImageDelete Image
Image'.WebGUI::Form::file("image").'
Link Title'.WebGUI::Form::text("linkTitle",20,30,$article{linkTitle}).'
Link URL'.WebGUI::Form::text("linkURL",20,2048,$article{linkURL}).'
AttachmentDelete Attachment
Attachment'.WebGUI::Form::file("attachment").'
Convert Carriage Returns'.WebGUI::Form::checkbox("convertCarriageReturns",1,$article{convertCarriageReturns}).' (check if you\'re not adding <br> manually)
'.WebGUI::Form::submit("save").'
'; return $output; } else { return WebGUI::Privilege::insufficient(); } } #------------------------------------------------------------------- sub www_editSave { my ($widgetId, $displayTitle, $image, $attachment); if (WebGUI::Privilege::canEditPage()) { update(); $image = saveAttachment("image",$session{form}{wid}); if ($image ne "") { $image = ', image='.quote($image); } $attachment = saveAttachment("attachment",$session{form}{wid}); if ($attachment ne "") { $attachment = ', attachment='.quote($attachment); } WebGUI::SQL->write("update Article set startDate='".humanToMysqlDate($session{form}{startDate})."', endDate='".humanToMysqlDate($session{form}{endDate})."', convertCarriageReturns='$session{form}{convertCarriageReturns}', body=".quote($session{form}{body}).", linkTitle=".quote($session{form}{linkTitle}).", linkURL=".quote($session{form}{linkURL}).$attachment.$image." where widgetId=$session{form}{wid}",$session{dbh}); return ""; } else { return WebGUI::Privilege::insufficient(); } } #------------------------------------------------------------------- sub www_view { my (%data, @test, $output, $widgetId); $widgetId = shift; %data = WebGUI::SQL->quickHash("select widget.title, widget.displayTitle, widget.processMacros, Article.body, Article.image, Article.linkTitle, Article.linkURL, Article.attachment, Article.convertCarriageReturns from widget,Article where widget.widgetId='$widgetId' and widget.WidgetId=Article.widgetId and Article.startDatenow()",$session{dbh}); if (defined %data) { if ($data{displayTitle} == 1) { $output = "

".$data{title}."

"; } if ($data{image} ne "") { $output .= ''; } if ($data{convertCarriageReturns}) { $data{body} =~ s/\n/\/g; } $output .= $data{body}; if ($data{linkURL} ne "" && $data{linkTitle} ne "") { $output .= '

'.$data{linkTitle}.''; } if ($data{attachment} ne "") { $output .= '

Download Attachment'; } } if ($data{processMacros} == 1) { $output = WebGUI::Macro::process($output); } return $output; } 1;