Issue #934714 by swentel, caiovlp, dcam | Coornail: Fixed Cannot add frontpage as...
authorDavid Rothstein
Mon, 29 Oct 2012 03:12:12 +0000 (23:12 -0400)
committerDavid Rothstein
Mon, 29 Oct 2012 03:12:12 +0000 (23:12 -0400)
modules/shortcut/shortcut.admin.inc
modules/shortcut/shortcut.module
modules/shortcut/shortcut.test

index 91ce7c8..c592a31 100644 (file)
@@ -471,7 +471,7 @@ function _shortcut_link_form_elements($shortcut_link = NULL) {
     );
   }
   else {
-    $shortcut_link['link_path'] = drupal_get_path_alias($shortcut_link['link_path']);
+    $shortcut_link['link_path'] = ($shortcut_link['link_path'] == '<front>') ? '' : drupal_get_path_alias($shortcut_link['link_path']);
   }
 
   $form['shortcut_link']['#tree'] = TRUE;
@@ -520,7 +520,11 @@ function shortcut_link_edit_validate($form, &$form_state) {
  */
 function shortcut_link_edit_submit($form, &$form_state) {
   // Normalize the path in case it is an alias.
-  $form_state['values']['shortcut_link']['link_path'] = drupal_get_normal_path($form_state['values']['shortcut_link']['link_path']);
+  $shortcut_path = drupal_get_normal_path($form_state['values']['shortcut_link']['link_path']);
+  if (empty($shortcut_path)) {
+    $shortcut_path = '<front>';
+  }
+  $form_state['values']['shortcut_link']['link_path'] = $shortcut_path;
 
   $shortcut_link = array_merge($form_state['values']['original_shortcut_link'], $form_state['values']['shortcut_link']);
 
@@ -577,6 +581,9 @@ function shortcut_admin_add_link($shortcut_link, &$shortcut_set, $limit = NULL)
 
   // Normalize the path in case it is an alias.
   $shortcut_link['link_path'] = drupal_get_normal_path($shortcut_link['link_path']);
+  if (empty($shortcut_link['link_path'])) {
+    $shortcut_link['link_path'] = '<front>';
+  }
 
   // Add the link to the end of the list.
   $shortcut_set->links[] = $shortcut_link;
index 71284bb..2f6db0a 100644 (file)
@@ -617,8 +617,8 @@ function shortcut_valid_link($path) {
   if ($path != $normal_path) {
     $path = $normal_path;
   }
-  // Only accept links that correspond to valid paths on the site itself.
-  return !url_is_external($path) && menu_get_item($path);
+  // An empty path is valid too and will be converted to <front>.
+  return (!url_is_external($path) && menu_get_item($path)) || empty($path) || $path == '<front>';
 }
 
 /**
index 322c63f..801d585 100644 (file)
@@ -124,6 +124,7 @@ class ShortcutLinksTestCase extends ShortcutTestCase {
 
     // Create some paths to test.
     $test_cases = array(
+      array('path' => ''),
       array('path' => 'admin'),
       array('path' => 'admin/config/system/site-information'),
       array('path' => "node/{$this->node->nid}/edit"),
@@ -141,7 +142,8 @@ class ShortcutLinksTestCase extends ShortcutTestCase {
       $this->assertResponse(200);
       $saved_set = shortcut_set_load($set->set_name);
       $paths = $this->getShortcutInformation($saved_set, 'link_path');
-      $this->assertTrue(in_array(drupal_get_normal_path($test['path']), $paths), 'Shortcut created: '. $test['path']);
+      $test_path = empty($test['path']) ? '<front>' : $test['path'];
+      $this->assertTrue(in_array(drupal_get_normal_path($test_path), $paths), 'Shortcut created: '. $test['path']);
       $this->assertLink($title, 0, 'Shortcut link found on the page.');
     }
   }