*** menu_editor.module
***************
*** 12,30 ****
      // 'title arguments' => array(3),
      'access callback' => 'menu_editor_form_access',
      'access arguments' => array(3),
      'type' => MENU_LOCAL_TASK,
      'file' => 'menu_editor.admin.inc',
    );
  
    return $items;
  }
  
  function menu_editor_perm() {
    $result = db_query("SELECT menu_name FROM {menu_custom} ORDER BY title");
!   $perm = array();
    while ($menu = db_fetch_array($result)) {
      $perm[] = "menu edit $menu[menu_name]";
    }
    return $perm;
  }
  
--- 12,37 ----
      // 'title arguments' => array(3),
      'access callback' => 'menu_editor_form_access',
      'access arguments' => array(3),
      'type' => MENU_LOCAL_TASK,
      'file' => 'menu_editor.admin.inc',
    );
+   $items['admin/settings/menu_editor'] = array(
+     'title' => 'Menu PowerEdit module',
+     'description' => 'Settings for Menu PowerEdit module.',
+     'page callback' => 'drupal_get_form',
+     'page arguments' => array('menu_editor_settings_form'),
+     'access arguments' => array('administer menu_editor'),
+   );
  
    return $items;
  }
  
  function menu_editor_perm() {
    $result = db_query("SELECT menu_name FROM {menu_custom} ORDER BY title");
!   $perm = array('administer menu_editor');
    while ($menu = db_fetch_array($result)) {
      $perm[] = "menu edit $menu[menu_name]";
    }
    return $perm;
  }
  
***************
*** 66,92 ****
   */
  function menu_editor_overview_title($menu) {
    return $menu['title'];
  }
  
  
- 
  function menu_editor_get_placeholders() {
    static $placeholders;
    if (!isset($placeholders)) {
      $placeholders = module_invoke_all('menu_editor_placeholders');
    }
    return $placeholders;
  }
  
  function menu_editor_get_path_for_placeholder($placeholder, $mlid) {
    static $placeholders;
    if (!isset($placeholders)) {
!     $placeholders = module_invoke_all('menu_editor_placeholders');
    }
    if (isset($placeholders[$placeholder])) {
      return str_replace('%mlid', $mlid, $placeholders[$placeholder]);
    }
    return $placeholder;
  }
  
  
--- 73,136 ----
   */
  function menu_editor_overview_title($menu) {
    return $menu['title'];
  }
  
  
  function menu_editor_get_placeholders() {
    static $placeholders;
    if (!isset($placeholders)) {
      $placeholders = module_invoke_all('menu_editor_placeholders');
    }
    return $placeholders;
  }
  
  function menu_editor_get_path_for_placeholder($placeholder, $mlid) {
    static $placeholders;
    if (!isset($placeholders)) {
!     $placeholders = menu_editor_get_placeholders();
    }
    if (isset($placeholders[$placeholder])) {
      return str_replace('%mlid', $mlid, $placeholders[$placeholder]);
    }
    return $placeholder;
  }
  
  
+ /**
+  * Administration settings form.
+  *
+  * @see system_settings_form()
+  */
+ function menu_editor_settings_form() {
+   $form['menu_editor_show_description'] = array(
+     '#type' => 'checkbox',
+     '#title' => t('Show description textbox'),
+     '#default_value' => variable_get('menu_editor_show_description', 0),
+     '#description' => t('Check if you want a textbox for description editing to be displayed on the form.'),
+   );
+ 
+   $form['menu_editor_title_size'] = array(
+     '#type' => 'select',
+     '#title' => t('Title column width'),
+     '#options' => array(10 => 10, 15 => 15, 20 => 20, 25 => 25, 30 => 30, 40 => 40),
+     '#default_value' => variable_get('menu_editor_title_size', 25),
+     '#description' => t('You may select menu title column width to optimize page width usage.'),
+   );
+   $form['menu_editor_path_size'] = array(
+     '#type' => 'select',
+     '#title' => t('Path column width'),
+     '#options' => array(10 => 10, 15 => 15, 20 => 20, 25 => 25, 30 => 30, 40 => 40),
+     '#default_value' => variable_get('menu_editor_path_size', 25),
+     '#description' => t('You may select menu path column width to optimize page width usage.'),
+   );
+ 
+   $form['menu_editor_new_items_count'] = array(
+     '#type' => 'select',
+     '#title' => t('Empty rows count'),
+     '#options' => array(4 => 4, 8 => 8, 12 => 12, 16 => 16, 20 => 20),
+     '#default_value' => variable_get('menu_editor_new_items_count', 8),
+     '#description' => t('Select how many empty rows to display on the form for new menu items.'),
+   );
+  
+   return system_settings_form($form);
+ }




