changeset 7542:42a150500c25

base: when using a custom select2 escapeMarkup function, make it clear that the exception only is for a static safe string
author Mads Kiilerich <mads@kiilerich.com>
date Wed, 27 Feb 2019 02:29:34 +0100
parents 429c2c8a4354
children c9159e6fda04
files kallithea/templates/base/base.html
diffstat 1 files changed, 10 insertions(+), 14 deletions(-) [+]
line wrap: on
line diff
--- a/kallithea/templates/base/base.html	Wed Feb 27 02:23:26 2019 +0100
+++ b/kallithea/templates/base/base.html	Wed Feb 27 02:29:34 2019 +0100
@@ -188,8 +188,9 @@
     $(document).ready(function() {
       var bcache = {};
 
+      var branch_switcher_placeholder = '<i class="icon-exchange"></i>' + ${h.jshtml(_('Switch To'))} + ' <span class="caret"></span>';
       $("#branch_switcher").select2({
-          placeholder: '<i class="icon-exchange"></i>' + ${h.jshtml(_('Switch To'))} + ' <span class="caret"></span>',
+          placeholder: branch_switcher_placeholder,
           dropdownAutoWidth: true,
           sortResults: prefixFirstSort,
           formatResult: function(obj) {
@@ -202,11 +203,8 @@
               return ${h.jshtml(_('No matches found'))};
           },
           escapeMarkup: function(m) {
-              // don't escape our custom placeholder
-              if (m.substr(0, 25) == '<i class="icon-exchange">') {
-                  return m;
-              }
-
+              if (m == branch_switcher_placeholder)
+                  return branch_switcher_placeholder;
               return Select2.util.escapeMarkup(m);
           },
           containerCssClass: "branch-switcher",
@@ -415,7 +413,7 @@
             /*format the look of items in the list*/
             var format = function(state){
                 if (!state.id){
-                  return state.text; // optgroup
+                  return state.text.html_escape(); // optgroup
                 }
                 var obj_dict = state.obj;
                 var tmpl = '';
@@ -439,12 +437,13 @@
                 if(obj_dict && state.type == 'group'){
                         tmpl += '<i class="icon-folder"></i>';
                 }
-                tmpl += state.text;
+                tmpl += state.text.html_escape();
                 return tmpl;
             }
 
+            var repo_switcher_placeholder = '<i class="icon-database"></i>' + ${h.jshtml(_('Repositories'))} + ' <span class="caret"></span>';
             $("#repo_switcher").select2({
-                placeholder: '<i class="icon-database"></i>' + ${h.jshtml(_('Repositories'))} + ' <span class="caret"></span>',
+                placeholder: repo_switcher_placeholder,
                 dropdownAutoWidth: true,
                 sortResults: prefixFirstSort,
                 formatResult: format,
@@ -455,11 +454,8 @@
                 containerCssClass: "repo-switcher",
                 dropdownCssClass: "repo-switcher-dropdown",
                 escapeMarkup: function(m){
-                    // don't escape our custom placeholder
-                    if(m.substr(0,29) == '<i class="icon-database"></i>'){
-                        return m;
-                    }
-
+                    if (m == repo_switcher_placeholder)
+                        return repo_switcher_placeholder;
                     return Select2.util.escapeMarkup(m);
                 },
                 query: function(query){