package WebGUI::Wobject::FAQ; #------------------------------------------------------------------- # 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::HTMLForm; use WebGUI::Icon; use WebGUI::International; use WebGUI::Privilege; use WebGUI::Session; use WebGUI::SQL; use WebGUI::URL; use WebGUI::Wobject; our @ISA = qw(WebGUI::Wobject); our $namespace = "FAQ"; our $name = WebGUI::International::get(2,$namespace); #------------------------------------------------------------------- sub duplicate { my ($w, %data, $newQuestionId, $sth); tie %data, 'Tie::CPHash'; $w = $_[0]->SUPER::duplicate($_[1]); $w = WebGUI::Wobject::FAQ->new({wobjectId=>$w,namespace=>$namespace}); $w->set({ topOn=>$_[0]->get("topOn"), tocOn=>$_[0]->get("tocOn"), qaOn=>$_[0]->get("qaOn") }); $sth = WebGUI::SQL->read("select * from FAQ_question where wobjectId=".$_[0]->get("wobjectId")); while (%data = $sth->hash) { $newQuestionId = getNextId("questionId"); WebGUI::SQL->write("insert into FAQ_question values (".$w->get("wobjectId").", $newQuestionId, " .quote($data{question}).", ".quote($data{answer}).", $data{sequenceNumber})"); } $sth->finish; } #------------------------------------------------------------------- sub purge { WebGUI::SQL->write("delete from FAQ_question where wobjectId=".$_[0]->get("wobjectId")); $_[0]->SUPER::purge(); } #------------------------------------------------------------------- sub set { $_[0]->SUPER::set($_[1],[qw(topOn tocOn qaOn)]); } #------------------------------------------------------------------- sub www_deleteQuestion { if (WebGUI::Privilege::canEditPage()) { return $_[0]->confirm(WebGUI::International::get(7,$namespace), WebGUI::URL::page('func=deleteQuestionConfirm&wid='.$_[0]->get("wobjectId").'&qid='.$session{form}{qid})); } else { return WebGUI::Privilege::insufficient(); } } #------------------------------------------------------------------- sub www_deleteQuestionConfirm { my ($output); if (WebGUI::Privilege::canEditPage()) { $_[0]->deleteCollateral("FAQ_question","questionId",$session{form}{qid}); $_[0]->reorderCollateral("FAQ_question","questionId"); return ""; } else { return WebGUI::Privilege::insufficient(); } } #------------------------------------------------------------------- sub www_edit { my ($f, $output, $proceed); if (WebGUI::Privilege::canEditPage()) { if ($_[0]->get("wobjectId") eq "new") { $proceed = 1; } $output = helpIcon(1,$namespace); $output .= '

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

'; $f = WebGUI::HTMLForm->new; $f->yesNo("tocOn",WebGUI::International::get(11,$namespace),$_[0]->get("tocOn")); $f->yesNo("qaOn",WebGUI::International::get(12,$namespace),$_[0]->get("qaOn")); $f->yesNo("topOn",WebGUI::International::get(13,$namespace),$_[0]->get("topOn")); $f->yesNo("proceed",WebGUI::International::get(1,$namespace),$proceed); $output .= $_[0]->SUPER::www_edit($f->printRowsOnly); return $output; } else { return WebGUI::Privilege::insufficient(); } } #------------------------------------------------------------------- sub www_editSave { if (WebGUI::Privilege::canEditPage()) { $_[0]->SUPER::www_editSave(); $_[0]->set({ tocOn=>$session{form}{tocOn}, topOn=>$session{form}{topOn}, qaOn=>$session{form}{qaOn} }); if ($session{form}{proceed}) { $_[0]->www_editQuestion(); } else { return ""; } } else { return WebGUI::Privilege::insufficient(); } } #------------------------------------------------------------------- sub www_editQuestion { my ($output, %question, $f); tie %question, 'Tie::CPHash'; if (WebGUI::Privilege::canEditPage()) { %question = WebGUI::SQL->quickHash("select * from FAQ_question where questionId='$session{form}{qid}'"); $output = helpIcon(2,$namespace); $output .= '

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

'; $f = WebGUI::HTMLForm->new; $f->hidden("wid",$_[0]->get("wobjectId")); $session{form}{qid} = "new" if ($session{form}{qid} eq ""); $f->hidden("qid",$session{form}{qid}); $f->hidden("func","editQuestionSave"); $f->textarea("question",WebGUI::International::get(5,$namespace),$question{question}); $f->HTMLArea("answer",WebGUI::International::get(6,$namespace),$question{answer}); $f->yesNo("proceed",WebGUI::International::get(1,$namespace)); $f->submit; $output .= $f->print; return $output; } else { return WebGUI::Privilege::insufficient(); } return $output; } #------------------------------------------------------------------- sub www_editQuestionSave { my ($seq); if (WebGUI::Privilege::canEditPage()) { $_[0]->setCollateral("FAQ_question", "questionId", { questionId => $session{form}{qid}, question => $session{form}{question}, answer => $session{form}{answer} }); if ($session{form}{proceed}) { $session{form}{qid} = "new"; return $_[0]->www_editQuestion(); } else { return ""; } } else { return WebGUI::Privilege::insufficient(); } } #------------------------------------------------------------------- sub www_moveQuestionDown { $_[0]->moveCollateralDown("FAQ_question","questionId",$session{form}{qid}); } #------------------------------------------------------------------- sub www_moveQuestionUp { $_[0]->moveCollateralUp("FAQ_question","questionId",$session{form}{qid}); } #------------------------------------------------------------------- sub www_view { my (%question, $top, $q, $a, $output, $sth, $qNa); tie %question,'Tie::CPHash'; $output = $_[0]->displayTitle; $output .= ''; $output .= $_[0]->description; $top = WebGUI::International::get(16,$namespace); $q = WebGUI::International::get(14,$namespace); $a = WebGUI::International::get(15,$namespace); if ($session{var}{adminOn}) { $output .= '' .WebGUI::International::get(9,$namespace).''; } $output .= ''.$qNa; return $_[0]->processMacros($output); } 1;