Projet

Général

Profil

0001-forms-use-button-instead-of-input-type-submit-14467.patch

Frédéric Péters, 01 janvier 2017 16:17

Télécharger (3,15 ko)

Voir les différences:

Subject: [PATCH] forms: use <button> instead of <input type="submit"/>
 (#14467)

 wcs/qommon/form.py            | 17 +++++++++++------
 wcs/qommon/static/js/popup.js |  4 ++--
 2 files changed, 13 insertions(+), 8 deletions(-)
wcs/qommon/form.py
53 53
    magic = None
54 54

  
55 55
import quixote
56
import quixote.form.widget
56 57

  
57 58
from quixote import get_publisher, get_request, get_response, get_session
58 59
from quixote.http_request import Upload
......
193 194
TextWidget.render_content = text_render_content
194 195

  
195 196

  
196
def submit_render_content(self):
197
    if self.name in ('cancel', 'previous', 'save-draft'):
198
        self.attrs['formnovalidate'] = 'formnovalidate'
199
    return super(self.__class__, self).render_content()
200
SubmitWidget.render_content = submit_render_content
201

  
197
class SubmitWidget(quixote.form.widget.SubmitWidget):
198
    def render_content(self):
199
        if self.name in ('cancel', 'previous', 'save-draft'):
200
            self.attrs['formnovalidate'] = 'formnovalidate'
201
        value = (self.label and htmlescape(self.label) or None)
202
        return htmltag('button', name=self.name, value=value, **self.attrs) + \
203
                self.label + htmltext('</button>')
202 204

  
203 205
class ValidationError(ValueError):
204 206
    pass
......
306 308
        if not self.captcha and not (get_session().won_captcha or get_session().user):
307 309
            self.captcha = CaptchaWidget('captcha', hint=hint)
308 310

  
311
    def add_submit(self, name, value=None, **kwargs):
312
        self.add(SubmitWidget, name, value, **kwargs)
313

  
309 314
    def add(self, widget_class, name, *args, **kwargs):
310 315
        if kwargs and not kwargs.has_key('render_br'):
311 316
            kwargs['render_br'] = False
wcs/qommon/static/js/popup.js
10 10
            var form = $(dialog).find('form');
11 11
            $(form).next('br').remove();
12 12
            $(dialog).find('.buttons').hide();
13
            $(html).find('.buttons input').each(function(idx, elem) {
13
            $(html).find('.buttons input, .buttons button').each(function(idx, elem) {
14 14
                var button = Object();
15 15
                button.text = $(elem).val();
16 16
                var name = $(elem).prop('name');
17 17
                if (name === 'cancel') {
18 18
                    button.click = function() { $(this).dialog('close'); return false; };
19 19
                } else {
20
                    button.click = function() { $(form).find('input[name='+name+']').click(); return false; };
20
                    button.click = function() { $(form).find('[name='+name+']').click(); return false; };
21 21
                }
22 22
                if (name === 'submit') {
23 23
                    button['class'] = 'submit-button';
24
-