changeset a349f81e5b3e in sao:5.0
details: https://hg.tryton.org/sao?cmd=changeset;node=a349f81e5b3e
description:
        Escape external strings

        issue9351
        review301651002
        (grafted from 2d55ed2f2bb12fd6fbe387fc768ad4394c00c20a)
diffstat:

 CHANGELOG            |   2 +
 src/common.js        |  72 ++++++++++++++++++++++++++--------------------------
 src/sao.js           |  14 +++++-----
 src/screen.js        |   8 ++--
 src/session.js       |   6 ++--
 src/tab.js           |  14 +++++-----
 src/view/calendar.js |   2 +-
 src/view/form.js     |  10 +++---
 src/view/tree.js     |   2 +-
 src/window.js        |  40 ++++++++++++++--------------
 10 files changed, 86 insertions(+), 84 deletions(-)

diffs (699 lines):

diff -r a64431c8055f -r a349f81e5b3e CHANGELOG
--- a/CHANGELOG Sun May 10 11:34:47 2020 +0200
+++ b/CHANGELOG Tue May 26 09:57:34 2020 +0200
@@ -1,3 +1,5 @@
+* Escape external strings (issue9351)
+
 Version 5.0.22 - 2020-05-01
 * Bug fixes (see mercurial logs for details)
 
diff -r a64431c8055f -r a349f81e5b3e src/common.js
--- a/src/common.js     Sun May 10 11:34:47 2020 +0200
+++ b/src/common.js     Tue May 26 09:57:34 2020 +0200
@@ -124,12 +124,12 @@
             jQuery('<div/>', {
                 'class': 'checkbox'
             }).append(jQuery('<label/>')
-                .append(jQuery('<input/>', {
+                .text(' ' + k)
+                .prepend(jQuery('<input/>', {
                     'type': 'radio',
                     'name': 'selection',
                     'value': i
-                }))
-                .append(' ' + k))
+                })))
             .appendTo(dialog.body);
         });
         dialog.body.find('input').first().prop('checked', true);
@@ -137,14 +137,14 @@
         jQuery('<button/>', {
             'class': 'btn btn-link',
             'type': 'button'
-        }).append(Sao.i18n.gettext('Cancel')).click(function() {
+        }).text(Sao.i18n.gettext('Cancel')).click(function() {
             dialog.modal.modal('hide');
             prm.fail();
         }).appendTo(dialog.footer);
         jQuery('<button/>', {
             'class': 'btn btn-primary',
             'type': 'button'
-        }).append(Sao.i18n.gettext('OK')).click(function() {
+        }).text(Sao.i18n.gettext('OK')).click(function() {
             var i = dialog.body.find('input:checked').attr('value');
             dialog.modal.modal('hide');
             prm.resolve(values[keys[i]]);
@@ -754,7 +754,7 @@
                 this.el = el;
             } else {
                 this.el = jQuery('<button/>');
-                this.el.append(attributes.string || '');
+                this.el.text(attributes.string || '');
                 if (this.attributes.rule) {
                     this.el.append(' ').append(jQuery('<span/>', {
                         'class': 'badge'
@@ -2843,14 +2843,14 @@
                 'aria-hidden': true,
             })).append(jQuery('<span/>', {
                 'class': 'sr-only'
-            }).append(Sao.i18n.gettext('Message: '))
+            }).text(Sao.i18n.gettext('Message: '))
             ).append(jQuery('<span/>')
-                .append(message)
+                .text(message)
                 .css('white-space', 'pre-wrap')));
             jQuery('<button/>', {
                 'class': 'btn btn-primary',
                 'type': 'button'
-            }).append(Sao.i18n.gettext('OK')).click(function() {
+            }).text(Sao.i18n.gettext('OK')).click(function() {
                 this.close(dialog);
                 prm.resolve('ok');
             }.bind(this)).appendTo(dialog.footer);
