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($('