Drupal CCK Fields и JQuery Dialog - PullRequest
       23

Drupal CCK Fields и JQuery Dialog

0 голосов
/ 01 апреля 2012

Сейчас у меня есть сайт на Drupal, где я интегрирую пользовательский интерфейс для создания узла определенного типа. Эта область пользовательского интерфейса встраивается вверху страницы создания узла.

Поля CCK для узла группируются с помощью модуля Fieldgroup, который упаковывает их в. Я использую следующий код для перетаскивания группы полей в диалоговое окно JQuery, когда пользователь нажимает кнопку:

var options = {
    dialogClass: 'customDialog',
    autoOpen: false,
    draggable: false,
    modal: true,
    resizable: false,
    height: 'auto',
    width: 'auto',
    title: 'Configure Options',
    show: 'fade',
    hide: 'fade',
    buttons: {
            'Update': function(){               
                $(this).dialog('close');
        }
    }
 };

// open windows
$("#inputButton").click(function() {
    var dlg = $('.group_input').dialog(options);
    dlg.css('min-width', '500px').css('max-height', '300px');
    dlg.dialog('open'); 
});

Все работает нормально и загружается в диалоге; однако, когда пользователь нажимает кнопку «Обновить», чтобы закрыть диалоговое окно, поля CCK не обновляются с новыми значениями.

То же самое происходит, если я загружаю одно поле в диалоговое окно, поэтому я знаю, что это не проблема модуля Fieldgroup. Я искал несколько дней, пытаясь решить эту проблему, и, кажется, никто не сталкивался с этой проблемой. Любой вклад будет высоко ценится.

РЕДАКТИРОВАТЬ: У меня есть решение, и я опубликую его, как только пройдут 8-часовые ограничения: (

1 Ответ

0 голосов
/ 05 апреля 2012

ОК, так что я наконец понял это. Для тех, кто заинтересован в загрузке полей CCK узла в диалог JQuery, он обновит только значения формы, если вы добавите элементы диалога обратно в форму. Похоже, это происходит потому, что диалог JQuery фактически уничтожает загруженный контент, когда он закрыт.

Правильная реализация выглядит следующим образом:

var options = {
    dialogClass: 'customDialog',
    autoOpen: false,
    draggable: false,
    modal: true,
    resizable: false,
    height: 'auto',
    width: 'auto',
    title: 'Configure Options',
    show: 'fade',
    hide: 'fade',
    buttons: {
      'Update': function(){               
         $(this).dialog('close');
      }
    },
    **close: function(event, ui){
       $('#the-form-name').append($(this));
    }**
 };

// open windows
$("#inputButton").click(function() {
    var dlg = $('.group_input').dialog(options);
    dlg.css('min-width', '500px').css('max-height', '300px');
    dlg.dialog('open'); 
});

Надеюсь, это поможет кому-то застрять с такой же проблемой!

...