From 0cfabaea9773c52097aa4258471db9e005cf1936 Mon Sep 17 00:00:00 2001
From: Kalman Hosszu <hosszu.kalman@gmail.com>
Date: Fri, 10 Feb 2012 10:40:24 +0100
Subject: Create administer permission

---
 coffee.module |    4 ++++
 1 files changed, 4 insertions(+), 0 deletions(-)

diff --git a/coffee.module b/coffee.module
index 8922b16..c1736dc 100644
--- a/coffee.module
+++ b/coffee.module
@@ -17,6 +17,10 @@ function coffee_permission() {
       'title' => t('Access Coffee'),
       'description' => t('Access the Coffee search box to navigate fast between admin pages'),
     ),
+    'administer coffee' => array(
+      'title' => t('Administer Coffee'),
+      'description' => t('Access Coffee admin page.'),
+    ),
   );
 }
 
-- 
1.7.4.1


From c0d28ec4f0b39875ac096eedbd499cc88d752286 Mon Sep 17 00:00:00 2001
From: Kalman Hosszu <hosszu.kalman@gmail.com>
Date: Fri, 10 Feb 2012 10:42:31 +0100
Subject: Define admin page's menu item.

---
 coffee.module |    9 +++++++++
 1 files changed, 9 insertions(+), 0 deletions(-)

diff --git a/coffee.module b/coffee.module
index c1736dc..c43b5ba 100644
--- a/coffee.module
+++ b/coffee.module
@@ -37,6 +37,15 @@ function coffee_menu() {
     'access arguments' => array('access coffee'),
     'type' => MENU_CALLBACK,
   );
+  // Administration page.
+  $items['admin/config/administration/coffee'] = array(
+    'title' => 'Coffee',
+    'description' => 'Admin form of coffee module.',
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('coffee_admin_page'),
+    'access arguments' => array('administer coffee'),
+    'file' => 'coffee.admin.inc',
+  );
   return $items;
 
 }
-- 
1.7.4.1


From 894940e5548623e604ec76b16a42746d56c67d2f Mon Sep 17 00:00:00 2001
From: Kalman Hosszu <hosszu.kalman@gmail.com>
Date: Fri, 10 Feb 2012 10:47:37 +0100
Subject: Create file for admin ui.

---
 coffee.admin.inc |    5 +++++
 1 files changed, 5 insertions(+), 0 deletions(-)
 create mode 100644 coffee.admin.inc

diff --git a/coffee.admin.inc b/coffee.admin.inc
new file mode 100644
index 0000000..fecd0ec
--- /dev/null
+++ b/coffee.admin.inc
@@ -0,0 +1,5 @@
+<?php
+/**
+ * @file
+ * Admin page callbacks for Coffee module.
+ */
\ No newline at end of file
-- 
1.7.4.1


From 0801a335890c16557dfc57602cc2db95daf6837c Mon Sep 17 00:00:00 2001
From: Kalman Hosszu <hosszu.kalman@gmail.com>
Date: Fri, 10 Feb 2012 10:56:07 +0100
Subject: Define coffee_admin_page() function.

---
 coffee.admin.inc |   14 +++++++++++++-
 1 files changed, 13 insertions(+), 1 deletions(-)

diff --git a/coffee.admin.inc b/coffee.admin.inc
index fecd0ec..8925787 100644
--- a/coffee.admin.inc
+++ b/coffee.admin.inc
@@ -2,4 +2,16 @@
 /**
  * @file
  * Admin page callbacks for Coffee module.
- */
\ No newline at end of file
+ */
+
+/**
+ * Build coffee_admin_page form.
+ *
+ * Create the module's admin interface.
+ *
+ * @ingroup forms
+ */
+function coffee_admin_page($form, &$form_state) {
+
+  return system_settings_form($form);
+}
\ No newline at end of file
-- 
1.7.4.1


From cea4a81e75f7cb9d516840b79dba572a0ee89667 Mon Sep 17 00:00:00 2001
From: Kalman Hosszu <hosszu.kalman@gmail.com>
Date: Fri, 10 Feb 2012 13:04:45 +0100
Subject: Select menus in admin ui.

