misc: do not include first title of page if it's page title (#13529)

This commit is contained in:
Frédéric Péters 2017-09-19 17:24:09 +02:00
parent 2db78e53b2
commit c98d00af5d
2 changed files with 29 additions and 2 deletions

View File

@ -843,6 +843,26 @@ def test_form_multi_page_post_conditions(pub):
resp = resp.forms[0].submit('submit')
assert 'Check values then click submit.' in resp.body
def test_form_multi_page_page_name_as_title(pub):
formdef = create_formdef()
formdef.fields = [fields.PageField(id='0', label='1st page', type='page'),
fields.TitleField(id='4', label='1st page', type='title'),
fields.StringField(id='1', label='string'),
fields.PageField(id='2', label='2nd page', type='page'),
fields.StringField(id='3', label='string 2')]
formdef.store()
page = get_app(pub).get('/test/')
formdef.data_class().wipe()
page.forms[0]['f1'] = 'foo'
next_page = page.forms[0].submit('submit')
assert_current_page(next_page, '2nd page')
assert next_page.forms[0]['previous']
next_page.forms[0]['f3'] = 'bar'
next_page = next_page.forms[0].submit('submit')
assert_current_page(next_page, 'Validating')
assert 'Check values then click submit.' in next_page.body
assert next_page.body.count('1st page') == 2 # in steps and in main body
def test_form_submit_with_user(pub, emails):
create_user(pub)
formdef = create_formdef()

View File

@ -540,7 +540,7 @@ class FormDef(StorableObject):
form.attrs['data-keywords'] = ' '.join(self.keywords_list)
on_disabled_page = False
on_page = False
for field in self.fields:
for i, field in enumerate(self.fields):
if field.type == 'page':
on_disabled_page = False
if not field.is_visible(dict, self):
@ -563,7 +563,14 @@ class FormDef(StorableObject):
form.widgets.append(HtmlWidget(htmltext('</div></div>')))
form.widgets.append(HtmlWidget(
htmltext('<div class="page"><h3>%s</h3><div>' % field.label)))
on_page = True
on_page = field
if field.type == 'title' and on_page and (
self.fields[i-1] is on_page and
on_page.label == field.label):
# don't include first title of a page if that title has the
# same text as the page.
continue
value = dict.get(field.id, '')
field.add_to_view_form(form, value)