diff --git a/_test/tests/inc/PassHash.test.php b/_test/tests/inc/PassHash.test.php new file mode 100644 index 0000000000000000000000000000000000000000..b6cb070903861fd7bf0859b24fc939de9c9543ab --- /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_ml.test.php b/_test/tests/inc/common_ml.test.php index 0abfde37af2d50e6cfce380717f63ceb6aa273fc..6f3b71db446f3f86b56c6bcb2b0d6fc5fcddcce0 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 9c5781b248edd5cd13d7c4f7ddbec60c11269160..478fd2bc464860a57fc3edcbfd9b6a4c8ca2b38c 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 94bc14e1fb6bca19280701cd8d5d9ba3cc6492cf..c67e77c4548f5f12648a5112861be40ce510dd0f 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/inc/PassHash.class.php b/inc/PassHash.class.php index 080fb47780e0e5fc6c503a14fe7ac75f39cd1f22..61bd74939f8eb4e48f29ce82f25030f3afdab28c 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 3f1f7925b27bb6f02c3a9d3c6255749aec861d04..1f8489f03fe8e195bb27974cc790e72db7b8aa2d 100644 --- a/inc/auth.php +++ b/inc/auth.php @@ -54,7 +54,7 @@ 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); } } @@ -993,7 +993,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 4d939ac772af192bf5f179a2fb9f6a2f90b1ad1f..59ceb0c0df7a0796932323220e9b06f4fc9b5d4b 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()); } /** @@ -435,6 +435,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 +472,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); diff --git a/inc/fetch.functions.php b/inc/fetch.functions.php index e78bbf10396f8d9d7e58a9a285b96a8c74c6d8a9..53ade3555f78d79042b620ce137d1f9af5cacb9f 100644 --- a/inc/fetch.functions.php +++ b/inc/fetch.functions.php @@ -102,7 +102,7 @@ function checkFileStatus(&$media, &$file, $rev = '', $width=0, $height=0) { //media to local file if(media_isexternal($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 9fe5ee689042604437f377c7e39bb0ed949b4592..71e6429952fac132a851d81278118d91decba681 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 f7787f981c19bd2bd2b8f86d090c31941f3eb60b..b655d7c92c05cd37eb0568d283d43eb886685f52 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 76d6a535ddd946bd3b4d3b09735e89c1219aaa59..76684659c960e365a26d8209a9603cb2b09a4938 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 160b899d34295c8737ceb13a08df3fb93eacfa19..f8af4100fb99847abaf05b2a919ca3de25a2002f 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 8db34f9cf6fa539b6bafc6804034dc31688d036b..fa786461077b755395db9ad5fbda2c5f99412fd0 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 3e203b235127132e8e737d7763127862b7c51224..246f3e4f6f8820a2eacc1a1b728d8341c75dc56f 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 c510b598e6f732dd96b802d2007664b234a318e7..8f080fcb1006094f62b0fc3f651e9bf6764a92a3 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 8cc003950c0ddf0c4056d9056ebe9a8d0cf571b0..d3b37ec7cb887c49a8ab4626464a927dfbf53106 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 b67cc9bbcd566f8e6130b70180585d41a5d515eb..6db7b963cf6847fea36a63c6df28c334f9d48efa 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 03ca86d2a95ba916171c85fa2a93a06dce059a15..c13e0097af8397dc35deada55318275296295194 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 5f8b43b98a8cd4bb0ba2bde6afec3c1ce877d277..d4e38e044eea976517e2eff753956791ba07af6b 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/media.php b/inc/media.php index f3b1a0af59516f8fde3ecce27a8eef4dc6b28d0f..fbe1363ec2026a59663ed093cf6b54501223bb13 100644 --- a/inc/media.php +++ b/inc/media.php @@ -1891,20 +1891,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 24f06608d61ef0274191b584ee708c1e50c9575a..ab0fad121af3c84e12f46bd2c9469669c1500e6c 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/plugins/acl/lang/ko/lang.php b/lib/plugins/acl/lang/ko/lang.php index 5cec4b8fde2e03cb0f7d25360741c33dd10f24a0..7c1e9a43d822a6faa82d6caf5f29a0a0bdbb2f3a 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/authad/auth.php b/lib/plugins/authad/auth.php index b6b5dd268cd5a27479ad3a335c81699f9eadafd4..fcbd2eeef4424f2628ad27f1cf412504126458a6 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 9274db209140492864f165d4d05685851b70e9e8..f71202cfcdb8b73a839a037d8ceb3bf38e85ff1a 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/authldap/auth.php b/lib/plugins/authldap/auth.php index b49aa4792ed104e9a8ad2e2d5f01a129a9751e0b..6a967a6d4dd3840317bb0fce5123e619775fa3b1 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 d07f9c82ec4e992241457b282676449691c14ef3..2c295eeeb1e192147a804f159e3bf8bcbc042999 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 fc5b2e63ccbb1e8af54899a3b5900850ae940105..a3256628c52a66d132e75805e5e2d95524e81df5 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 ddedf8ae3185fc23cf88e1a2f538fff5d3d55ef7..e3f385f99d513f9343991bf644ad8c75f2035dc5 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/authmysql/auth.php b/lib/plugins/authmysql/auth.php index 5f6e86c71b99003bd4b66f74886ea8802a8bb0e3..036644a6797361e24312d5e1a403402346671121 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 647f3d96c9473743b2d617ddb7f19ecacc71eb63..427bea2739217b1fc2abfd0f8510e0cc581b7261 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/config/lang/ko/intro.txt b/lib/plugins/config/lang/ko/intro.txt index a2dc7b6f6f685c552dcb62a6bf71325e0b48a69a..b9eb763a47e7c753f57eed4422b8677bdb08bd11 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 f69af2df6cc74efc1c8951de71f066369cb26bd1..da155bcef4ed1f036a4ae55956dec555b71b724b 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/popularity/lang/ko/intro.txt b/lib/plugins/popularity/lang/ko/intro.txt index 2513b77b44e08df19612975ebe2cb91ca660a0ff..c75c57ba53c50aa1fe312095676549c2e95c6295 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/revert/lang/ko/lang.php b/lib/plugins/revert/lang/ko/lang.php index d36726279ecda04d64243a9e8e0d6871d56ecd52..f944361b8028f7b5850da2cf456b213b98433caa 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/usermanager/lang/ko/lang.php b/lib/plugins/usermanager/lang/ko/lang.php index f8c400d19454d9c48e27bb94c71e173eceab3060..57bfbc4a262b528dc2a107a7f5309e725d4e872a 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/tpl/dokuwiki/detail.php b/lib/tpl/dokuwiki/detail.php index a8c5fef8a9b1d931005169198ec36599e20518df..d2ed530a3f397d3a523e589ff2c10949d8c59ede 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 963750a1cde4fe8171876f6fce74223acf784102..43a0c0da7a7088e4bc29ee9fcd0d2f1b1c2e9df4 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 23c9cee798b0c6ee25081bd6af43aa61ecf830f8..dadf2b10f87d802de1c19a6a4277bf9d1379084f 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'])?>]