Removing FAQ module

This commit is contained in:
Manuel Cillero 2017-09-19 01:05:11 +02:00
parent 214e32cfe9
commit 73119071ea
20 changed files with 0 additions and 4282 deletions

View file

@ -1,497 +0,0 @@
<?php
/**
* @file
* Administrative page callbacks for the faq module.
*/
/**
* Generates the settings form for the FAQ module.
*
* @param $op
* Default value is NULL; determines what are the permissions of the current
* user on the FAQ.
* @return
* The output, which contains the HTML code for the settings form generated by
* drupal_get_form() function.
*/
function faq_settings_page($op = NULL) {
$output = drupal_get_form('faq_general_settings_form');
return $output;
}
/**
* Define a form to edit the page header and descriptive text.
*
* @return
* The general settings form code stored in the $form variable, before
* converted to HTML.
*/
function faq_general_settings_form() {
$form['faq_title'] = array(
'#type' => 'textfield',
'#title' => t('Title'),
'#default_value' => variable_get('faq_title', 'Frequently Asked Questions'),
);
$form['body_filter']['faq_description'] = array(
'#type' => 'textarea',
'#title' => t('FAQ Description'),
'#default_value' => variable_get('faq_description', ''),
'#description' => t('Your FAQ description. This will be placed at the top of the page, above the questions and can serve as an introductory text.'),
'#rows' => 5,
);
$form['body_filter']['faq_description_format'] = filter_form(variable_get('faq_description_format', ''), NULL, array('faq_description_format'));
$form['faq_custom_breadcrumbs'] = array(
'#type' => 'checkbox',
'#title' => t('Create custom breadcrumbs for the FAQ'),
'#description' => t('This option set the breadcrumb path to "%home > %faqtitle > category trail".', array('%home' => t('Home'), '%faqtitle' => variable_get('faq_title', 'Frequently Asked Questions'))),
'#default_value' => variable_get('faq_custom_breadcrumbs', TRUE),
);
return system_settings_form($form);
}
/**
* Define the elements for the FAQ Settings page - Questions tab.
*
* @return
* The form code inside the $form array.
*/
function faq_questions_settings_form() {
drupal_add_js(array('faq' => array('faq_hide_qa_accordion' => variable_get('faq_hide_qa_accordion', FALSE))), 'setting');
drupal_add_js(array('faq' => array('faq_category_hide_qa_accordion' => variable_get('faq_category_hide_qa_accordion', FALSE))), 'setting');
drupal_add_js(drupal_get_path('module', 'faq') .'/faq.js', 'module');
$display_options['questions_inline'] = t('Questions inline');
$display_options['questions_top'] = t('Clicking on question takes user to answer further down the page');
$display_options['hide_answer'] = t('Clicking on question opens/hides answer under question');
$display_options['new_page'] = t('Clicking on question opens the answer in a new page');
$form['faq_display'] = array(
'#type' => 'radios',
'#options' => $display_options,
'#title' => t('Page layout'),
'#description' => t('This controls how the questions and answers are displayed on the page and what happens when someone clicks on the question.'),
'#default_value' => variable_get('faq_display', 'questions_top'),
);
$form['faq_questions_misc'] = array(
'#type' => 'fieldset',
'#title' => t('Miscellaneous layout settings'),
'#collapsible' => TRUE,
);
$form['faq_questions_misc']['faq_question_listing'] = array(
'#type' => 'select',
'#options' => array('ol' => t('Ordered list'), 'ul' => t('Unordered list')),
'#title' => t('Questions listing style'),
'#description' => t("This allows to select how the questions listing is presented. It only applies to the layouts: 'Clicking on question takes user to answer further down the page' and 'Clicking on question opens the answer in a new page'. An ordered listing would number the questions, whereas an unordered list will have a bullet to the left of each question."),
'#default_value' => variable_get('faq_question_listing', 'ul'),
);
$form['faq_questions_misc']['faq_qa_mark'] = array(
'#type' => 'checkbox',
'#title' => t('Label questions and answers'),
'#description' => t('This option is only valid for the "Questions Inline" and "Clicking on question takes user to answer further down the page" layouts. It labels all questions on the faq page with the "question label" setting and all answers with the "answer label" setting. For example these could be set to "Q:" and "A:".'),
'#default_value' => variable_get('faq_qa_mark', FALSE),
);
$form['faq_questions_misc']['faq_question_label'] = array(
'#type' => 'textfield',
'#title' => t('Question Label'),
'#description' => t('The label to pre-pend to the question text in the "Questions Inline" layout if labelling is enabled.'),
'#default_value' => variable_get('faq_question_label', 'Q:'),
);
$form['faq_questions_misc']['faq_answer_label'] = array(
'#type' => 'textfield',
'#title' => t('Answer Label'),
'#description' => t('The label to pre-pend to the answer text in the "Questions Inline" layout if labelling is enabled.'),
'#default_value' => variable_get('faq_answer_label', 'A:'),
);
$form['faq_questions_misc']['faq_question_length'] = array(
'#type' => 'radios',
'#title' => t('Question length'),
'#options' => array('long' => t('Display longer text'), 'short' => t('Display short text'), 'both' => t('Display both short and long questions')),
'#description' => t("The length of question text to display on the FAQ page. The short question will always be displayed in the FAQ blocks."),
'#default_value' => variable_get('faq_question_length', 'short'),
);
$form['faq_questions_misc']['faq_question_long_form'] = array(
'#type' => 'checkbox',
'#title' => t('Allow long question text to be configured'),
'#default_value' => variable_get('faq_question_long_form', 1),
);
$form['faq_questions_misc']['faq_hide_qa_accordion'] = array(
'#type' => 'checkbox',
'#title' => t('Use accordion effect for "opens/hides answer under question" layout'),
'#description' => t('This enables an "accordion" style effect where when a question is clicked, the answer appears beneath, and is then hidden when another question is opened.'),
'#default_value' => variable_get('faq_hide_qa_accordion', FALSE),
);
$form['faq_questions_misc']['faq_show_expand_all'] = array(
'#type' => 'checkbox',
'#title' => t('Show "expand / collapse all" links for collapsed questions'),
'#description' => t('The links will only be displayed if using the "opens/hides answer under question" or "opens/hides questions and answers under category" layouts.'),
'#default_value' => variable_get('faq_show_expand_all', FALSE),
);
$form['faq_questions_misc']['faq_use_teaser'] = array(
'#type' => 'checkbox',
'#title' => t('Use answer teaser'),
'#description' => t("This enables the display of the answer teaser text instead of the full answer when using the 'Questions inline' or 'Clicking on question takes user to answer further down the page' display options. This is useful when you have long descriptive text. The user can see the full answer by clicking on the question."),
'#default_value' => variable_get('faq_use_teaser', FALSE),
);
$form['faq_questions_misc']['faq_show_node_links'] = array(
'#type' => 'checkbox',
'#title' => t('Show node links'),
'#description' => t('This enables the display of links under the answer text on the faq page. Examples of these links include "Read more", "Add comment".'),
'#default_value' => variable_get('faq_show_node_links', FALSE),
);
$form['faq_questions_misc']['faq_back_to_top'] = array(
'#type' => 'textfield',
'#title' => t('"Back to Top" link text'),
'#description' => t('This allows the user to change the text displayed for the links which return the user to the top of the page on certain page layouts. Defaults to "Back to Top". Leave blank to have no link.'),
'#default_value' => variable_get('faq_back_to_top', 'Back to Top'),
);
$form['faq_questions_misc']['faq_disable_node_links'] = array(
'#type' => 'checkbox',
'#title' => t('Disable question links to nodes'),
'#description' => t('This allows the user to prevent the questions being links to the faq node in all layouts except "Clicking on question opens the answer in a new page".'),
'#default_value' => variable_get('faq_disable_node_links', FALSE),
);
$form['faq_questions_misc']['faq_default_sorting'] = array(
'#type' => 'select',
'#title' => t('Default sorting for unordered FAQs'),
'#options' => array('DESC' => t('Date Descending'), 'ASC' => t('Date Ascending')),
'#description' => t("This controls the default ordering behaviour for new FAQ nodes which haven't been assigned a position."),
'#default_value' => variable_get('faq_default_sorting', 'DESC'),
);
return system_settings_form($form);
}
/**
* Define the elements for the FAQ Settings page - categories tab.
*
* @return
* The form code inside the $form array.
*/
function faq_categories_settings_form() {
if (!module_exists("taxonomy")) {
drupal_set_message(t('Categorization of questions will not work without the "taxonomy" module being enabled.'), 'error');
}
drupal_add_js(array('faq' => array('faq_hide_qa_accordion' => variable_get('faq_hide_qa_accordion', FALSE))), 'setting');
drupal_add_js(array('faq' => array('faq_category_hide_qa_accordion' => variable_get('faq_category_hide_qa_accordion', FALSE))), 'setting');
drupal_add_js(drupal_get_path('module', 'faq') .'/faq.js', 'module');
// Set up a hidden variable.
$form['faq_display'] = array(
'#type' => 'hidden',
'#value' => variable_get('faq_display', 'questions_top'),
);
$form['faq_use_categories'] = array(
'#type' => 'checkbox',
'#title' => t('Categorize questions'),
'#description' => t('This allows the user to display the questions according to the categories configured on the add/edit FAQ page. Use of sub-categories is only recommended for large lists of questions. The Taxonomy module must be enabled and you must configure a FAQ vocabulary at <a href="@url">Content Management > Taxonomy</a>.', array('@url' => url('admin/content/taxonomy'))),
'#default_value' => variable_get('faq_use_categories', FALSE),
);
$category_options['none'] = t("Don't display");
$category_options['categories_inline'] = t('Categories inline');
$category_options['hide_qa'] = t('Clicking on category opens/hides questions and answers under category');
$category_options['new_page'] = t('Clicking on category opens the questions/answers in a new page');
$form['faq_category_display'] = array(
'#type' => 'radios',
'#options' => $category_options,
'#title' => t('Categories layout'),
'#description' => t('This controls how the categories are displayed on the page and what happens when someone clicks on the category.'),
'#default_value' => variable_get('faq_category_display', 'categories_inline'),
);
$form['faq_category_misc'] = array(
'#type' => 'fieldset',
'#title' => t('Miscellaneous layout settings'),
'#collapsible' => TRUE,
);
$form['faq_category_misc']['faq_category_listing'] = array(
'#type' => 'select',
'#options' => array('ol' => t('Ordered list'), 'ul' => t('Unordered list')),
'#title' => t('Categories listing style'),
'#description' => t("This allows to select how the categories listing is presented. It only applies to the 'Clicking on category opens the questions/answers in a new page' layout. An ordered listing would number the categories, whereas an unordered list will have a bullet to the left of each category."),
'#default_value' => variable_get('faq_category_listing', 'ul'),
);
$form['faq_category_misc']['faq_category_hide_qa_accordion'] = array(
'#type' => 'checkbox',
'#title' => t('Use accordion effect for "opens/hides questions and answers under category" layout'),
'#description' => t('This enables an "accordion" style effect where when a category is clicked, the questions appears beneath, and is then hidden when another category is opened.'),
'#default_value' => variable_get('faq_category_hide_qa_accordion', FALSE),
);
$form['faq_category_misc']['faq_count'] = array(
'#type' => 'checkbox',
'#title' => t('Show FAQ count'),
'#description' => t('This displays the number of questions in a category after the category name.'),
'#default_value' => variable_get('faq_count', FALSE),
);
$form['faq_category_misc']['faq_answer_category_name'] = array(
'#type' => 'checkbox',
'#title' => t('Display category name for answers'),
'#description' => t("This allows the user to toggle the visibility of the category name above each answer section for the 'Clicking on question takes user to answer further down the page' question/answer display."),
'#default_value' => variable_get('faq_answer_category_name', FALSE),
);
$form['faq_category_misc']['faq_group_questions_top'] = array(
'#type' => 'checkbox',
'#title' => t("Group questions and answers for 'Categories inline'"),
'#description' => t("This controls how categories are implemented with the 'Clicking on question takes user to answer further down the page' question/answer display."),
'#default_value' => variable_get('faq_group_questions_top', FALSE),
);
$form['faq_category_misc']['faq_hide_child_terms'] = array(
'#type' => 'checkbox',
'#title' => t('Only show sub-categories when parent category is selected'),
'#description' => t("This allows the user more control over how and when sub-categories are displayed. It does not affect the 'Categories inline' display."),
'#default_value' => variable_get('faq_hide_child_terms', FALSE),
);
$form['faq_category_misc']['faq_show_term_page_children'] = array(
'#type' => 'checkbox',
'#title' => t('Show sub-categories on FAQ category pages'),
'#description' => t("Sub-categories with 'faq' nodes will be displayed on the per category FAQ page. This will also happen if 'Only show sub-categories when parent category is selected' is set."),
'#default_value' => variable_get('faq_show_term_page_children', FALSE),
);
if (module_exists('taxonomy')) {
$form['faq_category_advanced'] = array(
'#type' => 'fieldset',
'#title' => t('Advanced category settings'),
'#collapsible' => TRUE,
'#collapsed' => TRUE,
);
$vocab_options = array();
$vocabularies = taxonomy_get_vocabularies('faq');
foreach ($vocabularies as $vid => $vobj) {
$vocab_options[$vid] = $vobj->name;
}
if (!empty($vocab_options)) {
$form['faq_category_advanced']['faq_omit_vocabulary'] = array(
'#type' => 'checkboxes',
'#title' => t('Omit vocabulary'),
'#description' => t('Terms from these vocabularies will be <em>excluded</em> from the FAQ pages.'),
'#default_value' => variable_get('faq_omit_vocabulary', array()),
'#options' => $vocab_options,
'#multiple' => TRUE,
);
}
$form['faq_category_advanced']['faq_enable_term_links'] = array(
'#type' => 'checkbox',
'#title' => t('Enable FAQ taxonomy links'),
'#description' => t('Node links to taxonomy terms will be re-written to point at the FAQ pages instead.'),
'#default_value' => variable_get('faq_enable_term_links', 1),
);
}
return system_settings_form($form);
}
/**
* Define the elements for the FAQ Settings page - order tab.
*
* @param $form_state
* Store the submitted form values.
* @return
* The form code, before being converted to HTML format.
*/
function faq_order_settings_form($form_state, $category = NULL) {
$order = $date_order = '';
drupal_add_js(array('faq' => array('faq_hide_qa_accordion' => variable_get('faq_hide_qa_accordion', FALSE))), 'setting');
drupal_add_js(array('faq' => array('faq_category_hide_qa_accordion' => variable_get('faq_category_hide_qa_accordion', FALSE))), 'setting');
drupal_add_js(drupal_get_path('module', 'faq') .'/faq.js', 'module');
drupal_add_css(drupal_get_path('module', 'faq') .'/faq.css');
$use_categories = variable_get('faq_use_categories', FALSE);
if (!$use_categories) {
$step = "order";
}
elseif (!isset($form_state['values']) && empty($category)) {
$step = "categories";
}
else {
$step = "order";
}
$form['step'] = array(
'#type' => 'value',
'#value' => $step,
);
// Categorized q/a.
if ($step == "categories") {
// Get list of categories.
$vocabularies = taxonomy_get_vocabularies('faq');
$options = array();
foreach ($vocabularies as $vid => $vobj) {
$tree = taxonomy_get_tree($vid);
foreach ($tree as $term) {
if (!taxonomy_term_count_nodes($term->tid, 'faq')) {
continue;
}
$options[$term->tid] = faq_tt("taxonomy:term:$term->tid:name", $term->name);
$form['choose_cat']['faq_category'] = array(
'#type' => 'select',
'#title' => t('Choose a category'),
'#description' => t('Choose a category that you wish to order the questions for.'),
'#options' => $options,
'#multiple' => FALSE,
);
$form['choose_cat']['search'] = array(
'#type' => 'submit',
'#value' => t('Search'),
'#submit' => array('faq_order_settings_choose_cat_form_submit'),
);
}
}
}
else {
$default_sorting = variable_get('faq_default_sorting', 'DESC');
$default_weight = 0;
if ($default_sorting != 'DESC') {
$default_weight = 1000000;
}
$options = array();
if (!empty($form_state['values']['faq_category'])) {
$category = $form_state['values']['faq_category'];
}
// Uncategorized ordering.
if (empty($category)) {
$category = 0;
// Descending.
if ($default_sorting == 'DESC') {
$result = db_query(db_rewrite_sql("SELECT n.nid, n.title, COALESCE(w.weight, %d) as effective_weight, n.sticky, n.created FROM {node} n LEFT JOIN {faq_weights} w ON n.nid = w.nid AND w.tid = '%d' WHERE n.type='faq' AND n.status = 1 ORDER BY effective_weight ASC, n.sticky DESC, n.created DESC", "n", "nid"), $default_weight, $category);
}
// Ascending.
else {
$result = db_query(db_rewrite_sql("SELECT n.nid, n.title, COALESCE(w.weight, %d) as effective_weight, n.sticky, n.created FROM {node} n LEFT JOIN {faq_weights} w ON n.nid = w.nid AND w.tid = '%d' WHERE n.type='faq' AND n.status = 1 ORDER BY effective_weight ASC, n.sticky DESC, n.created ASC", "n", "nid"), $default_weight, $category);
}
}
// Categorized ordering.
else {
// Descending.
if ($default_sorting == 'DESC') {
$result = db_query(db_rewrite_sql("SELECT n.nid, n.title, COALESCE(w.weight, %d) as effective_weight, n.sticky, n.created FROM {node} n INNER JOIN {term_node} tn ON (n.nid = tn.nid AND n.vid = tn.vid) LEFT JOIN {faq_weights} w ON n.nid = w.nid AND w.tid = '%d' WHERE n.type='faq' AND n.status = 1 AND tn.tid = '%d' ORDER BY effective_weight ASC, n.sticky DESC, n.created DESC", "n", "nid"), $default_weight, $category, $category);
}
// Ascending.
else {
$result = db_query(db_rewrite_sql("SELECT n.nid, n.title, COALESCE(w.weight, %d) as effective_weight, n.sticky, n.created FROM {node} n INNER JOIN {term_node} tn ON (n.nid = tn.nid AND n.vid = tn.vid) LEFT JOIN {faq_weights} w ON n.nid = w.nid AND w.tid = '%d' WHERE n.type='faq' AND n.status = 1 AND tn.tid = '%d' ORDER BY effective_weight ASC, n.sticky DESC, n.created ASC", "n", "nid"), $default_weight, $category, $category);
}
}
while ($node = db_fetch_object($result)) {
$options[$node->nid] = check_plain($node->title);
}
$form['weight']['faq_category'] = array(
'#type' => 'value',
'#value' => $category,
);
// Show table ordering form.
$form['order_no_cats']['#tree'] = TRUE;
$form['order_no_cats']['#theme'] = 'faq_draggable_question_order_table';
$i = 0;
foreach ($options as $nid => $title) {
$form['order_no_cats'][$i]['nid'] = array('#type' => 'hidden', '#value' => $nid);
$form['order_no_cats'][$i]['title'] = array('#value' => $title);
$form['order_no_cats'][$i]['sort'] = array('#type' => 'weight', '#delta' => count($options), '#default_value' => $i);
$i++;
}
$form['submit'] = array(
'#type' => 'submit',
'#value' => t('Save order'),
'#weight' => 3,
'#submit' => array('faq_order_settings_reorder_form_submit'),
);
}
return $form;
}
/**
* Function set the rebuild of the form in the FAQ Settings - Weight tab.
*
* @param $form
* Array, containing the form structure.
* @param &$form_state
* The 'rebuild' key inside $form_state['rebuild'] structure, overrides the
* 'redirect' key: when it is set to TRUE, the form will be rebuilt from
* scratch and displayed on screen.
*/
function faq_order_settings_choose_cat_form_submit($form, &$form_state) {
$form_state['rebuild'] = TRUE;
}
/**
* Save the options set by the user in the FAQ Settings - Weight tab.
*
* @param $form
* Array, containing the form structure.
* @param &$form_state
* $form_state['values'] stores the submitted values from the form.
*/
function faq_order_settings_reorder_form_submit($form, &$form_state) {
if ($form_state['values']['op'] == t('Save order') && !empty($form_state['values']['order_no_cats'])) {
foreach ($form_state['values']['order_no_cats'] as $i => $faq) {
$nid = $faq['nid'];
$index = $faq['sort'];
$result = db_query("DELETE FROM {faq_weights} WHERE tid = %d AND nid = %d", $form_state['values']['faq_category'], $nid);
$result = db_query("INSERT INTO {faq_weights} (tid, nid, weight) VALUES(%d, %d, %d)", $form_state['values']['faq_category'], $nid, $index);
// If node translation module enabled, update order of the translation
// node counterparts.
if (module_exists('translation')) {
$node = node_load($nid);
if ($node->tnid) {
$translations = translation_node_get_translations($node->tnid);
if (!empty($translations)) {
foreach ($translations as $language => $tnode) {
$result = db_query("DELETE FROM {faq_weights} WHERE tid = %d AND nid = %d", $form_state['values']['faq_category'], $tnode->nid);
$result = db_query("INSERT INTO {faq_weights} (tid, nid, weight) VALUES(%d, %d, %d)", $form_state['values']['faq_category'], $tnode->nid, $index);
}
}
}
}
}
drupal_set_message(t('Configuration has been updated.'));
}
}

