Drupal 8 Full Calendar Views - Изменение URL Ajax во время выполнения - PullRequest
0 голосов
/ 18 января 2019

Когда вы создаете ссылку в drupal как диалог с классом 'use-ajax', Drupal init ajax ссылка при загрузке страницы. я хочу изменить URL для запроса ajax, чтобы изменить дату слота Пример ниже работает (между for (var j в Drupal.ajax) {), но мне нужен лучший способ кода.

Я использую модуль fullcalendar_view и меняю код модуля, fullcalendar уже создает ссылку для $ ('# calendar-add-event'), я просто использую тот же href, а затем хочу изменить его на $ (' # calendar-add-event2 ') и следующий щелчок триггера.

fullcalendar.html.twing

<div class="fullcalendar-bottom-btn add-event-btn">
<a id="calendar-add-event"  href="{{ language }}fullcalendar-view-event-add?entity={{ entity_id }}&bundle={{ options.bundle_type }}&start_field={{ options.start }}&end_field={{ options.end }}&destination={{ path('<current>') }}" class="use-ajax" data-dialog-type="dialog" data-dialog-renderer="off_canvas" data-dialog-options="{&quot;width&quot;:400}">{{ 'Add event'|t }}</a>
<a id="calendar-add-event2"  href="{{ language }}fullcalendar-view-event-add?entity={{ entity_id }}&bundle={{ options.bundle_type }}&start_field={{ options.start }}&end_field={{ options.end }}&destination={{ path('<current>') }}" class="use-ajax" data-dialog-type="dialog" data-dialog-options="{&quot;width&quot;:400}">{{ 'Add event triger'|t }}</a>
</div>

fullcalendar_view.js

$("#calendar").dblclick(function () {
    if (slotDate && drupalSettings.eventBundleType && drupalSettings.dblClickToCreate && drupalSettings.addForm !== '') {
        var date = slotDate.format(); 
        href = $('#calendar-add-event').attr('href');
        resHref = href.split('?');
        ajaxLink = resHref[0] + '?start=' + date + '&' + resHref[1];
        $('#calendar-add-event2').attr('href', ajaxLink);
        for (var j in Drupal.ajax) {
            if (j == 'instances') {
                for (var t in Drupal.ajax[j]) {
                    try {
                        if (Drupal.ajax[j][t].selector == '#calendar-add-event2') {
                            // console.log(Drupal.ajax[j][t]);
                            // console.log(t);
                            // console.log(Drupal.ajax[j][t]);
                            Drupal.ajax[j][t].options.url = ajaxLink + '&_wrapper_format=drupal_dialog';
                        }
                    } catch (err) {
                        console.log(Drupal.ajax[j]);
                    }
                }
            }
        }
        $('#calendar-add-event2').trigger('click');
        $('body').prepend("<div id='child-div'></div>");
    }
});
...