@@ -2875,20 +2875,20 @@
                 'aria-hidden': true,
             })).append(jQuery('<span/>', {
                 'class': 'sr-only'
-            }).append(Sao.i18n.gettext('Warning: '))
+            }).text(Sao.i18n.gettext('Warning: '))
             ).append(jQuery('<h4/>')
-                .append(title)
+                .text(title)
                 .css('white-space', 'pre-wrap'));
             if (message) {
                 content.append(jQuery('<span/>')
-                    .append(message)
+                    .text(message)
                     .css('white-space', 'pre-wrap'));
             }
             dialog.body.append(content);
             jQuery('<button/>', {
                 'class': 'btn btn-primary',
                 'type': 'button'
-            }).append(Sao.i18n.gettext('OK')).click(function() {
+            }).text(Sao.i18n.gettext('OK')).click(function() {
                 this.close(dialog);
                 prm.resolve('ok');
             }.bind(this)).appendTo(dialog.footer);
@@ -2909,7 +2909,7 @@
                 'class': 'checkbox',
             }).append(jQuery('<label/>')
                 .append(always)
-                .append(Sao.i18n.gettext('Always ignore this warning.')))
+                .text(Sao.i18n.gettext('Always ignore this warning.')))
             );
             dialog.body.append(jQuery('<p/>')
                     .text(Sao.i18n.gettext('Do you want to proceed?')));
@@ -2917,14 +2917,14 @@
             jQuery('<button/>', {
                 'class': 'btn btn-link',
                 'type': 'button'
-            }).append(Sao.i18n.gettext('No')).click(function() {
+            }).text(Sao.i18n.gettext('No')).click(function() {
                 this.close(dialog);
                 prm.reject();
             }.bind(this)).appendTo(dialog.footer);
             jQuery('<button/>', {
                 'class': 'btn btn-primary',
                 'type': 'button'
-            }).append(Sao.i18n.gettext('Yes')).click(function() {
+            }).text(Sao.i18n.gettext('Yes')).click(function() {
                 this.close(dialog);
                 if (always.prop('checked')) {
                     prm.resolve('always');
@@ -2949,9 +2949,9 @@
                 'aria-hidden': true,
             })).append(jQuery('<span/>', {
                 'class': 'sr-only'
-            }).append(Sao.i18n.gettext('Confirmation: '))
+            }).text(Sao.i18n.gettext('Confirmation: '))
             ).append(jQuery('<span/>')
-                .append(message)
+                .text(message)
                 .css('white-space', 'pre-wrap')));
             return dialog;
         }
@@ -2964,14 +2964,14 @@
             jQuery('<button/>', {
                 'class': 'btn btn-link',
                 'type': 'button'
-            }).append(Sao.i18n.gettext('Cancel')).click(function() {
+            }).text(Sao.i18n.gettext('Cancel')).click(function() {
                 this.close(dialog);
                 prm.reject();
             }.bind(this)).appendTo(dialog.footer);
             jQuery('<button/>', {
                 'class': 'btn btn-primary',
                 'type': 'button'
-            }).append(Sao.i18n.gettext('OK')).click(function() {
+            }).text(Sao.i18n.gettext('OK')).click(function() {
                 this.close(dialog);
                 prm.resolve();
             }.bind(this)).appendTo(dialog.footer);
@@ -2987,21 +2987,21 @@
             jQuery('<button/>', {
                 'class': 'btn btn-link',
                 'type': 'button'
-            }).append(Sao.i18n.gettext('Cancel')).click(function() {
+            }).text(Sao.i18n.gettext('Cancel')).click(function() {
                 this.close(dialog);
                 prm.resolve('cancel');
             }.bind(this)).appendTo(dialog.footer);
             jQuery('<button/>', {
                 'class': 'btn btn-default',
                 'type': 'button'
-            }).append(Sao.i18n.gettext('No')).click(function() {
+            }).text(Sao.i18n.gettext('No')).click(function() {
                 this.close(dialog);
                 prm.resolve('ko');
             }.bind(this)).appendTo(dialog.footer);
             jQuery('<button/>', {
                 'class': 'btn btn-primary',
                 'type': 'button'
-            }).append(Sao.i18n.gettext('Yes')).click(function() {
+            }).text(Sao.i18n.gettext('Yes')).click(function() {
                 this.close(dialog);
                 prm.resolve('ok');
             }.bind(this)).appendTo(dialog.footer);
