source: trunk/admin/inc/ckeditor/filemanager/js/browser/toolbar.js@ 239

Last change on this file since 239 was 239, checked in by luc, 9 years ago

Admin: correzione visulaizzazione immissione dati spoglio per Chrome e Safari - Aggiornamento dell'editor da FCKeditor a CKeditor , accessibili anche a Chrome e Safari.

  • Property svn:executable set to *
File size: 12.4 KB
Line 
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
15browser.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 &copy;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
113browser.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
137browser.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
173browser.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
308browser.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};
Note: See TracBrowser for help on using the repository browser.