From ad7809415c2cd41a6fbaec12713941f26d56e7c5 Mon Sep 17 00:00:00 2001 From: bachy Date: Thu, 19 Jul 2012 18:31:59 +0200 Subject: [PATCH] first import :: search autocomplete form Signed-off-by: bachy --- materiobasemod.info | 27 +++++ materiobasemod.module | 118 +++++++++++++++++++++ materiobasemod.pages.inc | 54 ++++++++++ templates/materiobase-search-block.tpl.php | 3 + 4 files changed, 202 insertions(+) create mode 100644 materiobasemod.info create mode 100644 materiobasemod.module create mode 100644 materiobasemod.pages.inc create mode 100644 templates/materiobase-search-block.tpl.php diff --git a/materiobasemod.info b/materiobasemod.info new file mode 100644 index 00000000..b20231fc --- /dev/null +++ b/materiobasemod.info @@ -0,0 +1,27 @@ +name = materiobasemod +description = "Materio base module" + +; Core version (required) +core = 7.x + +; Package name (see http://drupal.org/node/542202 for a list of names) +package = Materio + +; PHP version requirement (optional) +; php = 5.2 + +; Loadable code files +;files[] = materiobasemod.theme.inc +;files[] = materiobasemod.forms.inc +files[] = materiobasemod.pages.inc +files[] = materiobasemod.module + +; Module dependencies +dependencies[] = taxonomy + +; Configuration page +; configure = admin/config/materiobasemod + + +; For further information about configuration options, see +; - http://drupal.org/node/542202 diff --git a/materiobasemod.module b/materiobasemod.module new file mode 100644 index 00000000..de3a398b --- /dev/null +++ b/materiobasemod.module @@ -0,0 +1,118 @@ + array( + 'title' => t('Materio base search'), + 'description' => t('Use materiobasemod search.'), + ), + ); +} + +/** + * Implements hook_menu(). + */ +function materiobasemod_menu() { + $items = array(); + $items['materiobase/search/autocomplete'] = array( + 'title' => 'Autocomplete materiobase search', + 'page callback' => 'materiobase_search_autocomplete', + 'access arguments' => array('access content'), + 'type' => MENU_CALLBACK, + 'file' => 'materiobasemod.pages.inc', + ); + return $items; +} + +/** + * Implements hook_block_info(). + */ +function materiobasemod_block_info() { + // This example comes from node.module. + $blocks['base_search'] = array( + 'info' => t('Materio base search'), + 'cache' => DRUPAL_NO_CACHE + ); + + return $blocks; +} + +/** + * Implements hook_theme(). + */ +function materiobasemod_theme($existing, $type, $theme, $path) { + return array( + 'materiobase_search_block' => array( + 'arguments' => array(), + 'template' => 'materiobase-search-block', + 'path' => drupal_get_path('module', 'materiobasemod').'/templates', + ), + ); +} + +/** + * Implements hook_block_view(). + */ +function materiobasemod_block_view($delta = '') { + // This example comes from node.module. Note that you can also return a + // renderable array rather than rendered HTML for 'content'. + $block = array(); + + switch ($delta) { + case 'base_search': + if (user_access('use materiobase search')) { + $block['subject'] = t('Search'); + $block['content'] = theme('materiobase_search_block', array()); + } + break; + } + return $block; +} + + +/** + * materiobase_search_form() + */ +function materiobase_search_form(){ + + $form = array(); + + $form['searchfield'] = array( + '#type' => 'textfield', + '#default_value' => '', + '#autocomplete_path' => 'materiobase/search/autocomplete', + '#size' => 30, + '#maxlength' => 1024, + // '#element_validate' => array('taxonomy_autocomplete_validate'), + ); + + $form['create'] = array( + '#type' => 'submit', + '#value' => t('Search'), + ); + + return $form; +} + +/** + * template_preprocess_materiobase_search_block(); + */ +function template_preprocess_materiobase_search_block(&$vars){ + + $vars['searchform'] = drupal_get_form("materiobase_search_form"); + + +} + diff --git a/materiobasemod.pages.inc b/materiobasemod.pages.inc new file mode 100644 index 00000000..b03105bc --- /dev/null +++ b/materiobasemod.pages.inc @@ -0,0 +1,54 @@ +vid; + } + + $query = db_select('taxonomy_term_data', 't'); + $query->addTag('translatable'); + $query->addTag('term_access'); + + // Select rows that match by term name. + $tags_return = $query + ->fields('t', array('tid', 'name')) + ->condition('t.vid', $vids) + ->condition('t.name', '%' . db_like($typed) . '%', 'LIKE') + ->range(0, 10) + ->execute() + ->fetchAllKeyed(); + + $term_matches = array(); + foreach ($tags_return as $tid => $name) { + $n = $name; + // Term names containing commas or quotes must be wrapped in quotes. + // if (strpos($name, ',') !== FALSE || strpos($name, '"') !== FALSE) { + // $n = '"' . str_replace('"', '""', $name) . '"'; + // } + $term_matches[$n] = check_plain($name); + } + } + + drupal_json_output($term_matches); + +} \ No newline at end of file diff --git a/templates/materiobase-search-block.tpl.php b/templates/materiobase-search-block.tpl.php new file mode 100644 index 00000000..96313045 --- /dev/null +++ b/templates/materiobase-search-block.tpl.php @@ -0,0 +1,3 @@ +