Compare commits
32 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
abc3c9ea5f | ||
|
|
148052a6d0 | ||
|
|
7bb10e55d7 | ||
|
|
ac32196fc0 | ||
|
|
ebc4324ecd | ||
|
|
c0a92bb436 | ||
|
|
652d1aaa1f | ||
|
|
6f86e64442 | ||
|
|
080a2ee591 | ||
|
|
4a20b77edb | ||
|
|
89791e1f49 | ||
|
|
c2380e630b | ||
|
|
a062f5ebb5 | ||
|
|
f164ccfd05 | ||
|
|
34fd9ca6f6 | ||
|
|
6ba63dfe50 | ||
|
|
e79ec4e45b | ||
|
|
f1bd9679da | ||
|
|
68164414c2 | ||
|
|
d8ea3d5539 | ||
|
|
a4dc73c6a7 | ||
|
|
f796334126 | ||
|
|
d65ad79709 | ||
|
|
43a9ed178e | ||
|
|
cc68ab1521 | ||
|
|
ea21509f2a | ||
|
|
24a9584d6f | ||
|
|
bcea012af0 | ||
|
|
a437a107ba | ||
|
|
8b2798e412 | ||
|
|
c28305509f | ||
|
|
8a8bca1ae5 |
1
.gitignore
vendored
1
.gitignore
vendored
@@ -1 +1,2 @@
|
|||||||
*.swp
|
*.swp
|
||||||
|
.idea
|
||||||
35
README.md
35
README.md
@@ -1,18 +1,37 @@
|
|||||||
# ident_switch
|
# ident_switch
|
||||||
ident_switch plugin for Roundcube
|
ident_switch plugin for Roundcube
|
||||||
|
|
||||||
This plugin allows users to switch between different accounts (including remote) in single Roundcube session.
|
This plugin allows users to switch between different accounts (including remote) in single Roundcube session like this:
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
*Inspired by identities_imap plugin that is no longer supported.*
|
*Inspired by identities_imap plugin that is no longer supported.*
|
||||||
|
|
||||||
### Where to start ###
|
### Where to start ###
|
||||||
* In settigs interface create new identity.
|
* In settings interface create new identity.
|
||||||
* For all identities except default you will see new section of settings - IMAP. Enter data required to connect to remote server. Don't forget to check Enabled check box.
|
* For all identities except default you will see new section of settings - "Plugin ident_switch" (see screenshot below). Enter data required to connect to remote server. Don't forget to check Enabled check box.
|
||||||
* After you have created at least one identity with active IMAP settings you will see combobox in the top right corner instead of plain text field with account name. It will allows you to switch to another account.
|
* After you have created at least one identity with active plugin you will see combobox in the top right corner instead of plain text field with account name. It will allows you to switch to another account.
|
||||||
|
|
||||||
|
### Settings ###
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
* **Enabled** - enables plugin (i.e. account switcing) for this identity.
|
||||||
|
* **Label** - text that will be displayed in drop down list for this identity. If left blank email will be used.
|
||||||
|
* **IMAP**
|
||||||
|
* **Server host name** - host name for imap server. If left blank 'localhost' will be used.
|
||||||
|
* **Port** - port on server to connect to. If left blank 143 will be used.
|
||||||
|
* **Secure connection** - enabled secure connection (TLS) *for both IMAP and SMTP*.
|
||||||
|
* **Username** - login used *for IMAP and SMTP servers*.
|
||||||
|
* **Password** - password used *for IMAP and SMTP servers*. It's stored encrypted in database.
|
||||||
|
* **SMTP**
|
||||||
|
* **Server host name** - host name for imap server. If left blank 'localhost' will be used.
|
||||||
|
* **Port** - port on server to connect to. If left blank 587 will be used.
|
||||||
|
|
||||||
### Version compatibility ###
|
### Version compatibility ###
|
||||||
* Branch 1.X - for Roundcube v1.1
|
* Versions 1.X (not supported any more) - for Roundcube v1.1
|
||||||
* Branch 2.X - for Roundcube v1.2
|
* Versions 2.X (not supported any more) - for Roundcube v1.2
|
||||||
* Branch 3.X - for Roundcube v1.3
|
* Versions 3.X (not supported any more) - for Roundcube v1.3
|
||||||
|
* Versions 4.x - for Roundcube v1.3 and upcoming 1.4.
|
||||||
|
|
||||||
Please specify verion like "~2.0" in your composer.json file for ident_switch requirement. In this case you will stay inside compatible branch until you manually update ypur Roundcube installation.
|
Please specify version like "~2.0" in your composer.json file for ident_switch requirement. In this case you will stay inside compatible branch until you manually update your Roundcube installation.
|
||||||
|
|||||||
@@ -11,28 +11,32 @@ CREATE TABLE IF NOT EXISTS ident_switch
|
|||||||
int(10) UNSIGNED
|
int(10) UNSIGNED
|
||||||
NOT NULL,
|
NOT NULL,
|
||||||
username
|
username
|
||||||
varchar(64)
|
varchar(64),
|
||||||
NOT NULL,
|
|
||||||
password
|
password
|
||||||
varchar(64),
|
varchar(64),
|
||||||
host
|
imap_host
|
||||||
varchar(64),
|
varchar(64),
|
||||||
port
|
imap_port
|
||||||
int
|
int
|
||||||
CHECK(port > 0 AND port <= 65535),
|
CHECK(imap_port > 0 AND imap_port <= 65535),
|
||||||
delimiter
|
imap_delimiter
|
||||||
char(1),
|
char(1),
|
||||||
label
|
label
|
||||||
varchar(32),
|
varchar(32),
|
||||||
flags
|
flags
|
||||||
int
|
int
|
||||||
NOT NULL
|
NOT NULL
|
||||||
DEFAULT 0,
|
DEFAULT 0,
|
||||||
UNIQUE KEY user_id_label (user_id, label),
|
smtp_host
|
||||||
CONSTRAINT fk_user_id FOREIGN KEY (user_id) REFERENCES users(user_id) ON DELETE CASCADE ON UPDATE CASCADE,
|
varchar(64),
|
||||||
CONSTRAINT fk_identity_id FOREIGN KEY (iid) REFERENCES identities(identity_id) ON DELETE CASCADE ON UPDATE CASCADE,
|
smtp_port
|
||||||
PRIMARY KEY(id),
|
int
|
||||||
INDEX IX_ident_switch_user_id (user_id),
|
CHECK(smtp_port > 0 AND smtp_port <= 65535),
|
||||||
INDEX IX_ident_switch_iid (iid)
|
UNIQUE KEY user_id_label (user_id, label),
|
||||||
|
CONSTRAINT fk_user_id FOREIGN KEY (user_id) REFERENCES users(user_id) ON DELETE CASCADE ON UPDATE CASCADE,
|
||||||
|
CONSTRAINT fk_identity_id FOREIGN KEY (iid) REFERENCES identities(identity_id) ON DELETE CASCADE ON UPDATE CASCADE,
|
||||||
|
PRIMARY KEY(id),
|
||||||
|
INDEX IX_ident_switch_user_id (user_id),
|
||||||
|
INDEX IX_ident_switch_iid (iid)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|||||||
6
SQL/mysql/2018071600.sql
Normal file
6
SQL/mysql/2018071600.sql
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
ALTER TABLE
|
||||||
|
ident_switch
|
||||||
|
MODIFY
|
||||||
|
username
|
||||||
|
varchar(64)
|
||||||
|
NULL;
|
||||||
29
SQL/mysql/2018121800.sql
Normal file
29
SQL/mysql/2018121800.sql
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
ALTER TABLE
|
||||||
|
ident_switch
|
||||||
|
CHANGE
|
||||||
|
host
|
||||||
|
imap_host varchar(64);
|
||||||
|
|
||||||
|
ALTER TABLE
|
||||||
|
ident_switch
|
||||||
|
CHANGE
|
||||||
|
port
|
||||||
|
imap_port int;
|
||||||
|
|
||||||
|
ALTER TABLE
|
||||||
|
ident_switch
|
||||||
|
ADD COLUMN
|
||||||
|
smtp_host
|
||||||
|
varchar(64);
|
||||||
|
|
||||||
|
ALTER TABLE
|
||||||
|
ident_switch
|
||||||
|
ADD COLUMN
|
||||||
|
smtp_port
|
||||||
|
int
|
||||||
|
CHECK(smtp_port > 0 AND smtp_port <= 65535);
|
||||||
|
|
||||||
|
ALTER TABLE
|
||||||
|
ident_switch
|
||||||
|
DROP COLUMN
|
||||||
|
delimiter;
|
||||||
5
SQL/mysql/2019112000.sql
Normal file
5
SQL/mysql/2019112000.sql
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
ALTER TABLE
|
||||||
|
ident_switch
|
||||||
|
ADD COLUMN
|
||||||
|
imap_delimiter
|
||||||
|
char(1);
|
||||||
@@ -1,39 +1,43 @@
|
|||||||
CREATE TABLE ident_switch
|
CREATE TABLE ident_switch
|
||||||
(
|
(
|
||||||
id
|
id
|
||||||
serial
|
serial
|
||||||
PRIMARY KEY,
|
PRIMARY KEY,
|
||||||
user_id
|
user_id
|
||||||
integer
|
integer
|
||||||
NOT NULL
|
NOT NULL
|
||||||
REFERENCES users(user_id) ON DELETE CASCADE ON UPDATE CASCADE,
|
REFERENCES users(user_id) ON DELETE CASCADE ON UPDATE CASCADE,
|
||||||
iid
|
iid
|
||||||
integer
|
integer
|
||||||
NOT NULL
|
NOT NULL
|
||||||
REFERENCES identities(identity_id) ON DELETE CASCADE ON UPDATE CASCADE
|
REFERENCES identities(identity_id) ON DELETE CASCADE ON UPDATE CASCADE
|
||||||
UNIQUE,
|
UNIQUE,
|
||||||
username
|
username
|
||||||
varchar(64)
|
varchar(64),
|
||||||
NOT NULL,
|
password
|
||||||
password
|
varchar(64),
|
||||||
varchar(64),
|
imap_host
|
||||||
host
|
varchar(64),
|
||||||
varchar(64),
|
imap_port
|
||||||
port
|
integer
|
||||||
integer
|
CHECK(imap_port > 0 AND imap_port <= 65535),
|
||||||
CHECK(port > 0 AND port <= 65535),
|
imap_delimiter
|
||||||
delimiter
|
char(1),
|
||||||
char(1),
|
label
|
||||||
label
|
varchar(32),
|
||||||
varchar(32),
|
flags
|
||||||
flags
|
integer
|
||||||
integer
|
NOT NULL
|
||||||
NOT NULL
|
DEFAULT(0),
|
||||||
DEFAULT(0),
|
smtp_host
|
||||||
UNIQUE (user_id, label)
|
varchar(64),
|
||||||
);
|
smtp_port
|
||||||
|
integer
|
||||||
CREATE INDEX
|
CHECK(smtp_port > 0 AND smtp_port <= 65535),
|
||||||
IX_ident_switch_user_id
|
UNIQUE (user_id, label)
|
||||||
ON
|
);
|
||||||
ident_switch(user_id);
|
|
||||||
|
CREATE INDEX
|
||||||
|
IX_ident_switch_user_id
|
||||||
|
ON
|
||||||
|
ident_switch(user_id);
|
||||||
|
|||||||
5
SQL/postgres/2018081600.sql
Normal file
5
SQL/postgres/2018081600.sql
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
ALTER TABLE
|
||||||
|
ident_switch
|
||||||
|
ALTER COLUMN
|
||||||
|
username
|
||||||
|
DROP NOT NULL;
|
||||||
31
SQL/postgres/2018121800.sql
Normal file
31
SQL/postgres/2018121800.sql
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
ALTER TABLE
|
||||||
|
ident_switch
|
||||||
|
RENAME COLUMN
|
||||||
|
host
|
||||||
|
TO
|
||||||
|
imap_host;
|
||||||
|
|
||||||
|
ALTER TABLE
|
||||||
|
ident_switch
|
||||||
|
RENAME COLUMN
|
||||||
|
port
|
||||||
|
TO
|
||||||
|
imap_port;
|
||||||
|
|
||||||
|
ALTER TABLE
|
||||||
|
ident_switch
|
||||||
|
ADD COLUMN
|
||||||
|
smtp_host
|
||||||
|
varchar(64);
|
||||||
|
|
||||||
|
ALTER TABLE
|
||||||
|
ident_switch
|
||||||
|
ADD COLUMN
|
||||||
|
smtp_port
|
||||||
|
integer
|
||||||
|
CHECK(smtp_port > 0 AND smtp_port <= 65535);
|
||||||
|
|
||||||
|
ALTER TABLE
|
||||||
|
ident_switch
|
||||||
|
DROP COLUMN
|
||||||
|
delimiter;
|
||||||
5
SQL/postgres/2019112000.sql
Normal file
5
SQL/postgres/2019112000.sql
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
ALTER TABLE
|
||||||
|
ident_switch
|
||||||
|
ADD COLUMN
|
||||||
|
imap_delimiter
|
||||||
|
char(1);
|
||||||
40
SQL/sqlite.initial.sql
Normal file
40
SQL/sqlite.initial.sql
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
CREATE TABLE ident_switch
|
||||||
|
(
|
||||||
|
id
|
||||||
|
integer
|
||||||
|
PRIMARY KEY,
|
||||||
|
user_id
|
||||||
|
integer
|
||||||
|
NOT NULL
|
||||||
|
REFERENCES users(user_id) ON DELETE CASCADE ON UPDATE CASCADE,
|
||||||
|
iid
|
||||||
|
integer
|
||||||
|
NOT NULL
|
||||||
|
REFERENCES identities(identity_id) ON DELETE CASCADE ON UPDATE CASCADE
|
||||||
|
UNIQUE,
|
||||||
|
username
|
||||||
|
varchar(64),
|
||||||
|
password
|
||||||
|
varchar(64),
|
||||||
|
imap_host
|
||||||
|
varchar(64),
|
||||||
|
imap_port
|
||||||
|
integer
|
||||||
|
CHECK(imap_port > 0 AND imap_port <= 65535),
|
||||||
|
imap_delimiter
|
||||||
|
char(1),
|
||||||
|
label
|
||||||
|
varchar(32),
|
||||||
|
flags
|
||||||
|
integer
|
||||||
|
NOT NULL
|
||||||
|
DEFAULT(0),
|
||||||
|
smtp_host
|
||||||
|
varchar(64),
|
||||||
|
smtp_port
|
||||||
|
integer
|
||||||
|
CHECK(smtp_port > 0 AND smtp_port <= 65535),
|
||||||
|
UNIQUE (user_id, label)
|
||||||
|
);
|
||||||
|
CREATE INDEX IX_ident_switch_user_id ON ident_switch(user_id);
|
||||||
|
CREATE INDEX IX_ident_switch_iid on ident_switch(iid);
|
||||||
76
SQL/sqlite/2018121800.sql
Normal file
76
SQL/sqlite/2018121800.sql
Normal file
@@ -0,0 +1,76 @@
|
|||||||
|
PRAGMA foreign_keys=off;
|
||||||
|
BEGIN TRANSACTION;
|
||||||
|
|
||||||
|
ALTER TABLE ident_switch RENAME TO ident_switch_old;
|
||||||
|
|
||||||
|
CREATE TABLE ident_switch
|
||||||
|
(
|
||||||
|
id
|
||||||
|
integer
|
||||||
|
PRIMARY KEY,
|
||||||
|
user_id
|
||||||
|
integer
|
||||||
|
NOT NULL
|
||||||
|
REFERENCES users(user_id) ON DELETE CASCADE ON UPDATE CASCADE,
|
||||||
|
iid
|
||||||
|
integer
|
||||||
|
NOT NULL
|
||||||
|
REFERENCES identities(identity_id) ON DELETE CASCADE ON UPDATE CASCADE
|
||||||
|
UNIQUE,
|
||||||
|
username
|
||||||
|
varchar(64),
|
||||||
|
password
|
||||||
|
varchar(64),
|
||||||
|
imap_host
|
||||||
|
varchar(64),
|
||||||
|
imap_port
|
||||||
|
integer
|
||||||
|
CHECK(imap_port > 0 AND imap_port <= 65535),
|
||||||
|
label
|
||||||
|
varchar(32),
|
||||||
|
flags
|
||||||
|
integer
|
||||||
|
NOT NULL
|
||||||
|
DEFAULT(0),
|
||||||
|
smtp_host
|
||||||
|
varchar(64),
|
||||||
|
smtp_port
|
||||||
|
integer
|
||||||
|
CHECK(smtp_port > 0 AND smtp_port <= 65535),
|
||||||
|
UNIQUE (user_id, label)
|
||||||
|
);
|
||||||
|
CREATE INDEX IX_ident_switch_user_id ON ident_switch(user_id);
|
||||||
|
CREATE INDEX IX_ident_switch_iid on ident_switch(iid);
|
||||||
|
|
||||||
|
INSERT OR ROLLBACK INTO
|
||||||
|
ident_switch (
|
||||||
|
id,
|
||||||
|
user_id,
|
||||||
|
iid,
|
||||||
|
username,
|
||||||
|
password,
|
||||||
|
imap_host,
|
||||||
|
imap_port,
|
||||||
|
label,
|
||||||
|
flags,
|
||||||
|
smtp_host
|
||||||
|
)
|
||||||
|
SELECT
|
||||||
|
id,
|
||||||
|
user_id,
|
||||||
|
iid,
|
||||||
|
username,
|
||||||
|
password,
|
||||||
|
host,
|
||||||
|
port,
|
||||||
|
label,
|
||||||
|
flags,
|
||||||
|
host,
|
||||||
|
FROM
|
||||||
|
ident_switch_old;
|
||||||
|
|
||||||
|
DROP TABLE
|
||||||
|
ident_switch_old;
|
||||||
|
|
||||||
|
COMMIT;
|
||||||
|
PRAGMA foreign_keys=on;
|
||||||
@@ -19,8 +19,9 @@
|
|||||||
}
|
}
|
||||||
],
|
],
|
||||||
"require": {
|
"require": {
|
||||||
"php": ">=5.3.0",
|
"php": ">=5.3.0",
|
||||||
"roundcube/plugin-installer": ">=0.1.3"
|
"roundcube/plugin-installer": ">=0.1.3",
|
||||||
|
"ext-ctype": "*"
|
||||||
},
|
},
|
||||||
"conflict": {
|
"conflict": {
|
||||||
"elm/identity_smtp": "*"
|
"elm/identity_smtp": "*"
|
||||||
|
|||||||
35
ident_switch-form.js
Normal file
35
ident_switch-form.js
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
/*
|
||||||
|
* This is part of identity_imap plugin
|
||||||
|
*/
|
||||||
|
|
||||||
|
$(function() {
|
||||||
|
$("INPUT[name='_ident_switch.form.common.enabled']").change();
|
||||||
|
plugin_switchIdent_processPreconfig();
|
||||||
|
});
|
||||||
|
|
||||||
|
function plugin_switchIdent_processPreconfig() {
|
||||||
|
var disFld = $("INPUT[name='_ident_switch.form.common.readonly']");
|
||||||
|
disFld.parentsUntil("TABLE", "TR").hide();
|
||||||
|
|
||||||
|
var disVal = disFld.val();
|
||||||
|
if (disVal > 0) {
|
||||||
|
$("INPUT[name='_ident_switch.form.imap.host']").prop("disabled", true);
|
||||||
|
$("SELECT[name='_ident_switch.form.imap.tls']").prop("disabled", true);
|
||||||
|
$("INPUT[name='_ident_switch.form.imap.port']").prop("disabled", true);
|
||||||
|
|
||||||
|
$("INPUT[name='_ident_switch.form.smtp.host']").prop("disabled", true);
|
||||||
|
$("SELECT[name='_ident_switch.form.smtp.tls']").prop("disabled", true);
|
||||||
|
$("INPUT[name='_ident_switch.form.smtp.port']").prop("disabled", true);
|
||||||
|
}
|
||||||
|
if (2 == disVal) {
|
||||||
|
$("INPUT[name='_ident_switch.form.imap.username']").prop("disabled", true);
|
||||||
|
$("INPUT[name='_ident_switch.form.smtp.username']").prop("disabled", true);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
function plugin_switchIdent_enabled_onChange(e) {
|
||||||
|
var $enFld = $("INPUT[name='_ident_switch.form.common.enabled'], INPUT[name='_ident_switch.form.imap.host'], INPUT[name='_ident_switch.form.smtp.host']");
|
||||||
|
$("INPUT[name!='_ident_switch.form.common.enabled']", $enFld.parents("FIELDSET")).prop("disabled", !$enFld.is(":checked"));
|
||||||
|
plugin_switchIdent_processPreconfig();
|
||||||
|
}
|
||||||
1
ident_switch-form.min.js
vendored
Normal file
1
ident_switch-form.min.js
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
$(function(){$("INPUT[name='_ident_switch.form.common.enabled']").change();plugin_switchIdent_processPreconfig()});function plugin_switchIdent_processPreconfig(){var a=$("INPUT[name='_ident_switch.form.common.readonly']");a.parentsUntil("TABLE","TR").hide();var b=a.val();if(b>0){$("INPUT[name='_ident_switch.form.imap.host']").prop("disabled",true);$("SELECT[name='_ident_switch.form.imap.tls']").prop("disabled",true);$("INPUT[name='_ident_switch.form.imap.port']").prop("disabled",true);$("INPUT[name='_ident_switch.form.smtp.host']").prop("disabled",true);$("SELECT[name='_ident_switch.form.smtp.tls']").prop("disabled",true);$("INPUT[name='_ident_switch.form.smtp.port']").prop("disabled",true)}if(2==b){$("INPUT[name='_ident_switch.form.imap.username']").prop("disabled",true);$("INPUT[name='_ident_switch.form.smtp.username']").prop("disabled",true)}}function plugin_switchIdent_enabled_onChange(a){var b=$("INPUT[name='_ident_switch.form.common.enabled'], INPUT[name='_ident_switch.form.imap.host'], INPUT[name='_ident_switch.form.smtp.host']");$("INPUT[name!='_ident_switch.form.common.enabled']",b.parents("FIELDSET")).prop("disabled",!b.is(":checked"));plugin_switchIdent_processPreconfig()};
|
||||||
71
ident_switch-switch.js
Normal file
71
ident_switch-switch.js
Normal file
@@ -0,0 +1,71 @@
|
|||||||
|
/*
|
||||||
|
* This is part of identity_imap plugin
|
||||||
|
*/
|
||||||
|
|
||||||
|
$(function() {
|
||||||
|
$sw = $('#plugin-ident_switch-account');
|
||||||
|
isOk = false;
|
||||||
|
|
||||||
|
switch (rcmail.env['skin']) {
|
||||||
|
case 'larry':
|
||||||
|
isOk = plugin_switchIdent_addCbLarry($sw);
|
||||||
|
break;
|
||||||
|
case 'classic':
|
||||||
|
isOk = plugin_switchIdent_addCbClassic($sw);
|
||||||
|
break;
|
||||||
|
case 'elastic':
|
||||||
|
isOk = plugin_switchIdent_addCbElastic($sw);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isOk)
|
||||||
|
$sw.show();
|
||||||
|
});
|
||||||
|
|
||||||
|
function plugin_switchIdent_addCbLarry($sw) {
|
||||||
|
var $truName = $('.topright .username');
|
||||||
|
if ($truName.length > 0) {
|
||||||
|
if ($sw.length > 0) {
|
||||||
|
$sw.prependTo('.topright');
|
||||||
|
$truName.hide();
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
function plugin_switchIdent_addCbClassic($sw) {
|
||||||
|
var $taskBar = $('#taskbar');
|
||||||
|
if ($taskBar.length > 0) {
|
||||||
|
$taskBar.prepend($sw);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
function plugin_switchIdent_addCbElastic($sw) {
|
||||||
|
var $taskBar = $('.header-title.username');
|
||||||
|
$sw.css("background-color", "transparent").css("border","none");
|
||||||
|
$sw.css("background-position-x","left 0.75rem").css("padding","0 0 0 2rem");
|
||||||
|
$sw.css("font-weight","bold").css("box-shadow","none");
|
||||||
|
if ($taskBar.length > 0) {
|
||||||
|
$taskBar.prepend($sw);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
function plugin_switchIdent_switch(val) {
|
||||||
|
rcmail.env.unread_counts = {};
|
||||||
|
console.log(rcmail.env.unread_counts);
|
||||||
|
rcmail.http_post('plugin.ident_switch.switch', { '_ident-id': val, '_mbox': rcmail.env.mailbox });
|
||||||
|
}
|
||||||
|
|
||||||
|
function plugin_switchIdent_fixIdent(iid) {
|
||||||
|
if (parseInt(iid) > 0)
|
||||||
|
$("#_from").val(iid);
|
||||||
|
}
|
||||||
1
ident_switch-switch.min.js
vendored
Normal file
1
ident_switch-switch.min.js
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
$(function(){$sw=$("#plugin-ident_switch-account");isOk=false;switch(rcmail.env.skin){case"larry":isOk=plugin_switchIdent_addCbLarry($sw);break;case"classic":isOk=plugin_switchIdent_addCbClassic($sw);break;case"elastic":isOk=plugin_switchIdent_addCbElastic($sw);break}if(isOk){$sw.show()}});function plugin_switchIdent_addCbLarry(b){var a=$(".topright .username");if(a.length>0){if(b.length>0){b.prependTo(".topright");a.hide();return true}}return false}function plugin_switchIdent_addCbClassic(b){var a=$("#taskbar");if(a.length>0){a.prepend(b);return true}return false}function plugin_switchIdent_addCbElastic(b){var a=$(".header-title.username");b.css("background-color","transparent").css("border","none");b.css("background-position-x","left 0.75rem").css("padding","0 0 0 2rem");b.css("font-weight","bold").css("box-shadow","none");if(a.length>0){a.prepend(b);return true}return false}function plugin_switchIdent_switch(a){rcmail.env.unread_counts={};console.log(rcmail.env.unread_counts);rcmail.http_post("plugin.ident_switch.switch",{"_ident-id":a,_mbox:rcmail.env.mailbox})}function plugin_switchIdent_fixIdent(a){if(parseInt(a)>0){$("#_from").val(a)}};
|
||||||
@@ -1,61 +0,0 @@
|
|||||||
/*
|
|
||||||
* This is part of identity_imap plugin
|
|
||||||
*/
|
|
||||||
|
|
||||||
$(function() {
|
|
||||||
var $truName = $('.topright .username');
|
|
||||||
if ($truName.length > 0) {
|
|
||||||
$sw = $('#plugin-ident_switch-account');
|
|
||||||
if ($sw.length > 0) {
|
|
||||||
$sw.prependTo('.topright');
|
|
||||||
$truName.hide();
|
|
||||||
$('#plugin-ident_switch-account').show();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
$("INPUT[name='_ident_switch.form.enabled']").change();
|
|
||||||
$("SELECT[name='_ident_switch.form.secure']").change();
|
|
||||||
|
|
||||||
plugin_switchIdent_processPreconfig();
|
|
||||||
});
|
|
||||||
|
|
||||||
function plugin_switchIdent_processPreconfig() {
|
|
||||||
var disFld = $("INPUT[name='_ident_switch.form.readonly']");
|
|
||||||
disFld.parentsUntil("TABLE", "TR").hide();
|
|
||||||
|
|
||||||
var disVal = disFld.val();
|
|
||||||
if (disVal > 0) {
|
|
||||||
$("INPUT[name='_ident_switch.form.host']").prop("disabled", true);
|
|
||||||
$("SELECT[name='_ident_switch.form.secure']").prop("disabled", true);
|
|
||||||
$("INPUT[name='_ident_switch.form.port']").prop("disabled", true);
|
|
||||||
}
|
|
||||||
if (2 == disVal) {
|
|
||||||
$("INPUT[name='_ident_switch.form.username']").prop("disabled", true);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
function plugin_switchIdent_enabled_onChange(e) {
|
|
||||||
var $enFld = $("INPUT[name='_ident_switch.form.enabled']");
|
|
||||||
$("INPUT[name!='_ident_switch.form.enabled'], SELECT", $enFld.parents("FIELDSET")).prop("disabled", !$enFld.is(":checked"));
|
|
||||||
plugin_switchIdent_processPreconfig();
|
|
||||||
}
|
|
||||||
|
|
||||||
function plugin_switchIdent_secure_onChange(e) {
|
|
||||||
var $secSel = $("SELECT[name='_ident_switch.form.secure']");
|
|
||||||
var $portFld = $("INPUT[name='_ident_switch.form.port']");
|
|
||||||
|
|
||||||
if ('SSL' === $secSel.val().toUpperCase())
|
|
||||||
$portFld.attr("placeholder", 993);
|
|
||||||
else
|
|
||||||
$portFld.attr("placeholder", 143);
|
|
||||||
}
|
|
||||||
|
|
||||||
function plugin_switchIdent_switch(val) {
|
|
||||||
rcmail.http_post('plugin.ident_switch.switch', { '_ident-id': val, '_mbox': rcmail.env.mailbox });
|
|
||||||
}
|
|
||||||
|
|
||||||
function plugin_switchIdent_fixIdent(iid) {
|
|
||||||
if (parseInt(iid) > 0)
|
|
||||||
$("#_from").val(iid);
|
|
||||||
}
|
|
||||||
10
ident_switch.min.js
vendored
10
ident_switch.min.js
vendored
@@ -1,10 +0,0 @@
|
|||||||
$(function(){var $truName=$('.topright .username');if($truName.length>0){$sw=$('#plugin-ident_switch-account');if($sw.length>0){$sw.prependTo('.topright');$truName.hide();$('#plugin-ident_switch-account').show();}}
|
|
||||||
$("INPUT[name='_ident_switch.form.enabled']").change();$("SELECT[name='_ident_switch.form.secure']").change();plugin_switchIdent_processPreconfig();});function plugin_switchIdent_processPreconfig(){var disFld=$("INPUT[name='_ident_switch.form.readonly']");disFld.parentsUntil("TABLE","TR").hide();var disVal=disFld.val();if(disVal>0){$("INPUT[name='_ident_switch.form.host']").prop("disabled",true);$("SELECT[name='_ident_switch.form.secure']").prop("disabled",true);$("INPUT[name='_ident_switch.form.port']").prop("disabled",true);}
|
|
||||||
if(2==disVal){$("INPUT[name='_ident_switch.form.username']").prop("disabled",true);}}
|
|
||||||
function plugin_switchIdent_enabled_onChange(e){var $enFld=$("INPUT[name='_ident_switch.form.enabled']");$("INPUT[name!='_ident_switch.form.enabled'], SELECT",$enFld.parents("FIELDSET")).prop("disabled",!$enFld.is(":checked"));plugin_switchIdent_processPreconfig();}
|
|
||||||
function plugin_switchIdent_secure_onChange(e){var $secSel=$("SELECT[name='_ident_switch.form.secure']");var $portFld=$("INPUT[name='_ident_switch.form.port']");if('SSL'===$secSel.val().toUpperCase())
|
|
||||||
$portFld.attr("placeholder",993);else
|
|
||||||
$portFld.attr("placeholder",143);}
|
|
||||||
function plugin_switchIdent_switch(val){rcmail.http_post('plugin.ident_switch.switch',{'_ident-id':val,'_mbox':rcmail.env.mailbox});}
|
|
||||||
function plugin_switchIdent_fixIdent(iid){if(parseInt(iid)>0)
|
|
||||||
$("#_from").val(iid);}
|
|
||||||
401
ident_switch.php
401
ident_switch.php
@@ -16,9 +16,9 @@ class ident_switch extends rcube_plugin
|
|||||||
const MY_POSTFIX = '_iswitch';
|
const MY_POSTFIX = '_iswitch';
|
||||||
|
|
||||||
// Flags user in database
|
// Flags user in database
|
||||||
const DB_ENABLED = 1;
|
const DB_ENABLED = 1;
|
||||||
const DB_SECURE_SSL = 2;
|
//const DB_SECURE_SSL = 2; // Not supported any more
|
||||||
const DB_SECURE_TLS = 4;
|
const DB_SECURE_IMAP_TLS = 4;
|
||||||
|
|
||||||
function init()
|
function init()
|
||||||
{
|
{
|
||||||
@@ -58,16 +58,32 @@ class ident_switch extends rcube_plugin
|
|||||||
{
|
{
|
||||||
$rc = rcmail::get_instance();
|
$rc = rcmail::get_instance();
|
||||||
|
|
||||||
// Currently selected identity
|
switch ($rc->task)
|
||||||
$iid = $_SESSION['iid' . self::MY_POSTFIX];
|
{
|
||||||
|
case 'mail':
|
||||||
|
$this->render_switch($rc, $args);
|
||||||
|
break;
|
||||||
|
case 'settings':
|
||||||
|
$this->include_script('ident_switch-form.js');
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
$iid_int = 0;
|
|
||||||
if (is_int($iid))
|
return $args;
|
||||||
$iid_int = $iid;
|
}
|
||||||
elseif ($iid === '-1')
|
|
||||||
$iid_int = -1;
|
private function render_switch($rc, $args)
|
||||||
elseif (ctype_digit($iid))
|
{
|
||||||
$iid_int = intval($iid);
|
// Currently selected identity
|
||||||
|
$iid_s = $_SESSION['iid' . self::MY_POSTFIX];
|
||||||
|
|
||||||
|
$iid = 0;
|
||||||
|
if (is_int($iid_s))
|
||||||
|
$iid = $iid_s;
|
||||||
|
elseif ($iid_s === '-1')
|
||||||
|
$iid = -1;
|
||||||
|
elseif (ctype_digit($iid_s))
|
||||||
|
$iid = intval($iid_s);
|
||||||
|
|
||||||
// Get list of alternative accounts
|
// Get list of alternative accounts
|
||||||
$sOpt = '';
|
$sOpt = '';
|
||||||
@@ -76,7 +92,7 @@ class ident_switch extends rcube_plugin
|
|||||||
while ($r = $rc->db->fetch_assoc($qRec))
|
while ($r = $rc->db->fetch_assoc($qRec))
|
||||||
{
|
{
|
||||||
$opts = array('value' => $r['id']);
|
$opts = array('value' => $r['id']);
|
||||||
if ($iid_int == $r['iid'])
|
if ($iid == $r['iid'])
|
||||||
$opts['selected'] = 'selected';
|
$opts['selected'] = 'selected';
|
||||||
|
|
||||||
// Make label
|
// Make label
|
||||||
@@ -110,7 +126,7 @@ class ident_switch extends rcube_plugin
|
|||||||
{
|
{
|
||||||
// Add main account
|
// Add main account
|
||||||
$opts = array('value' => -1);
|
$opts = array('value' => -1);
|
||||||
if (!$iid || $iid_int == -1)
|
if ($iid <= 0)
|
||||||
$opts['selected'] = 'selected';
|
$opts['selected'] = 'selected';
|
||||||
|
|
||||||
$sOpt = html::tag(
|
$sOpt = html::tag(
|
||||||
@@ -119,7 +135,7 @@ class ident_switch extends rcube_plugin
|
|||||||
$_SESSION['global_alias'] ? $_SESSION['global_alias'] : $rc->user->data['username']
|
$_SESSION['global_alias'] ? $_SESSION['global_alias'] : $rc->user->data['username']
|
||||||
) . $sOpt;
|
) . $sOpt;
|
||||||
|
|
||||||
$this->include_script('ident_switch.js');
|
$this->include_script('ident_switch-switch.js');
|
||||||
$sw = html::tag(
|
$sw = html::tag(
|
||||||
'select',
|
'select',
|
||||||
array(
|
array(
|
||||||
@@ -131,89 +147,145 @@ class ident_switch extends rcube_plugin
|
|||||||
);
|
);
|
||||||
$rc->output->add_footer($sw);
|
$rc->output->add_footer($sw);
|
||||||
}
|
}
|
||||||
|
|
||||||
return $args;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function on_smtp_connect($args)
|
function on_smtp_connect($args)
|
||||||
{
|
{
|
||||||
|
$iid = $_SESSION['iid' . self::MY_POSTFIX];
|
||||||
|
if (!is_numeric($iid) || $iid == -1)
|
||||||
|
return $args;
|
||||||
|
|
||||||
$rc = rcmail::get_instance();
|
$rc = rcmail::get_instance();
|
||||||
|
|
||||||
// TODO: Rewrite with full settings!
|
$sql = 'SELECT smtp_host, flags, smtp_port, username, password FROM ' . $rc->db->table_name(self::TABLE) . ' WHERE iid = ? AND user_id = ?';
|
||||||
|
$q = $rc->db->query($sql, $iid ,$rc->user->ID);
|
||||||
if (strcasecmp($rc->user->data['username'], $_SESSION['username']) !== 0)
|
$r = $rc->db->fetch_assoc($q);
|
||||||
|
if (is_array($r))
|
||||||
{
|
{
|
||||||
if ($args['smtp_user'] == '%u')
|
if (!$r['username'])
|
||||||
$args['smtp_user'] = $rc->user->data['username'];
|
{ // Load email from identity
|
||||||
if ($args['smtp_pass'] == '%p')
|
$sql = 'SELECT email FROM ' . $rc->db->table_name('identities') . ' WHERE identity_id = ?';
|
||||||
$args['smtp_pass'] = $rc->decrypt($_SESSION['password' . self::MY_POSTFIX]);
|
$q = $rc->db->query($sql, $iid);
|
||||||
|
$rIid = $rc->db->fetch_assoc($q);
|
||||||
|
|
||||||
|
$r['username'] = $rIid['email'];
|
||||||
|
}
|
||||||
|
|
||||||
|
$args['smtp_user'] = $r['username'];
|
||||||
|
$args['smtp_pass'] = $rc->decrypt($r['password']);
|
||||||
|
$args['smtp_server'] = $r['smtp_host'] ? $r['smtp_host'] : 'localhost'; // Default SMTP host here
|
||||||
|
$args['smtp_port'] = $r['smtp_port'] ? $r['smtp_port'] : 587; // Default SMTP port here
|
||||||
|
|
||||||
|
if ($r['flags'] & self::DB_SECURE_IMAP_TLS)
|
||||||
|
{
|
||||||
|
if (strpos($args['smtp_server'], ':') !== false)
|
||||||
|
self::write_log('SMTP server already contains protocol, ignoring TLS flag.');
|
||||||
|
else
|
||||||
|
$args['smtp_server'] = 'tls://' . $args['smtp_server'];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return $args;
|
return $args;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static function get_common_form(&$record)
|
||||||
|
{
|
||||||
|
$prefix = 'ident_switch.form.common.';
|
||||||
|
return array(
|
||||||
|
$prefix . 'enabled' => array('type' => 'checkbox', 'onchange' => 'plugin_switchIdent_enabled_onChange();'),
|
||||||
|
$prefix . 'label' => array('type' => 'text', 'size' => 32, 'placeholder' => $record['email']),
|
||||||
|
$prefix . 'readonly' => array('type' => 'hidden'),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static function get_imap_form(&$record)
|
||||||
|
{
|
||||||
|
$prefix = 'ident_switch.form.imap.';
|
||||||
|
return array(
|
||||||
|
$prefix . 'host' => array('type' => 'text', 'size' => 64, 'placeholder' => 'localhost'),
|
||||||
|
$prefix . 'port' => array('type' => 'text', 'size' => 5, 'placeholder' => 143),
|
||||||
|
$prefix . 'tls' => array('type' => 'checkbox'),
|
||||||
|
$prefix . 'username' => array('type' => 'text', 'size' => 64, 'placeholder' => $record['email']),
|
||||||
|
$prefix . 'password' => array('type' => 'password', 'size' => 64),
|
||||||
|
$prefix . 'delimiter' => array('type' => 'text', 'size' => 1, 'placeholder' => '.'),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static function get_smtp_form(&$record)
|
||||||
|
{
|
||||||
|
$prefix = 'ident_switch.form.smtp.';
|
||||||
|
return array(
|
||||||
|
$prefix . 'host' => array('type' => 'text', 'size' => 64, 'placeholder' => 'localhost'),
|
||||||
|
$prefix . 'port' => array('type' => 'text', 'size' => 5, 'placeholder' => 587),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
function on_identity_form($args)
|
function on_identity_form($args)
|
||||||
{
|
{
|
||||||
$rc = rcmail::get_instance();
|
$rc = rcmail::get_instance();
|
||||||
|
|
||||||
// Do not show options for default identity
|
// Do not show options for default identity
|
||||||
if (strcasecmp($args['record']['email'], $rc->user->data['username']) === 0)
|
if (strcasecmp($args['record']['email'], $rc->user->data['username']) === 0)
|
||||||
return $args;
|
return $args;
|
||||||
|
|
||||||
$this->add_texts('localization');
|
$this->add_texts('localization');
|
||||||
|
|
||||||
// Create our field set
|
$row = null;
|
||||||
$args['form']['ident_switch'] = array(
|
|
||||||
'name' => $this->gettext('form.caption'),
|
|
||||||
'content' => array(
|
|
||||||
'ident_switch.form.enabled' => array('type' => 'checkbox', 'onchange' => 'plugin_switchIdent_enabled_onChange();'),
|
|
||||||
'ident_switch.form.label' => array('type' => 'text', 'size' => 32, 'placeholder' => $args['record']['email']),
|
|
||||||
'ident_switch.form.host' => array('type' => 'text', 'size' => 64, 'placeholder' => 'localhost'),
|
|
||||||
'ident_switch.form.secure' => array(
|
|
||||||
'type' => 'select',
|
|
||||||
'options' => array('ssl' => 'SSL', 'tls' => 'TLS'),
|
|
||||||
'onchange' => 'plugin_switchIdent_secure_onChange();'
|
|
||||||
),
|
|
||||||
'ident_switch.form.port' => array('type' => 'text', 'size' => 5),
|
|
||||||
'ident_switch.form.username' => array('type' => 'text', 'size' => 64, 'placeholder' => $args['record']['email']),
|
|
||||||
'ident_switch.form.password' => array('type' => 'password', 'size' => 64),
|
|
||||||
'ident_switch.form.delimiter' => array('type' => 'text', 'size' => 1, 'placeholder' => '.'),
|
|
||||||
'ident_switch.form.readonly' => array('type' => 'hidden'),
|
|
||||||
),
|
|
||||||
);
|
|
||||||
|
|
||||||
// Load data if exists
|
|
||||||
if (isset($args['record']['identity_id']))
|
if (isset($args['record']['identity_id']))
|
||||||
{
|
{
|
||||||
$sql = 'SELECT * FROM ' . $rc->db->table_name(self::TABLE) . ' WHERE iid = ? AND user_id = ?';
|
$sql = 'SELECT * FROM ' . $rc->db->table_name(self::TABLE) . ' WHERE iid = ? AND user_id = ?';
|
||||||
$q = $rc->db->query($sql, $args['record']['identity_id'], $rc->user->ID);
|
$q = $rc->db->query($sql, $args['record']['identity_id'], $rc->user->ID);
|
||||||
$r = $rc->db->fetch_assoc($q);
|
$row = $rc->db->fetch_assoc($q);
|
||||||
if ($r)
|
|
||||||
{
|
|
||||||
foreach ($r as $k => $v)
|
|
||||||
$args['record']['ident_switch.form.' . $k] = $v;
|
|
||||||
|
|
||||||
// Parse flags
|
|
||||||
if ($r['flags'] & self::DB_ENABLED)
|
|
||||||
$args['record']['ident_switch.form.enabled'] = true;
|
|
||||||
if ($r['flags'] & self::DB_SECURE_TLS) // TLS has priority
|
|
||||||
$args['record']['ident_switch.form.secure'] = 'tls';
|
|
||||||
elseif ($r['flags'] & self::DB_SECURE_SSL)
|
|
||||||
$args['record']['ident_switch.form.secure'] = 'ssl';
|
|
||||||
|
|
||||||
// Set readonly if needed
|
|
||||||
$cfg = $this->get_preconfig($args['record']['email']);
|
|
||||||
if (is_array($cfg) && $cfg['readonly'])
|
|
||||||
{
|
|
||||||
$args['record']['ident_switch.form.readonly'] = 1;
|
|
||||||
if (in_array(strtoupper($cfg['user']), array('EMAIL', 'MBOX')))
|
|
||||||
$args['record']['ident_switch.form.readonly'] = 2;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
$this->apply_preconfig($args['record']);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$record = &$args['record'];
|
||||||
|
|
||||||
|
// Load data if exists
|
||||||
|
if ($row)
|
||||||
|
{
|
||||||
|
$dbToForm = array(
|
||||||
|
'label' => 'common.label',
|
||||||
|
'imap_host' => 'imap.host',
|
||||||
|
'imap_port' => 'imap.port',
|
||||||
|
'imap_delimiter' => 'imap.delimiter',
|
||||||
|
'username' => 'imap.username',
|
||||||
|
'password' => 'imap.password',
|
||||||
|
'smtp_host' => 'smtp.host',
|
||||||
|
'smtp_port' => 'smtp.port'
|
||||||
|
|
||||||
|
);
|
||||||
|
foreach ($row as $k => $v)
|
||||||
|
$record['ident_switch.form.' . $dbToForm[$k]] = $v;
|
||||||
|
|
||||||
|
// Parse flags
|
||||||
|
$record['ident_switch.form.common.enabled'] = !!($row['flags'] & self::DB_ENABLED);
|
||||||
|
$record['ident_switch.form.imap.tls'] = !!($row['flags'] & self::DB_SECURE_IMAP_TLS);
|
||||||
|
|
||||||
|
// Set readonly if needed
|
||||||
|
$cfg = $this->get_preconfig($record['email']);
|
||||||
|
if (is_array($cfg) && $cfg['readonly'])
|
||||||
|
{
|
||||||
|
$record['ident_switch.form.common.readonly'] = 1;
|
||||||
|
if (in_array(strtoupper($cfg['user']), array('EMAIL', 'MBOX')))
|
||||||
|
$record['ident_switch.form.common.readonly'] = 2;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
$this->apply_preconfig($record);
|
||||||
|
|
||||||
|
$args['form']['ident_switch.common'] = array(
|
||||||
|
'name' => $this->gettext('form.common.caption'),
|
||||||
|
'content' => ident_switch::get_common_form($record)
|
||||||
|
);
|
||||||
|
$args['form']['ident_switch.imap'] = array(
|
||||||
|
'name' => $this->gettext('form.imap.caption'),
|
||||||
|
'content' => ident_switch::get_imap_form($record)
|
||||||
|
);
|
||||||
|
$args['form']['ident_switch.smtp'] = array(
|
||||||
|
'name' => $this->gettext('form.smtp.caption'),
|
||||||
|
'content' => ident_switch::get_smtp_form($record)
|
||||||
|
);
|
||||||
|
|
||||||
return $args;
|
return $args;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -225,10 +297,9 @@ class ident_switch extends rcube_plugin
|
|||||||
if (strcasecmp($args['record']['email'], $rc->user->data['username']) === 0)
|
if (strcasecmp($args['record']['email'], $rc->user->data['username']) === 0)
|
||||||
return $args;
|
return $args;
|
||||||
|
|
||||||
// Process boolean fields
|
if (!self::get_field_value('common', 'enabled', false))
|
||||||
if (!rcube_utils::get_input_value('_ident_switch_form_enabled', rcube_utils::INPUT_POST))
|
|
||||||
{
|
{
|
||||||
self::sw_imap_off($args['iid']);
|
self::sw_imap_off($args['id']);
|
||||||
return $args;
|
return $args;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -255,8 +326,7 @@ class ident_switch extends rcube_plugin
|
|||||||
if (strcasecmp($args['record']['email'], $rc->user->data['username']) === 0)
|
if (strcasecmp($args['record']['email'], $rc->user->data['username']) === 0)
|
||||||
return $args;
|
return $args;
|
||||||
|
|
||||||
// Process boolean fields
|
if (!self::get_field_value('common', 'enabled', false))
|
||||||
if (!rcube_utils::get_input_value('_ident_switch_form_enabled', rcube_utils::INPUT_POST))
|
|
||||||
return $args;
|
return $args;
|
||||||
|
|
||||||
$data = self::check_field_values();
|
$data = self::check_field_values();
|
||||||
@@ -285,7 +355,7 @@ class ident_switch extends rcube_plugin
|
|||||||
|
|
||||||
unset($_SESSION['createData' . self::MY_POSTFIX]);
|
unset($_SESSION['createData' . self::MY_POSTFIX]);
|
||||||
if (!$data || count($data) == 0)
|
if (!$data || count($data) == 0)
|
||||||
self::write_log('Object with ident_switch values not found in session for ID = ' . $args['id'] . '.');
|
self::write_log("Object with ident_switch values not found in session for ID = {$args['id']}.");
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
$data['id'] = $args['id'];
|
$data['id'] = $args['id'];
|
||||||
@@ -303,7 +373,7 @@ class ident_switch extends rcube_plugin
|
|||||||
$q = $rc->db->query($sql, $args['id'], $rc->user->ID);
|
$q = $rc->db->query($sql, $args['id'], $rc->user->ID);
|
||||||
|
|
||||||
if ($rc->db->affected_rows($q))
|
if ($rc->db->affected_rows($q))
|
||||||
self::write_log('Deleted associated information for identity with ID = ' . $args['id'] . '.');
|
self::write_log("Deleted associated information for identity with ID = {$args['id']}.");
|
||||||
|
|
||||||
return $args;
|
return $args;
|
||||||
}
|
}
|
||||||
@@ -316,44 +386,65 @@ class ident_switch extends rcube_plugin
|
|||||||
if (strcasecmp($_SESSION['username'], $rc->user->data['username']) !== 0)
|
if (strcasecmp($_SESSION['username'], $rc->user->data['username']) !== 0)
|
||||||
{
|
{
|
||||||
if (isset($_SESSION['iid' . self::MY_POSTFIX]))
|
if (isset($_SESSION['iid' . self::MY_POSTFIX]))
|
||||||
$rc->output->add_script('plugin_switchIdent_fixIdent(' . $_SESSION['iid' . self::MY_POSTFIX] . ');', 'docready');
|
{
|
||||||
|
$iid = $_SESSION['iid' . self::MY_POSTFIX];
|
||||||
|
$rc->output->add_script("plugin_switchIdent_fixIdent({$iid});", 'docready');
|
||||||
|
}
|
||||||
else
|
else
|
||||||
self::write_log('Special session variable with active identity ID not found.');
|
self::write_log('Special session variable with active identity ID not found.');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private static function check_field_values()
|
private static function check_field_values()
|
||||||
{
|
{
|
||||||
$retVal = array();
|
$retVal = array();
|
||||||
|
|
||||||
$retVal['label'] = self::ntrim(rcube_utils::get_input_value('_ident_switch_form_label', rcube_utils::INPUT_POST));
|
$retVal['label'] = self::get_field_value('common', 'label');
|
||||||
if (strlen($retVal['label']) > 32)
|
if (strlen($retVal['label']) > 32)
|
||||||
$retVal['err'] = 'label.long';
|
$retVal['err'] = 'label.long';
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
$retVal['host'] = self::ntrim(rcube_utils::get_input_value('_ident_switch_form_host', rcube_utils::INPUT_POST));
|
$retVal['imap.host'] = self::get_field_value('imap', 'host');
|
||||||
if (strlen($retVal['host']) > 64)
|
if (strlen($retVal['imap.host']) > 64)
|
||||||
$retVal['err'] = 'host.long';
|
$retVal['err'] = 'host.long';
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
$retVal['port'] = self::ntrim(rcube_utils::get_input_value('_ident_switch_form_port', rcube_utils::INPUT_POST));
|
$retVal['imap.port'] = self::get_field_value('imap', 'port');
|
||||||
if ($retVal['port'] && !ctype_digit($retVal['port']))
|
if ($retVal['imap.port'] && !ctype_digit($retVal['imap.port']))
|
||||||
$retVal['err'] = 'port.num';
|
$retVal['err'] = 'port.num';
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if ($retVal['port'] && ($retVal['port'] <= 0 || $retVal['port'] > 65535))
|
if ($retVal['imap.port'] && ($retVal['imap.port'] <= 0 || $retVal['imap.port'] > 65535))
|
||||||
$retVal['err'] = 'port.range';
|
$retVal['err'] = 'port.range';
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
$retVal['user'] = self::ntrim(rcube_utils::get_input_value('_ident_switch_form_username', rcube_utils::INPUT_POST));
|
$retVal['imap.delimiter'] = self::get_field_value('imap', 'delimiter');
|
||||||
if (strlen($retVal['user']) > 64)
|
if (strlen($retVal['imap.delimiter']) > 1)
|
||||||
$retVal['err'] = 'user.long';
|
$retVal['err'] = 'delim.long';
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
$retVal['delim'] = self::ntrim(rcube_utils::get_input_value('_ident_switch_form_delimiter', rcube_utils::INPUT_POST));
|
$retVal['imap.user'] = self::get_field_value('imap', 'username');
|
||||||
if (strlen($retVal['delim']) > 1)
|
if (strlen($retVal['imap.user']) > 64)
|
||||||
$retVal['err'] = 'delim.long';
|
$retVal['err'] = 'user.long';
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$retVal['smtp.host'] = self::get_field_value('smtp', 'host');
|
||||||
|
if (strlen($retVal['smtp.host']) > 64)
|
||||||
|
$retVal['err'] = 'host.long';
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$retVal['smtp.port'] = self::get_field_value('smtp', 'port');
|
||||||
|
if ($retVal['smtp.port'] && !ctype_digit($retVal['smtp.port']))
|
||||||
|
$retVal['err'] = 'port.num';
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if ($retVal['smtp.port'] && ($retVal['smtp.port'] <= 0 || $retVal['smtp.port'] > 65535))
|
||||||
|
$retVal['err'] = 'port.range';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -361,19 +452,30 @@ class ident_switch extends rcube_plugin
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Get also password
|
// Get also password
|
||||||
$retVal['pass'] = rcube_utils::get_input_value('_ident_switch_form_password', rcube_utils::INPUT_POST);
|
$retVal['imap.pass'] = self::get_field_value('imap', 'password', false, true);
|
||||||
|
|
||||||
// Parse secure settings
|
// Parse secure settings
|
||||||
$retVal['flags'] = self::DB_ENABLED;
|
$retVal['flags'] = self::DB_ENABLED;
|
||||||
$ssl = rcube_utils::get_input_value('_ident_switch_form_secure', rcube_utils::INPUT_POST);
|
|
||||||
if (strcasecmp($ssl, 'tls') === 0)
|
$tls = self::get_field_value('imap', 'tls', false);
|
||||||
$retVal['flags'] |= self::DB_SECURE_TLS;
|
if ($tls)
|
||||||
elseif (strcasecmp($ssl, 'ssl') === 0)
|
$retVal['flags'] |= self::DB_SECURE_IMAP_TLS;
|
||||||
$retVal['flags'] |= self::DB_SECURE_SSL;
|
|
||||||
|
|
||||||
return $retVal;
|
return $retVal;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static function get_field_value($section, $field, $trim = true, $html = false)
|
||||||
|
{
|
||||||
|
$retVal = rcube_utils::get_input_value(
|
||||||
|
"_ident_switch_form_{$section}_{$field}",
|
||||||
|
rcube_utils::INPUT_POST,
|
||||||
|
$html
|
||||||
|
);
|
||||||
|
if (!$trim)
|
||||||
|
return $retVal;
|
||||||
|
|
||||||
|
return self::ntrim($retVal);
|
||||||
|
}
|
||||||
|
|
||||||
private static function save_field_values($rc, $data)
|
private static function save_field_values($rc, $data)
|
||||||
{
|
{
|
||||||
@@ -384,31 +486,33 @@ class ident_switch extends rcube_plugin
|
|||||||
{ // Record already exists, will update it
|
{ // Record already exists, will update it
|
||||||
$sql = 'UPDATE ' .
|
$sql = 'UPDATE ' .
|
||||||
$rc->db->table_name(self::TABLE) .
|
$rc->db->table_name(self::TABLE) .
|
||||||
' SET flags = ?, label = ?, host = ?, port = ?, username = ?, password = ?, delimiter = ?, user_id = ?, iid = ?' .
|
' SET flags = ?, label = ?, imap_host = ?, imap_port = ?, imap_delimiter = ?, username = ?, password = ?, smtp_host = ?, smtp_port = ?, user_id = ?, iid = ?' .
|
||||||
' WHERE id = ?';
|
' WHERE id = ?';
|
||||||
}
|
}
|
||||||
else if ($data['flags'] & self::DB_ENABLED)
|
else if ($data['flags'] & self::DB_ENABLED)
|
||||||
{ // No record exists, create new one
|
{ // No record exists, create new one
|
||||||
$sql = 'INSERT INTO ' .
|
$sql = 'INSERT INTO ' .
|
||||||
$rc->db->table_name(self::TABLE) .
|
$rc->db->table_name(self::TABLE) .
|
||||||
'(flags, label, host, port, username, password, delimiter, user_id, iid) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)';
|
'(flags, label, imap_host, imap_port, imap_delimiter, username, password, smtp_host, smtp_port, user_id, iid) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)';
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($sql)
|
if ($sql)
|
||||||
{
|
{
|
||||||
// Do we need to update pwd?
|
// Do we need to update pwd?
|
||||||
if ($data['pass'] != $r['password'])
|
if ($data['imap.pass'] != $r['password'])
|
||||||
$data['pass'] = $rc->encrypt($data['pass']);
|
$data['imap.pass'] = $rc->encrypt($data['imap.pass']);
|
||||||
|
|
||||||
$rc->db->query(
|
$rc->db->query(
|
||||||
$sql,
|
$sql,
|
||||||
$data['flags'],
|
$data['flags'],
|
||||||
$data['label'],
|
$data['label'],
|
||||||
$data['host'],
|
$data['imap.host'],
|
||||||
$data['port'],
|
$data['imap.port'],
|
||||||
$data['user'],
|
$data['imap.delimiter'],
|
||||||
$data['pass'],
|
$data['imap.user'],
|
||||||
$data['delim'],
|
$data['imap.pass'],
|
||||||
|
$data['smtp.host'],
|
||||||
|
$data['smtp.port'],
|
||||||
$rc->user->ID,
|
$rc->user->ID,
|
||||||
$data['id'],
|
$data['id'],
|
||||||
$r['id']
|
$r['id']
|
||||||
@@ -447,7 +551,7 @@ class ident_switch extends rcube_plugin
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
$sql = 'SELECT host, flags, port, username, password, iid FROM ' . $rc->db->table_name(self::TABLE) . ' WHERE id = ? AND user_id = ?';
|
$sql = 'SELECT imap_host, flags, imap_port, imap_delimiter, username, password, iid FROM ' . $rc->db->table_name(self::TABLE) . ' WHERE id = ? AND user_id = ?';
|
||||||
$q = $rc->db->query($sql, $identId ,$rc->user->ID);
|
$q = $rc->db->query($sql, $identId ,$rc->user->ID);
|
||||||
$r = $rc->db->fetch_assoc($q);
|
$r = $rc->db->fetch_assoc($q);
|
||||||
if (is_array($r))
|
if (is_array($r))
|
||||||
@@ -461,45 +565,50 @@ class ident_switch extends rcube_plugin
|
|||||||
$r['username'] = $rIid['email'];
|
$r['username'] = $rIid['email'];
|
||||||
}
|
}
|
||||||
|
|
||||||
self::write_log('Switching mailbox to one for identity with ID = ' . $r['iid'] . ' (username = \'' . $r['username'] . '\').');
|
self::write_log("Switching mailbox to one for identity with ID = {$r['iid']} (username = '{$r['username']}').");
|
||||||
|
|
||||||
$def_port = 143; // Default port here!
|
|
||||||
$ssl = null;
|
|
||||||
if ($r['flags'] & self::DB_SECURE_TLS)
|
|
||||||
{
|
|
||||||
$ssl = 'tls';
|
|
||||||
$def_port = 143; // Default TLS port here!
|
|
||||||
}
|
|
||||||
elseif ($r['flags'] & self::DB_SECURE_SSL)
|
|
||||||
{
|
|
||||||
$ssl = 'ssl';
|
|
||||||
$def_port = 993; // Default SSL port here!
|
|
||||||
}
|
|
||||||
|
|
||||||
$port = $r['port'];
|
|
||||||
if (!$port)
|
|
||||||
$port = $def_port;
|
|
||||||
|
|
||||||
// If we are in default account now
|
|
||||||
// save everything with STORAGE
|
|
||||||
if ($_SESSION['username'] == $rc->user->data['username'])
|
if ($_SESSION['username'] == $rc->user->data['username'])
|
||||||
{
|
{ // If we are in default account now - save values
|
||||||
foreach ($_SESSION as $k => $v)
|
foreach ($_SESSION as $k => $v)
|
||||||
{
|
{
|
||||||
if (strncasecmp($k, 'storage', 7) === 0 && substr_compare($k, self::MY_POSTFIX, -$my_postfix_len, $my_postfix_len) !== 0)
|
if (strncasecmp($k, 'storage', 7) === 0 && substr_compare($k, self::MY_POSTFIX, -$my_postfix_len, $my_postfix_len) !== 0)
|
||||||
{
|
{
|
||||||
if (!$_SESSION[$k . self::MY_POSTFIX])
|
if (!$_SESSION[$k . self::MY_POSTFIX])
|
||||||
$_SESSION[$k . self::MY_POSTFIX] = $_SESSION[$k];
|
$_SESSION[$k . self::MY_POSTFIX] = $_SESSION[$k];
|
||||||
$rc->session->remove($k);
|
|
||||||
|
$rc->session->remove($k);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
if (!$_SESSION['password' . self::MY_POSTFIX])
|
|
||||||
$_SESSION['password' . self::MY_POSTFIX] = $_SESSION['password'];
|
|
||||||
|
|
||||||
$_SESSION['storage_host'] = $r['host'] ? $r['host'] : 'localhost'; // Default host here!
|
$moreToSave = Array('password', 'imap_delimiter');
|
||||||
|
foreach ($moreToSave as $k)
|
||||||
|
{
|
||||||
|
if (!$_SESSION[$k . self::MY_POSTFIX])
|
||||||
|
$_SESSION[$k . self::MY_POSTFIX] = $_SESSION[$k];
|
||||||
|
|
||||||
|
$rc->session->remove($k);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$def_port = 143; // Default IMAP port here!
|
||||||
|
$ssl = null;
|
||||||
|
if ($r['flags'] & self::DB_SECURE_IMAP_TLS)
|
||||||
|
{
|
||||||
|
$ssl = 'tls';
|
||||||
|
$def_port = 143; // Default IMAP TLS port here!
|
||||||
|
}
|
||||||
|
$port = $r['imap_port'] ? $r['imap_port'] : $def_port;
|
||||||
|
|
||||||
|
$host = $r['imap_host'] ? $r['imap_host'] : 'localhost'; // Default IMAP host here!
|
||||||
|
if ($ssl)
|
||||||
|
$host = "{$ssl}://{$host}";
|
||||||
|
|
||||||
|
$delimiter = $r['delimiter'] ? $r['delimiter'] : '.'; // Default delimiter here
|
||||||
|
|
||||||
|
$_SESSION['storage_host'] = $host;
|
||||||
$_SESSION['storage_ssl'] = $ssl;
|
$_SESSION['storage_ssl'] = $ssl;
|
||||||
$_SESSION['storage_port'] = $port;
|
$_SESSION['storage_port'] = $port;
|
||||||
|
$_SESSION['imap_delimiter'] = $delimiter;
|
||||||
$_SESSION['username'] = $r['username'];
|
$_SESSION['username'] = $r['username'];
|
||||||
$_SESSION['password'] = $r['password'];
|
$_SESSION['password'] = $r['password'];
|
||||||
$_SESSION['iid' . self::MY_POSTFIX] = $r['iid'];
|
$_SESSION['iid' . self::MY_POSTFIX] = $r['iid'];
|
||||||
@@ -509,7 +618,7 @@ class ident_switch extends rcube_plugin
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
// TODO: Show message in browser
|
// TODO: Show message in browser
|
||||||
self::write_log('Requested remote mailbox with ID = ' . $identId . ' not found.');
|
self::write_log("Requested remote mailbox with ID = {$identId} not found.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -525,7 +634,7 @@ class ident_switch extends rcube_plugin
|
|||||||
private static function sw_imap_off($iid)
|
private static function sw_imap_off($iid)
|
||||||
{
|
{
|
||||||
$rc = rcmail::get_instance();
|
$rc = rcmail::get_instance();
|
||||||
|
|
||||||
$sql = 'UPDATE ' . $rc->db->table_name(self::TABLE) . ' SET flags = flags & ? WHERE iid = ? AND user_id = ?';
|
$sql = 'UPDATE ' . $rc->db->table_name(self::TABLE) . ' SET flags = flags & ? WHERE iid = ? AND user_id = ?';
|
||||||
$rc->db->query($sql, ~self::DB_ENABLED, $iid, $rc->user->ID);
|
$rc->db->query($sql, ~self::DB_ENABLED, $iid, $rc->user->ID);
|
||||||
}
|
}
|
||||||
@@ -555,21 +664,19 @@ class ident_switch extends rcube_plugin
|
|||||||
$cfg = $this->get_preconfig($email);
|
$cfg = $this->get_preconfig($email);
|
||||||
if (is_array($cfg))
|
if (is_array($cfg))
|
||||||
{
|
{
|
||||||
self::write_log('Applying predefined configuration for \'' . $email . '\'.');
|
self::write_log("Applying predefined configuration for '{$email}'.");
|
||||||
|
|
||||||
if ($cfg['host'])
|
if ($cfg['host'])
|
||||||
{ // Parse and set host and related
|
{ // Parse and set host and related
|
||||||
$urlArr = parse_url($cfg['host']);
|
$urlArr = parse_url($cfg['host']);
|
||||||
|
|
||||||
$record['ident_switch.form.host'] = $urlArr['host'] ? rcube::Q($urlArr['host'], 'url') : '';
|
$record['ident_switch.form.imap.host'] = $record['ident_switch.form.smtp.host'] = $urlArr['host'] ? rcube::Q($urlArr['host'], 'url') : '';
|
||||||
$record['ident_switch.form.port'] = $urlArr['port'] ? intval($urlArr['port']) : '';
|
$record['ident_switch.form.imap.port'] = $record['ident_switch.form.smtp.port'] = $urlArr['port'] ? intval($urlArr['port']) : '';
|
||||||
|
|
||||||
if (strcasecmp('tls', $urlArr['scheme']) === 0)
|
if (strcasecmp('tls', $urlArr['scheme']) === 0)
|
||||||
$record['ident_switch.form.secure'] = 'tls';
|
$record['ident_switch.form.imap.tls'] = true;
|
||||||
elseif (strcasecmp('ssl', $urlArr['scheme']) === 0)
|
|
||||||
$record['ident_switch.form.secure'] = 'ssl';
|
|
||||||
else
|
else
|
||||||
$record['ident_switch.form.secure'] = '';
|
$record['ident_switch.form.imap.rls'] = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
$loginSet = false;
|
$loginSet = false;
|
||||||
@@ -578,11 +685,11 @@ class ident_switch extends rcube_plugin
|
|||||||
switch (strtoupper($cfg['user']))
|
switch (strtoupper($cfg['user']))
|
||||||
{
|
{
|
||||||
case 'EMAIL':
|
case 'EMAIL':
|
||||||
$record['ident_switch.form.username'] = $email;
|
$record['ident_switch.form.imap.username'] = $email;
|
||||||
$loginSet = true;
|
$loginSet = true;
|
||||||
break;
|
break;
|
||||||
case 'MBOX':
|
case 'MBOX':
|
||||||
$record['ident_switch.form.username'] = strstr($email, '@', true);
|
$record['ident_switch.form.imap.username'] = strstr($email, '@', true);
|
||||||
$loginSet = true;
|
$loginSet = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -590,13 +697,15 @@ class ident_switch extends rcube_plugin
|
|||||||
|
|
||||||
if ($cfg['readonly'])
|
if ($cfg['readonly'])
|
||||||
{
|
{
|
||||||
$record['ident_switch.form.readonly'] = 1;
|
$record['ident_switch.form.common.readonly'] = 1;
|
||||||
if ($loginSet)
|
if ($loginSet)
|
||||||
$record['ident_switch.form.readonly'] = 2;
|
$record['ident_switch.form.common.readonly'] = 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
return $cfg['readonly'];
|
return $cfg['readonly'];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static function ntrim($str)
|
private static function ntrim($str)
|
||||||
|
|||||||
@@ -4,47 +4,64 @@
|
|||||||
*/
|
*/
|
||||||
$labels = array();
|
$labels = array();
|
||||||
|
|
||||||
// IMAP
|
// Plugin ident_switch
|
||||||
$labels['form.caption'] = 'IMAP';
|
$labels['form.common.caption'] = 'Plugin ident_switch';
|
||||||
|
|
||||||
// Enabled
|
// Enabled
|
||||||
$labels['form.enabled'] = 'Aktiviert';
|
$labels['form.common.enabled'] = 'Aktiviert';
|
||||||
|
|
||||||
// Label
|
// Label
|
||||||
$labels['form.label'] = 'Bezeichnung';
|
$labels['form.common.label'] = 'Bezeichnung';
|
||||||
|
|
||||||
|
// Value in \'Label\' field is too long (32 chars max).
|
||||||
|
$labels['err.label.long'] = 'Der Wert in Feld \'Bezeichnung\' ist zu lang (max. 32 Zeichen).';
|
||||||
|
|
||||||
|
|
||||||
|
// IMAP
|
||||||
|
$labels['form.imap.caption'] = 'IMAP';
|
||||||
|
|
||||||
// Server host name
|
// Server host name
|
||||||
$labels['form.host']='Servername';
|
$labels['form.imap.host'] = 'Servername';
|
||||||
|
|
||||||
// Secure connection (SSL/TLS)
|
// Secure connection (TLS)
|
||||||
$labels['form.secure']='Verbindungssicherheit';
|
$labels['form.imap.tls'] = 'Sichere Verbindung (TLS)';
|
||||||
|
|
||||||
// Port
|
// Port
|
||||||
$labels['form.port']='Port';
|
$labels['form.imap.port'] = 'Port';
|
||||||
|
|
||||||
// Username
|
// Username
|
||||||
$labels['form.username'] = 'Benutzername';
|
$labels['form.imap.username'] = 'Benutzername';
|
||||||
|
|
||||||
// Password
|
// Password
|
||||||
$labels['form.password'] = 'Passwort';
|
$labels['form.imap.password'] = 'Passwort';
|
||||||
|
|
||||||
// Folder hierarchy delimiter
|
// Value in \'Username\' field is too long (64 chars max).
|
||||||
$labels['form.delimiter'] = 'Hierachietrennzeichen für Verzeichnisse';
|
$labels['err.user.long'] = 'Der Wert in Feld \'Benutzername\' ist zu lang (max. 64 Zeichen).';
|
||||||
|
|
||||||
// Value in \'Label\' field of IMAP section is too long (32 chars max).
|
|
||||||
$labels['err.label.long'] = 'Der Wert in Feld \'Bezeichnung\' im Abschnitt IMAP ist zu lang (max. 32 Zeichen).';
|
|
||||||
|
|
||||||
// Value in \'Server host name\' field of IMAP section is too long (64 chars max).
|
// SMTP
|
||||||
$labels['err.host.long'] = 'Der Wert in Feld \'Servername\' im Abschnitt IMAP ist zu lang (max. 64 Zeichen).';
|
$labels['form.smtp.caption'] = 'SMTP';
|
||||||
|
|
||||||
// Value in \'Username\' field of IMAP section is too long (64 chars max).
|
// Server host name
|
||||||
$labels['err.user.long'] = 'Der Wert in Feld \'Benutzername\' im Abschnitt IMAP ist zu lang (max. 64 Zeichen).';
|
$labels['form.smtp.host'] = 'Servername';
|
||||||
|
|
||||||
// Value in \'Folder hierarchy delimiter\' field of IMAP section is too long (1 char max).
|
// Secure connection (TLS)
|
||||||
$labels['err.delim.long'] = 'Der Wert in Feld \'Hierachietrennzeichen für Verzeichnisse\' im Abschnitt IMAP ist zu lang (max. 1 Zeichen).';
|
$labels['form.smtp.tls'] = 'Sichere Verbindung (TLS)';
|
||||||
|
|
||||||
// Value in \'Port\' field of IMAP section must be a number.
|
// Port
|
||||||
$labels['err.port.num'] = 'Der Wert in Feld \'Port\' im Abschnitt IMAP muss eine Zahl sein.';
|
$labels['form.smtp.port'] = 'Port';
|
||||||
|
|
||||||
// Value in \'Port\' field of IMAP section must be between 1 and 65535.
|
// Authorization required
|
||||||
$labels['err.port.range'] = 'Der Wert in Feld \'Port\' im Abschnitt IMAP muss 1 und 65535 liegen.';
|
$labels['form.smtp.auth'] = 'Genehmigung benötigt';
|
||||||
|
|
||||||
|
|
||||||
|
// Errors
|
||||||
|
|
||||||
|
// Value in \'Server host name\' field is too long (64 chars max).
|
||||||
|
$labels['err.host.long'] = 'Der Wert in Feld \'Servername\' ist zu lang (max. 64 Zeichen).';
|
||||||
|
|
||||||
|
// Value in \'Port\' field must be a number.
|
||||||
|
$labels['err.port.num'] = 'Der Wert in Feld \'Port\' muss eine Zahl sein.';
|
||||||
|
|
||||||
|
// Value in \'Port\' field must be between 1 and 65535.
|
||||||
|
$labels['err.port.range'] = 'Der Wert in Feld \'Port\' muss zwischen 1 und 65535 liegen.';
|
||||||
|
|||||||
@@ -4,47 +4,67 @@
|
|||||||
*/
|
*/
|
||||||
$labels = array();
|
$labels = array();
|
||||||
|
|
||||||
// IMAP
|
// Plugin ident_switch
|
||||||
$labels['form.caption'] = 'IMAP';
|
$labels['form.common.caption'] = 'Plugin ident_switch';
|
||||||
|
|
||||||
// Enabled
|
// Enabled
|
||||||
$labels['form.enabled'] = 'Enabled';
|
$labels['form.common.enabled'] = 'Enabled';
|
||||||
|
|
||||||
// Label
|
// Label
|
||||||
$labels['form.label'] = 'Label';
|
$labels['form.common.label'] = 'Label';
|
||||||
|
|
||||||
|
// Value in \'Label\' field is too long (32 chars max).
|
||||||
|
$labels['err.label.long'] = 'Value in \'Label\' field is too long (32 chars max).';
|
||||||
|
|
||||||
|
|
||||||
|
// IMAP
|
||||||
|
$labels['form.imap.caption'] = 'IMAP';
|
||||||
|
|
||||||
// Server host name
|
// Server host name
|
||||||
$labels['form.host']='Server host name';
|
$labels['form.imap.host'] = 'Server host name';
|
||||||
|
|
||||||
// Secure connection (SSL/TLS)
|
// Secure connection (TLS)
|
||||||
$labels['form.secure']='Connection security';
|
$labels['form.imap.tls'] = 'Secure connection (TLS)';
|
||||||
|
|
||||||
// Port
|
// Port
|
||||||
$labels['form.port']='Port';
|
$labels['form.imap.port'] = 'Port';
|
||||||
|
|
||||||
// Username
|
|
||||||
$labels['form.username'] = 'Username';
|
|
||||||
|
|
||||||
// Password
|
|
||||||
$labels['form.password'] = 'Password';
|
|
||||||
|
|
||||||
// Folder hierarchy delimiter
|
// Folder hierarchy delimiter
|
||||||
$labels['form.delimiter'] = 'Folder hierarchy delimiter';
|
$labels['form.delimiter'] = 'Folder hierarchy delimiter';
|
||||||
|
|
||||||
// Value in \'Label\' field of IMAP section is too long (32 chars max).
|
// Username
|
||||||
$labels['err.label.long'] = 'Value in \'Label\' field of IMAP section is too long (32 chars max).';
|
$labels['form.imap.username'] = 'Username';
|
||||||
|
|
||||||
// Value in \'Server host name\' field of IMAP section is too long (64 chars max).
|
// Password
|
||||||
$labels['err.host.long'] = 'Value in \'Server host name\' field of IMAP section is too long (64 chars max).';
|
$labels['form.imap.password'] = 'Password';
|
||||||
|
|
||||||
// Value in \'Username\' field of IMAP section is too long (64 chars max).
|
// Value in \'Username\' field is too long (64 chars max).
|
||||||
$labels['err.user.long'] = 'Value in \'Username\' field of IMAP section is too long (64 chars max).';
|
$labels['err.user.long'] = 'Value in \'Username\' field is too long (64 chars max).';
|
||||||
|
|
||||||
// Value in \'Folder hierarchy delimiter\' field of IMAP section is too long (1 char max).
|
|
||||||
$labels['err.delim.long'] = 'Value in \'Folder hierarchy delimiter\' field of IMAP section is too long (1 char max).';
|
|
||||||
|
|
||||||
// Value in \'Port\' field of IMAP section must be a number.
|
// SMTP
|
||||||
$labels['err.port.num'] = 'Value in \'Port\' field of IMAP section must be a number.';
|
$labels['form.smtp.caption'] = 'SMTP';
|
||||||
|
|
||||||
// Value in \'Port\' field of IMAP section must be between 1 and 65535.
|
// Server host name
|
||||||
$labels['err.port.range'] = 'Value in \'Port\' field of IMAP section must be between 1 and 65535.';
|
$labels['form.smtp.host'] = 'Server host name';
|
||||||
|
|
||||||
|
// Secure connection (TLS)
|
||||||
|
$labels['form.smtp.tls'] = 'Secure connection (TLS)';
|
||||||
|
|
||||||
|
// Port
|
||||||
|
$labels['form.smtp.port'] = 'Port';
|
||||||
|
|
||||||
|
// Authorization required
|
||||||
|
$labels['form.smtp.auth'] = 'Authorization required';
|
||||||
|
|
||||||
|
|
||||||
|
// Errors
|
||||||
|
|
||||||
|
// Value in \'Server host name\' field is too long (64 chars max).
|
||||||
|
$labels['err.host.long'] = 'Value in \'Server host name\' field is too long (64 chars max).';
|
||||||
|
|
||||||
|
// Value in \'Port\' field must be a number.
|
||||||
|
$labels['err.port.num'] = 'Value in \'Port\' field must be a number.';
|
||||||
|
|
||||||
|
// Value in \'Port\' field must be between 1 and 65535.
|
||||||
|
$labels['err.port.range'] = 'Value in \'Port\' field must be between 1 and 65535.';
|
||||||
|
|||||||
@@ -4,47 +4,64 @@
|
|||||||
*/
|
*/
|
||||||
$labels = array();
|
$labels = array();
|
||||||
|
|
||||||
// IMAP
|
// Plugin ident_switch
|
||||||
$labels['form.caption'] = 'IMAP';
|
$labels['form.common.caption'] = 'Plugin ident_switch';
|
||||||
|
|
||||||
// Enabled
|
// Enabled
|
||||||
$labels['form.enabled'] = 'Activé';
|
$labels['form.common.enabled'] = 'Activer';
|
||||||
|
|
||||||
// Label
|
// Label
|
||||||
$labels['form.label'] = 'Nom d\'affichage';
|
$labels['form.common.label'] = 'Nom à afficher';
|
||||||
|
|
||||||
|
// Value in \'Label\' field is too long (32 chars max).
|
||||||
|
$labels['err.label.long'] = 'La valeur du champ \'Nom à afficher\' est trop longue (32 caractères max).';
|
||||||
|
|
||||||
|
|
||||||
|
// IMAP
|
||||||
|
$labels['form.imap.caption'] = 'IMAP';
|
||||||
|
|
||||||
// Server host name
|
// Server host name
|
||||||
$labels['form.host']='Nom d\'hôte du serveur';
|
$labels['form.imap.host'] = 'Serveur';
|
||||||
|
|
||||||
// Secure connection (SSL/TLS)
|
// Secure connection (TLS)
|
||||||
$labels['form.secure']='Sécurité de la connexion';
|
$labels['form.imap.tls'] = 'Connexion sécurisée (TLS)';
|
||||||
|
|
||||||
// Port
|
// Port
|
||||||
$labels['form.port']='Port';
|
$labels['form.imap.port'] = 'Port';
|
||||||
|
|
||||||
// Username
|
// Username
|
||||||
$labels['form.username'] = 'Nom d\'utilisateur';
|
$labels['form.imap.username'] = 'Nom d\'utilisateur';
|
||||||
|
|
||||||
// Password
|
// Password
|
||||||
$labels['form.password'] = 'Mot de passe';
|
$labels['form.imap.password'] = 'Mot de passe';
|
||||||
|
|
||||||
// Folder hierarchy delimiter
|
|
||||||
$labels['form.delimiter'] = 'Délimiteur de la hiérarchie des dossiers';
|
|
||||||
|
|
||||||
// Value in \'Label\' field of IMAP section is too long (32 chars max).
|
|
||||||
$labels['err.label.long'] = 'La valeur du champ \'Nom d\'affichage\' de la section IMAP est trop longue (32 car. max).';
|
|
||||||
|
|
||||||
// Value in \'Server host name\' field of IMAP section is too long (64 chars max).
|
|
||||||
$labels['err.host.long'] = 'La valeur du champ \'Nom d\'hôte du serveur\' de la section IMAP est trop longue (64 car. max).';
|
|
||||||
|
|
||||||
// Value in \'Username\' field of IMAP section is too long (64 chars max).
|
// Value in \'Username\' field of IMAP section is too long (64 chars max).
|
||||||
$labels['err.user.long'] = 'La valeur du champ \'Nom d\'utilisateur\' de la section IMAP est trop longue (64 car. max).';
|
$labels['err.user.long'] = 'La valeur du champ \'Nom d\'utilisateur\' de la section IMAP est trop longue (64 caractères max).';
|
||||||
|
|
||||||
// Value in \'Folder hierarchy delimiter\' field of IMAP section is too long (1 char max).
|
|
||||||
$labels['err.delim.long'] = 'La valeur du champ \'Délimiteur de la hiérarchie des dossiers\' de la section IMAP est trop longue (1 car. max).';
|
|
||||||
|
|
||||||
// Value in \'Port\' field of IMAP section must be a number.
|
// SMTP
|
||||||
$labels['err.port.num'] = 'La valeur du champ \'Port\' de la section IMAP doit être un nombre.';
|
$labels['form.smtp.caption'] = 'SMTP';
|
||||||
|
|
||||||
// Value in \'Port\' field of IMAP section must be between 1 and 65535.
|
// Server host name
|
||||||
$labels['err.port.range'] = 'La valeur du champ \'Port\' de la section IMAP doit être comprise entre 1 et 65535.';
|
$labels['form.smtp.host'] = 'Serveur';
|
||||||
|
|
||||||
|
// Secure connection (TLS)
|
||||||
|
$labels['form.smtp.tls'] = 'Connexion sécurisée (TLS)';
|
||||||
|
|
||||||
|
// Port
|
||||||
|
$labels['form.smtp.port'] = 'Port';
|
||||||
|
|
||||||
|
// Authorization required
|
||||||
|
$labels['form.smtp.auth'] = 'Autorisation requise';
|
||||||
|
|
||||||
|
|
||||||
|
// Errors
|
||||||
|
|
||||||
|
// Value in \'Server host name\' field is too long (64 chars max).
|
||||||
|
$labels['err.host.long'] = 'La valeur du champ \'Serveur\' est trop longue (64 caractères max).';
|
||||||
|
|
||||||
|
// Value in \'Port\' field must be a number.
|
||||||
|
$labels['err.port.num'] = 'La valeur du champ \'Port\' doit être un nombre.';
|
||||||
|
|
||||||
|
// Value in \'Port\' field must be between 1 and 65535.
|
||||||
|
$labels['err.port.range'] = 'La valeur du champ \'Port\' doit être comprise entre 1 et 65535.';
|
||||||
|
|||||||
@@ -4,47 +4,67 @@
|
|||||||
*/
|
*/
|
||||||
$labels = array();
|
$labels = array();
|
||||||
|
|
||||||
// IMAP
|
// Plugin ident_switch
|
||||||
$labels['form.caption'] = 'IMAP';
|
$labels['form.common.caption'] = 'Плагин ident_switch';
|
||||||
|
|
||||||
// Enabled
|
// Enabled
|
||||||
$labels['form.enabled'] = 'Включено';
|
$labels['form.common.enabled'] = 'Включено';
|
||||||
|
|
||||||
// Label
|
// Label
|
||||||
$labels['form.label'] = 'Название';
|
$labels['form.common.label'] = 'Название';
|
||||||
|
|
||||||
|
// Value in \'Label\' field is too long (32 chars max).
|
||||||
|
$labels['err.label.long'] = '\'Название\' должно быть не длинее 32 символов.';
|
||||||
|
|
||||||
|
|
||||||
|
// IMAP
|
||||||
|
$labels['form.imap.caption'] = 'IMAP';
|
||||||
|
|
||||||
// Server host name
|
// Server host name
|
||||||
$labels['form.host'] = 'Адрес сервера';
|
$labels['form.imap.host'] = 'Адрес сервера';
|
||||||
|
|
||||||
// Secure connection (SSL/TLS)
|
// Secure connection (TLS)
|
||||||
$labels['form.secure'] = 'Защита подключения';
|
$labels['form.imap.tls'] = 'Безопасное подключение (TLS)';
|
||||||
|
|
||||||
// Port
|
// Port
|
||||||
$labels['form.port'] = 'Порт';
|
$labels['form.imap.port'] = 'Порт';
|
||||||
|
|
||||||
// Username
|
|
||||||
$labels['form.username'] = 'Имя пользователя';
|
|
||||||
|
|
||||||
// Password
|
|
||||||
$labels['form.password'] = 'Пароль';
|
|
||||||
|
|
||||||
// Folder hierarchy delimiter
|
// Folder hierarchy delimiter
|
||||||
$labels['form.delimiter'] = 'Разделитель в иерархии папок';
|
$labels['form.delimiter'] = 'Разделитель в иерархии папок';
|
||||||
|
|
||||||
// Value in \'Label\' field of IMAP section is too long (32 chars max).
|
// Username
|
||||||
$labels['err.label.long'] = '\'Название\' в разделе IMAP должно быть не длинее 32 символов.';
|
$labels['form.imap.username'] = 'Имя пользователя';
|
||||||
|
|
||||||
// Value in \'Server host name\' field of IMAP section is too long (64 chars max).
|
// Password
|
||||||
$labels['err.host.long'] = '\'Адрес сервера\' в разделе IMAP должен быть не длинее 64 символов.';
|
$labels['form.imap.password'] = 'Пароль';
|
||||||
|
|
||||||
// Value in \'Username\' field of IMAP section is too long (64 chars max).
|
// Value in \'Username\' field is too long (64 chars max).
|
||||||
$labels['err.user.long'] = '\'Имя пользователя\' в секции IMAP должно быть не длинее 64 символов.';
|
$labels['err.user.long'] = '\'Имя пользователя\' должно быть не длинее 64 символов.';
|
||||||
|
|
||||||
// Value in \'Folder hierarchy delimiter\' field of IMAP section is too long (1 char max).
|
|
||||||
$labels['err.delim.long'] = '\'Разделитель в иерархии папок\' в секции IMAP должен быть не длинее 1 символа.';
|
|
||||||
|
|
||||||
// Value in \'Port\' field of IMAP section must be a number.
|
// SMTP
|
||||||
$labels['err.port.num'] = '\'Порт\' в секции IMAP должен быть числом.';
|
$labels['form.smtp.caption'] = 'SMTP';
|
||||||
|
|
||||||
// Value in \'Port\' field of IMAP section must be between 1 and 65535.
|
// Server host name
|
||||||
$labels['err.port.range'] = '\'Порт\' в секции IMAP должен быть в диапазоне от 1 до 65535.';
|
$labels['form.smtp.host'] = 'Адрес сервера';
|
||||||
|
|
||||||
|
// Secure connection (TLS)
|
||||||
|
$labels['form.smtp.tls'] = 'Безопасное подключение (TLS)';
|
||||||
|
|
||||||
|
// Port
|
||||||
|
$labels['form.smtp.port'] = 'Порт';
|
||||||
|
|
||||||
|
// Authorization required
|
||||||
|
$labels['form.smtp.auth'] = 'Требуется авторизация';
|
||||||
|
|
||||||
|
|
||||||
|
// Errors
|
||||||
|
|
||||||
|
// Value in \'Server host name\' field is too long (64 chars max).
|
||||||
|
$labels['err.host.long'] = '\'Адрес сервера\' должен быть не длинее 64 символов.';
|
||||||
|
|
||||||
|
// Value in \'Port\' field must be a number.
|
||||||
|
$labels['err.port.num'] = '\'Порт\' должен быть числом.';
|
||||||
|
|
||||||
|
// Value in \'Port\' field must be between 1 and 65535.
|
||||||
|
$labels['err.port.range'] = '\'Порт\' должен быть в диапазоне от 1 до 65535.';
|
||||||
Reference in New Issue
Block a user