rendered paste bodyIndex: path.module===================================================================RCS file: /cvs/drupal/drupal/modules/path/path.module,vretrieving revision 1.115diff -u -r1.115 path.module--- path.module 30 Apr 2007 17:03:26 -0000 1.115+++ path.module 5 May 2007 12:02:18 -0000@@ -67,6 +67,13 @@ 'access arguments' => array('administer url aliases'), 'type' => MENU_LOCAL_TASK, );+ $items['admin/build/path/search'] = array(+ 'title' => 'Search aliases',+ 'description' => 'Search aliases by keyword.',+ 'page callback' => 'path_admin_search',+ 'access arguments' => array('administer url aliases'),+ 'type' => MENU_LOCAL_TASK,+ ); return $items; }@@ -314,13 +321,20 @@ /** * Return a listing of all defined URL aliases.+ * When search key argument passed, perform a standard search on the given key,+ * and return the listing of matching URL aliases. */-function path_overview() {+function path_overview($search_key = '') { // Enable language column if locale is enabled or if we have any alias with language $count = db_result(db_query("SELECT COUNT(*) FROM {url_alias} WHERE language != ''")); $multilanguage = (module_exists('locale') || $count); - $sql = 'SELECT * FROM {url_alias}';+ if ($search_key) {+ $sql = "SELECT * FROM {url_alias} WHERE dst LIKE '%s'";+ }+ else {+ $sql = 'SELECT * FROM {url_alias}';+ } $header = array( array('data' => t('Alias'), 'field' => 'dst', 'sort' => 'asc'), array('data' => t('System'), 'field' => 'src'),@@ -331,7 +345,7 @@ $header[2] = array('data' => t('Language'), 'field' => 'language'); } $sql .= tablesort_sql($header);- $result = pager_query($sql, 50);+ $result = pager_query($sql, 50, 0 , NULL, $search_key); $rows = array(); $destination = drupal_get_destination();@@ -346,7 +360,8 @@ } if (empty($rows)) {- $rows[] = array(array('data' => t('No URL aliases available.'), 'colspan' => ($multilanguage ? 5 : 4)));+ $empty_message = $search_key ? t('No URL aliases found.') : t('No URL aliases available.') ;+ $rows[] = array(array('data' => $empty_message, 'colspan' => ($multilanguage ? 5 : 4))); } $output = theme('table', $header, $rows);@@ -386,3 +401,61 @@ drupal_set_message(t('The alias has been saved.')); return 'admin/build/path'; }++/**+ * Menu callback; presents a form to search URL aliases.+ */+function path_admin_search() {+ $keys = path_admin_search_get_keys();+ $output = drupal_get_form('path_admin_search_form', $keys);+ if (trim($keys)) {+ $output .= path_overview($keys);+ }++ return $output;+}++/**+ * Return a form to search URL aliases.+ */+function path_admin_search_form($keys = '') {+ $form = array(+ '#action' => url('admin/build/path/search'),+ '#attributes' => array('class' => 'search-form'),+ );+ $form['basic'] = array('#type' => 'item', '#title' => t('Enter your keywords'), '#description' => t('Enter a keyword for the alias which you wish to search. Use % and _ as query wildcards, and \ as the escape character.'));+ $form['basic']['inline'] = array('#prefix' => '<div class="container-inline">', '#suffix' => '</div>');+ $form['basic']['inline']['keys'] = array(+ '#type' => 'textfield',+ '#title' => '',+ '#default_value' => $keys,+ '#maxlength' => 64,+ '#size' => 45,+ '#field_prefix' => url(NULL, array('absolute' => TRUE)) . (variable_get('clean_url', 0) ? '' : '?q=')+ );+ $form['basic']['inline']['submit'] = array('#type' => 'submit', '#value' => t('Search'));++ return $form;+}++/**+ * Process a path search form submission.+ */+function path_admin_search_form_submit($form_id, $form_values) {+ $keys = $form_values['keys'];+ if ($keys == '') {+ form_set_error('keys', t('Please enter some keywords.'));+ // Fall through to the drupal_goto() call.+ }+ return 'admin/build/path/search/'. trim($keys);+}++/**+ * Helper function for grabbing search keys.+ */+function path_admin_search_get_keys() {+ // Extract keys as remainder of path+ // Note: support old GET format of searches for existing links.+ $path = explode('/', $_GET['q'], 5);+ return count($path) == 5 ? $path[4] : '';+}