Ahah постинг формы ноды и выставление термина по умолчанию

Главные вкладки

Аватар пользователя Zigs Zigs 27 января 2010 в 14:42

Есть набор словарей и тип материала, для которого предназначены эти словари.
В своем модуле, я зарегил такой путь: /project/%/add, где % будет идентификатор термина одного из словарей.
Собственно, код вот такой:

function mymodule_menu()
{
  $items['project/%/add'] = array (
    'page callback' => 'mymodule_add_project_site_page',
    'page arguments' => array(1),
    'access callback' => 'user_access',
    'access arguments' => array('add project'),
    'type' => MENU_CALLBACK,
  );
  return $items;
}

function mymodule_add_project_site_page($tid)
{
        return '<div id="add_project_form_content">' . node_add('project') . '</div>';
}

function mymodule_form_alter(&$form, &$form_state, $form_id)
{
    if ($form_id == 'project_node_form'):
        /* Редактирование формы */

        $form['buttons']['submit']['#ahah'] = array (
            'path' => 'mymodule_add_project_form/js',
                'wrapper' => 'add_project_form_content',
                'method' => 'replace',
                'event' => 'click',
                'effect' => 'fade'
        );

    endif;
}

Из такой реализации вытекло два вопроса:
1. Как передать в form_alter приходящий через url $tid?
2. Если в данных формы есть какая-то ошибка, то нода, ессно, не создается, возвращаемая ahah форма не сохраняет в контролах введенные значения уровня ноды (title, description, такономия). Значения CCK контролов сохраняются. При этом если ahah убрать, то сохраняются значения всех заполненных полей.

Заранее спасибо.