Projet

Général

Profil

0001-backoffice-add-direct-links-from-preview-to-page-fie.patch

Frédéric Péters, 01 novembre 2021 09:26

Télécharger (5,29 ko)

Voir les différences:

Subject: [PATCH] backoffice: add direct links from preview to page fields
 (#8882)

 tests/admin_pages/test_form.py       | 33 +++++++++++++++++++++++++---
 wcs/admin/forms.py                   | 16 ++++++++++----
 wcs/qommon/static/css/dc2/admin.scss |  7 ++++++
 3 files changed, 49 insertions(+), 7 deletions(-)
tests/admin_pages/test_form.py
1317 1317

  
1318 1318
    # check it's in the preview
1319 1319
    resp = app.get('/backoffice/forms/1/')
1320
    assert '<h3 data-field-id="1">baz</h3>' in resp.text
1320
    assert resp.pyquery('.form-preview h3').text() == 'baz'
1321 1321

  
1322 1322

  
1323 1323
def test_form_field_without_label(pub):
......
2366 2366
    formdef.fields.append(fields.PageField(id='1000', label='page', type='page'))
2367 2367
    formdef.store()
2368 2368
    resp = app.get('/backoffice/forms/1/')
2369
    resp = resp.click(href='fields/')
2369
    resp = resp.click(href='fields/', index=0)
2370 2370
    assert 'more than 500 fields' not in resp.text
2371 2371
    assert 'first field should be of type "page"' in resp.text
2372 2372

  
......
2375 2375
    )
2376 2376
    formdef.store()
2377 2377
    resp = app.get('/backoffice/forms/1/')
2378
    resp = resp.click(href='fields/')
2378
    resp = resp.click(href='fields/', index=0)
2379 2379
    assert 'more than 500 fields' in resp.text
2380 2380
    assert 'first field should be of type "page"' in resp.text
2381 2381

  
......
3049 3049
    resp = app.get(formdata.get_backoffice_url())
3050 3050
    assert 'inspect' in resp.text
3051 3051
    resp = app.get(formdata.get_backoffice_url() + 'inspect')
3052

  
3053

  
3054
def test_form_preview_edit_page_fields(pub):
3055
    create_superuser(pub)
3056
    create_role(pub)
3057

  
3058
    FormDef.wipe()
3059
    formdef = FormDef()
3060
    formdef.name = 'form title'
3061
    formdef.fields = [
3062
        fields.PageField(id='1', label='first page', type='page'),
3063
        fields.StringField(id='2', label='a field', type='string'),
3064
        fields.StringField(id='3', label='another field', type='string'),
3065
        fields.PageField(id='4', label='second page', type='page'),
3066
    ]
3067
    formdef.store()
3068
    formdef.data_class().wipe()
3069

  
3070
    app = login(get_app(pub))
3071
    resp = app.get('/backoffice/forms/%s/' % formdef.id)
3072
    assert resp.pyquery('fieldset.formpage a')
3073
    assert [x.attrib['href'] for x in resp.pyquery('fieldset.formpage a')] == [
3074
        'fields/pages/1/',
3075
        'fields/pages/4/',
3076
    ]
3077
    resp = resp.click('edit page fields', index=0)
3078
    assert '<h2>form title - page 1 - first page</h2>' in resp.text
wcs/admin/forms.py
848 848
        r += htmltext('</div>')
849 849

  
850 850
        r += htmltext('<div class="bo-block clear">')
851
        r += htmltext('<h3 class="clear">%s <span class="change">(<a href="fields/">%s</a>)</span></h3>') % (
851
        r += htmltext(
852
            '<h3 class="clear">%s <span class="change"><a class="pk-button" href="fields/">%s</a></span></h3>'
853
        ) % (
852 854
            _('Fields'),
853 855
            _('edit'),
854 856
        )
......
1162 1164
        form = Form(action='#', use_tokens=False)
1163 1165
        form.attrs['data-backoffice-preview'] = 'on'
1164 1166
        on_page = 0
1165
        for i, field in enumerate(self.formdef.fields):
1166
            field.id = i
1167
        for field in self.formdef.fields:
1167 1168
            if getattr(field, 'add_to_form', None):
1168 1169
                try:
1169 1170
                    get_request().disable_error_notifications = True
......
1184 1185
                    form.widgets.append(HtmlWidget('<fieldset class="formpage">'))
1185 1186
                    on_page += 1
1186 1187
                    form.widgets.append(
1187
                        HtmlWidget('<legend>%s %s</legend>' % (_('Page #%s:') % on_page, field.label))
1188
                        HtmlWidget('<legend><span>%s — %s</span> ' % (_('Page #%s:') % on_page, field.label))
1189
                    )
1190
                    form.widgets.append(
1191
                        HtmlWidget(
1192
                            '<a class="pk-button" href="%s">%s</a>'
1193
                            % ('fields/pages/%s/' % field.id, _('edit page fields'))
1194
                        )
1188 1195
                    )
1196
                    form.widgets.append(HtmlWidget('</legend>'))
1189 1197
                elif field.key == 'title':
1190 1198
                    form.widgets.append(HtmlWidget('<h3>%s</h3>' % field.label))
1191 1199
                elif field.key == 'subtitle':
wcs/qommon/static/css/dc2/admin.scss
852 852
fieldset.formpage {
853 853
	border: 1px solid #bcbcbc;
854 854
	margin: 1em 0;
855
	span {
856
		font-weight: bold;
857
	}
858
	a.pk-button {
859
		position: absolute;
860
		right: 1em;
861
	}
855 862
}
856 863

  
857 864
div.dataview::after {
858
-