View file

@ -1,63 +0,0 @@
.faq-category-indent {
padding-left: 20px;
}
.faq-more-link {
font-size: 0.85em;
margin-left: 30em;
margin-top: 0;
margin-bottom: -1.25em;
text-align: right;
}
.faq-top-link {
font-size: 0.8em;
margin-top:0;
margin-bottom: 0;
padding-bottom: 1.0em;
}
.faq-question {
padding-top: 5px;
padding-left: 20px;
}
.faq-answer {
padding-left: 40px;
}
.faq-answer .faq-answer-label {
float: left;
margin-right: 0.5em;
}
.faq-dl-hide-answer {
padding-bottom: 15px;
}
img.faq-tax-image {
float: left;
padding: 0px 3px 0px 3px;
}
div.faq-detailed-question {
font-style: italic;
}
.faq .collapsible {
display: block;
}
.faq .collapsed {
display: none;
}
.faq #faq-expand-all {
text-align: right;
display: none;
}
.faq #faq-expand-all a.faq-expand-all-link,
.faq #faq-expand-all a.faq-collapse-all-link {
display: none;
}

View file

@ -1,10 +0,0 @@
name = Frequently Asked Questions
description = "Manages configuration of questions for a FAQ page."
package = Core - extended
core = 6.x
; Information added by drupal.org packaging script on 2012-02-22
version = "6.x-1.13"
core = "6.x"
project = "faq"
datestamp = "1329951344"

View file

