Sha256: f53e45610a966f663da65def942561db946d775239c62f0e8784e1fba22e1898

Contents?: true

Size: 1.86 KB

Versions: 24

Compression:

Stored size: 1.86 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,
      content_type: upload.type,
      file_size: upload.size
    }, {
      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

24 entries across 24 versions & 1 rubygems

Version Path
pageflow-14.5.2 app/assets/javascripts/pageflow/editor/models/file_uploader.js
pageflow-15.0.2 app/assets/javascripts/pageflow/editor/models/file_uploader.js
pageflow-15.0.1 app/assets/javascripts/pageflow/editor/models/file_uploader.js
pageflow-15.0.0 app/assets/javascripts/pageflow/editor/models/file_uploader.js
pageflow-14.5.1 app/assets/javascripts/pageflow/editor/models/file_uploader.js
pageflow-14.5.0 app/assets/javascripts/pageflow/editor/models/file_uploader.js
pageflow-15.0.0.rc2 app/assets/javascripts/pageflow/editor/models/file_uploader.js
pageflow-15.0.0.rc1 app/assets/javascripts/pageflow/editor/models/file_uploader.js
pageflow-15.0.0.beta4 app/assets/javascripts/pageflow/editor/models/file_uploader.js
pageflow-15.0.0.beta3 app/assets/javascripts/pageflow/editor/models/file_uploader.js
pageflow-14.4.0 app/assets/javascripts/pageflow/editor/models/file_uploader.js
pageflow-15.0.0.beta2 app/assets/javascripts/pageflow/editor/models/file_uploader.js
pageflow-15.0.0.beta1 app/assets/javascripts/pageflow/editor/models/file_uploader.js
pageflow-14.3.0 app/assets/javascripts/pageflow/editor/models/file_uploader.js
pageflow-14.2.1 app/assets/javascripts/pageflow/editor/models/file_uploader.js
pageflow-14.2.0 app/assets/javascripts/pageflow/editor/models/file_uploader.js
pageflow-14.1.1 app/assets/javascripts/pageflow/editor/models/file_uploader.js
pageflow-14.1.0 app/assets/javascripts/pageflow/editor/models/file_uploader.js
pageflow-14.0.0 app/assets/javascripts/pageflow/editor/models/file_uploader.js
pageflow-14.0.0.rc2 app/assets/javascripts/pageflow/editor/models/file_uploader.js