Merge pull request #5046 from totten/master-resolver
[civicrm-core.git] / js / jquery / jquery.crmeditable.js
index 459f27431721ab605e521259d910f873f9eef8ee..2b0908fd1d8936ac16ed38a3a7201dd8248b5024 100644 (file)
@@ -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);
             }
           }
             });
           }
           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) {
       }
 
       function restoreContainer() {
-        errorMsg && errorMsg.close && errorMsg.close();
+        if (errorMsg && errorMsg.close) errorMsg.close();
         $i.removeClass('crm-editable-saving crm-editable-editing');
       }
 
     $('.crm-editable', e.target).crmEditable();
   });
 
-})(jQuery);
+})(jQuery, CRM._);