config(); break; case 'admin_delete': $this->delete(); $this->config(); break; case 'admin_edit': $this->edit(); break; case 'admin_movedown': $this->movedown(); $this->config(); break; case 'admin_moveup': $this->moveup(); $this->config(); break; case 'show': $this->show(); break; default: header('HTTP/1.0 404 Not Found'); } } // Implement WT_Module_Config public function getConfigLink() { return 'module.php?mod='.$this->getName().'&mod_action=admin_config'; } // Implement class WT_Module_Block public function getBlock($block_id, $template=true, $cfg=null) { } // Implement class WT_Module_Block public function loadAjax() { return false; } // Implement class WT_Module_Block public function isUserBlock() { return false; } // Implement class WT_Module_Block public function isGedcomBlock() { return false; } // Implement class WT_Module_Block public function configureBlock($block_id) { } // Action from the configuration page private function edit() { require_once WT_ROOT.'includes/functions/functions_edit.php'; if (safe_POST_bool('save')) { $block_id=safe_POST('block_id'); if ($block_id) { WT_DB::prepare( "UPDATE `##block` SET gedcom_id=?, block_order=? WHERE block_id=?" )->execute(array( safe_POST('gedcom_id'), (int)safe_POST('block_order'), $block_id )); } else { WT_DB::prepare( "INSERT INTO `##block` (gedcom_id, module_name, block_order) VALUES (?, ?, ?)" )->execute(array( safe_POST('gedcom_id', array_keys(get_all_gedcoms())), $this->getName(), (int)safe_POST('block_order') )); $block_id=WT_DB::getInstance()->lastInsertId(); } set_block_setting($block_id, 'header', safe_POST('header', WT_REGEX_UNSAFE)); set_block_setting($block_id, 'faqbody', safe_POST('faqbody', WT_REGEX_UNSAFE)); // allow html $languages=array(); foreach (WT_I18N::installed_languages() as $code=>$name) { if (safe_POST_bool('lang_'.$code)) { $languages[]=$code; } } set_block_setting($block_id, 'languages', implode(',', $languages)); $this->config(); } else { $block_id=safe_GET('block_id'); $controller=new WT_Controller_Base(); if ($block_id) { $controller->setPageTitle(WT_I18N::translate('Edit FAQ item')); $header=get_block_setting($block_id, 'header'); $faqbody=get_block_setting($block_id, 'faqbody'); $block_order=WT_DB::prepare( "SELECT block_order FROM `##block` WHERE block_id=?" )->execute(array($block_id))->fetchOne(); $gedcom_id=WT_DB::prepare( "SELECT gedcom_id FROM `##block` WHERE block_id=?" )->execute(array($block_id))->fetchOne(); } else { $controller->setPageTitle(WT_I18N::translate('Add FAQ item')); $header=''; $faqbody=''; $block_order=WT_DB::prepare( "SELECT IFNULL(MAX(block_order)+1, 0) FROM `##block` WHERE module_name=?" )->execute(array($this->getName()))->fetchOne(); $gedcom_id=WT_GED_ID; } $controller->pageHeader(); // "Help for this page" link echo '
', help_link('add_faq_item', $this->getName()), '
'; echo '
'; echo ''; echo ''; echo ''; echo ''; echo ''; echo '
'; echo WT_I18N::translate('Question'); echo '
'; echo WT_I18N::translate('Answer'); echo '
'; if (array_key_exists('ckeditor', WT_Module::getActiveModules())) { // use CKeditor module require_once WT_ROOT.WT_MODULES_DIR.'ckeditor/ckeditor.php'; $oCKeditor = new CKEditor(); $oCKeditor->basePath = WT_MODULES_DIR.'ckeditor/'; $oCKeditor->config['width'] = 900; $oCKeditor->config['height'] = 400; $oCKeditor->config['AutoDetectLanguage'] = false ; $oCKeditor->config['DefaultLanguage'] = 'en'; $oCKeditor->editor('faqbody', $faqbody); } else { //use standard textarea echo ''; } echo '
'; echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; echo '
', WT_I18N::translate('Show this block for which languages?'), '', WT_I18N::translate('FAQ position'), help_link('add_faq_order', $this->getName()), '', WT_I18N::translate('FAQ visibility'), help_link('add_faq_visibility', $this->getName()), '
'; $languages=get_block_setting($block_id, 'languages'); echo edit_language_checkboxes('lang_', $languages); echo ''; echo ''; echo '
'; echo '

'; echo ' 

