// Send notifications if (isset($_POST['notifypub']) && $_POST['notifypub'] == 1) { include_once XOOPS_ROOT_PATH . '/include/notification_constants.php'; $notification_handler->subscribe('faq', $newAnswerObj->answerid(), 'answer_approved', XOOPS_NOTIFICATION_MODE_SENDONCETHENDELETE); } $faqObj->sendNotifications(array(_SF_NOT_NEW_ANSWER_PROPOSED)); break; } redirect_header("javascript:history.go(-2)", 3, $redirect_msg); exit; break; case 'form': default: global $xoopsUser, $xoopsModule, $HTTP_SERVER_VARS; // Creating the FAQ object for the selected FAQ $faqObj = new sfFaq($faqid); // If the selected FAQ was not found, exit if ($faqObj->notLoaded()) { redirect_header("javascript:history.go(-1)", 1, _MD_SF_NOFAQSELECTED); exit; } // Creating the category object that holds the selected FAQ $categoryObj =& $faqObj->category(); // Creating the answer object $answerObj =& $faqObj->answer(); // Check user permissions to access that category of the selected FAQ if (faqAccessGranted($faqObj) < 0) { redirect_header("javascript:history.go(-1)", 1, _NOPERM); exit; } $xoopsOption['template_main'] = 'smartfaq_submit.html';
function editfaq($showmenu = false, $faqid = -1) { global $faq_handler, $category_handler, $xoopsUser, $xoopsUser, $xoopsConfig, $xoopsDB, $modify, $xoopsModuleConfig, $xoopsModule, $XOOPS_URL, $myts; include_once XOOPS_ROOT_PATH . '/class/xoopsformloader.php'; // If there is a parameter, and the id exists, retrieve data: we're editing a faq if ($faqid != -1) { // Creating the FAQ object $faqObj = new sfFaq($faqid); if ($faqObj->notLoaded()) { redirect_header("faq.php", 1, _AM_SF_NOARTTOEDIT); exit; } switch ($faqObj->status()) { case _SF_STATUS_ASKED: $breadcrumb_action = _AM_SF_APPROVING; $collapsableBar_title = _AM_SF_QUESTION_APPROVING; $collapsableBar_info = _AM_SF_QUESTION_APPROVING_INFO; $button_caption = _AM_SF_QUEUE; break; case "default": default: $breadcrumb_action = _AM_SF_EDITING; $collapsableBar_title = _AM_SF_EDITQUES; $collapsableBar_info = _AM_SF_EDITING_INFO; $button_caption = _AM_SF_MODIFY; break; } // Creating the category of this FAQ $categoryObj =& $category_handler->get($faqObj->categoryid()); if ($showmenu) { sf_adminMenu(3, _AM_SF_OPEN_QUESTIONS . " > " . $breadcrumb_action); } echo "<br />\n"; sf_collapsableBar('bottomtable', 'bottomtableicon'); echo "<img id='bottomtableicon' src=" . XOOPS_URL . "/modules/" . $xoopsModule->dirname() . "/images/icon/close12.gif alt='' /></a> " . $collapsableBar_title . "</h3>"; echo "<div id='bottomtable'>"; echo "<span style=\"color: #567; margin: 3px 0 12px 0; font-size: small; display: block; \">" . $collapsableBar_info . "</span>"; } else { // there's no parameter, so we're adding a faq $faqObj =& $faq_handler->create(); $faqObj->setVar('uid', $xoopsUser->getVar('uid')); $categoryObj =& $category_handler->create(); $breadcrumb_action = _AM_SF_CREATINGNEW; $button_caption = _AM_SF_CREATE; if ($showmenu) { sf_adminMenu(3, _AM_SF_OPEN_QUESTIONS . " > " . $breadcrumb_action); } sf_collapsableBar('bottomtable', 'bottomtableicon'); echo "<img id='bottomtableicon' src=" . XOOPS_URL . "/modules/" . $xoopsModule->dirname() . "/images/icon/close12.gif alt='' /></a> " . _AM_SF_CREATEQUESTION . "</h3>"; echo "<div id='bottomtable'>"; } $sform = new XoopsThemeForm(_AM_SF_OPEN_QUESTION, "op", xoops_getenv('PHP_SELF')); $sform->setExtra('enctype="multipart/form-data"'); // faq requester $sform->addElement(new XoopsFormLabel(_AM_SF_REQUESTED_BY, sf_getLinkedUnameFromId($faqObj->uid(), $xoopsModuleConfig['userealname']))); // CATEGORY /* * Get information for pulldown menu using XoopsTree. * First var is the database table * Second var is the unique field ID for the categories * Last one is not set as we do not have sub menus in Smartfaq */ $mytree = new XoopsTree($xoopsDB->prefix("smartfaq_categories"), "categoryid", "parentid"); ob_start(); $mytree->makeMySelBox("name", "weight", $categoryObj->categoryid()); $sform->addElement(new XoopsFormLabel(_AM_SF_CATEGORY_QUESTION, ob_get_contents())); ob_end_clean(); // faq QUESTION $sform->addElement(new XoopsFormTextArea(_AM_SF_QUESTION, 'question', $faqObj->question(), 7, 60)); // PER ITEM PERMISSIONS $member_handler =& xoops_gethandler('member'); $group_list =& $member_handler->getGroupList(); $groups_checkbox = new XoopsFormCheckBox(_AM_SF_PERMISSIONS_QUESTION, 'groups[]', $faqObj->getGroups_read()); foreach ($group_list as $group_id => $group_name) { if ($group_id != XOOPS_GROUP_ADMIN) { $groups_checkbox->addOption($group_id, $group_name); } } $sform->addElement($groups_checkbox); // faq ID $sform->addElement(new XoopsFormHidden('faqid', $faqObj->faqid())); $button_tray = new XoopsFormElementTray('', ''); $hidden = new XoopsFormHidden('op', 'addfaq'); $button_tray->addElement($hidden); $sform->addElement(new XoopsFormHidden('status', $faqObj->status())); // Setting the FAQ Status /* $status_select = new XoopsFormSelect('', 'status', $status); $status_select->addOptionArray(sf_getStatusArray()); $status_tray = new XoopsFormElementTray(_AM_SF_STATUS_EXP , ' '); $status_tray->addElement($status_select); $sform->addElement($status_tray); */ if ($faqid == -1) { // there's no faqid? Then it's a new faq // $button_tray -> addElement( new XoopsFormButton( '', 'mod', _AM_SF_CREATE, 'submit' ) ); $butt_create = new XoopsFormButton('', '', _AM_SF_CREATE, 'submit'); $butt_create->setExtra('onclick="this.form.elements.op.value=\'addfaq\'"'); $button_tray->addElement($butt_create); $butt_clear = new XoopsFormButton('', '', _AM_SF_CLEAR, 'reset'); $button_tray->addElement($butt_clear); $butt_cancel = new XoopsFormButton('', '', _AM_SF_CANCEL, 'button'); $butt_cancel->setExtra('onclick="history.go(-1)"'); $button_tray->addElement($butt_cancel); } else { // else, we're editing an existing faq // $button_tray -> addElement( new XoopsFormButton( '', 'mod', _AM_SF_MODIFY, 'submit' ) ); $butt_create = new XoopsFormButton('', '', $button_caption, 'submit'); $butt_create->setExtra('onclick="this.form.elements.op.value=\'addfaq\'"'); $button_tray->addElement($butt_create); $butt_edit = new XoopsFormButton('', '', _AM_SF_OPEN_QUESTION_EDIT, 'button'); $butt_edit->setExtra("onclick=\"location='faq.php?op=mod&faqid=" . $faqid . "'\""); $button_tray->addElement($butt_edit); $butt_cancel = new XoopsFormButton('', '', _AM_SF_CANCEL, 'button'); $butt_cancel->setExtra('onclick="history.go(-1)"'); $button_tray->addElement($butt_cancel); } $sform->addElement($button_tray); $sform->display(); echo "</div>"; unset($hidden); }
/** * $Id: faq.php,v 1.31 2006/09/29 18:49:10 malanciault Exp $ * Module: SmartFAQ * Author: The SmartFactory <www.smartfactory.ca> * Licence: GNU */ include_once "header.php"; $faqid = isset($_GET['faqid']) ? intval($_GET['faqid']) : 0; if ($faqid == 0) { redirect_header("javascript:history.go(-1)", 1, _MD_SF_NOFAQSELECTED); exit; } // Creating the FAQ handler object $faq_handler =& sf_gethandler('faq'); // Creating the FAQ object for the selected FAQ $faqObj = new sfFaq($faqid); // If the selected FAQ was not found, exit if ($faqObj->notLoaded()) { redirect_header("javascript:history.go(-1)", 1, _MD_SF_NOFAQSELECTED); exit; } // Creating the category object that holds the selected FAQ $categoryObj = $faqObj->category(); // Creating the answer object $answerObj = $faqObj->answer(); // Check user permissions to access that category of the selected FAQ $faqAccessGrantedResult = faqAccessGranted($faqObj); if ($faqAccessGrantedResult < 0) { redirect_header("javascript:history.go(-1)", 1, _NOPERM); exit; }
function editfaq($faqid = '') { global $answer_handler, $xoopsUser, $xoopsUser, $xoopsConfig, $xoopsDB, $modify, $xoopsModuleConfig, $xoopsModule, $XOOPS_URL, $myts; include_once XOOPS_ROOT_PATH . '/class/xoopsformloader.php'; // Creating the FAQ object $faqObj = new sfFaq($faqid); // Creating the category object $categoryObj =& $faqObj->category(); if ($faqObj->notLoaded()) { redirect_header("index.php", 1, _AM_SF_NOFAQSELECTED); exit; } switch ($faqObj->status()) { case _SF_STATUS_ANSWERED: $breadcrumb_action1 = _AM_SF_SUBMITTED; $breadcrumb_action2 = _AM_SF_APPROVING; $collapsableBar_title = _AM_SF_SUBMITTED_TITLE; $collapsableBar_info = _AM_SF_SUBMITTED_INFO; $button_caption = _AM_SF_APPROVE; $an_status = _SF_AN_STATUS_PROPOSED; break; } $module_id = $xoopsModule->getVar('mid'); $gperm_handler =& xoops_gethandler('groupperm'); $groups = $xoopsUser ? $xoopsUser->getGroups() : XOOPS_GROUP_ANONYMOUS; if (!sf_userIsAdmin() && !$gperm_handler->checkRight('category_admin', $faqObj->categoryid(), $groups, $module_id)) { redirect_header("javascript:history.go(-1)", 1, _NOPERM); exit; } // Retreiving the official answer $official_answer = $faqObj->answer(); sf_adminMenu(-1, _AM_SF_SMARTFAQ . " > " . _AM_SF_ANSWER); sf_collapsableBar('bottomtable', 'bottomtableicon'); echo "<img id='bottomtableicon' src=" . XOOPS_URL . "/modules/" . $xoopsModule->dirname() . "/images/icon/close12.gif alt='' /></a> " . _AM_SF_SUBMITTED_ANSWER . "</h3>"; echo "<div id='bottomtable'>"; echo "<span style=\"color: #567; margin: 3px 0 12px 0; font-size: small; display: block; \">" . _AM_SF_SUBMITTED_ANSWER_INFO . "</span>"; $proposed_answers = $answer_handler->getAllAnswers($faqid, _SF_AN_STATUS_PROPOSED); if (count($proposed_answers) == 0) { redirect_header("index.php", 1, _AM_SF_NOANSWERS); exit; } echo "<table width='100%' cellspacing=1 cellpadding=3 border=0 class = outer>\r\n\t <tr>\r\n\t <td class='head' width='100px'>" . _AM_SF_CATEGORY . "</td>\r\n\t <td class='even'>" . $categoryObj->name() . "</td>\r\n\t </tr>\r\n\t <tr>\r\n\t <td class='head' width='100px'>" . _AM_SF_QUESTION . "</td>\r\n\t <td class='even'>" . $faqObj->question() . "</td>\r\n\t </tr>"; if ($official_answer) { echo "\r\n\t <tr>\r\n\t <td class='head' width='100px'>" . _AM_SF_ANSWER_OFFICIAL . "</td>\r\n\t <td class='even'>" . $official_answer->answer() . "</td>\r\n\t </tr>"; } echo "</table><br />\n"; echo "<table width='100%' cellspacing=1 cellpadding=3 border=0 class = outer>"; echo "<tr>"; echo "<td width='40' class='bg3' align='center'><b>" . _AM_SF_ARTID . "</b></td>"; echo "<td class='bg3' class='bg3' align='center'><b>" . _AM_SF_ANSWER . "</b></td>"; echo "<td width='180' class='bg3' align='center'><b>" . _AM_SF_CREATED . "</b></td>"; echo "<td width='120' class='bg3' align='center'><b>" . _AM_SF_ACTION . "</b></td>"; echo "</tr>"; $merge = ''; $modify = ''; $approve = ''; foreach ($proposed_answers as $proposed_answer) { if ($faqObj->status() == _SF_STATUS_NEW_ANSWER) { $merge = "<a href='faq.php?op=merge&faqid=" . $faqObj->faqid() . "&answerid=" . $proposed_answer->answerid() . "'><img src='" . XOOPS_URL . "/modules/" . $xoopsModule->dirname() . "/images/icon/merge.gif' title='" . _AM_SF_FAQ_MERGE . "' alt='" . _AM_SF_FAQ_MERGE . "' /></a> "; $approve = "<a href='answer.php?op=selectanswer&faqid=" . $faqid . "&answerid=" . $proposed_answer->answerid() . "'><img src='" . XOOPS_URL . "/modules/" . $xoopsModule->dirname() . "/images/icon/approve.gif' title='" . _AM_SF_FAQ_APPROVE_NEW_ANSWER . "' alt='" . _AM_SF_APPROVESUB . "' /></a>"; } $modify = "<a href='faq.php?op=mod&faqid=" . $faqObj->faqid() . "&answerid=" . $proposed_answer->answerid() . "'><img src='" . XOOPS_URL . "/modules/" . $xoopsModule->dirname() . "/images/icon/edit.gif' title='" . _AM_SF_FAQ_REVIEW . "' alt='" . _AM_SF_FAQ_REVIEW . "' /></a> "; $delete = "<a href='answer.php?op=del&faqid=" . $faqObj->faqid() . "&answerid=" . $proposed_answer->answerid() . "'><img src='" . XOOPS_URL . "/modules/" . $xoopsModule->dirname() . "/images/icon/delete.gif' title='" . _AM_SF_DELETESUBM . "' alt='" . _AM_SF_DELETESUBM . "' /></a>"; echo "<tr>"; echo "<td class='head' align='center'>" . $proposed_answer->answerid() . "</td>"; echo "<td class='even' align='left'>" . $proposed_answer->answer() . "</td>"; echo "<td class='even' align='center'>" . $proposed_answer->datesub() . "</td>"; echo "<td class='even' align='center'> {$merge} {$modify} {$approve} {$delete} </td>"; echo "</tr>"; } echo "</table>\n<br />"; }
function sendNotifications($notifications = array()) { $smartModule =& sf_getModuleInfo(); $myts =& MyTextSanitizer::getInstance(); $notification_handler =& xoops_gethandler('notification'); $faqObj = new sfFaq($this->faqid()); $tags = array(); $tags['MODULE_NAME'] = $myts->displayTarea($smartModule->getVar('name')); $tags['FAQ_NAME'] = $faqObj->question(); $tags['FAQ_URL'] = XOOPS_URL . '/modules/' . $smartModule->getVar('dirname') . '/faq.php?faqid=' . $faqObj->faqid(); $tags['CATEGORY_NAME'] = $faqObj->getCategoryName(); $tags['CATEGORY_URL'] = XOOPS_URL . '/modules/' . $smartModule->getVar('dirname') . '/category.php?categoryid=' . $faqObj->categoryid(); $tags['FAQ_QUESTION'] = $faqObj->question(); // TODO : Not sure about the 'formpreview' ... $tags['FAQ_ANSWER'] = $this->answer('formpreview'); $tags['DATESUB'] = $this->datesub(); foreach ($notifications as $notification) { switch ($notification) { case _SF_NOT_ANSWER_APPROVED: // This notification is not working for PM, but is for email... and I don't understand why??? $notification_handler->triggerEvent('faq', $this->answerid(), 'answer_approved', $tags); break; case -1: default: break; } } }
function getFaqsFromSearch($queryarray = array(), $andor = 'AND', $limit = 0, $offset = 0, $userid = 0) { global $xoopsUser; $ret = array(); $userIsAdmin = sf_userIsAdmin(); if ($userid != 0) { $criteriaUser = new CriteriaCompo(); $criteriaUser->add(new Criteria('faq.uid', $userid), 'OR'); $criteriaUser->add(new Criteria('answer.uid', $userid), 'OR'); } if ($queryarray) { $criteriaKeywords = new CriteriaCompo(); for ($i = 0; $i < count($queryarray); $i++) { $criteriaKeyword = new CriteriaCompo(); $criteriaKeyword->add(new Criteria('faq.question', '%' . $queryarray[$i] . '%', 'LIKE'), 'OR'); $criteriaKeyword->add(new Criteria('answer.answer', '%' . $queryarray[$i] . '%', 'LIKE'), 'OR'); $criteriaKeywords->add($criteriaKeyword, $andor); unset($criteriaKeyword); } } // Categories for which user has access if (!$userIsAdmin) { $smartPermHandler =& xoops_getmodulehandler('permission', 'smartfaq'); $categoriesGranted = $smartPermHandler->getPermissions('category'); $faqsGranted = $smartPermHandler->getPermissions('item'); if (!$categoriesGranted) { return $ret; } if (!$faqsGranted) { return $ret; } $grantedCategories = new Criteria('faq.categoryid', "(" . implode(',', $categoriesGranted) . ")", 'IN'); $grantedFaq = new CriteriaCompo(); $grantedFaq->add(new Criteria('faq.faqid', "(" . implode(',', $faqsGranted) . ")", 'IN'), 'OR'); // If user is anonymous, check if the FAQ allow partialview if (!is_object($xoopsUser)) { $grantedFaq->add(new Criteria('partialview', '1'), 'OR'); } } $criteriaPermissions = new CriteriaCompo(); if (!$userIsAdmin) { $criteriaPermissions->add($grantedCategories, 'AND'); $criteriaPermissions->add($grantedFaq, 'AND'); } $criteriaAnswersStatus = new CriteriaCompo(); $criteriaAnswersStatus->add(new Criteria('answer.status', _SF_AN_STATUS_APPROVED)); $criteriaFasStatus = new CriteriaCompo(); $criteriaFasStatus->add(new Criteria('faq.status', _SF_STATUS_OPENED), 'OR'); $criteriaFasStatus->add(new Criteria('faq.status', _SF_STATUS_PUBLISHED), 'OR'); $criteria = new CriteriaCompo(); if (!empty($criteriaUser)) { $criteria->add($criteriaUser, 'AND'); } if (!empty($criteriaKeywords)) { $criteria->add($criteriaKeywords, 'AND'); } if (!empty($criteriaPermissions) && !$userIsAdmin) { $criteria->add($criteriaPermissions); } if (!empty($criteriaAnswersStatus)) { $criteria->add($criteriaAnswersStatus, 'AND'); } if (!empty($criteriaFasStatus)) { $criteria->add($criteriaFasStatus, 'AND'); } $criteria->setLimit($limit); $criteria->setStart($offset); $criteria->setSort('faq.datesub'); $criteria->setOrder('DESC'); $sql = 'SELECT faq.faqid, faq.question, faq.datesub, faq.uid FROM ' . $this->db->prefix('smartfaq_faq') . ' as faq INNER JOIN ' . $this->db->prefix('smartfaq_answers') . ' as answer ON faq.faqid = answer.faqid'; if (isset($criteria) && is_subclass_of($criteria, 'criteriaelement')) { $whereClause = $criteria->renderWhere(); if ($whereClause != 'WHERE ()') { $sql .= ' ' . $criteria->renderWhere(); if ($criteria->getSort() != '') { $sql .= ' ORDER BY ' . $criteria->getSort() . ' ' . $criteria->getOrder(); } $limit = $criteria->getLimit(); $start = $criteria->getStart(); } } //echo "<br />" . $sql . "<br />"; $result = $this->db->query($sql, $limit, $start); if (!$result) { trigger_error("Query did not work in smartfaq", E_USER_WARNING); return $ret; } if (count($result) == 0) { return $ret; } while ($myrow = $this->db->fetchArray($result)) { $faq = new sfFaq(); $faq->assignVars($myrow); $ret[] =& $faq; unset($faq); } return $ret; }
function editfaq($showmenu = false, $faqid = -1, $answerid = -1, $merge = false) { global $answer_handler, $faq_handler, $category_handler, $xoopsUser, $xoopsUser, $xoopsConfig, $xoopsDB, $modify, $xoopsModuleConfig, $xoopsModule, $XOOPS_URL, $myts; include_once XOOPS_ROOT_PATH . '/class/xoopsformloader.php'; // If there is a parameter, and the id exists, retrieve data: we're editing a faq if ($faqid != -1) { // Creating the FAQ object $faqObj = new sfFaq($faqid); if ($faqObj->notLoaded()) { redirect_header("faq.php", 1, _AM_SF_NOFAQSELECTED); exit; } if ($answerid == -1) { // Creating the object for the official answer $answerObj =& $faqObj->answer(); if (!$answerObj) { $answerObj = $answer_handler->create(); } } else { $answerObj = new sfAnswer($answerid); $originalAnswerObj =& $faqObj->answer(); } switch ($faqObj->status()) { case _SF_STATUS_ASKED: $breadcrumb_action1 = _AM_SF_ASKED; $breadcrumb_action2 = _AM_SF_APPROVING; $collapsableBar_title = _AM_SF_ASKED_TITLE; $collapsableBar_info = _AM_SF_ASKED_TITLE_INFO; $button_caption = _AM_SF_PUBLISHED; $an_status = _SF_AN_STATUS_APPROVED; $answerObj->setVar('uid', $xoopsUser->getVar('uid')); break; case _SF_STATUS_ANSWERED: $breadcrumb_action1 = _AM_SF_ANSWERED; $breadcrumb_action2 = _AM_SF_APPROVING; $collapsableBar_title = _AM_SF_ANSWERED_TITLE; $collapsableBar_info = _AM_SF_ANSWERED_TITLE_INFO; $button_caption = _AM_SF_APPROVE; $an_status = _SF_AN_STATUS_PROPOSED; break; case _SF_STATUS_SUBMITTED: $breadcrumb_action1 = _AM_SF_SUBMITTED; $breadcrumb_action2 = _AM_SF_APPROVING; $collapsableBar_title = _AM_SF_SUBMITTED_TITLE; $collapsableBar_info = _AM_SF_SUBMITTED_INFO; $button_caption = _AM_SF_APPROVE; $an_status = _SF_AN_STATUS_PROPOSED; break; case _SF_STATUS_PUBLISHED: $breadcrumb_action1 = _AM_SF_PUBLISHED; $breadcrumb_action2 = _AM_SF_EDITING; $collapsableBar_title = _AM_SF_PUBLISHEDEDITING; $collapsableBar_info = _AM_SF_PUBLISHEDEDITING_INFO; $button_caption = _AM_SF_MODIFY; $an_status = _SF_AN_STATUS_APPROVED; break; case _SF_STATUS_OFFLINE: $breadcrumb_action1 = _AM_SF_OFFLINE; $breadcrumb_action2 = _AM_SF_EDITING; $collapsableBar_title = _AM_SF_OFFLINEEDITING; $collapsableBar_info = _AM_SF_OFFLINEEDITING_INFO; $button_caption = _AM_SF_MODIFY; $an_status = _SF_AN_STATUS_APPROVED; break; case _SF_STATUS_OPENED: $breadcrumb_action1 = _AM_SF_OPEN_QUESTIONS; $breadcrumb_action2 = _AM_SF_ANSWERING; $collapsableBar_title = _AM_SF_OPEN_QUESTION_ANSWERING; $collapsableBar_info = _AM_SF_OPEN_QUESTION_ANSWERING_INFO; $button_caption = _AM_SF_PUBLISH; $an_status = _SF_AN_STATUS_NOTSET; $answerObj->setVar('uid', $xoopsUser->getVar('uid')); break; case _SF_STATUS_NEW_ANSWER: $breadcrumb_action1 = _AM_SF_PUBLISHED; $breadcrumb_action2 = _AM_SF_EDITING; $collapsableBar_title = _AM_SF_NEW_ANSWER_EDITING; $collapsableBar_info = _AM_SF_NEW_ANSWER_EDITING_INFO; $button_caption = _AM_SF_PUBLISH; $an_status = _SF_AN_STATUS_NOTSET; break; case "default": default: break; } /* if (!$answerObj) { redirect_header("faq.php", 2, _AM_SF_ANSWERNOTFOUND); exit(); } */ // Creating the category of this FAQ $categoryObj =& $faqObj->category(); if ($showmenu) { sf_adminMenu(2, $breadcrumb_action1 . " > " . $breadcrumb_action2); } echo "<br />\n"; sf_collapsableBar('bottomtable', 'bottomtableicon'); echo "<img id='bottomtableicon' src=" . XOOPS_URL . "/modules/" . $xoopsModule->dirname() . "/images/icon/close12.gif alt='' /></a> " . $collapsableBar_title . "</h3>"; echo "<div id='bottomtable'>"; echo "<span style=\"color: #567; margin: 3px 0 12px 0; font-size: small; display: block; \">" . $collapsableBar_info . "</span>"; } else { // there's no parameter, so we're adding a faq $faqObj =& $faq_handler->create(); $faqObj->setVar('uid', $xoopsUser->getVar('uid')); $categoryObj =& $category_handler->create(); $answerObj =& $answer_handler->create(); $answerObj->setVar('uid', $xoopsUser->getVar('uid')); $breadcrumb_action1 = _AM_SF_SMARTFAQS; $breadcrumb_action2 = _AM_SF_CREATINGNEW; $button_caption = _AM_SF_CREATE; if ($showmenu) { sf_adminMenu(2, $breadcrumb_action1 . " > " . $breadcrumb_action2); } sf_collapsableBar('bottomtable', 'bottomtableicon'); echo "<img id='bottomtableicon' src=" . XOOPS_URL . "/modules/" . $xoopsModule->dirname() . "/images/icon/close12.gif alt='' /></a> " . _AM_SF_CREATESMARTFAQ . "</h3>"; echo "<div id='bottomtable'>"; } $sform = new XoopsThemeForm(_AM_SF_SMARTFAQ, "op", xoops_getenv('PHP_SELF')); $sform->setExtra('enctype="multipart/form-data"'); // faq requester $sform->addElement(new XoopsFormLabel(_AM_SF_REQUESTED_BY, sf_getLinkedUnameFromId($faqObj->uid(), $xoopsModuleConfig['userealname']))); // faq answered by $sform->addElement(new XoopsFormLabel(_AM_SF_ANSWERED_BY, sf_getLinkedUnameFromId($answerObj->uid(), $xoopsModuleConfig['userealname']))); // CATEGORY /* * Get information for pulldown menu using XoopsTree. * First var is the database table * Second var is the unique field ID for the categories * Last one is not set as we do not have sub menus in Smartfaq */ $mytree = new XoopsTree($xoopsDB->prefix("smartfaq_categories"), "categoryid", "parentid"); ob_start(); $mytree->makeMySelBox("name", "weight", $categoryObj->categoryid()); $sform->addElement(new XoopsFormLabel(_AM_SF_CATEGORY_FAQ, ob_get_contents())); ob_end_clean(); // faq QUESTION $sform->addElement(new XoopsFormTextArea(_AM_SF_QUESTION, 'question', $faqObj->question(0, 'e'), 7, 60)); // ANSWER if ($merge) { $theanswer = $originalAnswerObj->answer('e') . "\n\n" . sprintf(_AM_SF_NEW_CONTRIBUTION, sf_getLinkedUnameFromId($answerObj->uid(), $xoopsModuleConfig['userealname']), $answerObj->datesub(), $answerObj->answer('e')); } else { $theanswer = $answerObj->answer('e'); } $sform->addElement(new XoopsFormDhtmlTextArea(_AM_SF_ANSWER_FAQ, 'answer', $theanswer, 15, 60), true); // HOW DO I $sform->addElement(new XoopsFormText(_AM_SF_HOWDOI_FAQ, 'howdoi', 50, 255, $faqObj->howdoi('e')), false); // DIDUNO $sform->addElement(new XoopsFormTextArea(_AM_SF_DIDUNO_FAQ, 'diduno', $faqObj->diduno('e'), 3, 60)); // CONTEXT MODULE LINK // Retreive the list of module currently installed. The key value is the dirname $module_handler =& xoops_gethandler('module'); $modules_array = $module_handler->getList(null, true); $modulelink_select_array = array("url" => _AM_SF_SPECIFIC_URL_SELECT); $modulelink_select_array = array_merge($modules_array, $modulelink_select_array); $modulelink_select_array = array_merge(array("None" => _AM_SF_NONE, "All" => _AM_SF_ALL), $modulelink_select_array); $modulelink_select = new XoopsFormSelect('', 'modulelink', $faqObj->modulelink()); $modulelink_select->addOptionArray($modulelink_select_array); $modulelink_tray = new XoopsFormElementTray(_AM_SF_CONTEXTMODULELINK_FAQ, ' '); $modulelink_tray->addElement($modulelink_select); $sform->addElement($modulelink_tray); // SPECIFICURL $sform->addElement(new XoopsFormText(_AM_SF_SPECIFIC_URL, 'contextpage', 50, 60, $faqObj->contextpage()), false); // EXACT URL? $excaturl_radio = new XoopsFormRadioYN(_AM_SF_EXACTURL, 'exacturl', $faqObj->exacturl(), ' ' . _AM_SF_YES . '', ' ' . _AM_SF_NO . ''); $sform->addElement($excaturl_radio); // WEIGHT $sform->addElement(new XoopsFormText(_AM_SF_WEIGHT, 'weight', 5, 5, $faqObj->weight()), true); // COMMENTS // Code to allow comments $addcomments_radio = new XoopsFormRadioYN(_AM_SF_ALLOWCOMMENTS, 'cancomment', $faqObj->cancomment(), ' ' . _AM_SF_YES . '', ' ' . _AM_SF_NO . ''); $sform->addElement($addcomments_radio); // PER ITEM PERMISSIONS $member_handler =& xoops_gethandler('member'); $group_list =& $member_handler->getGroupList(); $groups_checkbox = new XoopsFormCheckBox(_AM_SF_PERMISSIONS_FAQ, 'groups[]', $faqObj->getGroups_read()); foreach ($group_list as $group_id => $group_name) { if ($group_id != XOOPS_GROUP_ADMIN) { $groups_checkbox->addOption($group_id, $group_name); } } $sform->addElement($groups_checkbox); $partial_view = new XoopsFormRadioYN(_AM_SF_PARTIALVIEW, 'partialview', $faqObj->partialview(), ' ' . _AM_SF_YES . '', ' ' . _AM_SF_NO . ''); $sform->addElement($partial_view); // VARIOUS OPTIONS $options_tray = new XoopsFormElementTray(_AM_SF_OPTIONS, '<br />'); $html_checkbox = new XoopsFormCheckBox('', 'html', $faqObj->html()); $html_checkbox->addOption(1, _AM_SF_DOHTML); $options_tray->addElement($html_checkbox); $smiley_checkbox = new XoopsFormCheckBox('', 'smiley', $faqObj->smiley()); $smiley_checkbox->addOption(1, _AM_SF_DOSMILEY); $options_tray->addElement($smiley_checkbox); $xcodes_checkbox = new XoopsFormCheckBox('', 'xcodes', $faqObj->xcodes()); $xcodes_checkbox->addOption(1, _AM_SF_DOXCODE); $options_tray->addElement($xcodes_checkbox); $sform->addElement($options_tray); // OFFLINE if ($faqObj->status() == _SF_STATUS_OFFLINE) { // Back OnLine $offline_radio = new XoopsFormRadioYN(_AM_SF_OFFLINE_FIELD, 'offline', 1, ' ' . _AM_SF_YES . '', ' ' . _AM_SF_NO . ''); $sform->addElement($offline_radio); } // faq ID $sform->addElement(new XoopsFormHidden('faqid', $faqObj->faqid())); // requester id $sform->addElement(new XoopsFormHidden('requester_uid', $faqObj->uid())); // answerer id $sform->addElement(new XoopsFormHidden('answerer_uid', $answerObj->uid())); // ANSWER ID $sform->addElement(new XoopsFormHidden('answerid', $answerObj->answerid())); $button_tray = new XoopsFormElementTray('', ''); $hidden = new XoopsFormHidden('op', 'addfaq'); $button_tray->addElement($hidden); $sform->addElement(new XoopsFormHidden('status', $faqObj->status())); // Setting the FAQ Status /* $status_select = new XoopsFormSelect('', 'status', $status); $status_select->addOptionArray(sf_getStatusArray()); $status_tray = new XoopsFormElementTray(_AM_SF_STATUS_EXP , ' '); $status_tray->addElement($status_select); $sform->addElement($status_tray); */ if (!$faqid) { // there's no faqid? Then it's a new faq // $button_tray -> addElement( new XoopsFormButton( '', 'mod', _AM_SF_CREATE, 'submit' ) ); $butt_create = new XoopsFormButton('', '', _AM_SF_CREATE, 'submit'); $butt_create->setExtra('onclick="this.form.elements.op.value=\'addfaq\'"'); $button_tray->addElement($butt_create); $butt_clear = new XoopsFormButton('', '', _AM_SF_CLEAR, 'reset'); $button_tray->addElement($butt_clear); $butt_cancel = new XoopsFormButton('', '', _AM_SF_CANCEL, 'button'); $butt_cancel->setExtra('onclick="history.go(-1)"'); $button_tray->addElement($butt_cancel); } else { // else, we're editing an existing faq // $button_tray -> addElement( new XoopsFormButton( '', 'mod', _AM_SF_MODIFY, 'submit' ) ); $butt_create = new XoopsFormButton('', '', $button_caption, 'submit'); $butt_create->setExtra('onclick="this.form.elements.op.value=\'addfaq\'"'); $button_tray->addElement($butt_create); $butt_cancel = new XoopsFormButton('', '', _AM_SF_CANCEL, 'button'); $butt_cancel->setExtra('onclick="history.go(-1)"'); $button_tray->addElement($butt_cancel); } $sform->addElement($button_tray); $sform->display(); echo "</div>"; unset($hidden); }