summaryrefslogtreecommitdiff
path: root/addons/web_editor/static/src/js
diff options
context:
space:
mode:
authorSébastien Theys <seb@odoo.com>2019-05-23 14:47:38 +0000
committerSébastien Theys <seb@odoo.com>2019-05-27 16:32:52 +0000
commitd25d3324e2ae105429a965c8f9cfb08c861e95d9 (patch)
treec1120cdf8eb9497c6cb23a54510567beaaa30668 /addons/web_editor/static/src/js
parente378aebc247942ee5152127b9d8328f66d3b7a1e (diff)
[IMP] web_editor: split search out of MediaWidget
The search is not used on VideoWidget for example, so it makes more sense to split it out of the basic MediaWidget. PR: #33509
Diffstat (limited to 'addons/web_editor/static/src/js')
-rw-r--r--addons/web_editor/static/src/js/wysiwyg/widgets/media.js49
-rw-r--r--addons/web_editor/static/src/js/wysiwyg/widgets/widgets.js1
2 files changed, 36 insertions, 14 deletions
diff --git a/addons/web_editor/static/src/js/wysiwyg/widgets/media.js b/addons/web_editor/static/src/js/wysiwyg/widgets/media.js
index a30b4a223b4..acff4183aab 100644
--- a/addons/web_editor/static/src/js/wysiwyg/widgets/media.js
+++ b/addons/web_editor/static/src/js/wysiwyg/widgets/media.js
@@ -13,18 +13,17 @@ var _t = core._t;
var MediaWidget = Widget.extend({
xmlDependencies: ['/web_editor/static/src/xml/wysiwyg.xml'],
- events: {
- 'input input.o_we_search': '_onSearchInput',
- },
/**
* @constructor
+ * @param {Element} media: the target Element for which we select a media
+ * @param {Object} options: useful parameters such as res_id, res_model,
+ * context, user_id, ...
*/
init: function (parent, media, options) {
this._super.apply(this, arguments);
this.media = media;
this.$media = $(media);
- this._onSearchInput = _.debounce(this._onSearchInput, 500);
},
//--------------------------------------------------------------------------
@@ -41,12 +40,6 @@ var MediaWidget = Widget.extend({
this._clear();
},
/**
- * @abstract
- * @param {string} needle
- * @returns {Deferred}
- */
- search: function (needle) {},
- /**
* Saves the currently configured media on the target media.
*
* @abstract
@@ -62,6 +55,33 @@ var MediaWidget = Widget.extend({
* @abstract
*/
_clear: function () {},
+});
+
+var SearchableMediaWidget = MediaWidget.extend({
+ events: _.extend({}, MediaWidget.prototype.events || {}, {
+ 'input .o_we_search': '_onSearchInput',
+ }),
+
+ /**
+ * @constructor
+ */
+ init: function () {
+ this._super.apply(this, arguments);
+ this._onSearchInput = _.debounce(this._onSearchInput, 500);
+ },
+
+ //--------------------------------------------------------------------------
+ // Public
+ //--------------------------------------------------------------------------
+
+ /**
+ * Finds and displays existing attachments related to the target media.
+ *
+ * @abstract
+ * @param {string} needle: only return attachments matching this parameter
+ * @returns {Promise}
+ */
+ search: function (needle) {},
//--------------------------------------------------------------------------
// Handlers
@@ -79,9 +99,9 @@ var MediaWidget = Widget.extend({
/**
* Let users choose an image, including uploading a new image in odoo.
*/
-var ImageWidget = MediaWidget.extend({
+var ImageWidget = SearchableMediaWidget.extend({
template: 'wysiwyg.widgets.image',
- events: _.extend({}, MediaWidget.prototype.events || {}, {
+ events: _.extend({}, SearchableMediaWidget.prototype.events || {}, {
'click .o_upload_media_button': '_onUploadButtonClick',
'click .o_upload_media_button_no_optimization': '_onUploadButtonNoOptimizationClick',
'change input[type=file]': '_onImageSelection',
@@ -655,9 +675,9 @@ var ImageWidget = MediaWidget.extend({
* Let users choose a font awesome icon, support all font awesome loaded in the
* css files.
*/
-var IconWidget = MediaWidget.extend({
+var IconWidget = SearchableMediaWidget.extend({
template: 'wysiwyg.widgets.font-icons',
- events: _.extend({}, MediaWidget.prototype.events || {}, {
+ events: _.extend({}, SearchableMediaWidget.prototype.events || {}, {
'click .font-icons-icon': '_onIconClick',
'dblclick .font-icons-icon': '_onIconDblClick',
}),
@@ -1097,6 +1117,7 @@ var VideoWidget = MediaWidget.extend({
return {
MediaWidget: MediaWidget,
+ SearchableMediaWidget: SearchableMediaWidget,
ImageWidget: ImageWidget,
IconWidget: IconWidget,
VideoWidget: VideoWidget,
diff --git a/addons/web_editor/static/src/js/wysiwyg/widgets/widgets.js b/addons/web_editor/static/src/js/wysiwyg/widgets/widgets.js
index 18b88951c70..2f52fe6c5fa 100644
--- a/addons/web_editor/static/src/js/wysiwyg/widgets/widgets.js
+++ b/addons/web_editor/static/src/js/wysiwyg/widgets/widgets.js
@@ -19,6 +19,7 @@ return {
ColorpickerDialog: ColorpickerDialog,
MediaWidget: media.MediaWidget,
+ SearchableMediaWidget: media.SearchableMediaWidget,
ImageWidget: media.ImageWidget,
IconWidget: media.IconWidget,
VideoWidget: media.VideoWidget,