summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--inc/acl_admin.php121
-rw-r--r--inc/actions.php14
-rw-r--r--inc/admin_acl.php388
-rw-r--r--inc/html.php45
-rw-r--r--inc/template.php25
-rw-r--r--lang/de/acl_admin.txt3
-rw-r--r--lang/de/lang.php18
-rw-r--r--lang/en/acl_admin.txt3
-rw-r--r--lang/en/lang.php30
-rw-r--r--tpl/default/design.css15
-rw-r--r--tpl/default/images/interwiki.png (renamed from images/interwiki.png)bin1089 -> 1089 bytes
-rw-r--r--tpl/default/main.php1
12 files changed, 501 insertions, 162 deletions
diff --git a/inc/acl_admin.php b/inc/acl_admin.php
deleted file mode 100644
index f7cd7fbd7..000000000
--- a/inc/acl_admin.php
+++ /dev/null
@@ -1,121 +0,0 @@
-<?php
-/**
- * $ID is pagename, reads matching lines from $AUTH_ACL,
- * also reads acls from namespace
- * returns multi-array with key=pagename and value=array(user, acl)
- *
- * @author Frank Schubert <frank@schokilade.de>
- */
-function get_acl_config($ID){
- global $AUTH_ACL;
-
- $acl_config=array();
-
- // match exact name
- $matches = preg_grep('/^'.$ID.'\s+.*/',$AUTH_ACL);
- if(count($matches)){
- foreach($matches as $match){
- $match = preg_replace('/#.*$/','',$match); //ignore comments
- $acl = preg_split('/\s+/',$match);
- //0 is pagename, 1 is user, 2 is acl
- $acl_config["$acl[0]"][]=array($acl[1],$acl[2]);
- }
- }
-
- $specific_found=array();
- // match ns
- if(($ID=getNS($ID)) !== false){
- $matches = preg_grep('/^'.$ID.':\*\s+.*/',$AUTH_ACL);
- if(count($matches)){
- foreach($matches as $match){
- $match = preg_replace('/#.*$/','',$match); //ignore comments
- $acl = preg_split('/\s+/',$match);
- //0 is pagename, 1 is user, 2 is acl
- $acl_config["$acl[0]"][]=array($acl[1],$acl[2]);
- $specific_found[]=$acl[1];
- }
- }
- }
-
- //include *-config
- $matches = preg_grep('/^\*\s+.*/',$AUTH_ACL);
- if(count($matches)){
- foreach($matches as $match){
- $match = preg_replace('/#.*$/','',$match); //ignore comments
- $acl = preg_split('/\s+/',$match);
- // only include * for this user if not already found in ns
- if(!in_array($acl[1], $specific_found)){
- //0 is pagename, 1 is user, 2 is acl
- $acl_config["$acl[0]"][]=array($acl[1],$acl[2]);
- }
- }
- }
-
- //sort
- //FIXME: better sort algo: first sort by key, then sort by first value
- krsort($acl_config, SORT_STRING);
-
- return($acl_config);
-}
-
-/**
- * adds new acl-entry to conf/acl.auth
- *
- * @author Frank Schubert <frank@schokilade.de>
- */
-function acl_admin_add($acl_scope, $acl_user, $acl_level){
- if($acl_scope === '' || $acl_user === '' || $acl_level === '') { return false; }
-
- $acl_config = join("",file('conf/acl.auth'));
-
- // max level for pagenames is 2
- if(strpos("*", $acl_scope) === false) {
- if($acl_level > 2) { $acl_level = 2; }
- }
-
- $new_acl = "$acl_scope\t$acl_user\t$acl_level\n";
-
- $new_config = $acl_config.$new_acl;
-
- return io_saveFile("conf/acl.auth", $new_config);
-}
-
-/**
- * remove acl-entry from conf/acl.auth
- *
- * @author Frank Schubert <frank@schokilade.de>
- */
-function acl_admin_del($acl_scope, $acl_user, $acl_level){
- if($acl_scope === '' || $acl_user === '' || $acl_level === '') { return false; }
-
- $acl_pattern = preg_quote($acl_scope)."\s+".$acl_user."\s+".$acl_level."\n";
-
- $acl_config = file('conf/acl.auth');
-
- // save all non!-matching
- $new_config = preg_grep("/$acl_pattern/", $acl_config, PREG_GREP_INVERT);
-
- return io_saveFile("conf/acl.auth", join("",$new_config));
-}
-
-/**
- * change existing acl entries
- *
- * @author Frank Schubert <frank@schokilade.de>
- */
-function acl_admin_change($acl_scope, $acl_user, $acl_level, $acl_checkbox){
-
- $new_level = 0;
- if(is_array($acl_checkbox)) {
- foreach($acl_checkbox as $acl_num => $value){
- if( ($value == "on") &&
- ($acl_num > $new_level)) {
- $new_level = $acl_num;
- }
- }
- }
-
- acl_admin_del($acl_scope, $acl_user, $acl_level);
- acl_admin_add($acl_scope, $acl_user, $new_level);
-}
-?>
diff --git a/inc/actions.php b/inc/actions.php
index e660c136b..282d36ae7 100644
--- a/inc/actions.php
+++ b/inc/actions.php
@@ -59,9 +59,19 @@ function act_dispatch(){
$ACT = 'show';
}
+ //handle admin tasks
+ if($ACT == 'admin'){
+ if($_REQUEST['page'] == 'acl'){
+ require_once(DOKU_INC.'inc/admin_acl.php');
+ admin_acl_handler();
+ }
+ }
+
//call template FIXME: all needed vars available?
header('Content-Type: text/html; charset=utf-8');
include(DOKU_INC.'tpl/'.$conf['template'].'/main.php');
+ // output for the commands is now handled in inc/templates.php
+ // in function tpl_content()
}
/**
@@ -85,7 +95,7 @@ function act_clean($act){
if(!array_search($act,array('login','logout','register','save','edit',
'preview','export_raw','export_html',
'search','show','check','index','revisions',
- 'diff','recent','backlink',))){
+ 'diff','recent','backlink','admin',))){
msg('Unknown command: '.htmlspecialchars($act),-1);
return 'show';
}
@@ -108,6 +118,8 @@ function act_permcheck($act){
}
}elseif(in_array($act,array('login','register','search','recent'))){
$permneed = AUTH_NONE;
+ }elseif($act == 'admin'){
+ $permneed = AUTH_ADMIN;
}else{
$permneed = AUTH_READ;
}
diff --git a/inc/admin_acl.php b/inc/admin_acl.php
new file mode 100644
index 000000000..9732318f0
--- /dev/null
+++ b/inc/admin_acl.php
@@ -0,0 +1,388 @@
+<?php
+/**
+ * ACL administration functions
+ *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * @author Frank Schubert <frank@schokilade.de>
+ */
+
+function admin_acl_handler(){
+ $cmd = $_REQUEST['acl_cmd'];
+ $scope = $_REQUEST['acl_scope'];
+ $type = $_REQUEST['acl_type'];
+ $user = $_REQUEST['acl_user'];
+ $perm = $_REQUEST['acl_perm'];
+ if(is_array($perm)){
+ $perm = array_pop(sort($perm)); //use the maximum
+ }else{
+ $perm = 0;
+ }
+
+ //sanitize
+ $user = cleanID($user);
+ if($type == '@') $user = '@'.$user;
+ if($perm > AUTH_UPLOAD) $perm = AUTH_UPLOAD;
+ //FIXME sanitize scope!!!
+
+
+ //FIXME add should delete if nessary, too
+ if($cmd == 'add'){
+ admin_acl_add($scope, $user, $perm); //add feedback?
+ }elseif($cmd == 'update'){
+ admin_acl_del($scope, $user, $perm);
+ admin_acl_add($scope, $user, $perm);
+ }elseif($cmd == 'delete'){
+ admin_acl_del($scope, $user, $perm);
+ }
+
+}
+
+/**
+ * Get matching ACL lines for a page
+ *
+ * $ID is pagename, reads matching lines from $AUTH_ACL,
+ * also reads acls from namespace
+ * returns multi-array with key=pagename and value=array(user, acl)
+ *
+ * @todo Fix comment to make sense
+ * @todo should this moved to auth.php?
+ * @todo can this be combined with auth_aclcheck to avoid duplicate code?
+ * @author Frank Schubert <frank@schokilade.de>
+ */
+function get_acl_config($ID){
+ global $AUTH_ACL;
+
+ $acl_config=array();
+
+ // match exact name
+ $matches = preg_grep('/^'.$ID.'\s+.*/',$AUTH_ACL);
+ if(count($matches)){
+ foreach($matches as $match){
+ $match = preg_replace('/#.*$/','',$match); //ignore comments
+ $acl = preg_split('/\s+/',$match);
+ //0 is pagename, 1 is user, 2 is acl
+ $acl_config[$acl[0]][] = array( 'name' => $acl[1], 'perm' => $acl[2]);
+ }
+ }
+
+ $specific_found=array();
+ // match ns
+ if(($ID=getNS($ID)) !== false){
+ $matches = preg_grep('/^'.$ID.':\*\s+.*/',$AUTH_ACL);
+ if(count($matches)){
+ foreach($matches as $match){
+ $match = preg_replace('/#.*$/','',$match); //ignore comments
+ $acl = preg_split('/\s+/',$match);
+ //0 is pagename, 1 is user, 2 is acl
+ $acl_config[$acl[0]][] = array( 'name' => $acl[1], 'perm' => $acl[2]);
+ $specific_found[]=$acl[1];
+ }
+ }
+ }
+
+ //include *-config
+ $matches = preg_grep('/^\*\s+.*/',$AUTH_ACL);
+ if(count($matches)){
+ foreach($matches as $match){
+ $match = preg_replace('/#.*$/','',$match); //ignore comments
+ $acl = preg_split('/\s+/',$match);
+ // only include * for this user if not already found in ns
+ if(!in_array($acl[1], $specific_found)){
+ //0 is pagename, 1 is user, 2 is acl
+ $acl_config[$acl[0]][] = array( 'name' => $acl[1], 'perm' => $acl[2]);
+ }
+ }
+ }
+
+ //sort
+ //FIXME: better sort algo: first sort by key, then sort by first value
+ krsort($acl_config, SORT_STRING);
+
+ return($acl_config);
+}
+
+
+/**
+ * adds new acl-entry to conf/acl.auth
+ *
+ * @author Frank Schubert <frank@schokilade.de>
+ */
+function admin_acl_add($acl_scope, $acl_user, $acl_level){
+ if($acl_scope === '' || $acl_user === '' || $acl_level === '') return false;
+
+ $acl_config = join("",file('conf/acl.auth'));
+
+ // max level for pagenames is edit
+ if(strpos("*", $acl_scope) === false) {
+ if($acl_level > AUTH_EDIT) $acl_level = AUTH_EDIT;
+ }
+
+ $new_acl = "$acl_scope\t$acl_user\t$acl_level\n";
+
+ $new_config = $acl_config.$new_acl;
+
+ return io_saveFile("conf/acl.auth", $new_config);
+}
+
+/**
+ * remove acl-entry from conf/acl.auth
+ *
+ * @author Frank Schubert <frank@schokilade.de>
+ */
+function admin_acl_del($acl_scope, $acl_user, $acl_level){
+ if($acl_scope === '' || $acl_user === '' || $acl_level === '') return false;
+
+ $acl_pattern = preg_quote($acl_scope)."\s+".$acl_user."\s+".$acl_level."\n";
+
+ $acl_config = file('conf/acl.auth');
+
+ // save all non!-matching
+ $new_config = preg_grep("/$acl_pattern/", $acl_config, PREG_GREP_INVERT);
+
+ return io_saveFile("conf/acl.auth", join("",$new_config));
+}
+
+// --- HTML OUTPUT FUNCTIONS BELOW --- //
+
+/**
+ * ACL Output function
+ *
+ * print a table with all significant permissions for the
+ * current id
+ *
+ * @author Frank Schubert <frank@schokilade.de>
+ * @author Andreas Gohr <andi@splitbrain.org>
+ */
+function admin_acl_html(){
+ global $ID;
+
+ print parsedLocale('admin_acl');
+
+ ptln('<div class="acladmin"');
+ ptln('<table class="inline">');
+
+ //new
+ admin_acl_html_new();
+
+ //current config
+ $acls = get_acl_config($ID);
+ foreach ($acls as $id => $acl){
+ admin_acl_html_current($id,$acl);
+ }
+
+ ptln('</table>');
+ ptln('</div>');
+}
+
+/**
+ * print tablerows with the current permissions for one id
+ *
+ * @author Frank Schubert <frank@schokilade.de>
+ * @author Andreas Gohr <andi@splitbrain.org>
+ */
+function admin_acl_html_dropdown($id){
+ global $lang;
+ $cur = $id;
+ $ret = '';
+ $opt = array();
+
+ //prepare all options
+
+ // current page
+ $opt[] = array('key'=> $id, 'val'=> $id.' ('.$lang['page'].')');
+
+ // additional namespaces
+ while(($id=getNS($id)) !== false){
+ $opt[] = array('key'=> $id.':*', 'val'=> $id.':* ('.$lang['namespace'].')');
+ }
+
+ // the top namespace
+ $opt[] = array('key'=> '*', 'val'=> '* ('.$lang['namespace'].')');
+
+ // set sel on second entry (current namespace)
+ $opt[1]['sel'] = ' selected="selected"';
+
+ // flip options
+ $opt = array_reverse($opt);
+
+ // create HTML
+ $att = array( 'name' => 'acl_scope',
+ 'class' => 'edit',
+ 'title' => $lang['page'].'/'.$lang['namespace']);
+ $ret .= '<select '.html_attbuild($att).' />';
+ foreach($opt as $o){
+ $ret .= '<option value="'.$o['key'].'"'.$o['sel'].'>'.$o['val'].'</option>';
+ }
+ $ret .= '</select>';
+
+ return $ret;
+}
+
+/**
+ * print tablerows with the current permissions for one id
+ *
+ * @author Frank Schubert <frank@schokilade.de>
+ * @author Andreas Gohr <andi@splitbrain.org>
+ */
+function admin_acl_html_new(){
+ global $lang;
+ global $ID;
+
+ // table headers
+ ptln('<tr>',2);
+ ptln(' <th class="leftalign" colspan="3">'.$lang['acl_new'].'</th>',2);
+ ptln('</tr>',2);
+
+ ptln('<tr>',2);
+
+ ptln('<td class="centeralign" colspan="3">',4);
+
+ ptln(' <form method="post" action="'.wl($ID).'">',4);
+ ptln(' <input type="hidden" name="do" value="admin" />',4);
+ ptln(' <input type="hidden" name="page" value="acl" />',4);
+ ptln(' <input type="hidden" name="acl_cmd" value="add" />',4);
+
+ //scope select
+ ptln($lang['acl_perms'],4);
+ ptln(admin_acl_html_dropdown($ID),4);
+
+ $att = array( 'name' => 'acl_type',
+ 'class' => 'edit',
+ 'title' => $lang['acl_user'].'/'.$lang['acl_group']);
+ ptln(' <select '.html_attbuild($att).'>',4);
+ ptln(' <option value="@">'.$lang['acl_group'].'</option>',4);
+ ptln(' <option value="">'.$lang['acl_user'].'</option>',4);
+ ptln(' </select>',4);
+
+ $att = array( 'name' => 'acl_user',
+ 'type' => 'text',
+ 'class' => 'edit',
+ 'title' => $lang['acl_user'].'/'.$lang['acl_group']);
+ ptln(' <input '.html_attbuild($att).' />',4);
+ ptln(' <br />');
+
+ ptln( admin_acl_html_checkboxes(0,false,false),8);
+
+ ptln(' <input type="submit" class="edit" value="'.$lang['btn_save'].'" \>',4);
+ ptln(' </form>');
+
+
+
+
+ ptln('</tr>',2);
+
+}
+
+/**
+ * print tablerows with the current permissions for one id
+ *
+ * @author Frank Schubert <frank@schokilade.de>
+ * @author Andreas Gohr <andi@splitbrain.org>
+ */
+function admin_acl_html_current($id,$permissions){
+ global $lang;
+ global $ID;
+
+ //is it a page?
+ if(substr($id,-1) == '*'){
+ $ispage = false;
+ }else{
+ $ispage = true;
+ }
+
+ // table headers
+ ptln(' <tr>');
+ ptln(' <th class="leftalign" colspan="3">');
+ ptln($lang['acl_perms'],6);
+ if($ispage){
+ ptln($lang['page'],6);
+ }else{
+ ptln($lang['namespace'],6);
+ }
+ ptln('<em>'.$id.'</em>',6);
+ ptln(' </th>');
+ ptln(' </tr>');
+
+ foreach ($permissions as $conf){
+ //userfriendly group/user display
+ if(substr($conf['name'],0,1)=="@"){
+ $group = $lang['acl_group'];
+ $name = substr($conf['name'],1);
+ }else{
+ $group = $lang['acl_user'];
+ $name = $conf['name'];
+ }
+
+ ptln('<tr>',2);
+ ptln('<td class="leftalign">'.$group.' '.$name.'</th>',4);
+
+ // update form
+ ptln('<td class="centeralign">',4);
+ ptln(' <form method="post" action="'.wl($ID).'">',4);
+ ptln(' <input type="hidden" name="do" value="admin" />',4);
+ ptln(' <input type="hidden" name="page" value="acl" />',4);
+ ptln(' <input type="hidden" name="acl_cmd" value="update" />',4);
+ ptln(' <input type="hidden" name="acl_scope" value="'.formtext($id).'" />',4);
+ ptln(' <input type="hidden" name="acl_user" value="'.formtext($conf['name']).'" />',4);
+ ptln( admin_acl_html_checkboxes($conf['perm'],$ispage),8);
+ ptln(' <input type="submit" class="edit" value="'.$lang['btn_update'].'" \>',4);
+ ptln(' </form>');
+ ptln('</td>',4);
+
+
+ // deletion form
+
+ $ask = $lang['del_confirm'].'\\n';
+ $ask .= $id.' '.$conf['name'].' '.$conf['perm'];
+ ptln('<td class="centeralign">',4);
+ ptln(' <form method="post" action="'.wl($ID).'" onsubmit="return confirm(\''.$ask.'\')">',4);
+ ptln(' <input type="hidden" name="do" value="admin" />',4);
+ ptln(' <input type="hidden" name="page" value="acl" />',4);
+ ptln(' <input type="hidden" name="acl_cmd" value="delete" />',4);
+ ptln(' <input type="hidden" name="acl_scope" value="'.formtext($id).'" />',4);
+ ptln(' <input type="hidden" name="acl_user" value="'.formtext($conf['name']).'" />',4);
+ ptln(' <input type="submit" class="edit" value="'.$lang['btn_delete'].'" \>',4);
+ ptln(' </form>',4);
+ ptln('</td>',4);
+
+ ptln('</tr>',2);
+ }
+
+}
+
+
+/**
+ * print the permission checkboxes
+ *
+ * @author Frank Schubert <frank@schokilade.de>
+ * @author Andreas Gohr <andi@splitbrain.org>
+ */
+function admin_acl_html_checkboxes($setperm,$ispage,$submit=false){
+ global $lang;
+
+ static $label = 0; //number labels
+ $ret = '';
+
+ foreach(array(AUTH_READ,AUTH_EDIT,AUTH_CREATE,AUTH_UPLOAD) as $perm){
+ $label += 1;
+
+ //general checkbox attributes
+ $atts = array( 'type' => 'checkbox',
+ 'id' => 'pbox'.$label,
+ 'name' => 'aclperm[]',
+ 'value' => $perm );
+ //dynamic attributes
+ if($setperm >= $perm) $atts['checked'] = 'checked';
+ if($submit) $atts['onchange'] = 'submit()';
+ if($ispage && $perm > AUTH_EDIT) $atts['disabled'] = 'disabled';
+
+ //build code
+ $ret .= '<label for="pbox'.$label.'" title="'.$lang['acl_perm'.$perm].'">';
+ $ret .= '<input '.html_attbuild($atts).' />';
+ $ret .= $lang['acl_perm'.$perm];
+ $ret .= "</label>\n";
+ }
+ return $ret;
+}
+
+?>
diff --git a/inc/html.php b/inc/html.php
index df3f446b5..3b31c96ff 100644
--- a/inc/html.php
+++ b/inc/html.php
@@ -30,6 +30,19 @@ function html_wikilink($url,$name='',$search=''){
}
/**
+ * Helps building long attribute lists
+ *
+ * @author Andreas Gohr <andi@splitbrain.org>
+ */
+function html_attbuild($attributes){
+ $ret = '';
+ foreach ( $attributes as $key => $value ) {
+ $ret .= $key.'="'.formtext($value).'" ';
+ }
+ return trim($ret);
+}
+
+/**
* The loginform
*
* @author Andreas Gohr <andi@splitbrain.org>
@@ -1208,6 +1221,9 @@ function html_acl_admin(){
?>
<fieldset style="float:left; text-align:left; white-space:nowrap; width:320px;">
<legend><?=$lang['acl_admin']?></legend>
+
+
+<!-- XXXXXXXXXXXXX -->
<form name="acl_admin_add" method="post" action="<?=wl($ID)?>" accept-charset="<?=$lang['encoding']?>">
<input type="hidden" name="do" value="acl_admin_add" />
@@ -1241,17 +1257,20 @@ function html_acl_admin(){
</tr>
</table>
</form>
+<!-- XXXXXXXXXXXXX -->
</fieldset>
<div style="float:right;">
<fieldset>
<legend><?=$lang['acl_current']?></legend>
<div style="text-align:left">
+
+<!-- XXXXXXXXXXXXX -->
<?php
$acl_config=get_acl_config($ID);
foreach($acl_config as $pagename => $value){
if($pagename != '*') {
- $ID_cur=$pagename;
+ $ID_cur=$pagename;
while(($piece=getNS($ID_cur)) !== false){
$url="<a href='".wl($piece,'do=acl_admin')."'>".noNS($piece)."</a>:".$url;;
$ID_cur=$piece;
@@ -1262,6 +1281,8 @@ function html_acl_admin(){
}else{
print $pagename;
} ?>
+
+ <!-- XXXXXXXXXXXXX -->
<table class="inline">
<tr>
<th class="inline"></th>
@@ -1270,7 +1291,7 @@ function html_acl_admin(){
<th class="inline">W</th>
<th class="inline">C</th>
<th class="inline">U</th>
- <th class="inline">UPDATE</th>
+ <th class="inline">UPDATE</th>
<th class="inline">DELETE</th>
</tr>
<?php
@@ -1337,4 +1358,24 @@ function html_acl_admin(){
</div>
<?
}
+
+/**
+ * Print the admin overview page
+ *
+ * @author Andreas Gohr <andi@splitbrain.org>
+ */
+function html_admin(){
+ global $ID;
+ global $lang;
+
+ print parsedLocale('admin');
+
+ ptln('<ul class="admin">');
+
+ // currently ACL only - more to come
+ ptln('<li><a href="'.wl($ID,'do=admin&page=acl').'">'.$lang['admin_acl'].'</a></li>');
+
+ ptln('</ul>');
+}
+
?>
diff --git a/inc/template.php b/inc/template.php
index d52d5c7a0..8047a33d0 100644
--- a/inc/template.php
+++ b/inc/template.php
@@ -99,11 +99,28 @@ function tpl_content(){
case 'denied':
print parsedLocale('denied');
break;
+ case 'admin':
+ tpl_admin();
+ break;
default:
msg("Failed to handle command: ".hsc($ACT),-1);
}
}
+/**
+ * Handle the admin page contents
+ *
+ * @author Andreas Gohr <andi@splitbrain.org>
+ */
+function tpl_admin(){
+ switch($_REQUEST['page']){
+ case 'acl':
+ admin_acl_html();
+ break;
+ default:
+ html_admin();
+ }
+}
/**
* Print the correct HTML meta headers
@@ -184,12 +201,14 @@ function tpl_link($url,$name,$more=''){
* recent - recent changes
* login - login/logout button - if ACL enabled
* index - The index
+ * admin - admin page - if enough rights
* top - a back to top button
*
* @author Andreas Gohr <andi@splitbrain.org>
*/
function tpl_button($type){
global $ID;
+ global $INFO;
global $conf;
switch($type){
@@ -217,6 +236,12 @@ function tpl_button($type){
}
}
break;
+ case 'admin':
+ if($INFO['perm'] == AUTH_ADMIN)
+ print html_btn(admin,$ID,'',array('do' => 'admin'));
+ break;
+ default:
+ print '[unknown button type]';
}
}
diff --git a/lang/de/acl_admin.txt b/lang/de/acl_admin.txt
deleted file mode 100644
index 3693f82c7..000000000
--- a/lang/de/acl_admin.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-====== ACL-Administration ======
-
-Ansicht der vorhandenen ACL-Einstellungen und Konfiguration.
diff --git a/lang/de/lang.php b/lang/de/lang.php
index 1980c34b6..ce4a665c4 100644
--- a/lang/de/lang.php
+++ b/lang/de/lang.php
@@ -25,7 +25,7 @@ $lang['btn_index'] = 'Übersicht';
$lang['btn_secedit']= 'Bearbeiten';
$lang['btn_login'] = 'Einloggen';
$lang['btn_logout'] = 'Ausloggen';
-$lang['btn_acl_admin'] = 'ACL';
+$lang['btn_admin'] = 'Admin';
$lang['loggedinas'] = 'Eingeloggt als';
$lang['user'] = 'Benutzername';
@@ -101,21 +101,5 @@ $lang['qb_ul'] = 'Listenpunkt';
$lang['qb_media'] = 'Bilder und andere Dateien hinzufügen';
$lang['qb_sig'] = 'Unterschrift einfügen';
-$lang['acl_admin'] = 'Hinzuf&uuml;gen';
-$lang['acl_current']= 'Aktuelle Access Control Konfiguration';
-$lang['acl_user'] = 'Benutzer/Gruppe';
-$lang['acl_scope'] = 'Pagename/Namespace';
-$lang['acl_level'] = 'Zugriffslevel';
-$lang['acl_none'] = 'Keine';
-$lang['acl_read'] = 'Lesen';
-$lang['acl_edit'] = 'Bearbeiten';
-$lang['acl_create'] = 'Anlegen';
-$lang['acl_upload'] = 'Upload';
-$lang['acl_commit'] = 'Ausführen';
-$lang['acl_input_request'] = 'bitte wählen';
-$lang['acl_group'] = 'Gruppe';
-$lang['acl_user'] = 'Benutzer';
-$lang['acl_confirm_delete'] = 'Diesen Eintrag entfernen?';
-
//Setup VIM: ex: et ts=2 enc=utf-8 :
?>
diff --git a/lang/en/acl_admin.txt b/lang/en/acl_admin.txt
deleted file mode 100644
index e8a112619..000000000
--- a/lang/en/acl_admin.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-=== ACL-adminstration ===
-
-View current acl-configuration and change it.
diff --git a/lang/en/lang.php b/lang/en/lang.php
index f98e0d20d..206d82caf 100644
--- a/lang/en/lang.php
+++ b/lang/en/lang.php
@@ -24,7 +24,9 @@ $lang['btn_index'] = 'Index';
$lang['btn_secedit']= 'Edit';
$lang['btn_login'] = 'Login';
$lang['btn_logout'] = 'Logout';
-$lang['btn_acl_admin'] = 'ACL';
+$lang['btn_admin'] = 'Admin';
+$lang['btn_update'] = 'Update';
+$lang['btn_delete'] = 'Delete';
$lang['loggedinas'] = 'Logged in as';
$lang['user'] = 'Username';
@@ -99,21 +101,21 @@ $lang['qb_ul'] = 'Unordered List Item';
$lang['qb_media'] = 'Add Images and other files';
$lang['qb_sig'] = 'Insert Signature';
-$lang['acl_admin'] = 'New';
-$lang['acl_current']= 'Current Access Control Configuration';
-$lang['acl_user'] = 'User/Group';
-$lang['acl_scope'] = 'Pagename/Namespace';
-$lang['acl_level'] = 'Access Level';
-$lang['acl_none'] = 'None';
-$lang['acl_read'] = 'Read';
-$lang['acl_edit'] = 'Edit';
-$lang['acl_create'] = 'Create';
-$lang['acl_upload'] = 'Upload';
-$lang['acl_commit'] = 'Commit';
-$lang['acl_input_request'] = 'please select';
+$lang['del_confirm']= 'Delete this entry?';
+
+$lang['admin_acl'] = 'Access Control List Management...';
+
$lang['acl_group'] = 'Group';
$lang['acl_user'] = 'User';
-$lang['acl_confirm_delete'] = 'Delete this entry?';
+$lang['acl_perms'] = 'Permissions for';
+$lang['page'] = 'Page';
+$lang['namespace'] = 'Namespace';
+
+$lang['acl_perm1'] = 'Read';
+$lang['acl_perm2'] = 'Edit';
+$lang['acl_perm4'] = 'Create';
+$lang['acl_perm8'] = 'Upload';
+$lang['acl_new'] = 'Add new Entry';
//Setup VIM: ex: et ts=2 enc=utf-8 :
?>
diff --git a/tpl/default/design.css b/tpl/default/design.css
index 2bf7903ea..f25c88935 100644
--- a/tpl/default/design.css
+++ b/tpl/default/design.css
@@ -87,7 +87,7 @@ textarea.edit {
width:100%;
}
-input.edit {
+input.edit,select.edit {
font-size: 100%;
border: 1px solid #8cacbb;
height: 22px !important;
@@ -565,3 +565,16 @@ div.search_quickhits {
.footerinc a:hover img {
opacity: 1;
}
+
+/* ---- Admin --- */
+
+div.acladmin label {
+ text-align: left;
+ font-weight: normal;
+ display: inline;
+}
+
+div.acladmin table{
+ margin-left: 10%;
+ width: 80%;
+}
diff --git a/images/interwiki.png b/tpl/default/images/interwiki.png
index 73d6f8d39..73d6f8d39 100644
--- a/images/interwiki.png
+++ b/tpl/default/images/interwiki.png
Binary files differ
diff --git a/tpl/default/main.php b/tpl/default/main.php
index a19ee3217..091717142 100644
--- a/tpl/default/main.php
+++ b/tpl/default/main.php
@@ -98,6 +98,7 @@
<?tpl_button('history')?>
</div>
<div class="bar-right" id="bar_bottomright">
+ <?tpl_button('admin')?>
<?tpl_button('login')?>
<?tpl_button('index')?>
<?tpl_button('top')?>&nbsp;