From 7463bfed9fba740524c993b56546f9880af0f62c Mon Sep 17 00:00:00 2001
From: Kalman Hosszu <hosszu.kalman@gmail.com>
Date: Wed, 15 Feb 2012 15:07:16 +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 b5a27740de59bb55e1e914aef9dba544dc1b3ae0 Mon Sep 17 00:00:00 2001
From: Kalman Hosszu <hosszu.kalman@gmail.com>
Date: Wed, 15 Feb 2012 15:07:41 +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 9c6b289534fa43352bfb488a1bc968324e198b36 Mon Sep 17 00:00:00 2001
From: Kalman Hosszu <hosszu.kalman@gmail.com>
Date: Wed, 15 Feb 2012 15:08:36 +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 752472f0d29b5ce3ecc3bcf7d4ba94735ffb769e Mon Sep 17 00:00:00 2001
From: Kalman Hosszu <hosszu.kalman@gmail.com>
Date: Wed, 15 Feb 2012 15:09:13 +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 635e254b826c45e75ba17740744be77d04e60d53 Mon Sep 17 00:00:00 2001
From: Kalman Hosszu <hosszu.kalman@gmail.com>
Date: Wed, 15 Feb 2012 15:10:07 +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 5427f8ba14d715364904aa800da0202e9dee37f1 Mon Sep 17 00:00:00 2001
From: Kalman Hosszu <hosszu.kalman@gmail.com>
Date: Wed, 15 Feb 2012 15:11:53 +0100
Subject: Handling selected menus in query.

---
 coffee.hooks.inc |   57 +++++++++++++++++++++++++++++++++--------------------
 1 files changed, 35 insertions(+), 22 deletions(-)

diff --git a/coffee.hooks.inc b/coffee.hooks.inc
index 8c91bfb..df1d047 100644
--- a/coffee.hooks.inc
+++ b/coffee.hooks.inc
@@ -35,28 +35,41 @@ 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', '%%', '<>')
-
-  // Add default ordering.
-  ->orderBy('ml.link_title', 'ASC');
-
-  // 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', '%%', '<>')
+
+    // Add default ordering.
+    ->orderBy('ml.link_title', 'ASC');
+
+    // Execute the query above.
+    $result = $query->execute();
+  }
 
   if (is_object($result)) {
     $return = array();
-- 
1.7.4.1


From d1136ccc31f60e28fd047be94da5e8f02e4eb6b5 Mon Sep 17 00:00:00 2001
From: Kalman Hosszu <hosszu.kalman@gmail.com>
Date: Wed, 15 Feb 2012 15:12:52 +0100
Subject: Add configuration url to info file.

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

diff --git a/coffee.info b/coffee.info
index 83e260d..0fdcd28 100644
--- a/coffee.info
+++ b/coffee.info
@@ -2,3 +2,4 @@ name = Coffee
 description = An administrative module to switch between admin pages real fast, like Alfred or Spotlight on OS X.
 core = 7.x
 package = Administration
+configure = admin/config/administration/coffee
\ No newline at end of file
-- 
1.7.4.1


From 75a8f0ea5593e257c6d6b51f0778e26731ea6e79 Mon Sep 17 00:00:00 2001
From: Kalman Hosszu <hosszu.kalman@gmail.com>
Date: Wed, 15 Feb 2012 15:13:22 +0100
Subject: Change menu query to menu_get_menus() function.

---
 coffee.admin.inc |    9 +--------
 1 files changed, 1 insertions(+), 8 deletions(-)

diff --git a/coffee.admin.inc b/coffee.admin.inc
index 0b4237d..9d2c885 100644
--- a/coffee.admin.inc
+++ b/coffee.admin.inc
@@ -12,18 +12,11 @@
  * @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,
+    '#options' => menu_get_menus(),
     '#default_value' => variable_get('coffee_enabled_menus', array('management' => 'management')),
   );
 
-- 
1.7.4.1


From 401634405b06daa96d24f33ce1d274af9eae0ca1 Mon Sep 17 00:00:00 2001
From: Kalman Hosszu <hosszu.kalman@gmail.com>
Date: Wed, 15 Feb 2012 15:17:27 +0100
Subject: Add menu module to dependencies.

---
 coffee.info |    4 +++-
 1 files changed, 3 insertions(+), 1 deletions(-)

diff --git a/coffee.info b/coffee.info
index 0fdcd28..996d0be 100644
--- a/coffee.info
+++ b/coffee.info
@@ -2,4 +2,6 @@ name = Coffee
 description = An administrative module to switch between admin pages real fast, like Alfred or Spotlight on OS X.
 core = 7.x
 package = Administration
-configure = admin/config/administration/coffee
\ No newline at end of file
+configure = admin/config/administration/coffee
+
+dependencies[] = menu
\ No newline at end of file
-- 
1.7.4.1

