Projet

Général

Profil

0001-manager-remove-toggle-pages-feature-56791.patch

Lauréline Guérin, 11 février 2022 08:58

Télécharger (7,65 ko)

Voir les différences:

Subject: [PATCH] manager: remove toggle pages feature (#56791)

 combo/manager/static/css/combo.manager.css    | 17 -----
 combo/manager/static/js/combo.manager.js      | 74 +------------------
 .../manager/templates/combo/manager_home.html |  3 +-
 combo/manager/views.py                        |  1 -
 combo/settings.py                             |  3 -
 tests/test_manager.py                         | 12 ---
 6 files changed, 3 insertions(+), 107 deletions(-)
combo/manager/static/css/combo.manager.css
25 25
	align-items: center;
26 26
}
27 27

  
28
div#pages-list span.togglable {
29
	padding: 1em 2ex;
30
	cursor: pointer;
31
}
32

  
33
div#pages-list div.page.untoggled span.togglable:after {
34
	font-family: FontAwesome;
35
	content: "\f107"; /* angle-down */
36
	cursor: pointer;
37
}
38

  
39
div#pages-list div.page.toggled span.togglable:after {
40
	font-family: FontAwesome;
41
	content: "\f106"; /* angle-up */
42
	cursor: pointer;
43
}
44

  
45 28
div.cell-list > div {
46 29
	background: white;
47 30
	border: 1px solid #eee;
combo/manager/static/js/combo.manager.js
79 79
  });
80 80
}
81 81

  
82
function get_page_children($page) {
83
  var children = [];
84
  $page.nextAll().each(function() {
85
    var level = parseInt($(this).data('level'), 10);
86
    if (level <= parseInt($page.data('level'), 10)) {
87
      return false;
88
    }
89
    children.push($(this));
90
  });
91
  return children;
92
}
93

  
94
function show_page_children($page) {
95
  $.each(get_page_children($page), function() {
96
    $child = $(this);
97
    var level = parseInt($child.data('level'), 10);
98
    if (level == parseInt($page.data('level'), 10) + 1) {
99
      $child.show();
100
      if ($child.hasClass('toggled')) {
101
        show_page_children($child);
102
      }
103
    }
104
  });
105
}
106

  
107
function hide_page_children($page) {
108
  $.each(get_page_children($page), function() {
109
    $(this).hide();
110
  });
111
}
112

  
113
function init_pages_toggle() {
114
  $('.page').each(function() {
115
    if (!get_page_children($(this)).length) {
116
      $(this).removeClass('toggled').removeClass('untoggled').find('.togglable').remove();
117
    }
118
  });
119
  $('div.page.untoggled').each(function() {
120
    hide_page_children($(this));
121
  });
122
  $('div.page.toggled[level=1]').each(function() {
123
    show_page_children($(this));
124
  });
125
}
126

  
127
function init_pages_list(toggle_state)
82
function init_pages_list()
128 83
{
129 84
  if ($('#pages-list').length == 0)
130 85
    return;
131
  init_pages_toggle();
132
  // if toggle_state is defined, restore toggled pages
133
  if (toggle_state) {
134
    $('div.page').each(function() {
135
      if (toggle_state.includes($(this).data('page-id'))) {
136
        $('span.togglable', $(this)).trigger('click');
137
      }
138
    });
139
  }
140 86
  var list_offset = $('#pages-list').offset().left;
141 87
  $('#pages-list').sortable({
142 88
     handle: '.handle',
......
166 112
       $(ui.item).data('level', new_level).attr('data-level', new_level);
167 113

  
168 114
       var new_order = $('#pages-list div').map(function() { return $(this).data('page-id'); }).get().join();
169
       // keep actuel toggled pages + new parent to restore display on init_pages_list
170
       var old_toggle_state = [];
171
       $('div.page.toggled').each(function() {
172
         old_toggle_state.push($(this).data('page-id'));
173
       });
174
       if (!old_toggle_state.includes(new_parent)) {
175
         old_toggle_state.push(new_parent);
176
       }
177 115

  
178 116
       $.ajax({
179 117
           url: $('#pages-list').data('page-order-url'),
......
183 121
           },
184 122
           success: function(data, status) {
185 123
             $('#pages-list').replaceWith($(data).find('#pages-list'));
186
             init_pages_list(old_toggle_state);
124
             init_pages_list();
187 125
           }
188 126
       });
189 127
     }
......
209 147
    return false;
210 148
  });
211 149
  init_pages_list();
212
  $(document).on('click', 'div.page.untoggled span.togglable', function() {
213
    $(this).parent().toggleClass('toggled').toggleClass('untoggled');
214
    show_page_children($(this).parent());
215
  });
216
  $(document).on('click', 'div.page.toggled span.togglable', function() {
217
    $(this).parent().toggleClass('toggled').toggleClass('untoggled');
218
    hide_page_children($(this).parent());
219
  });
220 150

  
221 151
  function init_cells_lists() {
222 152
    $('.cell-list').each(function() {
combo/manager/templates/combo/manager_home.html
36 36

  
37 37
<div class="objects-list" id="pages-list" data-page-order-url="{% url 'combo-manager-page-order' %}">
38 38
 {% for page in object_list %}
39
 <div class="page level-{{page.level}}{% if collapse_pages %} untoggled{% endif %}" data-page-id="{{page.id}}" data-level="{{page.level}}">
39
 <div class="page level-{{page.level}}" data-page-id="{{page.id}}" data-level="{{page.level}}">
40 40
    {% if user.is_superuser %}<span class="handle">⣿</span>{% endif %}
41 41
    <span class="group1">
42 42
      <a href="{% url 'combo-manager-page-view' pk=page.id %}">
......
54 54
    {% endwith %}
55 55
    </span>
56 56
    {% endif %}
57
    {% if collapse_pages %}<span class="togglable"></span>{% endif %}
58 57
 </div>
59 58
 {% endfor %}
60 59
</div>
combo/manager/views.py
97 97
        )
98 98
        context = super().get_context_data(**kwargs)
99 99
        context['extra_actions'] = plugins.get_extra_manager_actions()
100
        context['collapse_pages'] = settings.COMBO_MANAGE_HOME_COLLAPSE_PAGES
101 100
        context['can_add_page'] = can_add_page(self.request.user)
102 101
        return context
103 102

  
combo/settings.py
273 273

  
274 274
COMBO_DASHBOARD_NEW_TILE_POSITION = 'last'
275 275

  
276
# collapse pages on combo home
277
COMBO_MANAGE_HOME_COLLAPSE_PAGES = False
278

  
279 276
# default position on maps
280 277
COMBO_MAP_DEFAULT_POSITION = {'lat': '48.83369263315934', 'lng': '2.3233688436448574'}
281 278

  
tests/test_manager.py
73 73
    assert "This site doesn't have any page yet." in resp.text
74 74

  
75 75

  
76
@pytest.mark.parametrize('collapse', [True, False])
77
def test_pages_collapse(settings, app, admin_user, collapse):
78
    Page.objects.create(title='One', slug='one')
79
    settings.COMBO_MANAGE_HOME_COLLAPSE_PAGES = collapse
80

  
81
    app = login(app)
82
    resp = app.get('/manage/', status=200)
83
    assert resp.context['collapse_pages'] is collapse
84
    assert ('class="page level-0 untoggled"' in resp.text) is collapse
85
    assert ('class="page level-0"' in resp.text) is not collapse
86

  
87

  
88 76
def test_pages_redirection(app, admin_user):
89 77
    page = Page.objects.create(title='One', slug='one')
90 78

  
91
-