@@ -3031,18 +3031,18 @@
                 'class': 'form-group'
             }).append(jQuery('<label/>', {
                 'for': 'ask-dialog-entry'
-            }).append(question)).append(entry));
+            }).text(question)).append(entry));
             jQuery('<button/>', {
                 'class': 'btn btn-link',
                 'type': 'button'
-            }).append(Sao.i18n.gettext('Cancel')).click(function() {
+            }).text(Sao.i18n.gettext('Cancel')).click(function() {
                 this.close(dialog);
                 prm.reject();
             }.bind(this)).appendTo(dialog.footer);
             jQuery('<button/>', {
                 'class': 'btn btn-primary',
                 'type': 'button'
-            }).append(Sao.i18n.gettext('OK')).click(function() {
+            }).text(Sao.i18n.gettext('OK')).click(function() {
                 this.close(dialog);
                 prm.resolve(entry.val());
             }.bind(this)).appendTo(dialog.footer);
@@ -3067,8 +3067,8 @@
                     'aria-hidden': true,
                 })).append(jQuery('<span/>', {
                     'class': 'sr-only'
-                }).append(Sao.i18n.gettext('Write Concurrency Warning: '))
-                ).append(Sao.i18n.gettext('This record has been modified ' +
+                }).text(Sao.i18n.gettext('Write Concurrency Warning: '))
+                ).text(Sao.i18n.gettext('This record has been modified ' +
                 'while you were editing it.')))
                 .append(jQuery('<p/>').text(Sao.i18n.gettext('Choose:')))
                 .append(jQuery('<ul/>')
@@ -3084,14 +3084,14 @@
             jQuery('<button/>', {
                 'class': 'btn btn-link',
                 'type': 'button'
-            }).append(Sao.i18n.gettext('Cancel')).click(function() {
+            }).text(Sao.i18n.gettext('Cancel')).click(function() {
                 this.close(dialog);
                 prm.reject();
             }.bind(this)).appendTo(dialog.footer);
             jQuery('<button/>', {
                 'class': 'btn btn-default',
                 'type': 'button'
-            }).append(Sao.i18n.gettext('Compare')).click(function() {
+            }).text(Sao.i18n.gettext('Compare')).click(function() {
                 this.close(dialog);
                 Sao.Tab.create({
                     'model': model,
@@ -3105,7 +3105,7 @@
             jQuery('<button/>', {
                 'class': 'btn btn-default',
                 'type': 'button'
-            }).append(Sao.i18n.gettext('Write Anyway')).click(function() {
+            }).text(Sao.i18n.gettext('Write Anyway')).click(function() {
                 this.close(dialog);
                 prm.resolve();
             }.bind(this)).appendTo(dialog.footer);
@@ -3129,7 +3129,7 @@
                 'aria-hidden': true,
             })).append(jQuery('<span/>', {
                 'class': 'sr-only'
-            }).append(Sao.i18n.gettext('Warning: '))
+            }).text(Sao.i18n.gettext('Warning: '))
             ).append(jQuery('<p/>')
                 .append(jQuery('<pre/>')
                     .text(details)))
@@ -3143,7 +3143,7 @@
             jQuery('<button/>', {
                 'class': 'btn btn-primary',
                 'type': 'button'
-            }).append(Sao.i18n.gettext('Close')).click(function() {
+            }).text(Sao.i18n.gettext('Close')).click(function() {
                 this.close(dialog);
                 prm.resolve();
             }.bind(this)).appendTo(dialog.footer);
