1 /** |
|
2 * FilePicker.js |
|
3 * |
|
4 * Copyright, Moxiecode Systems AB |
|
5 * Released under LGPL License. |
|
6 * |
|
7 * License: http://www.tinymce.com/license |
|
8 * Contributing: http://www.tinymce.com/contributing |
|
9 */ |
|
10 |
|
11 /*global tinymce:true */ |
|
12 |
|
13 /** |
|
14 * This class creates a file picker control. |
|
15 * |
|
16 * @class tinymce.ui.FilePicker |
|
17 * @extends tinymce.ui.ComboBox |
|
18 */ |
|
19 define("tinymce/ui/FilePicker", [ |
|
20 "tinymce/ui/ComboBox", |
|
21 "tinymce/util/Tools" |
|
22 ], function(ComboBox, Tools) { |
|
23 "use strict"; |
|
24 |
|
25 return ComboBox.extend({ |
|
26 /** |
|
27 * Constructs a new control instance with the specified settings. |
|
28 * |
|
29 * @constructor |
|
30 * @param {Object} settings Name/value object with settings. |
|
31 */ |
|
32 init: function(settings) { |
|
33 var self = this, editor = tinymce.activeEditor, editorSettings = editor.settings; |
|
34 var actionCallback, fileBrowserCallback, fileBrowserCallbackTypes; |
|
35 |
|
36 settings.spellcheck = false; |
|
37 |
|
38 fileBrowserCallbackTypes = editorSettings.file_picker_types || editorSettings.file_browser_callback_types; |
|
39 if (fileBrowserCallbackTypes) { |
|
40 fileBrowserCallbackTypes = Tools.makeMap(fileBrowserCallbackTypes, /[, ]/); |
|
41 } |
|
42 |
|
43 if (!fileBrowserCallbackTypes || fileBrowserCallbackTypes[settings.filetype]) { |
|
44 fileBrowserCallback = editorSettings.file_picker_callback; |
|
45 if (fileBrowserCallback && (!fileBrowserCallbackTypes || fileBrowserCallbackTypes[settings.filetype])) { |
|
46 actionCallback = function() { |
|
47 var meta = self.fire('beforecall').meta; |
|
48 |
|
49 meta = Tools.extend({filetype: settings.filetype}, meta); |
|
50 |
|
51 // file_picker_callback(callback, currentValue, metaData) |
|
52 fileBrowserCallback.call( |
|
53 editor, |
|
54 function(value, meta) { |
|
55 self.value(value).fire('change', {meta: meta}); |
|
56 }, |
|
57 self.value(), |
|
58 meta |
|
59 ); |
|
60 }; |
|
61 } else { |
|
62 // Legacy callback: file_picker_callback(id, currentValue, filetype, window) |
|
63 fileBrowserCallback = editorSettings.file_browser_callback; |
|
64 if (fileBrowserCallback && (!fileBrowserCallbackTypes || fileBrowserCallbackTypes[settings.filetype])) { |
|
65 actionCallback = function() { |
|
66 fileBrowserCallback( |
|
67 self.getEl('inp').id, |
|
68 self.value(), |
|
69 settings.filetype, |
|
70 window |
|
71 ); |
|
72 }; |
|
73 } |
|
74 } |
|
75 } |
|
76 |
|
77 if (actionCallback) { |
|
78 settings.icon = 'browse'; |
|
79 settings.onaction = actionCallback; |
|
80 } |
|
81 |
|
82 self._super(settings); |
|
83 } |
|
84 }); |
|
85 }); |
|