diff options
94 files changed, 603 insertions, 386 deletions
diff --git a/.htaccess.dist b/.htaccess.dist index aa2437b95..c90abdc80 100644 --- a/.htaccess.dist +++ b/.htaccess.dist @@ -15,7 +15,16 @@ ## $conf['userewrite'] = 1 - not needed for rewrite mode 2 #RewriteEngine on # -## Not all installations will require the following line. If you do, +#RewriteRule ^_media/(.*) lib/exe/fetch.php?media=$1 [QSA,L] +#RewriteRule ^_detail/(.*) lib/exe/detail.php?media=$1 [QSA,L] +#RewriteRule ^_export/([^/]+)/(.*) doku.php?do=export_$1&id=$2 [QSA,L] +#RewriteRule ^$ doku.php [L] +#RewriteCond %{REQUEST_FILENAME} !-f +#RewriteCond %{REQUEST_FILENAME} !-d +#RewriteRule (.*) doku.php?id=$1 [QSA,L] +#RewriteRule ^index.php$ doku.php +# +## Not all installations will require the following line. If you do, ## change "/dokuwiki" to the path to your dokuwiki directory relative ## to your document root. #RewriteBase /dokuwiki @@ -25,12 +34,3 @@ ## rules if your server setup allows HTTPS. #RewriteCond %{HTTPS} !=on #RewriteRule ^lib/exe/xmlrpc.php$ https://%{SERVER_NAME}%{REQUEST_URI} [L,R=301] -# -#RewriteRule ^_media/(.*) lib/exe/fetch.php?media=$1 [QSA,L] -#RewriteRule ^_detail/(.*) lib/exe/detail.php?media=$1 [QSA,L] -#RewriteRule ^_export/([^/]+)/(.*) doku.php?do=export_$1&id=$2 [QSA,L] -#RewriteRule ^$ doku.php [L] -#RewriteCond %{REQUEST_FILENAME} !-f -#RewriteCond %{REQUEST_FILENAME} !-d -#RewriteRule (.*) doku.php?id=$1 [QSA,L] -#RewriteRule ^index.php$ doku.php diff --git a/_test/tests/inc/httpclient_http.test.php b/_test/tests/inc/httpclient_http.test.php index 9959a1f06..252eb6b65 100644 --- a/_test/tests/inc/httpclient_http.test.php +++ b/_test/tests/inc/httpclient_http.test.php @@ -134,6 +134,19 @@ class httpclient_http_test extends DokuWikiTest { /** * @group internet */ + function test_maxbodyok(){ + $http = new HTTPClient(); + $http->max_bodysize = 500*1024; + $data = $http->get($this->server.'/stream/5'); + $this->assertTrue($data !== false, 'HTTP response'); + $http->max_bodysize_abort = false; + $data = $http->get($this->server.'/stream/5'); + $this->assertTrue($data !== false, 'HTTP response'); + } + + /** + * @group internet + */ function test_basicauth(){ $http = new HTTPClient(); $http->user = 'user'; diff --git a/_test/tests/inc/media_get_from_url.test.php b/_test/tests/inc/media_get_from_url.test.php new file mode 100644 index 000000000..3903b8a05 --- /dev/null +++ b/_test/tests/inc/media_get_from_url.test.php @@ -0,0 +1,80 @@ +<?php + +class media_get_from_url_test extends DokuWikiTest { + + /** + * @group internet + */ + public function test_cache(){ + global $conf; + $conf['fetchsize'] = 500*1024; //500kb + + + $local = media_get_from_URL('http://www.google.com/images/srpr/logo3w.png','png',-1); + $this->assertTrue($local !== false); + $this->assertFileExists($local); + + // remember time stamp + $time = filemtime($local); + clearstatcache(false, $local); + sleep(1); + + // fetch again and make sure we got a cache file + $local = media_get_from_URL('http://www.google.com/images/srpr/logo3w.png','png',-1); + clearstatcache(false, $local); + $this->assertTrue($local !== false); + $this->assertFileExists($local); + $this->assertEquals($time, filemtime($local)); + + unlink($local); + } + + /** + * @group internet + */ + public function test_nocache(){ + global $conf; + $conf['fetchsize'] = 500*1024; //500kb + + $local = media_get_from_URL('http://www.google.com/images/srpr/logo3w.png','png',0); + $this->assertFalse($local); + } + + /** + * @group internet + * @group slow + */ + public function test_recache(){ + global $conf; + $conf['fetchsize'] = 500*1024; //500kb + + + $local = media_get_from_URL('http://www.google.com/images/srpr/logo3w.png','png',5); + $this->assertTrue($local !== false); + $this->assertFileExists($local); + + // remember time stamp + $time = filemtime($local); + clearstatcache(false, $local); + sleep(1); + + // fetch again and make sure we got a cache file + $local = media_get_from_URL('http://www.google.com/images/srpr/logo3w.png','png',5); + clearstatcache(false, $local); + $this->assertTrue($local !== false); + $this->assertFileExists($local); + $this->assertEquals($time, filemtime($local)); + + clearstatcache(false, $local); + sleep(6); + + // fetch again and make sure we got a new file + $local = media_get_from_URL('http://www.google.com/images/srpr/logo3w.png','png',5); + clearstatcache(false, $local); + $this->assertTrue($local !== false); + $this->assertFileExists($local); + $this->assertNotEquals($time, filemtime($local)); + + unlink($local); + } +}
\ No newline at end of file diff --git a/data/_dummy b/data/_dummy index e69de29bb..e492265be 100644 --- a/data/_dummy +++ b/data/_dummy @@ -0,0 +1 @@ +You can safely delete this file.
\ No newline at end of file diff --git a/data/attic/_dummy b/data/attic/_dummy index e69de29bb..e492265be 100644 --- a/data/attic/_dummy +++ b/data/attic/_dummy @@ -0,0 +1 @@ +You can safely delete this file.
\ No newline at end of file diff --git a/data/cache/_dummy b/data/cache/_dummy index e69de29bb..e492265be 100644 --- a/data/cache/_dummy +++ b/data/cache/_dummy @@ -0,0 +1 @@ +You can safely delete this file.
\ No newline at end of file diff --git a/data/index/_dummy b/data/index/_dummy index e69de29bb..e492265be 100644 --- a/data/index/_dummy +++ b/data/index/_dummy @@ -0,0 +1 @@ +You can safely delete this file.
\ No newline at end of file diff --git a/data/locks/_dummy b/data/locks/_dummy index e69de29bb..e492265be 100644 --- a/data/locks/_dummy +++ b/data/locks/_dummy @@ -0,0 +1 @@ +You can safely delete this file.
\ No newline at end of file diff --git a/data/media_attic/_dummy b/data/media_attic/_dummy index e69de29bb..e492265be 100644 --- a/data/media_attic/_dummy +++ b/data/media_attic/_dummy @@ -0,0 +1 @@ +You can safely delete this file.
\ No newline at end of file diff --git a/data/media_meta/_dummy b/data/media_meta/_dummy index e69de29bb..e492265be 100644 --- a/data/media_meta/_dummy +++ b/data/media_meta/_dummy @@ -0,0 +1 @@ +You can safely delete this file.
\ No newline at end of file diff --git a/data/meta/_dummy b/data/meta/_dummy index e69de29bb..e492265be 100644 --- a/data/meta/_dummy +++ b/data/meta/_dummy @@ -0,0 +1 @@ +You can safely delete this file.
\ No newline at end of file diff --git a/data/tmp/_dummy b/data/tmp/_dummy index e69de29bb..e492265be 100644 --- a/data/tmp/_dummy +++ b/data/tmp/_dummy @@ -0,0 +1 @@ +You can safely delete this file.
\ No newline at end of file diff --git a/inc/HTTPClient.php b/inc/HTTPClient.php index 51c1de875..772b580b2 100644 --- a/inc/HTTPClient.php +++ b/inc/HTTPClient.php @@ -150,6 +150,7 @@ class HTTPClient { * * @param string $url The URL to fetch * @param bool $sloppy304 Return body on 304 not modified + * @return bool|string response body, false on error * @author Andreas Gohr <andi@splitbrain.org> */ function get($url,$sloppy304=false){ @@ -170,6 +171,7 @@ class HTTPClient { * @param string $url The URL to fetch * @param array $data Associative array of parameters * @param bool $sloppy304 Return body on 304 not modified + * @return bool|string response body, false on error * @author Andreas Gohr <andi@splitbrain.org> */ function dget($url,$data,$sloppy304=false){ @@ -187,6 +189,9 @@ class HTTPClient { * * Returns the resulting page or false on an error; * + * @param string $url The URL to fetch + * @param array $data Associative array of parameters + * @return bool|string response body, false on error * @author Andreas Gohr <andi@splitbrain.org> */ function post($url,$data){ @@ -215,6 +220,9 @@ class HTTPClient { $this->start = $this->_time(); $this->error = ''; $this->status = 0; + $this->status = 0; + $this->resp_body = ''; + $this->resp_headers = array(); // don't accept gzip if truncated bodies might occur if($this->max_bodysize && @@ -440,9 +448,31 @@ class HTTPClient { $byte = $this->_readData($socket, 2, 'chunk'); // read trailing \r\n } } while ($chunk_size && !$abort); - }elseif($this->max_bodysize){ - // read just over the max_bodysize - $r_body = $this->_readData($socket, $this->max_bodysize+1, 'response', true); + }elseif(isset($this->resp_headers['content-length']) && !isset($this->resp_headers['transfer-encoding'])){ + /* RFC 2616 + * If a message is received with both a Transfer-Encoding header field and a Content-Length + * header field, the latter MUST be ignored. + */ + + // read up to the content-length or max_bodysize + // for keep alive we need to read the whole message to clean up the socket for the next read + if(!$this->keep_alive && $this->max_bodysize && $this->max_bodysize < $this->resp_headers['content-length']){ + $length = $this->max_bodysize; + }else{ + $length = $this->resp_headers['content-length']; + } + + $r_body = $this->_readData($socket, $length, 'response (content-length limited)', true); + }else{ + // read entire socket + $r_size = 0; + while (!feof($socket)) { + $r_body .= $this->_readData($socket, 4096, 'response (unlimited)', true); + } + } + + // recheck body size, we might had to read the whole body, so we abort late or trim here + if($this->max_bodysize){ if(strlen($r_body) > $this->max_bodysize){ if ($this->max_bodysize_abort) { throw new HTTPClientException('Allowed response size exceeded'); @@ -450,16 +480,6 @@ class HTTPClient { $this->error = 'Allowed response size exceeded'; } } - }elseif(isset($this->resp_headers['content-length']) && - !isset($this->resp_headers['transfer-encoding'])){ - // read up to the content-length - $r_body = $this->_readData($socket, $this->resp_headers['content-length'], 'response', true); - }else{ - // read entire socket - $r_size = 0; - while (!feof($socket)) { - $r_body .= $this->_readData($socket, 4096, 'response', true); - } } } catch (HTTPClientException $err) { @@ -502,8 +522,8 @@ class HTTPClient { * * Protocol, Servername and Port will be stripped from the request URL when a successful CONNECT happened * - * @param ressource &$socket - * @param string &$requesturl + * @param resource &$socket + * @param string &$requesturl * @return bool true if a tunnel was established */ function _ssltunnel(&$socket, &$requesturl){ @@ -543,9 +563,10 @@ class HTTPClient { /** * Safely write data to a socket * - * @param handle $socket An open socket handle - * @param string $data The data to write - * @param string $message Description of what is being read + * @param resource $socket An open socket handle + * @param string $data The data to write + * @param string $message Description of what is being read + * @throws HTTPClientException * @author Tom N Harris <tnharris@whoopdedo.org> */ function _sendData($socket, $data, $message) { @@ -585,10 +606,12 @@ class HTTPClient { * Reads up to a given number of bytes or throws an exception if the * response times out or ends prematurely. * - * @param handle $socket An open socket handle in non-blocking mode - * @param int $nbytes Number of bytes to read - * @param string $message Description of what is being read - * @param bool $ignore_eof End-of-file is not an error if this is set + * @param resource $socket An open socket handle in non-blocking mode + * @param int $nbytes Number of bytes to read + * @param string $message Description of what is being read + * @param bool $ignore_eof End-of-file is not an error if this is set + * @throws HTTPClientException + * @return string * @author Tom N Harris <tnharris@whoopdedo.org> */ function _readData($socket, $nbytes, $message, $ignore_eof = false) { @@ -605,8 +628,8 @@ class HTTPClient { $time_used = $this->_time() - $this->start; if ($time_used > $this->timeout) throw new HTTPClientException( - sprintf('Timeout while reading %s (%.3fs)', $message, $time_used), - -100); + sprintf('Timeout while reading %s after %d bytes (%.3fs)', $message, + strlen($r_data), $time_used), -100); if(feof($socket)) { if(!$ignore_eof) throw new HTTPClientException("Premature End of File (socket) while reading $message"); @@ -635,8 +658,10 @@ class HTTPClient { * * Always returns a complete line, including the terminating \n. * - * @param handle $socket An open socket handle in non-blocking mode - * @param string $message Description of what is being read + * @param resource $socket An open socket handle in non-blocking mode + * @param string $message Description of what is being read + * @throws HTTPClientException + * @return string * @author Tom N Harris <tnharris@whoopdedo.org> */ function _readLine($socket, $message) { @@ -669,10 +694,26 @@ class HTTPClient { /** * print debug info * + * Uses _debug_text or _debug_html depending on the SAPI name + * * @author Andreas Gohr <andi@splitbrain.org> */ function _debug($info,$var=null){ if(!$this->debug) return; + if(php_sapi_name() == 'cli'){ + $this->_debug_text($info, $var); + }else{ + $this->_debug_html($info, $var); + } + } + + /** + * print debug info as HTML + * + * @param $info + * @param null $var + */ + function _debug_html($info, $var=null){ print '<b>'.$info.'</b> '.($this->_time() - $this->start).'s<br />'; if(!is_null($var)){ ob_start(); @@ -684,6 +725,18 @@ class HTTPClient { } /** + * prints debug info as plain text + * + * @param $info + * @param null $var + */ + function _debug_text($info, $var=null){ + print '*'.$info.'* '.($this->_time() - $this->start)."s\n"; + if(!is_null($var)) print_r($var); + print "\n-----------------------------------------------\n"; + } + + /** * Return current timestamp in microsecond resolution */ static function _time(){ @@ -797,6 +850,8 @@ class HTTPClient { /** * Generates a unique identifier for a connection. * + * @param string $server + * @param string $port * @return string unique identifier */ function _uniqueConnectionId($server, $port) { diff --git a/inc/Mailer.class.php b/inc/Mailer.class.php index f1492be9b..f87d7dd84 100644 --- a/inc/Mailer.class.php +++ b/inc/Mailer.class.php @@ -51,7 +51,7 @@ class Mailer { $this->allowhtml = (bool)$conf['htmlmail']; // add some default headers for mailfiltering FS#2247 - $this->setHeader('X-Mailer', 'DokuWiki '.getVersion()); + $this->setHeader('X-Mailer', 'DokuWiki'); $this->setHeader('X-DokuWiki-User', $_SERVER['REMOTE_USER']); $this->setHeader('X-DokuWiki-Title', $conf['title']); $this->setHeader('X-DokuWiki-Server', $server); diff --git a/inc/actions.php b/inc/actions.php index e0ad908b7..da3414eb2 100644 --- a/inc/actions.php +++ b/inc/actions.php @@ -172,7 +172,7 @@ function act_dispatch(){ $evt->advise_after(); // Make sure plugs can handle 'denied' if($conf['send404'] && $ACT == 'denied') { - header('HTTP/1.0 403 Forbidden'); + http_status(403); } unset($evt); @@ -658,7 +658,7 @@ function act_sitemap($act) { global $conf; if ($conf['sitemap'] < 1 || !is_numeric($conf['sitemap'])) { - header("HTTP/1.0 404 Not Found"); + http_status(404); print "Sitemap generation is disabled."; exit; } @@ -690,7 +690,7 @@ function act_sitemap($act) { exit; } - header("HTTP/1.0 500 Internal Server Error"); + http_status(500); print "Could not read the sitemap file - bad permissions?"; exit; } diff --git a/inc/auth.php b/inc/auth.php index 7f427bd8d..9566a2615 100644 --- a/inc/auth.php +++ b/inc/auth.php @@ -267,7 +267,7 @@ function auth_login($user, $pass, $sticky = false, $silent = false) { function auth_validateToken($token) { if(!$token || $token != $_SESSION[DOKU_COOKIE]['auth']['token']) { // bad token - header("HTTP/1.0 401 Unauthorized"); + http_status(401); print 'Invalid auth token - maybe the session timed out'; unset($_SESSION[DOKU_COOKIE]['auth']['token']); // no second chance exit; diff --git a/inc/html.php b/inc/html.php index a48f18bff..c2723bceb 100644 --- a/inc/html.php +++ b/inc/html.php @@ -1473,7 +1473,7 @@ function html_edit(){ } ?> <div class="editBox"> - <div class="toolbar"> + <div class="toolbar group"> <div id="draft__status"><?php if(!empty($INFO['draft'])) echo $lang['draftdate'].' '.dformat();?></div> <div id="tool__bar"><?php if ($wr && $data['media_manager']){?><a href="<?php echo DOKU_BASE?>lib/exe/mediamanager.php?ns=<?php echo $INFO['namespace']?>" target="_blank"><?php echo $lang['mediaselect'] ?></a><?php }?></div> @@ -1636,11 +1636,16 @@ function html_admin(){ } // data security check - // @todo: could be checked and only displayed if $conf['savedir'] is under the web root - echo '<a style="border:none; float:right;" - href="http://www.dokuwiki.org/security#web_access_security"> - <img src="data/security.png" alt="Your data directory seems to be protected properly." - onerror="this.parentNode.style.display=\'none\'" /></a>'; + // simple check if the 'savedir' is relative and accessible when appended to DOKU_URL + // it verifies either: + // 'savedir' has been moved elsewhere, or + // has protection to prevent the webserver serving files from it + if (substr($conf['savedir'],0,2) == './'){ + echo '<a style="border:none; float:right;" + href="http://www.dokuwiki.org/security#web_access_security"> + <img src="'.DOKU_URL.$conf['savedir'].'/security.png" alt="Your data directory seems to be protected properly." + onerror="this.parentNode.style.display=\'none\'" /></a>'; + } print p_locale_xhtml('admin'); diff --git a/inc/httputils.php b/inc/httputils.php index 4ba287eb5..d3f3cdde2 100644 --- a/inc/httputils.php +++ b/inc/httputils.php @@ -250,6 +250,11 @@ function http_cached_finish($file, $content) { } } +/** + * Fetches raw, unparsed POST data + * + * @return string + */ function http_get_raw_post_data() { static $postData = null; if ($postData === null) { @@ -257,3 +262,69 @@ function http_get_raw_post_data() { } return $postData; } + +/** + * Set the HTTP response status and takes care of the used PHP SAPI + * + * Inspired by CodeIgniter's set_status_header function + * + * @param int $code + * @param string $text + */ +function http_status($code = 200, $text = '') { + static $stati = array( + 200 => 'OK', + 201 => 'Created', + 202 => 'Accepted', + 203 => 'Non-Authoritative Information', + 204 => 'No Content', + 205 => 'Reset Content', + 206 => 'Partial Content', + + 300 => 'Multiple Choices', + 301 => 'Moved Permanently', + 302 => 'Found', + 304 => 'Not Modified', + 305 => 'Use Proxy', + 307 => 'Temporary Redirect', + + 400 => 'Bad Request', + 401 => 'Unauthorized', + 403 => 'Forbidden', + 404 => 'Not Found', + 405 => 'Method Not Allowed', + 406 => 'Not Acceptable', + 407 => 'Proxy Authentication Required', + 408 => 'Request Timeout', + 409 => 'Conflict', + 410 => 'Gone', + 411 => 'Length Required', + 412 => 'Precondition Failed', + 413 => 'Request Entity Too Large', + 414 => 'Request-URI Too Long', + 415 => 'Unsupported Media Type', + 416 => 'Requested Range Not Satisfiable', + 417 => 'Expectation Failed', + + 500 => 'Internal Server Error', + 501 => 'Not Implemented', + 502 => 'Bad Gateway', + 503 => 'Service Unavailable', + 504 => 'Gateway Timeout', + 505 => 'HTTP Version Not Supported' + ); + + if($text == '' && isset($stati[$code])) { + $text = $stati[$code]; + } + + $server_protocol = (isset($_SERVER['SERVER_PROTOCOL'])) ? $_SERVER['SERVER_PROTOCOL'] : false; + + if(substr(php_sapi_name(), 0, 3) == 'cgi') { + header("Status: {$code} {$text}", true); + } elseif($server_protocol == 'HTTP/1.1' OR $server_protocol == 'HTTP/1.0') { + header($server_protocol." {$code} {$text}", true, $code); + } else { + header("HTTP/1.1 {$code} {$text}", true, $code); + } +} diff --git a/inc/io.php b/inc/io.php index b4da7d635..5ecc79703 100644 --- a/inc/io.php +++ b/inc/io.php @@ -474,6 +474,7 @@ function io_download($url,$file,$useAttachment=false,$defaultName='',$maxSize=20 $http = new DokuHTTPClient(); $http->max_bodysize = $maxSize; $http->timeout = 25; //max. 25 sec + $http->keep_alive = false; // we do single ops here, no need for keep-alive $data = $http->get($url); if(!$data) return false; diff --git a/inc/lang/af/lang.php b/inc/lang/af/lang.php index 6de891a63..ab8e5177b 100644 --- a/inc/lang/af/lang.php +++ b/inc/lang/af/lang.php @@ -55,7 +55,7 @@ $lang['current'] = 'huidige'; $lang['line'] = 'Streak'; $lang['youarehere'] = 'Jy is hier'; $lang['by'] = 'by'; -$lang['restored'] = 'Het terug gegaan na vroeëre weergawe'; +$lang['restored'] = 'Het terug gegaan na vroeëre weergawe (%s)'; $lang['summary'] = 'Voorskou'; $lang['qb_bold'] = 'Vetdruk'; $lang['qb_italic'] = 'Skuinsdruk'; diff --git a/inc/lang/ar/lang.php b/inc/lang/ar/lang.php index 4928b3dbd..5b72e0a51 100644 --- a/inc/lang/ar/lang.php +++ b/inc/lang/ar/lang.php @@ -181,7 +181,7 @@ $lang['lastmod'] = 'آخر تعديل'; $lang['by'] = 'بواسطة'; $lang['deleted'] = 'حذفت'; $lang['created'] = 'اُنشئت'; -$lang['restored'] = 'استعيدت نسخة قديمة'; +$lang['restored'] = 'استعيدت نسخة قديمة (%s)'; $lang['external_edit'] = 'تحرير خارجي'; $lang['summary'] = 'ملخص التحرير'; $lang['noflash'] = 'تحتاج إلى<a href="http://www.adobe.com/products/flashplayer/">ملحق فلاش أدوبي</a> لعرض هذا المحتوى.'; @@ -258,8 +258,6 @@ $lang['subscr_m_unsubscribe'] = 'ألغ الاشتراك'; $lang['subscr_m_subscribe'] = 'اشترك'; $lang['subscr_m_receive'] = 'استقبال'; $lang['subscr_style_every'] = 'بريدا على كل تغيير'; -$lang['subscr_style_digest'] = 'بريد ملخص عن تغييرات كل صفحة'; -$lang['subscr_style_list'] = 'قائمة بالصفحات المتغيرة منذ آخر بريد'; $lang['authmodfailed'] = 'إعدادات تصريح فاسدة، يرجى مراسلة المدير.'; $lang['authtempfail'] = 'تصريح المشترك غير متوفر مؤقتاً، إن استمرت هذه الحالة يرجى مراسلة المدير'; $lang['authpwdexpire'] = 'ستنتهي صلاحية كلمة السر في %d . عليك بتغييرها سريعا.'; diff --git a/inc/lang/az/lang.php b/inc/lang/az/lang.php index 6df15a83e..5084d9f60 100644 --- a/inc/lang/az/lang.php +++ b/inc/lang/az/lang.php @@ -136,7 +136,7 @@ $lang['lastmod'] = 'Son dəyişiklər'; $lang['by'] = ' Kimdən'; $lang['deleted'] = 'silinib'; $lang['created'] = 'yaranıb'; -$lang['restored'] = 'köhnə versiya qaytarıldı'; +$lang['restored'] = 'köhnə versiya qaytarıldı (%s)'; $lang['external_edit'] = 'bayırdan dəyişik'; $lang['summary'] = 'Dəyişiklər xülasəsi'; $lang['noflash'] = 'Bu məzmuna baxmaq üçün <a href="http://www.adobe.com/products/flashplayer/">Adobe Flash Plugin</a> tələb olunur.'; diff --git a/inc/lang/bg/lang.php b/inc/lang/bg/lang.php index 47d83c62f..3c0a17a72 100644 --- a/inc/lang/bg/lang.php +++ b/inc/lang/bg/lang.php @@ -190,7 +190,7 @@ $lang['lastmod'] = 'Последна промяна'; $lang['by'] = 'от'; $lang['deleted'] = 'изтрита'; $lang['created'] = 'създадена'; -$lang['restored'] = 'възстановена предишна версия'; +$lang['restored'] = 'възстановена предишна версия (%s)'; $lang['external_edit'] = 'външна редакция'; $lang['summary'] = 'Обобщение'; $lang['noflash'] = 'Необходим е <a href="http://www.adobe.com/products/flashplayer/">Adobe Flash Plugin</a> за изобразяване на съдържанието.'; diff --git a/inc/lang/ca-valencia/lang.php b/inc/lang/ca-valencia/lang.php index 532f6c73d..6e7438f53 100644 --- a/inc/lang/ca-valencia/lang.php +++ b/inc/lang/ca-valencia/lang.php @@ -137,7 +137,7 @@ $lang['lastmod'] = 'Última modificació el'; $lang['by'] = 'per'; $lang['deleted'] = 'borrat'; $lang['created'] = 'creat'; -$lang['restored'] = 'restaurada l\'última versió'; +$lang['restored'] = 'restaurada l\'última versió (%s)'; $lang['external_edit'] = 'edició externa'; $lang['summary'] = 'Editar sumari'; $lang['noflash'] = 'Necessita el <a href="http://www.adobe.com/products/flashplayer/">plúgin d\'Adobe Flash</a> per a vore este contingut.'; diff --git a/inc/lang/ca/lang.php b/inc/lang/ca/lang.php index cb2b64686..a429dc06a 100644 --- a/inc/lang/ca/lang.php +++ b/inc/lang/ca/lang.php @@ -180,7 +180,7 @@ $lang['lastmod'] = 'Darrera modificació'; $lang['by'] = 'per'; $lang['deleted'] = 'suprimit'; $lang['created'] = 'creat'; -$lang['restored'] = 's\'ha restaurat una versió anterior'; +$lang['restored'] = 's\'ha restaurat una versió anterior %s'; $lang['external_edit'] = 'edició externa'; $lang['summary'] = 'Resum d\'edició'; $lang['noflash'] = 'Per a visualitzar aquest contingut necessiteu el <a href="http://www.adobe.com/products/flashplayer/">connector d\'Adobe Flash</a>.'; diff --git a/inc/lang/cs/lang.php b/inc/lang/cs/lang.php index af94424ac..f0b8f3ba4 100644 --- a/inc/lang/cs/lang.php +++ b/inc/lang/cs/lang.php @@ -188,7 +188,7 @@ $lang['lastmod'] = 'Poslední úprava'; $lang['by'] = 'autor:'; $lang['deleted'] = 'odstraněno'; $lang['created'] = 'vytvořeno'; -$lang['restored'] = 'stará verze byla obnovena'; +$lang['restored'] = 'stará verze byla obnovena (%s)'; $lang['external_edit'] = 'upraveno mimo DokuWiki'; $lang['summary'] = 'Komentář k úpravám'; $lang['noflash'] = 'Pro přehrání obsahu potřebujete <a href="http://www.adobe.com/products/flashplayer/">Adobe Flash Plugin</a>.'; diff --git a/inc/lang/da/lang.php b/inc/lang/da/lang.php index f132c133b..022de8127 100644 --- a/inc/lang/da/lang.php +++ b/inc/lang/da/lang.php @@ -188,7 +188,7 @@ $lang['lastmod'] = 'Sidst ændret'; $lang['by'] = 'af'; $lang['deleted'] = 'slettet'; $lang['created'] = 'oprettet'; -$lang['restored'] = 'gammel udgave reetableret'; +$lang['restored'] = 'gammel udgave reetableret (%s)'; $lang['external_edit'] = 'ekstern redigering'; $lang['summary'] = 'Redigerings resumé'; $lang['noflash'] = 'Den <a href="http://www.adobe.com/products/flashplayer/">Adobe Flash Plugin</a> er nødvendig til at vise denne indehold.'; diff --git a/inc/lang/el/lang.php b/inc/lang/el/lang.php index 55b70074f..0fe343026 100644 --- a/inc/lang/el/lang.php +++ b/inc/lang/el/lang.php @@ -148,7 +148,6 @@ $lang['uploadsucc'] = 'Επιτυχής φόρτωση'; $lang['uploadfail'] = 'Η μεταφόρτωση απέτυχε. Πιθανόν αυτό να οφείλεται στις ρυθμίσεις πρόσβασης του αρχείου.'; $lang['uploadwrong'] = 'Η μεταφόρτωση δεν έγινε δεκτή. Δεν επιτρέπονται αρχεία αυτού του τύπου!'; $lang['uploadexist'] = 'Το αρχείο ήδη υπάρχει. Δεν έγινε καμία αλλαγή.'; -$lang['uploadbadcontent'] = 'Το περιεχόμενο του αρχείου δεν ταιριάζει με την επέκτασή του.'; $lang['uploadspam'] = 'Η μεταφόρτωση ακυρώθηκε από το φίλτρο spam.'; $lang['uploadxss'] = 'Η μεταφόρτωση ακυρώθηκε λόγω πιθανού επικίνδυνου περιεχομένου.'; $lang['uploadsize'] = 'Το αρχείο ήταν πολύ μεγάλο. (μέγιστο %s)'; @@ -184,7 +183,7 @@ $lang['lastmod'] = 'Τελευταία τροποποίηση'; $lang['by'] = 'από'; $lang['deleted'] = 'διαγράφηκε'; $lang['created'] = 'δημιουργήθηκε'; -$lang['restored'] = 'παλαιότερη έκδοση επαναφέρθηκε'; +$lang['restored'] = 'παλαιότερη έκδοση επαναφέρθηκε (%s)'; $lang['external_edit'] = 'εξωτερική τροποποίηση'; $lang['summary'] = 'Επεξεργασία σύνοψης'; $lang['noflash'] = 'Το <a href="http://www.adobe.com/products/flashplayer/">Adobe Flash Plugin</a> απαιτείται για την προβολή αυτού του στοιχείου.'; @@ -314,8 +313,7 @@ $lang['media_upload'] = 'Φόρτωση στο <strong>%s</strong> φά $lang['media_search'] = 'Αναζήτηση στο <strong>%s</strong> φάκελο.'; $lang['media_view'] = '%s'; $lang['media_viewold'] = '%s στα %s'; -$lang['media_edit'] = 'Επεξεργασία'; -$lang['media_history'] = 'Αυτές είναι οι παλαιότερες αναθεωρήσεις του αρχείου.'; +$lang['media_edit'] = 'Επεξεργασία %s'; $lang['media_meta_edited'] = 'τα μεταδεδομένα επεξεργάστηκαν'; $lang['media_perm_read'] = 'Συγνώμη, δεν έχετε επαρκή διακαιώματα για να διαβάσετε αυτά τα αρχεία.'; $lang['media_perm_upload'] = 'Συγνώμη, δεν έχετε επαρκή διακαιώματα για να φορτώσετε αυτά τα αρχεία.'; diff --git a/inc/lang/eo/lang.php b/inc/lang/eo/lang.php index 1c3b6f519..2d9b03148 100644 --- a/inc/lang/eo/lang.php +++ b/inc/lang/eo/lang.php @@ -184,7 +184,7 @@ $lang['lastmod'] = 'Lastaj ŝanĝoj'; $lang['by'] = 'de'; $lang['deleted'] = 'forigita'; $lang['created'] = 'kreita'; -$lang['restored'] = 'malnova revizio restarigita'; +$lang['restored'] = 'malnova revizio restarigita (%s)'; $lang['external_edit'] = 'ekstera redakto'; $lang['summary'] = 'Bulteno de ŝanĝoj'; $lang['noflash'] = 'La <a href="http://www.adobe.com/products/flashplayer/">Adobe Flash Plugin</a> necesas por montri tiun ĉi enhavon.'; diff --git a/inc/lang/es/lang.php b/inc/lang/es/lang.php index 20d0284bc..193ec9a7d 100644 --- a/inc/lang/es/lang.php +++ b/inc/lang/es/lang.php @@ -203,7 +203,7 @@ $lang['lastmod'] = 'Última modificación'; $lang['by'] = 'por'; $lang['deleted'] = 'borrado'; $lang['created'] = 'creado'; -$lang['restored'] = 'se ha restaurado la vieja versión'; +$lang['restored'] = 'se ha restaurado la vieja versión (%s)'; $lang['external_edit'] = 'editor externo'; $lang['summary'] = 'Resumen de la edición'; $lang['noflash'] = 'Para mostrar este contenido es necesario el <a href="http://www.adobe.com/products/flashplayer/">Plugin Adobe Flash</a>.'; @@ -280,8 +280,6 @@ $lang['subscr_m_unsubscribe'] = 'Darse de baja'; $lang['subscr_m_subscribe'] = 'Suscribirse'; $lang['subscr_m_receive'] = 'Recibir'; $lang['subscr_style_every'] = 'enviar correo en cada cambio'; -$lang['subscr_style_digest'] = 'recopilar correo de cambios por cada página'; -$lang['subscr_style_list'] = 'lista de páginas con cambios desde el último correo'; $lang['authmodfailed'] = 'Está mal configurada la autenticación de usuarios. Por favor, avisa al administrador del wiki.'; $lang['authtempfail'] = 'La autenticación de usuarios no está disponible temporalmente. Si esta situación persiste, por favor avisa al administrador del wiki.'; $lang['authpwdexpire'] = 'Su contraseña caducara en %d días, debería cambiarla lo antes posible'; diff --git a/inc/lang/et/lang.php b/inc/lang/et/lang.php index 8ae61558a..0a0310832 100644 --- a/inc/lang/et/lang.php +++ b/inc/lang/et/lang.php @@ -163,7 +163,7 @@ $lang['lastmod'] = 'Viimati muutnud'; $lang['by'] = 'persoon'; $lang['deleted'] = 'eemaldatud'; $lang['created'] = 'tekitatud'; -$lang['restored'] = 'vana versioon taastatud'; +$lang['restored'] = 'vana versioon taastatud (%s)'; $lang['external_edit'] = 'väline muutmine'; $lang['summary'] = 'kokkuvõte muudatustest'; $lang['mail_newpage'] = 'leht lisatud:'; diff --git a/inc/lang/eu/lang.php b/inc/lang/eu/lang.php index 5b03dcb97..7aab8b44c 100644 --- a/inc/lang/eu/lang.php +++ b/inc/lang/eu/lang.php @@ -178,7 +178,7 @@ $lang['lastmod'] = 'Azken aldaketa'; $lang['by'] = 'egilea:'; $lang['deleted'] = 'ezabatua'; $lang['created'] = 'sortua'; -$lang['restored'] = 'bertsio zaharra berrezarria'; +$lang['restored'] = 'bertsio zaharra berrezarria (%s)'; $lang['external_edit'] = 'kanpoko aldaketa'; $lang['summary'] = 'Aldatu laburpena'; $lang['noflash'] = '<a href="http://www.adobe.com/products/flashplayer/">Adobe Flash Plugin</a> beharrezkoa da eduki hau bistaratzeko.'; diff --git a/inc/lang/fa/lang.php b/inc/lang/fa/lang.php index 026d6499a..eb828a472 100644 --- a/inc/lang/fa/lang.php +++ b/inc/lang/fa/lang.php @@ -189,7 +189,7 @@ $lang['lastmod'] = 'آخرین ویرایش'; $lang['by'] = 'توسط'; $lang['deleted'] = 'حذف شد'; $lang['created'] = 'ایجاد شد'; -$lang['restored'] = 'یک نگارش پیشین واگردانی شد.'; +$lang['restored'] = 'یک نگارش پیشین واگردانی شد. (%s)'; $lang['external_edit'] = 'ویرایش خارجی'; $lang['summary'] = 'پیشنمایش'; $lang['noflash'] = 'برای نمایش محتویات <a href="http://www.adobe.com/products/flashplayer/">افزونهی فلش</a> مورد نیاز است.'; @@ -266,8 +266,6 @@ $lang['subscr_m_unsubscribe'] = 'لغو آبونه'; $lang['subscr_m_subscribe'] = 'آبونه شدن'; $lang['subscr_m_receive'] = 'دریافت کردن'; $lang['subscr_style_every'] = 'ارسال راینامه در تمامی تغییرات'; -$lang['subscr_style_digest'] = 'ارسال ایمیلهای فشرده برای تغییرات هر صفحه'; -$lang['subscr_style_list'] = 'لیست صفحات تغییر داده شده از آخرین راینامه'; $lang['authmodfailed'] = 'اشکال در نوع معتبرسازی کاربران، مدیر ویکی را باخبر سازید.'; $lang['authtempfail'] = 'معتبرسازی کابران موقتن مسدود میباشد. اگر این حالت پایدار بود، مدیر ویکی را باخبر سازید.'; $lang['authpwdexpire'] = 'کلمه عبور شما در %d روز منقضی خواهد شد ، شما باید آن را زود تغییر دهید'; diff --git a/inc/lang/fi/lang.php b/inc/lang/fi/lang.php index 73eb3d4cc..59e4dc6cb 100644 --- a/inc/lang/fi/lang.php +++ b/inc/lang/fi/lang.php @@ -183,7 +183,7 @@ $lang['lastmod'] = 'Viimeksi muutettu'; $lang['by'] = '/'; $lang['deleted'] = 'poistettu'; $lang['created'] = 'luotu'; -$lang['restored'] = 'vanha versio palautettu'; +$lang['restored'] = 'vanha versio palautettu (%s)'; $lang['external_edit'] = 'ulkoinen muokkaus'; $lang['summary'] = 'Yhteenveto muokkauksesta'; $lang['noflash'] = 'Tarvitset <a href="http://www.adobe.com/products/flashplayer/">Adobe Flash-liitännäisen</a> nähdäksesi tämän sisällön.'; diff --git a/inc/lang/fo/lang.php b/inc/lang/fo/lang.php index 14ec8c56b..9f51824db 100644 --- a/inc/lang/fo/lang.php +++ b/inc/lang/fo/lang.php @@ -130,7 +130,7 @@ $lang['lastmod'] = 'Seinast broytt'; $lang['by'] = 'av'; $lang['deleted'] = 'strika'; $lang['created'] = 'stovna'; -$lang['restored'] = 'gomul útgáva endurstovna'; +$lang['restored'] = 'gomul útgáva endurstovna (%s)'; $lang['summary'] = 'Samandráttur'; $lang['mail_newpage'] = 'skjal skoyta uppí:'; $lang['mail_changed'] = 'skjal broytt:'; diff --git a/inc/lang/gl/lang.php b/inc/lang/gl/lang.php index 7cc06a833..fa49c1121 100644 --- a/inc/lang/gl/lang.php +++ b/inc/lang/gl/lang.php @@ -181,7 +181,7 @@ $lang['lastmod'] = 'Última modificación'; $lang['by'] = 'por'; $lang['deleted'] = 'eliminado'; $lang['created'] = 'creado'; -$lang['restored'] = 'revisión antiga restaurada'; +$lang['restored'] = 'revisión antiga restaurada (%s)'; $lang['external_edit'] = 'edición externa'; $lang['summary'] = 'Resumo da edición'; $lang['noflash'] = 'Precísase o <a href="http://www.adobe.com/products/flashplayer/">Extensión Adobe Flash</a> para amosar este contido.'; @@ -258,8 +258,6 @@ $lang['subscr_m_unsubscribe'] = 'Desubscribir'; $lang['subscr_m_subscribe'] = 'Subscribir'; $lang['subscr_m_receive'] = 'Recibir'; $lang['subscr_style_every'] = 'correo-e en cada troco'; -$lang['subscr_style_digest'] = 'correo-e con resumo de trocos para cada páxina'; -$lang['subscr_style_list'] = 'lista de páxinas mudadas dende o último correo-e'; $lang['authmodfailed'] = 'Configuración de autenticación de usuario incorrecta. Por favor, informa ao Administrador do teu Wiki.'; $lang['authtempfail'] = 'A autenticación de usuario non está dispoñible de xeito temporal. De persistir esta situación, por favor, informa ao Administrador do teu Wiki.'; $lang['authpwdexpire'] = 'A túa contrasinal expirará en %d días, deberías cambiala pronto.'; diff --git a/inc/lang/he/lang.php b/inc/lang/he/lang.php index e474501ae..4853a0e2b 100644 --- a/inc/lang/he/lang.php +++ b/inc/lang/he/lang.php @@ -165,7 +165,7 @@ $lang['lastmod'] = 'מועד השינוי האחרון'; $lang['by'] = 'על ידי'; $lang['deleted'] = 'נמחק'; $lang['created'] = 'נוצר'; -$lang['restored'] = 'שוחזר'; +$lang['restored'] = 'שוחזר (%s)'; $lang['external_edit'] = 'עריכה חיצונית'; $lang['summary'] = 'תקציר העריכה'; $lang['noflash'] = '<a href="http://www.adobe.com/products/flashplayer/">תוסף פלאש לדפדפן</a> נדרש כדי להציג תוכן זה.'; @@ -243,7 +243,6 @@ $lang['i_modified'] = 'משיקולי אבטחה סקריפט זה י עליך לחלץ שנית את הקבצים מהחבילה שהורדה או להיעזר בדף <a href="http://dokuwiki.org/install">Dokuwiki installation instructions</a>'; $lang['i_funcna'] = 'פונקציית ה-PHP‏ <code>%s</code> אינה זמינה. יתכן כי מארח האתר חסם אותה מסיבה כלשהי?'; -$lang['i_phpver'] = 'גרסת ה־PHP שלך <code>%s</code> נמוכה מהדרוש. עליך לשדרג את התקנת ה־PHP שלך.'; $lang['i_permfail'] = '<code>%s</code> אינה ניתנת לכתיבה על ידי DokuWiki. עליך לשנות הרשאות תיקייה זו!'; $lang['i_confexists'] = '<code>%s</code> כבר קיים'; $lang['i_writeerr'] = 'אין אפשרות ליצור את <code>%s</code>. נא לבדוק את הרשאות הקובץ/תיקייה וליצור את הקובץ ידנית.'; diff --git a/inc/lang/hi/lang.php b/inc/lang/hi/lang.php index 893457066..d2021fcae 100644 --- a/inc/lang/hi/lang.php +++ b/inc/lang/hi/lang.php @@ -84,7 +84,6 @@ $lang['lastmod'] = 'अंतिम बार संशोधि $lang['by'] = 'के द्वारा'; $lang['deleted'] = 'हटाया'; $lang['created'] = 'निर्मित'; -$lang['restored'] = 'पुराने संशोधन बहाल'; $lang['external_edit'] = 'बाह्य सम्पादित'; $lang['summary'] = 'सारांश संपादित करें'; $lang['mail_newpage'] = 'पृष्ठ जोड़ा:'; diff --git a/inc/lang/hr/lang.php b/inc/lang/hr/lang.php index 97f4cf0c2..a607210d7 100644 --- a/inc/lang/hr/lang.php +++ b/inc/lang/hr/lang.php @@ -165,7 +165,7 @@ $lang['lastmod'] = 'Zadnja izmjena'; $lang['by'] = 'od'; $lang['deleted'] = 'obrisano'; $lang['created'] = 'stvoreno'; -$lang['restored'] = 'vraćena prijašnja inačica'; +$lang['restored'] = 'vraćena prijašnja inačica (%s)'; $lang['external_edit'] = 'vanjsko uređivanje'; $lang['summary'] = 'Sažetak izmjena'; $lang['noflash'] = 'Za prikazivanje ovog sadržaja potreban je <a href="http://www.adobe.com/products/flashplayer/">Adobe Flash Plugin</a>'; diff --git a/inc/lang/hu/lang.php b/inc/lang/hu/lang.php index c59cace77..275fb15d5 100644 --- a/inc/lang/hu/lang.php +++ b/inc/lang/hu/lang.php @@ -169,7 +169,7 @@ $lang['lastmod'] = 'Utolsó módosítás'; $lang['by'] = 'szerkesztette:'; $lang['deleted'] = 'eltávolítva'; $lang['created'] = 'létrehozva'; -$lang['restored'] = 'az előző változat helyreállítva'; +$lang['restored'] = 'az előző változat helyreállítva (%s)'; $lang['external_edit'] = 'külső szerkesztés'; $lang['summary'] = 'A változások összefoglalása'; $lang['noflash'] = 'Ennek a tartalomnak a megtekintéséhez <a href="http://www.adobe.com/products/flashplayer/">Adobe Flash Plugin</a> szükséges.'; diff --git a/inc/lang/ia/lang.php b/inc/lang/ia/lang.php index a9d5c376c..fd63fb5ef 100644 --- a/inc/lang/ia/lang.php +++ b/inc/lang/ia/lang.php @@ -163,7 +163,7 @@ $lang['lastmod'] = 'Ultime modification'; $lang['by'] = 'per'; $lang['deleted'] = 'removite'; $lang['created'] = 'create'; -$lang['restored'] = 'ancian version restaurate'; +$lang['restored'] = 'ancian version restaurate (%s)'; $lang['external_edit'] = 'modification externe'; $lang['summary'] = 'Modificar summario'; $lang['noflash'] = 'Le <a href="http://www.adobe.com/products/flashplayer/">plug-in Flash de Adobe</a> es necessari pro monstrar iste contento.'; @@ -227,8 +227,6 @@ $lang['subscr_m_unsubscribe'] = 'Cancellar subscription'; $lang['subscr_m_subscribe'] = 'Subscriber'; $lang['subscr_m_receive'] = 'Reciper'; $lang['subscr_style_every'] = 'un message pro cata modification'; -$lang['subscr_style_digest'] = 'un digesto de modificationes pro cata pagina'; -$lang['subscr_style_list'] = 'lista de paginas modificate depost le ultime e-mail'; $lang['authmodfailed'] = 'Configuration incorrecte de authentication de usator. Per favor informa le administrator de tu wiki.'; $lang['authtempfail'] = 'Le authentication de usator temporarimente non es disponibile. Si iste situation persiste, per favor informa le administrator de tu wiki.'; $lang['i_chooselang'] = 'Selige tu lingua'; diff --git a/inc/lang/id/lang.php b/inc/lang/id/lang.php index 91ed38e31..e14b9d9f5 100644 --- a/inc/lang/id/lang.php +++ b/inc/lang/id/lang.php @@ -125,7 +125,7 @@ $lang['lastmod'] = 'Terakhir diubah'; $lang['by'] = 'oleh'; $lang['deleted'] = 'terhapus'; $lang['created'] = 'dibuat'; -$lang['restored'] = 'revisi lama ditampilkan kembali'; +$lang['restored'] = 'revisi lama ditampilkan kembali (%s)'; $lang['external_edit'] = 'Perubahan eksternal'; $lang['summary'] = 'Edit summary'; $lang['mail_newpage'] = 'Halaman ditambahkan:'; diff --git a/inc/lang/is/lang.php b/inc/lang/is/lang.php index be20da6b3..78ae7e249 100644 --- a/inc/lang/is/lang.php +++ b/inc/lang/is/lang.php @@ -134,7 +134,7 @@ $lang['lastmod'] = 'Síðast breytt'; $lang['by'] = 'af'; $lang['deleted'] = 'eytt'; $lang['created'] = 'myndað'; -$lang['restored'] = 'Breytt aftur til fyrri útgáfu'; +$lang['restored'] = 'Breytt aftur til fyrri útgáfu (%s)'; $lang['external_edit'] = 'utanaðkomandi breyta'; $lang['summary'] = 'Forskoða'; $lang['noflash'] = 'Það þarf <a href="http://www.adobe.com/products/flashplayer/">Adobe Flash viðbót</a> til að sýna sumt efnið á þessari síðu'; diff --git a/inc/lang/it/lang.php b/inc/lang/it/lang.php index 1ad5ae1bb..307e7292f 100644 --- a/inc/lang/it/lang.php +++ b/inc/lang/it/lang.php @@ -187,7 +187,7 @@ $lang['lastmod'] = 'Ultima modifica'; $lang['by'] = 'da'; $lang['deleted'] = 'eliminata'; $lang['created'] = 'creata'; -$lang['restored'] = 'versione precedente ripristinata'; +$lang['restored'] = 'versione precedente ripristinata (%s)'; $lang['external_edit'] = 'modifica esterna'; $lang['summary'] = 'Oggetto della modifica'; $lang['noflash'] = 'E\' necessario <a href="http://www.adobe.com/products/flashplayer/">il plugin Adobe Flash</a> per visualizzare questo contenuto.'; @@ -263,8 +263,6 @@ $lang['subscr_m_unsubscribe'] = 'Rimuovi sottoscrizione'; $lang['subscr_m_subscribe'] = 'Sottoscrivi'; $lang['subscr_m_receive'] = 'Ricevi'; $lang['subscr_style_every'] = 'email per ogni modifica'; -$lang['subscr_style_digest'] = 'email riassuntiva delle modifiche di ogni pagina'; -$lang['subscr_style_list'] = 'elenco delle pagine modificate dall\'ultima email'; $lang['authmodfailed'] = 'La configurazione dell\'autenticazione non è corretta. Informa l\'amministratore di questo wiki.'; $lang['authtempfail'] = 'L\'autenticazione è temporaneamente non disponibile. Se questa situazione persiste, informa l\'amministratore di questo wiki.'; $lang['authpwdexpire'] = 'La tua password scadrà in %d giorni, dovresti cambiarla quanto prima.'; diff --git a/inc/lang/ja/lang.php b/inc/lang/ja/lang.php index 66de0dab5..7997889e4 100644 --- a/inc/lang/ja/lang.php +++ b/inc/lang/ja/lang.php @@ -181,7 +181,7 @@ $lang['lastmod'] = '最終更新'; $lang['by'] = 'by'; $lang['deleted'] = '削除'; $lang['created'] = '作成'; -$lang['restored'] = '以前のバージョンを復元'; +$lang['restored'] = '以前のバージョンを復元 (%s)'; $lang['external_edit'] = '外部編集'; $lang['summary'] = '編集の概要'; $lang['noflash'] = 'この内容を表示するためには <a href="http://www.adobe.com/products/flashplayer/">Adobe Flash Plugin</a> が必要です。'; diff --git a/inc/lang/km/lang.php b/inc/lang/km/lang.php index 6a5fa223f..85bb6afba 100644 --- a/inc/lang/km/lang.php +++ b/inc/lang/km/lang.php @@ -132,7 +132,6 @@ $lang['lastmod'] = 'ពេលកែចុងក្រោយ'; $lang['by'] = 'និពន្ឋដោយ'; $lang['deleted'] = 'យកចេញ'; $lang['created'] = 'បង្កើត'; -$lang['restored'] = 'ស្ដារបុនរាព្រឹតចាស់'; $lang['external_edit'] = 'កំរេពីក្រៅ'; $lang['summary'] = 'កែតម្រា'; @@ -207,7 +206,6 @@ $lang['i_superuser'] = 'អ្នកកំពូល'; $lang['i_problems'] = 'កម្មវិធីដំឡើងបានប៉ះឧបសគ្គ។ អ្នកមិនអាចបន្តទៅទៀត ដល់អ្នកជួសជុលវា។'; $lang['i_modified'] = ''; $lang['i_funcna'] = '<code>%s</code> '; -$lang['i_phpver'] = 'PHP ប្រវត់លេខ<code>%s</code> ជា'; $lang['i_permfail'] = '<code>%s</code> មិនអាចសាស'; $lang['i_confexists'] = '<code>%s</code> មានហាយ'; $lang['i_writeerr'] = 'មិនអាចបណ្កើ<code>%s</code>។ អ្នកត្រវការពិនិត្យអធិក្រឹតិរបស់ថតនឹងឯកសារ។'; diff --git a/inc/lang/ku/lang.php b/inc/lang/ku/lang.php index 63ccafa35..c9d658c6d 100644 --- a/inc/lang/ku/lang.php +++ b/inc/lang/ku/lang.php @@ -95,7 +95,7 @@ $lang['lastmod'] = 'Guherandina dawî'; $lang['by'] = 'by'; $lang['deleted'] = 'hat jê birin'; $lang['created'] = 'hat afirandin'; -$lang['restored'] = 'old revision restored'; +$lang['restored'] = 'old revision restored (%s)'; $lang['summary'] = 'Kurteya guhartinê'; $lang['mail_newpage'] = 'page added:'; diff --git a/inc/lang/la/lang.php b/inc/lang/la/lang.php index 77fec8362..bea921abc 100644 --- a/inc/lang/la/lang.php +++ b/inc/lang/la/lang.php @@ -131,7 +131,6 @@ $lang['uploadsucc'] = 'Oneratum perfectum'; $lang['uploadfail'] = 'Error onerandi.'; $lang['uploadwrong'] = 'Onerare non potest. Genus documenti non legitimum!'; $lang['uploadexist'] = 'Documentum iam est.'; -$lang['uploadbadcontent'] = 'Documentum oneratum cum genere documenti non congruit.'; $lang['uploadspam'] = 'Onerare non potest: nam in indice perscriptionis documentum est.'; $lang['uploadxss'] = 'Onerare non potest: nam forsitan malum scriptum in documento est.'; $lang['uploadsize'] = 'Documentum onerandum ponderosius est. (Maxime "%s")'; @@ -164,7 +163,7 @@ $lang['lastmod'] = 'Extrema mutatio'; $lang['by'] = 'a(b)'; $lang['deleted'] = 'deletur'; $lang['created'] = 'creatur'; -$lang['restored'] = 'Recensio uetus restituta'; +$lang['restored'] = 'Recensio uetus restituta (%s)'; $lang['external_edit'] = 'Externe recensere'; $lang['summary'] = 'Indicem recensere'; $lang['noflash'] = '<a href="http://www.adobe.com/products/flashplayer/">Adobe Flash Plugin</a> necessarium est.'; @@ -254,7 +253,6 @@ $lang['i_pol1'] = 'Publicus uicis (omnes legere, Sodales scribere $lang['i_pol2'] = 'Clausus uicis (Soli Sodales legere scribere et onerare poccunt)'; $lang['i_retry'] = 'Rursum temptas'; $lang['i_license'] = 'Elige facultatem sub qua tuus uicis est:'; -$lang['recent_global'] = 'Mutatione in hoc genere uides. Recentiores mutationes quoque uidere <a href="%s">potes</a>'; $lang['years'] = 'ab annis %d'; $lang['months'] = 'a mensibus %d'; $lang['weeks'] = 'a septimanis %d'; diff --git a/inc/lang/lb/lang.php b/inc/lang/lb/lang.php index e6409b7ff..bced5a50a 100644 --- a/inc/lang/lb/lang.php +++ b/inc/lang/lb/lang.php @@ -124,7 +124,7 @@ $lang['lastmod'] = 'Fir d\'lescht g\'ännert'; $lang['by'] = 'vun'; $lang['deleted'] = 'geläscht'; $lang['created'] = 'erstallt'; -$lang['restored'] = 'al Versioun zeréckgeholl'; +$lang['restored'] = 'al Versioun zeréckgeholl (%s)'; $lang['external_edit'] = 'extern Ännerung'; $lang['summary'] = 'Resumé vun den Ännerungen'; $lang['noflash'] = 'Den <a href="http://www.adobe.com/products/flashplayer/">Adobe Flash Plugin</a> get gebraucht fir dësen Inhalt unzeweisen.'; diff --git a/inc/lang/lt/lang.php b/inc/lang/lt/lang.php index 13ff8c305..8a4c4e6a5 100644 --- a/inc/lang/lt/lang.php +++ b/inc/lang/lt/lang.php @@ -132,7 +132,7 @@ $lang['lastmod'] = 'Keista'; $lang['by'] = 'vartotojo'; $lang['deleted'] = 'ištrintas'; $lang['created'] = 'sukurtas'; -$lang['restored'] = 'atstatyta sena versija'; +$lang['restored'] = 'atstatyta sena versija (%s)'; $lang['external_edit'] = 'redaguoti papildomomis priemonėmis'; $lang['summary'] = 'Redaguoti santrauką'; $lang['noflash'] = '<a href="http://www.adobe.com/products/flashplayer/">Adobe Flash Plugin</a> reikalingas šios medžiagos peržiūrai.'; diff --git a/inc/lang/lv/lang.php b/inc/lang/lv/lang.php index 671e5f52a..2027b87ba 100644 --- a/inc/lang/lv/lang.php +++ b/inc/lang/lv/lang.php @@ -178,7 +178,7 @@ $lang['lastmod'] = 'Labota'; $lang['by'] = ', labojis'; $lang['deleted'] = 'dzēsts'; $lang['created'] = 'izveidots'; -$lang['restored'] = 'vecā versija atjaunota'; +$lang['restored'] = 'vecā versija atjaunota (%s)'; $lang['external_edit'] = 'ārpussistēmas labojums'; $lang['summary'] = 'Anotācija'; $lang['noflash'] = 'Lai attēlotu lapas saturu, vajag <a href="http://www.adobe.com/products/flashplayer/">Adobe Flash Plugin</a>.'; diff --git a/inc/lang/mg/lang.php b/inc/lang/mg/lang.php index 4142f00d0..95589ab21 100644 --- a/inc/lang/mg/lang.php +++ b/inc/lang/mg/lang.php @@ -88,7 +88,7 @@ $lang['lastmod'] = 'Novaina farany:'; $lang['by'] = '/'; $lang['deleted'] = 'voafafa'; $lang['created'] = 'Voamboatra'; -$lang['restored'] = 'Naverina tamin\'ny kinova taloha'; +$lang['restored'] = 'Naverina tamin\'ny kinova taloha (%s)'; $lang['summary'] = 'Fanovana teo'; $lang['mail_newpage'] = 'pejy niampy:'; diff --git a/inc/lang/mk/lang.php b/inc/lang/mk/lang.php index 7482f2512..44bd489b7 100644 --- a/inc/lang/mk/lang.php +++ b/inc/lang/mk/lang.php @@ -136,7 +136,7 @@ $lang['lastmod'] = 'Последно изменета'; $lang['by'] = 'од'; $lang['deleted'] = 'отстранета'; $lang['created'] = 'креирана'; -$lang['restored'] = 'обновена е стара ревизија'; +$lang['restored'] = 'обновена е стара ревизија (%s)'; $lang['external_edit'] = 'надворешно уредување'; $lang['summary'] = 'Уреди го изводот'; $lang['noflash'] = '<a href="http://www.adobe.com/products/flashplayer/">Adobe Flash приклучокот</a> е потребен за да се прикаже оваа содржина.'; @@ -196,8 +196,6 @@ $lang['subscr_m_unsubscribe'] = 'Отплатување'; $lang['subscr_m_subscribe'] = 'Претплата'; $lang['subscr_m_receive'] = 'Прими'; $lang['subscr_style_every'] = 'е-пошта за секоја промена'; -$lang['subscr_style_digest'] = 'е-пошта со преглед од промените за секоја страница'; -$lang['subscr_style_list'] = 'листа на променети страници од последната е-пошта'; $lang['authmodfailed'] = 'Лоша конфигурација за автентикација на корисник. Ве молам информирајте го вики администратор.'; $lang['authtempfail'] = 'Автентикација на корисник е привремено недостапна. Ако оваа ситуација истрајува, ве молам известете го вики администратор.'; $lang['i_chooselang'] = 'Избере јазик'; diff --git a/inc/lang/mr/lang.php b/inc/lang/mr/lang.php index b754a3f1c..d95813efa 100644 --- a/inc/lang/mr/lang.php +++ b/inc/lang/mr/lang.php @@ -180,7 +180,6 @@ $lang['lastmod'] = 'सर्वात शेवटचा बद $lang['by'] = 'द्वारा'; $lang['deleted'] = 'काढून टाकले'; $lang['created'] = 'निर्माण केले'; -$lang['restored'] = 'जुनी आवृत्ति पुनर्स्थापित केली'; $lang['external_edit'] = 'बाहेरून संपादित'; $lang['summary'] = 'सारांश बदला'; $lang['noflash'] = 'ही माहिती दाखवण्यासाठी <a href="http://www.adobe.com/products/flashplayer/">अडोब फ्लॅश प्लेअर</a> ची गरज आहे.'; diff --git a/inc/lang/ms/lang.php b/inc/lang/ms/lang.php index 92dc86b5a..02c0e2c91 100644 --- a/inc/lang/ms/lang.php +++ b/inc/lang/ms/lang.php @@ -93,5 +93,5 @@ $lang['uploadfail'] = 'Ralat muat naik'; $lang['uploadxss'] = 'Fail ini mengandungi kod HTML atau kod skrip yang mungkin boleh disalah tafsir oleh pelayar web.'; $lang['toc'] = 'Jadual Kandungan'; $lang['current'] = 'kini'; -$lang['restored'] = 'Telah dikembalikan ke semakan sebelumnya'; +$lang['restored'] = 'Telah dikembalikan ke semakan sebelumnya (%s)'; $lang['summary'] = 'Paparan'; diff --git a/inc/lang/ne/lang.php b/inc/lang/ne/lang.php index fa6d2f705..b7ca14b0a 100644 --- a/inc/lang/ne/lang.php +++ b/inc/lang/ne/lang.php @@ -128,7 +128,6 @@ $lang['lastmod'] = 'अन्तिम पटक सच्या $lang['by'] = 'द्वारा '; $lang['deleted'] = 'हटाइएको'; $lang['created'] = 'निर्माण गरिएको'; -$lang['restored'] = 'पुरानो संस्करण पुनर्प्रयोग गरिएको'; $lang['external_edit'] = 'बाह्य सम्पादन'; $lang['summary'] = 'सम्पादनको बारेमा'; $lang['mail_newpage'] = 'थपिएको पृष्ठ'; diff --git a/inc/lang/nl/lang.php b/inc/lang/nl/lang.php index 0241eab2f..f6192a99b 100644 --- a/inc/lang/nl/lang.php +++ b/inc/lang/nl/lang.php @@ -192,7 +192,7 @@ $lang['lastmod'] = 'Laatst gewijzigd'; $lang['by'] = 'door'; $lang['deleted'] = 'verwijderd'; $lang['created'] = 'aangemaakt'; -$lang['restored'] = 'oude revisie hersteld'; +$lang['restored'] = 'oude revisie hersteld (%s)'; $lang['external_edit'] = 'Externe bewerking'; $lang['summary'] = 'Samenvatting wijziging'; $lang['noflash'] = 'De <a href="http://www.adobe.com/products/flashplayer/">Adobe Flash Plugin</a> is vereist om de pagina te kunnen weergeven.'; diff --git a/inc/lang/no/lang.php b/inc/lang/no/lang.php index 9aa11ac87..8235bfb91 100644 --- a/inc/lang/no/lang.php +++ b/inc/lang/no/lang.php @@ -190,7 +190,7 @@ $lang['lastmod'] = 'Sist endret'; $lang['by'] = 'av'; $lang['deleted'] = 'fjernet'; $lang['created'] = 'opprettet'; -$lang['restored'] = 'gjenopprettet til en tidligere versjon'; +$lang['restored'] = 'gjenopprettet til en tidligere versjon (%s)'; $lang['external_edit'] = 'ekstern redigering'; $lang['summary'] = 'Redigeringskommentar'; $lang['noflash'] = 'For at dette innholdet skal vises må du ha <a href="http://www.adobe.com/products/flashplayer/">Adobe Flash Plugin</a>.'; @@ -316,8 +316,7 @@ $lang['media_upload'] = 'Last opp til navnerommet <strong>%s</strong>.' $lang['media_search'] = 'Søk i navnerommet <strong>%s</strong>.'; $lang['media_view'] = '%s'; $lang['media_viewold'] = '%s på %s'; -$lang['media_edit'] = 'Rediger'; -$lang['media_history'] = 'Dette er de tidligere versjonene av filen.'; +$lang['media_edit'] = 'Rediger %s'; $lang['media_meta_edited'] = 'metadata er endra'; $lang['media_perm_read'] = 'Beklager, du har ikke tilgang til å lese filer.'; $lang['media_perm_upload'] = 'Beklager, du har ikke tilgang til å laste opp filer.'; diff --git a/inc/lang/pl/lang.php b/inc/lang/pl/lang.php index cf9fc6a16..51149e88f 100644 --- a/inc/lang/pl/lang.php +++ b/inc/lang/pl/lang.php @@ -189,7 +189,7 @@ $lang['lastmod'] = 'ostatnio zmienione'; $lang['by'] = 'przez'; $lang['deleted'] = 'usunięto'; $lang['created'] = 'utworzono'; -$lang['restored'] = 'przywrócono poprzednią wersję'; +$lang['restored'] = 'przywrócono poprzednią wersję (%s)'; $lang['external_edit'] = 'edycja zewnętrzna'; $lang['summary'] = 'Opis zmian'; $lang['noflash'] = 'Plugin <a href="http://www.adobe.com/products/flashplayer/">Adobe Flash Plugin</a> jest niezbędny do obejrzenia tej zawartości.'; @@ -265,8 +265,6 @@ $lang['subscr_m_unsubscribe'] = 'Zrezygnuj z subskrypcji'; $lang['subscr_m_subscribe'] = 'Subskrybuj'; $lang['subscr_m_receive'] = 'Otrzymuj'; $lang['subscr_style_every'] = 'email przy każdej zmianie'; -$lang['subscr_style_digest'] = 'email ze streszczeniem zmian dla każdej ze stron'; -$lang['subscr_style_list'] = 'lista zmienionych stron od czasu ostatniego emaila'; $lang['authmodfailed'] = 'Błąd uwierzytelnienia. Powiadom administratora tego wiki.'; $lang['authtempfail'] = 'Uwierzytelnienie użytkownika jest w tej chwili niemożliwe. Jeśli ta sytuacja się powtórzy, powiadom administratora tego wiki.'; $lang['authpwdexpire'] = 'Twoje hasło wygaśnie za %d dni. Należy je zmienić w krótkim czasie.'; diff --git a/inc/lang/pt/lang.php b/inc/lang/pt/lang.php index 1555889f6..ac9c59c3e 100644 --- a/inc/lang/pt/lang.php +++ b/inc/lang/pt/lang.php @@ -179,7 +179,7 @@ $lang['lastmod'] = 'Esta página foi modificada pela última vez e $lang['by'] = 'por'; $lang['deleted'] = 'Documento automaticamente removido.'; $lang['created'] = 'Criação deste novo documento.'; -$lang['restored'] = 'Versão anterior restaurada.'; +$lang['restored'] = 'Versão anterior restaurada (%s)'; $lang['external_edit'] = 'Edição externa'; $lang['summary'] = 'Sumário da Edição'; $lang['noflash'] = 'O <a href="http://www.adobe.com/products/flashplayer/">Plugin Adobe Flash</a> é necessário para exibir este conteúdo.'; diff --git a/inc/lang/ro/lang.php b/inc/lang/ro/lang.php index d6bfcad3a..8b2483daf 100644 --- a/inc/lang/ro/lang.php +++ b/inc/lang/ro/lang.php @@ -184,7 +184,7 @@ $lang['lastmod'] = 'Ultima modificare'; $lang['by'] = 'de către'; $lang['deleted'] = 'şters'; $lang['created'] = 'creat'; -$lang['restored'] = 'versiune veche restaurată'; +$lang['restored'] = 'versiune veche restaurată (%s)'; $lang['external_edit'] = 'editare externă'; $lang['summary'] = 'Editează sumarul'; $lang['noflash'] = 'Plugin-ul <a href="http://www.adobe.com/products/flashplayer/">Adobe Flash Plugin</a> este necesar pentru afişarea corectă a conţinutului.'; diff --git a/inc/lang/ru/lang.php b/inc/lang/ru/lang.php index c391bc6a5..52e0ef3d6 100644 --- a/inc/lang/ru/lang.php +++ b/inc/lang/ru/lang.php @@ -193,7 +193,7 @@ $lang['lastmod'] = 'Последние изменения'; $lang['by'] = ' —'; $lang['deleted'] = 'удалено'; $lang['created'] = 'создано'; -$lang['restored'] = 'старая ревизия восстановлена'; +$lang['restored'] = 'старая ревизия восстановлена (%s)'; $lang['external_edit'] = 'внешнее изменение'; $lang['summary'] = 'Сводка изменений'; $lang['noflash'] = 'Для просмотра этого содержимого требуется <a href="http://www.adobe.com/products/flashplayer/">Adobe Flash Plugin</a>.'; @@ -270,8 +270,6 @@ $lang['subscr_m_unsubscribe'] = 'Отменить подписку'; $lang['subscr_m_subscribe'] = 'Подписаться'; $lang['subscr_m_receive'] = 'Получить'; $lang['subscr_style_every'] = 'уведомлять о каждом изменении'; -$lang['subscr_style_digest'] = 'сводка изменений по каждой странице'; -$lang['subscr_style_list'] = 'перечислять изменившиеся страницы с прошлого уведомления'; $lang['authmodfailed'] = 'Неправильная конфигурация аутентификации пользователя. Пожалуйста, сообщите об этом своему администратору вики.'; $lang['authtempfail'] = 'Аутентификация пользователей временно недоступна. Если проблема продолжается какое-то время, пожалуйста, сообщите об этом своему администратору вики.'; $lang['authpwdexpire'] = 'Действие вашего пароля истекает через %d дней. Вы должны изменить его как можно скорее'; diff --git a/inc/lang/sl/lang.php b/inc/lang/sl/lang.php index 81220b8a2..5c4316b01 100644 --- a/inc/lang/sl/lang.php +++ b/inc/lang/sl/lang.php @@ -177,7 +177,7 @@ $lang['lastmod'] = 'Zadnja sprememba'; $lang['by'] = 'uporabnika'; $lang['deleted'] = 'odstranjena'; $lang['created'] = 'ustvarjena'; -$lang['restored'] = 'povrnjena stara različica'; +$lang['restored'] = 'povrnjena stara različica (%s)'; $lang['external_edit'] = 'urejanje v zunanjem urejevalniku'; $lang['summary'] = 'Povzetek urejanja'; $lang['noflash'] = 'Za prikaz vsebine je treba namestiti <a href="http://www.adobe.com/products/flashplayer/">Adobe Flash Plugin</a>'; diff --git a/inc/lang/sq/lang.php b/inc/lang/sq/lang.php index e190d8404..212f10607 100644 --- a/inc/lang/sq/lang.php +++ b/inc/lang/sq/lang.php @@ -140,7 +140,7 @@ $lang['lastmod'] = 'Redaktuar për herë të fundit'; $lang['by'] = 'nga'; $lang['deleted'] = 'u fshi'; $lang['created'] = 'u krijua'; -$lang['restored'] = 'Kthehu tek një version i vjetër'; +$lang['restored'] = 'Kthehu tek një version i vjetër (%s)'; $lang['external_edit'] = 'redaktim i jashtëm'; $lang['summary'] = 'Përmbledhja redaktimit'; $lang['noflash'] = 'Nevojitet <a href="http://www.adobe.com/products/flashplayer/">Adobe Flash Plugin</a> për të paraqitur këtë përmbajtje.'; @@ -204,8 +204,6 @@ $lang['subscr_m_unsubscribe'] = 'Fshi Abonimin'; $lang['subscr_m_subscribe'] = 'Abonohu'; $lang['subscr_m_receive'] = 'Mer'; $lang['subscr_style_every'] = 'email mbi çdo ndryshim'; -$lang['subscr_style_digest'] = 'pasqyro email-e ndryshimi pér çdo faqe'; -$lang['subscr_style_list'] = 'listë e faqeve të ndryshuara që nga emaili i fundit'; $lang['authmodfailed'] = 'Konfigurim i gabuar i autentikimit të përdoruesit. Ju lutem informoni Administratorin tuaj të Wiki-it.'; $lang['authtempfail'] = 'Autentikimi i përdoruesve është përkohësisht i padisponueshëm. Nëse kjo gjendje vazhdon, ju lutemi të informoni Administratorin tuaj të Wiki-it.'; $lang['i_chooselang'] = 'Zgjidhni gjuhën tuaj'; diff --git a/inc/lang/sr/lang.php b/inc/lang/sr/lang.php index d7f594511..7fbdf1985 100644 --- a/inc/lang/sr/lang.php +++ b/inc/lang/sr/lang.php @@ -162,7 +162,7 @@ $lang['lastmod'] = 'Последњи пут мењано'; $lang['by'] = 'од'; $lang['deleted'] = 'избрисано'; $lang['created'] = 'направљено'; -$lang['restored'] = 'стара верзија повраћена'; +$lang['restored'] = 'стара верзија повраћена (%s)'; $lang['external_edit'] = 'спољна измена'; $lang['summary'] = 'Сажетак измене'; $lang['noflash'] = 'За приказивање ове врсте материјала потребан вам је <a href="http://www.adobe.com/products/flashplayer/">Adobe Flash Plugin</a>.'; diff --git a/inc/lang/th/lang.php b/inc/lang/th/lang.php index c9d526436..627484eab 100644 --- a/inc/lang/th/lang.php +++ b/inc/lang/th/lang.php @@ -144,7 +144,7 @@ $lang['lastmod'] = 'แก้ไขครั้งล่าสุ $lang['by'] = 'โดย'; $lang['deleted'] = 'ถูกถอดออก'; $lang['created'] = 'ถูกสร้าง'; -$lang['restored'] = 'ย้อนไปรุ่นก่อนหน้า'; +$lang['restored'] = 'ย้อนไปรุ่นก่อนหน้า (%s)'; $lang['external_edit'] = 'แก้ไขภายนอก'; $lang['summary'] = 'สรุป(หมายเหตุ)การแก้ไขนี้'; $lang['noflash'] = 'ต้องการตัวเล่นแฟลช <a href="http://www.adobe.com/products/flashplayer/">Adobe Flash Plugin</a> เพื่อแสดงผลเนื้อหานี้'; diff --git a/inc/lang/tr/lang.php b/inc/lang/tr/lang.php index 5430905b1..c6edf74c6 100644 --- a/inc/lang/tr/lang.php +++ b/inc/lang/tr/lang.php @@ -176,7 +176,7 @@ $lang['lastmod'] = 'Son değiştirilme'; $lang['by'] = 'Değiştiren:'; $lang['deleted'] = 'silindi'; $lang['created'] = 'oluşturuldu'; -$lang['restored'] = 'eski sürüme dönüldü'; +$lang['restored'] = 'eski sürüme dönüldü (%s)'; $lang['external_edit'] = 'Dışarıdan düzenle'; $lang['summary'] = 'Özeti düzenle'; $lang['noflash'] = 'Bu içeriği göstermek için <a href="http://www.adobe.com/products/flashplayer/">Adobe Flash Eklentisi</a> gerekmektedir.'; diff --git a/inc/lang/uk/lang.php b/inc/lang/uk/lang.php index 5274a4210..6aa468c50 100644 --- a/inc/lang/uk/lang.php +++ b/inc/lang/uk/lang.php @@ -169,7 +169,7 @@ $lang['lastmod'] = 'В останнє змінено'; $lang['by'] = ' '; $lang['deleted'] = 'знищено'; $lang['created'] = 'створено'; -$lang['restored'] = 'відновлено стару ревізію'; +$lang['restored'] = 'відновлено стару ревізію (%s)'; $lang['external_edit'] = 'зовнішнє редагування'; $lang['summary'] = 'Підсумок змін'; $lang['noflash'] = 'Для перегляду цієї сторінки необхідно встановити <a href="http://www.adobe.com/products/flashplayer/">Adobe Flash Plugin</a>.'; diff --git a/inc/lang/vi/lang.php b/inc/lang/vi/lang.php index 99c4d47e4..c439ca534 100644 --- a/inc/lang/vi/lang.php +++ b/inc/lang/vi/lang.php @@ -176,7 +176,7 @@ $lang['lastmod'] = 'Thời điểm thay đổi'; $lang['by'] = 'do'; $lang['deleted'] = 'bị xoá'; $lang['created'] = 'được tạo ra'; -$lang['restored'] = 'phiên bản cũ đã được khôi phục'; +$lang['restored'] = 'phiên bản cũ đã được khôi phục (%s)'; $lang['external_edit'] = 'external edit'; $lang['summary'] = 'Tóm tắt biên soạn'; $lang['noflash'] = '<a href="http://www.adobe.com/products/flashplayer/">Adobe Flash Plugin</a> cần được cài để có thể xem nội dung này.'; diff --git a/inc/lang/zh-tw/lang.php b/inc/lang/zh-tw/lang.php index ddb35617e..536266971 100644 --- a/inc/lang/zh-tw/lang.php +++ b/inc/lang/zh-tw/lang.php @@ -186,7 +186,7 @@ $lang['lastmod'] = '上一次變更'; $lang['by'] = '由'; $lang['deleted'] = '移除'; $lang['created'] = '建立'; -$lang['restored'] = '恢復為舊版'; +$lang['restored'] = '恢復為舊版 (%s)'; $lang['external_edit'] = '外部編輯'; $lang['summary'] = '編輯摘要'; $lang['noflash'] = '顯示此內容需要 <a href="http://www.adobe.com/products/flashplayer/">Adobe Flash 附加元件</a>。'; diff --git a/inc/media.php b/inc/media.php index 572b1177c..db1ca0d57 100644 --- a/inc/media.php +++ b/inc/media.php @@ -237,8 +237,7 @@ function media_upload_xhr($ns,$auth){ $realSize = stream_copy_to_stream($input, $target); fclose($target); fclose($input); - if ($realSize != (int)$_SERVER["CONTENT_LENGTH"]){ - unlink($target); + if (isset($_SERVER["CONTENT_LENGTH"]) && ($realSize != (int)$_SERVER["CONTENT_LENGTH"])){ unlink($path); return false; } @@ -1687,18 +1686,36 @@ function media_nstree($ns){ $ns = cleanID($ns); if(empty($ns)){ global $ID; - $ns = dirname(str_replace(':','/',$ID)); - if($ns == '.') $ns =''; + $ns = (string)getNS($ID); } - $ns = utf8_encodeFN(str_replace(':','/',$ns)); + + $ns_dir = utf8_encodeFN(str_replace(':','/',$ns)); $data = array(); - search($data,$conf['mediadir'],'search_index',array('ns' => $ns, 'nofiles' => true)); + search($data,$conf['mediadir'],'search_index',array('ns' => $ns_dir, 'nofiles' => true)); // wrap a list with the root level around the other namespaces array_unshift($data, array('level' => 0, 'id' => '', 'open' =>'true', 'label' => '['.$lang['mediaroot'].']')); + // insert the current ns into the hierarchy if it isn't already part of it + $ns_parts = explode(':', $ns); + $tmp_ns = ''; + $pos = 0; + foreach ($ns_parts as $level => $part) { + if ($tmp_ns) $tmp_ns .= ':'.$part; + else $tmp_ns = $part; + + // find the namespace parts or insert them + while ($data[$pos]['id'] != $tmp_ns) { + if ($pos >= count($data) || ($data[$pos]['level'] <= $level+1 && strnatcmp(utf8_encodeFN($data[$pos]['id']), utf8_encodeFN($tmp_ns)) > 0)) { + array_splice($data, $pos, 0, array(array('level' => $level+1, 'id' => $tmp_ns, 'open' => 'true'))); + break; + } + ++$pos; + } + } + echo html_buildlist($data,'idx','media_nstree_item','media_nstree_li'); } @@ -1878,6 +1895,8 @@ function media_get_from_URL($url,$ext,$cache){ function media_image_download($url,$file){ global $conf; $http = new DokuHTTPClient(); + $http->keep_alive = false; // we do single ops here, no need for keep-alive + $http->max_bodysize = $conf['fetchsize']; $http->timeout = 25; //max. 25 sec $http->header_regexp = '!\r\nContent-Type: image/(jpe?g|gif|png)!i'; diff --git a/inc/parser/code.php b/inc/parser/code.php index 21fb0dc3c..43d8d703f 100644 --- a/inc/parser/code.php +++ b/inc/parser/code.php @@ -43,7 +43,7 @@ class Doku_Renderer_code extends Doku_Renderer { * This should never be reached, if it is send a 404 */ function document_end() { - header("HTTP/1.0 404 Not Found"); + http_status(404); echo '404 - Not found'; exit; } diff --git a/install.php b/install.php index f54c25207..2db25bd2f 100644 --- a/install.php +++ b/install.php @@ -54,7 +54,8 @@ $dokuwiki_hash = array( '2011-05-25' => '4241865472edb6fa14a1227721008072', '2011-11-10' => 'b46ff19a7587966ac4df61cbab1b8b31', '2012-01-25' => '72c083c73608fc43c586901fd5dabb74', - '2012-09-10' => 'eb0b3fc90056fbc12bac6f49f7764df3' + '2012-09-10' => 'eb0b3fc90056fbc12bac6f49f7764df3', + 'devel' => '7b62b75245f57f122d3e0f8ed7989623', ); @@ -391,6 +392,24 @@ EOT; @touch(DOKU_INC.'data/cache/autosubmit.txt'); } + // disable auth plugins til needed + $output = <<<EOT +<?php +/* + * Local plugin enable/disable settings + * + * Auto-generated by install script + * Date: $now + */ + +\$plugins['authad'] = 0; +\$plugins['authldap'] = 0; +\$plugins['authmysql'] = 0; +\$plugins['authpgsql'] = 0; + +EOT; + $ok = $ok && fileWrite(DOKU_LOCAL.'plugins.local.php', $output); + return $ok; } diff --git a/lib/exe/detail.php b/lib/exe/detail.php index e597db3a2..db635c016 100644 --- a/lib/exe/detail.php +++ b/lib/exe/detail.php @@ -31,7 +31,7 @@ if($AUTH >= AUTH_READ){ $SRC = mediaFN($IMG); if(!@file_exists($SRC)){ //doesn't exist! - header("HTTP/1.0 404 File not Found"); + http_status(404); $ERROR = 'File not found'; } }else{ diff --git a/lib/exe/fetch.php b/lib/exe/fetch.php index 52e7ebe1e..9bac4d272 100644 --- a/lib/exe/fetch.php +++ b/lib/exe/fetch.php @@ -6,84 +6,87 @@ * @author Andreas Gohr <andi@splitbrain.org> */ - if(!defined('DOKU_INC')) define('DOKU_INC',dirname(__FILE__).'/../../'); - define('DOKU_DISABLE_GZIP_OUTPUT', 1); - require_once(DOKU_INC.'inc/init.php'); - - //close session - session_write_close(); - - $mimetypes = getMimeTypes(); - - //get input - $MEDIA = stripctl(getID('media',false)); // no cleaning except control chars - maybe external - $CACHE = calc_cache($INPUT->str('cache')); - $WIDTH = $INPUT->int('w'); - $HEIGHT = $INPUT->int('h'); - $REV = &$INPUT->ref('rev'); - //sanitize revision - $REV = preg_replace('/[^0-9]/','',$REV); - - list($EXT,$MIME,$DL) = mimetype($MEDIA,false); - if($EXT === false){ - $EXT = 'unknown'; - $MIME = 'application/octet-stream'; - $DL = true; - } - - // check for permissions, preconditions and cache external files - list($STATUS, $STATUSMESSAGE) = checkFileStatus($MEDIA, $FILE, $REV); - - // prepare data for plugin events - $data = array('media' => $MEDIA, - 'file' => $FILE, - 'orig' => $FILE, - 'mime' => $MIME, - 'download' => $DL, - 'cache' => $CACHE, - 'ext' => $EXT, - 'width' => $WIDTH, - 'height' => $HEIGHT, - 'status' => $STATUS, - 'statusmessage' => $STATUSMESSAGE, - ); - - // handle the file status - $evt = new Doku_Event('FETCH_MEDIA_STATUS', $data); - if ( $evt->advise_before() ) { - // redirects - if($data['status'] > 300 && $data['status'] <= 304){ - send_redirect($data['statusmessage']); +if(!defined('DOKU_INC')) define('DOKU_INC', dirname(__FILE__).'/../../'); +define('DOKU_DISABLE_GZIP_OUTPUT', 1); +require_once(DOKU_INC.'inc/init.php'); +session_write_close(); //close session + +// BEGIN main (if not testing) +if(!defined('SIMPLE_TEST')) { + $mimetypes = getMimeTypes(); + + //get input + $MEDIA = stripctl(getID('media', false)); // no cleaning except control chars - maybe external + $CACHE = calc_cache($INPUT->str('cache')); + $WIDTH = $INPUT->int('w'); + $HEIGHT = $INPUT->int('h'); + $REV = & $INPUT->ref('rev'); + //sanitize revision + $REV = preg_replace('/[^0-9]/', '', $REV); + + list($EXT, $MIME, $DL) = mimetype($MEDIA, false); + if($EXT === false) { + $EXT = 'unknown'; + $MIME = 'application/octet-stream'; + $DL = true; } - // send any non 200 status - if($data['status'] != 200){ - header('HTTP/1.0 ' . $data['status'] . ' ' . $data['statusmessage']); + + // check for permissions, preconditions and cache external files + list($STATUS, $STATUSMESSAGE) = checkFileStatus($MEDIA, $FILE, $REV); + + // prepare data for plugin events + $data = array( + 'media' => $MEDIA, + 'file' => $FILE, + 'orig' => $FILE, + 'mime' => $MIME, + 'download' => $DL, + 'cache' => $CACHE, + 'ext' => $EXT, + 'width' => $WIDTH, + 'height' => $HEIGHT, + 'status' => $STATUS, + 'statusmessage' => $STATUSMESSAGE, + ); + + // handle the file status + $evt = new Doku_Event('FETCH_MEDIA_STATUS', $data); + if($evt->advise_before()) { + // redirects + if($data['status'] > 300 && $data['status'] <= 304) { + send_redirect($data['statusmessage']); + } + // send any non 200 status + if($data['status'] != 200) { + http_status($data['status'], $data['statusmessage']); + } + // die on errors + if($data['status'] > 203) { + print $data['statusmessage']; + exit; + } } - // die on errors - if($data['status'] > 203){ - print $data['statusmessage']; - exit; + $evt->advise_after(); + unset($evt); + + //handle image resizing/cropping + if((substr($MIME, 0, 5) == 'image') && $WIDTH) { + if($HEIGHT) { + $data['file'] = $FILE = media_crop_image($data['file'], $EXT, $WIDTH, $HEIGHT); + } else { + $data['file'] = $FILE = media_resize_image($data['file'], $EXT, $WIDTH, $HEIGHT); + } } - } - $evt->advise_after(); - unset($evt); - - //handle image resizing/cropping - if((substr($MIME,0,5) == 'image') && $WIDTH){ - if($HEIGHT){ - $data['file'] = $FILE = media_crop_image($data['file'],$EXT,$WIDTH,$HEIGHT); - }else{ - $data['file'] = $FILE = media_resize_image($data['file'],$EXT,$WIDTH,$HEIGHT); + + // finally send the file to the client + $evt = new Doku_Event('MEDIA_SENDFILE', $data); + if($evt->advise_before()) { + sendFile($data['file'], $data['mime'], $data['download'], $data['cache']); } - } + // Do something after the download finished. + $evt->advise_after(); - // finally send the file to the client - $evt = new Doku_Event('MEDIA_SENDFILE', $data); - if ($evt->advise_before()) { - sendFile($data['file'],$data['mime'],$data['download'],$data['cache']); - } - // Do something after the download finished. - $evt->advise_after(); +}// END DO main /* ------------------------------------------------------------------------ */ @@ -93,51 +96,50 @@ * @author Andreas Gohr <andi@splitbrain.org> * @author Ben Coburn <btcoburn@silicodon.net> */ -function sendFile($file,$mime,$dl,$cache){ - global $conf; - $fmtime = @filemtime($file); - // send headers - header("Content-Type: $mime"); - // smart http caching headers - if ($cache==-1) { - // cache - // cachetime or one hour - header('Expires: '.gmdate("D, d M Y H:i:s", time()+max($conf['cachetime'], 3600)).' GMT'); - header('Cache-Control: public, proxy-revalidate, no-transform, max-age='.max($conf['cachetime'], 3600)); - header('Pragma: public'); - } else if ($cache>0) { - // recache - // remaining cachetime + 10 seconds so the newly recached media is used - header('Expires: '.gmdate("D, d M Y H:i:s", $fmtime+$conf['cachetime']+10).' GMT'); - header('Cache-Control: public, proxy-revalidate, no-transform, max-age='.max($fmtime-time()+$conf['cachetime']+10, 0)); - header('Pragma: public'); - } else if ($cache==0) { - // nocache - header('Cache-Control: must-revalidate, no-transform, post-check=0, pre-check=0'); - header('Pragma: public'); - } - //send important headers first, script stops here if '304 Not Modified' response - http_conditionalRequest($fmtime); - - - //download or display? - if($dl){ - header('Content-Disposition: attachment; filename="'.utf8_basename($file).'";'); - }else{ - header('Content-Disposition: inline; filename="'.utf8_basename($file).'";'); - } - - //use x-sendfile header to pass the delivery to compatible webservers - if (http_sendfile($file)) exit; - - // send file contents - $fp = @fopen($file,"rb"); - if($fp){ - http_rangeRequest($fp,filesize($file),$mime); - }else{ - header("HTTP/1.0 500 Internal Server Error"); - print "Could not read $file - bad permissions?"; - } +function sendFile($file, $mime, $dl, $cache) { + global $conf; + $fmtime = @filemtime($file); + // send headers + header("Content-Type: $mime"); + // smart http caching headers + if($cache == -1) { + // cache + // cachetime or one hour + header('Expires: '.gmdate("D, d M Y H:i:s", time() + max($conf['cachetime'], 3600)).' GMT'); + header('Cache-Control: public, proxy-revalidate, no-transform, max-age='.max($conf['cachetime'], 3600)); + header('Pragma: public'); + } else if($cache > 0) { + // recache + // remaining cachetime + 10 seconds so the newly recached media is used + header('Expires: '.gmdate("D, d M Y H:i:s", $fmtime + $conf['cachetime'] + 10).' GMT'); + header('Cache-Control: public, proxy-revalidate, no-transform, max-age='.max($fmtime - time() + $conf['cachetime'] + 10, 0)); + header('Pragma: public'); + } else if($cache == 0) { + // nocache + header('Cache-Control: must-revalidate, no-transform, post-check=0, pre-check=0'); + header('Pragma: public'); + } + //send important headers first, script stops here if '304 Not Modified' response + http_conditionalRequest($fmtime); + + //download or display? + if($dl) { + header('Content-Disposition: attachment; filename="'.utf8_basename($file).'";'); + } else { + header('Content-Disposition: inline; filename="'.utf8_basename($file).'";'); + } + + //use x-sendfile header to pass the delivery to compatible webservers + if(http_sendfile($file)) exit; + + // send file contents + $fp = @fopen($file, "rb"); + if($fp) { + http_rangeRequest($fp, filesize($file), $mime); + } else { + http_status(500); + print "Could not read $file - bad permissions?"; + } } /** @@ -148,43 +150,43 @@ function sendFile($file,$mime,$dl,$cache){ * * @author Gerry Weissbach <gerry.w@gammaproduction.de> * @param $media reference to the media id - * @param $file reference to the file variable + * @param $file reference to the file variable * @returns array(STATUS, STATUSMESSAGE) */ -function checkFileStatus(&$media, &$file, $rev='') { - global $MIME, $EXT, $CACHE, $INPUT; - - //media to local file - if(preg_match('#^(https?)://#i',$media)){ - //check hash - if(substr(md5(auth_cookiesalt().$media),0,6) !== $INPUT->str('hash')){ - return array( 412, 'Precondition Failed'); - } - //handle external images - if(strncmp($MIME,'image/',6) == 0) $file = media_get_from_URL($media,$EXT,$CACHE); - if(!$file){ - //download failed - redirect to original URL - return array( 302, $media ); - } - }else{ - $media = cleanID($media); - if(empty($media)){ - return array( 400, 'Bad request' ); +function checkFileStatus(&$media, &$file, $rev = '') { + global $MIME, $EXT, $CACHE, $INPUT; + + //media to local file + if(preg_match('#^(https?)://#i', $media)) { + //check hash + if(substr(md5(auth_cookiesalt().$media), 0, 6) !== $INPUT->str('hash')) { + return array(412, 'Precondition Failed'); + } + //handle external images + if(strncmp($MIME, 'image/', 6) == 0) $file = media_get_from_URL($media, $EXT, $CACHE); + if(!$file) { + //download failed - redirect to original URL + return array(302, $media); + } + } else { + $media = cleanID($media); + if(empty($media)) { + return array(400, 'Bad request'); + } + + //check permissions (namespace only) + if(auth_quickaclcheck(getNS($media).':X') < AUTH_READ) { + return array(403, 'Forbidden'); + } + $file = mediaFN($media, $rev); } - //check permissions (namespace only) - if(auth_quickaclcheck(getNS($media).':X') < AUTH_READ){ - return array( 403, 'Forbidden' ); + //check file existance + if(!@file_exists($file)) { + return array(404, 'Not Found'); } - $file = mediaFN($media, $rev); - } - - //check file existance - if(!@file_exists($file)){ - return array( 404, 'Not Found' ); - } - return array(200, null); + return array(200, null); } /** @@ -194,12 +196,12 @@ function checkFileStatus(&$media, &$file, $rev='') { * * @author Andreas Gohr <andi@splitbrain.org> */ -function calc_cache($cache){ - global $conf; +function calc_cache($cache) { + global $conf; - if(strtolower($cache) == 'nocache') return 0; //never cache - if(strtolower($cache) == 'recache') return $conf['cachetime']; //use standard cache - return -1; //cache endless + if(strtolower($cache) == 'nocache') return 0; //never cache + if(strtolower($cache) == 'recache') return $conf['cachetime']; //use standard cache + return -1; //cache endless } //Setup VIM: ex: et ts=2 : diff --git a/lib/exe/js.php b/lib/exe/js.php index 41d3e735c..4ff48133e 100644 --- a/lib/exe/js.php +++ b/lib/exe/js.php @@ -62,7 +62,7 @@ function js_out(){ DOKU_INC.'lib/scripts/locktimer.js', DOKU_INC.'lib/scripts/linkwiz.js', DOKU_INC.'lib/scripts/media.js', - DOKU_INC.'lib/scripts/compatibility.js', +# deprecated DOKU_INC.'lib/scripts/compatibility.js', # disabled for FS#1958 DOKU_INC.'lib/scripts/hotkeys.js', DOKU_INC.'lib/scripts/behaviour.js', DOKU_INC.'lib/scripts/page.js', diff --git a/lib/exe/mediamanager.php b/lib/exe/mediamanager.php index 04dd178cc..53d438321 100644 --- a/lib/exe/mediamanager.php +++ b/lib/exe/mediamanager.php @@ -36,19 +36,16 @@ // do not display the manager if user does not have read access if($AUTH < AUTH_READ && !$fullscreen) { - header('HTTP/1.0 403 Forbidden'); + http_status(403); die($lang['accessdenied']); } - // create the given namespace (just for beautification) - if($AUTH >= AUTH_UPLOAD) { io_createNamespace("$NS:xxx", 'media'); } - // handle flash upload if(isset($_FILES['Filedata'])){ $_FILES['upload'] =& $_FILES['Filedata']; $JUMPTO = media_upload($NS,$AUTH); if($JUMPTO == false){ - header("HTTP/1.0 400 Bad Request"); + http_status(400); echo 'Upload failed'; } echo 'ok'; diff --git a/lib/exe/xmlrpc.php b/lib/exe/xmlrpc.php index 5e6c197d0..c09daa17c 100644 --- a/lib/exe/xmlrpc.php +++ b/lib/exe/xmlrpc.php @@ -29,10 +29,10 @@ class dokuwiki_xmlrpc_server extends IXR_Server { return $result; } catch (RemoteAccessDeniedException $e) { if (!isset($_SERVER['REMOTE_USER'])) { - header('HTTP/1.1 401 Unauthorized'); + http_status(401); return new IXR_Error(-32603, "server error. not authorized to call method $methodname"); } else { - header('HTTP/1.1 403 Forbidden'); + http_status(403); return new IXR_Error(-32604, "server error. forbidden to call the method $methodname"); } } catch (RemoteException $e) { diff --git a/lib/plugins/acl/script.js b/lib/plugins/acl/script.js index 0ba91cdc9..c3763dc8d 100644 --- a/lib/plugins/acl/script.js +++ b/lib/plugins/acl/script.js @@ -117,11 +117,3 @@ var dw_acl = { }; jQuery(dw_acl.init); - -var acl = { - init: DEPRECATED_WRAP(dw_acl.init, dw_acl), - userselhandler: DEPRECATED_WRAP(dw_acl.userselhandler, dw_acl), - loadinfo: DEPRECATED_WRAP(dw_acl.loadinfo, dw_acl), - parseatt: DEPRECATED_WRAP(dw_acl.parseatt, dw_acl), - treehandler: DEPRECATED_WRAP(dw_acl.treehandler, dw_acl) -}; diff --git a/lib/plugins/auth.php b/lib/plugins/auth.php index 42dbf1859..c14a04dfb 100644 --- a/lib/plugins/auth.php +++ b/lib/plugins/auth.php @@ -434,6 +434,7 @@ class DokuWiki_Auth_Plugin extends DokuWiki_Plugin { if(isset($conf['auth'][$plugin])) $oldconf = (array) $conf['auth'][$plugin]; $conf['plugin'][$plugin] = array_merge($default, $oldconf, $conf['plugin'][$plugin]); + $this->conf =& $conf['plugin'][$plugin]; $this->configloaded = true; } } diff --git a/lib/plugins/config/settings/config.class.php b/lib/plugins/config/settings/config.class.php index a3cfae9f8..4a84d6dc8 100644 --- a/lib/plugins/config/settings/config.class.php +++ b/lib/plugins/config/settings/config.class.php @@ -84,7 +84,7 @@ if (!class_exists('configuration')) { array_shift($param); } else { $class = 'setting_undefined'; - $param = NULL; + $param = null; } if (!in_array($class, $no_default_check) && !isset($default[$key])) { @@ -358,13 +358,13 @@ if (!class_exists('setting')) { class setting { var $_key = ''; - var $_default = NULL; - var $_local = NULL; - var $_protected = NULL; + var $_default = null; + var $_local = null; + var $_protected = null; var $_pattern = ''; var $_error = false; // only used by those classes which error check - var $_input = NULL; // only used by those classes which error check + var $_input = null; // only used by those classes which error check var $_cautionList = array( 'basedir' => 'danger', 'baseurl' => 'danger', 'savedir' => 'danger', 'cookiedir' => 'danger', 'useacl' => 'danger', 'authtype' => 'danger', 'superuser' => 'danger', 'userewrite' => 'danger', @@ -372,7 +372,7 @@ if (!class_exists('setting')) { 'allowdebug' => 'security', 'htmlok' => 'security', 'phpok' => 'security', 'iexssprotect' => 'security', 'xmlrpc' => 'security', 'fullpath' => 'security' ); - function setting($key, $params=NULL) { + function setting($key, $params=null) { $this->_key = $key; if (is_array($params)) { @@ -661,6 +661,7 @@ if (!class_exists('setting_email')) { class setting_email extends setting_string { var $_pattern = SETTING_EMAIL_PATTERN; // no longer required, retained for backward compatibility - FIXME, may not be necessary var $_multiple = false; + var $_placeholders = false; /** * update setting with user provided value $input @@ -674,15 +675,36 @@ if (!class_exists('setting_email')) { $value = is_null($this->_local) ? $this->_default : $this->_local; if ($value == $input) return false; + if($input === ''){ + $this->_local = $input; + return true; + } + $mail = $input; + + if($this->_placeholders){ + // replace variables with pseudo values + $mail = str_replace('@USER@','joe',$mail); + $mail = str_replace('@NAME@','Joe Schmoe',$mail); + $mail = str_replace('@MAIL@','joe@example.com',$mail); + } + // multiple mail addresses? if ($this->_multiple) { - $mails = array_filter(array_map('trim', explode(',', $input))); + $mails = array_filter(array_map('trim', explode(',', $mail))); } else { - $mails = array($input); + $mails = array($mail); } + // check them all foreach ($mails as $mail) { - if (!mail_isvalid($mail)) { + // only check the address part + if(preg_match('#(.*?)<(.*?)>#', $mail, $matches)){ + $addr = $matches[2]; + }else{ + $addr = $mail; + } + + if (!mail_isvalid($addr)) { $this->_error = true; $this->_input = $input; return false; @@ -695,46 +717,15 @@ if (!class_exists('setting_email')) { } } +/** + * @deprecated 2013-02-16 + */ if (!class_exists('setting_richemail')) { class setting_richemail extends setting_email { - - /** - * update setting with user provided value $input - * if value fails error check, save it - * - * @return boolean true if changed, false otherwise (incl. on error) - */ - function update($input) { - if (is_null($input)) return false; - if ($this->is_protected()) return false; - - $value = is_null($this->_local) ? $this->_default : $this->_local; - if ($value == $input) return false; - - // replace variables with pseudo values - $test = $input; - $test = str_replace('@USER@','joe',$test); - $test = str_replace('@NAME@','Joe Schmoe',$test); - $test = str_replace('@MAIL@','joe@example.com',$test); - - // now only check the address part - if(preg_match('#(.*?)<(.*?)>#',$test,$matches)){ - $text = trim($matches[1]); - $addr = $matches[2]; - }else{ - $addr = $test; - } - - if ($test !== '' && !mail_isvalid($addr)) { - $this->_error = true; - $this->_input = $input; - return false; - } - - $this->_local = $input; - return true; - } - + function update($input) { + $this->_placeholders = true; + return parent::update($input); + } } } diff --git a/lib/plugins/config/settings/config.metadata.php b/lib/plugins/config/settings/config.metadata.php index 585015085..bdbc4311f 100644 --- a/lib/plugins/config/settings/config.metadata.php +++ b/lib/plugins/config/settings/config.metadata.php @@ -20,9 +20,7 @@ * 'numericopt' - like above, but accepts empty values * 'onoff' - checkbox input, setting output 0|1 * 'multichoice' - select input (single choice), setting output with quotes, required _choices parameter - * 'email' - text input, input must conform to email address format, setting output in quotes - * 'richemail' - text input, input must conform to email address format but accepts variables and - * emails with a real name prepended (when email address is given in <>) + * 'email' - text input, input must conform to email address format * 'password' - password input, minimal input validation, setting output text in quotes, maybe encoded * according to the _code parameter * 'dirchoice' - as multichoice, selection choices based on folders found at location specified in _dir @@ -129,7 +127,7 @@ $meta['_authentication'] = array('fieldset'); $meta['useacl'] = array('onoff'); $meta['autopasswd'] = array('onoff'); $meta['authtype'] = array('authtype'); -$meta['passcrypt'] = array('multichoice','_choices' => array('smd5','md5','apr1','sha1','ssha','lsmd5','crypt','mysql','my411','kmd5','pmd5','hmd5','mediawiki','bcrypt','sha512')); +$meta['passcrypt'] = array('multichoice','_choices' => array('smd5','md5','apr1','sha1','ssha','lsmd5','crypt','mysql','my411','kmd5','pmd5','hmd5','mediawiki','bcrypt','djangomd5','djangosha1','sha512')); $meta['defaultgroup']= array('string'); $meta['superuser'] = array('string'); $meta['manager'] = array('string'); @@ -177,8 +175,8 @@ $meta['_notifications'] = array('fieldset'); $meta['subscribers'] = array('onoff'); $meta['subscribe_time'] = array('numeric'); $meta['notify'] = array('email', '_multiple' => true); -$meta['registernotify'] = array('email'); -$meta['mailfrom'] = array('richemail'); +$meta['registernotify'] = array('email', '_multiple' => true); +$meta['mailfrom'] = array('email', '_placeholders' => true); $meta['mailprefix'] = array('string'); $meta['htmlmail'] = array('onoff'); diff --git a/lib/plugins/config/style.css b/lib/plugins/config/style.css index 397328937..054021ed8 100644 --- a/lib/plugins/config/style.css +++ b/lib/plugins/config/style.css @@ -154,15 +154,6 @@ } -/* IE6 correction */ -* html #config__manager .selection label { - padding-top: 2px; -} - -#config__manager .selection input.checkbox { - padding-left: 0.7em; -} - #config__manager .other { clear: both; padding-top: 0.5em; diff --git a/lib/plugins/info/plugin.info.txt b/lib/plugins/info/plugin.info.txt index 5c7d583c0..053743639 100644 --- a/lib/plugins/info/plugin.info.txt +++ b/lib/plugins/info/plugin.info.txt @@ -1,7 +1,7 @@ base info author Andreas Gohr email andi@splitbrain.org -date 2012-02-04 +date 2013-02-16 name Info Plugin desc Displays information about various DokuWiki internals url http://dokuwiki.org/plugin:info diff --git a/lib/plugins/info/syntax.php b/lib/plugins/info/syntax.php index d813aa23a..97b28076b 100644 --- a/lib/plugins/info/syntax.php +++ b/lib/plugins/info/syntax.php @@ -60,9 +60,6 @@ class syntax_plugin_info extends DokuWiki_Syntax_Plugin { if($format == 'xhtml'){ //handle various info stuff switch ($data[0]){ - case 'version': - $renderer->doc .= getVersion(); - break; case 'syntaxmodes': $renderer->doc .= $this->_syntaxmodes_xhtml(); break; diff --git a/lib/plugins/plugin/lang/ar/lang.php b/lib/plugins/plugin/lang/ar/lang.php index 8327e5ce3..a1a778131 100644 --- a/lib/plugins/plugin/lang/ar/lang.php +++ b/lib/plugins/plugin/lang/ar/lang.php @@ -50,4 +50,4 @@ $lang['enabled'] = 'الاضافة %s فُعلت. '; $lang['notenabled'] = 'تعذر تفعيل الاضافة %s، تحقق من اذونات الملف.'; $lang['disabled'] = 'عُطلت الإضافة %s.'; $lang['notdisabled'] = 'تعذر تعطيل الإضافة %s، تحقق من اذونات الملف.'; -$lang['packageinstalled'] = 'حزمة الإضافة (%d plugin(s): %Xs) ثبتت بنجاج.'; +$lang['packageinstalled'] = 'حزمة الإضافة (%d plugin(s): %s) ثبتت بنجاج.'; diff --git a/lib/plugins/plugin/lang/hi/lang.php b/lib/plugins/plugin/lang/hi/lang.php index ab29c6550..67b177256 100644 --- a/lib/plugins/plugin/lang/hi/lang.php +++ b/lib/plugins/plugin/lang/hi/lang.php @@ -6,7 +6,6 @@ * @author yndesai@gmail.com */ $lang['unknown'] = 'अज्ञात'; -$lang['deleted'] = 'मिटाया हुआ'; $lang['date'] = 'दिनांक:'; $lang['author'] = 'लेखक:'; $lang['error'] = 'अज्ञात त्रुटि हुइ'; diff --git a/lib/plugins/plugin/lang/pl/lang.php b/lib/plugins/plugin/lang/pl/lang.php index 1d3bbbc03..faaa69630 100644 --- a/lib/plugins/plugin/lang/pl/lang.php +++ b/lib/plugins/plugin/lang/pl/lang.php @@ -60,4 +60,4 @@ $lang['enabled'] = 'Wtyczka %s włączona.'; $lang['notenabled'] = 'Nie udało się uruchomić wtyczki %s, sprawdź uprawnienia dostępu do plików.'; $lang['disabled'] = 'Wtyczka %s wyłączona.'; $lang['notdisabled'] = 'Nie udało się wyłączyć wtyczki %s, sprawdź uprawnienia dostępu do plików.'; -$lang['packageinstalled'] = 'Pakiet wtyczek (%d wtyczki:% s) zainstalowany pomyślnie.'; +$lang['packageinstalled'] = 'Pakiet wtyczek (%d wtyczki: %s) zainstalowany pomyślnie.'; diff --git a/lib/plugins/plugin/lang/zh-tw/lang.php b/lib/plugins/plugin/lang/zh-tw/lang.php index 7b38a02c8..56149e79e 100644 --- a/lib/plugins/plugin/lang/zh-tw/lang.php +++ b/lib/plugins/plugin/lang/zh-tw/lang.php @@ -56,4 +56,4 @@ $lang['enabled'] = '附加元件 %s 已啟用。'; $lang['notenabled'] = '附加元件 %s 無法啟用,請檢查檔案權限。'; $lang['disabled'] = '附加元件 %s 已停用。'; $lang['notdisabled'] = '附加元件 %s 無法停用,請檢查檔案權限。'; -$lang['packageinstalled'] = '附加元件 (%d 附加元件%s: %s) 已安裝好。'; +$lang['packageinstalled'] = '附加元件 (%d 附加元件: %s) 已安裝好。'; diff --git a/lib/plugins/usermanager/lang/ca-valencia/lang.php b/lib/plugins/usermanager/lang/ca-valencia/lang.php index 5b0c628ed..c39c2f9b3 100644 --- a/lib/plugins/usermanager/lang/ca-valencia/lang.php +++ b/lib/plugins/usermanager/lang/ca-valencia/lang.php @@ -33,7 +33,7 @@ $lang['delete_ok'] = '%d usuaris borrats'; $lang['delete_fail'] = 'Erro borrant %d.'; $lang['update_ok'] = 'Usuari actualisat correctament'; $lang['update_fail'] = 'Erro actualisant usuari'; -$lang['update_exists'] = 'Erro canviant el nom de l\'usuari, el nom d\'usuari que ha donat ya existix (els demés canvis s\'aplicaran).'; +$lang['update_exists'] = 'Erro canviant el nom de l\'usuari (%s), el nom d\'usuari que ha donat ya existix (els demés canvis s\'aplicaran).'; $lang['start'] = 'primera'; $lang['prev'] = 'anterior'; $lang['next'] = 'següent'; diff --git a/lib/scripts/linkwiz.js b/lib/scripts/linkwiz.js index bb04828b4..c55650d68 100644 --- a/lib/scripts/linkwiz.js +++ b/lib/scripts/linkwiz.js @@ -50,6 +50,9 @@ var dw_linkwiz = { jQuery(dw_linkwiz.result).css('position', 'relative'); dw_linkwiz.$entry = jQuery('#link__wiz_entry'); + if(JSINFO.namespace){ + dw_linkwiz.$entry.val(JSINFO.namespace+':'); + } // attach event handlers jQuery('#link__wiz .ui-dialog-titlebar-close').click(dw_linkwiz.hide); @@ -102,7 +105,7 @@ var dw_linkwiz = { /** * Get one of the results by index * - * @param int result div to return + * @param num int result div to return * @returns DOMObject or null */ getResult: function(num){ @@ -113,7 +116,7 @@ var dw_linkwiz = { /** * Get one of the results by index * - * @param int result div to return + * @param num int result div to return * @returns jQuery object */ $getResult: function(num) { diff --git a/lib/scripts/qsearch.js b/lib/scripts/qsearch.js index 0c3609ada..e5cc73b49 100644 --- a/lib/scripts/qsearch.js +++ b/lib/scripts/qsearch.js @@ -12,6 +12,7 @@ var dw_qsearch = { $inObj: null, $outObj: null, timer: null, + curRequest: null, /** * initialize the quick search @@ -35,12 +36,16 @@ var dw_qsearch = { // attach eventhandler to search field do_qsearch = function () { + // abort any previous request + if (dw_qsearch.curRequest != null) { + dw_qsearch.curRequest.abort(); + } var value = dw_qsearch.$inObj.val(); if (value === '') { dw_qsearch.clear_results(); return; } - jQuery.post( + dw_qsearch.curRequest = jQuery.post( DOKU_BASE + 'lib/exe/ajax.php', { call: 'qsearch', @@ -84,6 +89,8 @@ var dw_qsearch = { onCompletion: function(data) { var max, $links, too_big; + dw_qsearch.curRequest = null; + if (data === '') { dw_qsearch.clear_results(); return; diff --git a/lib/tpl/dokuwiki/css/_edit.css b/lib/tpl/dokuwiki/css/_edit.css index 0c66c75b7..92ce62126 100644 --- a/lib/tpl/dokuwiki/css/_edit.css +++ b/lib/tpl/dokuwiki/css/_edit.css @@ -13,7 +13,6 @@ .dokuwiki div.toolbar { margin-bottom: .5em; - overflow: hidden; } #draft__status { float: right; diff --git a/lib/tpl/dokuwiki/script.js b/lib/tpl/dokuwiki/script.js index 3ed8dbabe..375500f78 100644 --- a/lib/tpl/dokuwiki/script.js +++ b/lib/tpl/dokuwiki/script.js @@ -1,11 +1,10 @@ /** * We handle several device classes based on browser width. - * see http://twitter.github.com/bootstrap/scaffolding.html#responsive * - * - desktop: 980+ - * - mobile: < 980 - * - tablet 481 - 979 (ostensibly for tablets in portrait mode) - * - phone <= 480 + * - desktop: > __tablet_width__ (as set in style.ini) + * - mobile: + * - tablet <= __tablet_width__ + * - phone <= __phone_width__ */ var device_class = ''; // not yet known var device_classes = 'desktop mobile tablet phone'; |