Projet

Général

Profil

0001-misc-add-data-keywords-attributes-on-formdef-and-cat.patch

Frédéric Péters, 07 novembre 2015 16:47

Télécharger (4,46 ko)

Voir les différences:

Subject: [PATCH] misc: add data-keywords attributes on formdef and categories
 elements (#8907)

 tests/test_form_pages.py |  9 +++++++++
 wcs/forms/root.py        | 33 ++++++++++++++++++++++++++-------
 2 files changed, 35 insertions(+), 7 deletions(-)
tests/test_form_pages.py
116 116
    assert not 'category-misc' in home.body
117 117
    assert '<a class="" href="foobar/test/">test</a>' in home.body
118 118

  
119
def test_home_keywords(pub):
120
    formdef = create_formdef()
121
    formdef.category_id = '1'
122
    formdef.keywords = 'hello, world'
123
    formdef.store()
124
    home = get_app(pub).get('/')
125
    assert '<div data-keywords="hello ' in home.body or '<div data-keywords="world ' in home.body
126
    assert '<li data-keywords="hello ' in home.body or '<li data-keywords="world ' in home.body
127

  
119 128
def test_home_disabled(pub):
120 129
    formdef = create_formdef()
121 130
    formdef.disabled = True
wcs/forms/root.py
1257 1257
    def form_list(self, list, category = None, title = None,
1258 1258
                session = None, user_forms = None, advertised_forms = []):
1259 1259
        r = TemplateIO(html=True)
1260

  
1261
        keywords = {}
1262
        for formdef in list:
1263
            for keyword in formdef.keywords_list:
1264
                keywords[keyword] = True
1265

  
1266
        div_attrs = {'class': 'category'}
1267
        if keywords:
1268
            div_attrs['data-keywords'] = ' '.join(keywords)
1269

  
1270
        if title:
1271
            div_attrs['id'] = 'category-%s' % misc.simplify(title)
1272
        elif category:
1273
            div_attrs['id'] = 'category-%s' % category.url_name
1274
        else:
1275
            div_attrs['id'] = 'category-misc'
1276

  
1277
        r += htmltext('<div %s>' % ' '.join(
1278
                ['%s="%s"' % x for x in div_attrs.items()]))
1260 1279
        if title:
1261
            r += htmltext('<div class="category" id="category-%s">') % misc.simplify(title)
1262 1280
            r += htmltext('<h2>%s</h2>') % title
1263 1281
        elif category:
1264
            r += htmltext('<div class="category" id="category-%s">') % category.url_name
1265 1282
            r += htmltext('<h2>%s</h2>') % category.name
1266
        else:
1267
            r += htmltext('<div class="category" id="category-misc">')
1283

  
1268 1284
        formdefs_data = None
1269 1285
        if self.category:
1270 1286
            url_prefix = ''
......
1279 1295
                if formdefs_data is None:
1280 1296
                    formdefs_data = [x.formdef.id for x in user_forms
1281 1297
                                     if x.formdef.only_allow_one and not x.is_draft()]
1298
            r += htmltext('<li data-keywords="%s">') % ' '.join(formdef.keywords_list)
1282 1299
            if formdefs_data and formdef.id in formdefs_data:
1283 1300
                # form has already been completed
1284
                r += htmltext('<li>%s (%s, <a href="%s%s/">%s</a>)') % (
1301
                r += htmltext('%s (%s, <a href="%s%s/">%s</a>)') % (
1285 1302
                        formdef.name, _('already completed'),
1286 1303
                        url_prefix, formdef.url_name, _('review'))
1287 1304
            else:
1288 1305
                classes = []
1289 1306
                if formdef.is_disabled() and formdef.disabled_redirection:
1290 1307
                    classes.append('redirection')
1291
                r += htmltext('<li><a class="%s" href="%s%s/">%s</a>') % (
1308
                r += htmltext('<a class="%s" href="%s%s/">%s</a>') % (
1292 1309
                        ' '.join(classes), url_prefix, formdef.url_name, formdef.name)
1293 1310

  
1294 1311
            if formdef.description:
1295 1312
                r += htmltext('<div class="description">%s</div>' % formdef.description)
1296 1313
            r += htmltext('</li>')
1314

  
1297 1315
        for formdef in advertised_forms:
1298
            r += htmltext('<li class="required-authentication">')
1316
            r += htmltext('<li class="required-authentication" data-keywords="%s">'
1317
                    ) % ' '.join(formdef.keywords_list)
1299 1318
            r += htmltext('<a href="%s%s/">%s</a>') % (url_prefix, formdef.url_name, formdef.name)
1300 1319
            r += htmltext('<span> (%s)</span>') % _('authentication required')
1301 1320
            if formdef.description:
1302
-