From 7800517deb6ab16f8211f73adc961a5bcb1ea328 Mon Sep 17 00:00:00 2001 From: Rune Rasmussen Date: Mon, 30 May 2011 19:10:40 +0200 Subject: Norwegian language update --- lib/plugins/acl/lang/no/lang.php | 1 + 1 file changed, 1 insertion(+) (limited to 'lib/plugins/acl') diff --git a/lib/plugins/acl/lang/no/lang.php b/lib/plugins/acl/lang/no/lang.php index cd9e2edfb..71df0b382 100644 --- a/lib/plugins/acl/lang/no/lang.php +++ b/lib/plugins/acl/lang/no/lang.php @@ -15,6 +15,7 @@ * @author Lisa Ditlefsen * @author Erik Pedersen * @author Erik Bjørn Pedersen + * @author Rune Rasmussen syntaxerror.no@gmail.com */ $lang['admin_acl'] = 'Administrasjon av lister for adgangskontroll (ACL)'; $lang['acl_group'] = 'Gruppe'; -- cgit v1.2.3 From 0f80b0bcd4ca247f7bc4c3830946741546ad6e88 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Szab=C3=B3=20D=C3=A1vid?= Date: Sat, 4 Jun 2011 00:38:05 +0200 Subject: Hungarian language update --- lib/plugins/acl/lang/hu/lang.php | 1 + 1 file changed, 1 insertion(+) (limited to 'lib/plugins/acl') diff --git a/lib/plugins/acl/lang/hu/lang.php b/lib/plugins/acl/lang/hu/lang.php index 30401b315..255d838b6 100644 --- a/lib/plugins/acl/lang/hu/lang.php +++ b/lib/plugins/acl/lang/hu/lang.php @@ -7,6 +7,7 @@ * @author schilling.janos@gmail.com * @author Szabó Dávid * @author Sándor TIHANYI + * @author David Szabo */ $lang['admin_acl'] = 'Hozzáférési lista (ACL) kezelő'; $lang['acl_group'] = 'Csoport:'; -- cgit v1.2.3 From 66c880eeb412047135a523819da6a6d99aff47f9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rivo=20Z=C3=A4ngov?= Date: Sun, 5 Jun 2011 10:04:24 +0200 Subject: Estonian language update --- lib/plugins/acl/lang/et/lang.php | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'lib/plugins/acl') diff --git a/lib/plugins/acl/lang/et/lang.php b/lib/plugins/acl/lang/et/lang.php index 04ce0c08a..bc4c73a16 100644 --- a/lib/plugins/acl/lang/et/lang.php +++ b/lib/plugins/acl/lang/et/lang.php @@ -7,6 +7,7 @@ * @author Aari Juhanson * @author Kaiko Kaur * @author kristian.kankainen@kuu.la + * @author Rivo Zängov */ $lang['admin_acl'] = 'Ligipääsukontrolli nimekirja haldamine'; $lang['acl_group'] = 'Grupp'; @@ -14,8 +15,14 @@ $lang['acl_user'] = 'Kasutaja'; $lang['acl_perms'] = 'Lubatud'; $lang['page'] = 'leht'; $lang['namespace'] = 'alajaotus'; +$lang['btn_select'] = 'Vali'; +$lang['who'] = 'Kasutaja/Grupp'; +$lang['perm'] = 'Õigused'; +$lang['acl_perm0'] = 'Pole'; $lang['acl_perm1'] = 'Lugemine'; $lang['acl_perm2'] = 'Toimetamine'; $lang['acl_perm4'] = 'Tekitamine'; $lang['acl_perm8'] = 'Üles laadimine'; +$lang['acl_perm16'] = 'Kustuta'; $lang['acl_new'] = 'Uue kirje lisamine'; +$lang['acl_mod'] = 'Muuda sissekannet'; -- cgit v1.2.3 From cf82a5b57d89343301a5a819c70ca5d7b336e68e Mon Sep 17 00:00:00 2001 From: Andreas Gohr Date: Thu, 9 Jun 2011 09:52:30 +0200 Subject: started jQuery port of ACL manager --- lib/plugins/acl/script.js | 97 ++++++++++++++++++++++++----------------------- 1 file changed, 49 insertions(+), 48 deletions(-) (limited to 'lib/plugins/acl') diff --git a/lib/plugins/acl/script.js b/lib/plugins/acl/script.js index d5d0371a9..eccec501e 100644 --- a/lib/plugins/acl/script.js +++ b/lib/plugins/acl/script.js @@ -1,4 +1,14 @@ +/** + * ACL Manager AJAX enhancements + * + * @author Andreas Gohr + */ acl = { + /** + * Initialize the object and attach the event handlers + * + * @todo move to jQuery + */ init: function(){ this.ctl = $('acl_manager'); if(!this.ctl) return; @@ -10,50 +20,39 @@ acl = { addEvent($('acl__user').getElementsByTagName('input')[1],'click',acl.loadinfo); }, - /** * Handle user dropdown + * + * Hides or shows the user/group entry box depending on wht was selected in the + * dropdown element */ userselhandler: function(e){ // make entry field visible/invisible if(this.value == '__g__' || this.value == '__u__'){ - $('acl__user').getElementsByTagName('input')[0].style.display = ''; //acl_w - $('acl__user').getElementsByTagName('input')[1].style.display = ''; //submit + jQuery('#acl__user input').show(); }else{ - $('acl__user').getElementsByTagName('input')[0].style.display = 'none'; - $('acl__user').getElementsByTagName('input')[1].style.display = 'none'; + jQuery('#acl__user input').hide(); } - acl.loadinfo(); }, /** * Load the current permission info and edit form - * - * @param frm - Form element with needed data */ loadinfo: function(){ - // get form - var frm = $('acl__detail').getElementsByTagName('form')[0]; - - // prepare an AJAX call - var ajax = new sack(DOKU_BASE + 'lib/plugins/acl/ajax.php'); - ajax.AjaxFailedAlert = ''; - ajax.encodeURIString = false; - if(ajax.failed) return true; - - // prepare data - var data = Array(); - data[0] = ajax.encVar('ns',frm.elements['ns'].value); - data[1] = ajax.encVar('id',frm.elements['id'].value); - data[2] = ajax.encVar('acl_t',frm.elements['acl_t'].value); - data[3] = ajax.encVar('acl_w',frm.elements['acl_w'].value); - data[4] = ajax.encVar('sectok',frm.elements['sectok'].value); - data[5] = ajax.encVar('ajax','info'); - - ajax.elementObj = $('acl__info'); - - ajax.runAJAX(data.join('&')); + var frm = jQuery('#acl__detail form')[0]; + + jQuery('#acl__info').load( + DOKU_BASE + 'lib/plugins/acl/ajax.php', + { + 'ns': frm.elements['ns'].value, + 'id': frm.elements['id'].value, + 'acl_t': frm.elements['acl_t'].value, + 'acl_w': frm.elements['acl_w'].value, + 'sectok': frm.elements['sectok'].value, + 'ajax': 'info', + } + ); return false; }, @@ -92,37 +91,37 @@ acl = { * Open or close a subtree using AJAX * * @author Andreas Gohr + * @param DOMElement clicky - the plus/minus icon in front of a namespace */ treetoggle: function(clicky){ - var listitem = clicky.parentNode.parentNode; + var listitem = jQuery(clicky).parent().parent(); // if already open, close by removing the sublist - var sublists = listitem.getElementsByTagName('ul'); + var sublists = listitem.find('ul'); if(sublists.length){ - listitem.removeChild(sublists[0]); + listitem.remove('ul'); clicky.src = DOKU_BASE+'lib/images/plus.gif'; clicky.alt = '+'; return false; } - // get the enclosed link (is always the first one) - var link = listitem.getElementsByTagName('a')[0]; + // prepare new ul to load into it via ajax + var ul = document.createElement('ul'); + listitem[0].appendChild(ul); - // prepare an AJAX call to fetch the subtree - var ajax = new sack(DOKU_BASE + 'lib/plugins/acl/ajax.php'); - ajax.AjaxFailedAlert = ''; - ajax.encodeURIString = false; - if(ajax.failed) return true; + // get the enclosed link and the edit form + var link = listitem.find('a')[0]; + var frm = jQuery('#acl__detail form')[0]; + + // prepare ajax data + var data = acl.parseatt(link.search); + data['ajax'] = 'tree'; + data['current_ns'] = frm.elements['ns'].value; + data['current_id'] = frm.elements['id'].value; + + // run ajax + jQuery(ul).load(DOKU_BASE + 'lib/plugins/acl/ajax.php', data); - //prepare the new ul - var ul = document.createElement('ul'); - listitem.appendChild(ul); - ajax.elementObj = ul; - ajax.setVar('ajax', 'tree'); - var frm = $('acl__detail').getElementsByTagName('form')[0]; - ajax.setVar('current_ns', encodeURIComponent(frm.elements['ns'].value)); - ajax.setVar('current_id', encodeURIComponent(frm.elements['id'].value)); - ajax.runAJAX(link.search.substr(1)); clicky.src = DOKU_BASE+'lib/images/minus.gif'; return false; }, @@ -130,6 +129,8 @@ acl = { /** * Handles all clicks in the tree, dispatching the right action based on the * clicked element + * + * @todo move to jQuery */ treehandler: function(e){ if(e.target.src){ // is it an image? -- cgit v1.2.3 From ed5218f1f645be768bb36518b24885923f980b90 Mon Sep 17 00:00:00 2001 From: Andreas Gohr Date: Thu, 9 Jun 2011 10:37:19 +0200 Subject: finished jQuery port of ACL manager --- lib/plugins/acl/script.js | 58 +++++++++++++++-------------------------------- 1 file changed, 18 insertions(+), 40 deletions(-) (limited to 'lib/plugins/acl') diff --git a/lib/plugins/acl/script.js b/lib/plugins/acl/script.js index eccec501e..5b6c9ce1b 100644 --- a/lib/plugins/acl/script.js +++ b/lib/plugins/acl/script.js @@ -6,24 +6,19 @@ acl = { /** * Initialize the object and attach the event handlers - * - * @todo move to jQuery */ init: function(){ - this.ctl = $('acl_manager'); - if(!this.ctl) return; - - var sel = $('acl__user').getElementsByTagName('select')[0]; + if(!jQuery('#acl_manager').length) return; //FIXME only one underscore!! - addEvent(sel,'change',acl.userselhandler); - addEvent($('acl__tree'),'click',acl.treehandler); - addEvent($('acl__user').getElementsByTagName('input')[1],'click',acl.loadinfo); + jQuery('#acl__user select').change(acl.userselhandler); + jQuery('#acl__tree').click(acl.treehandler); + jQuery('#acl__user input[type=submit]').click(acl.loadinfo); }, /** * Handle user dropdown * - * Hides or shows the user/group entry box depending on wht was selected in the + * Hides or shows the user/group entry box depending on what was selected in the * dropdown element */ userselhandler: function(e){ @@ -72,21 +67,6 @@ acl = { return attributes; }, - /** - * htmlspecialchars equivalent - * - * @todo put in gloabl scripts lib? - */ - hsc: function(str) { - str = str.replace(/&/g,"&"); - str = str.replace(/\"/g,"""); - str = str.replace(/\'/g,"'"); - str = str.replace(//g,">"); - return str; - }, - - /** * Open or close a subtree using AJAX * @@ -130,31 +110,29 @@ acl = { * Handles all clicks in the tree, dispatching the right action based on the * clicked element * - * @todo move to jQuery + * @param Event e The event object that caused the execution */ treehandler: function(e){ if(e.target.src){ // is it an image? acl.treetoggle(e.target); } else if(e.target.href){ // is it a link? // remove highlighting - var obj = getElementsByClass('cur',$('acl__tree'),'a'); - for(var i=0; i -1){ - frm.elements['ns'].value = ''; - frm.elements['id'].value = acl.hsc(acl.parseatt(e.target.search)['id']); - }else if(e.target.className.search(/idx_dir/) > -1){ - frm.elements['ns'].value = acl.hsc(acl.parseatt(e.target.search)['ns']); - frm.elements['id'].value = ''; + var frm = jQuery('#acl__detail form')[0]; + if(link.hasClass('wikilink1')){ + jQuery('#acl__detail form input[name=ns]').val(''); + jQuery('#acl__detail form input[name=id]').val(acl.parseatt(link[0].search)['id']); + }else if(link.hasClass('idx_dir')){ + jQuery('#acl__detail form input[name=ns]').val(acl.parseatt(link[0].search)['ns']); + jQuery('#acl__detail form input[name=id]').val(''); } - acl.loadinfo(); } @@ -165,4 +143,4 @@ acl = { }; -addInitEvent(acl.init); +jQuery(acl.init); -- cgit v1.2.3 From 0748b4c7cb6a4918212b51bdedad710322ab2a0b Mon Sep 17 00:00:00 2001 From: Nurgozha Kaliaskarov Date: Tue, 21 Jun 2011 20:43:11 +0200 Subject: Kazakh translation added --- lib/plugins/acl/lang/kk/lang.php | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 lib/plugins/acl/lang/kk/lang.php (limited to 'lib/plugins/acl') diff --git a/lib/plugins/acl/lang/kk/lang.php b/lib/plugins/acl/lang/kk/lang.php new file mode 100644 index 000000000..dde5b9577 --- /dev/null +++ b/lib/plugins/acl/lang/kk/lang.php @@ -0,0 +1,6 @@ + Date: Sat, 2 Jul 2011 13:19:32 +0200 Subject: Swedish language update --- lib/plugins/acl/lang/sv/lang.php | 1 + 1 file changed, 1 insertion(+) (limited to 'lib/plugins/acl') diff --git a/lib/plugins/acl/lang/sv/lang.php b/lib/plugins/acl/lang/sv/lang.php index b5fd3b866..7f963d5e1 100644 --- a/lib/plugins/acl/lang/sv/lang.php +++ b/lib/plugins/acl/lang/sv/lang.php @@ -15,6 +15,7 @@ * @author Bogge Bogge * @author Peter Åström * @author Håkan Sandell + * @author mikael@mallander.net */ $lang['admin_acl'] = 'Hantera behörighetslistan (ACL)'; $lang['acl_group'] = 'Grupp'; -- cgit v1.2.3 From a1dee2b998bc3dc8436bb076435d405ec412e054 Mon Sep 17 00:00:00 2001 From: Adrian Lang Date: Mon, 11 Jul 2011 22:17:27 +0200 Subject: Fix some bugs and glitches in (mediamanager) tree * Fix selector in subtree loading callback * Remove HTML inconsistencies between AJAX and plain PHP lists * Unify icon and CSS class switching in dw_tree and dw_mediamanager --- lib/plugins/acl/admin.php | 11 ++--------- lib/plugins/acl/ajax.php | 11 ++++------- 2 files changed, 6 insertions(+), 16 deletions(-) (limited to 'lib/plugins/acl') diff --git a/lib/plugins/acl/admin.php b/lib/plugins/acl/admin.php index ea4184ca3..7c12b3374 100644 --- a/lib/plugins/acl/admin.php +++ b/lib/plugins/acl/admin.php @@ -253,19 +253,12 @@ class admin_plugin_acl extends DokuWiki_Admin_Plugin { $data = $this->_get_tree($ns); // wrap a list with the root level around the other namespaces - $item = array( 'level' => 0, 'id' => '*', 'type' => 'd', - 'open' =>'true', 'label' => '['.$lang['mediaroot'].']'); + array_unshift($data, array( 'level' => 0, 'id' => '*', 'type' => 'd', + 'open' =>'true', 'label' => '['.$lang['mediaroot'].']')); - echo '
    '; - echo $this->_html_li_acl($item); - echo '
    '; - echo $this->_html_list_acl($item); - echo '
    '; echo html_buildlist($data,'acl', array($this,'_html_list_acl'), array($this,'_html_li_acl')); - echo ''; - echo '
'; } diff --git a/lib/plugins/acl/ajax.php b/lib/plugins/acl/ajax.php index d91586a5d..d704fa8c9 100644 --- a/lib/plugins/acl/ajax.php +++ b/lib/plugins/acl/ajax.php @@ -44,13 +44,10 @@ if($ajax == 'info'){ $data = $acl->_get_tree($ns,$ns); - foreach($data as $item){ - $item['level'] = $lvl+1; - echo $acl->_html_li_acl($item); - echo '
'; - echo $acl->_html_list_acl($item); - echo '
'; - echo ''; + foreach(array_keys($data) as $item){ + $data[$item]['level'] = $lvl+1; } + echo html_buildlist($data, 'acl', array($acl, '_html_list_acl'), + array($acl, '_html_li_acl')); } -- cgit v1.2.3 From 9ee7fd095e8cb3c84ad95dd52c35630147333ecb Mon Sep 17 00:00:00 2001 From: Sami Olmari Date: Mon, 25 Jul 2011 20:17:44 +0200 Subject: Finish language update --- lib/plugins/acl/lang/fi/lang.php | 1 + 1 file changed, 1 insertion(+) (limited to 'lib/plugins/acl') diff --git a/lib/plugins/acl/lang/fi/lang.php b/lib/plugins/acl/lang/fi/lang.php index 04074d8d4..4f145e0f6 100644 --- a/lib/plugins/acl/lang/fi/lang.php +++ b/lib/plugins/acl/lang/fi/lang.php @@ -5,6 +5,7 @@ * @author otto@valjakko.net * @author Otto Vainio * @author Teemu Mattila + * @author Sami Olmari */ $lang['admin_acl'] = 'Käyttöoikeudet (ACL)'; $lang['acl_group'] = 'Ryhmä'; -- cgit v1.2.3 From c4241309cc2c5ed1d2675cf234f9b59ded0019f4 Mon Sep 17 00:00:00 2001 From: Dejan Igrec Date: Mon, 25 Jul 2011 20:19:01 +0200 Subject: Croatian language update --- lib/plugins/acl/lang/hr/help.txt | 11 +++++++++++ lib/plugins/acl/lang/hr/lang.php | 29 +++++++++++++++++++++++++++++ 2 files changed, 40 insertions(+) create mode 100644 lib/plugins/acl/lang/hr/help.txt (limited to 'lib/plugins/acl') diff --git a/lib/plugins/acl/lang/hr/help.txt b/lib/plugins/acl/lang/hr/help.txt new file mode 100644 index 000000000..4e7cfc3c2 --- /dev/null +++ b/lib/plugins/acl/lang/hr/help.txt @@ -0,0 +1,11 @@ +=== Brza Pomoć: === + +Na ovoj stranici možeš dodavati i brisati dozvole za imenske prostore i stranice u svom wiki-u. + +Lijevi prozor prikazuje sve dostupne imenske prostore i stranice. + +Forma iznad ti omogućuje pregled i mijenjanje dozvola odabranom korisniku ili grupi. + +U tablici ispod prikazana su sva trenutno postavljena pravila kontrole pristupa. Koristite je za višestruko brisanje ili mijenjanje pravila. + +Čitanje [[doku>acl|službena dokumentacija o ACL]] može vam pomoći potpuno razumijeti kako kontrola pristupa radi u DokuWiki. \ No newline at end of file diff --git a/lib/plugins/acl/lang/hr/lang.php b/lib/plugins/acl/lang/hr/lang.php index d2094b77b..8c21f1b0b 100644 --- a/lib/plugins/acl/lang/hr/lang.php +++ b/lib/plugins/acl/lang/hr/lang.php @@ -4,4 +4,33 @@ * * @author Branko Rihtman * @author Dražen Odobašić + * @author Dejan Igrec dejan.igrec@gmail.com */ +$lang['admin_acl'] = 'Upravljanje listom kontrole pristupa'; +$lang['acl_group'] = 'Grupa'; +$lang['acl_user'] = 'Korisnik'; +$lang['acl_perms'] = 'Dozvole za'; +$lang['page'] = 'Stranica'; +$lang['namespace'] = 'Imenski prostor'; +$lang['btn_select'] = 'Odaberi'; +$lang['p_user_id'] = 'Korisnik %s trenutno ima sljedeće dozvole na stranici %s: %s.'; +$lang['p_user_ns'] = 'Korisnik %s trenutno ima sljedeće dozvole u imenskom prostoru %s: %s.'; +$lang['p_group_id'] = 'Članovi grupe %s trenutno imaju sljedeće dozvole na stranici %s: %s.'; +$lang['p_group_ns'] = 'Članovi grupe %s trenutno imaju sljedeće dozvole u imenskom prostoru %s: %s.'; +$lang['p_choose_id'] = 'Molim unesti korisnika ili grupu u gornju formu za pregled ili uređivanje dozvola postavljenih za stranicu %s.'; +$lang['p_choose_ns'] = 'Molim unesti korisnika ili grupu u gornju formu za pregled ili uređivanje dozvola postavljenih za imenski prostor %s.'; +$lang['p_inherited'] = 'Napomena: Ove dozvole nisu postavljene eksplicitno već su naslijeđene od drugih grupa ili nadređenih imenskih prostora.'; +$lang['p_isadmin'] = 'Napomena: Odabrana grupa ili korisnik uvijek ima sve dozvole jer je postavljen kao superuser.'; +$lang['p_include'] = 'Više dozvole uključuju sve niže. Dozvole Kreiraj, Učitaj i Briši se primjenjuju samo na imenske prostore, ne stranice.'; +$lang['current'] = 'Trenutna ACL Pravila'; +$lang['where'] = 'Stranica/Imenski prostor'; +$lang['who'] = 'Korisnik/Grupa'; +$lang['perm'] = 'Dozvole'; +$lang['acl_perm0'] = 'Ništa'; +$lang['acl_perm1'] = 'Čitaj'; +$lang['acl_perm2'] = 'Uredi'; +$lang['acl_perm4'] = 'Kreiraj'; +$lang['acl_perm8'] = 'Učitaj'; +$lang['acl_perm16'] = 'Briši'; +$lang['acl_new'] = 'Dodaj novi Zapis'; +$lang['acl_mod'] = 'Promijeni Zapis'; -- cgit v1.2.3 From 4f616b5f20590d5f3a592bd53f2fc932968940d8 Mon Sep 17 00:00:00 2001 From: Christophe Martin Date: Sat, 30 Jul 2011 20:33:43 +0200 Subject: French language update --- lib/plugins/acl/lang/fr/lang.php | 1 + 1 file changed, 1 insertion(+) (limited to 'lib/plugins/acl') diff --git a/lib/plugins/acl/lang/fr/lang.php b/lib/plugins/acl/lang/fr/lang.php index 36323a51f..fd3f40dfc 100644 --- a/lib/plugins/acl/lang/fr/lang.php +++ b/lib/plugins/acl/lang/fr/lang.php @@ -21,6 +21,7 @@ * @author Florian Gaub * @author Samuel Dorsaz samuel.dorsaz@novelion.net * @author Johan Guilbaud + * @author schplurtz@laposte.net */ $lang['admin_acl'] = 'Gestion de la liste des contrôles d\'accès (ACL)'; $lang['acl_group'] = 'Groupe'; -- cgit v1.2.3 From 2b580f7af6af343aef14df02fb81a9ba382ae41a Mon Sep 17 00:00:00 2001 From: Adrian Lang Date: Fri, 19 Aug 2011 15:55:32 +0200 Subject: jQuerify acl plugin JavaScript --- lib/plugins/acl/admin.php | 3 +- lib/plugins/acl/script.js | 163 ++++++++++++++++++++-------------------------- lib/plugins/acl/style.css | 1 + 3 files changed, 74 insertions(+), 93 deletions(-) (limited to 'lib/plugins/acl') diff --git a/lib/plugins/acl/admin.php b/lib/plugins/acl/admin.php index 7c12b3374..53f6db0cc 100644 --- a/lib/plugins/acl/admin.php +++ b/lib/plugins/acl/admin.php @@ -540,7 +540,8 @@ class admin_plugin_acl extends DokuWiki_Admin_Plugin { function _html_li_acl($item){ - return '
  • '; + return '
  • '; } diff --git a/lib/plugins/acl/script.js b/lib/plugins/acl/script.js index 5b6c9ce1b..4fc97aeb5 100644 --- a/lib/plugins/acl/script.js +++ b/lib/plugins/acl/script.js @@ -3,16 +3,44 @@ * * @author Andreas Gohr */ -acl = { +var dw_acl = { /** * Initialize the object and attach the event handlers */ - init: function(){ - if(!jQuery('#acl_manager').length) return; //FIXME only one underscore!! + init: function () { + var $tree; - jQuery('#acl__user select').change(acl.userselhandler); - jQuery('#acl__tree').click(acl.treehandler); - jQuery('#acl__user input[type=submit]').click(acl.loadinfo); + //FIXME only one underscore!! + if (jQuery('#acl_manager').length === 0) { + return; + } + + jQuery('#acl__user select').change(dw_acl.userselhandler); + jQuery('#acl__user input[type=submit]').click(dw_acl.loadinfo); + + $tree = jQuery('#acl__tree'); + $tree.dw_tree({toggle_selector: 'img', + load_data: function (show_sublist, $clicky) { + // get the enclosed link and the edit form + var $frm = jQuery('#acl__detail form'); + + jQuery.post( + DOKU_BASE + 'lib/plugins/acl/ajax.php', + jQuery.extend(dw_acl.parseatt($clicky.parent().find('a')[0].search), + {ajax: 'tree', + current_ns: $frm.find('input[name=ns]').val(), + current_id: $frm.find('input[name=id]').val()}), + show_sublist, + 'html' + ); + }, + + toggle_display: function ($clicky, opening) { + $clicky.attr('src', + DOKU_BASE + 'lib/images/' + + (opening ? 'minus' : 'plus') + '.gif'); + }}); + $tree.delegate('a', 'click', dw_acl.treehandler); }, /** @@ -21,32 +49,20 @@ acl = { * Hides or shows the user/group entry box depending on what was selected in the * dropdown element */ - userselhandler: function(e){ + userselhandler: function () { // make entry field visible/invisible - if(this.value == '__g__' || this.value == '__u__'){ - jQuery('#acl__user input').show(); - }else{ - jQuery('#acl__user input').hide(); - } - acl.loadinfo(); + jQuery('#acl__user input').toggle(this.value === '__g__' || + this.value === '__u__'); + dw_acl.loadinfo(); }, /** * Load the current permission info and edit form */ - loadinfo: function(){ - var frm = jQuery('#acl__detail form')[0]; - + loadinfo: function () { jQuery('#acl__info').load( DOKU_BASE + 'lib/plugins/acl/ajax.php', - { - 'ns': frm.elements['ns'].value, - 'id': frm.elements['id'].value, - 'acl_t': frm.elements['acl_t'].value, - 'acl_w': frm.elements['acl_w'].value, - 'sectok': frm.elements['sectok'].value, - 'ajax': 'info', - } + jQuery('#acl__detail form').serialize() + '&ajax=info' ); return false; }, @@ -56,11 +72,13 @@ acl = { * * @todo put into global script lib? */ - parseatt: function(str){ - if(str[0] == '?') str = str.substr(1); + parseatt: function (str) { + if (str[0] === '?') { + str = str.substr(1); + } var attributes = {}; var all = str.split('&'); - for(var i=0; i - * @param DOMElement clicky - the plus/minus icon in front of a namespace + * Handles clicks to the tree nodes */ - treetoggle: function(clicky){ - var listitem = jQuery(clicky).parent().parent(); - - // if already open, close by removing the sublist - var sublists = listitem.find('ul'); - if(sublists.length){ - listitem.remove('ul'); - clicky.src = DOKU_BASE+'lib/images/plus.gif'; - clicky.alt = '+'; - return false; - } + treehandler: function () { + var $link, $frm; - // prepare new ul to load into it via ajax - var ul = document.createElement('ul'); - listitem[0].appendChild(ul); + $link = jQuery(this); - // get the enclosed link and the edit form - var link = listitem.find('a')[0]; - var frm = jQuery('#acl__detail form')[0]; + // remove highlighting + jQuery('#acl__tree a.cur').removeClass('cur'); - // prepare ajax data - var data = acl.parseatt(link.search); - data['ajax'] = 'tree'; - data['current_ns'] = frm.elements['ns'].value; - data['current_id'] = frm.elements['id'].value; + // add new highlighting + $link.addClass('cur'); - // run ajax - jQuery(ul).load(DOKU_BASE + 'lib/plugins/acl/ajax.php', data); - - clicky.src = DOKU_BASE+'lib/images/minus.gif'; - return false; - }, - - /** - * Handles all clicks in the tree, dispatching the right action based on the - * clicked element - * - * @param Event e The event object that caused the execution - */ - treehandler: function(e){ - if(e.target.src){ // is it an image? - acl.treetoggle(e.target); - } else if(e.target.href){ // is it a link? - // remove highlighting - jQuery('#acl__tree a.cur').removeClass('cur'); - - var link = jQuery(e.target); - - // add new highlighting - link.addClass('cur'); - - // set new page to detail form - var frm = jQuery('#acl__detail form')[0]; - if(link.hasClass('wikilink1')){ - jQuery('#acl__detail form input[name=ns]').val(''); - jQuery('#acl__detail form input[name=id]').val(acl.parseatt(link[0].search)['id']); - }else if(link.hasClass('idx_dir')){ - jQuery('#acl__detail form input[name=ns]').val(acl.parseatt(link[0].search)['ns']); - jQuery('#acl__detail form input[name=id]').val(''); - } - acl.loadinfo(); + // set new page to detail form + $frm = jQuery('#acl__detail form'); + if ($link.hasClass('wikilink1')) { + $frm.find('input[name=ns]').val(''); + $frm.find('input[name=id]').val(dw_acl.parseatt($link[0].search).id); + } else if ($link.hasClass('idx_dir')) { + $frm.find('input[name=ns]').val(dw_acl.parseatt($link[0].search).ns); + $frm.find('input[name=id]').val(''); } + dw_acl.loadinfo(); - e.stopPropagation(); - e.preventDefault(); return false; } - }; -jQuery(acl.init); +jQuery(dw_acl.init); + +var acl = { + init: DEPRECATED_WRAP(dw_acl.init, dw_acl), + userselhandler: DEPRECATED_WRAP(dw_acl.userselhandler, dw_acl), + loadinfo: DEPRECATED_WRAP(dw_acl.loadinfo, dw_acl), + parseatt: DEPRECATED_WRAP(dw_acl.parseatt, dw_acl), + treehandler: DEPRECATED_WRAP(dw_acl.treehandler, dw_acl) +}; diff --git a/lib/plugins/acl/style.css b/lib/plugins/acl/style.css index 0c5a9819b..b7154aa78 100644 --- a/lib/plugins/acl/style.css +++ b/lib/plugins/acl/style.css @@ -22,6 +22,7 @@ div#acl_manager div#acl__tree ul { div#acl_manager div#acl__tree li { padding-left: 1em; + list-style-image: none; } div#acl_manager div#acl__tree ul img { -- cgit v1.2.3 From b838050e5828b5cbf32b9e82ce11c9cc54592809 Mon Sep 17 00:00:00 2001 From: Piyush Mishra Date: Sat, 20 Aug 2011 19:11:52 +0530 Subject: added new plugins config cascade and added plugin.info.txt --- lib/plugins/acl/admin.php | 14 -------------- lib/plugins/acl/plugin.info.txt | 6 ++++++ 2 files changed, 6 insertions(+), 14 deletions(-) create mode 100644 lib/plugins/acl/plugin.info.txt (limited to 'lib/plugins/acl') diff --git a/lib/plugins/acl/admin.php b/lib/plugins/acl/admin.php index 53f6db0cc..a6b0624bc 100644 --- a/lib/plugins/acl/admin.php +++ b/lib/plugins/acl/admin.php @@ -30,20 +30,6 @@ class admin_plugin_acl extends DokuWiki_Admin_Plugin { var $usersgroups = array(); var $specials = array(); - /** - * return some info - */ - function getInfo(){ - return array( - 'author' => 'Andreas Gohr', - 'email' => 'andi@splitbrain.org', - 'date' => '2011-04-16', - 'name' => 'ACL Manager', - 'desc' => 'Manage Page Access Control Lists', - 'url' => 'http://dokuwiki.org/plugin:acl', - ); - } - /** * return prompt for admin menu */ diff --git a/lib/plugins/acl/plugin.info.txt b/lib/plugins/acl/plugin.info.txt new file mode 100644 index 000000000..f108a2390 --- /dev/null +++ b/lib/plugins/acl/plugin.info.txt @@ -0,0 +1,6 @@ +author Andreas Gohr +email andi@splitbrain.org +date 2011-04-16 +name ACL Manager +desc Manage Page Access Control Lists +url http://dokuwiki.org/plugin:acl -- cgit v1.2.3 From 9de3b5710719658ef75740c0bd930423cc7c209c Mon Sep 17 00:00:00 2001 From: Kate Arzamastseva Date: Sun, 21 Aug 2011 02:16:39 +0300 Subject: issue #44 uploader fixes, #45 browser testing --- lib/plugins/acl/script.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'lib/plugins/acl') diff --git a/lib/plugins/acl/script.js b/lib/plugins/acl/script.js index 5b6c9ce1b..a3dbbe0d2 100644 --- a/lib/plugins/acl/script.js +++ b/lib/plugins/acl/script.js @@ -45,7 +45,7 @@ acl = { 'acl_t': frm.elements['acl_t'].value, 'acl_w': frm.elements['acl_w'].value, 'sectok': frm.elements['sectok'].value, - 'ajax': 'info', + 'ajax': 'info' } ); return false; -- cgit v1.2.3 From e7f921dcad959dc0d27e53da4d77f5b1211c030a Mon Sep 17 00:00:00 2001 From: Oscar Ciudad Date: Sat, 27 Aug 2011 13:53:11 +0200 Subject: Spanish language update --- lib/plugins/acl/lang/es/lang.php | 1 + 1 file changed, 1 insertion(+) (limited to 'lib/plugins/acl') diff --git a/lib/plugins/acl/lang/es/lang.php b/lib/plugins/acl/lang/es/lang.php index 096320af9..91a4ca1a1 100644 --- a/lib/plugins/acl/lang/es/lang.php +++ b/lib/plugins/acl/lang/es/lang.php @@ -20,6 +20,7 @@ * @author Victor Castelan * @author Mauro Javier Giamberardino * @author emezeta + * @author Oscar Ciudad */ $lang['admin_acl'] = 'Administración de lista de control de acceso'; $lang['acl_group'] = 'Grupo'; -- cgit v1.2.3 From ab8fecc6efc832771505467be33a88e0cafec04e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Chmaj?= Date: Sat, 27 Aug 2011 13:54:16 +0200 Subject: Polish language update --- lib/plugins/acl/lang/pl/lang.php | 1 + 1 file changed, 1 insertion(+) (limited to 'lib/plugins/acl') diff --git a/lib/plugins/acl/lang/pl/lang.php b/lib/plugins/acl/lang/pl/lang.php index c954abe2a..a72b6af11 100644 --- a/lib/plugins/acl/lang/pl/lang.php +++ b/lib/plugins/acl/lang/pl/lang.php @@ -11,6 +11,7 @@ * @author Leszek Stachowski * @author maros * @author Grzegorz Widła + * @author Łukasz Chmaj */ $lang['admin_acl'] = 'Zarządzanie uprawnieniami'; $lang['acl_group'] = 'Grupa'; -- cgit v1.2.3 From c62a5f5846e3477044ebc93e96f98b878d3e7a59 Mon Sep 17 00:00:00 2001 From: Dedeco Date: Mon, 12 Sep 2011 21:53:15 +0200 Subject: pt-BR language update --- lib/plugins/acl/lang/pt-br/lang.php | 1 + 1 file changed, 1 insertion(+) (limited to 'lib/plugins/acl') diff --git a/lib/plugins/acl/lang/pt-br/lang.php b/lib/plugins/acl/lang/pt-br/lang.php index 0ebcbf509..a0c997600 100644 --- a/lib/plugins/acl/lang/pt-br/lang.php +++ b/lib/plugins/acl/lang/pt-br/lang.php @@ -18,6 +18,7 @@ * @author Luis Dantas * @author Sergio Motta sergio@cisne.com.br * @author Isaias Masiero Filho + * @author Balaco Baco */ $lang['admin_acl'] = 'Administração da Lista de Controles de Acesso'; $lang['acl_group'] = 'Grupo'; -- cgit v1.2.3 From 5e7a292691951a0fa0a18f06c8b9bcfb509a032d Mon Sep 17 00:00:00 2001 From: Adrian Lang Date: Fri, 9 Sep 2011 22:26:16 +0200 Subject: Various JavaScript improvements, JSLint, jQuery --- lib/plugins/acl/script.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'lib/plugins/acl') diff --git a/lib/plugins/acl/script.js b/lib/plugins/acl/script.js index 2598bcef8..d912a2407 100644 --- a/lib/plugins/acl/script.js +++ b/lib/plugins/acl/script.js @@ -33,7 +33,7 @@ var dw_acl = { show_sublist, 'html' ); - }, + }, toggle_display: function ($clicky, opening) { $clicky.attr('src', -- cgit v1.2.3 From 8b8998596af1a9dd2d4fcfac9f6b4393fcf69d57 Mon Sep 17 00:00:00 2001 From: Petros Vidalis Date: Mon, 19 Sep 2011 13:16:25 +0200 Subject: Greek language update --- lib/plugins/acl/lang/el/lang.php | 1 + 1 file changed, 1 insertion(+) (limited to 'lib/plugins/acl') diff --git a/lib/plugins/acl/lang/el/lang.php b/lib/plugins/acl/lang/el/lang.php index e2f6c35dc..e1cd26755 100644 --- a/lib/plugins/acl/lang/el/lang.php +++ b/lib/plugins/acl/lang/el/lang.php @@ -13,6 +13,7 @@ * @author Αθανάσιος Νταής * @author Konstantinos Koryllos * @author George Petsagourakis + * @author Petros Vidalis */ $lang['admin_acl'] = 'Διαχείριση Δικαιωμάτων Πρόσβασης'; $lang['acl_group'] = 'Ομάδα'; -- cgit v1.2.3 From b1ba68599b1aaf3242332cfd97b167f999fd788c Mon Sep 17 00:00:00 2001 From: Robert Bogenschneider Date: Mon, 19 Sep 2011 13:17:43 +0200 Subject: Esperanto language update --- lib/plugins/acl/lang/eo/lang.php | 1 + 1 file changed, 1 insertion(+) (limited to 'lib/plugins/acl') diff --git a/lib/plugins/acl/lang/eo/lang.php b/lib/plugins/acl/lang/eo/lang.php index 85b262e8c..239578f57 100644 --- a/lib/plugins/acl/lang/eo/lang.php +++ b/lib/plugins/acl/lang/eo/lang.php @@ -10,6 +10,7 @@ * @author Erik Pedersen * @author Robert Bogenschneider * @author Robert BOGENSCHNEIDER + * @author Robert BOGENSCHNEIDER */ $lang['admin_acl'] = 'Administrado de Alirkontrola Listo (ACL)'; $lang['acl_group'] = 'Grupo'; -- cgit v1.2.3 From f84d2dfd6f3df6ad2403af497075b0bb35393ffc Mon Sep 17 00:00:00 2001 From: Thomas Nygreen Date: Mon, 19 Sep 2011 13:20:27 +0200 Subject: Norwegian language update --- lib/plugins/acl/lang/no/lang.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'lib/plugins/acl') diff --git a/lib/plugins/acl/lang/no/lang.php b/lib/plugins/acl/lang/no/lang.php index 71df0b382..f0c92453c 100644 --- a/lib/plugins/acl/lang/no/lang.php +++ b/lib/plugins/acl/lang/no/lang.php @@ -40,7 +40,7 @@ $lang['perm'] = 'Tillatelser'; $lang['acl_perm0'] = 'Ingen'; $lang['acl_perm1'] = 'Lese'; $lang['acl_perm2'] = 'Redigere'; -$lang['acl_perm4'] = 'Lage'; +$lang['acl_perm4'] = 'Opprette'; $lang['acl_perm8'] = 'Laste opp'; $lang['acl_perm16'] = 'Slette'; $lang['acl_new'] = 'Legg til ny oppføring'; -- cgit v1.2.3 From 86e64c1709dfad1edceb5b0b2acdaade3b248d96 Mon Sep 17 00:00:00 2001 From: lainme Date: Mon, 19 Sep 2011 13:41:40 +0200 Subject: Simplified Chinese language update --- lib/plugins/acl/lang/zh/lang.php | 1 + 1 file changed, 1 insertion(+) (limited to 'lib/plugins/acl') diff --git a/lib/plugins/acl/lang/zh/lang.php b/lib/plugins/acl/lang/zh/lang.php index 581d08539..986fa769a 100644 --- a/lib/plugins/acl/lang/zh/lang.php +++ b/lib/plugins/acl/lang/zh/lang.php @@ -13,6 +13,7 @@ * @author caii * @author Hiphen Lee * @author caii, patent agent in China + * @author lainme993@gmail.com */ $lang['admin_acl'] = '访问控制列表(ACL)管理器'; $lang['acl_group'] = '组'; -- cgit v1.2.3 From bc64186ea372e1a6fde4a99f6a914e80357b95c4 Mon Sep 17 00:00:00 2001 From: Marius-Alex Olar Date: Mon, 10 Oct 2011 20:40:41 +0200 Subject: Romanian language update --- lib/plugins/acl/lang/ro/lang.php | 1 + 1 file changed, 1 insertion(+) (limited to 'lib/plugins/acl') diff --git a/lib/plugins/acl/lang/ro/lang.php b/lib/plugins/acl/lang/ro/lang.php index 296baa291..0c13d7223 100644 --- a/lib/plugins/acl/lang/ro/lang.php +++ b/lib/plugins/acl/lang/ro/lang.php @@ -8,6 +8,7 @@ * @author Emanuel-Emeric Andrași * @author Emanuel-Emeric Andraşi * @author Emanuel-Emeric Andrasi + * @author Marius OLAR */ $lang['admin_acl'] = 'Managementul Listei de Control a Accesului'; $lang['acl_group'] = 'Grup'; -- cgit v1.2.3 From f4aabe763b3ae83161819c991d4c7820523c3524 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rub=C3=A9n=20Figols?= Date: Mon, 10 Oct 2011 20:42:02 +0200 Subject: Spanish language update --- lib/plugins/acl/lang/es/lang.php | 1 + 1 file changed, 1 insertion(+) (limited to 'lib/plugins/acl') diff --git a/lib/plugins/acl/lang/es/lang.php b/lib/plugins/acl/lang/es/lang.php index 91a4ca1a1..ee50a7530 100644 --- a/lib/plugins/acl/lang/es/lang.php +++ b/lib/plugins/acl/lang/es/lang.php @@ -21,6 +21,7 @@ * @author Mauro Javier Giamberardino * @author emezeta * @author Oscar Ciudad + * @author Ruben Figols */ $lang['admin_acl'] = 'Administración de lista de control de acceso'; $lang['acl_group'] = 'Grupo'; -- cgit v1.2.3 From a17cd808475d1303cecfd340b2effc84541bc5d4 Mon Sep 17 00:00:00 2001 From: Kaeptn Haddock Date: Mon, 10 Oct 2011 20:43:38 +0200 Subject: German language update --- lib/plugins/acl/lang/de/lang.php | 1 + 1 file changed, 1 insertion(+) (limited to 'lib/plugins/acl') diff --git a/lib/plugins/acl/lang/de/lang.php b/lib/plugins/acl/lang/de/lang.php index 3c6bf8cf0..19bfcb0eb 100644 --- a/lib/plugins/acl/lang/de/lang.php +++ b/lib/plugins/acl/lang/de/lang.php @@ -19,6 +19,7 @@ * @author Robert Bogenschneider * @author Niels Lange * @author Christian Wichmann + * @author Paul Lachewsky */ $lang['admin_acl'] = 'Zugangsverwaltung'; $lang['acl_group'] = 'Gruppe'; -- cgit v1.2.3 From a76231726379ab65af1ce994b8d74e2ac814f8db Mon Sep 17 00:00:00 2001 From: Jeroen Roeterd Date: Mon, 10 Oct 2011 20:55:34 +0200 Subject: Dutch language update --- lib/plugins/acl/lang/nl/lang.php | 1 + 1 file changed, 1 insertion(+) (limited to 'lib/plugins/acl') diff --git a/lib/plugins/acl/lang/nl/lang.php b/lib/plugins/acl/lang/nl/lang.php index f9adb5f04..686909644 100644 --- a/lib/plugins/acl/lang/nl/lang.php +++ b/lib/plugins/acl/lang/nl/lang.php @@ -16,6 +16,7 @@ * @author Matthias Carchon webmaster@c-mattic.be * @author Marijn Hofstra * @author Timon Van Overveldt + * @author Jeroen */ $lang['admin_acl'] = 'Toegangsrechten'; $lang['acl_group'] = 'Groep'; -- cgit v1.2.3 From 71861ac4c5e2038488f9b59a3767a8877dec4a02 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jon=20Magne=20B=C3=B8e?= Date: Sun, 23 Oct 2011 06:53:57 +0200 Subject: Norwegian language update --- lib/plugins/acl/lang/no/lang.php | 1 + 1 file changed, 1 insertion(+) (limited to 'lib/plugins/acl') diff --git a/lib/plugins/acl/lang/no/lang.php b/lib/plugins/acl/lang/no/lang.php index f0c92453c..587f9c2fc 100644 --- a/lib/plugins/acl/lang/no/lang.php +++ b/lib/plugins/acl/lang/no/lang.php @@ -16,6 +16,7 @@ * @author Erik Pedersen * @author Erik Bjørn Pedersen * @author Rune Rasmussen syntaxerror.no@gmail.com + * @author Jon Bøe */ $lang['admin_acl'] = 'Administrasjon av lister for adgangskontroll (ACL)'; $lang['acl_group'] = 'Gruppe'; -- cgit v1.2.3 From 12e233d35a8c74cd22af40fedac47511c00d3d97 Mon Sep 17 00:00:00 2001 From: Pierre Corell Date: Thu, 27 Oct 2011 23:44:00 +0200 Subject: German language updates --- lib/plugins/acl/lang/de-informal/lang.php | 1 + lib/plugins/acl/lang/de/lang.php | 1 + 2 files changed, 2 insertions(+) (limited to 'lib/plugins/acl') diff --git a/lib/plugins/acl/lang/de-informal/lang.php b/lib/plugins/acl/lang/de-informal/lang.php index e24584a55..3f4b08c2a 100644 --- a/lib/plugins/acl/lang/de-informal/lang.php +++ b/lib/plugins/acl/lang/de-informal/lang.php @@ -7,6 +7,7 @@ * @author Marcel Metz * @author Matthias Schulte * @author Christian Wichmann + * @author Pierre Corell */ $lang['admin_acl'] = 'Zugriffskontrollsystem Management'; $lang['acl_group'] = 'Gruppe'; diff --git a/lib/plugins/acl/lang/de/lang.php b/lib/plugins/acl/lang/de/lang.php index 19bfcb0eb..eb23636c4 100644 --- a/lib/plugins/acl/lang/de/lang.php +++ b/lib/plugins/acl/lang/de/lang.php @@ -20,6 +20,7 @@ * @author Niels Lange * @author Christian Wichmann * @author Paul Lachewsky + * @author Pierre Corell */ $lang['admin_acl'] = 'Zugangsverwaltung'; $lang['acl_group'] = 'Gruppe'; -- cgit v1.2.3 From d9edf3516f5fb365c74220223e36698a092f63b1 Mon Sep 17 00:00:00 2001 From: Kiril Velikov Date: Thu, 27 Oct 2011 23:45:17 +0200 Subject: Bulgarian language update --- lib/plugins/acl/lang/bg/lang.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'lib/plugins/acl') diff --git a/lib/plugins/acl/lang/bg/lang.php b/lib/plugins/acl/lang/bg/lang.php index 0746e32c9..e260be918 100644 --- a/lib/plugins/acl/lang/bg/lang.php +++ b/lib/plugins/acl/lang/bg/lang.php @@ -21,7 +21,7 @@ $lang['p_group_ns'] = 'Членовете на групата Date: Sat, 5 Nov 2011 22:07:39 +0100 Subject: French strings minor fix and obsolete email address update --- lib/plugins/acl/lang/fr/lang.php | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'lib/plugins/acl') diff --git a/lib/plugins/acl/lang/fr/lang.php b/lib/plugins/acl/lang/fr/lang.php index fd3f40dfc..86f493b52 100644 --- a/lib/plugins/acl/lang/fr/lang.php +++ b/lib/plugins/acl/lang/fr/lang.php @@ -7,11 +7,10 @@ * @author Antoine Fixary * @author cumulus * @author Gwenn Gueguen - * @author Guy Brand + * @author Guy Brand * @author Fabien Chabreuil * @author Stéphane Chamberland * @author Maurice A. LeBlanc - * @author gb@isis.u-strasbg.fr * @author stephane.gully@gmail.com * @author Guillaume Turri * @author Erik Pedersen -- cgit v1.2.3