@@ -3280,7 +3280,7 @@
                     'class': 'action action-' + action_id
                 }).append(jQuery('<a/>', {
                     'href': '#'
-                }).append(this._format_action(content)))
+                }).text(this._format_action(content)))
                 .click(function(evt) {
                     evt.preventDefault();
                     if (this.action_activated) {
@@ -3332,7 +3332,7 @@
                     'class': 'completion'
                 }).append(jQuery('<a/>', {
                     'href': '#'
-                }).append(this._format(value)))
+                }).text(this._format(value)))
                 .click(function(evt) {
                     evt.preventDefault();
                     if (this.match_selected) {
@@ -3519,7 +3519,7 @@
         var button = jQuery('<button/>', {
             'class': 'btn btn-default',
             'type': 'button'
-        }).append(Sao.i18n.gettext('Close')).click(close)
+        }).text(Sao.i18n.gettext('Close')).click(close)
             .appendTo(dialog.footer);
         dialog.modal.on('shown.bs.modal', function() {
             // Force the click trigger
diff -r a64431c8055f -r a349f81e5b3e src/sao.js
--- a/src/sao.js        Sun May 10 11:34:47 2020 +0200
+++ b/src/sao.js        Tue May 26 09:57:34 2020 +0200
@@ -661,7 +661,7 @@
         }).click(function(evt) {
             evt.preventDefault();
             Sao.preferences();
-        }).append(preferences.status_bar));
+        }).text(preferences.status_bar));
         var title = Sao.i18n.gettext("Logout");
         jQuery('#user-logout').append(jQuery('<a/>', {
             'href': '#',
@@ -850,7 +850,7 @@
         add_title: function(title) {
             this.header.append(jQuery('<h4/>', {
                 'class': 'modal-title'
-            }).append(title));
+            }).text(title));
         }
     });
 
@@ -1085,18 +1085,18 @@
         var global_shortcuts_dl = jQuery('<dl/>', {
             'class': 'dl-horizontal col-md-6'
         }).append(jQuery('<h5/>')
-                  .append(Sao.i18n.gettext('Global shortcuts')))
+            .text(Sao.i18n.gettext('Global shortcuts')))
             .appendTo(row);
         var tab_shortcuts_dl = jQuery('<dl/>', {
             'class': 'dl-horizontal col-md-6'
         }).append(jQuery('<h5/>')
-            .append(Sao.i18n.gettext('Tab shortcuts')))
-        .appendTo(row);
+            .text(Sao.i18n.gettext('Tab shortcuts')))
+            .appendTo(row);
 
         shortcuts_defs().forEach(function(definition) {
-            var dt = jQuery('<dt/>').append(definition.label);
+            var dt = jQuery('<dt/>').text(definition.label);
             var dd = jQuery('<dd/>').append(jQuery('<kbd>')
-                .append(definition.shortcut));
+                .text(definition.shortcut));
             var dest_dl;
             if (definition.id) {
                 dest_dl = tab_shortcuts_dl;
diff -r a64431c8055f -r a349f81e5b3e src/screen.js
--- a/src/screen.js     Sun May 10 11:34:47 2020 +0200
+++ b/src/screen.js     Tue May 26 09:57:34 2020 +0200
@@ -30,7 +30,7 @@
             this.filter_button = jQuery('<button/>', {
                 type: 'button',
                 'class': 'btn btn-default'
-            }).append(Sao.i18n.gettext('Filters'));
+            }).text(Sao.i18n.gettext('Filters'));
             this.filter_button.click(this.search_box.bind(this));
             this.search_entry = jQuery('<input/>', {
                 'class': 'form-control mousetrap',
@@ -91,7 +91,7 @@
                         'role': 'menuitem',
                         'href': '#',
                         'tabindex': -1
-                    }).append(name)
+                    }).text(name)
                         .click(domain, this.bookmark_activate.bind(this)))
                     .appendTo(dropdown_bookmark);
                 }