@ -1,170 +0,0 @@
<?php
/**
* @file
* FAQ module install file.
*/
/**
* Define the 'faq_weights' and 'faq_questions' table structures.
*
* @return
* The schema which contains the structure for the faq module's tables.
*/
function faq_schema() {
$schema['faq_weights'] = array(
'description' => 'A table containing the weight of each faq node by category.',
'fields' => array(
'tid' => array('type' => 'int', 'unsigned' => TRUE, 'not null' => TRUE, 'default' => 0, 'description' => 'The primary identifier for a term or category. This will be 0 for non-categorized nodes.'),
'nid' => array('type' => 'int', 'unsigned' => TRUE, 'not null' => TRUE, 'default' => 0, 'description' => 'The primary identifier for a node.'),
'weight' => array('type' => 'int', 'size' => 'tiny', 'not null' => TRUE, 'default' => 0, 'description' => 'A number representing the weight of a node. Nodes with lower weight values will appear above those with higher weight values.'),
),
'primary key' => array('nid', 'tid'),
);
$schema['faq_questions'] = array(
'description' => 'A table containing the long question text of each faq node revision.',
'fields' => array(
'nid' => array('type' => 'int', 'unsigned' => TRUE, 'not null' => TRUE, 'default' => 0, 'description' => 'The primary identifier for a node.'),
'vid' => array('type' => 'int', 'unsigned' => TRUE, 'not null' => TRUE, 'default' => 0, 'description' => 'The primary identifier for a node revision.'),
'question' => array('type' => 'text', 'size' => 'normal', 'not null' => TRUE, 'description' => 'The faq short question text.'),
'detailed_question' => array('type' => 'text', 'size' => 'normal', 'not null' => TRUE, 'description' => 'The faq long question text.'),
),
'primary key' => array('nid', 'vid'),
);
return $schema;
}
/**
* Implementation of hook_install().
*
* Inserts the FAQ module's schema in the SQL database.
*/
function faq_install() {
drupal_install_schema('faq');
variable_set('node_options_faq', array('status'));
}
/**
* Implementation of hook_uninstall().
*
* Remove the variables, nodes and schema corresponding to the FAQ module.
*/
function faq_uninstall() {
// Delete the variables we created.
// General settings.
variable_del('faq_title');
variable_del('faq_description');
variable_del('faq_description_format');
// Questions page.
variable_del('faq_display');
variable_del('faq_question_listing');
variable_del('faq_qa_mark');
variable_del('faq_question_label');
variable_del('faq_answer_label');
variable_del('faq_question_length');
variable_del('faq_hide_qa_accordion');
variable_del('faq_show_expand_all');
variable_del('faq_use_teaser');
variable_del('faq_show_node_links');
variable_del('faq_back_to_top');
variable_del('faq_disable_node_links');
variable_del('faq_default_sorting');
// Categories page.
variable_del('faq_use_categories');
variable_del('faq_category_display');
variable_del('faq_category_listing');
variable_del('faq_category_hide_qa_accordion');
variable_del('faq_count');
variable_del('faq_answer_category_name');
variable_del('faq_group_questions_top');
variable_del('faq_hide_child_terms');
variable_del('faq_show_term_page_children');
variable_del('faq_omit_vocabulary');
variable_del('faq_enable_term_links');
// Block settings.
variable_del('faq_block_recent_faq_count');
variable_del('faq_block_random_faq_count');
// Custom breadcrumbs control
variable_del('faq_custom_breadcrumbs');
// Deprecated.
variable_del('faq_more_link');
drupal_uninstall_schema('faq');
// Clear the cache tables.
cache_clear_all('*', 'cache', TRUE);
cache_clear_all('*', 'cache_filter', TRUE);
cache_clear_all('*', 'cache_menu', TRUE);
cache_clear_all('*', 'cache_page', TRUE);
}
/**
* Create 'faq_weights' table in order to upgrade from older installations.
*
* Should have been created with faq_update_600x() naming convention, but too
* late now.
*
* @return
* An array containing the structure of the SQL schema.
*/
function faq_update_1() {
$schema['faq_weights'] = array(
'description' => 'A table containing the weight of each faq node by category.',
'fields' => array(
'tid' => array('type' => 'int', 'unsigned' => TRUE, 'not null' => TRUE, 'default' => 0),
'nid' => array('type' => 'int', 'unsigned' => TRUE, 'not null' => TRUE, 'default' => 0),
'weight' => array('type' => 'int', 'size' => 'tiny', 'not null' => TRUE, 'default' => 0),
),
'primary key' => array('nid', 'tid'),
);
$ret = array();
db_create_table($ret, 'faq_weights', $schema['faq_weights']);
return $ret;
}
/**
* Create 'faq_questions' table in order to upgrade from older installations.
*
* Should have been created with faq_update_600x() naming convention, but too
* late now.
*
* @return
* An array containing the results of the update.
*/
function faq_update_2() {
$schema['faq_questions'] = array(
'description' => 'A table containing the long question text of each faq node revision.',
'fields' => array(
'nid' => array('type' => 'int', 'unsigned' => TRUE, 'not null' => TRUE, 'default' => 0, 'description' => 'The primary identifier for a node.'),
'vid' => array('type' => 'int', 'unsigned' => TRUE, 'not null' => TRUE, 'default' => 0, 'description' => 'The primary identifier for a node revision.'),
'question' => array('type' => 'text', 'size' => 'normal', 'not null' => TRUE, 'description' => 'The faq long question text.'),
),
'primary key' => array('nid', 'vid'),
);
$ret = array();
db_create_table($ret, 'faq_questions', $schema['faq_questions']);
$ret[] = update_sql("INSERT INTO {faq_questions} (nid, vid, question) SELECT r.nid, r.vid, r.title FROM {node_revisions} r, {node} n WHERE n.nid = r.nid AND n.type = 'faq'");
return $ret;
}
/**
* Add the 'detailed_question' column to the 'faq_questions' table.
*
* @return
* An array containing the results of the update.
*/
function faq_update_6003() {
$ret = array();
db_add_field($ret, 'faq_questions', 'detailed_question', array('type' => 'text', 'size' => 'normal', 'not null' => TRUE));
$ret[] = update_sql("UPDATE {faq_questions} SET detailed_question = question");
return $ret;
}

View file

@ -1,272 +0,0 @@
function teaser_handler(event) {
if ($("input[name=faq_display]:checked").val() != "new_page") {
if ($("input[name=faq_use_teaser]:checked").val() == 1) {
$("input[name=faq_more_link]").removeAttr("disabled");
}
else {
$("input[name=faq_more_link]").attr("disabled", "disabled");
}
}
}
function faq_display_handler(event) {
// Enable / disable "questions_inline" and "questions_top" only settings.
if ($("input[name=faq_display]:checked").val() == "questions_inline" || $("input[name=faq_display]:checked").val() == "questions_top") {
$("input[name=faq_back_to_top]").removeAttr("disabled");
$("input[name=faq_qa_mark]").removeAttr("disabled");
// Enable / disable label settings according to "qa_mark" setting.
if ($("input[name=faq_qa_mark]:checked").val() == 1) {
$("input[name=faq_question_label]").removeAttr("disabled");
$("input[name=faq_answer_label]").removeAttr("disabled");
}
else {
$("input[name=faq_question_label]").attr("disabled", "disabled");
$("input[name=faq_answer_label]").attr("disabled", "disabled");
}
}
else {
$("input[name=faq_back_to_top]").attr("disabled", "disabled");
$("input[name=faq_qa_mark]").attr("disabled", "disabled");
$("input[name=faq_question_label]").attr("disabled", "disabled");
$("input[name=faq_answer_label]").attr("disabled", "disabled");
}
// Enable / disable "hide_answer" only settings.
if ($("input[name=faq_display]:checked").val() != "hide_answer") {
$("input[name=faq_hide_qa_accordion]").attr("disabled", "disabled");
}
else {
$("input[name=faq_hide_qa_accordion]").removeAttr("disabled");
}
// Enable / disable "new_page" only settings.
if ($("input[name=faq_display]:checked").val() != "new_page") {
$("input[name=faq_use_teaser]").removeAttr("disabled");
$("input[name=faq_more_link]").removeAttr("disabled");
$("input[name=faq_disable_node_links]").removeAttr("disabled");
}
else {
$("input[name=faq_use_teaser]").attr("disabled", "disabled");
$("input[name=faq_more_link]").attr("disabled", "disabled");
$("input[name=faq_disable_node_links]").attr("disabled", "disabled");
}
teaser_handler(event);
// Enable / disable "new_page" and "questions_top" only settings.
if ($("input[name=faq_display]:checked").val() == "new_page" ||
$("input[name=faq_display]:checked").val() == "questions_top") {
$("select[name=faq_question_listing]").removeAttr("disabled");
}
else {
$("select[name=faq_question_listing]").attr("disabled", "disabled");
}
}
function qa_mark_handler(event) {
if ($("input[name=faq_display]:checked").val() == "questions_inline") {
// Enable / disable label settings according to "qa_mark" setting.
if ($("input[name=faq_qa_mark]:checked").val() == 1) {
$("input[name=faq_question_label]").removeAttr("disabled");
$("input[name=faq_answer_label]").removeAttr("disabled");
}
else {
$("input[name=faq_question_label]").attr("disabled", "disabled");
$("input[name=faq_answer_label]").attr("disabled", "disabled");
}
}
}
function questions_top_handler(event) {
$("input[name=faq_display]").val() == "questions_top" ?
$("input[name=faq_group_questions_top]").removeAttr("disabled"):
$("input[name=faq_group_questions_top]").attr("disabled", "disabled");
$("input[name=faq_display]").val() == "questions_top" ?
$("input[name=faq_answer_category_name]").removeAttr("disabled"):
$("input[name=faq_answer_category_name]").attr("disabled", "disabled");
}
function child_term_handler(event) {
if ($("input[name=faq_hide_child_terms]:checked").val() == 1) {
$("input[name=faq_show_term_page_children]").attr("disabled", "disabled");
}
else if ($("input[name=faq_category_display]:checked").val() != "categories_inline") {
$("input[name=faq_show_term_page_children]").removeAttr("disabled");
}
}
function categories_handler(event) {
if ($("input[name=faq_display]").val() == "questions_top") {
$("input[name=faq_category_display]:checked").val() == "categories_inline" ?
$("input[name=faq_group_questions_top]").removeAttr("disabled"):
$("input[name=faq_group_questions_top]").attr("disabled", "disabled");
$("input[name=faq_category_display]:checked").val() == "new_page" ?
$("input[name=faq_answer_category_name]").attr("disabled", "disabled"):
$("input[name=faq_answer_category_name]").removeAttr("disabled");
}
else {
$("input[name=faq_group_questions_top]").attr("disabled", "disabled");
}
// Enable / disable "hide_qa" only settings.
if ($("input[name=faq_category_display]:checked").val() != "hide_qa") {
$("input[name=faq_category_hide_qa_accordion]").attr("disabled", "disabled");
}
else {
$("input[name=faq_category_hide_qa_accordion]").removeAttr("disabled");
}
$("input[name=faq_category_display]:checked").val() == "categories_inline" ?
$("input[name=faq_hide_child_terms]").attr("disabled", "disabled"):
$("input[name=faq_hide_child_terms]").removeAttr("disabled");
$("input[name=faq_category_display]:checked").val() == "categories_inline" ?
$("input[name=faq_show_term_page_children]").attr("disabled", "disabled"):
$("input[name=faq_show_term_page_children]").removeAttr("disabled");
$("input[name=faq_category_display]:checked").val() == "new_page" ?
$("select[name=faq_category_listing]").removeAttr("disabled"):
$("select[name=faq_category_listing]").attr("disabled", "disabled");
child_term_handler();
}
Drupal.behaviors.initFaqModule = function (context) {
// Hide/show answer for a question.
var faq_hide_qa_accordion = Drupal.settings.faq.faq_hide_qa_accordion;
$('div.faq-dd-hide-answer', context).addClass("collapsible collapsed");
if (!faq_hide_qa_accordion) {
$('div.faq-dd-hide-answer:not(.faq-processed)', context).addClass('faq-processed').hide();
}
$('div.faq-dt-hide-answer:not(.faq-processed)', context).addClass('faq-processed').click(function() {
if (faq_hide_qa_accordion) {
$('div.faq-dt-hide-answer').not($(this)).removeClass('faq-qa-visible');
}
$(this).toggleClass('faq-qa-visible');
$(this).parent().addClass('faq-viewed');
$('div.faq-dd-hide-answer').not($(this).next('div.faq-dd-hide-answer')).addClass("collapsed");
if (!faq_hide_qa_accordion) {
$(this).next('div.faq-dd-hide-answer').slideToggle('fast', function() {
$(this).parent().toggleClass('expanded');
});
}
$(this).next('div.faq-dd-hide-answer').toggleClass("collapsed");
// Change the fragment, too, for permalink/bookmark.
// To keep the current page from scrolling, refs
// http://stackoverflow.com/questions/1489624/modifying-document-location-hash-without-page-scrolling/1489802#1489802
var hash = $(this).find('a').attr('id');
var fx, node = $('#' + hash);
if (node.length) {
fx = $('<div></div>')
.css({position: 'absolute', visibility: 'hidden', top: $(window).scrollTop() + 'px'})
.attr('id', hash)
.appendTo(document.body);
node.attr('id', '');
}
document.location.hash = hash;
if (node.length) {
fx.remove();
node.attr('id', hash);
}
// Scroll the page if the collapsed FAQ is not visible.
// If we have the toolbar so the title may be hidden by the bar.
var mainScrollTop = Math.max($('html', context).scrollTop(), $('body', context).scrollTop());
// We compute mainScrollTop because the behaviour is different on FF, IE and CR
if (mainScrollTop > $(this).offset().top) {
$('html, body', context).animate({
scrollTop: $(this).offset().top
}, 1);
}
return false;
});
// Show any question identified by a fragment
if (/^#\w+$/.test(document.location.hash)) {
$('div.faq-dt-hide-answer > ' + document.location.hash).parent().triggerHandler('click');
}
// Hide/show q/a for a category.
var faq_category_hide_qa_accordion = Drupal.settings.faq.faq_category_hide_qa_accordion;
$('div.faq-qa-hide', context).addClass("collapsible collapsed");
if (!faq_category_hide_qa_accordion) {
$('div.faq-qa-hide', context).hide();
}
$('div.faq-qa-header .faq-header:not(.faq-processed)', context).addClass('faq-processed').click(function() {
if (faq_category_hide_qa_accordion) {
$('div.faq-qa-header .faq-header').not($(this)).removeClass('faq-category-qa-visible');
}
$(this).toggleClass('faq-category-qa-visible');
$('div.faq-qa-hide').not($(this).parent().next('div.faq-qa-hide')).addClass("collapsed");
if (!faq_category_hide_qa_accordion) {
$(this).parent().next('div.faq-qa-hide').slideToggle('fast', function() {
$(this).parent().toggleClass('expanded');
});
}
$(this).parent().next('div.faq-qa-hide').toggleClass("collapsed");
// Scroll the page if the collapsed FAQ is not visible.
// If we have the toolbar so the title may be hidden by the bar.
var mainScrollTop = Math.max($('html', context).scrollTop(), $('body', context).scrollTop());
// We compute mainScrollTop because the behaviour is different on FF, IE and CR
if (mainScrollTop > $(this).offset().top) {
$('html, body', context).animate({
scrollTop: $(this).offset().top
}, 1);
}
return false;
});
// Show expand all link.
if (!faq_hide_qa_accordion && !faq_category_hide_qa_accordion) {
$('#faq-expand-all', context).show();
$('#faq-expand-all a.faq-expand-all-link', context).show();
// Add collapse link click event.
$('#faq-expand-all a.faq-collapse-all-link:not(.faq-processed)', context).addClass('faq-processed').click(function () {
$(this).hide();
$('#faq-expand-all a.faq-expand-all-link').show();
$('div.faq-qa-hide').slideUp('slow', function() {
$(this).removeClass('expanded');
});
$('div.faq-dd-hide-answer').slideUp('slow', function() {
$(this).removeClass('expanded');
});
});
// Add expand link click event.
$('#faq-expand-all a.faq-expand-all-link:not(.faq-processed)', context).addClass('faq-processed').click(function () {
$(this).hide();
$('#faq-expand-all a.faq-collapse-all-link').show();
$('div.faq-qa-hide').slideDown('slow', function() {
$(this).addClass('expanded');
});
$('div.faq-dd-hide-answer').slideDown('slow', function() {
$(this).addClass('expanded');
});
});
}
// Handle faq_category_settings_form.
faq_display_handler();
questions_top_handler();
categories_handler();
teaser_handler();
$("input[name=faq_display]:not(.faq-processed)", context).addClass('faq-processed').bind("click", faq_display_handler);
$("input[name=faq_qa_mark]:not(.faq-processed)", context).addClass('faq-processed').bind("click", qa_mark_handler);
$("input[name=faq_use_teaser]:not(.faq-processed)", context).addClass('faq-processed').bind("click", teaser_handler);
$("input[name=faq_category_display]:not(.faq-processed)", context).addClass('faq-processed').bind("click", categories_handler);
$("input[name=faq_hide_child_terms]:not(.faq-processed)", context).addClass('faq-processed').bind("click", child_term_handler);
}

