Projet

Général

Profil

0001-manager-keep-cell-open-after-edit-actions-33103.patch

Frédéric Péters, 18 mai 2019 14:29

Télécharger (7,13 ko)

Voir les différences:

Subject: [PATCH] manager: keep cell open after edit actions (#33103)

 combo/apps/gallery/views.py                  |  6 ++++--
 combo/manager/static/js/combo.manager.js     |  7 +++++--
 combo/manager/templates/combo/page_view.html |  2 +-
 combo/manager/views.py                       |  5 +++--
 tests/test_manager.py                        | 10 +++++-----
 5 files changed, 18 insertions(+), 12 deletions(-)
combo/apps/gallery/views.py
37 37
        return super(ImageAddView, self).form_valid(form)
38 38

  
39 39
    def get_success_url(self):
40
        return reverse('combo-manager-page-view', kwargs={'pk': self.object.gallery.page.id})
40
        return reverse('combo-manager-page-view',
41
                kwargs={'pk': self.object.gallery.page.id}) + '#cell-' + self.object.gallery.get_reference()
41 42

  
42 43
image_add = ImageAddView.as_view()
43 44

  
......
48 49
    form_class = ImageEditForm
49 50

  
50 51
    def get_success_url(self):
51
        return reverse('combo-manager-page-view', kwargs={'pk': self.object.gallery.page.id})
52
        return reverse('combo-manager-page-view',
53
                kwargs={'pk': self.object.gallery.page.id}) + '#cell-' + self.object.gallery.get_reference()
52 54

  
53 55
image_edit = ImageEditView.as_view()
54 56

  
combo/manager/static/js/combo.manager.js
269 269
  });
270 270

  
271 271
  $('div.cell').each(function(i, x) {
272
    $(this).attr('id', 'div-cell-'+i);
273 272
    compute_max_height($(this));
274
    $(this).addClass('untoggled');
273
    if (window.location.hash == '#' + $(this).attr('id')) {
274
      $(this).addClass('toggled');
275
    } else {
276
      $(this).addClass('untoggled');
277
    }
275 278
  });
276 279
  $('#assets-browser table tr').on('hover mouseenter', function() {
277 280
    var $img = $(this).find('img');
combo/manager/templates/combo/page_view.html
95 95
    <h2>{{ placeholder.name }}</h2>
96 96
    <div class="cell-list">
97 97
      {% for cell in placeholder.cells %}
98
      <div class="cell {{cell.class_name}}" data-cell-reference="{{ cell.get_reference }}">
98
      <div id="cell-{{cell.get_reference}}" class="cell {{cell.class_name}}" data-cell-reference="{{ cell.get_reference }}">
99 99
        <h3><span class="handle">⣿</span>
100 100
                <span class="group1">
101 101
                        {{ cell.get_label }}
combo/manager/views.py
346 346
            cell.order = 1
347 347
        cell.save()
348 348
        PageSnapshot.take(cell.page, request=self.request, comment=_('added cell "%s"') % cell)
349
        return reverse('combo-manager-page-view', kwargs={'pk': page_pk})
349
        return reverse('combo-manager-page-view', kwargs={'pk': page_pk}) + '#cell-' + cell.get_reference()
350 350

  
351 351
page_add_cell = PageAddCellView.as_view()
352 352

  
......
375 375
        return self.object.get_default_form_class()
376 376

  
377 377
    def get_success_url(self):
378
        return reverse('combo-manager-page-view', kwargs={'pk': self.kwargs.get('page_pk')})
378
        return reverse('combo-manager-page-view', kwargs={'pk': self.kwargs.get('page_pk')}
379
                ) + '#cell-' + self.object.get_reference()
379 380

  
380 381
    def form_valid(self, form):
381 382
        if self.request.is_ajax():
tests/test_manager.py
342 342
    resp = app.get('/manage/pages/%s/' % page.id)
343 343
    # click on first option link, this should add a text cell
344 344
    resp = app.get(resp.html.find('option').get('data-add-url'))
345
    assert resp.location.endswith('/manage/pages/1/')
346 345

  
347 346
    cells = CellBase.get_cells(page_id=page.id)
348 347
    assert len(cells) == 1
349 348
    assert isinstance(cells[0], TextCell)
349
    assert resp.location.endswith('/manage/pages/1/#cell-%s' % cells[0].get_reference())
350 350

  
351 351
    resp = app.get('/manage/pages/%s/' % page.id)
352 352
    assert ('data-cell-reference="%s"' % cells[0].get_reference()) in resp.text
353 353
    resp.forms[0]['c%s-text' % cells[0].get_reference()].value = 'Hello world'
354 354
    resp = resp.forms[0].submit()
355 355
    assert resp.status_int == 302
356
    assert resp.location.endswith('/manage/pages/1/')
356
    assert resp.location.endswith('/manage/pages/1/#cell-%s' % cells[0].get_reference())
357 357

  
358 358
    resp = app.get('/manage/pages/%s/' % page.id)
359 359
    assert resp.forms[0]['c%s-text' % cells[0].get_reference()].value == 'Hello world'
......
557 557
    resp = app.get('/manage/pages/%s/' % page.id)
558 558
    data_add_url = [x for x in resp.html.find_all('option') if x.text == 'Text'][0].get('data-add-url')
559 559
    resp = app.get(data_add_url)
560
    assert resp.location.endswith('/manage/pages/%s/' % page.id)
561 560

  
562 561
    cells = CellBase.get_cells(page_id=page.id)
563 562
    assert len(cells) == 1
564 563
    assert isinstance(cells[0], TextCell)
564
    assert resp.location.endswith('/manage/pages/%s/#cell-%s' % (page.id, cells[0].get_reference()))
565 565

  
566 566
    resp = app.get('/manage/pages/%s/' % page.id)
567 567
    resp.form['cdata_textcell-%s-text' % cells[0].id].value = 'Hello : World'
......
594 594
        assert 'Foobar' in options
595 595
        data_add_url = [x for x in resp.html.find_all('option') if x.text == 'Foobar'][0].get('data-add-url')
596 596
        resp = app.get(data_add_url)
597
        assert resp.location.endswith('/manage/pages/%s/' % page.id)
598 597

  
599 598
        cells = CellBase.get_cells(page_id=page.id)
600 599
        assert len(cells) == 1
601 600
        assert isinstance(cells[0], ConfigJsonCell)
602 601
        assert cells[0].key == 'test-config-json-cell'
602
        assert resp.location.endswith('/manage/pages/%s/#cell-%s' % (page.id, cells[0].get_reference()))
603 603

  
604 604
        resp = app.get('/manage/pages/%s/' % page.id)
605 605
        assert ('data-cell-reference="%s"' % cells[0].get_reference()) in resp.text
......
641 641
        resp.form['c%s-test3' % cells[0].get_reference()].value = 'Hello again'
642 642
        resp = resp.form.submit()
643 643
        assert resp.status_int == 302
644
        assert resp.location.endswith('/manage/pages/%s/' % page.id)
644
        assert resp.location.endswith('/manage/pages/%s/#cell-%s' % (page.id, cells[0].get_reference()))
645 645

  
646 646
        resp = app.get('/manage/pages/%s/' % page.id)
647 647
        assert resp.form['c%s-test' % cells[0].get_reference()].value == 'Hello world'
648
-