UNPKG

collective-fine-upload

Version:

Upload assets to Collective with Fine Uploader

189 lines (152 loc) 7.37 kB
'use strict'; var $ = function $(selector) { // thx @rnicholus! var selectorType = 'querySelectorAll'; if (selector.indexOf('#') === 0) { selectorType = 'getElementById'; selector = selector.substr(1, selector.length); } return document[selectorType](selector); }; var dom_ready = require('detect-dom-ready'), util = require('util'), cookie = require('cookie-cutter'), log_stream = require('log-stream'), bole = require('bole'), pretty = require('bistre')(), log = bole('collective-fine-upload'), collective = require('media-collective'); bole.output({ level: 'debug', stream: pretty }); pretty.pipe(log_stream({ name: 'collective-fine-upload' })); dom_ready(function domready() { var access_token = cookie.get('access_token'); var collective_options = { protocol: process.env.COLLECTIVE_PROTOCOL||'https', port: process.env.COLLECTIVE_PORT||8443, host: processe.env.COLLECTIVE_HOST||'localhost', auth: { type: 'bearer', bearer: access_token } }; var uploader = $("#fine-uploader"), uploadProfileUuids = $("#upload_profile_uuids"), fileInput = $("#file_input"), app = $('#app'); collective.json('GET', '/uploadprofile', null, collective_options).then(function(res){ if (res.body && res.body.uploadProfiles) { return res.body.uploadProfiles; } return []; }).then(function(uploadProfiles){ var uploadProfileOptions = uploadProfiles.map(function(uploadProfile){ var name, uuid, optionEl; optionEl = document.createElement('option'); name = uploadProfile.title; uuid = uploadProfile.uuid; optionEl.value = uuid; optionEl.innerHTML = name; return optionEl; }); uploadProfileOptions.forEach(function(uploadProfileOption){ uploadProfileUuids.appendChild(uploadProfileOption); }); }).then(function(){ var fineuploader = new qq.FineUploader({ element: uploader, template: 'qq-template-gallery', autoUpload: true, chunking: { enabled: true }, multiple: false, validation: { itemLimit: 1 }, request: { endpoint: util.format('%s://%s:%s/%s', collective_options.protocol, collective_options.host, collective_options.port, 'api/rest/asset'), customHeaders: { authorization: 'Bearer ' + access_token }, inputName: 'file', filenameParam: 'filename', params: { uploadProfileUUID: uploadProfileUuids[uploadProfileUuids.selectedIndex].value } }, callbacks: { onError: function(id, name, reason, req) { log.error("error uploading", id, name, reason); }, onAllComplete: function(succeeded, failed) { log.info('succeeded: ', succeeded); log.error('failed: ', failed); }, onComplete: function(id, name, res, req) { log.info('completed: ', id, name); setTimeout(function() { var uuid; if (res.uuid) { uuid = res.uuid || ''; } collective.json('GET', '/asset/uuid/:uuid', { uuid: uuid }, collective_options).then(function(res) { app.innerHTML = '<h1>Done</h1>'; var asset_metadata = res.body; var metadata_container = document.createElement('div'); if (asset_metadata.name) { var nameHeader = document.createElement('h1'); nameHeader.innerHTML = asset_metadata.name; metadata_container.appendChild(nameHeader); } if (asset_metadata.downloadUrl) { var downloadButton = document.createElement('a'); downloadButton.innerHTML = 'Download'; downloadButton.href = asset_metadata.downloadUrl; metadata_container.appendChild(downloadButton); } if (asset_metadata.previews) { var previewArea = document.createElement('div'), previewImage = document.createElement('img'), previewSelect = document.createElement('select'); previewSelect.addEventListener('change', function(e){ var previewKey = e.srcElement.selectedOptions[0].innerHTML; previewImage.src = asset_metadata.previews[previewKey].replace('https', 'http'); }); Object.keys(asset_metadata.previews).forEach(function(previewKey, previewUrl){ var optionEl = document.createElement('option'); optionEl.innerHTML = previewKey; optionEl.value = asset_metadata.previews[previewKey]; previewSelect.appendChild(optionEl); }); previewImage.src = asset_metadata.previews[Object.keys(asset_metadata.previews)[0]].replace('https', 'http'); previewArea.appendChild(previewSelect); previewArea.appendChild(previewImage); metadata_container.appendChild(previewArea); } var metadataTable = document.createElement('table'); Object.keys(asset_metadata).map(function(metadataKey){ var row = document.createElement('tr'), key = metadataKey, val = asset_metadata[metadataKey], tdKey = document.createElement('td'), tdVal = document.createElement('td'); tdKey.innerHTML = key; tdVal.innerHTML = val; row.appendChild(tdKey); row.appendChild(tdVal); metadataTable.appendChild(row); }); metadata_container.appendChild(metadataTable); app.appendChild(metadata_container); }, function() { }); }, 10000); } } }); }, function(err) { log.info('Rejected', err); }); });