From 83cbf1db333f8eb41934f92946256cb328052114 Mon Sep 17 00:00:00 2001 From: Aleksander Machniak Date: Fri, 13 Nov 2015 13:13:15 +0100 Subject: [PATCH] Add "Create and Edit" button into file create dialog --- plugins/kolab_files/kolab_files.js | 49 +++++++++++++------ .../kolab_files/lib/kolab_files_engine.php | 2 +- plugins/kolab_files/localization/en_US.inc | 1 + 3 files changed, 35 insertions(+), 17 deletions(-) diff --git a/plugins/kolab_files/kolab_files.js b/plugins/kolab_files/kolab_files.js index d6ad0774..24131c7b 100644 --- a/plugins/kolab_files/kolab_files.js +++ b/plugins/kolab_files/kolab_files.js @@ -546,22 +546,28 @@ function kolab_files_file_create_dialog() buttons = {}, type_select = $('select[name="type"]', dialog), select = $('select[name="parent"]', dialog).html(''), - input = $('input[name="name"]', dialog).val(''); + input = $('input[name="name"]', dialog).val(''), + create_func = function (dialog, editaction) { + var folder = select.val(), type = type_select.val(), name = input.val(); + if (!name || !folder) + return; + + if (!/\.[a-z0-9]{1,5}$/.test(name)) { + name += '.' + rcmail.env.file_extensions[type]; + } + + name = folder + file_api.env.directory_separator + name; + + file_api.file_create(name, type, editaction); + kolab_dialog_close(dialog); + }; + + buttons[rcmail.gettext('kolab_files.createandedit')] = function () { + create_func(this, true); + }; buttons[rcmail.gettext('kolab_files.create')] = function () { - var folder = select.val(), type = type_select.val(), name = input.val(); - - if (!name || !folder) - return; - - if (!/\.[a-z0-9]{1,5}$/.test(name)) { - name += '.' + rcmail.env.file_extensions[type]; - } - - name = folder + file_api.env.directory_separator + name; - - file_api.file_create(name, type); - kolab_dialog_close(this); + create_func(this); }; buttons[rcmail.gettext('kolab_files.cancel')] = function () { kolab_dialog_close(this); @@ -914,6 +920,10 @@ function kolab_files_frame_load(frame) } catch (e) {}; + // on edit page switch immediately to edit mode + if (rcmail.file_editor && rcmail.env.action == 'edit') + rcmail.files_edit(); + rcmail.enable_command('files-edit', rcmail.file_editor || (rcmail.env.file_data.viewer && rcmail.env.file_data.viewer.manticore)); rcmail.enable_command('files-print', (rcmail.file_editor && rcmail.file_editor.printable) @@ -2374,8 +2384,11 @@ function kolab_files_ui() }; // file(s) create request - this.file_create = function(file, type) + this.file_create = function(file, type, edit) { + this.file_create_edit_file = edit ? file : null; + this.file_create_edit_type = edit ? type : null; + this.req = this.set_busy(true, 'kolab_files.filecreating'); this.request('file_create', {file: file, 'content-type': type, content: ''}, 'file_create_response'); }; @@ -2389,7 +2402,11 @@ function kolab_files_ui() // @TODO: we could update metadata instead this.file_list(); - // @TODO: open the file for editing if editable + // open the file for editing if editable + if (this.file_create_edit_file) { + var viewer = this.file_type_supported(this.file_create_edit_type, rcmail.env.files_caps); + this.file_open(this.file_create_edit_file, viewer, 'edit'); + } }; // file(s) rename request diff --git a/plugins/kolab_files/lib/kolab_files_engine.php b/plugins/kolab_files/lib/kolab_files_engine.php index add82156..ba325715 100644 --- a/plugins/kolab_files/lib/kolab_files_engine.php +++ b/plugins/kolab_files/lib/kolab_files_engine.php @@ -398,7 +398,7 @@ class kolab_files_engine $out = $this->rc->output->form_tag($attrib, $out); } - $this->plugin->add_label('create', 'cancel', 'filecreating', 'createfile'); + $this->plugin->add_label('create', 'cancel', 'filecreating', 'createfile', 'createandedit'); $this->rc->output->add_gui_object('file-create-form', $attrib['id']); $this->rc->output->set_env('file_extensions', $types); diff --git a/plugins/kolab_files/localization/en_US.inc b/plugins/kolab_files/localization/en_US.inc index 849c0620..2d3b1acf 100644 --- a/plugins/kolab_files/localization/en_US.inc +++ b/plugins/kolab_files/localization/en_US.inc @@ -45,6 +45,7 @@ $labels['savefile'] = 'Save file'; $labels['printfile'] = 'Print file'; $labels['fileedit'] = 'File properties'; $labels['createfile'] = 'Create a file'; +$labels['createandedit'] = 'Create and Edit'; $labels['documenttitle'] = 'Title:'; $labels['collection_audio'] = 'Audio';