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 />"; }
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'; include_once XOOPS_ROOT_PATH . "/header.php"; include_once "footer.php"; $name = $xoopsUser ? ucwords($xoopsUser->getVar("uname")) : 'Anonymous'; $moduleName = $myts->displayTarea($xoopsModule->getVar('name')); $xoopsTpl->assign('whereInSection', $moduleName); $xoopsTpl->assign('lang_submit', _MD_SF_SUBMITANSWER); $xoopsTpl->assign('lang_intro_title', sprintf(_MD_SF_SUBMITANSWERTO, ucwords($xoopsModule->name()))); $xoopsTpl->assign('lang_intro_text', _MD_SF_GOODDAY . "<b>{$name}</b>, " . _MD_SF_SUBMITANSWER_INTRO); include_once 'include/answer.inc.php';
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); }