File diff suppressed because it is too large Load diff

View file

@ -1,136 +0,0 @@
<?php
/**
* @file
* Template file for the FAQ page if set to show/hide categorized answers when
* the question is clicked.
*/
/**
* Available variables:
*
* $display_header
* Boolean value controlling whether a header should be displayed.
* $header_title
* The category title.
* $category_depth
* The term or category depth.
* $description
* The current page's description.
* $term_image
* The HTML for the category image. This is empty if the taxonomy image module
* is not enabled or there is no image associated with the term.
* $display_faq_count
* Boolean value controlling whether or not the number of faqs in a category
* should be displayed.
* $question_count
* The number of questions in category.
* $nodes
* An array of nodes to be displayed.
* Each node stored in the $nodes array has the following information:
* $node['question'] is the question text.
* $node['body'] is the answer text.
* $node['links'] represents the node links, e.g. "Read more".
* $use_teaser
* Whether $node['body'] contains the full body or just the teaser text.
* $container_class
* The class attribute of the element containing the sub-categories, either
* 'faq-qa' or 'faq-qa-hide'. This is used by javascript to open/hide
* a category's faqs.
* $subcat_list
* An array of sub-categories. Each sub-category stored in the $subcat_list
* array has the following information:
* $subcat['link'] is the link to the sub-category.
* $subcat['description'] is the sub-category description.
* $subcat['count'] is the number of questions in the sub-category.
* $subcat['term_image'] is the sub-category (taxonomy) image.
* $subcat_list_style
* The style of the sub-category list, either ol or ul (ordered or unordered).
* $subcat_body_list
* The sub-categories faqs, recursively themed (by this template).
*/
if ($category_depth > 0) {
$hdr = 'h6';
}
else {
$hdr = 'h5';
}
?><div class="faq-category-group">
<!-- category header with title, link, image, description, and count of
questions inside -->
<div class="faq-qa-header">
<?php if ($display_header): ?>
<<?php print $hdr; ?> class="faq-header">
<?php print $term_image; ?>
<?php print $header_title; ?>
<?php if ($display_faq_count): ?>
(<?php print $question_count; ?>)
<?php endif; ?>
</<?php print $hdr; ?>>
<?php else: ?>
<?php print $term_image; ?>
<?php endif; ?>
<?php if (!empty($description)): ?>
<div class="faq-qa-description"><?php print $description ?></div>
<?php endif; ?>
<?php if (!empty($term_image)): ?>
<div class="clear-block"></div>
<?php endif; ?>
</div> <!-- Close div: faq-qa-header -->
<?php if (!empty($subcat_list)): ?>
<!-- list subcategories, with title, link, description, count -->
<div class="item-list">
<<?php print $subcat_list_style; ?> class="faq-category-list">
<?php foreach ($subcat_list as $i => $subcat): ?>
<li>
<?php print $subcat['link']; ?>
<?php if ($display_faq_count): ?>
(<?php print $subcat['count']; ?>)
<?php endif; ?>
<?php if (!empty($subcat['description'])): ?>
<div class="faq-qa-description"><?php print $subcat['description']; ?></div>
<?php endif; ?>
<div class="clear-block"></div>
</li>
<?php endforeach; ?>
</<?php print $subcat_list_style; ?>>
</div> <!-- Close div: item-list -->
<?php endif; ?>
<div class="<?php print $container_class; ?>">
<!-- include subcategories -->
<?php if (count($subcat_body_list)): ?>
<?php foreach ($subcat_body_list as $i => $subcat_html): ?>
<div class="faq-category-indent"><?php print $subcat_html; ?></div>
<?php endforeach; ?>
<?php endif; ?>
<!-- list questions (in title link) and answers (in body) -->
<div class="faq-dl-hide-answer">
<?php if (count($nodes)): ?>
<?php foreach ($nodes as $i => $node): ?>
<div class="faq-question-answer">
<div class="faq-question faq-dt-hide-answer">
<?php print $node['question']; ?>
</div> <!-- Close div: faq-question faq-dt-hide-answer -->
<div class="faq-answer faq-dd-hide-answer">
<?php print $node['body']; ?>
<?php if (isset($node['links'])): ?>
<?php print $node['links']; ?>
<?php endif; ?>
</div> <!-- Close div: faq-answer faq-dd-hide-answer -->
</div> <!-- Close div: faq-question-answer -->
<?php endforeach; ?>
<?php endif; ?>
</div> <!-- Close div: faq-dl-hide-answer -->
</div> <!-- Close div: faq-qa / faq-qa-hide -->
</div> <!-- Close div: faq-category-group -->

View file

@ -1,126 +0,0 @@
<?php
/**
* @file
* Template file for the FAQ page if set to show the categorized answer in a
* new page.
*/
/**
* Available variables:
*
* $display_header
* Boolean value controlling whether a header should be displayed.
* $header_title
* The category title.
* $category_depth
* The term or category depth.
* $description
* The current page's description.
* $term_image
* The HTML for the category image. This is empty if the taxonomy image module
* is not enabled or there is no image associated with the term.
* $display_faq_count
* Boolean value controlling whether or not the number of faqs in a category
* should be displayed.
* $question_count
* The number of questions in category.
* $question_list
* An array of questions.
* $question_list_style, either ol or ul
* The style of the question list, either ol or ul (ordered or unordered).
* $container_class
* The class attribute of the element containing the sub-categories, either
* 'faq-qa' or 'faq-qa-hide'. This is used by javascript to open/hide
* a category's faqs.
* $subcat_list
* An array of sub-categories. Each sub-category stored in the $subcat_list
* array has the following information:
* $subcat['link'] is the link to the sub-category.
* $subcat['description'] is the sub-category description.
* $subcat['count'] is the number of questions in the sub-category.
* $subcat['term_image'] is the sub-category (taxonomy) image.
* $subcat_list_style
* The style of the sub-category list, either ol or ul (ordered or unordered).
* $subcat_body_list
* The sub-categories faqs, recursively themed (by this template).
*/
if ($category_depth > 0) {
$hdr = 'h6';
}
else {
$hdr = 'h5';
}
?><div class="faq-category-group">
<!-- category header with title, link, image, description, and count of
questions inside -->
<div class="faq-qa-header">
<?php if ($display_header): ?>
<<?php print $hdr; ?> class="faq-header">
<?php print $term_image; ?>
<?php print $header_title; ?>
<?php if ($display_faq_count): ?>
(<?php print $question_count; ?>)
<?php endif; ?>
</<?php print $hdr; ?>>
<?php else: ?>
<?php print $term_image; ?>
<?php endif; ?>
<?php if (!empty($description)): ?>
<div class="faq-qa-description"><?php print $description ?></div>
<?php endif; ?>
<?php if (!empty($term_image)): ?>
<div class="clear-block"></div>
<?php endif; ?>
</div> <!-- Close div: faq-qa-header -->
<!-- list subcategories, with title, link, description, count -->
<?php if (!empty($subcat_list)): ?>
<div class="item-list">
<<?php print $subcat_list_style; ?> class="faq-category-list">
<?php foreach ($subcat_list as $i => $subcat): ?>
<li>
<?php print $subcat['link']; ?>
<?php if ($display_faq_count): ?>
(<?php print $subcat['count']; ?>)
<?php endif; ?>
<?php if (!empty($subcat['description'])): ?>
<div class="faq-qa-description"><?php print $subcat['description']; ?></div>
<?php endif; ?>
<div class="clear-block"></div>
</li>
<?php endforeach; ?>
</<?php print $subcat_list_style; ?>>
</div> <!-- Close div: item-list -->
<?php endif; ?>
<div class="<?php print $container_class; ?>">
<!-- include subcategories -->
<?php if (count($subcat_body_list)): ?>
<?php foreach ($subcat_body_list as $i => $subcat_html): ?>
<div class="faq-category-indent"><?php print $subcat_html; ?></div>
<?php endforeach; ?>
<?php endif; ?>
<!-- list questions (in title link) and answers (in body) -->
<?php if (!empty($question_list)): ?>
<div class="item-list">
<<?php print $question_list_style; ?> class="faq-category-list">
<?php foreach ($question_list as $i => $question_link): ?>
<li>
<?php print $question_link; ?>
</li>
<?php endforeach; ?>
</<?php print $question_list_style; ?>>
</div> <!-- Close div: item-list -->
<?php endif; ?>
</div> <!-- Close div: faq-qa / faq-qa-hide -->
</div> <!-- Close div: faq-category-group -->