*** menu_editor.admin.inc
***************
*** 36,47 ****
--- 36,48 ----
    $max_root_weight = _menu_editor_overview_tree_form($form, $form_state, $tree, $language_options);
    
    // default values for all new menu items..
    $default_values = array(
      'link_title' => '',
      'link_path' => '<front>',
+     'description' => '',
      'hidden' => true,
      'expanded' => false,
      'weight' => 0,
      // 'mlid' => NULL,  // this is different for every single one
      'plid' => 0,
      'language' => '',
***************
*** 50,63 ****
    foreach (module_invoke_all('menu_editor_placeholders') as $placeholder_code => $placeholder_path) {
      // take the first placeholder as default link path instead of <front>
      $default_values['link_path'] = $placeholder_code;
      break;
    }
    
!   
!   for ($i=0; $i<8; ++$i) {
      // new menu item
    	$default_values['mlid'] = 'new' . $i;
      $item_key = 'mlid-new'.$i;
    	$form[$item_key] = _menu_editor_overview_tree_form_item('new'.$i, $default_values, $language_options);
    	$form[$item_key]['weight']['#default_value'] = $max_root_weight + $i + 1;
    	$form[$item_key]['#item'] = array();
--- 51,63 ----
    foreach (module_invoke_all('menu_editor_placeholders') as $placeholder_code => $placeholder_path) {
      // take the first placeholder as default link path instead of <front>
      $default_values['link_path'] = $placeholder_code;
      break;
    }
    
!   for ($i=0; $i<variable_get('menu_editor_new_items_count', 8); ++$i) {
      // new menu item
    	$default_values['mlid'] = 'new' . $i;
      $item_key = 'mlid-new'.$i;
    	$form[$item_key] = _menu_editor_overview_tree_form_item('new'.$i, $default_values, $language_options);
    	$form[$item_key]['weight']['#default_value'] = $max_root_weight + $i + 1;
    	$form[$item_key]['#item'] = array();
***************
*** 98,109 ****
--- 98,110 ----
          $max_root_weight = $weight;
        }
        
        $default_values = array(
          'link_title' => $item['link_title'],
          'link_path' => $item['link_path'],
+         'description' => $item['options']['attributes']['title'], //This is the best way to retrieve menu item description I see now.
          'hidden'   => !$item['hidden'],
          'expanded' => $item['expanded'],
          'weight'   => $weight,
          'plid'     => $plid,
          'language' => '' . @$item['options']['langcode'],
        );
***************
*** 115,127 ****
        $form[$item_key]['drag']['#value'] = l($item['title'], $item['href'], $item['localized_options']) . ($item['hidden'] ? ' ('. t('disabled') .')' : '');
        
        // Only items created by the menu module can be deleted.
        if ($item['module'] == 'menu' || $item['updated'] == 1) { 
          $form[$item_key]['delete'] = array(
            '#type' => 'checkbox',
-           '#title' => t('delete'),
            '#default_value' => false,
          );
        }
      }
      
      // process child elements
--- 116,127 ----
***************
*** 140,167 ****
      }
    }
    
    $element = array();
    $element['link_title'] = array(
      '#type' => 'textfield',
!     '#size' => 25,
    );
    $element['link_path'] = array(
      '#type' => 'textfield',
!     '#size' => 25,
    );
    $element['hidden'] = array(
      '#type' => 'checkbox',
    );
    $element['expanded'] = array(
      '#type' => 'checkbox',
    );
    $element['weight'] = array(
      '#type' => 'weight',
      '#delta' => 50,
    );
    $element['mlid'] = array(
      '#type' => 'hidden',
      '#value' => $item_mlid,
    );
    $element['plid'] = array(
      '#type' => 'textfield',
--- 140,175 ----
      }
    }
    
    $element = array();
    $element['link_title'] = array(
      '#type' => 'textfield',
!     '#size' => variable_get('menu_editor_title_size', 25),
    );
    $element['link_path'] = array(
      '#type' => 'textfield',
!     '#size' => variable_get('menu_editor_path_size', 25),
    );
    $element['hidden'] = array(
      '#type' => 'checkbox',
    );
    $element['expanded'] = array(
      '#type' => 'checkbox',
    );
    $element['weight'] = array(
      '#type' => 'weight',
      '#delta' => 50,
    );