@@ -182,7 +182,7 @@
                         role: 'tab',
                         'data-toggle': 'tab',
                         'href': '#' + i
-                    }).append(name + ' ').append(counter)).appendTo(nav);
+                    }).text(name + ' ').append(counter)).appendTo(nav);
                     this.tab_counter.push(counter);
                 }.bind(this));
                 nav.find('a:first').tab('show');
@@ -525,7 +525,7 @@
                 jQuery('<button/>', {
                     'class': 'btn btn-primary',
                     type: 'submit'
-                }).append(Sao.i18n.gettext('Find'))
+                }).text(Sao.i18n.gettext('Find'))
                 .click(search).appendTo(dialog.footer);
             }
             this.search_modal.modal('show');
diff -r a64431c8055f -r a349f81e5b3e src/session.js
--- a/src/session.js    Sun May 10 11:34:47 2020 +0200
+++ b/src/session.js    Tue May 26 09:57:34 2020 +0200
@@ -135,7 +135,7 @@
         }).append(jQuery('<label/>', {
             'class': 'control-label',
             'for': 'login-database'
-        }).append(Sao.i18n.gettext('Database')))
+        }).text(Sao.i18n.gettext('Database')))
         .append(dialog.database_select)
         .append(dialog.database_input)
         ).append(jQuery('<div/>', {
@@ -143,13 +143,13 @@
         }).append(jQuery('<label/>', {
             'class': 'control-label',
             'for': 'login-login'
-        }).append(Sao.i18n.gettext('User name')))
+        }).text(Sao.i18n.gettext('User name')))
         .append(dialog.login_input)
         );
         dialog.button = jQuery('<button/>', {
             'class': 'btn btn-primary',
             'type': 'submit'
-        }).append(' ' + Sao.i18n.gettext("Login")).appendTo(dialog.footer);
+        }).text(' ' + Sao.i18n.gettext("Login")).appendTo(dialog.footer);
         return dialog;
     };
 
diff -r a64431c8055f -r a349f81e5b3e src/tab.js
--- a/src/tab.js        Sun May 10 11:34:47 2020 +0200
+++ b/src/tab.js        Tue May 26 09:57:34 2020 +0200
@@ -138,7 +138,7 @@
                         'tabindex': -1
                     }).append(Sao.common.ICONFACTORY.get_icon_img(item.icon, {
                         'aria-hidden': 'true',
-                    })).append(' ' + item.label).appendTo(menuitem);
+                    })).text(' ' + item.label).appendTo(menuitem);
                     this.menu_buttons[item.id] = menuitem;
                     link.click(function(evt) {
                         evt.preventDefault();
@@ -432,7 +432,7 @@
             'aria-hidden': true
         }).append('&times;')).append(jQuery('<span/>', {
             'class': 'sr-only'
-        }).append(Sao.i18n.gettext('Close'))).click(function(evt) {
+        }).text(Sao.i18n.gettext('Close'))).click(function(evt) {
             evt.preventDefault();
             tab.close();
         }))
@@ -586,7 +586,7 @@
                                     'role': 'menuitem',
                                     'href': '#',
                                     'tabindex': -1