View file

@ -1,145 +0,0 @@
<?php
/**
* @file
* Template file for the FAQ page if set to show categorized questions inline.
*/
/**
* Available variables:
*
* $display_header
* Boolean value controlling whether a header should be displayed.
* $header_title
* The category title.
* $category_depth
* The term or category depth.
* $description
* The current page's description.
* $term_image
* The HTML for the category image. This is empty if the taxonomy image module
* is not enabled or there is no image associated with the term.
* $display_faq_count
* Boolean value controlling whether or not the number of faqs in a category
* should be displayed.
* $question_count
* The number of questions in category.
* $nodes
* An array of nodes to be displayed.
* Each node stored in the $nodes array has the following information:
* $node['question'] is the question text.
* $node['body'] is the answer text.
* $node['links'] represents the node links, e.g. "Read more".
* $use_teaser
* Whether $node['body'] contains the full body or just the teaser text.
* $container_class
* The class attribute of the element containing the sub-categories, either
* 'faq-qa' or 'faq-qa-hide'. This is used by javascript to open/hide
* a category's faqs.
* $question_label
* The label to prepend to the question text.
* $answer_label
* The label to prepend to the answer text.
* $subcat_list
* An array of sub-categories. Each sub-category stored in the $subcat_list
* array has the following information:
* $subcat['link'] is the link to the sub-category.
* $subcat['description'] is the sub-category description.
* $subcat['count'] is the number of questions in the sub-category.
* $subcat['term_image'] is the sub-category (taxonomy) image.
* $subcat_list_style
* The style of the sub-category list, either ol or ul (ordered or unordered).
* $subcat_body_list
* The sub-categories faqs, recursively themed (by this template).
*/
if ($category_depth > 0) {
$hdr = 'h6';
}
else {
$hdr = 'h5';
}
?>
<a name="top"></a>
<div class="faq-category-group">
<!-- category header with title, link, image, description, and count of
questions inside -->
<div class="faq-qa-header">
<?php if ($display_header): ?>
<<?php print $hdr; ?> class="faq-header">
<?php print $term_image; ?>
<?php print $header_title; ?>
<?php if ($display_faq_count): ?>
(<?php print $question_count; ?>)
<?php endif; ?>
</<?php print $hdr; ?>>
<?php else: ?>
<?php print $term_image; ?>
<?php endif; ?>
<?php if (!empty($description)): ?>
<div class="faq-qa-description"><?php print $description ?></div>
<?php endif; ?>
<?php if (!empty($term_image)): ?>
<div class="clear-block"></div>
<?php endif; ?>
</div> <!-- Close div: faq-qa-header -->
<!-- list subcategories, with title, link, description, count -->
<?php if (!empty($subcat_list)): ?>
<div class="item-list">
<<?php print $subcat_list_style; ?> class="faq-category-list">
<?php foreach ($subcat_list as $i => $subcat): ?>
<li>
<?php print $subcat['link']; ?>
<?php if ($display_faq_count): ?>
(<?php print $subcat['count']; ?>)
<?php endif; ?>
<?php if (!empty($subcat['description'])): ?>
<div class="faq-qa-description"><?php print $subcat['description']; ?></div>
<?php endif; ?>
<div class="clear-block"></div>
</li>
<?php endforeach; ?>
</<?php print $subcat_list_style; ?>>
</div> <!-- Close div: item-list -->
<?php endif; ?>
<div class="<?php print $container_class; ?>">
<!-- include subcategories -->
<?php if (count($subcat_body_list)): ?>
<?php foreach ($subcat_body_list as $i => $subcat_html): ?>
<div class="faq-category-indent"><?php print $subcat_html; ?></div>
<?php endforeach; ?>
<?php endif; ?>
<!-- list questions (in title link) and answers (in body) -->
<div>
<?php if (count($nodes)): ?>
<?php foreach ($nodes as $i => $node): ?>
<div class="faq-question">
<?php if (!empty($question_label)): ?>
<strong class="faq-question-label"><?php print $question_label; ?></strong>
<?php endif; ?>
<?php print $node['question']; ?>
</div> <!-- Close div: faq-question -->
<div class="faq-answer">
<?php if (!empty($answer_label)): ?>
<strong class="faq-answer-label"><?php print $answer_label; ?></strong>
<?php endif; ?>
<?php print $node['body']; ?>
<?php if (isset($node['links'])): ?>
<?php print $node['links']; ?>
<?php endif; ?>
</div> <!-- Close div: faq-answer -->
<?php endforeach; ?>
<?php endif; ?>
</div> <!-- Close div -->
</div> <!-- Close div: faq-qa / faq-qa-hide -->
</div> <!-- Close div: faq-category-group -->

View file

@ -1,135 +0,0 @@
<?php
/**
* @file
* Template file for the answers section of the FAQ page if set to show
* categorized questions at the top of the page.
*/
/**
* Available variables:
*
* $display_answers
* Whether or not there should be any output.
* $display_header
* Boolean value controlling whether a header should be displayed.
* $header_title
* The category title.
* $category_name
* The name of the category.
* $answer_category_name
* Whether the category name should be displayed with the answers.
* $group_questions_top
* Whether the questions and answers should be grouped together.
* $category_depth
* The term or category depth.
* $description
* The current page's description.
* $term_image
* The HTML for the category image. This is empty if the taxonomy image module
* is not enabled or there is no image associated with the term.
* $display_faq_count
* Boolean value controlling whether or not the number of faqs in a category
* should be displayed.
* $question_count
* The number of questions in category.
* $nodes
* An array of nodes to be displayed.
* Each node stored in the $nodes array has the following information:
* $node['question'] is the question text.
* $node['body'] is the answer text.
* $node['links'] represents the node links, e.g. "Read more".
* $use_teaser
* Whether $node['body'] contains the full body or just the teaser text.
* $question_label
* The question label, intended to be pre-pended to the question text.
* $answer_label
* The answer label, intended to be pre-pended to the answer text.
* $container_class
* The class attribute of the element containing the sub-categories, either
* 'faq-qa' or 'faq-qa-hide'. This is used by javascript to open/hide
* a category's faqs.
* $subcat_body_list
* The sub-categories faqs, recursively themed (by this template).
*/
if ($category_depth > 0) {
$hdr = 'h6';
}
else {
$hdr = 'h5';
}
$depth = 0;
?><?php if ($display_answers): ?>
<?php if ($answer_category_name): ?>
<?php while ($depth < $category_depth): ?>
<div class="faq-category-indent">
<?php $depth++; endwhile; ?>
<?php endif; ?>
<div class="faq-category-menu">
<?php if ($display_header): ?>
<<?php print $hdr; ?> class="faq-header">
<?php print $term_image; ?>
<?php print $category_name; ?>
</<?php print $hdr; ?>>
<div class="clear-block"></div>
<div class="faq-category-group">
<div>
<?php endif; ?>
<?php if (!$answer_category_name || $display_header): ?>
<!-- Include subcategories. -->
<?php if (count($subcat_body_list)): ?>
<?php foreach ($subcat_body_list as $i => $subcat_html): ?>
<?php print $subcat_html; ?>
<?php endforeach; ?>
<?php endif; ?>
<?php if (!$display_header): ?>
<div class="faq-category-group">
<div>
<?php endif; ?>
<!-- List questions (in title link) and answers (in body). -->
<?php if (count($nodes)): ?>
<?php foreach ($nodes as $i => $node): ?>
<div class="faq-question">
<?php if (!empty($question_label)): ?>
<strong class="faq-question-label"><?php print $question_label; ?></strong>
<?php endif; ?>
<?php print $node['question']; ?>
</div> <!-- Close div: faq-question -->
<div class="faq-answer">
<?php if (!empty($answer_label)): ?>
<strong class="faq-answer-label"><?php print $answer_label; ?></strong>
<?php endif; ?>
<?php print $node['body']; ?>
<?php if (isset($node['links'])): ?>
<?php print $node['links']; ?>
<?php endif; ?>
</div> <!-- Close div: faq-answer -->
<?php endforeach; ?>
<?php endif; ?>
<?php endif; ?>
</div> <!-- Close div -->
</div> <!-- Close div: faq-category-group -->
</div>
<?php if ($answer_category_name): ?>
<?php while ($depth > 0): ?>
</div> <!-- Close div: faq-category-indent -->
<?php $depth--; endwhile; ?>
<?php endif; ?>
<?php
endif; // if display_answers

View file

@ -1,180 +0,0 @@
<?php
/**
* @file
* Template file for the questions section of the FAQ page if set to show
* categorized questions at the top of the page.
*/
/**
* Available variables:
*
* $display_header
* Boolean value controlling whether a header should be displayed.
* $header_title
* The category title.
* $category_name
* The name of the category.
* $answer_category_name
* Whether the category name should be displayed with the answers.
* $group_questions_top
* Whether the questions and answers should be grouped together.
* $category_depth
* The term or category depth.
* $description
* The current page's description.
* $term_image
* The HTML for the category image. This is empty if the taxonomy image module
* is not enabled or there is no image associated with the term.
* $display_faq_count
* Boolean value controlling whether or not the number of faqs in a category
* should be displayed.
* $question_count
* The number of questions in category.
* $nodes
* An array of nodes to be displayed.
* Each node stored in the $nodes array has the following information:
* $node['question'] is the question text.
* $node['body'] is the answer text.
* $node['links'] represents the node links, e.g. "Read more".
* $use_teaser
* Whether $node['body'] contains the full body or just the teaser text.
* $container_class
* The class attribute of the element containing the sub-categories, either
* 'faq-qa' or 'faq-qa-hide'. This is used by javascript to open/hide
* a category's faqs.
* $question_list
* An array of question links.
* $question_list_style
* The style of the question list, ul for unordered, ol for ordered.
* $subcat_list
* An array of sub-categories. Each sub-category stored in the $subcat_list
* array has the following information:
* $subcat['link'] is the link to the sub-category.
* $subcat['description'] is the sub-category description.
* $subcat['count'] is the number of questions in the sub-category.
* $subcat['term_image'] is the sub-category (taxonomy) image.
* $subcat_list_style
* The style of the sub-category list, either ol or ul (ordered or unordered).
* $subcat_body_list
* The sub-categories faqs, recursively themed (by this template).
*/
if ($category_depth > 0) {
$hdr = 'h6';
}
else {
$hdr = 'h5';
}
?>
<a name="top"></a>
<div class="faq-category-menu">
<!-- category header with title, link, image, description, and count of questions inside -->
<div class="faq-qa-header">
<?php if ($display_header): ?>
<<?php print $hdr; ?> class="faq-header">
<?php print $term_image; ?>
<?php print $header_title; ?>
<?php if ($display_faq_count): ?>
(<?php print $question_count; ?>)
<?php endif; ?>
</<?php print $hdr; ?>>
<?php else: ?>
<?php print $term_image; ?>
<?php endif; ?>
<?php if (!empty($description)): ?>
<div class="faq-qa-description"><?php print $description ?></div>
<?php endif; ?>
<?php if (!empty($term_image)): ?>
<div class="clear-block"></div>
<?php endif; ?>
</div> <!-- Close div: faq-qa-header -->
<?php if (!empty($subcat_list)): ?>
<!-- list subcategories, with title, link, description, count -->
<div class="item-list">
<<?php print $subcat_list_style; ?> class="faq-category-list">
<?php foreach ($subcat_list as $i => $subcat): ?>
<li>
<?php print $subcat['link']; ?>
<?php if ($display_faq_count): ?>
(<?php print $subcat['count']; ?>)
<?php endif; ?>
<?php if (!empty($subcat['description'])): ?>
<div class="faq-qa-description"><?php print $subcat['description']; ?></div>
<?php endif; ?>
<div class="clear-block"></div>
</li>
<?php endforeach; ?>
</<?php print $subcat_list_style; ?>>
</div> <!-- Close div: item-list -->
<?php endif; ?>
<div class="<?php print $container_class; ?>">
<?php // include subcategories ?>
<?php if (count($subcat_body_list)): ?>
<?php foreach ($subcat_body_list as $i => $subcat_html): ?>
<div class="faq-category-indent"><?php print $subcat_html; ?></div>
<?php endforeach; ?>
<?php endif; ?>
<?php // list question links ?>
<?php if (!empty($question_list)): ?>
<div class="item-list">
<<?php print $question_list_style; ?> class="faq-ul-questions-top">
<?php foreach ($question_list as $i => $question_link): ?>
<li>
<?php print $question_link; ?>
</li>
<?php endforeach; ?>
</<?php print $question_list_style; ?>>
</div> <!-- Close div: item-list -->
<?php endif; ?>
<?php if (!$group_questions_top && $category_display != 'hide_qa'): ?>
</div> <!-- Close div: faq-qa / faq-qa-hide -->
</div> <!-- Close div: faq-category-menu -->
<?php endif; ?>
<?php if ($answer_category_name): ?>
<!-- Display header before answers in some layouts. -->
<<?php print $hdr; ?> class="faq-header">
<?php print $term_image; ?>
<?php print $category_name; ?>
</<?php print $hdr; ?>>
<div class="clear-block"></div>
<?php endif; ?>
<?php // List questions (in title link) and answers (in body). ?>
<div class="faq-category-group">
<div>
<?php if (count($nodes)): ?>
<?php foreach ($nodes as $i => $node): ?>
<div class="faq-question"><?php // Strong question label here? ?>
<?php print $node['question']; ?>
</div> <!-- Close div: faq-question -->
<div class="faq-answer">
<strong><?php print $answer_label; ?></strong>
<?php print $node['body']; ?>
<?php if (isset($node['links'])): ?>
<?php print $node['links']; ?>
<?php endif; ?>
</div> <!-- Close div: faq-answer -->
<?php endforeach; ?>
<?php endif; ?>
</div> <!-- Close div -->
</div> <!-- Close div: faq-category-group -->
<?php if ($group_questions_top || $category_display == 'hide_qa'): ?>
</div> <!-- Close div: faq-qa / faq-qa-hide -->
</div> <!-- Close div: faq-category-menu -->
<?php
endif;

