You are here

TODO.txt in Views Megarow 8

A modifier dans core/modules/views/js/ajax_view.js

(Ajouter après)
    // Add the ajax to pagers.
    this.$view
      // Don't attach to nested views. Doing so would attach multiple behaviors
      // to a given element.
      .filter($.proxy(this.filterNestedViews, this))
      .once('ajax-pager').each($.proxy(this.attachPagerAjax, this));


---------------------------
Ligne à ajouter

    this.$view
    // Don't attach to nested views. Doing so would attach multiple behaviors
    // to a given element.
      .once('ajax-refresh-parent').each($.proxy(this.attachRefreshParent, this));

--------------------------

A mettre en fin de fichier dans dans core/modules/views/js/ajax_view.js

  /**
   * Attach the ajax behavior to each link.
   */
  Drupal.views.ajaxView.prototype.attachRefreshParent = function () {
    this.$view.find('.views-table a.test-refresh')
      .each($.proxy(this.attachRefreshParentAjax, this));
  };

  /**
   * Attach the ajax behavior to a singe link.
   *
   * @param {string} [id]
   *   The ID of the link.
   * @param {HTMLElement} link
   *   The link element.
   */
  Drupal.views.ajaxView.prototype.attachRefreshParentAjax = function (id, link) {
    var $link = $(link);
    var viewData = {};
    var href = $link.attr('href');
    $.extend(
      viewData,
      this.settings,
      Drupal.Views.parseQueryString(href),
      // Extract argument data from the URL.
      Drupal.Views.parseViewArgs(href, this.settings.view_base_path)
    );
    viewData._element_offset = id;
    viewData._artus_mode = "refresh";
    var self_settings = $.extend({}, this.element_settings, {
      submit: viewData,
      base: false,
      element: link
    });

    this.pagerAjax = Drupal.ajax(self_settings);
  };






A mettre dans core/modules/views/src/Controller/ViewAjaxController.php ligne 183

        // @TODO:
        // * Récupérer l'offset original de la vue. (Le code actuel ne récupère
        // pas la valeur).
        // * Utiliser un meilleur nom que _artus_mode.
        // * Isoler le contenu du rendu de l'entité (on ne veut pas les en-tête
        // du tableau ni le pager, etc.
        if ($request->request->get('_artus_mode') == "refresh") {
          $original_offset = $view->getOffset();

          $page = $request->request->get('page');
          $offset = $request->request->get('_element_offset');
          $view->setItemsPerPage(1);
          $view->setCurrentPage($page);
          $view->setOffset($original_offset + $offset);
        }

File

TODO.txt
View source
  1. A modifier dans core/modules/views/js/ajax_view.js
  2. (Ajouter après)
  3. // Add the ajax to pagers.
  4. this.$view
  5. // Don't attach to nested views. Doing so would attach multiple behaviors
  6. // to a given element.
  7. .filter($.proxy(this.filterNestedViews, this))
  8. .once('ajax-pager').each($.proxy(this.attachPagerAjax, this));
  9. ---------------------------
  10. Ligne à ajouter
  11. this.$view
  12. // Don't attach to nested views. Doing so would attach multiple behaviors
  13. // to a given element.
  14. .once('ajax-refresh-parent').each($.proxy(this.attachRefreshParent, this));
  15. --------------------------
  16. A mettre en fin de fichier dans dans core/modules/views/js/ajax_view.js
  17. /**
  18. * Attach the ajax behavior to each link.
  19. */
  20. Drupal.views.ajaxView.prototype.attachRefreshParent = function () {
  21. this.$view.find('.views-table a.test-refresh')
  22. .each($.proxy(this.attachRefreshParentAjax, this));
  23. };
  24. /**
  25. * Attach the ajax behavior to a singe link.
  26. *
  27. * @param {string} [id]
  28. * The ID of the link.
  29. * @param {HTMLElement} link
  30. * The link element.
  31. */
  32. Drupal.views.ajaxView.prototype.attachRefreshParentAjax = function (id, link) {
  33. var $link = $(link);
  34. var viewData = {};
  35. var href = $link.attr('href');
  36. $.extend(
  37. viewData,
  38. this.settings,
  39. Drupal.Views.parseQueryString(href),
  40. // Extract argument data from the URL.
  41. Drupal.Views.parseViewArgs(href, this.settings.view_base_path)
  42. );
  43. viewData._element_offset = id;
  44. viewData._artus_mode = "refresh";
  45. var self_settings = $.extend({}, this.element_settings, {
  46. submit: viewData,
  47. base: false,
  48. element: link
  49. });
  50. this.pagerAjax = Drupal.ajax(self_settings);
  51. };
  52. A mettre dans core/modules/views/src/Controller/ViewAjaxController.php ligne 183
  53. // @TODO:
  54. // * Récupérer l'offset original de la vue. (Le code actuel ne récupère
  55. // pas la valeur).
  56. // * Utiliser un meilleur nom que _artus_mode.
  57. // * Isoler le contenu du rendu de l'entité (on ne veut pas les en-tête
  58. // du tableau ni le pager, etc.
  59. if ($request->request->get('_artus_mode') == "refresh") {
  60. $original_offset = $view->getOffset();
  61. $page = $request->request->get('page');
  62. $offset = $request->request->get('_element_offset');
  63. $view->setItemsPerPage(1);
  64. $view->setCurrentPage($page);
  65. $view->setOffset($original_offset + $offset);
  66. }