OSDN Git Service

初回コミット(v2.6.17.1)
[magic3/magic3.git] / scripts / kcfinder-2.51 / js / browser / toolbar.js
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 &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
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 };