Add Terminate button on document editing page (T845)

This commit is contained in:
Aleksander Machniak 2015-11-18 13:03:37 +01:00
parent c323706a9b
commit 9d32f5cbae
4 changed files with 39 additions and 4 deletions

View file

@ -1006,7 +1006,8 @@ function kolab_files_selected()
function kolab_files_frame_load(frame) function kolab_files_frame_load(frame)
{ {
var win = frame.contentWindow; var win = frame.contentWindow,
info = rcmail.env.file_data;
try { try {
rcmail.file_editor = win.file_editor && win.file_editor.editable ? win.file_editor : null; rcmail.file_editor = win.file_editor && win.file_editor.editable ? win.file_editor : null;
@ -1018,10 +1019,9 @@ function kolab_files_frame_load(frame)
rcmail.files_edit(); rcmail.files_edit();
rcmail.enable_command('files-edit', rcmail.file_editor rcmail.enable_command('files-edit', rcmail.file_editor
|| (rcmail.env.file_data.viewer && rcmail.env.file_data.viewer.manticore)); || (info && info.viewer && info.viewer.manticore));
rcmail.enable_command('files-print', (rcmail.file_editor && rcmail.file_editor.printable) rcmail.enable_command('files-print', (rcmail.file_editor && rcmail.file_editor.printable)
|| (rcmail.env.file_data && /^image\//i.test(rcmail.env.file_data.type))); || (info && /^image\//i.test(info.type)));
// detect Print button and check if it can be accessed // detect Print button and check if it can be accessed
try { try {
if ($('#fileframe').contents().find('#print').length) if ($('#fileframe').contents().find('#print').length)
@ -1122,7 +1122,10 @@ function kolab_files_progress_str(param)
// Initialize document toolbar functionality // Initialize document toolbar functionality
function manticore_init() function manticore_init()
{ {
var info = rcmail.env.file_data;
rcmail.enable_command('document-save', 'document-export', true); rcmail.enable_command('document-save', 'document-export', true);
rcmail.enable_command('files-close', info && info.session && info.session.is_owner);
}; };
rcube_webmail.prototype.document_save = function() rcube_webmail.prototype.document_save = function()
@ -1280,6 +1283,13 @@ rcube_webmail.prototype.files_edit = function(session)
} }
}; };
// close editing session
rcube_webmail.prototype.files_close = function()
{
// @todo: check document "unsaved changes" state and display a warning
file_api.document_delete(this.env.file_data.session.id);
};
rcube_webmail.prototype.files_save = function() rcube_webmail.prototype.files_save = function()
{ {
if (!this.file_editor) if (!this.file_editor)
@ -2906,6 +2916,25 @@ function kolab_files_ui()
} }
}; };
// document session delete request
this.document_delete = function(id)
{
this.req = this.set_busy(true, 'kolab_files.sessionterminating');
this.request('document_delete', {id: id}, 'document_delete_response');
};
// document session delete response handler
this.document_delete_response = function(response)
{
if (!this.response(response))
return;
if (rcmail.task == 'files' && rcmail.env.action == 'edit')
window.close();
// @todo: force sessions info update
};
// handle auth errors on folder list // handle auth errors on folder list
this.folder_list_auth_errors = function(result) this.folder_list_auth_errors = function(result)
{ {

View file

@ -918,6 +918,8 @@ class kolab_files_engine
*/ */
protected function action_edit() protected function action_edit()
{ {
$this->plugin->add_label('sessionterminating');
$this->file_opener(intval($_GET['_viewer'])); $this->file_opener(intval($_GET['_viewer']));
} }

View file

@ -101,6 +101,9 @@ $labels['joinsession'] = 'Request an invitation from $user';
$labels['editfilero'] = 'This file is read-only. Do you want to create and edit a copy of the file?'; $labels['editfilero'] = 'This file is read-only. Do you want to create and edit a copy of the file?';
$labels['editfilerotitle'] = 'Read-only file'; $labels['editfilerotitle'] = 'Read-only file';
$labels['select'] = 'Select'; $labels['select'] = 'Select';
$labels['terminatesession'] = 'Terminate the session';
$labels['terminate'] = 'Terminate';
$labels['sessionterminating'] = 'Terminating the session...';
$labels['storepasswords'] = 'remember password'; $labels['storepasswords'] = 'remember password';
$labels['storepasswordsdesc'] = 'Stored passwords will be encrypted. Enable this if you do not want to be asked for the password on every login or you want this storage to be available via WebDAV.'; $labels['storepasswordsdesc'] = 'Stored passwords will be encrypted. Enable this if you do not want to be asked for the password on every login or you want this storage to be available via WebDAV.';

View file

@ -18,6 +18,7 @@
<!-- <!--
<roundcube:button command="files-delete" type="link" class="button delete disabled" classAct="button delete" classSel="button delete pressed" label="delete" title="kolab_files.deletefile" /> <roundcube:button command="files-delete" type="link" class="button delete disabled" classAct="button delete" classSel="button delete pressed" label="delete" title="kolab_files.deletefile" />
--> -->
<roundcube:button command="files-close" type="link" class="button delete disabled" classAct="button delete" classSel="button delete pressed" label="kolab_files.terminate" title="kolab_files.terminatesession" />
<span class="dropbutton"> <span class="dropbutton">
<roundcube:button command="document-export" type="link" class="button export disabled" classAct="button export" classSel="button export pressed" label="kolab_files.get" title="kolab_files.getfile" /> <roundcube:button command="document-export" type="link" class="button export disabled" classAct="button export" classSel="button export pressed" label="kolab_files.get" title="kolab_files.getfile" />
<a href="#export" class="dropbuttontip" id="exportmenulink" onclick="UI.toggle_popup('exportmenu',event);return false" aria-haspopup="true" aria-expanded="false" aria-owns="exportmenu-menu" tabindex="0">Export options</a> <a href="#export" class="dropbuttontip" id="exportmenulink" onclick="UI.toggle_popup('exportmenu',event);return false" aria-haspopup="true" aria-expanded="false" aria-owns="exportmenu-menu" tabindex="0">Export options</a>