summaryrefslogtreecommitdiff
path: root/program
diff options
context:
space:
mode:
authorthomascube <thomas@roundcube.net>2012-01-02 14:44:28 +0000
committerthomascube <thomas@roundcube.net>2012-01-02 14:44:28 +0000
commit7c2a9310c4104f51fcf56379dcc3511fa5bfae2d (patch)
treef7ce98283b0c3ce29d0e375e55c8fe7aaee1a677 /program
parentc6db4aa46bd285ef7b3d63cba5e957373a116485 (diff)
Use iframes for identity management
Diffstat (limited to 'program')
-rw-r--r--program/js/app.js32
-rw-r--r--program/localization/en_US/messages.inc1
-rw-r--r--program/steps/settings/edit_identity.inc1
-rw-r--r--program/steps/settings/identities.inc2
-rw-r--r--program/steps/settings/save_identity.inc13
5 files changed, 42 insertions, 7 deletions
diff --git a/program/js/app.js b/program/js/app.js
index be6ca8d7e..27af1ff88 100644
--- a/program/js/app.js
+++ b/program/js/app.js
@@ -351,11 +351,18 @@ function rcube_webmail()
this.enable_command('preferences', 'identities', 'save', 'folders', true);
if (this.env.action == 'identities') {
- this.enable_command('add', this.env.identities_level < 2);
+ this.enable_command('add', 'delete', this.env.identities_level < 2);
}
else if (this.env.action == 'edit-identity' || this.env.action == 'add-identity') {
this.enable_command('add', this.env.identities_level < 2);
- this.enable_command('save', 'delete', 'edit', 'toggle-editor', true);
+ this.enable_command('save', 'edit', 'toggle-editor', true);
+ if (this.is_framed() && this.env.identities_level < 2)
+ this.set_button('delete', 'act'); // activate button but delegate command to parent
+ else
+ this.enable_command('delete', this.env.identities_level < 2);
+
+ if (this.env.action == 'add-identity')
+ $("input[type='text']").first().select();
}
else if (this.env.action == 'folders') {
this.enable_command('subscribe', 'unsubscribe', 'create-folder', 'rename-folder', true);
@@ -4770,11 +4777,28 @@ function rcube_webmail()
if (!id)
id = this.env.iid ? this.env.iid : selection[0];
- // append token to request
- this.goto_url('delete-identity', '_iid='+id+'&_token='+this.env.request_token, true);
+ // submit request with appended token
+ if (confirm(this.get_label('deleteidentityconfirm')))
+ this.goto_url('delete-identity', '_iid='+id+'&_token='+this.env.request_token, true);
return true;
};
+
+ this.update_identity_row = function(id, name, add)
+ {
+ var row, col, list = this.identity_list,
+ rid = this.html_identifier(id);
+
+ if (list.rows[rid] && (row = list.rows[rid].obj)) {
+ $(row.cells[0]).html(name);
+ }
+ else if (add) {
+ row = $('<tr>').attr('id', 'rcmrow'+rid).get(0);
+ col = $('<td>').addClass('mail').html(name).appendTo(row);
+ list.insert_row(row);
+ list.select(rid);
+ }
+ };
/*********************************************************/
diff --git a/program/localization/en_US/messages.inc b/program/localization/en_US/messages.inc
index aae086e99..525df95cc 100644
--- a/program/localization/en_US/messages.inc
+++ b/program/localization/en_US/messages.inc
@@ -109,6 +109,7 @@ $messages['addingmember'] = 'Adding contact(s) to the group...';
$messages['removingmember'] = 'Removing contact(s) from the group...';
$messages['receiptsent'] = 'Successfully sent a read receipt.';
$messages['errorsendingreceipt'] = 'Could not send the receipt.';
+$messages['deleteidentityconfirm'] = 'Do you really want to delete this identity?';
$messages['nodeletelastidentity'] = 'You cannot delete this identity, it\'s your last one.';
$messages['forbiddencharacter'] = 'Folder name contains a forbidden character.';
$messages['selectimportfile'] = 'Please select a file to upload.';
diff --git a/program/steps/settings/edit_identity.inc b/program/steps/settings/edit_identity.inc
index f0c477673..188d1073d 100644
--- a/program/steps/settings/edit_identity.inc
+++ b/program/steps/settings/edit_identity.inc
@@ -151,6 +151,7 @@ function rcube_identity_form($attrib)
$OUTPUT->include_script('list.js');
$OUTPUT->add_handler('identityform', 'rcube_identity_form');
$OUTPUT->set_env('identities_level', IDENTITIES_LEVEL);
+$OUTPUT->add_label('deleteidentityconfirm');
$OUTPUT->set_pagetitle(rcube_label(($RCMAIL->action=='add-identity' ? 'newidentity' : 'edititem')));
diff --git a/program/steps/settings/identities.inc b/program/steps/settings/identities.inc
index 6fc2cc179..95ff31a42 100644
--- a/program/steps/settings/identities.inc
+++ b/program/steps/settings/identities.inc
@@ -22,7 +22,6 @@
define('IDENTITIES_LEVEL', intval($RCMAIL->config->get('identities_level', 0)));
$OUTPUT->set_pagetitle(rcube_label('identities'));
-
$OUTPUT->include_script('list.js');
@@ -43,5 +42,6 @@ function rcmail_identity_frame($attrib)
$OUTPUT->add_handler('identityframe', 'rcmail_identity_frame');
$OUTPUT->set_env('identities_level', IDENTITIES_LEVEL);
+$OUTPUT->add_label('deleteidentityconfirm');
$OUTPUT->send('identities');
diff --git a/program/steps/settings/save_identity.inc b/program/steps/settings/save_identity.inc
index f88e732d9..0a06b424c 100644
--- a/program/steps/settings/save_identity.inc
+++ b/program/steps/settings/save_identity.inc
@@ -96,7 +96,7 @@ if ($_POST['_iid'])
if ($_POST['_framed']) {
// update the changed col in list
- // ...
+ $OUTPUT->command('parent.update_identity_row', $iid, Q(trim($save_data['name'] . ' <' . rcube_idn_to_utf8($save_data['email']) .'>')));
}
}
else {
@@ -135,6 +135,11 @@ else if (IDENTITIES_LEVEL < 2)
if (!empty($_POST['_standard']))
$default_id = $insert_id;
+
+ if ($_POST['_framed']) {
+ // add a new row to the list
+ $OUTPUT->command('parent.update_identity_row', $insert_id, Q(trim($save_data['name'] . ' <' . rcube_idn_to_utf8($save_data['email']) .'>')), true);
+ }
}
else {
// show error message
@@ -152,4 +157,8 @@ if ($default_id)
$RCMAIL->user->set_default($default_id);
// go to next step
-rcmail_overwrite_action('identities');
+if (!empty($_REQUEST['_framed'])) {
+ rcmail_overwrite_action('edit-identity');
+}
+else
+ rcmail_overwrite_action('identities');