-                                }).append(
+                                }).text(
                                     button.attributes.string || ''))
                             .click(function(evt) {
                                 evt.preventDefault();
@@ -604,7 +604,7 @@
                             'role': 'menuitem',
                             'href': '#',
                             'tabindex': -1
-                        }).append(action.name))
+                        }).text(action.name))
                         .click(function(evt) {
                             evt.preventDefault();
                             var prm = jQuery.when();
@@ -982,7 +982,7 @@
                             'role': 'menuitem',
                             'href': '#',
                             'tabindex': -1,
-                        }).append(name).appendTo(jQuery('<li/>', {
+                        }).text(name).appendTo(jQuery('<li/>', {
                             'role': 'presentation',
                         }).appendTo(menu));
                         if (typeof callback == 'string') {
@@ -1017,14 +1017,14 @@
                         'role': 'menuitem',
                         'href': '#',
                         'tabindex': -1,
-                    }).append(Sao.i18n.gettext('Add...'))));
+                    }).text(Sao.i18n.gettext('Add...'))));
                     menu.append(jQuery('<li/>', {
                         'role': 'presentation',
                     }).append(jQuery('<a/>', {
                         'role': 'menuitem',
                         'href': '#',
                         'tabindex': -1,
-                    }).append(Sao.i18n.gettext('Manage...'))
+                    }).text(Sao.i18n.gettext('Manage...'))
                         .click(function(evt) {
                             evt.preventDefault();
                             window_();
diff -r a64431c8055f -r a349f81e5b3e src/view/calendar.js
--- a/src/view/calendar.js      Sun May 10 11:34:47 2020 +0200
+++ b/src/view/calendar.js      Tue May 26 09:57:34 2020 +0200
@@ -238,7 +238,7 @@
                    this.screen.view_name == 'calendar') {
                 element.find('.fc-time').remove();
             }
-            element.append(event.description);
+            element.text(event.description);
             element.css('white-space', 'pre');
             var model_access = Sao.common.MODELACCESS.get(
                this.screen.model_name);
diff -r a64431c8055f -r a349f81e5b3e src/view/form.js
--- a/src/view/form.js  Sun May 10 11:34:47 2020 +0200
+++ b/src/view/form.js  Tue May 26 09:57:34 2020 +0200
@@ -796,7 +796,7 @@
                     'href': '#' + tab_id
                 })
                 .append(img)
