diff options
| author | Sébastien Theys <seb@odoo.com> | 2019-05-23 14:47:38 +0000 |
|---|---|---|
| committer | Sébastien Theys <seb@odoo.com> | 2019-05-27 16:32:52 +0000 |
| commit | d25d3324e2ae105429a965c8f9cfb08c861e95d9 (patch) | |
| tree | c1120cdf8eb9497c6cb23a54510567beaaa30668 /addons/web_editor/static/src/js | |
| parent | e378aebc247942ee5152127b9d8328f66d3b7a1e (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.js | 49 | ||||
| -rw-r--r-- | addons/web_editor/static/src/js/wysiwyg/widgets/widgets.js | 1 |
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, |
