X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=js%2Fjquery%2Fjquery.crmeditable.js;h=2b0908fd1d8936ac16ed38a3a7201dd8248b5024;hb=357af5d17f9ce6542bc66142bce67190dbcf9dab;hp=459f27431721ab605e521259d910f873f9eef8ee;hpb=49414d6faa37375cef1ea0a156054ddd9cc6ae8d;p=civicrm-core.git diff --git a/js/jquery/jquery.crmeditable.js b/js/jquery/jquery.crmeditable.js index 459f274317..2b0908fd1d 100644 --- a/js/jquery/jquery.crmeditable.js +++ b/js/jquery/jquery.crmeditable.js @@ -1,5 +1,8 @@ // https://civicrm.org/licensing -(function($) { +(function($, _) { + "use strict"; + /* jshint validthis: true */ + // TODO: We'll need a way to clear this cache if options are edited. // Maybe it should be stored in the CRM object so other parts of the app can use it. // Note that if we do move it, we should also change the format of option lists to our standard sequential arrays @@ -68,7 +71,7 @@ if ($i.data('refresh')) { CRM.refreshParent($i); } else { - value = value === '' ? settings.placeholder : value; + value = value === '' ? settings.placeholder : _.escape(value); $i.html(value); } } @@ -210,9 +213,9 @@ }); } return formatOptions(optionsCache[hash]); - } - return value.replace(/<(?:.|\n)*?>/gm, ''); + // Unwrap contents then replace html special characters with plain text + return _.unescape(value.replace(/<(?:.|\n)*?>/gm, '')); } function formatOptions(options) { @@ -224,7 +227,7 @@ } function restoreContainer() { - errorMsg && errorMsg.close && errorMsg.close(); + if (errorMsg && errorMsg.close) errorMsg.close(); $i.removeClass('crm-editable-saving crm-editable-editing'); } @@ -235,4 +238,4 @@ $('.crm-editable', e.target).crmEditable(); }); -})(jQuery); +})(jQuery, CRM._);