[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
This commit is contained in:
@@ -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);
|
||||
},
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
@@ -40,12 +39,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.
|
||||
*
|
||||
@@ -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,
|
||||
|
||||
@@ -19,6 +19,7 @@ return {
|
||||
ColorpickerDialog: ColorpickerDialog,
|
||||
|
||||
MediaWidget: media.MediaWidget,
|
||||
SearchableMediaWidget: media.SearchableMediaWidget,
|
||||
ImageWidget: media.ImageWidget,
|
||||
IconWidget: media.IconWidget,
|
||||
VideoWidget: media.VideoWidget,
|
||||
|
||||
Reference in New Issue
Block a user