+   if (variable_get('menu_editor_show_description', 0)){
+     $element['description'] = array(
+       '#type' => 'textarea',
+       '#wysiwyg' => FALSE,
+       '#cols' => 25,
+       '#rows' => 2,
+     );
+   }
    $element['mlid'] = array(
      '#type' => 'hidden',
      '#value' => $item_mlid,
    );
    $element['plid'] = array(
      '#type' => 'textfield',
***************
*** 224,236 ****
    }
    $item = $element['#item'];
    $normal_path = drupal_get_normal_path($link_path);
    $item['link_path'] = $normal_path;
    
    if (!menu_path_is_external($normal_path)) {
-     
      $parsed_link = parse_url($normal_path);
      
      if (isset($parsed_link['query'])) {
        $item['options']['query'] = $parsed_link['query'];
      }
      if (isset($parsed_link['fragment'])) {
--- 232,243 ----
***************
*** 274,285 ****
--- 281,295 ----
    $form_values = array_merge($item_keys, $form_state['values']); // Update our original form with the new order.
    
    $menu_name = $form['#menu']['menu_name'];
    
    $updated_items = array();
    $fields = array('expanded', 'weight', 'plid', 'link_title', 'link_path');
+   if (variable_get('menu_editor_show_description', 0)){
+     $fields[] = 'description';
+   }
    
    foreach ($form_values as $item_key => $v) {
      if (isset($form[$item_key]['#item'])) {
        $element = $form[$item_key];
        if (!is_numeric($v['mlid'])) {
          // add new item
***************
*** 410,424 ****
    if (!empty($errors)) {
      drupal_set_message(t('There were errors saving the following menu links:<br/>' . implode('<br/>', $errors)), 'error');
    }
  }
  
  
- 
- 
- 
  /**
   * Theme the menu overview form into a table.
   *
   * @ingroup themeable
   */
  function theme_menu_editor_overview_form($form) {
--- 420,431 ----
***************
*** 434,445 ****
--- 441,455 ----
      t('Title'),
      t('Path'),
      array('data' => t('Enabled'), 'class' => 'checkbox'),
      array('data' => t('Expanded'), 'class' => 'checkbox'),
      t('Weight')
    );
+   if (variable_get('menu_editor_show_description', 0)){
+     $header[] = t('Description');
+   }
    if ($i18nmenu) {
      $header[] = t('Language');
    }
    $header[] = array('data'  => t('Delete'), 'class' => 'delete-checkbox');
  
    $rows = array();
***************
*** 479,490 ****
--- 489,503 ----
        $cells['drag'] = theme('indentation', $element['#item']['depth'] - 1) . drupal_render($element['drag']);
        $cells['link_title'] = array('data' => drupal_render($element['link_title']), 'class' => 'title-edit');
        $cells['link_path'] = array('data' => drupal_render($element['link_path']), 'class' => 'path-edit');
        $cells['hidden'] = array('data' => drupal_render($element['hidden']), 'class' => 'checkbox');
        $cells['expanded'] = array('data' => drupal_render($element['expanded']), 'class' => 'checkbox');
        $cells['mlid'] = drupal_render($element['weight']) . drupal_render($element['plid']) . drupal_render($element['mlid']);
+       if (variable_get('menu_editor_show_description', 0)){
+         $cells['description'] = array('data' => drupal_render($element['description']), 'class' => 'description-edit');
+       }
        if ($i18nmenu) {
          $cells['language'] = array('data' => drupal_render($element['language']), 'class' => 'select');
        }
        $cells['delete'] = array('data' => drupal_render($element['delete']), 'class' => 'delete-checkbox');
        
        $row = array_merge(array('data' => $cells), $element['#attributes']);
***************
*** 509,515 ****
      }
      $output .= theme('table', $header, $rows, array('id' => 'menu-overview'));
    }
    $output .= drupal_render($form);
    return $output;
  }
- 
--- 522,527 ----

