Распечатать форму "узел / добавить" в лайтбоксе с помощью Drupal

У меня проблемы с печатью формы "узел / добавить" в лайтбоксе.

У меня в моем custom.module hook_menu как это:

  $items['get-form/%'] = array(
    'title' => t('Get a form'),
      'description' => t('Get form'),
      'page callback' => '_get_form',
      'page arguments' => array(1),
      'access arguments' => array('access content'),
      'type' => MENU_CALLBACK,
    );

... где% - это идентификатор, например "story_node_form".

Затем у меня есть функция обратного вызова, как это:

function _get_form($form_id){
  module_load_include('inc', 'node', 'node.pages');

  if (strpos($form_string, "_node_form")){
    //Test if the form is a <type>_node_form. Is the node/add/<type>
    $content_type = explode("_node_form", $form_id)[0];
    print drupal_render(node_add($content_type));
  }

Форма показывает справа, в лайтбокс. Проблема в том, что javascript формы (wysiwyg, ссылки на узлы, ссылки на термины, ...) не работает.

Я пытался выполнить Drupal.attachBehaviors(), Drupal.attachBehaviors(document) а также Drupal.attachBehaviors("#story-node-form") но ничего не работает.

Кто-нибудь может помочь?

1 ответ

Решение

Этот код должен сделать свое дело:

function _get_form($form_id){
    global $user;
    $node = (object) array(
        'uid' => $user->uid, 
        'name' => (isset($user->name) ? $user->name : ''), 
        'type' => 'ENTER NODE TYPE HERE', 
        'language' => LANGUAGE_NONE
    );
    $form_state['build_info']['args'] = array($node);
    form_load_include($form_state, 'inc', 'node', 'node.pages');
    echo drupal_render(drupal_build_form($form_id, $form_state));
}

Вам нужно будет получить тип узла, а также form_id для этого, но это не должно быть сложно.

Другие вопросы по тегам