discourse/app/assets/javascripts/discourse/controllers/upload-selector.js.es6
2016-11-15 14:10:34 -05:00

61 lines
1.7 KiB
JavaScript

import ModalFunctionality from 'discourse/mixins/modal-functionality';
import { default as computed, observes } from 'ember-addons/ember-computed-decorators';
import { allowsAttachments, authorizesAllExtensions, authorizedExtensions } from 'discourse/lib/utilities';
function uploadTranslate(key) {
if (allowsAttachments()) { key += "_with_attachments"; }
return `upload_selector.${key}`;
}
export default Ember.Controller.extend(ModalFunctionality, {
showMore: false,
imageUrl: null,
imageLink: null,
local: Ember.computed.equal('selection', 'local'),
remote: Ember.computed.equal('selection', 'remote'),
selection: 'local',
@computed()
uploadIcon: () => allowsAttachments() ? "upload" : "picture-o",
@computed()
title: () => uploadTranslate("title"),
@computed('selection')
tip(selection) {
const authorized_extensions = authorizesAllExtensions() ? "" : `(${authorizedExtensions()})`;
return I18n.t(uploadTranslate(`${selection}_tip`), { authorized_extensions });
},
@observes('selection')
_selectionChanged() {
if (this.get('local')) {
this.set('showMore', false);
}
},
actions: {
upload() {
if (this.get('local')) {
$('.wmd-controls').fileupload('add', { fileInput: $('#filename-input') });
} else {
const imageUrl = this.get('imageUrl') || '';
const imageLink = this.get('imageLink') || '';
const toolbarEvent = this.get('toolbarEvent');
if (this.get('showMore') && imageLink.length > 3) {
toolbarEvent.addText(`[![](${imageUrl})](${imageLink})`);
} else {
toolbarEvent.addText(imageUrl);
}
}
this.send('closeModal');
},
toggleShowMore() {
this.toggleProperty("showMore");
}
}
});