diff options
Diffstat (limited to 'plugins/acl')
-rw-r--r-- | plugins/acl/acl.js | 58 | ||||
-rw-r--r-- | plugins/acl/acl.php | 59 | ||||
-rw-r--r-- | plugins/acl/composer.json | 2 | ||||
-rw-r--r-- | plugins/acl/config.inc.php.dist | 9 | ||||
-rw-r--r-- | plugins/acl/localization/ast.inc | 80 | ||||
-rw-r--r-- | plugins/acl/localization/bs_BA.inc | 10 | ||||
-rw-r--r-- | plugins/acl/localization/en_CA.inc | 5 | ||||
-rw-r--r-- | plugins/acl/localization/en_US.inc | 5 | ||||
-rw-r--r-- | plugins/acl/localization/et_EE.inc | 20 | ||||
-rw-r--r-- | plugins/acl/localization/fi_FI.inc | 12 | ||||
-rw-r--r-- | plugins/acl/localization/it_IT.inc | 4 | ||||
-rw-r--r-- | plugins/acl/localization/pt_PT.inc | 4 | ||||
-rw-r--r-- | plugins/acl/package.xml | 4 | ||||
-rw-r--r-- | plugins/acl/skins/larry/acl.css | 17 | ||||
-rw-r--r-- | plugins/acl/skins/larry/templates/table.html | 19 |
15 files changed, 240 insertions, 68 deletions
diff --git a/plugins/acl/acl.js b/plugins/acl/acl.js index acea60a4c..e59ac72a2 100644 --- a/plugins/acl/acl.js +++ b/plugins/acl/acl.js @@ -24,11 +24,7 @@ if (window.rcmail) { if (e.field.id != 'acluser') return; - var value = e.insert; - // get UID from the entry value - if (value.match(/\s*\(([^)]+)\)[, ]*$/)) - value = RegExp.$1; - e.field.value = value; + e.field.value = e.insert.replace(/[ ,;]+$/, ''); }); } } @@ -140,15 +136,16 @@ rcube_webmail.prototype.acl_mode_switch = function(elem) rcube_webmail.prototype.acl_list_init = function() { var method = this.env.acl_advanced ? 'addClass' : 'removeClass'; + $('#acl-switch')[method]('selected'); $(this.gui_objects.acltable)[method]('advanced'); this.acl_list = new rcube_list_widget(this.gui_objects.acltable, - {multiselect:true, draggable:false, keyboard:true, toggleselect:true}); - this.acl_list.addEventListener('select', function(o) { rcmail.acl_list_select(o); }); - this.acl_list.addEventListener('dblclick', function(o) { rcmail.acl_list_dblclick(o); }); - this.acl_list.addEventListener('keypress', function(o) { rcmail.acl_list_keypress(o); }); - this.acl_list.init(); + {multiselect: true, draggable: false, keyboard: true}); + this.acl_list.addEventListener('select', function(o) { rcmail.acl_list_select(o); }) + .addEventListener('dblclick', function(o) { rcmail.acl_list_dblclick(o); }) + .addEventListener('keypress', function(o) { rcmail.acl_list_keypress(o); }) + .init(); } // ACL table row selection handler @@ -228,16 +225,23 @@ rcube_webmail.prototype.acl_add_row = function(o, sel) row = $('thead > tr', table).clone(); // Update new row - $('td', row).map(function() { - var r, cl = this.className.replace(/^acl/, ''); + $('th', row).map(function() { + var td = $('<td>'), + title = $(this).attr('title'), + cl = this.className.replace(/^acl/, ''); + + if (title) + td.attr('title', title); if (items && items[cl]) cl = items[cl]; if (cl == 'user') - $(this).text(o.username); + td.addClass(cl).append($('<a>').text(o.username)); else - $(this).addClass(rcmail.acl_class(o.acl, cl)).text(''); + td.addClass(this.className + ' ' + rcmail.acl_class(o.acl, cl)).text(''); + + $(this).replaceWith(td); }); row.attr('id', 'rcmrow'+id); @@ -281,10 +285,10 @@ rcube_webmail.prototype.acl_init_form = function(id) { var ul, row, td, val = '', type = 'user', li_elements, body = $('body'), adv_ul = $('#advancedrights'), sim_ul = $('#simplerights'), - name_input = $('#acluser'); + name_input = $('#acluser'), type_list = $('#usertype'); if (!this.acl_form) { - var fn = function () { $('input[value=user]').prop('checked', true); }; + var fn = function () { $('input[value="user"]').prop('checked', true); }; name_input.click(fn).keypress(fn); } @@ -329,23 +333,24 @@ rcube_webmail.prototype.acl_init_form = function(id) this.acl_id = id; - var me = this, inst = window.rcmail, body = document.body; - var buttons = {}; - buttons[rcmail.gettext('save')] = function(e) { inst.command('acl-save'); }; - buttons[rcmail.gettext('cancel')] = function(e) { inst.command('acl-cancel'); }; + var buttons = {}, me = this, body = document.body; + + buttons[this.gettext('save')] = function(e) { me.command('acl-save'); }; + buttons[this.gettext('cancel')] = function(e) { me.command('acl-cancel'); }; // display it as popup - this.acl_popup = rcmail.show_popup_dialog( + this.acl_popup = this.show_popup_dialog( '<div style="width:480px;height:280px"> </div>', - id ? rcmail.gettext('acl.editperms') : rcmail.gettext('acl.newuser'), + id ? this.gettext('acl.editperms') : this.gettext('acl.newuser'), buttons, { modal: true, - closeOnEscape: false, + closeOnEscape: true, close: function(e, ui) { - (rcmail.is_framed() ? parent.rcmail : rcmail).ksearch_hide(); + (me.is_framed() ? parent.rcmail : me).ksearch_hide(); me.acl_form.appendTo(body).hide(); $(this).remove(); + window.focus(); // focus iframe } } ); @@ -354,9 +359,8 @@ rcube_webmail.prototype.acl_init_form = function(id) if (type == 'user') name_input.focus(); - - // unfocus the list, make backspace key in name input field working - this.acl_list.blur(); + else + $('input:checked', type_list).focus(); } // Returns class name according to ACL comparision result diff --git a/plugins/acl/acl.php b/plugins/acl/acl.php index d7e50f978..33bd91e22 100644 --- a/plugins/acl/acl.php +++ b/plugins/acl/acl.php @@ -88,6 +88,7 @@ class acl extends rcube_plugin $search = rcube_utils::get_input_value('_search', rcube_utils::INPUT_GPC, true); $reqid = rcube_utils::get_input_value('_reqid', rcube_utils::INPUT_GPC); $users = array(); + $keys = array(); if ($this->init_ldap()) { $max = (int) $this->rc->config->get('autocomplete_max', 15); @@ -105,15 +106,37 @@ class acl extends rcube_plugin } if ($user) { - if ($record['name']) - $user = $record['name'] . ' (' . $user . ')'; - + $display = rcube_addressbook::compose_search_name($record); + $user = array('name' => $user, 'display' => $display); $users[] = $user; + $keys[] = $display ?: $user['name']; + } + } + + if ($this->rc->config->get('acl_groups')) { + $prefix = $this->rc->config->get('acl_group_prefix'); + $result = $this->ldap->list_groups($search, $mode); + + foreach ($result as $record) { + $group = $record['name']; + + if ($group) { + $users[] = array('name' => ($prefix ? $prefix : '') . $group, 'display' => $group); + $keys[] = $group; + } } } } - sort($users, SORT_LOCALE_STRING); + if (count($users)) { + // sort users index + asort($keys, SORT_LOCALE_STRING); + // re-sort users according to index + foreach ($keys as $idx => $val) { + $keys[$idx] = $users[$idx]; + } + $users = array_values($keys); + } $this->rc->output->command('ksearch_query_results', $users, $search, $reqid); $this->rc->output->send(); @@ -286,7 +309,7 @@ class acl extends rcube_plugin $textfield = new html_inputfield($attrib); - $fields['user'] = html::label(array('for' => 'iduser'), $this->gettext('username')) + $fields['user'] = html::label(array('for' => $attrib['id']), $this->gettext('username')) . ' ' . $textfield->show(); // Add special entries @@ -401,7 +424,7 @@ class acl extends rcube_plugin } $table->add_row(array('id' => 'rcmrow'.$userid)); - $table->add('user', rcube::Q($user)); + $table->add('user', html::a(array('id' => 'rcmlinkrow'.$userid), rcube::Q($user))); foreach ($items as $key => $right) { $in = $this->acl_compare($userrights, $right); @@ -439,9 +462,13 @@ class acl extends rcube_plugin $result = 0; foreach ($users as $user) { - $user = trim($user); + $user = trim($user); + $prefix = $this->rc->config->get('acl_groups') ? $this->rc->config->get('acl_group_prefix') : ''; - if (!empty($this->specials) && in_array($user, $this->specials)) { + if ($prefix && strpos($user, $prefix) === 0) { + $username = $user; + } + else if (!empty($this->specials) && in_array($user, $this->specials)) { $username = $this->gettext($user); } else if (!empty($user)) { @@ -653,8 +680,9 @@ class acl extends rcube_plugin */ private function init_ldap() { - if ($this->ldap) + if ($this->ldap) { return $this->ldap->ready; + } // get LDAP config $config = $this->rc->config->get('acl_users_source'); @@ -666,7 +694,7 @@ class acl extends rcube_plugin // not an array, use configured ldap_public source if (!is_array($config)) { $ldap_config = (array) $this->rc->config->get('ldap_public'); - $config = $ldap_config[$config]; + $config = $ldap_config[$config]; } $uid_field = $this->rc->config->get('acl_users_field', 'mail'); @@ -686,18 +714,17 @@ class acl extends rcube_plugin } // add UID field to fieldmap, so it will be returned in a record with name - $config['fieldmap'] = array( - 'name' => $name_field, - 'uid' => $uid_field, - ); + $config['fieldmap']['name'] = $name_field; + $config['fieldmap']['uid'] = $uid_field; // search in UID and name fields - $config['search_fields'] = array_values($config['fieldmap']); + $config['search_fields'] = array_values($config['fieldmap']); $config['required_fields'] = array($uid_field); // set search filter - if ($filter) + if ($filter) { $config['filter'] = $filter; + } // disable vlv $config['vlv'] = false; diff --git a/plugins/acl/composer.json b/plugins/acl/composer.json index 923b0ae7e..20859eabf 100644 --- a/plugins/acl/composer.json +++ b/plugins/acl/composer.json @@ -3,7 +3,7 @@ "type": "roundcube-plugin", "description": "IMAP Folders Access Control Lists Management (RFC4314, RFC2086).", "license": "GNU GPLv3+", - "version": "1.3", + "version": "1.5", "authors": [ { "name": "Aleksander Machniak", diff --git a/plugins/acl/config.inc.php.dist b/plugins/acl/config.inc.php.dist index 3f0b1efb6..de1f8b5d2 100644 --- a/plugins/acl/config.inc.php.dist +++ b/plugins/acl/config.inc.php.dist @@ -16,10 +16,15 @@ $config['acl_users_field'] = 'mail'; // The LDAP search filter will be &'d with search queries $config['acl_users_filter'] = ''; +// Enable LDAP groups in user autocompletion. +// Note: LDAP addressbook defined in acl_users_source must include groups config +$config['acl_groups'] = false; + +// Prefix added to the group name to build IMAP ACL identifier +$config['acl_group_prefix'] = 'group:'; + // Include the following 'special' access control subjects in the ACL dialog; // Defaults to array('anyone', 'anonymous') (not when set to an empty array) // Example: array('anyone') to exclude 'anonymous'. // Set to an empty array to exclude all special aci subjects. $config['acl_specials'] = array('anyone', 'anonymous'); - -?> diff --git a/plugins/acl/localization/ast.inc b/plugins/acl/localization/ast.inc new file mode 100644 index 000000000..2932d3bd4 --- /dev/null +++ b/plugins/acl/localization/ast.inc @@ -0,0 +1,80 @@ +<?php + +/* + +-----------------------------------------------------------------------+ + | plugins/acl/localization/<lang>.inc | + | | + | Localization file of the Roundcube Webmail ACL plugin | + | Copyright (C) 2012-2013, The Roundcube Dev Team | + | | + | Licensed under the GNU General Public License version 3 or | + | any later version with exceptions for skins & plugins. | + | See the README file for a full license statement. | + | | + +-----------------------------------------------------------------------+ + + For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/plugin-acl/ +*/ +$labels['sharing'] = 'Compartición'; +$labels['myrights'] = 'Drechos d\'accesu'; +$labels['username'] = 'Usuariu:'; +$labels['advanced'] = 'Mou avanzáu'; +$labels['newuser'] = 'Amestar entrada'; +$labels['editperms'] = 'Editar permisos'; +$labels['actions'] = 'Aición de drechos d\'accesu...'; +$labels['anyone'] = 'Tolos usuarios (toos)'; +$labels['anonymous'] = 'Convidaos (anónimos)'; +$labels['identifier'] = 'Identificador'; +$labels['acll'] = 'Guetar'; +$labels['aclr'] = 'Lleer mensaxes'; +$labels['acls'] = 'Estáu Caltener Vistu'; +$labels['aclw'] = 'Escribir banderes'; +$labels['acli'] = 'Inxertar (copiar a)'; +$labels['aclc'] = 'Crear subcarpetes'; +$labels['aclk'] = 'Crear subcarpetes'; +$labels['acld'] = 'Desaniciar mensaxes'; +$labels['aclt'] = 'Desaniciar mensaxes'; +$labels['acle'] = 'Desanciar'; +$labels['aclx'] = 'Desaniciar carpeta'; +$labels['acla'] = 'Alministrar'; +$labels['aclfull'] = 'Control total'; +$labels['aclother'] = 'Otru'; +$labels['aclread'] = 'Lleer'; +$labels['aclwrite'] = 'Escribir'; +$labels['acldelete'] = 'Desaniciar'; +$labels['shortacll'] = 'Guetar'; +$labels['shortaclr'] = 'Lleer'; +$labels['shortacls'] = 'Caltener'; +$labels['shortaclw'] = 'Escribir'; +$labels['shortacli'] = 'Inxertar'; +$labels['shortaclc'] = 'Crear'; +$labels['shortaclk'] = 'Crear'; +$labels['shortacld'] = 'Desaniciar'; +$labels['shortaclt'] = 'Desaniciar'; +$labels['shortacle'] = 'Desaniciar'; +$labels['shortaclx'] = 'Desaniciu de carpeta'; +$labels['shortacla'] = 'Alministrar'; +$labels['shortaclother'] = 'Otru'; +$labels['shortaclread'] = 'Lleer'; +$labels['shortaclwrite'] = 'Escribir'; +$labels['shortacldelete'] = 'Desaniciar'; +$labels['longacll'] = 'La carpeta ye visible nes llistes y pue soscribise a'; +$labels['longaclr'] = 'La carpeta nun pue abrise pa leer'; +$labels['longaclx'] = 'La carpeta pue desaniciase o renomase'; +$labels['longacla'] = 'Puen camudase los drechos d\'accesu de la carpeta'; +$labels['longaclfull'] = 'Control completu incluyendo l\'alminitración de carpeta'; +$labels['longaclread'] = 'La carpeta pue abrise pa llectura'; +$labels['longaclwrite'] = 'Los mensaxes puen conseñase, escribise o copiase a la carpeta'; +$labels['longacldelete'] = 'Los mensaxes puen desaniciase'; +$labels['longaclother'] = 'Otros drechos d\'accesu'; +$labels['ariasummaryacltable'] = 'Llista de drechos d\'accesu'; +$messages['deleting'] = 'Desaniciando los drechos d\'accesu...'; +$messages['saving'] = 'Guardando los drechos d\'accesu...'; +$messages['updatesuccess'] = 'Camudaos con ésitu los drechos d\'accesu'; +$messages['deletesuccess'] = 'Desaniciaos con ésitu los drechos d\'accesu'; +$messages['createsuccess'] = 'Amestaos con ésitu los drechos d\'accesu'; +$messages['updateerror'] = 'Nun puen anovase los drechos d\'accesu'; +$messages['deleteerror'] = 'Nun puen desaniciase los drechos d\'accesu'; +$messages['createerror'] = 'Nun puen amestase los drechos d\'accesu'; +$messages['deleteconfirm'] = '¿De xuru quies desaniciar los drechos d\'accesu al(a los) usuariu(os) esbilláu(os)?'; +?> diff --git a/plugins/acl/localization/bs_BA.inc b/plugins/acl/localization/bs_BA.inc index 7cedc8c5c..371dd17af 100644 --- a/plugins/acl/localization/bs_BA.inc +++ b/plugins/acl/localization/bs_BA.inc @@ -18,8 +18,9 @@ $labels['sharing'] = 'Razmjena'; $labels['myrights'] = 'Prava pristupa'; $labels['username'] = 'Korisnik:'; -$labels['advanced'] = 'napredni mod'; +$labels['advanced'] = 'Napredni mod'; $labels['newuser'] = 'Dodaj unos'; +$labels['editperms'] = 'Uredi dozvole'; $labels['actions'] = 'Akcije za prava pristupa...'; $labels['anyone'] = 'Svi korisnici (bilo ko)'; $labels['anonymous'] = 'Gosti (anonimno)'; @@ -37,6 +38,7 @@ $labels['aclt'] = 'Obriši poruke'; $labels['acle'] = 'Izbriši'; $labels['aclx'] = 'Obriši folder'; $labels['acla'] = 'Administracija'; +$labels['acln'] = 'Obilježi poruke'; $labels['aclfull'] = 'Puna kontrola'; $labels['aclother'] = 'Ostalo'; $labels['aclread'] = 'Pročitano'; @@ -55,6 +57,7 @@ $labels['shortaclt'] = 'Obriši'; $labels['shortacle'] = 'Izbriši'; $labels['shortaclx'] = 'Brisanje foldera'; $labels['shortacla'] = 'Administracija'; +$labels['shortacln'] = 'Obilježli'; $labels['shortaclother'] = 'Ostalo'; $labels['shortaclread'] = 'Pročitano'; $labels['shortaclwrite'] = 'Piši'; @@ -72,10 +75,15 @@ $labels['longaclt'] = 'Oznaka za obrisane poruke se može mijenjati'; $labels['longacle'] = 'Poruke je moguće obrisati'; $labels['longaclx'] = 'Folder je moguće obrisati ili preimenovati'; $labels['longacla'] = 'Pristupna prava foldera je moguće promijeniti'; +$labels['longacln'] = 'Dijeljeni podaci (obilježavanja) poruka mogu se mijenjati'; $labels['longaclfull'] = 'Puna kontrola uključujući i administraciju foldera'; $labels['longaclread'] = 'Folder je moguće otvoriti radi čitanja'; $labels['longaclwrite'] = 'Moguće je označavati, zapisivati i kopirati poruke u folder'; $labels['longacldelete'] = 'Moguće je obrisati poruke'; +$labels['longaclother'] = 'Ostala prava pristupa'; +$labels['ariasummaryacltable'] = 'Lista prava pristupa'; +$labels['arialabelaclactions'] = 'Lista akcija'; +$labels['arialabelaclform'] = 'Obrazac za prava pristupa'; $messages['deleting'] = 'Brišem prava pristupa...'; $messages['saving'] = 'Snimam prava pristupa...'; $messages['updatesuccess'] = 'Prava pristupa su uspješno promijenjena'; diff --git a/plugins/acl/localization/en_CA.inc b/plugins/acl/localization/en_CA.inc index 53d14ff9a..ae9cb8bbe 100644 --- a/plugins/acl/localization/en_CA.inc +++ b/plugins/acl/localization/en_CA.inc @@ -18,7 +18,9 @@ $labels['sharing'] = 'Sharing'; $labels['myrights'] = 'Access Rights'; $labels['username'] = 'User:'; +$labels['advanced'] = 'Advanced mode'; $labels['newuser'] = 'Add entry'; +$labels['editperms'] = 'Edit permissions'; $labels['actions'] = 'Access right actions...'; $labels['anyone'] = 'All users (anyone)'; $labels['anonymous'] = 'Guests (anonymous)'; @@ -36,6 +38,7 @@ $labels['aclt'] = 'Delete messages'; $labels['acle'] = 'Expunge'; $labels['aclx'] = 'Delete folder'; $labels['acla'] = 'Administer'; +$labels['acln'] = 'Annotate messages'; $labels['aclfull'] = 'Full control'; $labels['aclother'] = 'Other'; $labels['aclread'] = 'Read'; @@ -54,6 +57,7 @@ $labels['shortaclt'] = 'Delete'; $labels['shortacle'] = 'Expunge'; $labels['shortaclx'] = 'Folder delete'; $labels['shortacla'] = 'Administer'; +$labels['shortacln'] = 'Annotate'; $labels['shortaclother'] = 'Other'; $labels['shortaclread'] = 'Read'; $labels['shortaclwrite'] = 'Write'; @@ -71,6 +75,7 @@ $labels['longaclt'] = 'Messages Delete flag can be changed'; $labels['longacle'] = 'Messages can be expunged'; $labels['longaclx'] = 'The folder can be deleted or renamed'; $labels['longacla'] = 'The folder access rights can be changed'; +$labels['longacln'] = 'Messages shared metadata (annotations) can be changed'; $labels['longaclfull'] = 'Full control including folder administration'; $labels['longaclread'] = 'The folder can be opened for reading'; $labels['longaclwrite'] = 'Messages can be marked, written or copied to the folder'; diff --git a/plugins/acl/localization/en_US.inc b/plugins/acl/localization/en_US.inc index 23501dafe..ff8dde76c 100644 --- a/plugins/acl/localization/en_US.inc +++ b/plugins/acl/localization/en_US.inc @@ -87,6 +87,11 @@ $labels['longaclfull'] = 'Full control including folder administration'; $labels['longaclread'] = 'The folder can be opened for reading'; $labels['longaclwrite'] = 'Messages can be marked, written or copied to the folder'; $labels['longacldelete'] = 'Messages can be deleted'; +$labels['longaclother'] = 'Other access rights'; + +$labels['ariasummaryacltable'] = 'List of access rights'; +$labels['arialabelaclactions'] = 'List actions'; +$labels['arialabelaclform'] = 'Access rights form'; $messages['deleting'] = 'Deleting access rights...'; $messages['saving'] = 'Saving access rights...'; diff --git a/plugins/acl/localization/et_EE.inc b/plugins/acl/localization/et_EE.inc index 4b6f437aa..ecd5f7e8f 100644 --- a/plugins/acl/localization/et_EE.inc +++ b/plugins/acl/localization/et_EE.inc @@ -18,12 +18,17 @@ $labels['sharing'] = 'Jagamine'; $labels['myrights'] = 'Ligipääsuõigused'; $labels['username'] = 'Kasutaja:'; +$labels['advanced'] = 'laiendatud režiim'; $labels['newuser'] = 'Lisa sissekanne'; +$labels['editperms'] = 'Muuda õigusi'; $labels['actions'] = 'Ligipääsuõiguste toimingud...'; $labels['anyone'] = 'Kõik kasutajad'; $labels['anonymous'] = 'Külalised (anonüümsed)'; $labels['identifier'] = 'Tuvastaja'; +$labels['acll'] = 'Ülevaade'; $labels['aclr'] = 'Lugeda kirju'; +$labels['acls'] = 'Hoia nähtud olekut'; +$labels['aclw'] = 'Salvesta lipud'; $labels['acli'] = 'Sisesta (kopeeri)'; $labels['aclp'] = 'Postita'; $labels['aclc'] = 'Luua alamkaustu'; @@ -33,11 +38,13 @@ $labels['aclt'] = 'Kustutada kirju'; $labels['acle'] = 'Eemalda'; $labels['aclx'] = 'Kustutada kausta'; $labels['acla'] = 'Administreerida'; +$labels['acln'] = 'Annoteeri kirja'; $labels['aclfull'] = 'Täis kontroll'; $labels['aclother'] = 'Muu'; $labels['aclread'] = 'Loe'; $labels['aclwrite'] = 'Kirjuta'; $labels['acldelete'] = 'Kustuta'; +$labels['shortacll'] = 'Ülevaade'; $labels['shortaclr'] = 'Loe'; $labels['shortacls'] = 'Säilita'; $labels['shortaclw'] = 'Kirjuta'; @@ -50,20 +57,33 @@ $labels['shortaclt'] = 'Kustuta'; $labels['shortacle'] = 'Eemalda'; $labels['shortaclx'] = 'Kausta kustutamine'; $labels['shortacla'] = 'Administreerida'; +$labels['shortacln'] = 'Annoteeri'; $labels['shortaclother'] = 'Muu'; $labels['shortaclread'] = 'Loe'; $labels['shortaclwrite'] = 'Kirjuta'; $labels['shortacldelete'] = 'Kustuta'; $labels['longacll'] = 'See kaust on nimekirjas nähtav ja seda saab tellida'; $labels['longaclr'] = 'Kausta saab lugemiseks avada'; +$labels['longacls'] = 'Kirja loetuse lippu saab muuta'; +$labels['longaclw'] = 'Kirja lippe ja otsingusõnu saab muuta, väljaarvatud loetud ja kustutatud'; +$labels['longacli'] = 'Kirju saab salvestada ja kopeerida antud kausta'; +$labels['longaclp'] = 'Kirju saab postitada antud kausta'; +$labels['longaclc'] = 'Kaustasi saab luua (või ümber nimetada) otse siia kausta alla.'; +$labels['longaclk'] = 'Kaustu saab luua (või ümber nimetada) otse siia kausta alla'; $labels['longacld'] = 'Kirja kustutamis lippu saab muuta'; $labels['longaclt'] = 'Kirja kustutamis lippu saab muuta'; $labels['longacle'] = 'Kirju saab eemaldada'; $labels['longaclx'] = 'Seda kausta ei saa kustutada ega ümber nimetada'; $labels['longacla'] = 'Selle kausta ligipääsuõigusi saab muuta'; +$labels['longacln'] = 'Kirja jagatud metainfot (annotatsioonid) saab muuta'; $labels['longaclfull'] = 'Täielik kontroll koos kaustade haldamisega'; $labels['longaclread'] = 'Kausta saab lugemiseks avada'; +$labels['longaclwrite'] = 'Kirju saab märgistada, salvestada või kopeerida kausta'; $labels['longacldelete'] = 'Kirju saab kustutada'; +$labels['longaclother'] = 'Muud ligipääsu õigused'; +$labels['ariasummaryacltable'] = 'Nimekir ligipääsu õigustest'; +$labels['arialabelaclactions'] = 'Näita tegevusi'; +$labels['arialabelaclform'] = 'Ligipääsu õiguste vorm'; $messages['deleting'] = 'Ligipääsuõiguste kustutamine...'; $messages['saving'] = 'Ligipääsuõiguste salvestamine...'; $messages['updatesuccess'] = 'Ligipääsuõigused on muudetud'; diff --git a/plugins/acl/localization/fi_FI.inc b/plugins/acl/localization/fi_FI.inc index eb69eda3a..27510e849 100644 --- a/plugins/acl/localization/fi_FI.inc +++ b/plugins/acl/localization/fi_FI.inc @@ -21,12 +21,24 @@ $labels['username'] = 'Käyttäjä:'; $labels['editperms'] = 'Muokkaa oikeuksia'; $labels['anyone'] = 'Kaikki käyttäjät (kuka tahansa)'; $labels['anonymous'] = 'Vieraat (anonyymit)'; +$labels['aclc'] = 'Luo alikansioita'; +$labels['aclk'] = 'Luo alikansioita'; +$labels['acld'] = 'Poista viestejä'; +$labels['aclt'] = 'Poista viestejä'; +$labels['aclx'] = 'Poista kansio'; +$labels['aclfull'] = 'Täydet käyttöoikeudet'; $labels['aclother'] = 'Muu'; +$labels['aclread'] = 'Luku'; +$labels['aclwrite'] = 'Kirjoitus'; +$labels['acldelete'] = 'Poisto'; $labels['shortaclc'] = 'Luo'; $labels['shortaclk'] = 'Luo'; $labels['shortacld'] = 'Poista'; $labels['shortaclt'] = 'Poista'; $labels['shortaclother'] = 'Muu'; +$labels['shortaclread'] = 'Luku'; +$labels['shortaclwrite'] = 'Kirjoitus'; +$labels['shortacldelete'] = 'Poisto'; $labels['longaclr'] = 'Kansion voi avata lukua varten'; $labels['longaclx'] = 'Kansio voidaan poistaa tai nimetä uudelleen'; $labels['longacla'] = 'Kansion käyttöoikeuksia voi muuttaa'; diff --git a/plugins/acl/localization/it_IT.inc b/plugins/acl/localization/it_IT.inc index 36c66cda5..1201c7ea1 100644 --- a/plugins/acl/localization/it_IT.inc +++ b/plugins/acl/localization/it_IT.inc @@ -80,6 +80,10 @@ $labels['longaclfull'] = 'Controllo completo incluso cartella di amministrazione $labels['longaclread'] = 'Questa cartella può essere aperta in lettura'; $labels['longaclwrite'] = 'I messaggi possono essere marcati, scritti o copiati nella cartella'; $labels['longacldelete'] = 'I messaggi possono essere eliminati'; +$labels['longaclother'] = 'Altri diritti di accesso'; +$labels['ariasummaryacltable'] = 'Elenco dei diritti di accesso'; +$labels['arialabelaclactions'] = 'Lista azioni'; +$labels['arialabelaclform'] = 'Modulo di accesso'; $messages['deleting'] = 'Sto eliminando i diritti di accesso...'; $messages['saving'] = 'Sto salvando i diritti di accesso...'; $messages['updatesuccess'] = 'I diritti d\'accesso sono stati cambiati'; diff --git a/plugins/acl/localization/pt_PT.inc b/plugins/acl/localization/pt_PT.inc index 77f831375..75735dd56 100644 --- a/plugins/acl/localization/pt_PT.inc +++ b/plugins/acl/localization/pt_PT.inc @@ -80,6 +80,10 @@ $labels['longaclfull'] = 'Controlo total incluindo administração de pastas'; $labels['longaclread'] = 'A pasta pode ser aberta para leitura'; $labels['longaclwrite'] = 'As mensagens podem ser marcadas, guardadas ou copiadas para a pasta'; $labels['longacldelete'] = 'As mensagens podem ser eliminadas'; +$labels['longaclother'] = 'Outros direitos de acesso'; +$labels['ariasummaryacltable'] = 'Lista de direitos de acesso'; +$labels['arialabelaclactions'] = 'Lista de acções'; +$labels['arialabelaclform'] = 'Formulário de direitos de acesso'; $messages['deleting'] = 'A eliminar permissões de acesso...'; $messages['saving'] = 'A guardar permissões de acesso...'; $messages['updatesuccess'] = 'Permissões de acesso alteradas com sucesso'; diff --git a/plugins/acl/package.xml b/plugins/acl/package.xml index a99ad4ffa..feec9cebe 100644 --- a/plugins/acl/package.xml +++ b/plugins/acl/package.xml @@ -13,9 +13,9 @@ <email>alec@alec.pl</email> <active>yes</active> </lead> - <date>2014-02-04</date> + <date>2014-08-11</date> <version> - <release>1.3</release> + <release>1.5</release> <api>1.0</api> </version> <stability> diff --git a/plugins/acl/skins/larry/acl.css b/plugins/acl/skins/larry/acl.css index 96c1092a0..bd72b3c85 100644 --- a/plugins/acl/skins/larry/acl.css +++ b/plugins/acl/skins/larry/acl.css @@ -26,44 +26,39 @@ border: none; } +#acltable th, #acltable td { white-space: nowrap; text-align: center; } -#acltable thead tr td +#acltable thead tr th { - border-left: #BBD3DA dotted 1px; font-size: 11px; font-weight: bold; - width: auto; } #acltable tbody td { - border-bottom: #DDDDDD 1px solid; text-align: center; height: 16px; cursor: default; } -#acltable thead td.user +#acltable thead tr > .user { width: 30%; + border-left: none; } -#acltable.advanced thead td.user { - width: 25%; +#acltable.advanced thead tr > .user { + width: 25%; } #acltable tbody td.user { text-align: left; - overflow: hidden; - text-overflow: ellipsis; - -o-text-overflow: ellipsis; - border-left: none; } #acltable tbody td.partial diff --git a/plugins/acl/skins/larry/templates/table.html b/plugins/acl/skins/larry/templates/table.html index c0b8329c6..16a97dfcb 100644 --- a/plugins/acl/skins/larry/templates/table.html +++ b/plugins/acl/skins/larry/templates/table.html @@ -1,23 +1,26 @@ <div id="aclcontainer" class="uibox listbox"> <div id="acllist-content" class="scroller withfooter"> - <roundcube:object name="acltable" id="acltable" class="records-table" /> + <h2 class="voice" id="aria-label-acltable"><roundcube:label name="acl.ariasummaryacltable" /></h2> + <roundcube:object name="acltable" id="acltable" class="records-table" aria-labelledby="aria-label-acltable" role="listbox" /> </div> <div id="acllist-footer" class="boxfooter"> - <roundcube:button command="acl-create" id="aclcreatelink" type="link" title="acl.newuser" class="listbutton add disabled" classAct="listbutton add" innerClass="inner" content="+" /><roundcube:button name="aclmenulink" id="aclmenulink" type="link" title="acl.actions" class="listbutton groupactions"onclick="UI.show_popup('aclmenu', undefined, {above:1});return false" innerClass="inner" content="⚙" /> + <roundcube:button command="acl-create" id="aclcreatelink" type="link" title="acl.newuser" class="listbutton add disabled" classAct="listbutton add" innerClass="inner" content="+" /><roundcube:button name="aclmenulink" id="aclmenulink" type="link" title="acl.actions" class="listbutton groupactions" onclick="return UI.toggle_popup('aclmenu', event)" innerClass="inner" content="⚙" aria-haspopup="true" aria-expanded="false" aria-owns="aclmenu-menu" /> </div> </div> -<div id="aclmenu" class="popupmenu"> - <ul class="toolbarmenu selectable iconized"> - <li><roundcube:button command="acl-edit" label="edit" class="icon" classAct="icon active" innerclass="icon edit" /></li> - <li><roundcube:button command="acl-delete" label="delete" class="icon" classAct="icon active" innerclass="icon delete" /></li> +<div id="aclmenu" class="popupmenu" aria-hidden="true" data-align="bottom"> + <h3 id="aria-label-aclactions" class="voice"><roundcube:label name="acl.arialabelaclactions" /></h3> + <ul id="aclmenu-menu" class="toolbarmenu selectable iconized" role="menu" aria-labelledby="aria-label-aclactions"> + <li role="menuitem"><roundcube:button command="acl-edit" label="edit" class="icon" classAct="icon active" innerclass="icon edit" /></li> + <li role="menuitem"><roundcube:button command="acl-delete" label="delete" class="icon" classAct="icon active" innerclass="icon delete" /></li> <roundcube:if condition="!in_array('acl_advanced_mode', (array)config:dont_override)" /> - <li><roundcube:button name="acl-switch" id="acl-switch" label="acl.advanced" onclick="rcmail.command('acl-mode-switch');return false" class="active" /></li> + <li role="menuitem"><roundcube:button name="acl-switch" id="acl-switch" label="acl.advanced" onclick="rcmail.command('acl-mode-switch');return false" class="active" /></li> <roundcube:endif /> </ul> </div> -<div id="aclform" class="propform" style="position:absolute; width:480px; top:0; left:0; padding:8px"> +<div id="aclform" class="propform" style="position:absolute; width:480px; top:0; left:0; padding:8px" aria-labelledby="aria-label-aclform" aria-hidden="true" role="dialog"> + <h3 id="aria-label-aclform" class="voice"><roundcube:label name="acl.arialabelaclform" /></h3> <fieldset class="thinbordered"><legend><roundcube:label name="acl.identifier" /></legend> <roundcube:object name="acluser" id="acluser" size="35" class="proplist" /> </fieldset> |