View file

@ -1,39 +0,0 @@
<?php
/**
* @file
* Template file for the FAQ page if set to show/hide the answers when the
* question is clicked.
*/
/**
* Available variables:
*
* $nodes
* The array of nodes to be displayed.
* Each $node array contains the following information:
* $node['question'] is the question text.
* $node['body'] is the answer text.
* $node['links'] represents the node links, e.g. "Read more".
* $use_teaser
* Is true if $node['body'] is a teaser.
*/
?><div>
<?php if (count($nodes)): ?>
<?php foreach ($nodes as $node): ?>
<?php // Cycle through each of the nodes. We now have the variable $node to work with. ?>
<div class="faq-question-answer">
<div class="faq-question faq-dt-hide-answer">
<?php print $node['question']; ?>
</div> <!-- Close div: faq-question faq-dt-hide-answer -->
<div class="faq-answer faq-dd-hide-answer">
<?php print $node['body']; ?>
<?php if (isset($node['links'])): ?>
<?php print $node['links']; ?>
<?php endif; ?>
</div> <!-- Close div: faq-answer faq-dd-hide-answer -->
</div> <!-- Close div: faq-question-answer -->
<?php endforeach; ?>
<?php endif; ?>
</div> <!-- Close div -->

View file

@ -1,20 +0,0 @@
<?php
/**
* @file
* Template file for the FAQ page if set to show the answer in a new page.
*/
/**
* Available variables:
*
* $list_style
* The style of the list, either ol or ul (ordered list or unordered list).
* $list_items
* An array of nodes to be displayed in the list.
* $list
* Pre-formatted list.
*/
?>
<?php
print $list;

View file

@ -1,49 +0,0 @@
<?php
/**
* @file
* Template file for the FAQ page if set to show the questions inline.
*/
/**
* Available variables:
*
* $nodes
* The array of nodes to be displayed.
* Each node stored in the $nodes array has the following information:
* $node['question'] is the question text.
* $node['body'] is the answer text.
* $node['links'] represents the node links, e.g. "Read more".
* $question_label
* The question label, intended to be pre-pended to the question text.
* $answer_label
* The answer label, intended to be pre-pended to the answer text.
* $use_teaser
* Tells whether $node['body'] contains the full body or just the teaser
*/
?>
<a name="top"></a>
<div>
<?php if (count($nodes)): ?>
<?php foreach ($nodes as $node): ?>
<?php // Cycle through the $nodes array so that we now have a $node variable to work with. ?>
<br />
<div class="faq-question">
<?php if (!empty($question_label)): ?>
<strong class="faq-question-label"><?php print $question_label; ?></strong>
<?php endif; ?>
<?php print $node['question']; ?>
</div> <!-- Close div: faq-question -->
<div class="faq-answer">
<?php if (!empty($answer_label)): ?>
<strong class="faq-answer-label"><?php print $answer_label; ?></strong>
<?php endif; ?>
<?php print $node['body']; ?>
<?php if (isset($node['links'])): ?>
<?php print $node['links']; ?>
<?php endif; ?>
</div> <!-- Close div: faq-answer -->
<?php endforeach; ?>
<?php endif; ?>
</div> <!-- Close div -->

View file

@ -1,56 +0,0 @@
<?php
/**
* @file
* Template file for the FAQ page if set to show the questions in a list at the
* top.
*/
/**
* Available variables:
*
* $questions_list
* Pre-formatted list of questions.
* $questions
* An array of questions to use for producing the question list at the top.
* $answers
* An array of answers to use for producing the main body of text.
* $answers[$key]['question'] is the question text.
* $answers[$key]['body'] is the answer text.
* $answers[$key]['links'] represents the node links, e.g. "Read more".
* $use_teaser
* Is true if $answer['body'] is a teaser.
* $list_style
* Represents the style of list, ul for unordered, ol for ordered.
* $question_label
* The question label, intended to be pre-pended to the question text.
* $answer_label
* The answer label, intended to be pre-pended to the answer text.
* $limit
* Represents the number of items.
*/
?>
<a name="top"></a>
<?php print $questions_list ?>
<br />
<?php $key = 0; ?>
<?php while ($key < $limit): ?>
<?php // Cycle through all the answers and "more" links. $key will represent the applicable position in the arrays. ?>
<div class="faq-question">
<?php if (!empty($question_label)): ?>
<strong class="faq-question-label"><?php print $question_label; ?></strong>
<?php endif; ?>
<?php print $answers[$key]['question']; ?>
</div> <!-- Close div: faq-question -->
<div class="faq-answer">
<?php if (!empty($answer_label)): ?>
<strong class="faq-answer-label"><?php print $answer_label; ?></strong>
<?php endif; ?>
<?php print $answers[$key]['body']; ?>
<?php print $answers[$key]['links']; ?>
</div> <!-- Close div: faq-answer -->
<?php // Increment $key to move on to the next position. ?>
<?php $key++; ?>
<?php
endwhile;

View file

@ -1,148 +0,0 @@
<?php
/**
* @file
* FAQ page callbacks for the "hide answer" layouts.
*/
/**
* Create FAQ page if set to show/hide answer when question is clicked.
*
* @param &$variables
* Array reference of arguments given to the theme() function.
*/
function template_preprocess_faq_hide_answer(&$variables) {
$data = $variables['data'];
$this_page = $_GET['q'];
// Fetch configuration.
$teaser = variable_get('faq_use_teaser', FALSE);
$links = variable_get('faq_show_node_links', FALSE);
$disable_node_links = variable_get('faq_disable_node_links', FALSE);
$nodes = array();
$count = 0;
foreach ($data as $node) {
$anchor = 'n' . $node->nid;
faq_view_question($nodes[$count], $node, $this_page, $anchor);
faq_view_answer($nodes[$count], $node, array(), $teaser, $links);
$count++;
}
$variables['use_teaser'] = $teaser;
$variables['nodes'] = $nodes;
}
/**
* Create categorized FAQ page if set to show answer when question is clicked.
*
* @param &$variables
* Array reference of arguments given to the theme() function.
*/
function template_preprocess_faq_category_hide_answer(&$variables) {
$data = $variables['data'];
$category_display = $variables['category_display'];
$term = $variables['term'];
$parent_term = $variables['parent_term'];
$class = $variables['class'];
// Fetch configuration.
$teaser = variable_get('faq_use_teaser', FALSE);
$variables['use_teaser'] = $teaser;
$links = variable_get('faq_show_node_links', FALSE);
$disable_node_links = variable_get('faq_disable_node_links', FALSE);
$display_faq_count = variable_get('faq_count', FALSE);
$hide_child_terms = variable_get('faq_hide_child_terms', FALSE);
$show_term_page_children = variable_get('faq_show_term_page_children', FALSE);
$default_sorting = variable_get('faq_default_sorting', 'DESC');
// Initialise some variables.
$default_weight = 0;
if ($default_sorting != 'DESC') {
$default_weight = 1000000;
}
$this_page = $_GET['q'];
$get_child_terms = 0;
// Check if we're on a faq page.
if (arg(0) == 'faq') {
// Check if we're on a categorized faq page.
if (is_numeric(arg(1))) {
$get_child_terms = arg(1);
}
}
// Force some settings in case we're processing a special faq question list
// created by a custom call to faq_page().
elseif (!empty($parent_term)) {
$get_child_terms = $parent_term->tid;
$show_term_page_children = TRUE;
}
// Get number of questions, and account for hidden sub-categories.
$count = 0;
if ($display_faq_count && $hide_child_terms) {
$count = taxonomy_term_count_nodes($term->tid, 'faq');
}
$variables['display_faq_count'] = $display_faq_count;
// Get taxonomy image.
$variables['term_image'] = '';
if (module_exists('taxonomy_image')) {
$variables['term_image'] = taxonomy_image_display($term->tid, array('class' => 'faq-tax-image'));
}
// Configure header.
$variables['category_depth'] = $term->depth;
$variables['category_name'] = check_plain(faq_tt("taxonomy:term:$term->tid:name", $term->name));
if ($category_display == 'hide_qa') {
$variables['header_title'] = l(faq_tt("taxonomy:term:$term->tid:name", $term->name), "faq/$term->tid");
}
else {
$variables['header_title'] = check_plain(faq_tt("taxonomy:term:$term->tid:name", $term->name));
}
// Configure category description.
$variables['description'] = check_markup(faq_tt("taxonomy:term:$term->tid:description", $term->description));
// Get list of sub-categories if necessary.
$child_categories = array();
if (($show_term_page_children || $hide_child_terms) && $category_display == 'new_page') {
$child_categories = faq_view_child_category_headers($term);
}
$variables['subcat_list'] = $child_categories;
$variables['subcat_list_style'] = variable_get('faq_category_listing', 'ul');
// Configure class (faq-qa or faq-qa-hide).
if ($get_child_terms == $term->tid) {
$variables['container_class'] = 'faq-qa';
}
else {
$variables['container_class'] = $class;
}
// Configure sub-category bodies (theme recursively).
$variables['subcat_body_list'] = array();
if (($get_child_terms && $category_display == 'categories_inline') || ((($show_term_page_children && $this_page != 'faq') || $hide_child_terms) && $category_display == 'hide_qa')) {
$variables['subcat_body_list'] = faq_get_child_categories_faqs($term, 'faq_category_hide_answer', $default_weight, $default_sorting, $category_display, $variables['class'], $parent_term);
}
if (!count($data)) {
$variables['question_count'] = $count;
$variables['nodes'] = array();
return;
}
$nodes = array();
foreach ($data as $node) {
if (!$hide_child_terms) {
$count++;
}
$node_var = array();
$anchor = 't' . $term->tid . 'n' . $node->nid;
faq_view_question($node_var, $node, $this_page, $anchor);
faq_view_answer($node_var, $node, array(), $teaser, $links);
$nodes[] = $node_var;
}
$variables['nodes'] = $nodes;
$variables['question_count'] = $count;
}

