Sha256: 4e41f33d10a0614a38b11660b5b2b9445f42b559c39de2278a18da47ce4f8bb1

Contents?: true

Size: 1.8 KB

Versions: 34

Compression:

Stored size: 1.8 KB

Contents

pageflow.FileUploader = pageflow.Object.extend({
  initialize: function(options) {
    this.fileTypes = options.fileTypes;
    this.entry = options.entry;

    this.deferreds = [];
  },

  add: function(upload, options) {
    options = options || {};
    var editor = options.editor || pageflow.editor;
    var fileType = this.fileTypes.findByUpload(upload);
    var file = new fileType.model({
      state: 'uploadable',
      file_name: upload.name
    }, {
      fileType: fileType
    });

    var setTargetFile = editor.nextUploadTargetFile;

    if (setTargetFile){
      if (fileType.topLevelType ||
          !setTargetFile.fileType().nestedFileTypes.contains(fileType)) {
        throw(new pageflow.InvalidNestedTypeError(upload, {editor: editor,
                                                           fileType: fileType}));
      }
      file.set({parent_file_id: setTargetFile.get('id'),
                parent_file_model_type: setTargetFile.fileType().typeName});
    }
    else if (!fileType.topLevelType) {
      throw(new pageflow.NestedTypeError(upload, {fileType: fileType,
                                                  fileTypes: this.fileTypes}));
    }

    this.entry.getFileCollection(fileType).add(file);

    var deferred = new $.Deferred();

    if (setTargetFile) {
      deferred.resolve();
    }
    else {
      this.deferreds.push(deferred);
      if (this.deferreds.length == 1) {
        this.trigger('new:batch');
      }
    }

    return deferred.promise().then(
      function() {
        file.set('state', 'uploading');
        return file;
      },
      function() {
        file.destroy();
      });
  },

  submit: function() {
    _(this.deferreds).invoke('resolve');
    this.deferreds = [];
  },

  abort: function() {
    _(this.deferreds).invoke('reject');
    this.deferreds = [];
  }
});

Version data entries

34 entries across 34 versions & 1 rubygems

Version Path
pageflow-13.6.0 app/assets/javascripts/pageflow/editor/models/file_uploader.js
pageflow-13.5.0 app/assets/javascripts/pageflow/editor/models/file_uploader.js
pageflow-13.4.0 app/assets/javascripts/pageflow/editor/models/file_uploader.js
pageflow-13.3.0 app/assets/javascripts/pageflow/editor/models/file_uploader.js
pageflow-13.2.0 app/assets/javascripts/pageflow/editor/models/file_uploader.js
pageflow-12.6.0 app/assets/javascripts/pageflow/editor/models/file_uploader.js
pageflow-13.1.0 app/assets/javascripts/pageflow/editor/models/file_uploader.js
pageflow-12.5.0 app/assets/javascripts/pageflow/editor/models/file_uploader.js
pageflow-12.4.1 app/assets/javascripts/pageflow/editor/models/file_uploader.js
pageflow-13.0.0 app/assets/javascripts/pageflow/editor/models/file_uploader.js
pageflow-13.0.0.rc1 app/assets/javascripts/pageflow/editor/models/file_uploader.js
pageflow-12.4.0 app/assets/javascripts/pageflow/editor/models/file_uploader.js
pageflow-12.3.0 app/assets/javascripts/pageflow/editor/models/file_uploader.js
pageflow-13.0.0.beta7 app/assets/javascripts/pageflow/editor/models/file_uploader.js
pageflow-13.0.0.beta6 app/assets/javascripts/pageflow/editor/models/file_uploader.js
pageflow-13.0.0.beta5 app/assets/javascripts/pageflow/editor/models/file_uploader.js
pageflow-13.0.0.beta4 app/assets/javascripts/pageflow/editor/models/file_uploader.js
pageflow-13.0.0.beta3 app/assets/javascripts/pageflow/editor/models/file_uploader.js
pageflow-13.0.0.beta2 app/assets/javascripts/pageflow/editor/models/file_uploader.js
pageflow-13.0.0.beta1 app/assets/javascripts/pageflow/editor/models/file_uploader.js