You are here

public function _menu_editor_SubmitEngine::submitElement in Menu Editor 6.3

File

./menu_editor.admin.inc, line 418

Class

_menu_editor_SubmitEngine

Code

public function submitElement(&$element, $v, $item_key) {
  if (TRUE) {
    $item =& $element['#item'];
    $item_needs_update = false;
    if (!is_numeric($v['mlid'])) {

      // add new item
      unset($v['mlid']);
      if (!is_string($v['link_title']) || empty($v['link_title'])) {
        return;
      }
      if (!is_string($v['link_path']) || empty($v['link_path'])) {
        return;
      }
      $item['menu_name'] = $this->_menu_name;

      // Set all fields in this menu item.
      foreach ($this->_fields as $field) {
        $item[$field] = $v[$field];
      }
      $item_needs_update = true;
    }
    else {
      if ($v['delete']) {

        // delete existing item
        if (is_numeric($v['mlid'])) {
          menu_link_delete($v['mlid']);
          if (module_exists('i18nmenu')) {

            // See http://drupal.org/node/786230#comment-2911158
            _i18nmenu_delete_item($v['mlid']);
          }
        }
        return;
      }
      else {

        // update existing item
        // Update any fields that have changed in this menu item.
        foreach ($this->_fields as $field) {
          if ($v[$field] != $element[$field]['#default_value']) {
            $item[$field] = $v[$field];
            $item_needs_update = true;
          }
        }
      }
    }

    // Hidden is a special case, the value needs to be reversed.
    if ($v['hidden'] != $element['hidden']['#default_value']) {
      $item['hidden'] = !$v['hidden'];
      $item_needs_update = true;
    }

    // langcode is a special case as well
    if ($this->_language_options) {
      if ($v['language'] != $element['language']['#default_value']) {
        $item['options']['langcode'] = $v['language'];
        $item_needs_update = true;
      }
    }

    // description is a special case
    if (isset($item['description'])) {
      $item['options']['attributes']['title'] = $item['description'];
    }

    // put the item in our list
    $item['#update'] = $item_needs_update;
    $this->_items[$item_key] = $item;

    // if the item has been modified..
    if ($item_needs_update) {
      $this->_updated_items[$item_key] =& $this->_items[$item_key];
    }
  }
}