'; echo '
'; exit; } } private function delete() { $block_id=safe_GET('block_id'); $block_order=WT_DB::prepare( "SELECT block_order FROM `##block` WHERE block_id=?" )->execute(array($block_id))->fetchOne(); WT_DB::prepare( "DELETE FROM `##block_setting` WHERE block_id=?" )->execute(array($block_id)); WT_DB::prepare( "DELETE FROM `##block` WHERE block_id=?" )->execute(array($block_id)); } private function moveup() { $block_id=safe_GET('block_id'); $block_order=WT_DB::prepare( "SELECT block_order FROM `##block` WHERE block_id=?" )->execute(array($block_id))->fetchOne(); $swap_block=WT_DB::prepare( "SELECT block_order, block_id". " FROM `##block`". " WHERE block_order=(". " SELECT MAX(block_order) FROM `##block` WHERE block_order < ? AND module_name=?". " )". " LIMIT 1" )->execute(array($block_order, $this->getName()))->fetchOneRow(); if ($swap_block) { WT_DB::prepare( "UPDATE `##block` SET block_order=? WHERE block_id=?" )->execute(array($swap_block->block_order, $block_id)); WT_DB::prepare( "UPDATE `##block` SET block_order=? WHERE block_id=?" )->execute(array($block_order, $swap_block->block_id)); } } private function movedown() { $block_id=safe_GET('block_id'); $block_order=WT_DB::prepare( "SELECT block_order FROM `##block` WHERE block_id=?" )->execute(array($block_id))->fetchOne(); $swap_block=WT_DB::prepare( "SELECT block_order, block_id". " FROM `##block`". " WHERE block_order=(". " SELECT MIN(block_order) FROM `##block` WHERE block_order>? AND module_name=?". " )". " LIMIT 1" )->execute(array($block_order, $this->getName()))->fetchOneRow(); if ($swap_block) { WT_DB::prepare( "UPDATE `##block` SET block_order=? WHERE block_id=?" )->execute(array($swap_block->block_order, $block_id)); WT_DB::prepare( "UPDATE `##block` SET block_order=? WHERE block_id=?" )->execute(array($block_order, $swap_block->block_id)); } } private function show() { global $controller; $controller=new WT_Controller_Base(); $controller->setPageTitle($this->getTitle()); $controller->pageHeader(); $faqs=WT_DB::prepare( "SELECT block_id, bs1.setting_value AS header, bs2.setting_value AS body". " FROM `##block` b". " JOIN `##block_setting` bs1 USING (block_id)". " JOIN `##block_setting` bs2 USING (block_id)". " WHERE module_name=?". " AND bs1.setting_name='header'". " AND bs2.setting_name='faqbody'". " AND (gedcom_id IS NULL OR gedcom_id=?)". " ORDER BY block_order" )->execute(array($this->getName(), WT_GED_ID))->fetchAll(); // Define your colors for the alternating rows echo '

', WT_I18N::translate('Frequently asked questions'), '

'; // Instructions echo '
', WT_I18N::translate('Click on a title to go straight to it, or scroll down to read them all'); if (WT_USER_GEDCOM_ADMIN) { echo '
', '', WT_I18N::translate('Click here to Add, Edit, or Delete'), '', '
'; } echo '
'; //Start the table to contain the list of headers $row_count = 0; echo ''; // List of titles foreach ($faqs as $id => $faq) { $header =get_block_setting($faq->block_id, 'header'); $faqbody =get_block_setting($faq->block_id, 'faqbody'); $languages=get_block_setting($faq->block_id, 'languages'); if (!$languages || in_array(WT_LOCALE, explode(',', $languages))) { $row_color = ($row_count % 2) ? 'odd' : 'even'; // NOTE: Print the header of the current item echo ''; $row_count++; } } echo '
'; echo '', $faq->header, ''; echo '

'; // Detailed entries foreach ($faqs as $id => $faq) { $header =get_block_setting($faq->block_id, 'header'); $faqbody =get_block_setting($faq->block_id, 'faqbody'); $languages=get_block_setting($faq->block_id, 'languages'); if (!$languages || in_array(WT_LOCALE, explode(',', $languages))) { // NOTE: Print the body text of the current item, with its header echo '
', $faq->header; echo '
'; echo '', WT_I18N::translate('back to top'), ''; echo '
'; echo '
'; echo '
', substr($faqbody, 0, 1)=='<' ? $faqbody : nl2br($faqbody), '
'; echo '
'; } } } private function config() { global $WT_IMAGES; $controller=new WT_Controller_Base(); $controller->setPageTitle($this->getTitle()); $controller->pageHeader(); $faqs=WT_DB::prepare( "SELECT block_id, block_order, gedcom_id, bs1.setting_value AS header, bs2.setting_value AS faqbody". " FROM `##block` b". " JOIN `##block_setting` bs1 USING (block_id)". " JOIN `##block_setting` bs2 USING (block_id)". " WHERE module_name=?". " AND bs1.setting_name='header'". " AND bs2.setting_name='faqbody'". " AND (gedcom_id IS NULL OR gedcom_id=?)". " ORDER BY block_order" )->execute(array($this->getName(), WT_GED_ID))->fetchAll(); $min_block_order=WT_DB::prepare( "SELECT MIN(block_order) FROM `##block` WHERE module_name=?" )->execute(array($this->getName()))->fetchOne(); $max_block_order=WT_DB::prepare( "SELECT MAX(block_order) FROM `##block` WHERE module_name=?" )->execute(array($this->getName()))->fetchOne(); echo '', WT_I18N::translate('Add FAQ item'), ''; echo help_link('add_faq_item', $this->getName()); echo ''; if (empty($faqs)) { echo '
', WT_I18N::translate('The FAQ list is empty.'), '
'; } else { foreach ($faqs as $faq) { // NOTE: Print the position of the current item echo ''; echo WT_I18N::translate('Position item'), ': ', $faq->block_order, ', '; if ($faq->gedcom_id==null) { echo WT_I18N::translate('All'); } else { echo get_gedcom_from_id($faq->gedcom_id); } echo ''; // NOTE: Print the edit options of the current item echo ''; if ($faq->block_order==$min_block_order) { echo ' '; } else { echo ''; echo help_link('moveup_faq_item', $this->getName()); } echo ''; if ($faq->block_order==$max_block_order) { echo ' '; } else { echo ''; echo help_link('movedown_faq_item', $this->getName()); } echo ''; echo '', WT_I18N::translate('Edit'), ''; echo help_link('edit_faq_item', $this->getName()); echo ''; echo '', WT_I18N::translate('Delete'), ''; echo help_link('delete_faq_item', $this->getName()); echo ''; // NOTE: Print the title text of the current item echo ''; echo '
'; echo '
', $faq->header, '
'; // NOTE: Print the body text of the current item echo '
', substr($faq->faqbody, 0, 1)=='<' ? $faq->faqbody : nl2br($faq->faqbody), '
'; } echo ''; } } }