-                .append(text))
+                .text(text))
                 .appendTo(this.nav);
             pane.html(tab).appendTo(this.panes);
             if (!this.selected) {
@@ -891,7 +891,7 @@
                 'class': 'caret',
             })));
             if (attributes.string) {
-                link.append(attributes.string);
+                link.text(attributes.string);
             }
         },
         add: function(widget) {
@@ -1129,13 +1129,13 @@
             jQuery('<button/>', {
                 'class': 'btn btn-link',
                 'type': 'button'
-            }).append(Sao.i18n.gettext('Cancel')).click(function() {
+            }).text(Sao.i18n.gettext('Cancel')).click(function() {
                 this.close(dialog);
             }.bind(this)).appendTo(dialog.footer);
             jQuery('<button/>', {
                 'class': 'btn btn-primary',
                 'type': 'button'
-            }).append(Sao.i18n.gettext('OK')).click(this.write
+            }).text(Sao.i18n.gettext('OK')).click(this.write
                     .bind(this, widget, dialog))
                     .appendTo(dialog.footer);
             dialog.content.submit(function(evt) {
@@ -1989,7 +1989,7 @@
                 return function(option) {
                     dropdown.append(jQuery('<li/>').append(jQuery('<a/>', {
                         'href': '#'
-                    }).append(option).click(function(evt) {
+                    }).text(option).click(function(evt) {
                         evt.preventDefault();
                         document.execCommand(properties.command, false, 
option);
                     })));
diff -r a64431c8055f -r a349f81e5b3e src/view/tree.js
--- a/src/view/tree.js  Sun May 10 11:34:47 2020 +0200
+++ b/src/view/tree.js  Tue May 26 09:57:34 2020 +0200
@@ -500,7 +500,7 @@
                 var more_button = jQuery('<button/>', {
                     'class': 'btn btn-default',
                     'type': 'button'
-                }).append(Sao.i18n.gettext('More')
+                }).text(Sao.i18n.gettext('More')
                     ).click(function() {
                     this.display_size += Sao.config.display_size;
                     this.display();
diff -r a64431c8055f -r a349f81e5b3e src/window.js
--- a/src/window.js     Sun May 10 11:34:47 2020 +0200
+++ b/src/window.js     Tue May 26 09:57:34 2020 +0200
@@ -87,7 +87,7 @@
                 dialog.footer.append(jQuery('<button/>', {
                     'class': 'btn btn-link',
                     'type': 'button'
-                }).append(button_text).click(function() {
+                }).text(button_text).click(function() {
                     this.response('RESPONSE_CANCEL');
                 }.bind(this)));
             }
@@ -96,7 +96,7 @@
                 dialog.footer.append(jQuery('<button/>', {
                     'class': 'btn btn-default',
                     'type': 'button'
-                }).append(Sao.i18n.gettext('New')).click(function() {
+                }).text(Sao.i18n.gettext('New')).click(function() {
                     this.response('RESPONSE_ACCEPT');
                 }.bind(this)));
             }
@@ -105,12 +105,12 @@
                 dialog.footer.append(jQuery('<button/>', {
                     'class': 'btn btn-primary',
                     'type': 'submit'
-                }).append(Sao.i18n.gettext('Save')));
+                }).text(Sao.i18n.gettext('Save')));
             } else {
                 dialog.footer.append(jQuery('<button/>', {
                     'class': 'btn btn-primary',
                     'type': 'submit'
-                }).append(Sao.i18n.gettext('OK')));
+                }).text(Sao.i18n.gettext('OK')));
             }
             dialog.content.submit(function(e) {
                 this.response('RESPONSE_OK');
@@ -573,27 +573,27 @@
             jQuery('<button/>', {
                 'class': 'btn btn-link',
                 'type': 'button'
-            }).append(Sao.i18n.gettext('Cancel')).click(function() {
+            }).text(Sao.i18n.gettext('Cancel')).click(function() {
                 this.response('RESPONSE_CANCEL');
             }.bind(this)).appendTo(dialog.footer);
             jQuery('<button/>', {
                 'class': 'btn btn-default',
                 'type': 'button'
-            }).append(Sao.i18n.gettext('Find')).click(function() {
+            }).text(Sao.i18n.gettext('Find')).click(function() {
                 this.response('RESPONSE_APPLY');
             }.bind(this)).appendTo(dialog.footer);
             if (kwargs.new_ && Sao.common.MODELACCESS.get(model).create) {
                 jQuery('<button/>', {
                     'class': 'btn btn-default',
                     'type': 'button'
-                }).append(Sao.i18n.gettext('New')).click(function() {
+                }).text(Sao.i18n.gettext('New')).click(function() {
                     this.response('RESPONSE_ACCEPT');
                 }.bind(this)).appendTo(dialog.footer);
             }
             jQuery('<button/>', {
                 'class': 'btn btn-primary',
                 'type': 'submit'
-            }).append(Sao.i18n.gettext('OK')).appendTo(dialog.footer);
+            }).text(Sao.i18n.gettext('OK')).appendTo(dialog.footer);
             dialog.content.submit(function(e) {
                 this.response('RESPONSE_OK');
                 e.preventDefault();
@@ -694,13 +694,13 @@
             jQuery('<button/>', {
                 'class': 'btn btn-link',
                 'type': 'button'
-            }).append(Sao.i18n.gettext('Cancel')).click(function() {
+            }).text(Sao.i18n.gettext('Cancel')).click(function() {
                 this.response('RESPONSE_CANCEL');
             }.bind(this)).appendTo(dialog.footer);
             jQuery('<button/>', {
                 'class': 'btn btn-primary',
                 'type': 'submit'
-            }).append(Sao.i18n.gettext('OK')).appendTo(dialog.footer);
+            }).text(Sao.i18n.gettext('OK')).appendTo(dialog.footer);
             dialog.content.submit(function(e) {
                 this.response('RESPONSE_OK');
                 e.preventDefault();
@@ -777,13 +777,13 @@
             jQuery('<button/>', {
                 'class': 'btn btn-link',
                 'type': 'button'
-            }).append(Sao.i18n.gettext('Cancel')).click(function() {
+            }).text(Sao.i18n.gettext('Cancel')).click(function() {
                 this.response('RESPONSE_CANCEL');
             }.bind(this)).appendTo(dialog.footer);
             jQuery('<button/>', {
                 'class': 'btn btn-primary',
                 'type': 'submit'
-            }).append(Sao.i18n.gettext('OK')).appendTo(dialog.footer);
+            }).text(Sao.i18n.gettext('OK')).appendTo(dialog.footer);
             dialog.content.submit(function(e) {
                 this.response('RESPONSE_OK');
                 e.preventDefault();
@@ -890,14 +890,14 @@
             jQuery('<button/>', {
                 'class': 'btn btn-link',
                 'type': 'button'
-            }).append(Sao.i18n.gettext('Cancel')).click(function(){
+            }).text(Sao.i18n.gettext('Cancel')).click(function(){
                 this.response('RESPONSE_CANCEL');
             }.bind(this)).appendTo(this.dialog.footer);
 
             jQuery('<button/>', {
                 'class': 'btn btn-primary',
                 'type': 'submit'
-            }).append(Sao.i18n.gettext('OK')).click(function(e){
+            }).text(Sao.i18n.gettext('OK')).click(function(e){
                 this.response('RESPONSE_OK');
                 e.preventDefault();
             }.bind(this)).appendTo(this.dialog.footer);
@@ -937,7 +937,7 @@
                 this.fields_all.find('.bg-primary').each(function(i, el_field) 
{
                     this.sig_sel_add(el_field);
                 }.bind(this));
-            }.bind(this)).append(' '+Sao.i18n.gettext('Add'))
+            }.bind(this)).text(' ' + Sao.i18n.gettext('Add'))
             .appendTo(this.column_buttons);
 
             jQuery('<button/>', {
@@ -947,7 +947,7 @@
             ).click(function(){
                 // sig_unsel
                 this.fields_selected.children('li.bg-primary').remove();
-            }.bind(this)).append(' '+Sao.i18n.gettext('Remove'))
+            }.bind(this)).text(' ' + Sao.i18n.gettext('Remove'))
             .appendTo(this.column_buttons);
 
             jQuery('<button/>', {
@@ -956,7 +956,7 @@
             }).append(Sao.common.ICONFACTORY.get_icon_img('tryton-clear')
             ).click(function(){
                 this.fields_selected.empty();
-            }.bind(this)).append(' '+Sao.i18n.gettext('Clear'))
+            }.bind(this)).text(' ' + Sao.i18n.gettext('Clear'))
             .appendTo(this.column_buttons);
 
             jQuery('<hr>').appendTo(this.column_buttons);