---
 coffee.admin.inc |   14 ++++++++++++++
 1 files changed, 14 insertions(+), 0 deletions(-)

diff --git a/coffee.admin.inc b/coffee.admin.inc
index 8925787..0b4237d 100644
--- a/coffee.admin.inc
+++ b/coffee.admin.inc
@@ -12,6 +12,20 @@
  * @ingroup forms
  */
 function coffee_admin_page($form, &$form_state) {
+  $result = db_query("SELECT * FROM {menu_custom} ORDER BY title", array(), array('fetch' => PDO::FETCH_ASSOC));
+  $options = array();
+
+  foreach ($result as $menu) {
+    $options[$menu['menu_name']] = check_plain($menu['title']);
+  }
+
+  $form['coffee_enabled_menus'] = array(
+    '#type' => 'checkboxes',
+    '#title' => t('Select the enabled menus'),
+    '#description' => t('Coffee will search in the selected menus.'),
+    '#options' => $options,
+    '#default_value' => variable_get('coffee_enabled_menus', array('management' => 'management')),
+  );
 
   return system_settings_form($form);
 }
\ No newline at end of file
-- 
1.7.4.1


From 768b78e78a971acd3b6bf78edae5881b37a2d5d7 Mon Sep 17 00:00:00 2001
From: Kalman Hosszu <hosszu.kalman@gmail.com>
Date: Fri, 10 Feb 2012 13:13:41 +0100
Subject: Handling selected menus in query.

---
 coffee.hooks.inc |   51 ++++++++++++++++++++++++++++++++-------------------
 1 files changed, 32 insertions(+), 19 deletions(-)

diff --git a/coffee.hooks.inc b/coffee.hooks.inc
index c3b90fc..d24deb0 100644
--- a/coffee.hooks.inc
+++ b/coffee.hooks.inc
@@ -35,25 +35,38 @@ function coffee_redirect($input) {
 
   $query->fields('ml', array('link_path', 'link_title'));
 
-  // Look for management links and devel (if it is installed). 
-  $query->condition('ml.menu_name', array('management', 'devel'))
-  ->condition(
-  db_or()
-    ->condition('ml.link_path', $input, 'LIKE')
-    ->condition('ml.link_title', $input, 'LIKE')
-    ->condition('mr.description', $input, 'LIKE')
-  )
-  // Exclude % in link_path.
-  ->condition('ml.link_path', '%\%%', 'NOT LIKE')
-
-  // Exclude 'help' in link_path.
-  ->condition('ml.link_path', '%help%', 'NOT LIKE')
-
-  // Filter out empty link_title.
-  ->condition('ml.link_title', '%%', '<>');
-
-  // Execute the query above.
-  $result = $query->execute();
+  // Get the enabled menus.
+  $menus = array();
+  foreach (variable_get('coffee_enabled_menus', array('management' => 'management')) as $menu_name => $selected) {
+    if ($selected) {
+      $menus[] = $menu_name;
+    }
+  }
+
+  // Define a default value for the result.
+  $result = NULL;
+
+  if (!empty($menus)) {
+    // Look for links.
+    $query->condition('ml.menu_name', $menus)
+    ->condition(
+    db_or()
+      ->condition('ml.link_path', $input, 'LIKE')
+      ->condition('ml.link_title', $input, 'LIKE')
+      ->condition('mr.description', $input, 'LIKE')
+    )
+    // Exclude % in link_path.
+    ->condition('ml.link_path', '%\%%', 'NOT LIKE')
+
+    // Exclude 'help' in link_path.
+    ->condition('ml.link_path', '%help%', 'NOT LIKE')
+
+    // Filter out empty link_title.
+    ->condition('ml.link_title', '%%', '<>');
+
+    // Execute the query above.
+    $result = $query->execute();
+  }
 
   if (is_object($result)) {
     $return = array();
-- 
1.7.4.1

