Browse Source

Add custom handleAdd method for Assets

pull/281/head
Artur Arseniev 9 years ago
parent
commit
c28381eafb
  1. 10
      src/asset_manager/config/config.js
  2. 5
      src/asset_manager/index.js
  3. 24
      src/asset_manager/view/AssetsView.js
  4. 6
      src/domain_abstract/model/TypeableCollection.js

10
src/asset_manager/config/config.js

@ -40,12 +40,20 @@ module.exports = {
// Custom uploadFile function
// @example
// uploadFile: function(e) {
// uploadFile: (e) => {
// var files = e.dataTransfer ? e.dataTransfer.files : e.target.files;
// // ...send somewhere
// }
uploadFile: '',
// Handle the image url submit from the built-in 'Add image' form
// @example
// handleAdd: (textFromInput) => {
// // some check...
// editor.AssetManager.add(textFromInput);
// }
handleAdd: '',
// Enable an upload dropzone on the entire editor (not document) when dragging
// files over it
dropzone: 1,

5
src/asset_manager/index.js

@ -112,6 +112,7 @@ module.exports = () => {
/**
* Add new asset/s to the collection. URLs are supposed to be unique
* @param {string|Object|Array<string>|Array<Object>} asset URL strings or an objects representing the resource.
* @param {Object} [opts] Options
* @return {Model}
* @example
* // In case of strings, would be interpreted as images
@ -131,8 +132,8 @@ module.exports = () => {
* src: './path/to/img.png',
* }]);
*/
add(asset) {
return assets.add(asset);
add(asset, opts = {}) {
return assets.add(asset, opts);
},
/**

24
src/asset_manager/view/AssetsView.js

@ -4,6 +4,10 @@ var FileUploader = require('./FileUploader');
module.exports = Backbone.View.extend({
events: {
submit: 'handleSubmit',
},
template(view) {
const pfx = view.pfx;
const ppfx = view.ppfx;
@ -36,10 +40,11 @@ module.exports = Backbone.View.extend({
this.listenTo(this.collection, 'add', this.addToAsset );
this.listenTo(this.collection, 'deselectAll', this.deselectAll);
this.listenTo(this.collection, 'reset', this.render);
/*
this.events = {};
this.events.submit = 'addFromStr';
this.delegateEvents();
*/
},
/**
@ -48,19 +53,24 @@ module.exports = Backbone.View.extend({
* @return {this}
* @private
*/
addFromStr(e) {
handleSubmit(e) {
e.preventDefault();
const input = this.getInputUrl();
const input = this.getAddInput();
const url = input.value.trim();
const handleAdd = this.config.handleAdd;
if (!url) {
return;
}
this.options.globalCollection.add(url, {at: 0});
this.getAssetsEl().scrollTop = 0;
input.value = '';
return this;
this.getAssetsEl().scrollTop = 0;
if (handleAdd) {
handleAdd(url);
} else {
this.options.globalCollection.add(url, {at: 0});
}
},
/**
@ -78,7 +88,7 @@ module.exports = Backbone.View.extend({
* @return {HTMLElement}
* @private
*/
getInputUrl() {
getAddInput() {
if(!this.inputUrl || !this.inputUrl.value)
this.inputUrl = this.el.querySelector(`.${this.pfx}add-asset input`);
return this.inputUrl;

6
src/domain_abstract/model/TypeableCollection.js

@ -102,9 +102,11 @@ export default {
*/
addType(id, definition) {
const type = this.getType(id);
const ModelInst = type ? type.model : Model;
const ViewInst = type ? type.view : View;
let {model, view, isType} = definition;
model = model instanceof Model ? model : Model.extend(model);
view = view instanceof View ? view : View.extend(view);
model = model instanceof Model ? model : ModelInst.extend(model);
view = view instanceof View ? view : ViewInst.extend(view);
if (type) {
type.model = model;

Loading…
Cancel
Save