1 | <?php
|
---|
2 |
|
---|
3 | /** This file is part of KCFinder project
|
---|
4 | *
|
---|
5 | * @desc Toolbar functionality
|
---|
6 | * @package KCFinder
|
---|
7 | * @version 2.51
|
---|
8 | * @author Pavel Tzonkov <pavelc@users.sourceforge.net>
|
---|
9 | * @copyright 2010, 2011 KCFinder Project
|
---|
10 | * @license http://www.opensource.org/licenses/gpl-2.0.php GPLv2
|
---|
11 | * @license http://www.opensource.org/licenses/lgpl-2.1.php LGPLv2
|
---|
12 | * @link http://kcfinder.sunhater.com
|
---|
13 | */?>
|
---|
14 |
|
---|
15 | browser.initToolbar = function() {
|
---|
16 | $('#toolbar a').click(function() {
|
---|
17 | browser.hideDialog();
|
---|
18 | });
|
---|
19 |
|
---|
20 | if (!_.kuki.isSet('displaySettings'))
|
---|
21 | _.kuki.set('displaySettings', 'off');
|
---|
22 |
|
---|
23 | if (_.kuki.get('displaySettings') == 'on') {
|
---|
24 | $('#toolbar a[href="kcact:settings"]').addClass('selected');
|
---|
25 | $('#settings').css('display', 'block');
|
---|
26 | browser.resize();
|
---|
27 | }
|
---|
28 |
|
---|
29 | $('#toolbar a[href="kcact:settings"]').click(function () {
|
---|
30 | if ($('#settings').css('display') == 'none') {
|
---|
31 | $(this).addClass('selected');
|
---|
32 | _.kuki.set('displaySettings', 'on');
|
---|
33 | $('#settings').css('display', 'block');
|
---|
34 | browser.fixFilesHeight();
|
---|
35 | } else {
|
---|
36 | $(this).removeClass('selected');
|
---|
37 | _.kuki.set('displaySettings', 'off');
|
---|
38 | $('#settings').css('display', 'none');
|
---|
39 | browser.fixFilesHeight();
|
---|
40 | }
|
---|
41 | return false;
|
---|
42 | });
|
---|
43 |
|
---|
44 | $('#toolbar a[href="kcact:refresh"]').click(function() {
|
---|
45 | browser.refresh();
|
---|
46 | return false;
|
---|
47 | });
|
---|
48 |
|
---|
49 | if (window.opener || this.opener.TinyMCE || $('iframe', window.parent.document).get(0))
|
---|
50 | $('#toolbar a[href="kcact:maximize"]').click(function() {
|
---|
51 | browser.maximize(this);
|
---|
52 | return false;
|
---|
53 | });
|
---|
54 | else
|
---|
55 | $('#toolbar a[href="kcact:maximize"]').css('display', 'none');
|
---|
56 |
|
---|
57 | $('#toolbar a[href="kcact:about"]').click(function() {
|
---|
58 | var html = '<div class="box about">' +
|
---|
59 | '<div class="head"><a href="http://kcfinder.sunhater.com" target="_blank">KCFinder</a> ' + browser.version + '</div>';
|
---|
60 | if (browser.support.check4Update)
|
---|
61 | html += '<div id="checkver"><span class="loading"><span>' + browser.label("Checking for new version...") + '</span></span></div>';
|
---|
62 | html +=
|
---|
63 | '<div>' + browser.label("Licenses:") + ' GPLv2 & LGPLv2</div>' +
|
---|
64 | '<div>Copyright ©2010, 2011 Pavel Tzonkov</div>' +
|
---|
65 | '<button>' + browser.label("OK") + '</button>' +
|
---|
66 | '</div>';
|
---|
67 | $('#dialog').html(html);
|
---|
68 | $('#dialog').data('title', browser.label("About"));
|
---|
69 | browser.showDialog();
|
---|
70 | var close = function() {
|
---|
71 | browser.hideDialog();
|
---|
72 | browser.unshadow();
|
---|
73 | }
|
---|
74 | $('#dialog button').click(close);
|
---|
75 | var span = $('#checkver > span');
|
---|
76 | setTimeout(function() {
|
---|
77 | $.ajax({
|
---|
78 | dataType: 'json',
|
---|
79 | url: browser.baseGetData('check4Update'),
|
---|
80 | async: true,
|
---|
81 | success: function(data) {
|
---|
82 | if (!$('#dialog').html().length)
|
---|
83 | return;
|
---|
84 | span.removeClass('loading');
|
---|
85 | if (!data.version) {
|
---|
86 | span.html(browser.label("Unable to connect!"));
|
---|
87 | browser.showDialog();
|
---|
88 | return;
|
---|
89 | }
|
---|
90 | if (browser.version < data.version)
|
---|
91 | span.html('<a href="http://kcfinder.sunhater.com/download" target="_blank">' + browser.label("Download version {version} now!", {version: data.version}) + '</a>');
|
---|
92 | else
|
---|
93 | span.html(browser.label("KCFinder is up to date!"));
|
---|
94 | browser.showDialog();
|
---|
95 | },
|
---|
96 | error: function() {
|
---|
97 | if (!$('#dialog').html().length)
|
---|
98 | return;
|
---|
99 | span.removeClass('loading');
|
---|
100 | span.html(browser.label("Unable to connect!"));
|
---|
101 | browser.showDialog();
|
---|
102 | }
|
---|
103 | });
|
---|
104 | }, 1000);
|
---|
105 | $('#dialog').unbind();
|
---|
106 |
|
---|
107 | return false;
|
---|
108 | });
|
---|
109 |
|
---|
110 | this.initUploadButton();
|
---|
111 | };
|
---|
112 |
|
---|
113 | browser.initUploadButton = function() {
|
---|
114 | var btn = $('#toolbar a[href="kcact:upload"]');
|
---|
115 | if (!this.access.files.upload) {
|
---|
116 | btn.css('display', 'none');
|
---|
117 | return;
|
---|
118 | }
|
---|
119 | var top = btn.get(0).offsetTop;
|
---|
120 | var width = btn.outerWidth();
|
---|
121 | var height = btn.outerHeight();
|
---|
122 | $('#toolbar').prepend('<div id="upload" style="top:' + top + 'px;width:' + width + 'px;height:' + height + 'px">' +
|
---|
123 | '<form enctype="multipart/form-data" method="post" target="uploadResponse" action="' + browser.baseGetData('upload') + '">' +
|
---|
124 | '<input type="file" name="upload[]" onchange="browser.uploadFile(this.form)" style="height:' + height + 'px" multiple="multiple" />' +
|
---|
125 | '<input type="hidden" name="dir" value="" />' +
|
---|
126 | '</form>' +
|
---|
127 | '</div>');
|
---|
128 | $('#upload input').css('margin-left', "-" + ($('#upload input').outerWidth() - width) + 'px');
|
---|
129 | $('#upload').mouseover(function() {
|
---|
130 | $('#toolbar a[href="kcact:upload"]').addClass('hover');
|
---|
131 | });
|
---|
132 | $('#upload').mouseout(function() {
|
---|
133 | $('#toolbar a[href="kcact:upload"]').removeClass('hover');
|
---|
134 | });
|
---|
135 | };
|
---|
136 |
|
---|
137 | browser.uploadFile = function(form) {
|
---|
138 | if (!this.dirWritable) {
|
---|
139 | browser.alert(this.label("Cannot write to upload folder."));
|
---|
140 | $('#upload').detach();
|
---|
141 | browser.initUploadButton();
|
---|
142 | return;
|
---|
143 | }
|
---|
144 | form.elements[1].value = browser.dir;
|
---|
145 | $('<iframe id="uploadResponse" name="uploadResponse" src="javascript:;"></iframe>').prependTo(document.body);
|
---|
146 | $('#loading').html(this.label("Uploading file..."));
|
---|
147 | $('#loading').css('display', 'inline');
|
---|
148 | form.submit();
|
---|
149 | $('#uploadResponse').load(function() {
|
---|
150 | var response = $(this).contents().find('body').html();
|
---|
151 | $('#loading').css('display', 'none');
|
---|
152 | response = response.split("\n");
|
---|
153 | var selected = [], errors = [];
|
---|
154 | $.each(response, function(i, row) {
|
---|
155 | if (row.substr(0, 1) == '/')
|
---|
156 | selected[selected.length] = row.substr(1, row.length - 1)
|
---|
157 | else
|
---|
158 | errors[errors.length] = row;
|
---|
159 | });
|
---|
160 | if (errors.length)
|
---|
161 | browser.alert(errors.join("\n"));
|
---|
162 | if (!selected.length)
|
---|
163 | selected = null
|
---|
164 | browser.refresh(selected);
|
---|
165 | $('#upload').detach();
|
---|
166 | setTimeout(function() {
|
---|
167 | $('#uploadResponse').detach();
|
---|
168 | }, 1);
|
---|
169 | browser.initUploadButton();
|
---|
170 | });
|
---|
171 | };
|
---|
172 |
|
---|
173 | browser.maximize = function(button) {
|
---|
174 | if (window.opener) {
|
---|
175 | window.moveTo(0, 0);
|
---|
176 | width = screen.availWidth;
|
---|
177 | height = screen.availHeight;
|
---|
178 | if ($.browser.opera)
|
---|
179 | height -= 50;
|
---|
180 | window.resizeTo(width, height);
|
---|
181 |
|
---|
182 | } else if (browser.opener.TinyMCE) {
|
---|
183 | var win, ifr, id;
|
---|
184 |
|
---|
185 | $('iframe', window.parent.document).each(function() {
|
---|
186 | if (/^mce_\d+_ifr$/.test($(this).attr('id'))) {
|
---|
187 | id = parseInt($(this).attr('id').replace(/^mce_(\d+)_ifr$/, "$1"));
|
---|
188 | win = $('#mce_' + id, window.parent.document);
|
---|
189 | ifr = $('#mce_' + id + '_ifr', window.parent.document);
|
---|
190 | }
|
---|
191 | });
|
---|
192 |
|
---|
193 | if ($(button).hasClass('selected')) {
|
---|
194 | $(button).removeClass('selected');
|
---|
195 | win.css({
|
---|
196 | left: browser.maximizeMCE.left + 'px',
|
---|
197 | top: browser.maximizeMCE.top + 'px',
|
---|
198 | width: browser.maximizeMCE.width + 'px',
|
---|
199 | height: browser.maximizeMCE.height + 'px'
|
---|
200 | });
|
---|
201 | ifr.css({
|
---|
202 | width: browser.maximizeMCE.width - browser.maximizeMCE.Hspace + 'px',
|
---|
203 | height: browser.maximizeMCE.height - browser.maximizeMCE.Vspace + 'px'
|
---|
204 | });
|
---|
205 |
|
---|
206 | } else {
|
---|
207 | $(button).addClass('selected')
|
---|
208 | browser.maximizeMCE = {
|
---|
209 | width: _.nopx(win.css('width')),
|
---|
210 | height: _.nopx(win.css('height')),
|
---|
211 | left: win.position().left,
|
---|
212 | top: win.position().top,
|
---|
213 | Hspace: _.nopx(win.css('width')) - _.nopx(ifr.css('width')),
|
---|
214 | Vspace: _.nopx(win.css('height')) - _.nopx(ifr.css('height'))
|
---|
215 | };
|
---|
216 | var width = $(window.parent).width();
|
---|
217 | var height = $(window.parent).height();
|
---|
218 | win.css({
|
---|
219 | left: $(window.parent).scrollLeft() + 'px',
|
---|
220 | top: $(window.parent).scrollTop() + 'px',
|
---|
221 | width: width + 'px',
|
---|
222 | height: height + 'px'
|
---|
223 | });
|
---|
224 | ifr.css({
|
---|
225 | width: width - browser.maximizeMCE.Hspace + 'px',
|
---|
226 | height: height - browser.maximizeMCE.Vspace + 'px'
|
---|
227 | });
|
---|
228 | }
|
---|
229 |
|
---|
230 | } else if ($('iframe', window.parent.document).get(0)) {
|
---|
231 | var ifrm = $('iframe[name="' + window.name + '"]', window.parent.document);
|
---|
232 | var parent = ifrm.parent();
|
---|
233 | var width, height;
|
---|
234 | if ($(button).hasClass('selected')) {
|
---|
235 | $(button).removeClass('selected');
|
---|
236 | if (browser.maximizeThread) {
|
---|
237 | clearInterval(browser.maximizeThread);
|
---|
238 | browser.maximizeThread = null;
|
---|
239 | }
|
---|
240 | if (browser.maximizeW) browser.maximizeW = null;
|
---|
241 | if (browser.maximizeH) browser.maximizeH = null;
|
---|
242 | $.each($('*', window.parent.document).get(), function(i, e) {
|
---|
243 | e.style.display = browser.maximizeDisplay[i];
|
---|
244 | });
|
---|
245 | ifrm.css({
|
---|
246 | display: browser.maximizeCSS.display,
|
---|
247 | position: browser.maximizeCSS.position,
|
---|
248 | left: browser.maximizeCSS.left,
|
---|
249 | top: browser.maximizeCSS.top,
|
---|
250 | width: browser.maximizeCSS.width,
|
---|
251 | height: browser.maximizeCSS.height
|
---|
252 | });
|
---|
253 | $(window.parent).scrollLeft(browser.maximizeLest);
|
---|
254 | $(window.parent).scrollTop(browser.maximizeTop);
|
---|
255 |
|
---|
256 | } else {
|
---|
257 | $(button).addClass('selected');
|
---|
258 | browser.maximizeCSS = {
|
---|
259 | display: ifrm.css('display'),
|
---|
260 | position: ifrm.css('position'),
|
---|
261 | left: ifrm.css('left'),
|
---|
262 | top: ifrm.css('top'),
|
---|
263 | width: ifrm.outerWidth() + 'px',
|
---|
264 | height: ifrm.outerHeight() + 'px'
|
---|
265 | };
|
---|
266 | browser.maximizeTop = $(window.parent).scrollTop();
|
---|
267 | browser.maximizeLeft = $(window.parent).scrollLeft();
|
---|
268 | browser.maximizeDisplay = [];
|
---|
269 | $.each($('*', window.parent.document).get(), function(i, e) {
|
---|
270 | browser.maximizeDisplay[i] = $(e).css('display');
|
---|
271 | $(e).css('display', 'none');
|
---|
272 | });
|
---|
273 |
|
---|
274 | ifrm.css('display', 'block');
|
---|
275 | ifrm.parents().css('display', 'block');
|
---|
276 | var resize = function() {
|
---|
277 | width = $(window.parent).width();
|
---|
278 | height = $(window.parent).height();
|
---|
279 | if (!browser.maximizeW || (browser.maximizeW != width) ||
|
---|
280 | !browser.maximizeH || (browser.maximizeH != height)
|
---|
281 | ) {
|
---|
282 | browser.maximizeW = width;
|
---|
283 | browser.maximizeH = height;
|
---|
284 | ifrm.css({
|
---|
285 | width: width + 'px',
|
---|
286 | height: height + 'px'
|
---|
287 | });
|
---|
288 | browser.resize();
|
---|
289 | }
|
---|
290 | }
|
---|
291 | ifrm.css('position', 'absolute');
|
---|
292 | if ((ifrm.offset().left == ifrm.position().left) &&
|
---|
293 | (ifrm.offset().top == ifrm.position().top)
|
---|
294 | )
|
---|
295 | ifrm.css({left: '0', top: '0'});
|
---|
296 | else
|
---|
297 | ifrm.css({
|
---|
298 | left: - ifrm.offset().left + 'px',
|
---|
299 | top: - ifrm.offset().top + 'px'
|
---|
300 | });
|
---|
301 |
|
---|
302 | resize();
|
---|
303 | browser.maximizeThread = setInterval(resize, 250);
|
---|
304 | }
|
---|
305 | }
|
---|
306 | };
|
---|
307 |
|
---|
308 | browser.refresh = function(selected) {
|
---|
309 | this.fadeFiles();
|
---|
310 | $.ajax({
|
---|
311 | type: 'POST',
|
---|
312 | dataType: 'json',
|
---|
313 | url: browser.baseGetData('chDir'),
|
---|
314 | data: {dir:browser.dir},
|
---|
315 | async: false,
|
---|
316 | success: function(data) {
|
---|
317 | if (browser.check4errors(data))
|
---|
318 | return;
|
---|
319 | browser.dirWritable = data.dirWritable;
|
---|
320 | browser.files = data.files ? data.files : [];
|
---|
321 | browser.orderFiles(null, selected);
|
---|
322 | browser.statusDir();
|
---|
323 | },
|
---|
324 | error: function() {
|
---|
325 | $('#files > div').css({opacity:'', filter:''});
|
---|
326 | $('#files').html(browser.label("Unknown error."));
|
---|
327 | }
|
---|
328 | });
|
---|
329 | };
|
---|