View file

@ -1,134 +0,0 @@
<?php
/**
* @file
* FAQ page callbacks for the "new page" layouts.
*/
/**
* Create FAQ page if set to show the answer in a new page.
*
* @param &$variables
* Array reference of arguments given to the theme() function.
*/
function template_preprocess_faq_new_page(&$variables) {
$items = array();
$data = $variables['data'];
foreach ($data as $node) {
$items[] = l($node->title, "node/$node->nid");
}
$list_style = variable_get('faq_question_listing', 'ul');
$variables['list_style'] = $list_style;
$variables['list_items'] = $items;
$variables['list'] = theme('item_list', $items, NULL, $list_style, array("class" => "faq-question-listing"));
}
/**
* Create categorized FAQ page if set to show answer in a new page.
*
* @param &$variables
* Array reference of arguments given to the theme() function.
*/
function template_preprocess_faq_category_new_page(&$variables) {
$data = $variables['data'];
$category_display = $variables['category_display'];
$term = $variables['term'];
$parent_term = $variables['parent_term'];
$class = $variables['class'];
$this_page = $_GET['q'];
// Fetch configuration.
$display_faq_count = variable_get('faq_count', FALSE);
$hide_child_terms = variable_get('faq_hide_child_terms', FALSE);
$show_term_page_children = variable_get('faq_show_term_page_children', FALSE);
// Initialise some variables.
$get_child_terms = 0;
// Check if we're on a faq page.
if (arg(0) == 'faq') {
// Check if we're on a categorized faq page.
if (is_numeric(arg(1))) {
$get_child_terms = arg(1);
}
}
// Force some settings in case we're processing a special faq question list
// created by a custom call to faq_page().
elseif (!empty($parent_term)) {
$get_child_terms = $parent_term->tid;
$show_term_page_children = TRUE;
}
$default_sorting = variable_get('faq_default_sorting', 'DESC');
$default_weight = 0;
if ($default_sorting != 'DESC') {
$default_weight = 1000000;
}
// Get number of questions, and account for hidden sub-categories.
$count = 0;
if ($display_faq_count && $hide_child_terms) {
$count = taxonomy_term_count_nodes($term->tid, 'faq');
}
$variables['display_faq_count'] = $display_faq_count;
// Get taxonomy image.
$variables['term_image'] = '';
if (module_exists('taxonomy_image')) {
$variables['term_image'] = taxonomy_image_display($term->tid, array('class' => 'faq-tax-image'));
}
// Configure header.
$variables['category_depth'] = $term->depth;
if ($category_display == 'hide_qa') {
$variables['header_title'] = l(faq_tt("taxonomy:term:$term->tid:name", $term->name), "faq/$term->tid");
}
else {
$variables['header_title'] = check_plain(faq_tt("taxonomy:term:$term->tid:name", $term->name));
}
// Configure category description.
$variables['description'] = check_markup(faq_tt("taxonomy:term:$term->tid:description", $term->description));
// Get list of sub-categories if necessary.
$child_categories = array();
if (($show_term_page_children || $hide_child_terms) && $category_display == 'new_page') {
$child_categories = faq_view_child_category_headers($term);
}
$variables['subcat_list'] = $child_categories;
$variables['subcat_list_style'] = variable_get('faq_category_listing', 'ul');
// Configure class (faq-qa or faq-qa-hide).
if ($get_child_terms == $term->tid) {
$variables['container_class'] = 'faq-qa';
}
else {
$variables['container_class'] = $class;
}
// Configure sub-category bodies (theme recursively).
$variables['subcat_body_list'] = array();
if (($get_child_terms && $category_display == 'categories_inline') || ((($show_term_page_children && $this_page != 'faq') || $hide_child_terms) && $category_display == 'hide_qa')) {
$variables['subcat_body_list'] = faq_get_child_categories_faqs($term, 'faq_category_new_page', $default_weight, $default_sorting, $category_display, $variables['class'], $parent_term);
}
if (!count($data)) {
$variables['question_count'] = $count;
return;
}
$nodes = array();
foreach ($data as $node) {
if (!$hide_child_terms) {
$count++;
}
$nodes[] = l($node->title, "node/$node->nid");
}
$variables['question_list'] = $nodes;
$variables['question_list_style'] = variable_get('faq_question_listing', 'ul');
$variables['question_count'] = $count;
}

View file

@ -1,168 +0,0 @@
<?php
/**
* @file
* FAQ page callbacks for the "questions inline" layouts.
*/
/**
* Create the FAQ page if set to show the questions inline.
*
* @param &$variables
* Array reference of arguments given to the theme() function.
*/
function template_preprocess_faq_questions_inline(&$variables) {
$data = $variables['data'];
// Fetch configuration.
$disable_node_links = variable_get('faq_disable_node_links', FALSE);
$teaser = variable_get('faq_use_teaser', FALSE);
$links = variable_get('faq_show_node_links', FALSE);
// Configure "back to top" link.
$this_page = $_GET['q'];
$back_to_top = faq_init_back_to_top($this_page);
// Configure labels.
$variables['question_label'] = '';
$variables['answer_label'] = '';
if (variable_get('faq_qa_mark', FALSE)) {
$variables['question_label'] = check_plain(variable_get('faq_question_label', "Q:"));
$variables['answer_label'] = check_plain(variable_get('faq_answer_label', "A:"));
}
$nodes = array();
$count = 0;
foreach ($data as $node) {
$anchor = 'n' . $node->nid;
faq_view_question($nodes[$count], $node, NULL, $anchor);
faq_view_answer($nodes[$count], $node, $back_to_top, $teaser, $links);
$count++;
}
$variables['use_teaser'] = $teaser;
$variables['nodes'] = $nodes;
}
/**
* Create categorized FAQ page if set to show/hide the questions inline.
*
* @param &$variables
* Array reference of arguments given to the theme() function.
*/
function template_preprocess_faq_category_questions_inline(&$variables) {
$data = $variables['data'];
$category_display = $variables['category_display'];
$term = $variables['term'];
$parent_term = $variables['parent_term'];
$class = $variables['class'];
// Fetch configuration.
$teaser = variable_get('faq_use_teaser', FALSE);
$links = variable_get('faq_show_node_links', FALSE);
$disable_node_links = variable_get('faq_disable_node_links', FALSE);
$display_faq_count = variable_get('faq_count', FALSE);
$hide_child_terms = variable_get('faq_hide_child_terms', FALSE);
$show_term_page_children = variable_get('faq_show_term_page_children', FALSE);
$default_sorting = variable_get('faq_default_sorting', 'DESC');
// Initialise some variables.
$default_weight = 0;
if ($default_sorting != 'DESC') {
$default_weight = 1000000;
}
$this_page = $_GET['q'];
$get_child_terms = 0;
// Check if we're on a faq page.
if (arg(0) == 'faq') {
// Check if we're on a categorized faq page.
if (is_numeric(arg(1))) {
$get_child_terms = arg(1);
}
}
// Force some settings in case we're processing a special faq question list
// created by a custom call to faq_page().
elseif (!empty($parent_term)) {
$get_child_terms = $parent_term->tid;
$show_term_page_children = TRUE;
}
// Configure "back to top" link.
$back_to_top = faq_init_back_to_top($this_page);
// Configure labels.
$variables['question_label'] = '';
$variables['answer_label'] = '';
if (variable_get('faq_qa_mark', FALSE)) {
$variables['question_label'] = check_plain(variable_get('faq_question_label', "Q:"));
$variables['answer_label'] = check_plain(variable_get('faq_answer_label', "A:"));
}
// Get number of questions, and account for hidden sub-categories.
$count = 0;
if ($display_faq_count && $hide_child_terms) {
$count = taxonomy_term_count_nodes($term->tid, 'faq');
}
$variables['display_faq_count'] = $display_faq_count;
// Get taxonomy image.
$variables['term_image'] = '';
if (module_exists('taxonomy_image')) {
$variables['term_image'] = taxonomy_image_display($term->tid, array('class' => 'faq-tax-image'));
}
// Configure header.
$variables['category_depth'] = $term->depth;
if ($category_display == 'hide_qa') {
$variables['header_title'] = l(faq_tt("taxonomy:term:$term->tid:name", $term->name), "faq/$term->tid");
}
else {
$variables['header_title'] = check_plain(faq_tt("taxonomy:term:$term->tid:name", $term->name));
}
// Configure category description.
$variables['description'] = check_markup(faq_tt("taxonomy:term:$term->tid:description", $term->description));
// Get list of sub-categories if necessary.
$child_categories = array();
if (($show_term_page_children || $hide_child_terms) && $category_display == 'new_page') {
$child_categories = faq_view_child_category_headers($term);
}
$variables['subcat_list'] = $child_categories;
$variables['subcat_list_style'] = variable_get('faq_category_listing', 'ul');
// Configure class (faq-qa or faq-qa-hide).
if ($get_child_terms == $term->tid) {
$variables['container_class'] = 'faq-qa';
}
else {
$variables['container_class'] = $class;
}
// Configure sub-category bodies (theme recursively).
$variables['subcat_body_list'] = array();
if (($get_child_terms && $category_display == 'categories_inline') || ((($show_term_page_children && $this_page != 'faq') || $hide_child_terms) && $category_display == 'hide_qa')) {
$variables['subcat_body_list'] = faq_get_child_categories_faqs($term, 'faq_category_questions_inline', $default_weight, $default_sorting, $category_display, $variables['class'], $parent_term);
}
if (!count($data)) {
$variables['question_count'] = $count;
return;
}
$nodes = array();
foreach ($data as $node) {
if (!$hide_child_terms) {
$count++;
}
$node_var = array();
$anchor = 't' . $term->tid . 'n' . $node->nid;
faq_view_question($node_var, $node, NULL, $anchor);
faq_view_answer($node_var, $node, $back_to_top, $teaser, $links);
$nodes[] = $node_var;
}
$variables['nodes'] = $nodes;
$variables['question_count'] = $count;
$variables['use_teaser'] = $teaser;
}

View file

