diff --git a/plugins/kolab_files/kolab_files.js b/plugins/kolab_files/kolab_files.js index e7bd0662..2263992b 100644 --- a/plugins/kolab_files/kolab_files.js +++ b/plugins/kolab_files/kolab_files.js @@ -93,6 +93,12 @@ window.rcmail && rcmail.addEventListener('init', function() { } }); + +/**********************************************************/ +/********* Shared functionality **********/ +/**********************************************************/ + +// Initializes API object function kolab_files_init() { if (window.file_api) @@ -111,6 +117,7 @@ function kolab_files_init() file_api.translations = rcmail.labels; }; +// returns API authorization token function kolab_files_token() { // consider the token from parent window more reliable (fresher) than in framed window @@ -118,11 +125,7 @@ function kolab_files_token() return (window.parent && parent.rcmail && parent.rcmail.env.files_token) || rcmail.env.files_token; }; - -/**********************************************************/ -/********* Plugin functionality in other tasks **********/ -/**********************************************************/ - +// folder selection dialog function kolab_directory_selector_dialog(id) { var dialog = $('#files-dialog'), buttons = {}, @@ -157,10 +160,10 @@ function kolab_directory_selector_dialog(id) } rcmail.http_post('plugin.kolab_files', request, lock); - $('#files-dialog').dialog('destroy').hide(); + dialog.dialog('destroy').hide(); }; buttons[rcmail.gettext('kolab_files.cancel')] = function () { - $('#files-dialog').dialog('destroy').hide(); + dialog.dialog('destroy').hide(); }; // show dialog window @@ -183,6 +186,7 @@ function kolab_directory_selector_dialog(id) } }; +// file selection dialog function kolab_files_selector_dialog() { var dialog = $('#files-compose-dialog'), buttons = {}; @@ -193,7 +197,7 @@ function kolab_files_selector_dialog() list.push($(this).data('file')); }); - $('#files-compose-dialog').dialog('destroy').hide(); + dialog.dialog('destroy').hide(); if (list.length) { // display upload indicator and cancel button @@ -212,7 +216,7 @@ function kolab_files_selector_dialog() } }; buttons[rcmail.gettext('kolab_files.cancel')] = function () { - $('#files-compose-dialog').dialog('destroy').hide(); + dialog.dialog('destroy').hide(); }; // show dialog window @@ -249,6 +253,94 @@ function kolab_files_attach_menu_open(p) }); }; +// folder creation dialog +function kolab_files_folder_create_dialog() +{ + var dialog = $('#files-folder-create-dialog'), + buttons = {}, + select = $('select[name="parent"]', dialog).html(''), + input = $('input[name="name"]', dialog).val(''); + + buttons[rcmail.gettext('kolab_files.create')] = function () { + var folder = '', name = input.val(), parent = select.val(); + + if (!name) + return; + + if (parent) + folder = parent + file_api.env.directory_separator; + + folder += name; + + file_api.folder_create(folder); + dialog.dialog('destroy').hide(); + }; + buttons[rcmail.gettext('kolab_files.cancel')] = function () { + dialog.dialog('destroy').hide(); + }; + + // show dialog window + dialog.dialog({ + modal: true, + resizable: !bw.ie6, + closeOnEscape: (!bw.ie6 && !bw.ie7), // disable for performance reasons + title: rcmail.gettext('kolab_files.foldercreate'), +// close: function() { rcmail.dialog_close(); }, + buttons: buttons, + minWidth: 400, + minHeight: 300, + width: 500, + height: 400 + }).show(); + + // build parent selector + select.append($('