Loading js/ajax_blocks.js +101 −91 Original line number Diff line number Diff line Loading @@ -7,7 +7,6 @@ let ajaxBlockHandler = function ($block) { // Make sure we have block. let blockId = $block.data('block-ajax-id'); if (blockId && drupalSettings.block_ajax.blocks[blockId] !== undefined) { let pluginId = $block.data('block-ajax-plugin-id'); if (!pluginId) { return; Loading Loading @@ -74,8 +73,12 @@ // Remove contextual-region class and move to inside. $blockParent.addClass('block-ajax-processed').removeClass('contextual-region'); // Replace block content. // Replacing block contents. if (drupalSettings.block_ajax.blocks[blockId].block_ajax.refresh_block) { $block.html(data.content); } else { $block.replaceWith(data.content); } // Move contextual links inside new block content. $('.contextual', $blockParent).prependTo($('.block-ajax-block', $blockParent)); Loading Loading @@ -106,22 +109,29 @@ // Throw console log error. console.log("Ajax Block: " + blockId + " request failed: " + textStatus); }); } }; /** * Initialize and loop over Ajax blocks. */ $('[data-block-ajax-id]', context).once('block_ajax').each(function () { let $block = $(this); // Load in block via AJAX let blockId = $block.data('block-ajax-id'); if (blockId && drupalSettings.block_ajax.blocks[blockId] !== undefined) { // Refresh ajax block on set interval. if (drupalSettings.block_ajax.blocks[blockId].block_ajax.refresh_block) { let refreshInterval = drupalSettings.block_ajax.blocks[blockId].block_ajax.refresh_interval; setInterval(ajaxBlockHandler, refreshInterval, $block); } else { // Load in block via AJAX on page load. ajaxBlockHandler($block); // On RefreshAjaxBlock event // On RefreshAjaxBlock event. $block.on('RefreshAjaxBlock', function () { // Execute the handler payload. ajaxBlockHandler($(this)); }); } } }); }, detach: function (context) { Loading src/Form/AjaxBlockForm.php +27 −1 Original line number Diff line number Diff line Loading @@ -134,12 +134,38 @@ class AjaxBlockForm extends BlockForm { ], ]; $form['settings']['block_ajax']['refresh_block'] = [ '#type' => 'checkbox', '#title' => $this->t('Refresh block'), '#description' => $this->t('If checked, block will be refreshed on set interval.'), '#default_value' => $settings['block_ajax']['refresh_block'] ?? FALSE, '#states' => [ 'visible' => [ ':input[name="settings[block_ajax][is_ajax]"]' => ['checked' => TRUE], ], ], ]; $form['settings']['block_ajax']['refresh_interval'] = [ '#type' => 'number', '#title' => $this->t('Refresh interval'), '#description' => $this->t('Refresh interval in milliseconds.'), '#default_value' => $settings['block_ajax']['refresh_interval'] ?? 5000, '#min' => 0, '#states' => [ 'visible' => [ ':input[name="settings[block_ajax][is_ajax]"]' => ['checked' => TRUE], ':input[name="settings[block_ajax][refresh_block]"]' => ['checked' => TRUE], ], ], ]; // Ajax defaults form elements. $form['settings']['block_ajax']['ajax_defaults'] = [ '#type' => 'details', '#title' => $this->t('Ajax defaults'), '#description' => $this->t('Configure settings for Ajax defaults.'), '#open' => TRUE, '#open' => FALSE, '#states' => [ 'visible' => [ ':input[name="settings[block_ajax][is_ajax]"]' => ['checked' => TRUE], Loading Loading
js/ajax_blocks.js +101 −91 Original line number Diff line number Diff line Loading @@ -7,7 +7,6 @@ let ajaxBlockHandler = function ($block) { // Make sure we have block. let blockId = $block.data('block-ajax-id'); if (blockId && drupalSettings.block_ajax.blocks[blockId] !== undefined) { let pluginId = $block.data('block-ajax-plugin-id'); if (!pluginId) { return; Loading Loading @@ -74,8 +73,12 @@ // Remove contextual-region class and move to inside. $blockParent.addClass('block-ajax-processed').removeClass('contextual-region'); // Replace block content. // Replacing block contents. if (drupalSettings.block_ajax.blocks[blockId].block_ajax.refresh_block) { $block.html(data.content); } else { $block.replaceWith(data.content); } // Move contextual links inside new block content. $('.contextual', $blockParent).prependTo($('.block-ajax-block', $blockParent)); Loading Loading @@ -106,22 +109,29 @@ // Throw console log error. console.log("Ajax Block: " + blockId + " request failed: " + textStatus); }); } }; /** * Initialize and loop over Ajax blocks. */ $('[data-block-ajax-id]', context).once('block_ajax').each(function () { let $block = $(this); // Load in block via AJAX let blockId = $block.data('block-ajax-id'); if (blockId && drupalSettings.block_ajax.blocks[blockId] !== undefined) { // Refresh ajax block on set interval. if (drupalSettings.block_ajax.blocks[blockId].block_ajax.refresh_block) { let refreshInterval = drupalSettings.block_ajax.blocks[blockId].block_ajax.refresh_interval; setInterval(ajaxBlockHandler, refreshInterval, $block); } else { // Load in block via AJAX on page load. ajaxBlockHandler($block); // On RefreshAjaxBlock event // On RefreshAjaxBlock event. $block.on('RefreshAjaxBlock', function () { // Execute the handler payload. ajaxBlockHandler($(this)); }); } } }); }, detach: function (context) { Loading
src/Form/AjaxBlockForm.php +27 −1 Original line number Diff line number Diff line Loading @@ -134,12 +134,38 @@ class AjaxBlockForm extends BlockForm { ], ]; $form['settings']['block_ajax']['refresh_block'] = [ '#type' => 'checkbox', '#title' => $this->t('Refresh block'), '#description' => $this->t('If checked, block will be refreshed on set interval.'), '#default_value' => $settings['block_ajax']['refresh_block'] ?? FALSE, '#states' => [ 'visible' => [ ':input[name="settings[block_ajax][is_ajax]"]' => ['checked' => TRUE], ], ], ]; $form['settings']['block_ajax']['refresh_interval'] = [ '#type' => 'number', '#title' => $this->t('Refresh interval'), '#description' => $this->t('Refresh interval in milliseconds.'), '#default_value' => $settings['block_ajax']['refresh_interval'] ?? 5000, '#min' => 0, '#states' => [ 'visible' => [ ':input[name="settings[block_ajax][is_ajax]"]' => ['checked' => TRUE], ':input[name="settings[block_ajax][refresh_block]"]' => ['checked' => TRUE], ], ], ]; // Ajax defaults form elements. $form['settings']['block_ajax']['ajax_defaults'] = [ '#type' => 'details', '#title' => $this->t('Ajax defaults'), '#description' => $this->t('Configure settings for Ajax defaults.'), '#open' => TRUE, '#open' => FALSE, '#states' => [ 'visible' => [ ':input[name="settings[block_ajax][is_ajax]"]' => ['checked' => TRUE], Loading