@ -1,282 +0,0 @@
<?php
/**
* @file
* FAQ page callbacks for the "questions top" layouts.
*/
/**
* Create the structure of the page, when the questions are to be shown on top.
*
* @param &$variables
* Array reference of arguments given to the theme() function.
* @return
* A variable holding the HTML formatted page.
*/
function template_preprocess_faq_questions_top(&$variables) {
$data = $variables['data'];
// Fetch configuration.
$teaser = variable_get('faq_use_teaser', FALSE);
$links = variable_get('faq_show_node_links', FALSE);
$disable_node_links = variable_get('faq_disable_node_links', FALSE);
// Configure labels.
$variables['question_label'] = '';
$variables['answer_label'] = '';
if (variable_get('faq_qa_mark', FALSE)) {
$variables['question_label'] = check_plain(variable_get('faq_question_label', "Q:"));
$variables['answer_label'] = check_plain(variable_get('faq_answer_label', "A:"));
}
// Configure "back to top" link.
$this_page = $_GET['q'];
$back_to_top = faq_init_back_to_top($this_page);
// Loop through results.
$questions = array();
$answers = array();
$key = 0;
foreach ($data as $node) {
$anchor = 'n' . $node->nid;
$questions[$key] = l($node->title, $this_page, array('fragment' => $anchor));
faq_view_question($answers[$key], $node, NULL, $anchor);
faq_view_answer($answers[$key], $node, $back_to_top, $teaser, $links);
$key++;
}
$variables['limit'] = $key;
$list_style = variable_get('faq_question_listing', 'ul');
$variables['list_style'] = $list_style;
$variables['use_teaser'] = $teaser;
$variables['questions'] = $questions;
$variables['answers'] = $answers;
$variables['questions_list'] = theme('item_list', $questions, NULL, $list_style, array("class" => "faq-ul-questions-top"));
}
/**
* Create categorized questions for FAQ page if set to show questions on top.
*
* @param &$variables
* Array reference of arguments given to the theme() function.
*/
function template_preprocess_faq_category_questions_top(&$variables) {
$data = $variables['data'];
$category_display = $variables['category_display'];
$term = $variables['term'];
$parent_term = $variables['parent_term'];
$class = $variables['class'];
// Fetch configuration.
$teaser = variable_get('faq_use_teaser', FALSE);
$links = variable_get('faq_show_node_links', FALSE);
$disable_node_links = variable_get('faq_disable_node_links', FALSE);
$display_faq_count = variable_get('faq_count', FALSE);
$hide_child_terms = variable_get('faq_hide_child_terms', FALSE);
$show_term_page_children = variable_get('faq_show_term_page_children', FALSE);
$group_questions_top = variable_get('faq_group_questions_top', FALSE);
$default_sorting = variable_get('faq_default_sorting', 'DESC');
// Initialise some variables.
$default_weight = 0;
if ($default_sorting != 'DESC') {
$default_weight = 1000000;
}
$this_page = $_GET['q'];
$get_child_terms = 0;
// Check if we're on a faq page.
if (arg(0) == 'faq') {
// Check if we're on a categorized faq page.
if (is_numeric(arg(1))) {
$get_child_terms = arg(1);
}
}
// Force some settings in case we're processing a special faq question list
// created by a custom call to faq_page().
elseif (!empty($parent_term)) {
$get_child_terms = $parent_term->tid;
$show_term_page_children = TRUE;
}
// Configure "back to top" link.
$back_to_top = faq_init_back_to_top($this_page);
// Get number of questions, and account for hidden sub-categories.
$count = 0;
if ($display_faq_count && $hide_child_terms) {
$count = taxonomy_term_count_nodes($term->tid, 'faq');
}
$variables['display_faq_count'] = $display_faq_count;
// Get taxonomy image.
$variables['term_image'] = '';
if (module_exists('taxonomy_image')) {
$variables['term_image'] = taxonomy_image_display($term->tid, array('class' => 'faq-tax-image'));
}
// Configure header.
$variables['category_depth'] = $term->depth;
$variables['category_name'] = check_plain(faq_tt("taxonomy:term:$term->tid:name", $term->name));
if ($category_display == 'hide_qa') {
$variables['header_title'] = l(faq_tt("taxonomy:term:$term->tid:name", $term->name), "faq/$term->tid");
}
else {
$variables['header_title'] = check_plain(faq_tt("taxonomy:term:$term->tid:name", $term->name));
}
// Configure category description.
$variables['description'] = check_markup(faq_tt("taxonomy:term:$term->tid:description", $term->description));
// Get list of sub-categories if necessary.
$child_categories = array();
if (($show_term_page_children || $hide_child_terms) && $category_display == 'new_page') {
$child_categories = faq_view_child_category_headers($term);
}
$variables['subcat_list'] = $child_categories;
$variables['subcat_list_style'] = variable_get('faq_category_listing', 'ul');
// Configure class (faq-qa or faq-qa-hide).
if ($get_child_terms == $term->tid) {
$variables['container_class'] = 'faq-qa';
}
else {
$variables['container_class'] = $class;
}
// Configure sub-category bodies (theme recursively).
$variables['subcat_body_list'] = array();
if (($get_child_terms && $category_display == 'categories_inline') || ((($show_term_page_children && $this_page != 'faq') || $hide_child_terms) && $category_display == 'hide_qa')) {
$variables['subcat_body_list'] = faq_get_child_categories_faqs($term, 'faq_category_questions_top', $default_weight, $default_sorting, $category_display, $variables['class'], $parent_term);
}
if (!count($data)) {
$variables['question_count'] = $count;
return;
}
$questions = array();
$nodes = array();
foreach ($data as $node) {
if (!$hide_child_terms) {
$count++;
}
$anchor = 't' . $term->tid . 'n' . $node->nid;
$node_var = array();
faq_view_question($node_var, $node, NULL, $anchor);
if ($group_questions_top || $category_display == 'hide_qa') {
faq_view_answer($node_var, $node, $back_to_top, $teaser, $links);
}
$nodes[] = $node_var;
$questions[] = l($node->title, $this_page, array('fragment' => $anchor));
}
$variables['question_count'] = $count;
$variables['use_teaser'] = $teaser;
$variables['question_list'] = $questions;
$variables['question_list_style'] = variable_get('faq_question_listing', 'ul');
$variables['group_questions_top'] = $group_questions_top;
if ($group_questions_top || $category_display == "hide_qa") {
$variables['nodes'] = $nodes;
$variables['answer_category_name'] = variable_get('faq_answer_category_name', FALSE);
}
else {
$variables['nodes'] = array();
$variables['answer_category_name'] = FALSE;
}
}
/**
* Create categorized answers for FAQ page if set to show the questions on top.
*
* @param &$variables
* Array reference of arguments given to the theme() function.
*/
function template_preprocess_faq_category_questions_top_answers(&$variables) {
$data = $variables['data'];
$category_display = $variables['category_display'];
$term = $variables['term'];
$parent_term = $variables['parent_term'];
$class = $variables['class'];
// Fetch configuration.
$teaser = variable_get('faq_use_teaser', FALSE);
$links = variable_get('faq_show_node_links', FALSE);
$disable_node_links = variable_get('faq_disable_node_links', FALSE);
$hide_child_terms = variable_get('faq_hide_child_terms', FALSE);
$show_term_page_children = variable_get('faq_show_term_page_children', FALSE);
$group_questions_top = variable_get('faq_group_questions_top', FALSE);
$default_sorting = variable_get('faq_default_sorting', 'DESC');
// Configure labels.
$variables['question_label'] = '';
$variables['answer_label'] = '';
if (variable_get('faq_qa_mark', FALSE)) {
$variables['question_label'] = check_plain(variable_get('faq_question_label', "Q:"));
$variables['answer_label'] = check_plain(variable_get('faq_answer_label', "A:"));
}
// Initialise some variables.
$default_weight = 0;
if ($default_sorting != 'DESC') {
$default_weight = 1000000;
}
$variables['group_questions_top'] = $group_questions_top;
if ($group_questions_top || $category_display == "hide_qa") {
$variables['display_answers'] = FALSE;
$variables['category_depth'] = 0;
return;
}
$variables['display_answers'] = TRUE;
$this_page = $_GET['q'];
$get_child_terms = 0;
// Check if we're on a faq page.
if (arg(0) == 'faq') {
// Check if we're on a categorized faq page.
if (is_numeric(arg(1))) {
$get_child_terms = arg(1);
}
}
// Force some settings in case we're processing a special faq question list
// created by a custom call to faq_page().
elseif (!empty($parent_term)) {
$get_child_terms = $parent_term->tid;
$show_term_page_children = TRUE;
}
// Configure "back to top" link.
$back_to_top = faq_init_back_to_top($this_page);
// Get taxonomy image.
$variables['term_image'] = '';
if (module_exists('taxonomy_image')) {
$variables['term_image'] = taxonomy_image_display($term->tid, array('class' => 'faq-tax-image'));
}
// Configure sub-category bodies (theme recursively).
$variables['subcat_body_list'] = array();
if (($get_child_terms && $category_display == 'categories_inline') || ((($show_term_page_children && $this_page != 'faq') || $hide_child_terms) && $category_display == 'hide_qa')) {
$variables['subcat_body_list'] = faq_get_child_categories_faqs($term, 'faq_category_questions_top_answers', $default_weight, $default_sorting, $category_display, $variables['class'], $parent_term);
}
$nodes = array();
foreach ($data as $node) {
$node_var = array();
$anchor = 't' . $term->tid . 'n' . $node->nid;
faq_view_question($node_var, $node, NULL, $anchor);
faq_view_answer($node_var, $node, $back_to_top, $teaser, $links);
$nodes[] = $node_var;
}
$variables['use_teaser'] = $teaser;
$variables['nodes'] = $nodes;
$variables['category_name'] = check_plain(faq_tt("taxonomy:term:$term->tid:name", $term->name));
$variables['category_depth'] = $term->depth;
$variables['display_header'] = FALSE;
$variables['answer_category_name'] = variable_get('faq_answer_category_name', FALSE);
if ($variables['answer_category_name'] && taxonomy_term_count_nodes($term->tid, 'faq')) {
$variables['display_header'] = TRUE;
}
}

View file

@ -1,132 +0,0 @@
<?php
/**
* @file
* Exposes faq module's database tables to views.
*/
/**
* Implements hook_views_data().
*/
function faq_views_data() {
// faq_questions table.
$data['faq_questions']['table']['group'] = t('FAQ');
$data['faq_questions']['table']['join'] = array(
'node' => array(
'left_field' => 'nid',
'field' => 'nid',
),
);
$data['faq_questions']['question'] = array(
'title' => t('FAQ short question'),
'help' => t('The short question text for FAQ nodes.'),
'field' => array(
'handler' => 'views_handler_field',
'click sortable' => TRUE,
),
'sort' => array(
'handler' => 'views_handler_sort',
),
'filter' => array(
'handler' => 'views_handler_filter_string',
),
);
$data['faq_questions']['detailed_question'] = array(
'title' => t('FAQ detailed question'),
'help' => t('The long question text for FAQ nodes.'),
'field' => array(
'handler' => 'views_handler_field',
'click sortable' => TRUE,
),
'sort' => array(
'handler' => 'views_handler_sort',
),
'filter' => array(
'handler' => 'views_handler_filter_string',
),
);
// faq_weights table.
$data['faq_weights']['table']['group'] = t('FAQ');
$data['faq_weights']['table']['join'] = array(
'node' => array(
'left_field' => 'nid',
'field' => 'nid',
),
'term_data' => array(
'left_field' => 'tid',
'field' => 'tid',
),
);
$data['faq_weights']['tid'] = array(
'title' => t('FAQ category tid'),
'help' => t('The tid of the FAQ node.'),
'field' => array(
'handler' => 'views_handler_field_numeric',
'click sortable' => TRUE,
'zero is null' => FALSE,
),
'filter' => array(
'title' => t('Tid'),
'handler' => 'views_handler_filter_numeric',
'hierarchy table' => 'term_hierarchy',
'numeric' => TRUE,
'skip base' => 'term_data',
'allow empty' => TRUE,
'zero is null' => FALSE,
),
'relationship' => array(
'handler' => 'views_handler_relationship',
'label' => t('category'),
'base' => 'term_node',
'base field' => 'tid',
'skip base' => 'term_data',
),
);
$data['faq_weights']['category'] = array(
'title' => t('FAQ category'),
'help' => t('The term of the FAQ node.'),
'real field' => 'tid',
'field' => array(
'handler' => 'views_handler_field_term_node_tid',
'click sortable' => TRUE,
'zero is null' => TRUE,
),
'argument' => array(
'handler' => 'views_handler_argument_term_node_tid',
'name table' => 'term_data',
'name field' => 'name',
'empty field name' => t('Uncategorized'),
'numeric' => TRUE,
'skip base' => 'term_data',
'zero is null' => TRUE,
),
'filter' => array(
'title' => t('Term'),
'handler' => 'views_handler_filter_term_node_tid',
'hierarchy table' => 'term_hierarchy',
'numeric' => TRUE,
'skip base' => 'term_data',
'allow empty' => TRUE,
'zero is null' => FALSE,
),
);
$data['faq_weights']['weight'] = array(
'title' => t('FAQ weight'),
'help' => t('The weight of the FAQ node.'),
'field' => array(
'handler' => 'views_handler_field_numeric',
'click sortable' => TRUE,
),
'sort' => array(
'handler' => 'views_handler_sort',
),
'filter' => array(
'handler' => 'views_handler_filter_numeric',
),
);
return $data;
}