@@ -1119,7 +1119,7 @@
             }).append(Sao.common.ICONFACTORY.get_icon_img('tryton-search')
             ).click(function(){
                 this.autodetect();
-            }.bind(this)).append(' '+Sao.i18n.gettext('Auto-Detect'))
+            }.bind(this)).text(' ' + Sao.i18n.gettext('Auto-Detect'))
             .appendTo(this.column_buttons);
 
             var chooser_label = jQuery('<label/>', {
@@ -1434,7 +1434,7 @@
             }).append(Sao.common.ICONFACTORY.get_icon_img('tryton-save')
             ).click(function(){
                 this.addreplace_predef();
-            }.bind(this)).append(' '+Sao.i18n.gettext('Save Export'))
+            }.bind(this)).text(' ' + Sao.i18n.gettext('Save Export'))
             .appendTo(this.column_buttons);
 
             jQuery('<button/>', {
@@ -1443,7 +1443,7 @@
             }).append(Sao.common.ICONFACTORY.get_icon_img('tryton-delete')
             ).click(function(){
                 this.remove_predef();
-            }.bind(this)).append(' '+Sao.i18n.gettext('Delete Export'))
+            }.bind(this)).text(' ' + Sao.i18n.gettext('Delete Export'))
             .appendTo(this.column_buttons);
 
             var predefined_exports_column = jQuery('<div/>', {

Reply via email to