diff options
61 files changed, 742 insertions, 253 deletions
diff --git a/_test/tests/inc/PassHash.test.php b/_test/tests/inc/PassHash.test.php new file mode 100644 index 000000000..b6cb07090 --- /dev/null +++ b/_test/tests/inc/PassHash.test.php @@ -0,0 +1,22 @@ +<?php + +/** + * Class PassHash_test + * + * most tests are in auth_password.test.php + */ +class PassHash_test extends PHPUnit_Framework_TestCase { + + function test_hmac(){ + // known hashes taken from https://code.google.com/p/yii/issues/detail?id=1942 + $this->assertEquals('df08aef118f36b32e29d2f47cda649b6', PassHash::hmac('md5','data','secret')); + $this->assertEquals('9818e3306ba5ac267b5f2679fe4abd37e6cd7b54', PassHash::hmac('sha1','data','secret')); + + // known hashes from https://en.wikipedia.org/wiki/Hash-based_message_authentication_code + $this->assertEquals('74e6f7298a9c2d168935f58c001bad88', PassHash::hmac('md5','','')); + $this->assertEquals('fbdb1d1b18aa6c08324b7d64b71fb76370690e1d', PassHash::hmac('sha1','','')); + $this->assertEquals('80070713463e7749b90c2dc24911e275', PassHash::hmac('md5','The quick brown fox jumps over the lazy dog','key')); + $this->assertEquals('de7c9b85b8b78aa6bc8a7a36f70a90701c9db4d9', PassHash::hmac('sha1','The quick brown fox jumps over the lazy dog','key')); + + } +}
\ No newline at end of file diff --git a/_test/tests/inc/common_basicinfo.test.php b/_test/tests/inc/common_basicinfo.test.php new file mode 100644 index 000000000..0369474c9 --- /dev/null +++ b/_test/tests/inc/common_basicinfo.test.php @@ -0,0 +1,64 @@ +<?php + +class common_infofunctions_test extends DokuWikiTest { + + function setup(){ + parent::setup(); + + global $USERINFO; + $USERINFO = array( + 'pass' => '179ad45c6ce2cb97cf1029e212046e81', + 'name' => 'Arthur Dent', + 'mail' => 'arthur@example.com', + 'grps' => array ('admin','user'), + ); + $_SERVER['REMOTE_USER'] = 'testuser'; + $_SERVER['REMOTE_ADDR'] = '1.2.3.4'; + } + + function _get_info() { + global $USERINFO; + $info = array (
+ 'isadmin' => true,
+ 'ismanager' => true, + 'userinfo' => $USERINFO,
+ 'perm' => 255,
+ 'namespace' => false,
+ 'ismobile' => false, + 'client' => 'testuser', + ); + + return $info; + } + + /** + * Its important to have the correct set of keys. + * Other functions provide the values + */ + function test_basicinfo(){ + // test with REMOTE_USER set and the user an admin user + $info = $this->_get_info(); + $this->assertEquals(basicinfo($ID,true),$info); + + // with $httpclient parameter set to false + unset($info['ismobile']); + $this->assertEquals(basicinfo($ID,false),$info); + + // with anonymous user + unset($_SERVER['REMOTE_USER']); + global $USERINFO; $USERINFO = array(); + + $info = array( + 'isadmin' => false, + 'ismanager' => false, + 'perm' => 8, + 'namespace' => false, + 'ismobile' => false, + 'client' => '1.2.3.4', + ); + $this->assertEquals(basicinfo($ID,true),$info); + } + +} + +//Setup VIM: ex: et ts=4 : diff --git a/_test/tests/inc/common_mediainfo.test.php b/_test/tests/inc/common_mediainfo.test.php new file mode 100644 index 000000000..0e67fbcd9 --- /dev/null +++ b/_test/tests/inc/common_mediainfo.test.php @@ -0,0 +1,49 @@ +<?php + +class common_basicinfo_test extends DokuWikiTest { + + function setup(){ + parent::setup(); + + global $USERINFO; + $USERINFO = array( + 'pass' => '179ad45c6ce2cb97cf1029e212046e81', + 'name' => 'Arthur Dent', + 'mail' => 'arthur@example.com', + 'grps' => array ('admin','user'), + ); + $_SERVER['REMOTE_USER'] = 'testuser'; + $_SERVER['REMOTE_ADDR'] = '1.2.3.4'; + } + + function _get_info() { + global $USERINFO; + $info = array (
+ 'isadmin' => true,
+ 'ismanager' => true, + 'userinfo' => $USERINFO,
+ 'perm' => 255,
+ 'namespace' => false,
+ 'ismobile' => false, + 'client' => 'testuser', + ); + + return $info; + } + + /** + * We're interested in the extra keys for $INFO when its a media request + */ + function test_mediainfo(){ + global $NS, $IMG; + $NS = ''; + $IMG = 'testimage.png'; + + $info = $this->_get_info(); + $info['image'] = 'testimage.png'; + + $this->assertEquals(mediainfo(),$info); + } +} + +//Setup VIM: ex: et ts=4 : diff --git a/_test/tests/inc/common_ml.test.php b/_test/tests/inc/common_ml.test.php index 0abfde37a..6f3b71db4 100644 --- a/_test/tests/inc/common_ml.test.php +++ b/_test/tests/inc/common_ml.test.php @@ -20,8 +20,8 @@ class common_ml_test extends DokuWikiTest { $args = array('a' => 'b', 'c' => 'd', 'q' => '&ä'); - $expect = DOKU_BASE . $this->script . '?a=b&c=d&q=%26%C3%A4&media=some:'; - $this->assertEquals($expect, ml('some:', $args)); + $expect = DOKU_BASE . $this->script . '?a=b&c=d&q=%26%C3%A4&media=some:img.jpg'; + $this->assertEquals($expect, ml('some:img.jpg', $args)); } function test_ml_args_string() { @@ -31,8 +31,8 @@ class common_ml_test extends DokuWikiTest { $args = 'a=b&c=d'; - $expect = DOKU_BASE . $this->script . '?a=b&c=d&media=some:'; - $this->assertEquals($expect, ml('some:', $args)); + $expect = DOKU_BASE . $this->script . '?a=b&c=d&media=some:img.png'; + $this->assertEquals($expect, ml('some:img.png', $args)); } function test_ml_args_comma_string() { @@ -42,8 +42,8 @@ class common_ml_test extends DokuWikiTest { $args = 'a=b,c=d'; - $expect = DOKU_BASE . $this->script . '?a=b&c=d&media=some:'; - $this->assertEquals($expect, ml('some:', $args)); + $expect = DOKU_BASE . $this->script . '?a=b&c=d&media=some:img.gif'; + $this->assertEquals($expect, ml('some:img.gif', $args)); } @@ -52,7 +52,7 @@ class common_ml_test extends DokuWikiTest { $conf['useslash'] = 0; $conf['userewrite'] = 0; - $id = 'some:'; + $id = 'some:img.png'; $w = 80; $args = array('w' => $w); $tok = media_get_token($id,$w,0); @@ -66,7 +66,7 @@ class common_ml_test extends DokuWikiTest { $conf['useslash'] = 0; $conf['userewrite'] = 0; - $id = 'some:'; + $id = 'some:img.png'; $w = 80; $args = 'w='.$w; $tok = media_get_token($id,$w,0); @@ -74,4 +74,41 @@ class common_ml_test extends DokuWikiTest { $expect = DOKU_BASE . $this->script . '?w='.$w.'&tok='.$tok.'&media='.$id; $this->assertEquals($expect, ml($id, $args)); } + + function test_ml_imgresize_array_rootid() { + global $conf; + $conf['useslash'] = 0; + $conf['userewrite'] = 0; + + $id = ':wiki:dokuwiki-128.png'; + $cleanid = 'wiki:dokuwiki-128.png'; + $w = 80; + $args = array('w' => $w); + $tok = media_get_token($cleanid, $w, 0); + + $expect = DOKU_BASE.$this->script.'?w='.$w.'&tok='.$tok.'&media='.$cleanid; + $this->assertEquals($expect, ml($id, $args)); + } + + function test_ml_imgresize_array_external() { + global $conf; + $conf['useslash'] = 0; + $conf['userewrite'] = 0; + + $ids = array( + 'https://example.com/lib/tpl/dokuwiki/images/logo.png', + 'http://example.com/lib/tpl/dokuwiki/images/logo.png', + 'ftp://example.com/lib/tpl/dokuwiki/images/logo.png' + ); + $w = 80; + $args = array('w' => $w); + + foreach($ids as $id) { + $tok = media_get_token($id, $w, 0); + $hash = substr(PassHash::hmac('md5', $id, auth_cookiesalt()), 0, 6); + + $expect = DOKU_BASE.$this->script.'?hash='.$hash.'&w='.$w.'&tok='.$tok.'&media='.rawurlencode($id); + $this->assertEquals($expect, ml($id, $args)); + } + } } diff --git a/_test/tests/inc/pageutils_clean_id.test.php b/_test/tests/inc/pageutils_clean_id.test.php index 9c5781b24..478fd2bc4 100644 --- a/_test/tests/inc/pageutils_clean_id.test.php +++ b/_test/tests/inc/pageutils_clean_id.test.php @@ -43,6 +43,10 @@ class init_clean_id_test extends DokuWikiTest { $tests[] = array('ns._#!ns:page','false','ns._ns:page'); $tests[] = array('ns_:page',false,'ns:page'); $tests[] = array('page...page','false','page...page'); + $tests[] = array(':page',false,'page'); + $tests[] = array(':ns:page',false,'ns:page'); + $tests[] = array('page:',false,'page'); + $tests[] = array('ns:page:',false,'ns:page'); $conf['useslash'] = 0; $tests[] = array('page/page',false,'page_page'); diff --git a/conf/mysql.conf.php.example b/conf/mysql.conf.php.example index 94bc14e1f..c67e77c45 100644 --- a/conf/mysql.conf.php.example +++ b/conf/mysql.conf.php.example @@ -1,6 +1,6 @@ <?php /* - * This is an example configuration for the mysql auth module. + * This is an example configuration for the mysql auth plugin. * * This SQL statements are optimized for following table structure. * If you use a different one you have to change them accordingly. @@ -23,29 +23,29 @@ * options carefully, otherwise you won't be able to access you * database. */ -$conf['auth']['mysql']['server'] = ''; -$conf['auth']['mysql']['user'] = ''; -$conf['auth']['mysql']['password'] = ''; -$conf['auth']['mysql']['database'] = ''; +$conf['plugin']['authmysql']['server'] = ''; +$conf['plugin']['authmysql']['user'] = ''; +$conf['plugin']['authmysql']['password'] = ''; +$conf['plugin']['authmysql']['database'] = ''; -/* This option enables debug messages in the mysql module. It is - * mostly usefull for system admins. +/* This option enables debug messages in the mysql plugin. It is + * mostly useful for system admins. */ -$conf['auth']['mysql']['debug'] = 0; +$conf['plugin']['authmysql']['debug'] = 0; /* Normally password encryption is done by DokuWiki (recommended) but for * some reasons it might be usefull to let the database do the encryption. * Set 'forwardClearPass' to '1' and the cleartext password is forwarded to * the database, otherwise the encrypted one. */ -$conf['auth']['mysql']['forwardClearPass'] = 0; +$conf['plugin']['authmysql']['forwardClearPass'] = 0; /* Multiple table operations will be protected by locks. This array tolds - * the module which tables to lock. If you use any aliases for table names + * the plugin which tables to lock. If you use any aliases for table names * these array must also contain these aliases. Any unamed alias will cause * a warning during operation. See the example below. */ -$conf['auth']['mysql']['TablesToLock']= array("users", "users AS u","groups", "groups AS g", "usergroup", "usergroup AS ug"); +$conf['plugin']['authmysql']['TablesToLock']= array("users", "users AS u","groups", "groups AS g", "usergroup", "usergroup AS ug"); /***********************************************************************/ /* Basic SQL statements for user authentication (required) */ @@ -56,19 +56,19 @@ $conf['auth']['mysql']['TablesToLock']= array("users", "users AS u","groups", "g * of the user. If the result table is empty or contains more than one * row, access will be denied. * - * The module access the password as 'pass' so a alias might be necessary. + * The plugin accesses the password as 'pass' so a alias might be necessary. * * Following patters will be replaced: * %{user} user name * %{pass} encrypted or clear text password (depends on 'encryptPass') * %{dgroup} default group name */ -$conf['auth']['mysql']['checkPass'] = "SELECT pass - FROM usergroup AS ug - JOIN users AS u ON u.uid=ug.uid - JOIN groups AS g ON g.gid=ug.gid - WHERE login='%{user}' - AND name='%{dgroup}'"; +$conf['plugin']['authmysql']['checkPass'] = "SELECT pass + FROM usergroup AS ug + JOIN users AS u ON u.uid=ug.uid + JOIN groups AS g ON g.gid=ug.gid + WHERE login='%{user}' + AND name='%{dgroup}'"; /* This statement should return a table with exact one row containing * information about one user. The field needed are: @@ -82,23 +82,23 @@ $conf['auth']['mysql']['checkPass'] = "SELECT pass * Following patters will be replaced: * %{user} user name */ -$conf['auth']['mysql']['getUserInfo'] = "SELECT pass, CONCAT(firstname,' ',lastname) AS name, email AS mail - FROM users - WHERE login='%{user}'"; +$conf['plugin']['authmysql']['getUserInfo'] = "SELECT pass, CONCAT(firstname,' ',lastname) AS name, email AS mail + FROM users + WHERE login='%{user}'"; /* This statement is used to get all groups a user is member of. The * result should be a table containing all groups the given user is - * member of. The module access the group name as 'group' so a alias + * member of. The plugin accesses the group name as 'group' so an alias * might be nessecary. * * Following patters will be replaced: * %{user} user name */ -$conf['auth']['mysql']['getGroups'] = "SELECT name as `group` - FROM groups g, users u, usergroup ug - WHERE u.uid = ug.uid - AND g.gid = ug.gid - AND u.login='%{user}'"; +$conf['plugin']['authmysql']['getGroups'] = "SELECT name as `group` + FROM groups g, users u, usergroup ug + WHERE u.uid = ug.uid + AND g.gid = ug.gid + AND u.login='%{user}'"; /***********************************************************************/ /* Additional minimum SQL statements to use the user manager */ @@ -106,7 +106,7 @@ $conf['auth']['mysql']['getGroups'] = "SELECT name as `group` /* This statement should return a table containing all user login names * that meet certain filter criteria. The filter expressions will be added - * case dependend by the module. At the end a sort expression will be added. + * case dependend by the plugin. At the end a sort expression will be added. * Important is that this list contains no double entries fo a user. Each * user name is only allowed once in the table. * @@ -118,15 +118,15 @@ $conf['auth']['mysql']['getGroups'] = "SELECT name as `group` * %{email} in FilterEmail user's email address * %{group} in FilterGroup group name */ -$conf['auth']['mysql']['getUsers'] = "SELECT DISTINCT login AS user - FROM users AS u - LEFT JOIN usergroup AS ug ON u.uid=ug.uid - LEFT JOIN groups AS g ON ug.gid=g.gid"; -$conf['auth']['mysql']['FilterLogin'] = "login LIKE '%{user}'"; -$conf['auth']['mysql']['FilterName'] = "CONCAT(firstname,' ',lastname) LIKE '%{name}'"; -$conf['auth']['mysql']['FilterEmail'] = "email LIKE '%{email}'"; -$conf['auth']['mysql']['FilterGroup'] = "name LIKE '%{group}'"; -$conf['auth']['mysql']['SortOrder'] = "ORDER BY login"; +$conf['plugin']['authmysql']['getUsers'] = "SELECT DISTINCT login AS user + FROM users AS u + LEFT JOIN usergroup AS ug ON u.uid=ug.uid + LEFT JOIN groups AS g ON ug.gid=g.gid"; +$conf['plugin']['authmysql']['FilterLogin'] = "login LIKE '%{user}'"; +$conf['plugin']['authmysql']['FilterName'] = "CONCAT(firstname,' ',lastname) LIKE '%{name}'"; +$conf['plugin']['authmysql']['FilterEmail'] = "email LIKE '%{email}'"; +$conf['plugin']['authmysql']['FilterGroup'] = "name LIKE '%{group}'"; +$conf['plugin']['authmysql']['SortOrder'] = "ORDER BY login"; /***********************************************************************/ /* Additional SQL statements to add new users with the user manager */ @@ -141,18 +141,18 @@ $conf['auth']['mysql']['SortOrder'] = "ORDER BY login"; * %{email} email address * %{name} user's full name */ -$conf['auth']['mysql']['addUser'] = "INSERT INTO users - (login, pass, email, firstname, lastname) - VALUES ('%{user}', '%{pass}', '%{email}', - SUBSTRING_INDEX('%{name}',' ', 1), - SUBSTRING_INDEX('%{name}',' ', -1))"; +$conf['plugin']['authmysql']['addUser'] = "INSERT INTO users + (login, pass, email, firstname, lastname) + VALUES ('%{user}', '%{pass}', '%{email}', + SUBSTRING_INDEX('%{name}',' ', 1), + SUBSTRING_INDEX('%{name}',' ', -1))"; /* This statement should add a group to the database. * Following patterns will be replaced: * %{group} group name */ -$conf['auth']['mysql']['addGroup'] = "INSERT INTO groups (name) - VALUES ('%{group}')"; +$conf['plugin']['authmysql']['addGroup'] = "INSERT INTO groups (name) + VALUES ('%{group}')"; /* This statement should connect a user to a group (a user become member * of that group). @@ -162,26 +162,26 @@ $conf['auth']['mysql']['addGroup'] = "INSERT INTO groups (name) * %{group} group name * %{gid} id of a group dataset */ -$conf['auth']['mysql']['addUserGroup']= "INSERT INTO usergroup (uid, gid) - VALUES ('%{uid}', '%{gid}')"; +$conf['plugin']['authmysql']['addUserGroup']= "INSERT INTO usergroup (uid, gid) + VALUES ('%{uid}', '%{gid}')"; /* This statement should remove a group fom the database. * Following patterns will be replaced: * %{group} group name * %{gid} id of a group dataset */ -$conf['auth']['mysql']['delGroup'] = "DELETE FROM groups - WHERE gid='%{gid}'"; +$conf['plugin']['authmysql']['delGroup'] = "DELETE FROM groups + WHERE gid='%{gid}'"; /* This statement should return the database index of a given user name. - * The module will access the index with the name 'id' so a alias might be + * The plugin will access the index with the name 'id' so a alias might be * necessary. * following patters will be replaced: * %{user} user name */ -$conf['auth']['mysql']['getUserID'] = "SELECT uid AS id - FROM users - WHERE login='%{user}'"; +$conf['plugin']['authmysql']['getUserID'] = "SELECT uid AS id + FROM users + WHERE login='%{user}'"; /***********************************************************************/ /* Additional SQL statements to delete users with the user manager */ @@ -192,16 +192,16 @@ $conf['auth']['mysql']['getUserID'] = "SELECT uid AS id * %{user} user's login name * %{uid} id of a user dataset */ -$conf['auth']['mysql']['delUser'] = "DELETE FROM users - WHERE uid='%{uid}'"; +$conf['plugin']['authmysql']['delUser'] = "DELETE FROM users + WHERE uid='%{uid}'"; /* This statement should remove all connections from a user to any group * (a user quits membership of all groups). * Following patterns will be replaced: * %{uid} id of a user dataset */ -$conf['auth']['mysql']['delUserRefs'] = "DELETE FROM usergroup - WHERE uid='%{uid}'"; +$conf['plugin']['authmysql']['delUserRefs'] = "DELETE FROM usergroup + WHERE uid='%{uid}'"; /***********************************************************************/ /* Additional SQL statements to modify users with the user manager */ @@ -218,13 +218,13 @@ $conf['auth']['mysql']['delUserRefs'] = "DELETE FROM usergroup * %{name} user's full name * %{uid} user id that should be updated */ -$conf['auth']['mysql']['updateUser'] = "UPDATE users SET"; -$conf['auth']['mysql']['UpdateLogin'] = "login='%{user}'"; -$conf['auth']['mysql']['UpdatePass'] = "pass='%{pass}'"; -$conf['auth']['mysql']['UpdateEmail'] = "email='%{email}'"; -$conf['auth']['mysql']['UpdateName'] = "firstname=SUBSTRING_INDEX('%{name}',' ', 1), - lastname=SUBSTRING_INDEX('%{name}',' ', -1)"; -$conf['auth']['mysql']['UpdateTarget']= "WHERE uid=%{uid}"; +$conf['plugin']['authmysql']['updateUser'] = "UPDATE users SET"; +$conf['plugin']['authmysql']['UpdateLogin'] = "login='%{user}'"; +$conf['plugin']['authmysql']['UpdatePass'] = "pass='%{pass}'"; +$conf['plugin']['authmysql']['UpdateEmail'] = "email='%{email}'"; +$conf['plugin']['authmysql']['UpdateName'] = "firstname=SUBSTRING_INDEX('%{name}',' ', 1), + lastname=SUBSTRING_INDEX('%{name}',' ', -1)"; +$conf['plugin']['authmysql']['UpdateTarget']= "WHERE uid=%{uid}"; /* This statement should remove a single connection from a user to a * group (a user quits membership of that group). @@ -235,19 +235,19 @@ $conf['auth']['mysql']['UpdateTarget']= "WHERE uid=%{uid}"; * %{group} group name * %{gid} id of a group dataset */ -$conf['auth']['mysql']['delUserGroup']= "DELETE FROM usergroup - WHERE uid='%{uid}' - AND gid='%{gid}'"; +$conf['plugin']['authmysql']['delUserGroup']= "DELETE FROM usergroup + WHERE uid='%{uid}' + AND gid='%{gid}'"; /* This statement should return the database index of a given group name. - * The module will access the index with the name 'id' so a alias might + * The plugin will access the index with the name 'id' so a alias might * be necessary. * * Following patters will be replaced: * %{group} group name */ -$conf['auth']['mysql']['getGroupID'] = "SELECT gid AS id - FROM groups - WHERE name='%{group}'"; +$conf['plugin']['authmysql']['getGroupID'] = "SELECT gid AS id + FROM groups + WHERE name='%{group}'"; diff --git a/conf/wordblock.conf b/conf/wordblock.conf index fe451f278..fc939a4d4 100644 --- a/conf/wordblock.conf +++ b/conf/wordblock.conf @@ -30,3 +30,4 @@ https?:\/\/(\S*?)(2-pay-secure|911essay|academia-research|anypapers|applicatione flatsinmumbai\.co\.in https?:\/\/(\S*?)penny-?stock mattressreview\.biz +(just|simply) (my|a) profile (site|webpage|page) @@ -9,7 +9,7 @@ */ // update message version -$updateVersion = 40; +$updateVersion = 40.1; // xdebug_start_profiling(); diff --git a/inc/PassHash.class.php b/inc/PassHash.class.php index 080fb4778..61bd74939 100644 --- a/inc/PassHash.class.php +++ b/inc/PassHash.class.php @@ -494,4 +494,51 @@ class PassHash { $this->init_salt($salt, 8, false); return ':B:'.$salt.':'.md5($salt.'-'.md5($clear)); } + + /** + * Wraps around native hash_hmac() or reimplents it + * + * This is not directly used as password hashing method, and thus isn't callable via the + * verify_hash() method. It should be used to create signatures and might be used in other + * password hashing methods. + * + * @see hash_hmac() + * @author KC Cloyd + * @link http://www.php.net/manual/en/function.hash-hmac.php#93440 + * + * @param string $algo Name of selected hashing algorithm (i.e. "md5", "sha256", "haval160,4", + * etc..) See hash_algos() for a list of supported algorithms. + * @param string $data Message to be hashed. + * @param string $key Shared secret key used for generating the HMAC variant of the message digest. + * @param bool $raw_output When set to TRUE, outputs raw binary data. FALSE outputs lowercase hexits. + * + * @return string + */ + public static function hmac($algo, $data, $key, $raw_output = false) { + // use native function if available and not in unit test + if(function_exists('hash_hmac') && !defined('SIMPLE_TEST')){ + return hash_hmac($algo, $data, $key, $raw_output); + } + + $algo = strtolower($algo); + $pack = 'H' . strlen($algo('test')); + $size = 64; + $opad = str_repeat(chr(0x5C), $size); + $ipad = str_repeat(chr(0x36), $size); + + if(strlen($key) > $size) { + $key = str_pad(pack($pack, $algo($key)), $size, chr(0x00)); + } else { + $key = str_pad($key, $size, chr(0x00)); + } + + for($i = 0; $i < strlen($key) - 1; $i++) { + $opad[$i] = $opad[$i] ^ $key[$i]; + $ipad[$i] = $ipad[$i] ^ $key[$i]; + } + + $output = $algo($opad . pack($pack, $algo($ipad . $data))); + + return ($raw_output) ? pack($pack, $output) : $output; + } } diff --git a/inc/auth.php b/inc/auth.php index 3f1f7925b..47b29eff7 100644 --- a/inc/auth.php +++ b/inc/auth.php @@ -54,23 +54,23 @@ function auth_setup() { } elseif ('auth' . $conf['authtype'] === $plugin) { // matches old auth backends (pre-Weatherwax) $auth = $plugin_controller->load('auth', $plugin); - msg('Your authtype setting is deprecated. You must set $conf[\'authtype\'] = ' . "auth" . $conf['authtype'] + msg('Your authtype setting is deprecated. You must set $conf[\'authtype\'] = "auth' . $conf['authtype'] . '"' . ' in your configuration (see <a href="https://www.dokuwiki.org/auth">Authentication Backends</a>)',-1,'','',MSG_ADMINS_ONLY); } } - if(!isset($auth) || !$auth){ + if(!isset($auth) || !$auth){ msg($lang['authtempfail'], -1); return false; } if ($auth->success == false) { - // degrade to unauthenticated user - unset($auth); - auth_logoff(); - msg($lang['authtempfail'], -1); + // degrade to unauthenticated user + unset($auth); + auth_logoff(); + msg($lang['authtempfail'], -1); return false; - } + } // do the login either by cookie or provided credentials XXX $INPUT->set('http_credentials', false); @@ -678,27 +678,41 @@ function auth_nameencode($name, $skip_group = false) { /** * Create a pronouncable password * - * @author Andreas Gohr <andi@splitbrain.org> - * @link http://www.phpbuilder.com/annotate/message.php3?id=1014451 + * The $foruser variable might be used by plugins to run additional password + * policy checks, but is not used by the default implementation + * + * @author Andreas Gohr <andi@splitbrain.org> + * @link http://www.phpbuilder.com/annotate/message.php3?id=1014451 + * @triggers AUTH_PASSWORD_GENERATE * + * @param string $foruser username for which the password is generated * @return string pronouncable password */ -function auth_pwgen() { - $pw = ''; - $c = 'bcdfghjklmnprstvwz'; //consonants except hard to speak ones - $v = 'aeiou'; //vowels - $a = $c.$v; //both - - //use two syllables... - for($i = 0; $i < 2; $i++) { - $pw .= $c[rand(0, strlen($c) - 1)]; - $pw .= $v[rand(0, strlen($v) - 1)]; - $pw .= $a[rand(0, strlen($a) - 1)]; +function auth_pwgen($foruser = '') { + $data = array( + 'password' => '', + 'foruser' => $foruser + ); + + $evt = new Doku_Event('AUTH_PASSWORD_GENERATE', $data); + if($evt->advise_before(true)) { + $c = 'bcdfghjklmnprstvwz'; //consonants except hard to speak ones + $v = 'aeiou'; //vowels + $a = $c.$v; //both + $s = '!$%&?+*~#-_:.;,'; // specials + + //use thre syllables... + for($i = 0; $i < 3; $i++) { + $data['password'] .= $c[mt_rand(0, strlen($c) - 1)]; + $data['password'] .= $v[mt_rand(0, strlen($v) - 1)]; + $data['password'] .= $a[mt_rand(0, strlen($a) - 1)]; + } + //... and add a nice number and special + $data['password'] .= mt_rand(10, 99).$s[mt_rand(0, strlen($s) - 1)]; } - //... and add a nice number - $pw .= rand(10, 99); + $evt->advise_after(); - return $pw; + return $data['password']; } /** @@ -765,7 +779,7 @@ function register() { } if($conf['autopasswd']) { - $pass = auth_pwgen(); // automatically generate password + $pass = auth_pwgen($login); // automatically generate password } elseif(empty($pass) || empty($passchk)) { msg($lang['regmissing'], -1); // complain about missing passwords return false; @@ -958,7 +972,7 @@ function act_resendpwd() { } else { // autogenerate the password and send by mail - $pass = auth_pwgen(); + $pass = auth_pwgen($user); if(!$auth->triggerUserMod('modify', array($user, array('pass' => $pass)))) { msg('error modifying user data', -1); return false; @@ -993,7 +1007,7 @@ function act_resendpwd() { } // generate auth token - $token = md5(auth_cookiesalt().$user); //secret but user based + $token = md5(uniqid(mt_rand(), true)); // random secret $tfile = $conf['cachedir'].'/'.$token{0}.'/'.$token.'.pwauth'; $url = wl('', array('do'=> 'resendpwd', 'pwauth'=> $token), true, '&'); diff --git a/inc/common.php b/inc/common.php index 4d939ac77..b292fb75e 100644 --- a/inc/common.php +++ b/inc/common.php @@ -56,7 +56,7 @@ function stripctl($string) { * @return string */ function getSecurityToken() { - return md5(auth_cookiesalt().session_id().$_SERVER['REMOTE_USER']); + return PassHash::hmac('md5', session_id().$_SERVER['REMOTE_USER'], auth_cookiesalt()); } /** @@ -86,32 +86,20 @@ function formSecurityToken($print = true) { } /** - * Return info about the current document as associative - * array. + * Determine basic information for a request of $id * * @author Andreas Gohr <andi@splitbrain.org> + * @author Chris Smith <chris@jalakai.co.uk> */ -function pageinfo() { - global $ID; - global $REV; - global $RANGE; +function basicinfo($id, $htmlClient=true){ global $USERINFO; - global $lang; - - // include ID & REV not redundant, as some parts of DokuWiki may temporarily change $ID, e.g. p_wiki_xhtml - // FIXME ... perhaps it would be better to ensure the temporary changes weren't necessary - $info['id'] = $ID; - $info['rev'] = $REV; // set info about manager/admin status. $info['isadmin'] = false; $info['ismanager'] = false; if(isset($_SERVER['REMOTE_USER'])) { - $sub = new Subscription(); - $info['userinfo'] = $USERINFO; - $info['perm'] = auth_quickaclcheck($ID); - $info['subscribed'] = $sub->user_subscription(); + $info['perm'] = auth_quickaclcheck($id); $info['client'] = $_SERVER['REMOTE_USER']; if($info['perm'] == AUTH_ADMIN) { @@ -127,12 +115,46 @@ function pageinfo() { } } else { - $info['perm'] = auth_aclcheck($ID, '', null); - $info['subscribed'] = false; + $info['perm'] = auth_aclcheck($id, '', null); $info['client'] = clientIP(true); } - $info['namespace'] = getNS($ID); + $info['namespace'] = getNS($id); + + // mobile detection + if ($htmlClient) { + $info['ismobile'] = clientismobile(); + } + + return $info; + } + +/** + * Return info about the current document as associative + * array. + * + * @author Andreas Gohr <andi@splitbrain.org> + */ +function pageinfo() { + global $ID; + global $REV; + global $RANGE; + global $lang; + + $info = basicinfo($ID); + + // include ID & REV not redundant, as some parts of DokuWiki may temporarily change $ID, e.g. p_wiki_xhtml + // FIXME ... perhaps it would be better to ensure the temporary changes weren't necessary + $info['id'] = $ID; + $info['rev'] = $REV; + + if(isset($_SERVER['REMOTE_USER'])) {
+ $sub = new Subscription(); + $info['subscribed'] = $sub->user_subscription(); + } else { + $info['subscribed'] = false; + } + $info['locked'] = checklock($ID); $info['filepath'] = fullpath(wikiFN($ID)); $info['exists'] = @file_exists($info['filepath']); @@ -210,8 +232,18 @@ function pageinfo() { } } - // mobile detection - $info['ismobile'] = clientismobile(); + return $info; +} + +/** + * Return information about the current media item as an associative array. + */ +function mediainfo(){ + global $NS; + global $IMG; + + $info = basicinfo("$NS:*"); + $info['image'] = $IMG; return $info; } @@ -435,6 +467,11 @@ function exportlink($id = '', $format = 'raw', $more = '', $abs = false, $sep = */ function ml($id = '', $more = '', $direct = true, $sep = '&', $abs = false) { global $conf; + $isexternalimage = preg_match('#^(https?|ftp)://#i', $id); + if(!$isexternalimage) { + $id = cleanID($id); + } + if(is_array($more)) { // add token for resized images if($more['w'] || $more['h']){ @@ -467,10 +504,10 @@ function ml($id = '', $more = '', $direct = true, $sep = '&', $abs = false) } // external URLs are always direct without rewriting - if(preg_match('#^(https?|ftp)://#i', $id)) { + if($isexternalimage) { $xlink .= 'lib/exe/fetch.php'; // add hash: - $xlink .= '?hash='.substr(md5(auth_cookiesalt().$id), 0, 6); + $xlink .= '?hash='.substr(PassHash::hmac('md5', $id, auth_cookiesalt()), 0, 6); if($more) { $xlink .= $sep.$more; $xlink .= $sep.'media='.rawurlencode($id); @@ -552,12 +589,13 @@ function checkwordblock($text = '') { global $TEXT; global $PRE; global $SUF; + global $SUM; global $conf; global $INFO; if(!$conf['usewordblock']) return false; - if(!$text) $text = "$PRE $TEXT $SUF"; + if(!$text) $text = "$PRE $TEXT $SUF $SUM"; // we prepare the text a tiny bit to prevent spammers circumventing URL checks $text = preg_replace('!(\b)(www\.[\w.:?\-;,]+?\.[\w.:?\-;,]+?[\w/\#~:.?+=&%@\!\-.:?\-;,]+?)([.:?\-;,]*[^\w/\#~:.?+=&%@\!\-.:?\-;,])!i', '\1http://\2 \2\3', $text); diff --git a/inc/fetch.functions.php b/inc/fetch.functions.php index 5801e96fa..ea524a37a 100644 --- a/inc/fetch.functions.php +++ b/inc/fetch.functions.php @@ -99,7 +99,7 @@ function checkFileStatus(&$media, &$file, $rev = '', $width=0, $height=0) { //media to local file if(preg_match('#^(https?)://#i', $media)) { //check hash - if(substr(md5(auth_cookiesalt().$media), 0, 6) !== $INPUT->str('hash')) { + if(substr(PassHash::hmac('md5', $media, auth_cookiesalt()), 0, 6) !== $INPUT->str('hash')) { return array(412, 'Precondition Failed'); } //handle external images diff --git a/inc/infoutils.php b/inc/infoutils.php index 9fe5ee689..71e642995 100644 --- a/inc/infoutils.php +++ b/inc/infoutils.php @@ -107,8 +107,8 @@ function check(){ msg('DokuWiki version: '.getVersion(),1); } - if(version_compare(phpversion(),'5.1.2','<')){ - msg('Your PHP version is too old ('.phpversion().' vs. 5.1.2+ needed)',-1); + if(version_compare(phpversion(),'5.2.0','<')){ + msg('Your PHP version is too old ('.phpversion().' vs. 5.2.0+ needed)',-1); }else{ msg('PHP version '.phpversion(),1); } diff --git a/inc/lang/ko/draft.txt b/inc/lang/ko/draft.txt index f7787f981..b655d7c92 100644 --- a/inc/lang/ko/draft.txt +++ b/inc/lang/ko/draft.txt @@ -1,5 +1,5 @@ ====== 문서 초안 있음 ====== -이 문서의 마지막 편집 세션은 정상적으로 끝나지 않았습니다. DokuWiki는 작업 도중 자동으로 저장된 문서 초안을 사용하여 편집을 계속 할 수 있습니다. 마지막 세션 동안 저장된 문서 초안을 아래에서 볼 수 있습니다. +이 문서의 마지막 편집 세션은 정상적으로 끝나지 않았습니다. DokuWiki는 작업 도중 자동으로 저장된 문서 초안을 사용해 편집을 계속 할 수 있습니다. 마지막 세션 동안 저장된 문서 초안을 아래에서 볼 수 있습니다. 비정상적으로 끝난 편집 세션을 **되돌릴**지 여부를 결정하고, 자동으로 저장되었던 초안을 **삭제**하거나 편집 과정을 **취소**하세요.
\ No newline at end of file diff --git a/inc/lang/ko/lang.php b/inc/lang/ko/lang.php index 76d6a535d..76684659c 100644 --- a/inc/lang/ko/lang.php +++ b/inc/lang/ko/lang.php @@ -160,7 +160,7 @@ $lang['accessdenied'] = '이 문서를 볼 권한이 없습니다.'; $lang['mediausage'] = '이 파일을 참고하려면 다음 문법을 사용하세요:'; $lang['mediaview'] = '원본 파일 보기'; $lang['mediaroot'] = '루트 (root)'; -$lang['mediaupload'] = '파일을 현재 이름공간으로 올립니다. 하위 이름공간으로 만들려면 선택한 파일 이름 앞에 쌍점(:)으로 구분되는 이름을 붙이면 됩니다. 파일을 드래그 앤 드롭하여 선택할 수 있습니다.'; +$lang['mediaupload'] = '파일을 현재 이름공간으로 올립니다. 하위 이름공간으로 만들려면 선택한 파일 이름 앞에 쌍점(:)으로 구분되는 이름을 붙이면 됩니다. 파일을 드래그 앤 드롭해 선택할 수 있습니다.'; $lang['mediaextchange'] = '파일 확장자가 .%s에서 .%s(으)로 바뀌었습니다!'; $lang['reference'] = '참고'; $lang['ref_inuse'] = '다음 문서에서 아직 사용 중이므로 파일을 삭제할 수 없습니다:'; @@ -218,7 +218,7 @@ $lang['qb_hs'] = '문단 제목 선택'; $lang['qb_hplus'] = '상위 문단 제목'; $lang['qb_hminus'] = '하위 문단 제목'; $lang['qb_hequal'] = '동급 문단 제목'; -$lang['qb_link'] = '내부 링크'; +$lang['qb_link'] = '안쪽 링크'; $lang['qb_extlink'] = '바깥 링크'; $lang['qb_hr'] = '가로줄'; $lang['qb_ol'] = '순서 있는 목록'; @@ -231,7 +231,7 @@ $lang['upperns'] = '상위 이름공간으로 이동'; $lang['admin_register'] = '새 사용자 추가'; $lang['metaedit'] = '메타 데이터 편집'; $lang['metasaveerr'] = '메타 데이터 쓰기 실패'; -$lang['metasaveok'] = '메타 데이타 저장됨'; +$lang['metasaveok'] = '메타 데이터 저장됨'; $lang['img_backto'] = '뒤로'; $lang['img_title'] = '이름'; $lang['img_caption'] = '설명'; @@ -304,7 +304,7 @@ $lang['media_uploadtab'] = '올리기'; $lang['media_searchtab'] = '찾기'; $lang['media_file'] = '파일'; $lang['media_viewtab'] = '보기'; -$lang['media_edittab'] = '수정'; +$lang['media_edittab'] = '편집'; $lang['media_historytab'] = '역사'; $lang['media_list_thumbs'] = '섬네일'; $lang['media_list_rows'] = '목록'; @@ -318,7 +318,7 @@ $lang['media_view'] = '%s'; $lang['media_viewold'] = '%s (%s에 있음)'; $lang['media_edit'] = '%s 편집'; $lang['media_history'] = '%s 바뀜 내역'; -$lang['media_meta_edited'] = '메타데이터가 수정됨'; +$lang['media_meta_edited'] = '메타 데이터 편집됨'; $lang['media_perm_read'] = '이 파일을 읽을 권한이 없습니다.'; $lang['media_perm_upload'] = '파일을 올릴 권한이 없습니다.'; $lang['media_update'] = '새 판 올리기'; diff --git a/inc/lang/ko/login.txt b/inc/lang/ko/login.txt index 160b899d3..f8af4100f 100644 --- a/inc/lang/ko/login.txt +++ b/inc/lang/ko/login.txt @@ -1,3 +1,3 @@ ====== 로그인 ====== -로그인하지 않았습니다! 아래에서 로그인하세요. 로그인하려면 쿠키를 받도록 설정하여야 합니다.
\ No newline at end of file +로그인하지 않았습니다! 아래에서 로그인하세요. 로그인하려면 쿠키를 활성화해야 합니다.
\ No newline at end of file diff --git a/inc/lang/ko/newpage.txt b/inc/lang/ko/newpage.txt index 8db34f9cf..fa7864610 100644 --- a/inc/lang/ko/newpage.txt +++ b/inc/lang/ko/newpage.txt @@ -1,3 +1,3 @@ ====== 이 주제는 아직 없습니다 ====== -아직 없는 주제에 대한 링크를 따라왔습니다. **문서 만들기** 버튼을 클릭하여 새로 만들 수 있습니다.
\ No newline at end of file +아직 없는 주제에 대한 링크를 따라왔습니다. **문서 만들기** 버튼을 클릭해 새로 만들 수 있습니다.
\ No newline at end of file diff --git a/inc/lang/ko/norev.txt b/inc/lang/ko/norev.txt index 3e203b235..246f3e4f6 100644 --- a/inc/lang/ko/norev.txt +++ b/inc/lang/ko/norev.txt @@ -1,3 +1,3 @@ ====== 지정한 판 없음 ====== -지정한 판이 존재하지 않습니다. **이전 판** 버튼을 사용하여 이 문서의 이전 판 목록을 보세요.
\ No newline at end of file +지정한 판이 존재하지 않습니다. **이전 판** 버튼을 사용해 이 문서의 이전 판 목록을 보세요.
\ No newline at end of file diff --git a/inc/lang/ko/read.txt b/inc/lang/ko/read.txt index c510b598e..8f080fcb1 100644 --- a/inc/lang/ko/read.txt +++ b/inc/lang/ko/read.txt @@ -1 +1 @@ -이 문서는 읽기 전용입니다. 내용을 볼 수는 있지만 수정할 수는 없습니다. 문제가 있다고 생각하면 관리자에게 문의하세요.
\ No newline at end of file +이 문서는 읽기 전용입니다. 내용을 볼 수는 있지만 바꿀 수는 없습니다. 문제가 있다고 생각하면 관리자에게 문의하세요.
\ No newline at end of file diff --git a/inc/lang/ko/searchpage.txt b/inc/lang/ko/searchpage.txt index 8cc003950..d3b37ec7c 100644 --- a/inc/lang/ko/searchpage.txt +++ b/inc/lang/ko/searchpage.txt @@ -1,5 +1,5 @@ ====== 찾기 ====== -아래에서 찾기 결과를 볼 수 있습니다. 만일 원하는 문서를 찾지 못하였다면, **문서 만들기**나 **문서 편집** 버튼을 사용하여 쿼리 내용과 같은 이름의 문서를 만들거나 편집할 수 있습니다. +아래에서 찾기 결과를 볼 수 있습니다. 만일 원하는 문서를 찾지 못하였다면, **문서 만들기**나 **문서 편집** 버튼을 사용해 쿼리 내용과 같은 이름의 문서를 만들거나 편집할 수 있습니다. ===== 결과 =====
\ No newline at end of file diff --git a/inc/lang/ko/subscr_digest.txt b/inc/lang/ko/subscr_digest.txt index b67cc9bbc..6db7b963c 100644 --- a/inc/lang/ko/subscr_digest.txt +++ b/inc/lang/ko/subscr_digest.txt @@ -12,7 +12,7 @@ 이 문서의 알림을 취소하려면, @DOKUWIKIURL@에 로그인한 뒤 -@SUBSCRIBE@ 문서를 방문하여 문서나 이름공간의 구독을 취소하세요. +@SUBSCRIBE@ 문서를 방문해 문서나 이름공간의 구독을 취소하세요. -- @DOKUWIKIURL@의 DokuWiki가 자동으로 만들어낸 메일입니다.
\ No newline at end of file diff --git a/inc/lang/ko/subscr_list.txt b/inc/lang/ko/subscr_list.txt index 03ca86d2a..c13e0097a 100644 --- a/inc/lang/ko/subscr_list.txt +++ b/inc/lang/ko/subscr_list.txt @@ -8,7 +8,7 @@ -------------------------------------------------------- 이 문서의 알림을 취소하려면, @DOKUWIKIURL@에 로그인한 뒤 -@SUBSCRIBE@ 문서를 방문하여 문서나 이름공간의 구독을 취소하세요. +@SUBSCRIBE@ 문서를 방문해 문서나 이름공간의 구독을 취소하세요. -- @DOKUWIKIURL@의 DokuWiki가 자동으로 만들어낸 메일입니다.
\ No newline at end of file diff --git a/inc/lang/ko/subscr_single.txt b/inc/lang/ko/subscr_single.txt index 5f8b43b98..d4e38e044 100644 --- a/inc/lang/ko/subscr_single.txt +++ b/inc/lang/ko/subscr_single.txt @@ -14,7 +14,7 @@ 새 판 : @NEWPAGE@ 이 문서의 알림을 취소하려면, @DOKUWIKIURL@에 로그인한 뒤 -@SUBSCRIBE@ 문서를 방문하여 문서나 이름공간의 구독을 취소하세요. +@SUBSCRIBE@ 문서를 방문해 문서나 이름공간의 구독을 취소하세요. -- @DOKUWIKIURL@의 DokuWiki가 자동으로 만들어낸 메일입니다.
\ No newline at end of file diff --git a/inc/lang/sv/lang.php b/inc/lang/sv/lang.php index 4c4e060b4..9608784c6 100644 --- a/inc/lang/sv/lang.php +++ b/inc/lang/sv/lang.php @@ -17,6 +17,7 @@ * @author Bogge Bogge <bogge@bogge.com> * @author Peter Åström <eaustreum@gmail.com> * @author mikael@mallander.net + * @author Smorkster Andersson smorkster@gmail.com */ $lang['encoding'] = 'utf-8'; $lang['direction'] = 'ltr'; @@ -52,11 +53,14 @@ $lang['btn_backtomedia'] = 'Tillbaka till val av Mediafil'; $lang['btn_subscribe'] = 'Prenumerera på ändringar'; $lang['btn_profile'] = 'Uppdatera profil'; $lang['btn_reset'] = 'Återställ'; +$lang['btn_resendpwd'] = 'Skapa nytt lösenord'; $lang['btn_draft'] = 'Redigera utkast'; $lang['btn_recover'] = 'Återskapa utkast'; $lang['btn_draftdel'] = 'Radera utkast'; $lang['btn_revert'] = 'Återställ'; $lang['btn_register'] = 'Registrera'; +$lang['btn_apply'] = 'Verkställ'; +$lang['btn_media'] = 'Media Hanteraren'; $lang['loggedinas'] = 'Inloggad som'; $lang['user'] = 'Användarnamn'; $lang['pass'] = 'Lösenord'; @@ -86,6 +90,7 @@ $lang['profnoempty'] = 'Namn och e-postadress måste fyllas i.'; $lang['profchanged'] = 'Användarprofilen uppdaterad.'; $lang['pwdforget'] = 'Glömt ditt lösenord? Ordna ett nytt'; $lang['resendna'] = 'Den här wikin stödjer inte utskick av lösenord.'; +$lang['resendpwd'] = 'Sätt lösenord för'; $lang['resendpwdmissing'] = 'Du måste fylla i alla fält.'; $lang['resendpwdnouser'] = 'Den här användaren hittas inte i databasen.'; $lang['resendpwdbadauth'] = 'Den här verifieringskoden är inte giltig. Kontrollera att du använde hela verifieringslänken.'; @@ -98,9 +103,10 @@ $lang['searchmedia_in'] = 'Sök i %s'; $lang['txt_upload'] = 'Välj fil att ladda upp'; $lang['txt_filename'] = 'Ladda upp som (ej obligatoriskt)'; $lang['txt_overwrt'] = 'Skriv över befintlig fil'; +$lang['maxuploadsize'] = 'Max %s per uppladdad fil.'; $lang['lockedby'] = 'Låst av'; $lang['lockexpire'] = 'Lås upphör att gälla'; -$lang['js']['willexpire'] = 'Ditt redigeringslås för detta dokument kommer snart att upphöra.\nFör att undvika versionskonflikter bör du förhandsgranska ditt dokument för att förlänga redigeringslåset.'; +$lang['js']['willexpire'] = 'Ditt redigeringslås för detta dokument kommer snart att upphöra.\nFör att undvika versionskonflikter bör du förhandsgranska ditt dokument för att förlänga redigeringslåset.'; $lang['js']['notsavedyet'] = 'Det finns ändringar som inte är sparade. Är du säker på att du vill fortsätta?'; $lang['js']['searchmedia'] = 'Sök efter filer'; @@ -112,12 +118,14 @@ $lang['js']['mediaalign'] = 'Justering'; $lang['js']['mediasize'] = 'Bildstorlek'; $lang['js']['mediatarget'] = 'Länköppning'; $lang['js']['mediaclose'] = 'Stäng'; +$lang['js']['mediainsert'] = 'Infoga'; $lang['js']['mediadisplayimg'] = 'Visa bilden.'; $lang['js']['mediadisplaylnk'] = 'Visa endast länken.'; $lang['js']['mediasmall'] = 'Liten storlek'; $lang['js']['mediamedium'] = 'Mellanstor storlek'; $lang['js']['medialarge'] = 'Stor storlek'; $lang['js']['mediaoriginal'] = 'Originalstorlek'; +$lang['js']['medialnk'] = 'Länk till detalj sida'; $lang['js']['mediadirect'] = 'Direktlänk till originalet'; $lang['js']['medianolnk'] = 'Ingen länk'; $lang['js']['medianolink'] = 'Länka inte bilden'; @@ -129,6 +137,15 @@ Du kan fortfarande klippa och klistra in länken om du använder en annan webbl $lang['js']['linkwiz'] = 'Snabbguide Länkar'; $lang['js']['linkto'] = 'Länk till:'; $lang['js']['del_confirm'] = 'Vill du verkligen radera?'; +$lang['js']['restore_confirm'] = 'Återställa denna version?'; +$lang['js']['media_diff'] = 'Se skillnader:'; +$lang['js']['media_diff_both'] = 'Sida vid sida'; +$lang['js']['media_select'] = 'Välj filer...'; +$lang['js']['media_upload_btn'] = 'Ladda upp'; +$lang['js']['media_done_btn'] = 'Färdig'; +$lang['js']['media_drop'] = 'Släpp filer här för att ladda upp'; +$lang['js']['media_cancel'] = 'ta bort'; +$lang['js']['media_overwrt'] = 'Skriv över existerande filer'; $lang['rssfailed'] = 'Ett fel uppstod när detta RSS-flöde skulle hämtas: '; $lang['nothingfound'] = 'Inga filer hittades.'; $lang['mediaselect'] = 'Mediafiler'; @@ -177,10 +194,19 @@ $lang['external_edit'] = 'extern redigering'; $lang['summary'] = 'Redigeringskommentar'; $lang['noflash'] = '<a href="http://www.adobe.com/products/flashplayer/">Adobe Flash Plugin</a> behövs för att visa detta innehåll.'; $lang['download'] = 'Ladda ner kodfragmentet'; +$lang['tools'] = 'Verktyg'; +$lang['user_tools'] = 'Användarverktyg'; +$lang['page_tools'] = 'Sidverktyg'; +$lang['skip_to_content'] = 'hoppa till innehåll'; $lang['mail_newpage'] = 'sida tillagd:'; $lang['mail_changed'] = 'sida ändrad:'; +$lang['mail_subscribe_list'] = 'sidor ändrade i namnrymd:'; $lang['mail_new_user'] = 'Ny användare:'; $lang['mail_upload'] = 'fil uppladdad:'; +$lang['changes_type'] = 'Se ändringar av'; +$lang['pages_changes'] = 'Sidor'; +$lang['media_changes'] = 'Mediafiler'; +$lang['both_changes'] = 'Både sidor och mediafiler'; $lang['qb_bold'] = 'Fet text'; $lang['qb_italic'] = 'Kursiv text'; $lang['qb_underl'] = 'Understruken text'; @@ -221,14 +247,26 @@ $lang['img_copyr'] = 'Copyright'; $lang['img_format'] = 'Format'; $lang['img_camera'] = 'Kamera'; $lang['img_keywords'] = 'Nyckelord'; +$lang['img_width'] = 'Bredd'; +$lang['img_height'] = 'Höjd'; +$lang['img_manager'] = 'Se mediahanteraren'; +$lang['subscr_subscribe_success'] = 'La till %s till prenumerationslista %s'; +$lang['subscr_subscribe_noaddress'] = 'Det finns ingen adress associerad med din inloggning, du kan inte bli tillagd i prenumerationslistan'; +$lang['subscr_unsubscribe_success'] = '% borttagen från prenumerationslistan för %'; +$lang['subscr_unsubscribe_error'] = 'Fel vid borttagning av %s från prenumerationslista %s'; +$lang['subscr_already_subscribed'] = '%s prenumererar redan på %s'; +$lang['subscr_not_subscribed'] = '%s prenumererar inte på %s'; +$lang['subscr_m_not_subscribed'] = 'Du prenumererar inte på denna sida eller namnrymd.'; $lang['subscr_m_new_header'] = 'Lägg till prenumeration'; $lang['subscr_m_current_header'] = 'Nuvarande prenumerationer'; $lang['subscr_m_unsubscribe'] = 'Avsluta prenumeration'; $lang['subscr_m_subscribe'] = 'Prenumerera'; $lang['subscr_m_receive'] = 'Ta emot'; $lang['subscr_style_every'] = 'skicka epost vid varje ändring'; +$lang['subscr_style_list'] = 'lista över ändrade sidor sedan senaste e-post (varje %.2f dag)'; $lang['authmodfailed'] = 'Felaktiga inställningar för användarautentisering. Var vänlig meddela wikiadministratören.'; $lang['authtempfail'] = 'Tillfälligt fel på användarautentisering. Om felet kvarstår, var vänlig meddela wikiadministratören.'; +$lang['authpwdexpire'] = 'Ditt lösenord kommer att bli ogiltigt om %d dagar, du bör ändra det snart.'; $lang['i_chooselang'] = 'Välj språk'; $lang['i_installer'] = 'Installation av DokuWiki'; $lang['i_wikiname'] = 'Wikins namn'; @@ -254,6 +292,10 @@ $lang['i_pol0'] = 'Öppen wiki (alla får läsa, skriva och ladda $lang['i_pol1'] = 'Publik wiki (alla får läsa, registrerade användare för skriva och ladda upp filer)'; $lang['i_pol2'] = 'Sluten wiki (endast registrerade användare får läsa, skriva och ladda upp filer)'; $lang['i_retry'] = 'Försök igen'; +$lang['i_license'] = 'Vänligen välj licens du vill använda för ditt innehåll:'; +$lang['i_license_none'] = 'Visa ingen licensinformation'; +$lang['i_pop_field'] = 'Hjälp oss förbättra DokuWiki upplevelsen:'; +$lang['i_pop_label'] = 'Sänd anonym användarinformation en gång i månaden till DokuWikis utvecklare'; $lang['recent_global'] = 'Du bevakar ändringar i namnrymden <b>%s</b>. Du kan också titta på <a href="%s">senaste ändringar för hela wikin</a>.'; $lang['years'] = '%d år sedan'; $lang['months'] = '%d månader sedan'; @@ -263,3 +305,24 @@ $lang['hours'] = '%d timmar sedan'; $lang['minutes'] = '%d minuter sedan'; $lang['seconds'] = '%d sekunder sedan'; $lang['wordblock'] = 'Din ändring sparades inte för att den innehåller otillåten text (spam).'; +$lang['media_uploadtab'] = 'Ladda upp'; +$lang['media_searchtab'] = 'Sök'; +$lang['media_file'] = 'Fil'; +$lang['media_viewtab'] = 'Visa'; +$lang['media_edittab'] = 'Redigera'; +$lang['media_list_thumbs'] = 'Miniatyrbild'; +$lang['media_list_rows'] = 'Rader'; +$lang['media_sort_name'] = 'Namn'; +$lang['media_sort_date'] = 'Datum'; +$lang['media_namespaces'] = 'Visa namnrymd'; +$lang['media_files'] = 'Filer i %s'; +$lang['media_upload'] = 'Ladda upp till %s'; +$lang['media_search'] = 'Sök i %s'; +$lang['media_view'] = '%s'; +$lang['media_viewold'] = '%s vid %s'; +$lang['media_edit'] = 'Redigera %s'; +$lang['media_meta_edited'] = 'metadata redigerat'; +$lang['media_perm_read'] = 'Du har tyvärr inte tillräckliga behörigheter för att läsa filer.'; +$lang['media_perm_upload'] = 'Du har tyvärr inte tillräckliga behörigheter för att ladda upp filer.'; +$lang['media_update'] = 'Ladda upp ny version'; +$lang['media_restore'] = 'Återställ denna version'; diff --git a/inc/lang/sv/mailwrap.html b/inc/lang/sv/mailwrap.html new file mode 100644 index 000000000..d8ab9ba5b --- /dev/null +++ b/inc/lang/sv/mailwrap.html @@ -0,0 +1,13 @@ +<html> +<head> +<title>@TITLE@</title> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> +</head> +<body> + +@HTMLBODY@ + +<br /><hr /> +<small>Denna e-post har genererats av DokuWiki vid @DOKUWIKIURL@.</small> +</body> +</html>
\ No newline at end of file diff --git a/inc/lang/sv/resetpwd.txt b/inc/lang/sv/resetpwd.txt new file mode 100644 index 000000000..a329ce571 --- /dev/null +++ b/inc/lang/sv/resetpwd.txt @@ -0,0 +1,3 @@ +====== Sätt nytt lösenord ====== + +Vänligen skriv ett nytt lösenord för ditt konto på denna wiki.
\ No newline at end of file diff --git a/inc/lang/sv/subscr_form.txt b/inc/lang/sv/subscr_form.txt new file mode 100644 index 000000000..bfb8fa3cd --- /dev/null +++ b/inc/lang/sv/subscr_form.txt @@ -0,0 +1,3 @@ +====== Prenumerations hantering ====== + +Denna sida låter dig hantera dina prenumerationer för nuvarande sida och namnrymd.
\ No newline at end of file diff --git a/inc/lang/sv/subscr_single.txt b/inc/lang/sv/subscr_single.txt new file mode 100644 index 000000000..dff88343e --- /dev/null +++ b/inc/lang/sv/subscr_single.txt @@ -0,0 +1,23 @@ +Hej! + +Sidan @PAGE@ i wikin @TITLE@ har ändrats. +Detta är ändringarna: + +-------------------------------------------------------- +@DIFF@ +-------------------------------------------------------- + +Datum: @DATE@ +Användare: @USER@ +Ändrings sammanfattning: @SUMMARY@ +Gammal version: @OLDPAGE@ +Ny version: @NEWPAGE@ + +För att avsluta noteringar om sidor, logga in på wikin vid +@DOKUWIKIURL@ gå sedan till +@SUBSCRIBE@ +och avsluta prenumerationen av sida och/eller namnrymd ändringar. + +-- +Denna e-post har genererats av DokuWiki vid +@DOKUWIKIURL@
\ No newline at end of file diff --git a/inc/media.php b/inc/media.php index e29a47631..18148a446 100644 --- a/inc/media.php +++ b/inc/media.php @@ -1879,20 +1879,21 @@ function media_crop_image($file, $ext, $w, $h=0){ * cropped images have been internally generated - and prevent external * DDOS attacks via fetch * + * @author Christopher Smith <chris@jalakai.co.uk> + * * @param string $id id of the image * @param int $w resize/crop width * @param int $h resize/crop height - * - * @author Christopher Smith <chris@jalakai.co.uk> + * @return string */ function media_get_token($id,$w,$h){ // token is only required for modified images if ($w || $h) { - $token = auth_cookiesalt().$id; + $token = $id; if ($w) $token .= '.'.$w; if ($h) $token .= '.'.$h; - return substr(md5($token),0,6); + return substr(PassHash::hmac('md5', $token, auth_cookiesalt()),0,6); } return ''; diff --git a/install.php b/install.php index 24f06608d..ab0fad121 100644 --- a/install.php +++ b/install.php @@ -518,8 +518,8 @@ function check_functions(){ global $lang; $ok = true; - if(version_compare(phpversion(),'5.1.2','<')){ - $error[] = sprintf($lang['i_phpver'],phpversion(),'5.1.2'); + if(version_compare(phpversion(),'5.2.0','<')){ + $error[] = sprintf($lang['i_phpver'],phpversion(),'5.2.0'); $ok = false; } diff --git a/lib/exe/detail.php b/lib/exe/detail.php index db635c016..7008b126f 100644 --- a/lib/exe/detail.php +++ b/lib/exe/detail.php @@ -2,13 +2,18 @@ if(!defined('DOKU_INC')) define('DOKU_INC',dirname(__FILE__).'/../../'); define('DOKU_MEDIADETAIL',1); require_once(DOKU_INC.'inc/init.php'); -trigger_event('DETAIL_STARTED', $tmp=array()); -//close session -session_write_close(); $IMG = getID('media'); $ID = cleanID($INPUT->str('id')); +// this makes some general infos available as well as the info about the +// "parent" page +$INFO = array_merge(pageinfo(),mediainfo()); +trigger_event('DETAIL_STARTED', $tmp=array()); + +//close session
+session_write_close();
+ if($conf['allowdebug'] && $INPUT->has('debug')){ print '<pre>'; foreach(explode(' ','basedir userewrite baseurl useslash') as $x){ @@ -39,10 +44,6 @@ if($AUTH >= AUTH_READ){ $ERROR = p_locale_xhtml('denied'); } -// this makes some general infos available as well as the info about the -// "parent" page -$INFO = pageinfo(); - //start output and load template header('Content-Type: text/html; charset=utf-8'); include(template('detail.php')); diff --git a/lib/exe/mediamanager.php b/lib/exe/mediamanager.php index 53d438321..66e5ddc82 100644 --- a/lib/exe/mediamanager.php +++ b/lib/exe/mediamanager.php @@ -7,15 +7,12 @@ require_once(DOKU_INC.'inc/init.php'); - trigger_event('MEDIAMANAGER_STARTED',$tmp=array()); - session_write_close(); //close session - global $INPUT; // handle passed message if($INPUT->str('msg1')) msg(hsc($INPUT->str('msg1')),1); if($INPUT->str('err')) msg(hsc($INPUT->str('err')),-1); - + global $DEL; // get namespace to display (either direct or from deletion order) if($INPUT->str('delete')){ $DEL = cleanID($INPUT->str('delete')); @@ -29,10 +26,15 @@ $NS = getNS($IMG); }else{ $NS = cleanID($INPUT->str('ns')); + $IMG = null; } - // check auth - $AUTH = auth_quickaclcheck("$NS:*"); + global $INFO; + $INFO = !empty($INFO) ? array_merge($INFO, mediainfo()) : mediainfo(); + $AUTH = $INFO['perm']; // shortcut for historical reasons + + trigger_event('MEDIAMANAGER_STARTED',$tmp=array());
+ session_write_close(); //close session
// do not display the manager if user does not have read access if($AUTH < AUTH_READ && !$fullscreen) { @@ -52,7 +54,7 @@ exit; } - // give info on PHP catched upload errors + // give info on PHP caught upload errors if($_FILES['upload']['error']){ switch($_FILES['upload']['error']){ case 1: diff --git a/lib/plugins/acl/lang/ko/lang.php b/lib/plugins/acl/lang/ko/lang.php index 5cec4b8fd..7c1e9a43d 100644 --- a/lib/plugins/acl/lang/ko/lang.php +++ b/lib/plugins/acl/lang/ko/lang.php @@ -40,4 +40,4 @@ $lang['acl_perm4'] = '만들기'; $lang['acl_perm8'] = '올리기'; $lang['acl_perm16'] = '삭제'; $lang['acl_new'] = '새 항목 추가'; -$lang['acl_mod'] = '선택 항목 수정'; +$lang['acl_mod'] = '항목 수정'; diff --git a/lib/plugins/acl/lang/sv/lang.php b/lib/plugins/acl/lang/sv/lang.php index 7f963d5e1..388672fc0 100644 --- a/lib/plugins/acl/lang/sv/lang.php +++ b/lib/plugins/acl/lang/sv/lang.php @@ -16,6 +16,7 @@ * @author Peter Åström <eaustreum@gmail.com> * @author Håkan Sandell <hakan.sandell@home.se> * @author mikael@mallander.net + * @author Smorkster Andersson smorkster@gmail.com */ $lang['admin_acl'] = 'Hantera behörighetslistan (ACL)'; $lang['acl_group'] = 'Grupp'; diff --git a/lib/plugins/authad/auth.php b/lib/plugins/authad/auth.php index b6b5dd268..fcbd2eeef 100644 --- a/lib/plugins/authad/auth.php +++ b/lib/plugins/authad/auth.php @@ -489,6 +489,11 @@ class auth_plugin_authad extends DokuWiki_Auth_Plugin { $this->cando['modPass'] = false; } + // adLDAP expects empty user/pass as NULL, we're less strict FS#2781 + if(empty($opts['admin_username'])) $opts['admin_username'] = null; + if(empty($opts['admin_password'])) $opts['admin_password'] = null; + + // user listing needs admin priviledges if(!empty($opts['admin_username']) && !empty($opts['admin_password'])) { $this->cando['getUsers'] = true; } else { diff --git a/lib/plugins/authad/conf/default.php b/lib/plugins/authad/conf/default.php index 9274db209..f71202cfc 100644 --- a/lib/plugins/authad/conf/default.php +++ b/lib/plugins/authad/conf/default.php @@ -4,8 +4,8 @@ $conf['account_suffix'] = ''; $conf['base_dn'] = ''; $conf['domain_controllers'] = ''; $conf['sso'] = 0; -$conf['admin_username'] = ''; -$conf['admin_password'] = ''; +$conf['admin_username'] = ''; +$conf['admin_password'] = ''; $conf['real_primarygroup'] = 0; $conf['use_ssl'] = 0; $conf['use_tls'] = 0; diff --git a/lib/plugins/authad/lang/sv/settings.php b/lib/plugins/authad/lang/sv/settings.php new file mode 100644 index 000000000..b1eb1cb96 --- /dev/null +++ b/lib/plugins/authad/lang/sv/settings.php @@ -0,0 +1,11 @@ +<?php +/** + * Swedish language file + * + * @author Smorkster Andersson smorkster@gmail.com + */ +$lang['account_suffix'] = 'Ditt konto suffix. T.ex. <code>min.domän.org</code>'; +$lang['admin_password'] = 'Lösenord för användare ovan.'; +$lang['sso'] = 'Ska Single-Sign-On via Kerberos eller NTLM användas?'; +$lang['use_ssl'] = 'Använda SSL anslutning? Om använd, möjliggör inte TLS nedan.'; +$lang['use_tls'] = 'Använda TLS anslutning? Om använd, möjliggör inte SSL ovan.'; diff --git a/lib/plugins/authldap/auth.php b/lib/plugins/authldap/auth.php index b49aa4792..6a967a6d4 100644 --- a/lib/plugins/authldap/auth.php +++ b/lib/plugins/authldap/auth.php @@ -248,7 +248,7 @@ class auth_plugin_authldap extends DokuWiki_Auth_Plugin { } // always add the default group to the list of groups - if(!in_array($conf['defaultgroup'], $info['grps'])) { + if(!$info['grps'] or !in_array($conf['defaultgroup'], $info['grps'])) { $info['grps'][] = $conf['defaultgroup']; } return $info; @@ -502,23 +502,23 @@ class auth_plugin_authldap extends DokuWiki_Auth_Plugin { * @return resource */ protected function _ldapsearch($link_identifier, $base_dn, $filter, $scope = 'sub', $attributes = null, - $attrsonly = 0, $sizelimit = 0, $timelimit = 0, $deref = LDAP_DEREF_NEVER) { + $attrsonly = 0, $sizelimit = 0) { if(is_null($attributes)) $attributes = array(); if($scope == 'base') { return @ldap_read( $link_identifier, $base_dn, $filter, $attributes, - $attrsonly, $sizelimit, $timelimit, $deref + $attrsonly, $sizelimit ); } elseif($scope == 'one') { return @ldap_list( $link_identifier, $base_dn, $filter, $attributes, - $attrsonly, $sizelimit, $timelimit, $deref + $attrsonly, $sizelimit ); } else { return @ldap_search( $link_identifier, $base_dn, $filter, $attributes, - $attrsonly, $sizelimit, $timelimit, $deref + $attrsonly, $sizelimit ); } } diff --git a/lib/plugins/authldap/conf/default.php b/lib/plugins/authldap/conf/default.php index d07f9c82e..2c295eeeb 100644 --- a/lib/plugins/authldap/conf/default.php +++ b/lib/plugins/authldap/conf/default.php @@ -9,6 +9,7 @@ $conf['groupfilter'] = ''; $conf['version'] = 2; $conf['starttls'] = 0; $conf['referrals'] = 0; +$conf['deref'] = 0; $conf['binddn'] = ''; $conf['bindpw'] = ''; //$conf['mapping']['name'] unsupported in config manager @@ -16,4 +17,4 @@ $conf['bindpw'] = ''; $conf['userscope'] = 'sub'; $conf['groupscope'] = 'sub'; $conf['groupkey'] = 'cn'; -$conf['debug'] = array('onoff');
\ No newline at end of file +$conf['debug'] = 0;
\ No newline at end of file diff --git a/lib/plugins/authldap/conf/metadata.php b/lib/plugins/authldap/conf/metadata.php index fc5b2e63c..a3256628c 100644 --- a/lib/plugins/authldap/conf/metadata.php +++ b/lib/plugins/authldap/conf/metadata.php @@ -8,6 +8,7 @@ $meta['groupfilter'] = array('string'); $meta['version'] = array('numeric'); $meta['starttls'] = array('onoff'); $meta['referrals'] = array('onoff'); +$meta['deref'] = array('multichoice','_choices' => array(0,1,2,3)); $meta['binddn'] = array('string'); $meta['bindpw'] = array('password'); //$meta['mapping']['name'] unsupported in config manager diff --git a/lib/plugins/authldap/lang/en/settings.php b/lib/plugins/authldap/lang/en/settings.php index ddedf8ae3..e3f385f99 100644 --- a/lib/plugins/authldap/lang/en/settings.php +++ b/lib/plugins/authldap/lang/en/settings.php @@ -8,9 +8,16 @@ $lang['groupfilter'] = 'LDAP filter to search for groups. Eg. <code>(&(objec $lang['version'] = 'The protocol version to use. You may need to set this to <code>3</code>'; $lang['starttls'] = 'Use TLS connections?'; $lang['referrals'] = 'Shall referrals be followed?'; +$lang['deref'] = 'How to dereference aliases?'; $lang['binddn'] = 'DN of an optional bind user if anonymous bind is not sufficient. Eg. <code>cn=admin, dc=my, dc=home</code>'; $lang['bindpw'] = 'Password of above user'; $lang['userscope'] = 'Limit search scope for user search'; $lang['groupscope'] = 'Limit search scope for group search'; -$lang['groupkey'] = 'Group member ship from any user attribute (instead of standard AD groups) e.g. group from department or telephone number'; +$lang['groupkey'] = 'Group membership from any user attribute (instead of standard AD groups) e.g. group from department or telephone number'; $lang['debug'] = 'Display additional debug information on errors'; + + +$lang['deref_o_0'] = 'LDAP_DEREF_NEVER'; +$lang['deref_o_1'] = 'LDAP_DEREF_SEARCHING'; +$lang['deref_o_2'] = 'LDAP_DEREF_FINDING'; +$lang['deref_o_3'] = 'LDAP_DEREF_ALWAYS';
\ No newline at end of file diff --git a/lib/plugins/authldap/lang/sv/settings.php b/lib/plugins/authldap/lang/sv/settings.php new file mode 100644 index 000000000..0fdcad147 --- /dev/null +++ b/lib/plugins/authldap/lang/sv/settings.php @@ -0,0 +1,16 @@ +<?php +/** + * Swedish language file + * + * @author Smorkster Andersson smorkster@gmail.com + */ +$lang['server'] = 'Din LDAO server. Antingen värdnamn (<code>localhost</code>) eller giltig full URL (<code>ldap://server.tld:389</code>)'; +$lang['port'] = 'LDAP server port, om det inte angavs full URL ovan'; +$lang['usertree'] = 'Specificera var användarkonton finns. T.ex. <code>ou=Användare, dc=server, dc=tld</code>'; +$lang['grouptree'] = 'Specificera var grupper finns. T.ex. <code>ou=Grupp, dc=server, dc=tld</code>'; +$lang['userfilter'] = 'LDAP filter för att söka efter användarkonton. T.ex. <code>(&(uid=%{user})(objectClass=posixAccount))</code>'; +$lang['groupfilter'] = 'LDAP filter för att söka efter grupper. T.ex. <code>(&(objectClass=posixGroup)(|(gidNumber=%{gid})(memberUID=%{user})))</code>'; +$lang['version'] = 'Version av protokoll att använda. Du kan behöva sätta detta till <code>3</code>'; +$lang['bindpw'] = 'Lösenord för användare ovan'; +$lang['groupkey'] = 'Gruppmedlemskap från något användarattribut (istället för standard AD grupp) t.ex. grupp från avdelning eller telefonnummer'; +$lang['debug'] = 'Visa ytterligare felsökningsinformation vid fel'; diff --git a/lib/plugins/authmysql/auth.php b/lib/plugins/authmysql/auth.php index 5f6e86c71..036644a67 100644 --- a/lib/plugins/authmysql/auth.php +++ b/lib/plugins/authmysql/auth.php @@ -843,7 +843,7 @@ class auth_plugin_authmysql extends DokuWiki_Auth_Plugin { /** * Locked a list of tables for exclusive access so that modifications * to the database can't be disturbed by other threads. The list - * could be set with $conf['auth']['mysql']['TablesToLock'] = array() + * could be set with $conf['plugin']['authmysql']['TablesToLock'] = array() * * If aliases for tables are used in SQL statements, also this aliases * must be locked. For eg. you use a table 'user' and the alias 'u' in diff --git a/lib/plugins/authmysql/conf/default.php b/lib/plugins/authmysql/conf/default.php index 647f3d96c..427bea273 100644 --- a/lib/plugins/authmysql/conf/default.php +++ b/lib/plugins/authmysql/conf/default.php @@ -7,7 +7,7 @@ $conf['password'] = ''; $conf['database'] = ''; $conf['debug'] = 0; $conf['forwardClearPass'] = 0; -$conf['TablesToLock'] = ''; +$conf['TablesToLock'] = array(); $conf['checkPass'] = ''; $conf['getUserInfo'] = ''; $conf['getGroups'] = ''; diff --git a/lib/plugins/authmysql/lang/sv/settings.php b/lib/plugins/authmysql/lang/sv/settings.php new file mode 100644 index 000000000..027c64025 --- /dev/null +++ b/lib/plugins/authmysql/lang/sv/settings.php @@ -0,0 +1,25 @@ +<?php +/** + * Swedish language file + * + * @author Smorkster Andersson smorkster@gmail.com + */ +$lang['server'] = 'Din MySQL server'; +$lang['user'] = 'Användarnamn för MySQL'; +$lang['password'] = 'Lösenord för användare ovan'; +$lang['database'] = 'Databas att använda'; +$lang['debug'] = 'Visa ytterligare felsökningsinformation'; +$lang['forwardClearPass'] = 'Skicka användares lösenord i klartext till SQL sats nedan, istället för att använda passcrypt alternativet'; +$lang['checkPass'] = 'SQL sats för kontroll av lösenord'; +$lang['getUserInfo'] = 'SQL sats för att hämta användarinformation'; +$lang['getGroups'] = 'SQL sats för att hämta en användares gruppmedlemskap'; +$lang['getUsers'] = 'SQL sats för att lista alla användare'; +$lang['addUser'] = 'SQL sats för att lägga till en användare'; +$lang['addGroup'] = 'SQL sats för att lägga till en grupp'; +$lang['addUserGroup'] = 'SQL sats för att lägga till en användare i en existerande grupp'; +$lang['delGroup'] = 'SQL sats för att ta bort en grupp'; +$lang['delUser'] = 'SQL sats för att ta bort en användare'; +$lang['delUserRefs'] = 'SQL sats för att ta bort en användare från alla grupper'; +$lang['updateUser'] = 'SQL sats för att uppdatera en användarprofil'; +$lang['delUserGroup'] = 'SQL sats för att ta bort en användare från en angiven grupp'; +$lang['debug_o_0'] = 'ingen'; diff --git a/lib/plugins/authpgsql/lang/sv/settings.php b/lib/plugins/authpgsql/lang/sv/settings.php new file mode 100644 index 000000000..27cb2601d --- /dev/null +++ b/lib/plugins/authpgsql/lang/sv/settings.php @@ -0,0 +1,28 @@ +<?php +/** + * Swedish language file + * + * @author Smorkster Andersson smorkster@gmail.com + */ +$lang['server'] = 'Din PostgreSQL server'; +$lang['port'] = 'Din PostgreSQL servers port'; +$lang['user'] = 'PostgreSQL användarnamn'; +$lang['password'] = 'Lösenord för användaren ovan'; +$lang['database'] = 'Databas att använda'; +$lang['debug'] = 'Visa ytterligare felsökningsinformation'; +$lang['forwardClearPass'] = 'Skicka lösenord för användare som klartext till SQL satserna nedan, istället för att använda krypteringsalternativet'; +$lang['checkPass'] = 'SQL sats för kontroll av lösenord'; +$lang['getUserInfo'] = 'SQL sats för att hämta användarinformation'; +$lang['getGroups'] = 'SQL sats för att hämta en användares gruppmedlemskap'; +$lang['getUsers'] = 'SQL sats för att lista alla användare'; +$lang['FilterLogin'] = 'SQL klausul för att filtrera användare efter inloggningsnamn'; +$lang['FilterName'] = 'SQL klausul för att filtrera användare efter fullt namn'; +$lang['FilterEmail'] = 'SQL klausul för att filtrera användare efter e-post adress'; +$lang['addUser'] = 'SQL sats för att lägga till en ny användare'; +$lang['addGroup'] = 'SQL sats för att lägga till en ny grupp'; +$lang['addUserGroup'] = 'SQL sats för att lägga till en användare i en existerande grupp'; +$lang['delGroup'] = 'SQL sats för att ta bort en grupp'; +$lang['delUser'] = 'SQL sats för att ta bort en användare'; +$lang['delUserRefs'] = 'SQL sats för att ta bort en användare från alla grupper'; +$lang['updateUser'] = 'SQL sats för att uppdatera en användarprofil'; +$lang['delUserGroup'] = 'SQL sats för att ta bort en användare från angiven grupp'; diff --git a/lib/plugins/authplain/auth.php b/lib/plugins/authplain/auth.php index 3416ede89..8c4ce0dd9 100644 --- a/lib/plugins/authplain/auth.php +++ b/lib/plugins/authplain/auth.php @@ -198,13 +198,9 @@ class auth_plugin_authplain extends DokuWiki_Auth_Plugin { if(empty($deleted)) return 0; $pattern = '/^('.join('|', $deleted).'):/'; + io_deleteFromFile($config_cascade['plainauth.users']['default'], $pattern, true); - if(io_deleteFromFile($config_cascade['plainauth.users']['default'], $pattern, true)) { - foreach($deleted as $user) unset($this->users[$user]); - return count($deleted); - } - - // problem deleting, reload the user list and count the difference + // reload the user list and count the difference $count = count($this->users); $this->_loadUserData(); $count -= count($this->users); diff --git a/lib/plugins/config/lang/ko/intro.txt b/lib/plugins/config/lang/ko/intro.txt index a2dc7b6f6..b9eb763a4 100644 --- a/lib/plugins/config/lang/ko/intro.txt +++ b/lib/plugins/config/lang/ko/intro.txt @@ -2,6 +2,6 @@ DokuWiki 설치할 때 설정을 바꾸기 위해 사용하는 페이지입니다. 각 설정에 대한 자세한 도움말이 필요하다면 [[doku>ko:config|설정 문서 (한국어)]]와 [[doku>config|설정 문서 (영어)]]를 참고하세요. -플러그인에 대한 자세한 정보가 필요하다면 [[doku>plugin:config|플러그인 설정]] 문서를 참고하세요. 빨간 배경색으로 보이는 설정은 이 플러그인에서 바꾸지 못하도록 되어있습니다. 파란 배경색으로 보이는 설정은 기본 설정값을 가지고 있습니다. 하얀 배경색으로 보이는 설정은 특별한 설치를 위해 설정되어 있습니다. 파란색과 하얀색 배경으로 된 설정은 수정이 가능합니다. +플러그인에 대한 자세한 정보가 필요하다면 [[doku>plugin:config|플러그인 설정]] 문서를 참고하세요. 빨간 배경색으로 보이는 설정은 이 플러그인에서 바꾸지 못하도록 되어있습니다. 파란 배경색으로 보이는 설정은 기본 설정값을 가지고 있습니다. 하얀 배경색으로 보이는 설정은 특별한 설치를 위해 설정되어 있습니다. 파란색과 하얀색 배경으로 된 설정은 바꿀 수 있습니다. 이 페이지를 떠나기 전에 **저장** 버튼을 누르지 않으면 바뀐 값은 적용되지 않습니다.
\ No newline at end of file diff --git a/lib/plugins/config/lang/ko/lang.php b/lib/plugins/config/lang/ko/lang.php index f69af2df6..da155bcef 100644 --- a/lib/plugins/config/lang/ko/lang.php +++ b/lib/plugins/config/lang/ko/lang.php @@ -11,14 +11,14 @@ * @author Myeongjin <aranet100@gmail.com> */ $lang['menu'] = '환경 설정'; -$lang['error'] = '잘못된 값 때문에 설정을 바꿀 수 없습니다. 수정한 값을 검토하고 확인을 누르세요. +$lang['error'] = '잘못된 값 때문에 설정을 바꿀 수 없습니다. 바뀜을 검토하고 확인을 누르세요. <br />잘못된 값은 빨간 선으로 둘러싸여 있습니다.'; $lang['updated'] = '설정이 성공적으로 바뀌었습니다.'; $lang['nochoice'] = '(다른 선택이 불가능합니다)'; -$lang['locked'] = '환경 설정 파일을 수정할 수 없습니다. 의도한 행동이 아니라면,<br /> +$lang['locked'] = '환경 설정 파일을 바꿀 수 없습니다. 의도한 행동이 아니라면,<br /> 파일 이름과 권한이 맞는지 확인하세요.'; -$lang['danger'] = '위험: 이 옵션을 잘못 수정하면 환경설정 메뉴를 사용할 수 없을 수도 있습니다.'; -$lang['warning'] = '경고: 이 옵션을 잘못 수정하면 잘못 동작할 수 있습니다.'; +$lang['danger'] = '위험: 이 옵션을 잘못 바꾸면 환경 설정 메뉴를 사용할 수 없을 수도 있습니다.'; +$lang['warning'] = '경고: 이 옵션을 잘못 바꾸면 잘못 동작할 수 있습니다.'; $lang['security'] = '보안 경고: 이 옵션은 보안에 위험이 있을 수 있습니다.'; $lang['_configuration_manager'] = '환경 설정 관리자'; $lang['_header_dokuwiki'] = 'DokuWiki 설정'; @@ -48,13 +48,13 @@ $lang['template'] = '템플릿 (위키 디자인)'; $lang['tagline'] = '태그 라인 (템플릿이 지원할 때에 한함)'; $lang['sidebar'] = '사이드바 문서 이름 (템플릿이 지원할 때에 한함), 비워두면 사이드바를 비활성화'; $lang['license'] = '콘텐츠에 어떤 라이선스를 적용하겠습니까?'; -$lang['savedir'] = '데이타 저장 디렉토리'; +$lang['savedir'] = '데이터 저장 디렉토리'; $lang['basedir'] = '서버 경로 (예를 들어 <code>/dokuwiki/</code>). 자동 감지를 하려면 비우세요.'; $lang['baseurl'] = '서버 URL (예를 들어 <code>http://www.yourserver.com</code>). 자동 감지를 하려면 비우세요.'; $lang['cookiedir'] = '쿠키 위치. 비워두면 기본 URL 위치로 지정됩니다.'; $lang['dmode'] = '디렉토리 만들기 모드'; $lang['fmode'] = '파일 만들기 모드'; -$lang['allowdebug'] = '디버그 허용 <b>필요하지 않으면 비활성화할 것!</b>'; +$lang['allowdebug'] = '디버그 허용 <b>필요하지 않으면 비활성화하세요!</b>'; $lang['recent'] = '최근 바뀐 문서당 항목 수'; $lang['recent_days'] = '최근 바뀐 문서 기준 시간 (일)'; $lang['breadcrumbs'] = '위치 "추적" 수. 0으로 설정하면 비활성화합니다.'; @@ -63,7 +63,7 @@ $lang['fullpath'] = '문서 하단에 전체 경로 보여주기'; $lang['typography'] = '기호 대체'; $lang['dformat'] = '날짜 형식 (PHP <a href="http://www.php.net/strftime">strftime</a> 기능 참고)'; $lang['signature'] = '편집기에서 서명 버튼을 누를 때 삽입할 내용'; -$lang['showuseras'] = '마지막에 문서를 수정한 사용자를 보여줄지 여부'; +$lang['showuseras'] = '마지막에 문서를 편집한 사용자를 보여줄지 여부'; $lang['toptoclevel'] = '목차 최상위 항목'; $lang['tocminheads'] = '목차 표시 여부를 결정할 최소한의 문단 제목 항목의 수'; $lang['maxtoclevel'] = '목차 최대 단계'; @@ -102,7 +102,7 @@ $lang['htmlok'] = 'HTML 내장 허용'; $lang['phpok'] = 'PHP 내장 허용'; $lang['locktime'] = '최대 파일 잠금 시간(초)'; $lang['cachetime'] = '최대 캐시 생존 시간 (초)'; -$lang['target____wiki'] = '내부 링크에 대한 타겟 창'; +$lang['target____wiki'] = '안쪽 링크에 대한 타겟 창'; $lang['target____interwiki'] = '인터위키 링크에 대한 타겟 창'; $lang['target____extern'] = '바깥 링크에 대한 타겟 창'; $lang['target____media'] = '미디어 링크에 대한 타겟 창'; @@ -133,7 +133,7 @@ $lang['userewrite'] = '멋진 URL 사용'; $lang['useslash'] = 'URL에서 이름 구분자로 슬래시 문자 사용'; $lang['sepchar'] = '문서 이름 단어 구분자'; $lang['canonical'] = '완전한 canonical URL 사용'; -$lang['fnencode'] = '아스키가 아닌 파일 이름을 인코딩 하는 방법.'; +$lang['fnencode'] = 'ASCII가 아닌 파일 이름을 인코딩 하는 방법.'; $lang['autoplural'] = '링크 연결시 복수 양식 검사'; $lang['compression'] = '첨부 파일 압축 방법 선택'; $lang['gzip_output'] = 'xhml 내용 gzip 압축 사용'; @@ -143,9 +143,9 @@ $lang['send404'] = '존재하지 않는 페이지에 대해 "HTTP $lang['broken_iua'] = '설치된 시스템에서 ignore_user_abort 기능에 문제가 있습니까? 문제가 있다면 색인이 정상적으로 동작하지 않습니다. 이 기능이 IIS+PHP/CGI에서 문제가 있는 것으로 알려졌습니다. 자세한 정보는 <a href="http://bugs.dokuwiki.org/?do=details&task_id=852">버그 852</a>를 참고하시기 바랍니다.'; $lang['xsendfile'] = '웹 서버가 정적 파일을 제공하도록 X-Sendfile 헤더를 사용하겠습니까? 웹 서버가 이 기능을 지원해야 합니다.'; $lang['renderer_xhtml'] = '주 (xhtml) 위키 출력 처리기'; -$lang['renderer__core'] = '%s (DokuWiki 내부 기능)'; +$lang['renderer__core'] = '%s (DokuWiki 내부)'; $lang['renderer__plugin'] = '%s (플러그인)'; -$lang['dnslookups'] = '이 옵션을 활성화하면 DokuWiki가 문서를 수정하는 사용자의 호스트 네임과 원격 IP 주소를 확인합니다. 서버가 느리거나, DNS를 운영하지 않거나 이 기능을 원치 않으면 비활성화하세요'; +$lang['dnslookups'] = '이 옵션을 활성화하면 DokuWiki가 문서를 편집하는 사용자의 호스트 네임과 원격 IP 주소를 확인합니다. 서버가 느리거나, DNS를 운영하지 않거나 이 기능을 원치 않으면 비활성화하세요'; $lang['proxy____host'] = '프록시 서버 이름'; $lang['proxy____port'] = '프록시 서버 포트'; $lang['proxy____user'] = '프록시 사용자 이름'; diff --git a/lib/plugins/config/lang/sv/lang.php b/lib/plugins/config/lang/sv/lang.php index 3d8392840..d59b4b17e 100644 --- a/lib/plugins/config/lang/sv/lang.php +++ b/lib/plugins/config/lang/sv/lang.php @@ -16,6 +16,7 @@ * @author Peter Åström <eaustreum@gmail.com> * @author Håkan Sandell <hakan.sandell@home.se> * @author mikael@mallander.net + * @author Smorkster Andersson smorkster@gmail.com */ $lang['menu'] = 'Hantera inställningar'; $lang['error'] = 'Inställningarna uppdaterades inte på grund av ett felaktigt värde. Titta igenom dina ändringar och försök sedan spara igen. @@ -39,6 +40,8 @@ $lang['_anti_spam'] = 'Inställningar för anti-spam'; $lang['_editing'] = 'Inställningar för redigering'; $lang['_links'] = 'Inställningar för länkar'; $lang['_media'] = 'Inställningar för medier'; +$lang['_notifications'] = 'Noterings inställningar'; +$lang['_syndication'] = 'Syndikats inställningar'; $lang['_advanced'] = 'Avancerade inställningar'; $lang['_network'] = 'Nätverksinställningar'; $lang['_plugin_sufix'] = '(inställningar för insticksmodul)'; @@ -46,25 +49,27 @@ $lang['_template_sufix'] = '(inställningar för mall)'; $lang['_msg_setting_undefined'] = 'Ingen inställningsmetadata.'; $lang['_msg_setting_no_class'] = 'Ingen inställningsklass.'; $lang['_msg_setting_no_default'] = 'Inget standardvärde.'; -$lang['fmode'] = 'Filskydd för nya filer'; -$lang['dmode'] = 'Filskydd för nya kataloger'; -$lang['lang'] = 'Språk'; -$lang['basedir'] = 'Grundkatalog'; -$lang['baseurl'] = 'Grund-webbadress'; -$lang['savedir'] = 'Katalog för att spara data'; -$lang['start'] = 'Startsidans namn'; $lang['title'] = 'Wikins namn'; +$lang['start'] = 'Startsidans namn'; +$lang['lang'] = 'Språk'; $lang['template'] = 'Mall'; $lang['license'] = 'Under vilken licens skall ditt innehåll publiceras?'; -$lang['fullpath'] = 'Visa fullständig sökväg i sidfoten'; +$lang['savedir'] = 'Katalog för att spara data'; +$lang['basedir'] = 'Grundkatalog'; +$lang['baseurl'] = 'Grund-webbadress'; +$lang['cookiedir'] = 'Cookie sökväg. Lämna blankt för att använda basurl.'; +$lang['dmode'] = 'Filskydd för nya kataloger'; +$lang['fmode'] = 'Filskydd för nya filer'; +$lang['allowdebug'] = 'Tillåt felsökning <b>stäng av om det inte behövs!</b>'; $lang['recent'] = 'Antal poster under "Nyligen ändrat"'; +$lang['recent_days'] = 'Hur många ändringar som ska sparas (dagar)'; $lang['breadcrumbs'] = 'Antal spår'; $lang['youarehere'] = 'Hierarkiska spår'; +$lang['fullpath'] = 'Visa fullständig sökväg i sidfoten'; $lang['typography'] = 'Aktivera typografiska ersättningar'; -$lang['htmlok'] = 'Tillåt inbäddad HTML'; -$lang['phpok'] = 'Tillåt inbäddad PHP'; $lang['dformat'] = 'Datumformat (se PHP:s <a href="http://www.php.net/strftime">strftime</a>-funktion)'; $lang['signature'] = 'Signatur'; +$lang['showuseras'] = 'Vad som skall visas när man visar den användare som senast redigerade en sida'; $lang['toptoclevel'] = 'Toppnivå för innehållsförteckning'; $lang['tocminheads'] = 'Minimalt antal rubriker för att avgöra om innehållsförteckning byggs'; $lang['maxtoclevel'] = 'Maximal nivå för innehållsförteckning'; @@ -72,15 +77,8 @@ $lang['maxseclevel'] = 'Maximal nivå för redigering av rubriker'; $lang['camelcase'] = 'Använd CamelCase för länkar'; $lang['deaccent'] = 'Rena sidnamn'; $lang['useheading'] = 'Använda första rubriken som sidnamn'; -$lang['refcheck'] = 'Kontrollera referenser till mediafiler'; -$lang['refshow'] = 'Antal mediareferenser som ska visas'; -$lang['allowdebug'] = 'Tillåt felsökning <b>stäng av om det inte behövs!</b>'; -$lang['usewordblock'] = 'Blockera spam baserat på ordlista'; -$lang['indexdelay'] = 'Tidsfördröjning före indexering (sek)'; -$lang['relnofollow'] = 'Använd rel="nofollow" för externa länkar'; -$lang['mailguard'] = 'Koda e-postadresser'; -$lang['iexssprotect'] = 'Kontrollera om uppladdade filer innehåller eventuellt skadlig JavaScript eller HTML-kod'; -$lang['showuseras'] = 'Vad som skall visas när man visar den användare som senast redigerade en sida'; +$lang['sneaky_index'] = 'Som standard visar DokuWiki alla namnrymder på indexsidan. Genom att aktivera det här valet döljer man namnrymder som användaren inte har behörighet att läsa. Det kan leda till att man döljer åtkomliga undernamnrymder, och gör indexet oanvändbart med vissa ACL-inställningar.'; +$lang['hidepages'] = 'Dölj matchande sidor (reguljära uttryck)'; $lang['useacl'] = 'Använd behörighetslista (ACL)'; $lang['autopasswd'] = 'Autogenerera lösenord'; $lang['authtype'] = 'System för autentisering'; @@ -89,60 +87,69 @@ $lang['defaultgroup'] = 'Förvald grupp'; $lang['superuser'] = 'Huvudadministratör - en grupp eller en användare med full tillgång till alla sidor och funktioner, oavsett behörighetsinställningars'; $lang['manager'] = 'Administratör -- en grupp eller användare med tillgång till vissa administrativa funktioner.'; $lang['profileconfirm'] = 'Bekräfta ändringarna i profilen med lösenordet'; +$lang['rememberme'] = 'Tillåt permanenta inloggningscookies (kom ihåg mig)'; $lang['disableactions'] = 'Stäng av funktioner i DokuWiki'; $lang['disableactions_check'] = 'Kontroll'; $lang['disableactions_subscription'] = 'Prenumerera/Säg upp prenumeration'; $lang['disableactions_wikicode'] = 'Visa källkod/Exportera råtext'; $lang['disableactions_other'] = 'Andra funktioner (kommaseparerade)'; -$lang['sneaky_index'] = 'Som standard visar DokuWiki alla namnrymder på indexsidan. Genom att aktivera det här valet döljer man namnrymder som användaren inte har behörighet att läsa. Det kan leda till att man döljer åtkomliga undernamnrymder, och gör indexet oanvändbart med vissa ACL-inställningar.'; $lang['auth_security_timeout'] = 'Autentisieringssäkerhets timeout (sekunder)'; $lang['securecookie'] = 'Skall cookies som sätts via HTTPS endast skickas via HTTPS från webbläsaren? Avaktivera detta alternativ endast om inloggningen till din wiki är säkrad med SSL men läsning av wikin är osäkrad.'; -$lang['updatecheck'] = 'Kontrollera uppdateringar och säkerhetsvarningar? DokuWiki behöver kontakta update.dokuwiki.org för den här funktionen.'; -$lang['userewrite'] = 'Använd rena webbadresser'; -$lang['useslash'] = 'Använd snedstreck för att separera namnrymder i webbadresser'; +$lang['usewordblock'] = 'Blockera spam baserat på ordlista'; +$lang['relnofollow'] = 'Använd rel="nofollow" för externa länkar'; +$lang['indexdelay'] = 'Tidsfördröjning före indexering (sek)'; +$lang['mailguard'] = 'Koda e-postadresser'; +$lang['iexssprotect'] = 'Kontrollera om uppladdade filer innehåller eventuellt skadlig JavaScript eller HTML-kod'; $lang['usedraft'] = 'Spara utkast automatiskt under redigering'; -$lang['sepchar'] = 'Ersätt blanktecken i webbadresser med'; -$lang['canonical'] = 'Använd fullständiga webbadresser'; -$lang['autoplural'] = 'Leta efter pluralformer av länkar'; -$lang['compression'] = 'Metod för komprimering av gamla versioner'; -$lang['cachetime'] = 'Maximal livslängd för cache (sek)'; +$lang['htmlok'] = 'Tillåt inbäddad HTML'; +$lang['phpok'] = 'Tillåt inbäddad PHP'; $lang['locktime'] = 'Maximal livslängd för fillåsning (sek)'; +$lang['cachetime'] = 'Maximal livslängd för cache (sek)'; +$lang['target____wiki'] = 'Målfönster för interna länkar'; +$lang['target____interwiki'] = 'Målfönster för interwiki-länkar'; +$lang['target____extern'] = 'Målfönster för externa länkar'; +$lang['target____media'] = 'Målfönster för medialänkar'; +$lang['target____windows'] = 'Målfönster för windowslänkar'; +$lang['refcheck'] = 'Kontrollera referenser till mediafiler'; +$lang['refshow'] = 'Antal mediareferenser som ska visas'; +$lang['gdlib'] = 'Version av GD-biblioteket'; +$lang['im_convert'] = 'Sökväg till ImageMagicks konverteringsverktyg'; +$lang['jpg_quality'] = 'Kvalitet för JPG-komprimering (0-100)'; $lang['fetchsize'] = 'Maximal storlek (bytes) som fetch.php får ladda ned externt'; +$lang['subscribers'] = 'Aktivera stöd för prenumeration på ändringar'; $lang['notify'] = 'Skicka meddelande om ändrade sidor till den här e-postadressen'; $lang['registernotify'] = 'Skicka meddelande om nyregistrerade användare till en här e-postadressen'; $lang['mailfrom'] = 'Avsändaradress i automatiska e-postmeddelanden'; $lang['mailprefix'] = 'Prefix i början på ämnesraden vid automatiska e-postmeddelanden'; +$lang['sitemap'] = 'Skapa Google sitemap (dagar)'; +$lang['rss_type'] = 'Typ av XML-flöde'; +$lang['rss_linkto'] = 'XML-flöde pekar på'; +$lang['rss_content'] = 'Vad ska visas för saker i XML-flödet?'; +$lang['rss_update'] = 'Uppdateringsintervall för XML-flöde (sek)'; +$lang['rss_show_summary'] = 'XML-flöde visar sammanfattning i rubriken'; +$lang['rss_media'] = 'Vilka ändringar ska listas i XML flödet?'; +$lang['updatecheck'] = 'Kontrollera uppdateringar och säkerhetsvarningar? DokuWiki behöver kontakta update.dokuwiki.org för den här funktionen.'; +$lang['userewrite'] = 'Använd rena webbadresser'; +$lang['useslash'] = 'Använd snedstreck för att separera namnrymder i webbadresser'; +$lang['sepchar'] = 'Ersätt blanktecken i webbadresser med'; +$lang['canonical'] = 'Använd fullständiga webbadresser'; +$lang['fnencode'] = 'Metod för kodning av icke-ASCII filnamn.'; +$lang['autoplural'] = 'Leta efter pluralformer av länkar'; +$lang['compression'] = 'Metod för komprimering av gamla versioner'; $lang['gzip_output'] = 'Använd gzip Content-Encoding för xhtml'; -$lang['gdlib'] = 'Version av GD-biblioteket'; -$lang['im_convert'] = 'Sökväg till ImageMagicks konverteringsverktyg'; -$lang['jpg_quality'] = 'Kvalitet för JPG-komprimering (0-100)'; -$lang['subscribers'] = 'Aktivera stöd för prenumeration på ändringar'; $lang['compress'] = 'Komprimera CSS och javascript'; -$lang['hidepages'] = 'Dölj matchande sidor (reguljära uttryck)'; $lang['send404'] = 'Skicka "HTTP 404/Page Not Found" för sidor som inte finns'; -$lang['sitemap'] = 'Skapa Google sitemap (dagar)'; $lang['broken_iua'] = 'Är funktionen ignore_user_abort trasig på ditt system? Det kan i så fall leda till att indexering av sökningar inte fungerar. Detta är ett känt problem med IIS+PHP/CGI. Se <a href="http://bugs.splitbrain.org/?do=details&task_id=852">Bug 852</a> för mer info.'; $lang['xsendfile'] = 'Använd X-Sendfile huvudet för att låta webservern leverera statiska filer? Din webserver behöver stöd för detta.'; $lang['renderer_xhtml'] = 'Generera för användning i huvudwikipresentation (xhtml)'; $lang['renderer__core'] = '%s (dokuwiki core)'; $lang['renderer__plugin'] = '%s (plugin)'; -$lang['rememberme'] = 'Tillåt permanenta inloggningscookies (kom ihåg mig)'; -$lang['rss_type'] = 'Typ av XML-flöde'; -$lang['rss_linkto'] = 'XML-flöde pekar på'; -$lang['rss_content'] = 'Vad ska visas för saker i XML-flödet?'; -$lang['rss_update'] = 'Uppdateringsintervall för XML-flöde (sek)'; -$lang['recent_days'] = 'Hur många ändringar som ska sparas (dagar)'; -$lang['rss_show_summary'] = 'XML-flöde visar sammanfattning i rubriken'; -$lang['target____wiki'] = 'Målfönster för interna länkar'; -$lang['target____interwiki'] = 'Målfönster för interwiki-länkar'; -$lang['target____extern'] = 'Målfönster för externa länkar'; -$lang['target____media'] = 'Målfönster för medialänkar'; -$lang['target____windows'] = 'Målfönster för windowslänkar'; $lang['proxy____host'] = 'Proxyserver'; $lang['proxy____port'] = 'Proxyport'; $lang['proxy____user'] = 'Användarnamn för proxy'; $lang['proxy____pass'] = 'Lösenord för proxy'; $lang['proxy____ssl'] = 'Använd ssl för anslutning till proxy'; +$lang['proxy____except'] = 'Regular expression för matchning av URL som proxy ska hoppa över.'; $lang['safemodehack'] = 'Aktivera safemode hack'; $lang['ftp____host'] = 'FTP-server för safemode hack'; $lang['ftp____port'] = 'FTP-port för safemode hack'; @@ -190,3 +197,4 @@ $lang['useheading_o_0'] = 'Aldrig'; $lang['useheading_o_navigation'] = 'Endst navigering'; $lang['useheading_o_content'] = 'Endast innehåll i wiki'; $lang['useheading_o_1'] = 'Alltid'; +$lang['readdircache'] = 'Max ålder för readdir cache (sek)'; diff --git a/lib/plugins/plugin/lang/sv/lang.php b/lib/plugins/plugin/lang/sv/lang.php index 5892e42b5..a8578c03c 100644 --- a/lib/plugins/plugin/lang/sv/lang.php +++ b/lib/plugins/plugin/lang/sv/lang.php @@ -16,6 +16,7 @@ * @author Peter Åström <eaustreum@gmail.com> * @author Håkan Sandell <hakan.sandell@home.se> * @author mikael@mallander.net + * @author Smorkster Andersson smorkster@gmail.com */ $lang['menu'] = 'Hantera insticksmoduler'; $lang['download'] = 'Ladda ned och installera en ny insticksmodul'; @@ -61,3 +62,4 @@ $lang['enabled'] = 'Tilläggsmodulen %s är aktiverad.'; $lang['notenabled'] = 'Tilläggsmodulen %s kunde inte aktiveras, kontrollera filrättigheterna.'; $lang['disabled'] = 'Tiläggsmodulen %s är avaktiverad.'; $lang['notdisabled'] = 'Tilläggsmodulen %s kunde inte avaktiveras, kontrollera filrättigheterna.'; +$lang['packageinstalled'] = 'Tilläggs paket (%d tillägg: %s) har installerats.'; diff --git a/lib/plugins/popularity/lang/ko/intro.txt b/lib/plugins/popularity/lang/ko/intro.txt index 2513b77b4..c75c57ba5 100644 --- a/lib/plugins/popularity/lang/ko/intro.txt +++ b/lib/plugins/popularity/lang/ko/intro.txt @@ -2,7 +2,7 @@ 설치된 위키의 익명 정보를 DokuWiki 개발자에게 보냅니다. 이 [[doku>popularity|도구]]는 DokuWiki가 실제 사용자에게 어떻게 사용되는지 DokuWiki 개발자에게 알려줌으로써 이 후 개발 시 참고가 됩니다. -설치된 위키가 커짐에 따라서 이 과정을 반복할 필요가 있습니다. 반복된 데이타는 익명 ID로 구별되어집니다. +설치된 위키가 커짐에 따라서 이 과정을 반복할 필요가 있습니다. 반복된 데이터는 익명 ID로 구별되어집니다. 보내려는 데이터는 설치 DokuWiki 버전, 문서와 파일 수, 크기, 설치 플러그인, 설치 PHP 정보등을 포함하고 있습니다. diff --git a/lib/plugins/popularity/lang/sv/lang.php b/lib/plugins/popularity/lang/sv/lang.php index 8be542e7f..90d820ba0 100644 --- a/lib/plugins/popularity/lang/sv/lang.php +++ b/lib/plugins/popularity/lang/sv/lang.php @@ -13,6 +13,7 @@ * @author Peter Åström <eaustreum@gmail.com> * @author Håkan Sandell <hakan.sandell@home.se> * @author mikael@mallander.net + * @author Smorkster Andersson smorkster@gmail.com */ $lang['name'] = 'Popularitets-feedback (det kan ta en stund att ladda sidan)'; $lang['submit'] = 'Sänd data'; diff --git a/lib/plugins/revert/lang/ko/lang.php b/lib/plugins/revert/lang/ko/lang.php index d36726279..f944361b8 100644 --- a/lib/plugins/revert/lang/ko/lang.php +++ b/lib/plugins/revert/lang/ko/lang.php @@ -16,5 +16,5 @@ $lang['reverted'] = '%s 판을 %s 판으로 되돌림'; $lang['removed'] = '%s 삭제함'; $lang['revstart'] = '되돌리기 작업을 시작합니다. 오랜 시간이 걸릴 수 있습니다. 완료되기 전에 스크립트 시간 초과가 발생한다면 더 작은 작업으로 나누어서 되돌리시기 바랍니다.'; $lang['revstop'] = '되돌리기 작업이 성공적으로 끝났습니다.'; -$lang['note1'] = '참고: 대소문자를 구별하여 찾습니다'; +$lang['note1'] = '참고: 대소문자를 구별해 찾습니다'; $lang['note2'] = '참고: 이 문서는 <i>%s</i> 스팸 단어를 포함하지 않은 최근 이전 판으로 되돌립니다. '; diff --git a/lib/plugins/revert/lang/sv/lang.php b/lib/plugins/revert/lang/sv/lang.php index 29c6702eb..4a727b339 100644 --- a/lib/plugins/revert/lang/sv/lang.php +++ b/lib/plugins/revert/lang/sv/lang.php @@ -15,6 +15,7 @@ * @author Peter Åström <eaustreum@gmail.com> * @author Håkan Sandell <hakan.sandell@home.se> * @author mikael@mallander.net + * @author Smorkster Andersson smorkster@gmail.com */ $lang['menu'] = 'Hantera återställningar'; $lang['filter'] = 'Sök efter spamsidor'; diff --git a/lib/plugins/usermanager/admin.php b/lib/plugins/usermanager/admin.php index 01f4a4cdb..445836a50 100644 --- a/lib/plugins/usermanager/admin.php +++ b/lib/plugins/usermanager/admin.php @@ -355,7 +355,7 @@ class admin_plugin_usermanager extends DokuWiki_Admin_Plugin { if ($this->_auth->canDo('modPass')){ if (empty($pass)){ if($INPUT->has('usernotify')){ - $pass = auth_pwgen(); + $pass = auth_pwgen($user); } else { msg($this->lang['add_fail'], -1); return false; @@ -496,7 +496,7 @@ class admin_plugin_usermanager extends DokuWiki_Admin_Plugin { // generate password if left empty and notification is on if($INPUT->has('usernotify') && empty($newpass)){ - $newpass = auth_pwgen(); + $newpass = auth_pwgen($olduser); } if (!empty($newpass) && $this->_auth->canDo('modPass')) diff --git a/lib/plugins/usermanager/lang/ko/lang.php b/lib/plugins/usermanager/lang/ko/lang.php index f8c400d19..57bfbc4a2 100644 --- a/lib/plugins/usermanager/lang/ko/lang.php +++ b/lib/plugins/usermanager/lang/ko/lang.php @@ -23,8 +23,8 @@ $lang['value'] = '값'; $lang['add'] = '추가'; $lang['delete'] = '삭제'; $lang['delete_selected'] = '선택 삭제'; -$lang['edit'] = '수정'; -$lang['edit_prompt'] = '이 사용자 수정'; +$lang['edit'] = '편집'; +$lang['edit_prompt'] = '이 사용자 편집'; $lang['modify'] = '바뀜 저장'; $lang['search'] = '찾기'; $lang['search_prompt'] = '찾기 실행'; diff --git a/lib/plugins/usermanager/lang/sv/lang.php b/lib/plugins/usermanager/lang/sv/lang.php index bd747927e..f8b530d90 100644 --- a/lib/plugins/usermanager/lang/sv/lang.php +++ b/lib/plugins/usermanager/lang/sv/lang.php @@ -15,6 +15,7 @@ * @author Peter Åström <eaustreum@gmail.com> * @author Håkan Sandell <hakan.sandell@home.se> * @author mikael@mallander.net + * @author Smorkster Andersson smorkster@gmail.com */ $lang['menu'] = 'Hantera användare'; $lang['noauth'] = '(användarautentisering ej tillgänlig)'; diff --git a/lib/tpl/dokuwiki/detail.php b/lib/tpl/dokuwiki/detail.php index a8c5fef8a..d2ed530a3 100644 --- a/lib/tpl/dokuwiki/detail.php +++ b/lib/tpl/dokuwiki/detail.php @@ -9,12 +9,12 @@ // must be run from within DokuWiki if (!defined('DOKU_INC')) die(); +header('X-UA-Compatible: IE=edge,chrome=1'); ?><!DOCTYPE html> <html lang="<?php echo $conf['lang']?>" dir="<?php echo $lang['direction'] ?>" class="no-js"> <head> <meta charset="utf-8" /> - <!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" /><![endif]--> <title> <?php echo hsc(tpl_img_getTag('IPTC.Headline',$IMG))?> [<?php echo strip_tags($conf['title'])?>] diff --git a/lib/tpl/dokuwiki/main.php b/lib/tpl/dokuwiki/main.php index 963750a1c..43a0c0da7 100644 --- a/lib/tpl/dokuwiki/main.php +++ b/lib/tpl/dokuwiki/main.php @@ -9,6 +9,7 @@ */ if (!defined('DOKU_INC')) die(); /* must be run from within DokuWiki */ +header('X-UA-Compatible: IE=edge,chrome=1'); $hasSidebar = page_findnearest($conf['sidebar']); $showSidebar = $hasSidebar && ($ACT=='show'); @@ -16,7 +17,6 @@ $showSidebar = $hasSidebar && ($ACT=='show'); <html lang="<?php echo $conf['lang'] ?>" dir="<?php echo $lang['direction'] ?>" class="no-js"> <head> <meta charset="utf-8" /> - <!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" /><![endif]--> <title><?php tpl_pagetitle() ?> [<?php echo strip_tags($conf['title']) ?>]</title> <script>(function(H){H.className=H.className.replace(/\bno-js\b/,'js')})(document.documentElement)</script> <?php tpl_metaheaders() ?> diff --git a/lib/tpl/dokuwiki/mediamanager.php b/lib/tpl/dokuwiki/mediamanager.php index 23c9cee79..dadf2b10f 100644 --- a/lib/tpl/dokuwiki/mediamanager.php +++ b/lib/tpl/dokuwiki/mediamanager.php @@ -7,12 +7,12 @@ */ // must be run from within DokuWiki if (!defined('DOKU_INC')) die(); +header('X-UA-Compatible: IE=edge,chrome=1'); ?><!DOCTYPE html> <html lang="<?php echo $conf['lang']?>" dir="<?php echo $lang['direction'] ?>" class="popup no-js"> <head> <meta charset="utf-8" /> - <!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" /><![endif]--> <title> <?php echo hsc($lang['mediaselect'])?> [<?php echo strip_tags($conf['title'])?>] |