Projet

Général

Profil

0001-misc-strip-html-from-field-labels-when-displayed-in-.patch

Frédéric Péters, 21 février 2016 17:20

Télécharger (5,38 ko)

Voir les différences:

Subject: [PATCH] misc: strip html from field labels when displayed in
 backoffice (#9837)

 wcs/admin/fields.py |  9 ++++-----
 wcs/admin/forms.py  | 13 ++++++-------
 wcs/fields.py       |  4 ++++
 3 files changed, 14 insertions(+), 12 deletions(-)
wcs/admin/fields.py
42 42
            raise errors.TraversalError()
43 43
        if not self.field.label:
44 44
            self.field.label = _('None')
45
        self.unhtmled_label = re.sub('<.*?>', ' ', self.field.label)
46
        label = misc.ellipsize(self.unhtmled_label, 40)
45
        label = misc.ellipsize(self.field.unhtmled_label, 40)
47 46
        get_response().breadcrumb.append((field_id + '/', label))
48 47

  
49 48
    def form(self):
......
80 79
        if redo or not form.get_submit() == 'submit':
81 80
            self.html_top('%s - %s' % (_('Form'), self.objectdef.name))
82 81
            r = TemplateIO(html=True)
83
            r += htmltext('<h2>%s - %s</h2>') % (self.objectdef.name, self.unhtmled_label)
82
            r += htmltext('<h2>%s - %s</h2>') % (self.objectdef.name, self.field.unhtmled_label)
84 83
            r += form.render()
85 84
            return r.getvalue()
86 85
        else:
......
113 112
            get_response().breadcrumb.append(('delete', _('Delete')))
114 113
            self.html_top(title = _('Delete Field'))
115 114
            r = TemplateIO(html=True)
116
            r += htmltext('<h2>%s %s</h2>') % (_('Deleting Field:'), self.unhtmled_label)
115
            r += htmltext('<h2>%s %s</h2>') % (_('Deleting Field:'), self.field.unhtmled_label)
117 116
            r += form.render()
118 117
            return r.getvalue()
119 118
        else:
......
230 229
                except IndexError:
231 230
                    type_label = _('Unknown')
232 231
                if field.type in ('subtitle', 'title', 'comment'):
233
                    label = misc.ellipsize(field.label, 60)
232
                    label = misc.ellipsize(field.unhtmled_label, 60)
234 233
                    if field.type in ('subtitle', 'title'):
235 234
                        r += htmltext('<strong id="label%s">%s</strong>') % (field.id, label)
236 235
                    else:
wcs/admin/forms.py
939 939
        r += htmltext('<div id="form-diff">')
940 940
        r += htmltext('<div>')
941 941
        r += htmltext('<table id="table-diff">')
942
        def ellipsize_html(label):
943
            unhtmled_label = re.sub('<.*?>', ' ', label)
944
            return misc.ellipsize(unhtmled_label, 60)
942
        def ellipsize_html(field):
943
            return misc.ellipsize(field.unhtmled_label, 60)
945 944

  
946 945
        for diffinfo in difflib.ndiff(current_fields_list, new_fields_list):
947 946
            if diffinfo[0] == '?':
......
950 949
            field_id = diffinfo[2:].split()[0]
951 950
            if diffinfo[0] == ' ':
952 951
                # unchanged line
953
                label1 = ellipsize_html(current_fields.get(field_id).label)
954
                label2 = ellipsize_html(new_fields.get(field_id).label)
952
                label1 = ellipsize_html(current_fields.get(field_id))
953
                label2 = ellipsize_html(new_fields.get(field_id))
955 954
                if current_fields.get(field_id) and new_fields.get(field_id) and \
956 955
                        current_fields.get(field_id).type != new_fields.get(field_id).type:
957 956
                    r += htmltext('<tr class="type-change"><td class="indicator">!</td>')
......
964 963
                r += htmltext('<td>%s</td> <td>%s</td></tr>') % (label1, label2)
965 964
            elif diffinfo[0] == '-':
966 965
                # removed field
967
                label1 = ellipsize_html(current_fields.get(field_id).label)
966
                label1 = ellipsize_html(current_fields.get(field_id))
968 967
                if current_fields.get(field_id) and new_fields.get(field_id) and \
969 968
                        current_fields.get(field_id).type != new_fields.get(field_id).type:
970 969
                    r += htmltext('<tr class="type-change"><td class="indicator">!</td>')
......
973 972
                r += htmltext('<td>%s</td> <td></td></tr>') % label1
974 973
            elif diffinfo[0] == '+':
975 974
                # added field
976
                label2 = ellipsize_html(new_fields.get(field_id).label)
975
                label2 = ellipsize_html(new_fields.get(field_id))
977 976
                if current_fields.get(field_id) and new_fields.get(field_id) and \
978 977
                        current_fields.get(field_id).type != new_fields.get(field_id).type:
979 978
                    r += htmltext('<tr class="type-change"><td class="indicator">!</td>')
wcs/fields.py
155 155
        pass
156 156
    init = classmethod(init)
157 157

  
158
    @property
159
    def unhtmled_label(self):
160
        return re.sub('<.*?>', ' ', self.label)
161

  
158 162
    def get_admin_attributes(self):
159 163
        return ['label', 'type']
160 164

  
161
-