summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--_test/core/TestRequest.php19
-rw-r--r--_test/core/TestResponse.php38
-rw-r--r--_test/tests/lib/exe/fetch_imagetoken.test.php99
-rw-r--r--_test/tests/test/basic.test.php67
-rw-r--r--conf/interwiki.conf4
-rw-r--r--inc/auth.php13
-rw-r--r--inc/common.php4
-rw-r--r--inc/fetch.functions.php149
-rw-r--r--inc/html.php8
-rw-r--r--inc/httputils.php9
-rw-r--r--inc/infoutils.php46
-rw-r--r--inc/lang/de/lang.php4
-rw-r--r--inc/lang/fi/lang.php3
-rw-r--r--inc/lang/ko/adminplugins.txt2
-rw-r--r--inc/lang/ko/backlinks.txt2
-rw-r--r--inc/lang/ko/edit.txt2
-rw-r--r--inc/lang/ko/index.txt2
-rw-r--r--inc/lang/ko/install.html4
-rw-r--r--inc/lang/ko/lang.php36
-rw-r--r--inc/lang/ko/newpage.txt2
-rw-r--r--inc/lang/ko/recent.txt2
-rw-r--r--inc/lang/ko/registermail.txt2
-rw-r--r--inc/lang/lv/lang.php4
-rw-r--r--inc/lang/nl/lang.php3
-rw-r--r--inc/lang/nl/password.txt2
-rw-r--r--inc/media.php34
-rw-r--r--install.php6
-rw-r--r--lib/exe/fetch.php158
-rw-r--r--lib/exe/indexer.php10
-rw-r--r--lib/plugins/acl/lang/de/lang.php1
-rw-r--r--lib/plugins/authad/lang/de-informal/settings.php11
-rw-r--r--lib/plugins/authad/lang/de/settings.php6
-rw-r--r--lib/plugins/authad/lang/fi/settings.php6
-rw-r--r--lib/plugins/authad/lang/ko/settings.php8
-rw-r--r--lib/plugins/authad/lang/lv/settings.php6
-rw-r--r--lib/plugins/authad/lang/nl/settings.php17
-rw-r--r--lib/plugins/authldap/auth.php8
-rw-r--r--lib/plugins/authldap/lang/de-informal/settings.php20
-rw-r--r--lib/plugins/authldap/lang/de/settings.php6
-rw-r--r--lib/plugins/authldap/lang/fi/settings.php6
-rw-r--r--lib/plugins/authldap/lang/ko/settings.php11
-rw-r--r--lib/plugins/authldap/lang/lv/settings.php6
-rw-r--r--lib/plugins/authldap/lang/nl/settings.php20
-rw-r--r--lib/plugins/authldap/lang/zh/settings.php2
-rw-r--r--lib/plugins/authmysql/auth.php18
-rw-r--r--lib/plugins/authmysql/lang/de-informal/settings.php40
-rw-r--r--lib/plugins/authmysql/lang/de/settings.php6
-rw-r--r--lib/plugins/authmysql/lang/fi/settings.php6
-rw-r--r--lib/plugins/authmysql/lang/lv/settings.php6
-rw-r--r--lib/plugins/authmysql/lang/nl/settings.php40
-rw-r--r--lib/plugins/authmysql/lang/pt-br/settings.php23
-rw-r--r--lib/plugins/authpgsql/lang/de-informal/settings.php36
-rw-r--r--lib/plugins/authpgsql/lang/de/settings.php6
-rw-r--r--lib/plugins/authpgsql/lang/fi/settings.php6
-rw-r--r--lib/plugins/authpgsql/lang/lv/settings.php6
-rw-r--r--lib/plugins/authpgsql/lang/nl/settings.php36
-rw-r--r--lib/plugins/authpgsql/lang/pt-br/settings.php12
-rw-r--r--lib/plugins/config/lang/de-informal/lang.php44
-rw-r--r--lib/plugins/config/lang/de/lang.php103
-rw-r--r--lib/plugins/config/lang/fi/lang.php6
-rw-r--r--lib/plugins/config/lang/ko/intro.txt2
-rw-r--r--lib/plugins/config/lang/ko/lang.php20
-rw-r--r--lib/plugins/config/lang/lv/lang.php1
-rw-r--r--lib/plugins/config/lang/nl/lang.php2
-rw-r--r--lib/plugins/plugin/lang/de/lang.php1
-rw-r--r--lib/plugins/plugin/lang/ko/admin_plugin.txt4
-rw-r--r--lib/plugins/plugin/lang/ko/lang.php8
-rw-r--r--lib/plugins/popularity/lang/de/lang.php1
-rw-r--r--lib/plugins/popularity/lang/ko/lang.php4
-rw-r--r--lib/plugins/revert/lang/de/lang.php1
-rw-r--r--lib/plugins/revert/lang/ko/intro.txt2
-rw-r--r--lib/plugins/usermanager/lang/de/lang.php1
-rw-r--r--lib/plugins/usermanager/lang/ko/add.txt2
-rw-r--r--lib/plugins/usermanager/lang/ko/delete.txt2
-rw-r--r--lib/plugins/usermanager/lang/ko/edit.txt2
-rw-r--r--lib/plugins/usermanager/lang/ko/intro.txt2
-rw-r--r--lib/plugins/usermanager/lang/ko/list.txt2
-rw-r--r--lib/plugins/usermanager/lang/nl/lang.php2
-rw-r--r--lib/scripts/jquery/jquery-ui-theme/images/animated-overlay.gifbin0 -> 1738 bytes
-rwxr-xr-xlib/scripts/jquery/update.sh2
-rw-r--r--lib/styles/screen.css9
-rw-r--r--lib/tpl/dokuwiki/css/print.css2
82 files changed, 1007 insertions, 327 deletions
diff --git a/_test/core/TestRequest.php b/_test/core/TestRequest.php
index 172821576..0a54910ed 100644
--- a/_test/core/TestRequest.php
+++ b/_test/core/TestRequest.php
@@ -18,6 +18,9 @@ function ob_start_callback($buffer) {
*/
class TestRequest {
+ private $valid_scripts = array('/doku.php', '/lib/exe/fetch.php', '/lib/exe/detail.php');
+ private $script;
+
private $server = array();
private $session = array();
private $get = array();
@@ -27,6 +30,7 @@ class TestRequest {
public function getSession($key) { return $this->session[$key]; }
public function getGet($key) { return $this->get[$key]; }
public function getPost($key) { return $this->post[$key]; }
+ public function getScript() { return $this->script; }
public function setServer($key, $value) { $this->server[$key] = $value; }
public function setSession($key, $value) { $this->session[$key] = $value; }
@@ -70,13 +74,13 @@ class TestRequest {
// now execute dokuwiki and grep the output
header_remove();
ob_start('ob_start_callback');
- include(DOKU_INC.'doku.php');
+ include(DOKU_INC.$this->script);
ob_end_flush();
// create the response object
$response = new TestResponse(
$output_buffer,
- headers_list()
+ (function_exists('xdebug_get_headers') ? xdebug_get_headers() : headers_list()) // cli sapi doesn't do headers, prefer xdebug_get_headers() which works under cli
);
// reset environment
@@ -102,14 +106,15 @@ class TestRequest {
* @todo make this work with other end points
*/
protected function setUri($uri){
- if(substr($uri,0,9) != '/doku.php'){
- throw new Exception("only '/doku.php' is supported currently");
+ if(!preg_match('#^('.join('|',$this->valid_scripts).')#',$uri)){
+ throw new Exception("$uri \n--- only ".join(', ',$this->valid_scripts)." are supported currently");
}
$params = array();
list($uri, $query) = explode('?',$uri,2);
if($query) parse_str($query, $params);
+ $this->script = substr($uri,1);
$this->get = array_merge($params, $this->get);
if(count($this->get)){
$query = '?'.http_build_query($this->get, '', '&');
@@ -129,7 +134,7 @@ class TestRequest {
* Simulate a POST request with the given variables
*
* @param array $post all the POST parameters to use
- * @param string $url end URL to simulate, needs to start with /doku.php currently
+ * @param string $url end URL to simulate, needs to start with /doku.php, /lib/exe/fetch.php or /lib/exe/detail.php currently
* @param return TestResponse
*/
public function post($post=array(), $uri='/doku.php') {
@@ -141,8 +146,8 @@ class TestRequest {
/**
* Simulate a GET request with the given variables
*
- * @param array $GET all the POST parameters to use
- * @param string $url end URL to simulate, needs to start with /doku.php currently
+ * @param array $GET all the GET parameters to use
+ * @param string $url end URL to simulate, needs to start with /doku.php, /lib/exe/fetch.php or /lib/exe/detail.php currently
* @param return TestResponse
*/
public function get($get=array(), $uri='/doku.php') {
diff --git a/_test/core/TestResponse.php b/_test/core/TestResponse.php
index 6d20afb28..7cc50ee4f 100644
--- a/_test/core/TestResponse.php
+++ b/_test/core/TestResponse.php
@@ -42,6 +42,44 @@ class TestResponse {
}
/**
+ * @param $name string, the name of the header without the ':', e.g. 'Content-Type', 'Pragma'
+ * @return mixed if exactly one header, the header (string); otherwise an array of headers, empty when no headers
+ */
+ public function getHeader($name) {
+ $result = array();
+ foreach ($this->headers as $header) {
+ if (substr($header,0,strlen($name)+1) == $name.':') {
+ $result[] = $header;
+ }
+ }
+
+ return count($result) == 1 ? $result[0] : $result;
+ }
+
+ /**
+ * @return int http status code
+ *
+ * in the test environment, only status codes explicitly set by dokuwiki are likely to be returned
+ * this means succcessful status codes (e.g. 200 OK) will not be present, but error codes will be
+ */
+ public function getStatusCode() {
+ $headers = $this->getHeader('Status');
+ $code = null;
+
+ if ($headers) {
+ // if there is more than one status header, use the last one
+ $status = is_array($headers) ? array_pop($headers) : $headers;
+ $matches = array();
+ preg_match('/^Status: ?(\d+)/',$status,$matches);
+ if ($matches){
+ $code = $matches[1];
+ }
+ }
+
+ return $code;
+ }
+
+ /**
* Query the response for a JQuery compatible CSS selector
*
* @link https://code.google.com/p/phpquery/wiki/Selectors
diff --git a/_test/tests/lib/exe/fetch_imagetoken.test.php b/_test/tests/lib/exe/fetch_imagetoken.test.php
new file mode 100644
index 000000000..9e5b6e4a2
--- /dev/null
+++ b/_test/tests/lib/exe/fetch_imagetoken.test.php
@@ -0,0 +1,99 @@
+<?php
+
+class fetch_imagetoken_test extends DokuWikiTest {
+
+ private $media = 'wiki:dokuwiki-128.png';
+ private $width = 200;
+ private $height = 0;
+
+ function setUp() {
+ // check we can carry out these tests
+ if (!file_exists(mediaFN($this->media))) {
+ $this->markTestSkipped('Source image required for test');
+ }
+
+ header('X-Test: check headers working');
+ $header_check = function_exists('xdebug_get_headers') ? xdebug_get_headers() : headers_list();
+ if (empty($header_check)) {
+ $this->markTestSkipped('headers not returned, perhaps your sapi does not return headers, try xdebug');
+ } else {
+ header_remove('X-Test');
+ }
+
+ parent::setUp();
+
+ global $conf;
+ $conf['sendfile'] = 0;
+
+ global $MIME, $EXT, $CACHE, $INPUT; // variables fetch creates in global scope -- should this be in fetch?
+ }
+
+ function getUri() {
+ $w = $this->width ? 'w='.$this->width.'&' : '';
+ $h = $this->height ? 'h='.$this->height.'&' : '';
+
+ return '/lib/exe/fetch.php?'.$w.$h.'{%token%}media='.$this->media;
+ }
+
+ function fetchResponse($token){
+ $request = new TestRequest();
+ return $request->get(array(),str_replace('{%token%}',$token,$this->getUri()));
+ }
+
+ /**
+ * modified image request with valid token
+ * expect: header with mime-type
+ * expect: content
+ * expect: no error response
+ */
+ function test_valid_token(){
+ $valid_token = 'tok='.media_get_token($this->media, $this->width, $this->height).'&';
+ $response = $this->fetchResponse($valid_token);
+ $this->assertTrue((bool)$response->getHeader('Content-Type'));
+ $this->assertTrue((bool)($response->getContent()));
+
+ $status_code = $response->getStatusCode();
+ $this->assertTrue(is_null($status_code) || (200 == $status_code));
+ }
+
+ /**
+ * modified image request with invalid token
+ * expect: 412 status code
+ */
+ function test_invalid_token(){
+ $invalid_token = 'tok='.media_get_token('junk',200,100).'&';
+ $this->assertEquals(412,$this->fetchResponse($invalid_token)->getStatusCode());
+ }
+
+ /**
+ * modified image request with no token
+ * expect: 412 status code
+ */
+ function test_missing_token(){
+ $no_token = '';
+ $this->assertEquals(412,$this->fetchResponse($notoken)->getStatusCode());
+ }
+
+ /**
+ * native image request which doesn't require a token
+ * try: with a token & without a token
+ * expect: (for both) header with mime-type, content matching source image filesize & no error response
+ */
+ function test_no_token_required(){
+ $this->width = $this->height = 0; // no width & height, means image request at native dimensions
+ $any_token = 'tok='.media_get_token('junk',200,100).'&';
+ $no_token = '';
+ $bytes = filesize(mediaFN($this->media));
+
+ foreach(array($any_token, $no_token) as $token) {
+ $response = $this->fetchResponse($token);
+ $this->assertTrue((bool)$response->getHeader('Content-Type'));
+ $this->assertEquals(strlen($response->getContent()), $bytes);
+
+ $status_code = $response->getStatusCode();
+ $this->assertTrue(is_null($status_code) || (200 == $status_code));
+ }
+ }
+
+}
+//Setup VIM: ex: et ts=4 :
diff --git a/_test/tests/test/basic.test.php b/_test/tests/test/basic.test.php
index a0ea48a3a..05778ccf9 100644
--- a/_test/tests/test/basic.test.php
+++ b/_test/tests/test/basic.test.php
@@ -4,6 +4,24 @@
* @group integration
*/
class InttestsBasicTest extends DokuWikiTest {
+
+ private $some_headers = array(
+ 'Content-Type: image/png',
+ 'Date: Fri, 22 Mar 2013 16:10:01 GMT',
+ 'X-Powered-By: PHP/5.3.15',
+ 'Expires: Sat, 23 Mar 2013 17:03:46 GMT',
+ 'Cache-Control: public, proxy-revalidate, no-transform, max-age=86400',
+ 'Pragma: public',
+ 'Last-Modified: Fri, 22 Mar 2013 01:48:28 GMT',
+ 'ETag: "63daab733b38c30c337229b2e587f8fb"',
+ 'Content-Disposition: inline; filename="fe389b0db8c1088c336abb502d2f9ae7.media.200x200.png',
+ 'Accept-Ranges: bytes',
+ 'Content-Type: image/png',
+ 'Content-Length: 62315',
+ 'Status: 200 OK',
+ 'Status: 404 Not Found',
+ );
+
/**
* Execute the simplest possible request and expect
* a dokuwiki page which obviously has the word "DokuWiki"
@@ -101,5 +119,54 @@ class InttestsBasicTest extends DokuWikiTest {
$this->assertTrue(strpos($response->getContent(), 'Andreas Gohr') >= 0);
}
+ function testScripts() {
+ $request = new TestRequest();
+
+ // doku
+ $response = $request->get();
+ $this->assertEquals('doku.php',$request->getScript());
+
+ $response = $request->get(array(),'/doku.php?id=wiki:dokuwiki&test=foo');
+ $this->assertEquals('doku.php',$request->getScript());
+
+ // fetch
+ $response = $request->get(array(),'/lib/exe/fetch.php?media=wiki:dokuwiki-128.png');
+ $this->assertEquals('lib/exe/fetch.php',$request->getScript());
+
+ // detail
+ $response = $request->get(array(),'/lib/exe/detail.php?id=start&media=wiki:dokuwiki-128.png');
+ $this->assertEquals('lib/exe/detail.php',$request->getScript());
+ }
+
+ function testHeaders(){
+ header('X-Test: check headers working');
+ $header_check = function_exists('xdebug_get_headers') ? xdebug_get_headers() : headers_list();
+ if (empty($header_check)) {
+ $this->markTestSkipped('headers not returned, perhaps your sapi does not return headers, try xdebug');
+ } else {
+ header_remove('X-Test');
+ }
+
+ $request = new TestRequest();
+ $response = $request->get(array(),'/lib/exe/fetch.php?media=wiki:dokuwiki-128.png');
+ $headers = $response->getHeaders();
+ $this->assertTrue(!empty($headers));
+ }
+
+ function testGetHeader(){
+ $response = new TestResponse('',$this->some_headers);
+
+ $this->assertEquals('Pragma: public', $response->getHeader('Pragma'));
+ $this->assertEmpty($response->getHeader('Junk'));
+ $this->assertEquals(array('Content-Type: image/png','Content-Type: image/png'), $response->getHeader('Content-Type'));
+ }
+
+ function testGetStatus(){
+ $response = new TestResponse('',$this->some_headers);
+ $this->assertEquals(404, $response->getStatusCode());
+
+ $response = new TestResponse('',array_slice($this->some_headers,0,-2)); // slice off the last two headers to leave no status header
+ $this->assertNull($response->getStatusCode());
+ }
}
diff --git a/conf/interwiki.conf b/conf/interwiki.conf
index 28d603de2..aba475a0e 100644
--- a/conf/interwiki.conf
+++ b/conf/interwiki.conf
@@ -5,7 +5,7 @@
# no further encoding is done
# If no placeholder is defined the urlencoded name is appended to the URL
-# To prevent losing your added InterWiki shortcuts after an upgrade,
+# To prevent losing your added InterWiki shortcuts after an upgrade,
# you should add new ones to interwiki.local.conf
wp http://en.wikipedia.org/wiki/{NAME}
@@ -17,7 +17,7 @@ wpjp http://ja.wikipedia.org/wiki/{NAME}
wpmeta http://meta.wikipedia.org/wiki/{NAME}
doku http://www.dokuwiki.org/
dokubug http://bugs.dokuwiki.org/index.php?do=details&amp;task_id=
-rfc http://www.cs.ccu.edu.tw/~chm91u/rfc2html.php?in=
+rfc http://tools.ietf.org/html/rfc
man http://man.cx/
amazon http://www.amazon.com/exec/obidos/ASIN/{URL}/splitbrain-20/
amazon.de http://www.amazon.de/exec/obidos/ASIN/{URL}/splitbrain-21/
diff --git a/inc/auth.php b/inc/auth.php
index 68b6b438d..9f180fc94 100644
--- a/inc/auth.php
+++ b/inc/auth.php
@@ -48,10 +48,15 @@ function auth_setup() {
// try to load auth backend from plugins
foreach ($plugin_controller->getList('auth') as $plugin) {
- if ($conf['authtype'] === $plugin) {
- $auth = $plugin_controller->load('auth', $plugin);
- break;
- }
+ if ($conf['authtype'] === $plugin) {
+ $auth = $plugin_controller->load('auth', $plugin);
+ break;
+ } 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[\'authconfig\'] = ' . "auth" . $conf['authtype']
+ . ' in your config (see <a href="https://www.dokuwiki.org/auth">Authentication Backends</a>)',-1,'','',MSG_ADMINS_ONLY);
+ }
}
if(!isset($auth) || !$auth){
diff --git a/inc/common.php b/inc/common.php
index 471eb91b5..27f90b53b 100644
--- a/inc/common.php
+++ b/inc/common.php
@@ -436,6 +436,10 @@ function exportlink($id = '', $format = 'raw', $more = '', $abs = false, $sep =
function ml($id = '', $more = '', $direct = true, $sep = '&amp;', $abs = false) {
global $conf;
if(is_array($more)) {
+ // add token for resized images
+ if($more['w'] || $more['h']){
+ $more['tok'] = media_get_token($id,$more['w'],$more['h']);
+ }
// strip defaults for shorter URLs
if(isset($more['cache']) && $more['cache'] == 'cache') unset($more['cache']);
if(!$more['w']) unset($more['w']);
diff --git a/inc/fetch.functions.php b/inc/fetch.functions.php
new file mode 100644
index 000000000..5801e96fa
--- /dev/null
+++ b/inc/fetch.functions.php
@@ -0,0 +1,149 @@
+<?php
+/**
+ * Functions used by lib/exe/fetch.php
+ * (not included by other parts of dokuwiki)
+ */
+
+/**
+ * Set headers and send the file to the client
+ *
+ * The $cache parameter influences how long files may be kept in caches, the $public parameter
+ * influences if this caching may happen in public proxis or in the browser cache only FS#2734
+ *
+ * This function will abort the current script when a 304 is sent or file sending is handled
+ * through x-sendfile
+ *
+ * @author Andreas Gohr <andi@splitbrain.org>
+ * @author Ben Coburn <btcoburn@silicodon.net>
+ * @param string $file local file to send
+ * @param string $mime mime type of the file
+ * @param bool $dl set to true to force a browser download
+ * @param int $cache remaining cache time in seconds (-1 for $conf['cache'], 0 for no-cache)
+ * @param bool $public is this a public ressource or a private one?
+ */
+function sendFile($file, $mime, $dl, $cache, $public = false) {
+ global $conf;
+ // send mime headers
+ header("Content-Type: $mime");
+
+ // calculate cache times
+ if($cache == -1) {
+ $maxage = max($conf['cachetime'], 3600); // cachetime or one hour
+ $expires = time() + $maxage;
+ } else if($cache > 0) {
+ $maxage = $cache; // given time
+ $expires = time() + $maxage;
+ } else { // $cache == 0
+ $maxage = 0;
+ $expires = 0; // 1970-01-01
+ }
+
+ // smart http caching headers
+ if($maxage) {
+ if($public) {
+ // cache publically
+ header('Expires: '.gmdate("D, d M Y H:i:s", $expires).' GMT');
+ header('Cache-Control: public, proxy-revalidate, no-transform, max-age='.$maxage);
+ header('Pragma: public');
+ } else {
+ // cache in browser
+ header('Expires: '.gmdate("D, d M Y H:i:s", $expires).' GMT');
+ header('Cache-Control: private, no-transform, max-age='.$maxage);
+ header('Pragma: no-cache');
+ }
+ } else {
+ // no cache at all
+ header('Expires: Thu, 01 Jan 1970 00:00:00 GMT');
+ header('Cache-Control: no-cache, no-transform');
+ header('Pragma: no-cache');
+ }
+
+ //send important headers first, script stops here if '304 Not Modified' response
+ $fmtime = @filemtime($file);
+ 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?";
+ }
+}
+
+/**
+ * Check for media for preconditions and return correct status code
+ *
+ * READ: MEDIA, MIME, EXT, CACHE
+ * WRITE: MEDIA, FILE, array( STATUS, STATUSMESSAGE )
+ *
+ * @author Gerry Weissbach <gerry.w@gammaproduction.de>
+ * @param $media reference to the media id
+ * @param $file reference to the file variable
+ * @returns array(STATUS, STATUSMESSAGE)
+ */
+function checkFileStatus(&$media, &$file, $rev = '', $width=0, $height=0) {
+ 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 token for resized images
+ if (($width || $height) && media_get_token($media, $width, $height) !== $INPUT->str('tok')) {
+ return array(412, 'Precondition Failed');
+ }
+
+ //check permissions (namespace only)
+ if(auth_quickaclcheck(getNS($media).':X') < AUTH_READ) {
+ return array(403, 'Forbidden');
+ }
+ $file = mediaFN($media, $rev);
+ }
+
+ //check file existance
+ if(!@file_exists($file)) {
+ return array(404, 'Not Found');
+ }
+
+ return array(200, null);
+}
+
+/**
+ * Returns the wanted cachetime in seconds
+ *
+ * Resolves named constants
+ *
+ * @author Andreas Gohr <andi@splitbrain.org>
+ */
+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
+}
diff --git a/inc/html.php b/inc/html.php
index 59415f7da..fb39fcb3c 100644
--- a/inc/html.php
+++ b/inc/html.php
@@ -1297,9 +1297,11 @@ function html_msgarea(){
foreach($MSG as $msg){
$hash = md5($msg['msg']);
if(isset($shown[$hash])) continue; // skip double messages
- print '<div class="'.$msg['lvl'].'">';
- print $msg['msg'];
- print '</div>';
+ if(info_msg_allowed($msg)){
+ print '<div class="'.$msg['lvl'].'">';
+ print $msg['msg'];
+ print '</div>';
+ }
$shown[$hash] = 1;
}
diff --git a/inc/httputils.php b/inc/httputils.php
index d3f3cdde2..ca60ed509 100644
--- a/inc/httputils.php
+++ b/inc/httputils.php
@@ -61,9 +61,9 @@ function http_conditionalRequest($timestamp){
}
/**
- * Let the webserver send the given file vi x-sendfile method
+ * Let the webserver send the given file via x-sendfile method
*
- * @author Chris Smith <chris.eureka@jalakai.co.uk>
+ * @author Chris Smith <chris@jalakai.co.uk>
* @returns void or exits with previously header() commands executed
*/
function http_sendfile($file) {
@@ -177,7 +177,8 @@ function http_rangeRequest($fh,$size,$mime){
echo HTTP_HEADER_LF.'--'.HTTP_MULTIPART_BOUNDARY.'--'.HTTP_HEADER_LF;
}
- // everything should be done here, exit
+ // everything should be done here, exit (or return if testing)
+ if (defined('SIMPLE_TEST')) return;
exit;
}
@@ -320,7 +321,7 @@ function http_status($code = 200, $text = '') {
$server_protocol = (isset($_SERVER['SERVER_PROTOCOL'])) ? $_SERVER['SERVER_PROTOCOL'] : false;
- if(substr(php_sapi_name(), 0, 3) == 'cgi') {
+ if(substr(php_sapi_name(), 0, 3) == 'cgi' || defined('SIMPLE_TEST')) {
header("Status: {$code} {$text}", true);
} elseif($server_protocol == 'HTTP/1.1' OR $server_protocol == 'HTTP/1.0') {
header($server_protocol." {$code} {$text}", true, $code);
diff --git a/inc/infoutils.php b/inc/infoutils.php
index 92607e4fa..9fe5ee689 100644
--- a/inc/infoutils.php
+++ b/inc/infoutils.php
@@ -269,7 +269,13 @@ function check(){
* @author Andreas Gohr <andi@splitbrain.org>
* @see html_msgarea
*/
-function msg($message,$lvl=0,$line='',$file=''){
+
+define('MSG_PUBLIC', 0);
+define('MSG_USERS_ONLY', 1);
+define('MSG_MANAGERS_ONLY',2);
+define('MSG_ADMINS_ONLY',4);
+
+function msg($message,$lvl=0,$line='',$file='',$allow=MSG_PUBLIC){
global $MSG, $MSG_shown;
$errors[-1] = 'error';
$errors[0] = 'info';
@@ -279,7 +285,7 @@ function msg($message,$lvl=0,$line='',$file=''){
if($line || $file) $message.=' ['.utf8_basename($file).':'.$line.']';
if(!isset($MSG)) $MSG = array();
- $MSG[]=array('lvl' => $errors[$lvl], 'msg' => $message);
+ $MSG[]=array('lvl' => $errors[$lvl], 'msg' => $message, 'allow' => $allow);
if(isset($MSG_shown) || headers_sent()){
if(function_exists('html_msgarea')){
html_msgarea();
@@ -289,6 +295,42 @@ function msg($message,$lvl=0,$line='',$file=''){
unset($GLOBALS['MSG']);
}
}
+/**
+ * Determine whether the current user is allowed to view the message
+ * in the $msg data structure
+ *
+ * @param $msg array dokuwiki msg structure
+ * msg => string, the message
+ * lvl => int, level of the message (see msg() function)
+ * allow => int, flag used to determine who is allowed to see the message
+ * see MSG_* constants
+ */
+function info_msg_allowed($msg){
+ global $INFO, $auth;
+
+ // is the message public? - everyone and anyone can see it
+ if (empty($msg['allow']) || ($msg['allow'] == MSG_PUBLIC)) return true;
+
+ // restricted msg, but no authentication
+ if (empty($auth)) return false;
+
+ switch ($msg['allow']){
+ case MSG_USERS_ONLY:
+ return !empty($INFO['userinfo']);
+
+ case MSG_MANAGERS_ONLY:
+ return $INFO['ismanager'];
+
+ case MSG_ADMINS_ONLY:
+ return $INFO['isadmin'];
+
+ default:
+ trigger_error('invalid msg allow restriction. msg="'.$msg['msg'].'" allow='.$msg['allow'].'"', E_USER_WARNING);
+ return $INFO['isadmin'];
+ }
+
+ return false;
+}
/**
* print debug messages
diff --git a/inc/lang/de/lang.php b/inc/lang/de/lang.php
index 160ea53e8..1a9cb7d90 100644
--- a/inc/lang/de/lang.php
+++ b/inc/lang/de/lang.php
@@ -21,6 +21,7 @@
* @author Matthias Schulte <mailinglist@lupo49.de>
* @author Paul Lachewsky <kaeptn.haddock@gmail.com>
* @author Pierre Corell <info@joomla-praxis.de>
+ * @author Mateng Schimmerlos <mateng@firemail.de>)
*/
$lang['encoding'] = 'utf-8';
$lang['direction'] = 'ltr';
@@ -298,6 +299,9 @@ $lang['i_pol1'] = 'Öffentliches Wiki (Lesen für alle, Schreiben
$lang['i_pol2'] = 'Geschlossenes Wiki (Lesen, Schreiben und Hochladen nur für registrierte Nutzer)';
$lang['i_retry'] = 'Wiederholen';
$lang['i_license'] = 'Bitte wählen Sie die Lizenz, unter die Sie Ihre Inhalte stellen möchten:';
+$lang['i_license_none'] = 'Lizensierungsinformation nicht anzeigen';
+$lang['i_pop_field'] = 'Bitte Helfen Sie mit, DokuWiki zu verbessern:';
+$lang['i_pop_label'] = 'Einmal monatlich anonymisierte Nutzungsdaten an das DokuWiki-Entwicklerteam senden';
$lang['recent_global'] = 'Im Moment sehen Sie die Änderungen im Namensraum <b>%s</b>. Sie können auch <a href="%s">die Änderungen im gesamten Wiki sehen</a>.';
$lang['years'] = 'vor %d Jahren';
$lang['months'] = 'vor %d Monaten';
diff --git a/inc/lang/fi/lang.php b/inc/lang/fi/lang.php
index 59e4dc6cb..b66558d26 100644
--- a/inc/lang/fi/lang.php
+++ b/inc/lang/fi/lang.php
@@ -287,6 +287,9 @@ $lang['i_pol1'] = 'Julkinen Wiki (luku kaikilla, kirjoitus ja tie
$lang['i_pol2'] = 'Suljettu Wiki (luku, kirjoitus ja tiedostojen lähetys vain rekisteröityneillä käyttäjillä)';
$lang['i_retry'] = 'Yritä uudelleen';
$lang['i_license'] = 'Valitse lisenssi, jonka alle haluat sisältösi laittaa:';
+$lang['i_license_none'] = 'Älä näytä mitään lisenssitietoja';
+$lang['i_pop_field'] = 'Auta parantamaan DokuWikiä';
+$lang['i_pop_label'] = 'Lähetä kerran kuussa nimetöntä käyttäjätietoa DokuWikin kehittäjille';
$lang['recent_global'] = 'Seuraat tällä hetkellä muutoksia nimiavaruuden <b>%s</b> sisällä. Voit myös <a href="%s">katsoa muutoksia koko wikissä</a>';
$lang['years'] = '%d vuotta sitten';
$lang['months'] = '%d kuukautta sitten';
diff --git a/inc/lang/ko/adminplugins.txt b/inc/lang/ko/adminplugins.txt
index 5312cf357..2c436d6f8 100644
--- a/inc/lang/ko/adminplugins.txt
+++ b/inc/lang/ko/adminplugins.txt
@@ -1 +1 @@
-===== 부가적인 플러그인 ===== \ No newline at end of file
+===== 추가적인 플러그인 ===== \ No newline at end of file
diff --git a/inc/lang/ko/backlinks.txt b/inc/lang/ko/backlinks.txt
index 85fdfa3da..6a6ad48a4 100644
--- a/inc/lang/ko/backlinks.txt
+++ b/inc/lang/ko/backlinks.txt
@@ -1,3 +1,3 @@
====== 백링크 ======
-현재 문서를 가리키는 링크가 있는 문서 목록입니다.
+현재 문서를 가리키는 링크가 있는 문서 목록입니다. \ No newline at end of file
diff --git a/inc/lang/ko/edit.txt b/inc/lang/ko/edit.txt
index f52326a33..97927b7fe 100644
--- a/inc/lang/ko/edit.txt
+++ b/inc/lang/ko/edit.txt
@@ -1 +1 @@
-문서를 편집하고 **저장**을 누르세요. 위키 구문은 [[wiki:syntax]] 또는 [[wiki:ko_syntax|(한국어) 구문]]을 참고하세요. 이 문서를 **더 좋게 만들 자신이 있을 때**에만 편집하세요. 연습을 하고 싶다면 먼저 [[playground:playground|연습장]]에 가서 연습하세요.
+문서를 편집하고 **저장**을 누르세요. 위키 구문은 [[wiki:syntax]] 또는 [[wiki:ko_syntax|(한국어) 구문]]을 참고하세요. 이 문서를 **더 좋게 만들 자신이 있을 때**에만 편집하세요. 연습을 하고 싶다면 먼저 [[playground:playground|연습장]]에 가서 연습하세요. \ No newline at end of file
diff --git a/inc/lang/ko/index.txt b/inc/lang/ko/index.txt
index 24eb9450c..058f04254 100644
--- a/inc/lang/ko/index.txt
+++ b/inc/lang/ko/index.txt
@@ -1,3 +1,3 @@
====== 사이트맵 ======
-이 페이지는 [[doku>namespaces|이름공간]]에서 정렬한 모든 문서의 목록입니다. \ No newline at end of file
+[[doku>namespaces|이름공간]]에서 정렬한 모든 문서의 목록입니다. \ No newline at end of file
diff --git a/inc/lang/ko/install.html b/inc/lang/ko/install.html
index a87bb6382..a9961b47e 100644
--- a/inc/lang/ko/install.html
+++ b/inc/lang/ko/install.html
@@ -3,7 +3,7 @@
<a href="http://dokuwiki.org/install">(영어) 설치 문서</a>를 참고하시기 바랍니다.</p>
<p>DokuWiki는 위키 문서와 문서와 관련된 정보(예를 들어 그림, 검색 색인, 이전 판 문서)를 저장하기 위해 일반적인 텍스트 파일을 사용합니다. 정상적으로 DokuWiki를 사용하려면 이 파일을 담고 있는 디렉토리에 대한 쓰기 권한을 가지고 있어야 합니다.
-현재 설치 과정 중에는 디렉토리 권한 설정이 불가능합니다. 보통 직접 쉘 명령어를 사용하거나, 호스팅을 사용한다면 FTP나 호스팅 제어판(예를 들어 CPanel)을 사용해서 설정해야 합니다.</p>
+현재 설치 과정 중에는 디렉토리 권한 설정이 불가능합니다. 보통 직접 셸 명령어를 사용하거나, 호스팅을 사용한다면 FTP나 호스팅 제어판(예를 들어 CPanel)을 사용해서 설정해야 합니다.</p>
<p>현재 설치 과정중에 관리자로 로그인 후 DokuWiki의 관리 메뉴(플러그인 설치, 사용자 관리, 위키 문서 접근 권한 관리, 옵션 설정)를 가능하게 <acronym title="접근 제어 목록">ACL</acronym>에 대한 환경 설정을 수행합니다.
DokuWiki가 동작하는데 필요한 사항은 아니지만, 어쨌든 더 쉽게 관리자가 관리할 수 있도록 해줍니다.</p>
@@ -12,4 +12,4 @@ DokuWiki가 동작하는데 필요한 사항은 아니지만, 어쨌든 더 쉽
<a href="http://dokuwiki.org/ko:install">설치 과정 (한국어)</a>
과 <a href="http://dokuwiki.org/ko:config">환경 설정 (한국어),</a>
<a href="http://dokuwiki.org/install">설치 과정 (영어)</a>
-과 <a href="http://dokuwiki.org/config">환경 설정 (영어)</a></p>
+과 <a href="http://dokuwiki.org/config">환경 설정 (영어)</a></p> \ No newline at end of file
diff --git a/inc/lang/ko/lang.php b/inc/lang/ko/lang.php
index dd3d6747b..93f8611d6 100644
--- a/inc/lang/ko/lang.php
+++ b/inc/lang/ko/lang.php
@@ -72,11 +72,11 @@ $lang['reguexists'] = '같은 이름을 사용하는 사용자가 있
$lang['regsuccess'] = '사용자를 만들었으며 비밀번호는 이메일로 보냈습니다.';
$lang['regsuccess2'] = '사용자를 만들었습니다.';
$lang['regmailfail'] = '비밀번호를 이메일로 보낼 때 오류가 발생했습니다. 관리자에게 문의하시기 바랍니다!';
-$lang['regbadmail'] = '이메일 주소가 잘못됐습니다 - 오류라고 생각하면 관리자에게 문의하시기 바랍니다.';
+$lang['regbadmail'] = '이메일 주소가 잘못됐습니다 - 오류라고 생각하면 관리자에게 문의하시기 바랍니다';
$lang['regbadpass'] = '새 비밀번호가 일치하지 않습니다. 다시 입력하세요.';
$lang['regpwmail'] = 'DokuWiki 비밀번호';
$lang['reghere'] = '계정이 없나요? 계정을 등록할 수 있습니다';
-$lang['profna'] = '이 위키는 개인 정보 수정을 허용하지 않습니다';
+$lang['profna'] = '이 위키는 개인 정보 수정을 할 수 없습니다';
$lang['profnochange'] = '바뀜이 없습니다.';
$lang['profnoempty'] = '이름이나 이메일 주소가 비었습니다.';
$lang['profchanged'] = '개인 정보가 성공적으로 바뀌었습니다.';
@@ -145,7 +145,7 @@ $lang['mediaselect'] = '미디어 파일 선택';
$lang['fileupload'] = '미디어 파일 올리기';
$lang['uploadsucc'] = '올리기 성공';
$lang['uploadfail'] = '올리기를 실패했습니다. 잘못된 권한 때문일지도 모릅니다.';
-$lang['uploadwrong'] = '올리기를 거부했습니다. 금지된 확장자입니다!';
+$lang['uploadwrong'] = '올리기를 거부했습니다. 금지된 파일 확장자입니다!';
$lang['uploadexist'] = '파일이 이미 존재합니다.';
$lang['uploadbadcontent'] = '올린 파일이 %s 파일 확장자와 일치하지 않습니다.';
$lang['uploadspam'] = '스팸 차단 목록이 올리기를 취소했습니다.';
@@ -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'] = '다음 문서에서 아직 사용 중이므로 파일을 삭제할 수 없습니다:';
@@ -171,7 +171,7 @@ $lang['toc'] = '목차';
$lang['current'] = '현재';
$lang['yours'] = '판';
$lang['diff'] = '현재 판과의 차이 보기';
-$lang['diff2'] = '선택한 판 간 차이 보기';
+$lang['diff2'] = '선택한 판 사이의 차이 보기';
$lang['difflink'] = '차이 보기로 링크';
$lang['diff_type'] = '차이 보기:';
$lang['diff_inline'] = '인라인 방식';
@@ -194,15 +194,15 @@ $lang['site_tools'] = '사이트 도구';
$lang['page_tools'] = '문서 도구';
$lang['skip_to_content'] = '콘텐츠 넘기기';
$lang['sidebar'] = '사이드바';
-$lang['mail_newpage'] = '문서 추가:';
+$lang['mail_newpage'] = '문서 추가함:';
$lang['mail_changed'] = '문서 바뀜:';
$lang['mail_subscribe_list'] = '이름공간에서 바뀐 문서:';
-$lang['mail_new_user'] = '새로운 사용자:';
-$lang['mail_upload'] = '파일 첨부:';
+$lang['mail_new_user'] = '새 사용자:';
+$lang['mail_upload'] = '파일 올림:';
$lang['changes_type'] = '차이 보기';
$lang['pages_changes'] = '문서';
$lang['media_changes'] = '미디어 파일';
-$lang['both_changes'] = '미디어 파일과 문서 모두';
+$lang['both_changes'] = '문서와 미디어 파일 모두';
$lang['qb_bold'] = '굵은 글씨';
$lang['qb_italic'] = '기울인 글씨';
$lang['qb_underl'] = '밑줄 그어진 글씨';
@@ -246,14 +246,14 @@ $lang['img_keywords'] = '키워드';
$lang['img_width'] = '너비';
$lang['img_height'] = '높이';
$lang['img_manager'] = '미디어 관리자에서 보기';
-$lang['subscr_subscribe_success'] = '%s을(를) %s 구독 목록에 추가하였습니다';
-$lang['subscr_subscribe_error'] = '%s을(를) %s 구독 목록에 추가하는데 실패했습니다';
-$lang['subscr_subscribe_noaddress'] = '등록된 주소가 없기 때문에 구독 목록에 등록되지 않았습니다';
-$lang['subscr_unsubscribe_success'] = '%s을(를) %s 구독 목록에서 삭제하였습니다';
-$lang['subscr_unsubscribe_error'] = '%s을(를) %s 구독 목록에서 삭제하는데 실패했습니다';
-$lang['subscr_already_subscribed'] = '%s은(는) 이미 %s에 구독되고 있습니다';
-$lang['subscr_not_subscribed'] = '%s은(는) 이미 %s에 구독되어 있지 않습니다';
-$lang['subscr_m_not_subscribed'] = '현재의 문서나 이름공간에 구독 등록이 되어 있지 않습니다.';
+$lang['subscr_subscribe_success'] = '%s 사용자가 %s 구독 목록에 추가하였습니다';
+$lang['subscr_subscribe_error'] = '%s 사용자가 %s 구독 목록에 추가하는데 실패했습니다';
+$lang['subscr_subscribe_noaddress'] = '로그인으로 연결된 주소가 없기 때문에 구독 목록에 추가할 수 없습니다';
+$lang['subscr_unsubscribe_success'] = '%s 사용자가 %s 구독 목록에서 삭제하였습니다';
+$lang['subscr_unsubscribe_error'] = '%s 사용자가 %s 구독 목록에서 삭제하는데 실패했습니다';
+$lang['subscr_already_subscribed'] = '%s 사용자가 이미 %s에 구독하고 있습니다';
+$lang['subscr_not_subscribed'] = '%s 사용자가 %s에 구독하고 있지 않습니다';
+$lang['subscr_m_not_subscribed'] = '현재의 문서나 이름공간에 구독하고 있지 않습니다.';
$lang['subscr_m_new_header'] = '구독 추가';
$lang['subscr_m_current_header'] = '현재 구독 중인 문서';
$lang['subscr_m_unsubscribe'] = '구독 취소';
@@ -279,7 +279,7 @@ $lang['i_permfail'] = 'DokuWiki는 <code>%s</code>에 쓰기 가능
$lang['i_confexists'] = '<code>%s</code>(은)는 이미 존재합니다';
$lang['i_writeerr'] = '<code>%s</code>(을)를 만들 수 없습니다. 먼저 디렉토리/파일 권한을 확인하고 파일을 수동으로 만드세요.';
$lang['i_badhash'] = 'dokuwiki.php를 인식할 수 없거나 원본 파일이 아닙니다 (해시=<code>%s</code>)';
-$lang['i_badval'] = '<code>%s</code> - 유효하지 않거나 빈 값입니다';
+$lang['i_badval'] = '<code>%s</code> - 올바르지 않거나 빈 값입니다';
$lang['i_success'] = '환경 설정이 성공적으로 끝났습니다. 지금 install.php를 지워도 상관없습니다. <a href="doku.php?id=wiki:welcome">새 DokuWiki</a>로 들어갑니다.';
$lang['i_failure'] = '환경 설정 파일에 쓰는 도중에 오류가 발생했습니다. <a href="doku.php?id=wiki:welcome">새 DokuWiki</a>를 사용하기 전에 수동으로 문제를 해결해야 합니다.';
$lang['i_policy'] = '초기 ACL 정책';
diff --git a/inc/lang/ko/newpage.txt b/inc/lang/ko/newpage.txt
index 87ac969d2..8db34f9cf 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/recent.txt b/inc/lang/ko/recent.txt
index b1dae2463..4dd19640c 100644
--- a/inc/lang/ko/recent.txt
+++ b/inc/lang/ko/recent.txt
@@ -1,3 +1,3 @@
====== 최근 바뀜 ======
-아래의 문서는 최근에 바뀌었습니다. \ No newline at end of file
+다음 문서는 최근에 바뀌었습니다. \ No newline at end of file
diff --git a/inc/lang/ko/registermail.txt b/inc/lang/ko/registermail.txt
index d06f93047..4707dfa13 100644
--- a/inc/lang/ko/registermail.txt
+++ b/inc/lang/ko/registermail.txt
@@ -10,4 +10,4 @@ IP 주소 : @IPADDRESS@
호스트 이름 : @HOSTNAME@
--
-@DOKUWIKIURL@의 DokuWiki가 자동으로 만들어낸 메일입니다.
+@DOKUWIKIURL@의 DokuWiki가 자동으로 만들어낸 메일입니다. \ No newline at end of file
diff --git a/inc/lang/lv/lang.php b/inc/lang/lv/lang.php
index 2027b87ba..4d2b5d23c 100644
--- a/inc/lang/lv/lang.php
+++ b/inc/lang/lv/lang.php
@@ -128,6 +128,7 @@ $lang['js']['restore_confirm'] = 'Tiešām atjaunot šo versiju';
$lang['js']['media_diff'] = 'Skatīt atšķirību';
$lang['js']['media_diff_both'] = 'Blakus';
$lang['js']['media_diff_opacity'] = 'Pārklāti';
+$lang['js']['media_diff_portions'] = 'Pa daļām';
$lang['js']['media_select'] = 'Norādīt failus...';
$lang['js']['media_upload_btn'] = 'Augšuplādēt';
$lang['js']['media_done_btn'] = 'Gatavs';
@@ -283,6 +284,9 @@ $lang['i_pol1'] = 'Publisks Wiki (lasa ikviens, raksta un augšup
$lang['i_pol2'] = 'Slēgts Wiki (raksta, lasa un augšupielādē tikai reģistrēti lietotāji)';
$lang['i_retry'] = 'Atkārtot';
$lang['i_license'] = 'Ar kādu licenci saturs tiks publicēts:';
+$lang['i_license_none'] = 'Nerādīt nekādu licences informāciju';
+$lang['i_pop_field'] = 'Lūdzu palīdziet uzlabot DokuWiki';
+$lang['i_pop_label'] = 'Rezi mēnesī nosūtīt DokuWiki izstrādātājiem anonīmus lietošanas datus.';
$lang['recent_global'] = 'Tu skati izmaiņas nodaļā <b>%s</b>. Ir iespējams <a href="%s">skatīt jaunākos grozījums visā viki</a>. ';
$lang['years'] = 'pirms %d gadiem';
$lang['months'] = 'pirms %d mēnešiem';
diff --git a/inc/lang/nl/lang.php b/inc/lang/nl/lang.php
index f6192a99b..6c416ca74 100644
--- a/inc/lang/nl/lang.php
+++ b/inc/lang/nl/lang.php
@@ -296,6 +296,9 @@ $lang['i_pol1'] = 'Publieke wiki (lezen voor iedereen, schrijven
$lang['i_pol2'] = 'Besloten wiki (lezen, schrijven en uploaden alleen voor geregistreerde gebruikers)';
$lang['i_retry'] = 'Opnieuw';
$lang['i_license'] = 'Kies a.u.b. een licentie die u voor uw inhoud wilt gebruiken:';
+$lang['i_license_none'] = 'Toon geen licentie informatie';
+$lang['i_pop_field'] = 'Help ons om je DokuWiki ervaring te verbeteren';
+$lang['i_pop_label'] = 'Stuur eens per maand geanonimiseerde gebruiksstatistieken naar de Dokuwiki ontwikkelaars';
$lang['recent_global'] = 'Je bekijkt momenteel de wijzigingen binnen de <b>%s</b> namespace. Je kunt ook de <a href="%s">recente wijzigingen van de hele wiki</a> bekijken.';
$lang['years'] = '%d jaar geleden';
$lang['months'] = '%d maand geleden';
diff --git a/inc/lang/nl/password.txt b/inc/lang/nl/password.txt
index 294dcbd1a..5041322db 100644
--- a/inc/lang/nl/password.txt
+++ b/inc/lang/nl/password.txt
@@ -1,6 +1,6 @@
Beste @FULLNAME@!
-Hier is je gebruikersinformatie for @TITLE@ op @DOKUWIKIURL@
+Hier is je gebruikersinformatie voor @TITLE@ op @DOKUWIKIURL@
Gebruikersnaam: @LOGIN@
Wachtwoord : @PASSWORD@
diff --git a/inc/media.php b/inc/media.php
index 2268ad877..e29a47631 100644
--- a/inc/media.php
+++ b/inc/media.php
@@ -1795,6 +1795,9 @@ function media_resize_image($file, $ext, $w, $h=0){
// we wont scale up to infinity
if($w > 2000 || $h > 2000) return $file;
+ // resize necessary? - (w,h) = native dimensions
+ if(($w == $info[0]) && ($h == $info[1])) return $file;
+
//cache
$local = getCacheName($file,'.media.'.$w.'x'.$h.'.'.$ext);
$mtime = @filemtime($local); // 0 if not exists
@@ -1828,6 +1831,13 @@ function media_crop_image($file, $ext, $w, $h=0){
// calculate crop size
$fr = $info[0]/$info[1];
$tr = $w/$h;
+
+ // check if the crop can be handled completely by resize,
+ // i.e. the specified width & height match the aspect ratio of the source image
+ if ($w == round($h*$fr)) {
+ return media_resize_image($file, $ext, $w);
+ }
+
if($tr >= 1){
if($tr > $fr){
$cw = $info[0];
@@ -1865,6 +1875,30 @@ function media_crop_image($file, $ext, $w, $h=0){
}
/**
+ * Calculate a token to be used to verify fetch requests for resized or
+ * cropped images have been internally generated - and prevent external
+ * DDOS attacks via fetch
+ *
+ * @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>
+ */
+function media_get_token($id,$w,$h){
+ // token is only required for modified images
+ if ($w || $h) {
+ $token = auth_cookiesalt().$id;
+ if ($w) $token .= '.'.$w;
+ if ($h) $token .= '.'.$h;
+
+ return substr(md5($token),0,6);
+ }
+
+ return '';
+}
+
+/**
* Download a remote file and return local filename
*
* returns false if download fails. Uses cached file if available and
diff --git a/install.php b/install.php
index 330a47d52..53ef4a175 100644
--- a/install.php
+++ b/install.php
@@ -97,8 +97,8 @@ header('Content-Type: text/html; charset=utf-8');
</head>
<body style="">
<h1 style="float:left">
- <img src="lib/exe/fetch.php?media=wiki:dokuwiki-128.png&amp;w=64"
- style="vertical-align: middle;" alt="" />
+ <img src="lib/exe/fetch.php?media=wiki:dokuwiki-128.png"
+ style="vertical-align: middle;" alt="" height="64" width="64" />
<?php echo $lang['i_installer']?>
</h1>
<div style="float:right; margin: 1em;">
@@ -529,7 +529,7 @@ function check_functions(){
'ob_start opendir parse_ini_file readfile realpath '.
'rename rmdir serialize session_start unlink usleep '.
'preg_replace file_get_contents htmlspecialchars_decode '.
- 'spl_autoload_register stream_select fsockopen');
+ 'spl_autoload_register stream_select fsockopen pack');
if (!function_exists('mb_substr')) {
$funcs[] = 'utf8_encode';
diff --git a/lib/exe/fetch.php b/lib/exe/fetch.php
index a558a3db8..7a2250373 100644
--- a/lib/exe/fetch.php
+++ b/lib/exe/fetch.php
@@ -7,12 +7,17 @@
*/
if(!defined('DOKU_INC')) define('DOKU_INC', dirname(__FILE__).'/../../');
-define('DOKU_DISABLE_GZIP_OUTPUT', 1);
+if (!defined('DOKU_DISABLE_GZIP_OUTPUT')) 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')) {
+require_once(DOKU_INC.'inc/fetch.functions.php');
+
+if (defined('SIMPLE_TEST')) {
+ $INPUT = new Input();
+}
+
+// BEGIN main
$mimetypes = getMimeTypes();
//get input
@@ -32,7 +37,7 @@ if(!defined('SIMPLE_TEST')) {
}
// check for permissions, preconditions and cache external files
- list($STATUS, $STATUSMESSAGE) = checkFileStatus($MEDIA, $FILE, $REV);
+ list($STATUS, $STATUSMESSAGE) = checkFileStatus($MEDIA, $FILE, $REV, $WIDTH, $HEIGHT);
// prepare data for plugin events
$data = array(
@@ -64,6 +69,7 @@ if(!defined('SIMPLE_TEST')) {
// die on errors
if($data['status'] > 203) {
print $data['statusmessage'];
+ if (defined('SIMPLE_TEST')) return;
exit;
}
}
@@ -87,148 +93,6 @@ if(!defined('SIMPLE_TEST')) {
// Do something after the download finished.
$evt->advise_after(); // will not be emitted on 304 or x-sendfile
-}// END DO main
-
-/* ------------------------------------------------------------------------ */
-
-/**
- * Set headers and send the file to the client
- *
- * The $cache parameter influences how long files may be kept in caches, the $public parameter
- * influences if this caching may happen in public proxis or in the browser cache only FS#2734
- *
- * This function will abort the current script when a 304 is sent or file sending is handled
- * through x-sendfile
- *
- * @author Andreas Gohr <andi@splitbrain.org>
- * @author Ben Coburn <btcoburn@silicodon.net>
- * @param string $file local file to send
- * @param string $mime mime type of the file
- * @param bool $dl set to true to force a browser download
- * @param int $cache remaining cache time in seconds (-1 for $conf['cache'], 0 for no-cache)
- * @param bool $public is this a public ressource or a private one?
- */
-function sendFile($file, $mime, $dl, $cache, $public = false) {
- global $conf;
- // send mime headers
- header("Content-Type: $mime");
-
- // calculate cache times
- if($cache == -1) {
- $maxage = max($conf['cachetime'], 3600); // cachetime or one hour
- $expires = time() + $maxage;
- } else if($cache > 0) {
- $maxage = $cache; // given time
- $expires = time() + $maxage;
- } else { // $cache == 0
- $maxage = 0;
- $expires = 0; // 1970-01-01
- }
-
- // smart http caching headers
- if($maxage) {
- if($public) {
- // cache publically
- header('Expires: '.gmdate("D, d M Y H:i:s", $expires).' GMT');
- header('Cache-Control: public, proxy-revalidate, no-transform, max-age='.$maxage);
- header('Pragma: public');
- } else {
- // cache in browser
- header('Expires: '.gmdate("D, d M Y H:i:s", $expires).' GMT');
- header('Cache-Control: private, no-transform, max-age='.$maxage);
- header('Pragma: no-cache');
- }
- } else {
- // no cache at all
- header('Expires: Thu, 01 Jan 1970 00:00:00 GMT');
- header('Cache-Control: no-cache, no-transform');
- header('Pragma: no-cache');
- }
-
- //send important headers first, script stops here if '304 Not Modified' response
- $fmtime = @filemtime($file);
- 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?";
- }
-}
-
-/**
- * Check for media for preconditions and return correct status code
- *
- * READ: MEDIA, MIME, EXT, CACHE
- * WRITE: MEDIA, FILE, array( STATUS, STATUSMESSAGE )
- *
- * @author Gerry Weissbach <gerry.w@gammaproduction.de>
- * @param $media reference to the media id
- * @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');
- }
-
- //check permissions (namespace only)
- if(auth_quickaclcheck(getNS($media).':X') < AUTH_READ) {
- return array(403, 'Forbidden');
- }
- $file = mediaFN($media, $rev);
- }
-
- //check file existance
- if(!@file_exists($file)) {
- return array(404, 'Not Found');
- }
-
- return array(200, null);
-}
-
-/**
- * Returns the wanted cachetime in seconds
- *
- * Resolves named constants
- *
- * @author Andreas Gohr <andi@splitbrain.org>
- */
-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
-}
+// END DO main
//Setup VIM: ex: et ts=2 :
diff --git a/lib/exe/indexer.php b/lib/exe/indexer.php
index 27576f76d..57bee8925 100644
--- a/lib/exe/indexer.php
+++ b/lib/exe/indexer.php
@@ -16,15 +16,16 @@ if(!defined('NL')) define('NL',"\n");
// check if user abort worked, if yes send output early
$defer = !@ignore_user_abort() || $conf['broken_iua'];
-if(!$defer){
+$output = $INPUT->has('debug') && $conf['allowdebug'];
+if(!$defer && !$output){
sendGIF(); // send gif
}
$ID = cleanID($INPUT->str('id'));
// Catch any possible output (e.g. errors)
-$output = $INPUT->has('debug') && $conf['allowdebug'];
if(!$output) ob_start();
+else header('Content-Type: text/plain');
// run one of the jobs
$tmp = array(); // No event data
@@ -192,11 +193,6 @@ function sendDigest() {
* @author Harry Fuecks <fuecks@gmail.com>
*/
function sendGIF(){
- global $INPUT;
- if($INPUT->has('debug')){
- header('Content-Type: text/plain');
- return;
- }
$img = base64_decode('R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAEALAAAAAABAAEAAAIBTAA7');
header('Content-Type: image/gif');
header('Content-Length: '.strlen($img));
diff --git a/lib/plugins/acl/lang/de/lang.php b/lib/plugins/acl/lang/de/lang.php
index eb23636c4..e2ac98cd7 100644
--- a/lib/plugins/acl/lang/de/lang.php
+++ b/lib/plugins/acl/lang/de/lang.php
@@ -21,6 +21,7 @@
* @author Christian Wichmann <nospam@zone0.de>
* @author Paul Lachewsky <kaeptn.haddock@gmail.com>
* @author Pierre Corell <info@joomla-praxis.de>
+ * @author Mateng Schimmerlos <mateng@firemail.de>)
*/
$lang['admin_acl'] = 'Zugangsverwaltung';
$lang['acl_group'] = 'Gruppe';
diff --git a/lib/plugins/authad/lang/de-informal/settings.php b/lib/plugins/authad/lang/de-informal/settings.php
index da33a2e98..f6ba679ff 100644
--- a/lib/plugins/authad/lang/de-informal/settings.php
+++ b/lib/plugins/authad/lang/de-informal/settings.php
@@ -3,11 +3,12 @@
* German (informal) language file
*
* @author Frank Loizzi <contact@software.bacal.de>
+ * @author Matthias Schulte <dokuwiki@lupo49.de>
*/
-$lang['account_suffix'] = 'Ihre Kontoendung. Z.B. <code>@my.domain.org</code>';
-$lang['base_dn'] = 'Ihre base DN. Z.B. <code>DC=my,DC=domain,DC=org</code>';
-$lang['domain_controllers'] = 'Eine kommaseparierte Liste von Domänenkontrollern. Z.B. <code>srv1.domain.org,srv2.domain.org</code>';
-$lang['ad_username'] = 'Ein priviligierter Active Directory Benutzer mit Zugriff zu allen anderen Benutzerdaten. Optional aber benötigt für einige Aktionen wie das Senden von Mitglieder E-Mails.';
+$lang['account_suffix'] = 'Dein Account-Suffix. Z.B. <code>@my.domain.org</code>';
+$lang['base_dn'] = 'Dein Base-DN. Z.B. <code>DC=my,DC=domain,DC=org</code>';
+$lang['domain_controllers'] = 'Eine Komma-separierte Liste von Domänen-Controllern. Z.B. <code>srv1.domain.org,srv2.domain.org</code>';
+$lang['ad_username'] = 'Ein privilegierter Active Directory-Benutzer mit Zugriff zu allen anderen Benutzerdaten. Optional, aber wird benötigt für Aktionen wie z. B. dass Senden von Benachrichtigungs-Mails.';
$lang['ad_password'] = 'Das Passwort des obigen Benutzers.';
$lang['sso'] = 'Soll Single-Sign-On via Kerberos oder NTLM benutzt werden?';
$lang['real_primarygroup'] = 'Soll die echte primäre Gruppe aufgelöst werden anstelle der Annahme "Domain Users" (langsamer)';
@@ -15,4 +16,4 @@ $lang['use_ssl'] = 'SSL-Verbindung benutzen? Falls ja, TLS unterha
$lang['use_tls'] = 'TLS-Verbindung benutzen? Falls ja, SSL oberhalb nicht aktivieren.';
$lang['debug'] = 'Zusätzliche Debug-Informationen bei Fehlern anzeigen?';
$lang['expirywarn'] = 'Tage im Voraus um Benutzer über ablaufende Passwörter zu informieren. 0 zum Ausschalten.';
-$lang['additional'] = 'Eine kommaseparierte Liste von zusätzlichen AD Attributen von den Benutzdedaten abrufen. Wird von einigen Plugins benutzt.';
+$lang['additional'] = 'Eine Komma-separierte Liste von zusätzlichen AD-Attributen, die von den Benutzerobjekten abgefragt werden. Wird von einigen Plugins benutzt.';
diff --git a/lib/plugins/authad/lang/de/settings.php b/lib/plugins/authad/lang/de/settings.php
new file mode 100644
index 000000000..a1a99b6d6
--- /dev/null
+++ b/lib/plugins/authad/lang/de/settings.php
@@ -0,0 +1,6 @@
+<?php
+/**
+ * German language file
+ *
+ * @author Mateng Schimmerlos <mateng@firemail.de>)
+ */
diff --git a/lib/plugins/authad/lang/fi/settings.php b/lib/plugins/authad/lang/fi/settings.php
new file mode 100644
index 000000000..d3aa13e07
--- /dev/null
+++ b/lib/plugins/authad/lang/fi/settings.php
@@ -0,0 +1,6 @@
+<?php
+/**
+ * Finnish language file
+ *
+ * @author Otto Vainio <otto@valjakko.net>
+ */
diff --git a/lib/plugins/authad/lang/ko/settings.php b/lib/plugins/authad/lang/ko/settings.php
index 31071e9a3..6134bd657 100644
--- a/lib/plugins/authad/lang/ko/settings.php
+++ b/lib/plugins/authad/lang/ko/settings.php
@@ -6,9 +6,13 @@
*/
$lang['account_suffix'] = '계정 접미어. 예를 들어 <code>@my.domain.org</code>';
$lang['base_dn'] = '기본 DN. 예를 들어 <code>DC=my,DC=domain,DC=org</code>';
-$lang['domain_controllers'] = '도메인 컨트롤러의 쉼표로 구분한 목록입니다. 예를 들어 <code>srv1.domain.org,srv2.domain.org</code>';
-$lang['ad_password'] = '위 사용자의 비밀번호입니다.';
+$lang['domain_controllers'] = '도메인 컨트롤러의 쉼표로 구분한 목록. 예를 들어 <code>srv1.domain.org,srv2.domain.org</code>';
+$lang['ad_username'] = '다른 모든 사용자의 데이터에 접근할 수 있는 권한이 있는 Active Directory 사용자. 선택적이지만 구독 메일을 보내는 등의 특정 작업에 필요합니다.';
+$lang['ad_password'] = '위 사용자의 비밀번호.';
$lang['sso'] = 'Kerberos나 NTLM을 통해 Single-Sign-On을 사용해야 합니까?';
+$lang['real_primarygroup'] = '실제 기본 그룹은 "도메인 사용자"를 가정하는 대신 해결될 것입니다 (느림)';
$lang['use_ssl'] = 'SSL 연결을 사용합니까? 사용한다면 아래 TLS을 활성화하지 마세요.';
$lang['use_tls'] = 'TLS 연결을 사용합니까? 사용한다면 위 SSL을 활성화하지 마세요.';
$lang['debug'] = '오류에 대한 추가적인 디버그 정보를 보이겠습니까?';
+$lang['expirywarn'] = '미리 비밀번호 만료를 사용자에게 경고할 날짜. 0일 경우 비활성화합니다.';
+$lang['additional'] = '사용자 데이터에서 가져올 추가적인 AD 속성의 쉼표로 구분한 목록. 일부 플러그인이 사용합니다.';
diff --git a/lib/plugins/authad/lang/lv/settings.php b/lib/plugins/authad/lang/lv/settings.php
new file mode 100644
index 000000000..ced5dabf8
--- /dev/null
+++ b/lib/plugins/authad/lang/lv/settings.php
@@ -0,0 +1,6 @@
+<?php
+/**
+ * Latvian, Lettish language file
+ *
+ * @author Aivars Miška <allefm@gmail.com>
+ */
diff --git a/lib/plugins/authad/lang/nl/settings.php b/lib/plugins/authad/lang/nl/settings.php
new file mode 100644
index 000000000..e73cac75d
--- /dev/null
+++ b/lib/plugins/authad/lang/nl/settings.php
@@ -0,0 +1,17 @@
+<?php
+/**
+ * Dutch language file
+ *
+ */
+$lang['account_suffix'] = 'Je account domeinnaam. Bijv <code>@mijn.domein.org</code>';
+$lang['base_dn'] = 'Je basis DN. Bijv. <code>DC=mijn,DC=domein,DC=org</code>';
+$lang['domain_controllers'] = 'Eeen commagesepareerde lijst van domeinservers. Bijv. <code>srv1.domein.org,srv2.domein.org</code>';
+$lang['ad_username'] = 'Een geprivilegeerde Active Directory gebruiker die bij alle gebruikersgegevens kan komen. Optioneel, maar kan nodig zijn voor bepaalde acties, zoals het versturen van abonnementsmailtjes.';
+$lang['ad_password'] = 'Het wachtwoord van bovernvermelde gebruiker.';
+$lang['sso'] = 'Wordt voor Single-Sign-on Kerberos of NTLM gebruikt?';
+$lang['real_primarygroup'] = 'Moet de echte primaire groep worden opgezocht in plaats van het aannemen van "Domeingebruikers" (langzamer)';
+$lang['use_ssl'] = 'SSL verbinding gebruiken? Zo ja, gebruik dan TLS hieronder niet.';
+$lang['use_tls'] = 'TLS verbinding gebruiken? Zo ja, activeer dan niet de SSL verbinding hierboven.';
+$lang['debug'] = 'Aanvullende debug informatie tonen bij fouten?';
+$lang['expirywarn'] = 'Waarschuwingstermijn voor vervallen wachtwoord. 0 om te deactiveren.';
+$lang['additional'] = 'Commagesepareerde lijst van aanvullend uit AD op te halen attributen. Gebruikt door sommige plugins.';
diff --git a/lib/plugins/authldap/auth.php b/lib/plugins/authldap/auth.php
index 6e7bde1f0..b49aa4792 100644
--- a/lib/plugins/authldap/auth.php
+++ b/lib/plugins/authldap/auth.php
@@ -465,7 +465,13 @@ class auth_plugin_authldap extends DokuWiki_Auth_Plugin {
if(defined('LDAP_OPT_NETWORK_TIMEOUT')) {
ldap_set_option($this->con, LDAP_OPT_NETWORK_TIMEOUT, 1);
}
- $bound = @ldap_bind($this->con);
+
+ if($this->getConf('binddn') && $this->getConf('bindpw')) {
+ $bound = @ldap_bind($this->con, $this->getConf('binddn'), $this->getConf('bindpw'));
+ $this->bound = 2;
+ } else {
+ $bound = @ldap_bind($this->con);
+ }
if($bound) {
break;
}
diff --git a/lib/plugins/authldap/lang/de-informal/settings.php b/lib/plugins/authldap/lang/de-informal/settings.php
index e7b3d2673..fa0fc1521 100644
--- a/lib/plugins/authldap/lang/de-informal/settings.php
+++ b/lib/plugins/authldap/lang/de-informal/settings.php
@@ -1,6 +1,22 @@
<?php
/**
- * German (informal) language file
+ * German informal language file
*
- * @author Frank Loizzi <contact@software.bacal.de>
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * @author Matthias Schulte <dokuwiki@lupo49.de>
*/
+$lang['server'] = 'Adresse zum LDAP-Server. Entweder als Hostname (<code>localhost</code>) oder als FQDN (<code>ldap://server.tld:389</code>).';
+$lang['port'] = 'Port des LDAP-Servers, falls kein Port angegeben wurde.';
+$lang['usertree'] = 'Zweig, in dem die die Benutzeraccounts gespeichert sind. Zum Beispiel: <code>ou=People, dc=server, dc=tld</code>.';
+$lang['grouptree'] = 'Zweig, in dem die Benutzergruppen gespeichert sind. Zum Beispiel: <code>ou=Group, dc=server, dc=tld</code>.';
+$lang['userfilter'] = 'LDAP-Filter, um die Benutzeraccounts zu suchen. Zum Beispiel: <code>(&amp;(uid=%{user})(objectClass=posixAccount))</code>.';
+$lang['groupfilter'] = 'LDAP-Filter, um die Benutzergruppen zu suchen. Zum Beispiel: <code>(&amp;(objectClass=posixGroup)(|(gidNumber=%{gid})(memberUID=%{user})))</code>.';
+$lang['version'] = 'Zu verwendende Protokollversion von LDAP.';
+$lang['starttls'] = 'Verbindung über TLS aufbauen?';
+$lang['referrals'] = 'Weiterverfolgen von LDAP-Referrals (Verweise)?';
+$lang['binddn'] = 'DN eines optionalen Benutzers, wenn der anonyme Zugriff nicht ausreichend ist. Zum Beispiel: <code>cn=admin, dc=my, dc=home</code>.';
+$lang['bindpw'] = 'Passwort des angegebenen Benutzers.';
+$lang['userscope'] = 'Die Suchweite nach Benutzeraccounts.';
+$lang['groupscope'] = 'Die Suchweite nach Benutzergruppen.';
+$lang['groupkey'] = 'Gruppieren der Benutzeraccounts anhand eines beliebigen Benutzerattributes z. B. Telefonnummer oder Abteilung, anstelle der Standard-Gruppen).';
+$lang['debug'] = 'Debug-Informationen beim Auftreten von Fehlern anzeigen?';
diff --git a/lib/plugins/authldap/lang/de/settings.php b/lib/plugins/authldap/lang/de/settings.php
new file mode 100644
index 000000000..a1a99b6d6
--- /dev/null
+++ b/lib/plugins/authldap/lang/de/settings.php
@@ -0,0 +1,6 @@
+<?php
+/**
+ * German language file
+ *
+ * @author Mateng Schimmerlos <mateng@firemail.de>)
+ */
diff --git a/lib/plugins/authldap/lang/fi/settings.php b/lib/plugins/authldap/lang/fi/settings.php
new file mode 100644
index 000000000..d3aa13e07
--- /dev/null
+++ b/lib/plugins/authldap/lang/fi/settings.php
@@ -0,0 +1,6 @@
+<?php
+/**
+ * Finnish language file
+ *
+ * @author Otto Vainio <otto@valjakko.net>
+ */
diff --git a/lib/plugins/authldap/lang/ko/settings.php b/lib/plugins/authldap/lang/ko/settings.php
index 6c80414d3..7f7efe8d0 100644
--- a/lib/plugins/authldap/lang/ko/settings.php
+++ b/lib/plugins/authldap/lang/ko/settings.php
@@ -6,5 +6,16 @@
*/
$lang['server'] = 'LDAP 서버. 호스트 이름(<code>localhost</code>)이나 전체 자격 URL(<code>ldap://server.tld:389</code>) 중 하나';
$lang['port'] = '위에 주어진 전체 URL이 없을 때의 LDAP 서버 포트';
+$lang['usertree'] = '사용자 계정을 찾을 장소. 예를 들어 <code>ou=People, dc=server, dc=tld</code>';
+$lang['grouptree'] = '사용자 그룹을 찾을 장소. 예를 들어 <code>ou=Group, dc=server, dc=tld</code>';
+$lang['userfilter'] = '사용자 계정을 찾을 LDAP 필터. 예를 들어 <code>(&amp;(uid=%{user})(objectClass=posixAccount))</code>';
+$lang['groupfilter'] = '그룹을 찾을 LDAP 필터. 예를 들어 <code>(&amp;(objectClass=posixGroup)(|(gidNumber=%{gid})(memberUID=%{user})))</code>';
+$lang['version'] = '사용할 프로토콜 버전. <code>3</code>으로 설정해야 할 수도 있습니다';
$lang['starttls'] = 'TLS 연결을 사용하겠습니까?';
+$lang['referrals'] = '참고(referrals)를 허용하겠습니까? ';
+$lang['binddn'] = '익명 바인드가 충분하지 않으면 선택적인 바인드 사용자의 DN. 예를 들어 <code>cn=admin, dc=my, dc=home</code>';
+$lang['bindpw'] = '위 사용자의 비밀번호';
+$lang['userscope'] = '사용자 찾기에 대한 찾기 범위 제한';
+$lang['groupscope'] = '그룹 찾기에 대한 찾기 범위 제한';
+$lang['groupkey'] = '(표준 AD 그룹 대신) 사용자 속성에서 그룹 구성원. 예를 들어 부서나 전화에서 그룹';
$lang['debug'] = '오류에 대한 추가적인 디버그 정보를 보이기';
diff --git a/lib/plugins/authldap/lang/lv/settings.php b/lib/plugins/authldap/lang/lv/settings.php
new file mode 100644
index 000000000..ced5dabf8
--- /dev/null
+++ b/lib/plugins/authldap/lang/lv/settings.php
@@ -0,0 +1,6 @@
+<?php
+/**
+ * Latvian, Lettish language file
+ *
+ * @author Aivars Miška <allefm@gmail.com>
+ */
diff --git a/lib/plugins/authldap/lang/nl/settings.php b/lib/plugins/authldap/lang/nl/settings.php
new file mode 100644
index 000000000..274c3b7fc
--- /dev/null
+++ b/lib/plugins/authldap/lang/nl/settings.php
@@ -0,0 +1,20 @@
+<?php
+/**
+ * Dutch language file
+ *
+ */
+$lang['server'] = 'Je LDAP server. Ofwel servernaam (<code>localhost</code>) of volledige URL (<code>ldap://server.tld:389</code>)';
+$lang['port'] = 'LDAP server poort als hiervoor geen volledige URL is opgegeven';
+$lang['usertree'] = 'Locatie van de gebruikersaccounts. Bijv. <code>ou=Personen,dc=server,dc=tld</code>';
+$lang['grouptree'] = 'Locatie van de gebruikersgroepen. Bijv. <code>ou=Group,dc=server,dc=tld</code>';
+$lang['userfilter'] = 'LDAP gebruikersfilter. Bijv. <code>(&amp;(uid=%{user})(objectClass=posixAccount))</code>';
+$lang['groupfilter'] = 'LDAP groepsfilter. Bijv. <code>(&amp;(objectClass=posixGroup)(|(gidNumber=%{gid})(memberUID=%{user})))</code>';
+$lang['version'] = 'Te gebruiken protocolversie. Je zou het moeten kunnen instellen op <code>3</code>';
+$lang['starttls'] = 'Gebruiken TLS verbindingen';
+$lang['referrals'] = 'Moeten verwijzingen worden gevolg';
+$lang['binddn'] = 'DN van een optionele bind gebruiker als anonieme bind niet genoeg is. Bijv. <code>cn=beheer, dc=mijn, dc=thuis</code>';
+$lang['bindpw'] = 'Wachtwoord van bovenstaande gebruiker';
+$lang['userscope'] = 'Beperken scope van zoekfuncties voor gebruikers';
+$lang['groupscope'] = 'Beperken scope van zoekfuncties voor groepen';
+$lang['groupkey'] = 'Groepslidmaatschap van enig gebruikersattribuut (in plaats van standaard AD groepen), bijv. groep van afdeling of telefoonnummer';
+$lang['debug'] = 'Tonen van aanvullende debuginformatie bij fouten';
diff --git a/lib/plugins/authldap/lang/zh/settings.php b/lib/plugins/authldap/lang/zh/settings.php
index 2dfbeb464..3f38deae9 100644
--- a/lib/plugins/authldap/lang/zh/settings.php
+++ b/lib/plugins/authldap/lang/zh/settings.php
@@ -13,7 +13,7 @@ $lang['groupfilter'] = '用于搜索组的 LDAP 筛选器。例如 <co
$lang['version'] = '使用的协议版本。您或许需要设置为 <code>3</code>';
$lang['starttls'] = '使用 TLS 连接?';
$lang['referrals'] = '是否允许引用 (referrals)?';
-$lang['binddn'] = '一个可选的绑定用户的 DN (如果匿名绑定不满足要求)。例如 Eg. <code>cn=admin, dc=my, dc=home</code>';
+$lang['binddn'] = '一个可选的绑定用户的 DN (如果匿名绑定不满足要求)。例如 <code>cn=admin, dc=my, dc=home</code>';
$lang['bindpw'] = '上述用户的密码';
$lang['userscope'] = '限制用户搜索的范围';
$lang['groupscope'] = '限制组搜索的范围';
diff --git a/lib/plugins/authmysql/auth.php b/lib/plugins/authmysql/auth.php
index 7d303726b..5f6e86c71 100644
--- a/lib/plugins/authmysql/auth.php
+++ b/lib/plugins/authmysql/auth.php
@@ -97,6 +97,15 @@ class auth_plugin_authmysql extends DokuWiki_Auth_Plugin {
), false
);
$this->cando['getUserCount'] = $this->_chkcnf(array('getUsers'), false);
+
+ if($this->getConf('debug') >= 2) {
+ $candoDebug = '';
+ foreach($this->cando as $cd => $value) {
+ if($value) { $value = 'yes'; } else { $value = 'no'; }
+ $candoDebug .= $cd . ": " . $value . " | ";
+ }
+ $this->_debug("authmysql cando: " . $candoDebug, 0, __LINE__, __FILE__);
+ }
}
/**
@@ -816,6 +825,10 @@ class auth_plugin_authmysql extends DokuWiki_Auth_Plugin {
* @return int|bool insert id or 0, false on error
*/
protected function _modifyDB($query) {
+ if($this->getConf('debug') >= 2) {
+ msg('MySQL query: '.hsc($query), 0, __LINE__, __FILE__);
+ }
+
if($this->dbcon) {
$result = @mysql_query($query, $this->dbcon);
if($result) {
@@ -848,11 +861,12 @@ class auth_plugin_authmysql extends DokuWiki_Auth_Plugin {
*/
protected function _lockTables($mode) {
if($this->dbcon) {
- if(is_array($this->getConf('TablesToLock'))) {
+ $ttl = $this->getConf('TablesToLock');
+ if(is_array($ttl) && !empty($ttl)) {
if($mode == "READ" || $mode == "WRITE") {
$sql = "LOCK TABLES ";
$cnt = 0;
- foreach($this->getConf('TablesToLock') as $table) {
+ foreach($ttl as $table) {
if($cnt++ != 0) $sql .= ", ";
$sql .= "$table $mode";
}
diff --git a/lib/plugins/authmysql/lang/de-informal/settings.php b/lib/plugins/authmysql/lang/de-informal/settings.php
index e7b3d2673..0c9bc85fe 100644
--- a/lib/plugins/authmysql/lang/de-informal/settings.php
+++ b/lib/plugins/authmysql/lang/de-informal/settings.php
@@ -1,6 +1,42 @@
<?php
/**
- * German (informal) language file
+ * German informal language file
*
- * @author Frank Loizzi <contact@software.bacal.de>
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * @author Matthias Schulte <dokuwiki@lupo49.de>
*/
+$lang['server'] = 'MySQL-Server';
+$lang['user'] = 'Benutzername für den Zugriff auf den MySQL-Server.';
+$lang['password'] = 'Passwort des angegebenen Benutzers.';
+$lang['database'] = 'Zu verwendende Datenbank.';
+$lang['charset'] = 'Verwendetes Character-Set in der Datenbank.';
+$lang['debug'] = 'Debug-Informationen anzeigen?';
+$lang['forwardClearPass'] = 'Passwort der DokuWiki-Benutzer im Klartext an die Datenbank übergeben? (Im Normalfall wird die passcrypt-Option angewendet.)';
+$lang['TablesToLock'] = 'Eine Komma-separierte Liste von Tabellen, die vor Schreiboperationen gesperrt werden müssen.';
+$lang['checkPass'] = 'SQL-Kommando zum Überprüfen von Passwörtern.';
+$lang['getUserInfo'] = 'SQL-Kommando um Benutzerinformationen auszulesen.';
+$lang['getGroups'] = 'SQL-Kommando um Gruppen eines Benutzers auszulesen.';
+$lang['getUsers'] = 'SQL-Kommando um alle Benutzer auszulesen.';
+$lang['FilterLogin'] = 'SQL-Bedingung um Benutzer anhand ihres Anmeldenamens zu filtern.';
+$lang['FilterName'] = 'SQL-Bedingung um Benutzer anhand ihres Namens zu filtern.';
+$lang['FilterEmail'] = 'SQL-Bedingung um Benutzer anhand ihrer E-Mail-Adresse zu filtern.';
+$lang['FilterGroup'] = 'SQL-Bedingung um Benutzer anhand ihrer Gruppenzugehörigkeit zu filtern.';
+$lang['SortOrder'] = 'SQL-Bedingung um anhand der die Benutzerliste sortiert wird.';
+$lang['addUser'] = 'SQL-Kommando um einen neuen Benutzer anzulegen.';
+$lang['addGroup'] = 'SQL-Kommando um eine neue Gruppe anzulegen.';
+$lang['addUserGroup'] = 'SQL-Kommando um einen Benutzer zu einer Gruppe hinzuzufügen.';
+$lang['delGroup'] = 'SQL-Kommando um eine Gruppe zu löschen.';
+$lang['getUserID'] = 'SQL-Kommando um den Primärschlüssel des Benutzers auszulesen.';
+$lang['delUser'] = 'SQL-Kommando um einen Benutzer zu löschen.';
+$lang['delUserRefs'] = 'SQL-Kommando um einen Benutzer aus allen Gruppen zu entfernen.';
+$lang['updateUser'] = 'SQL-Kommando um das Profil eines Benutzers zu aktualisieren.';
+$lang['UpdateLogin'] = 'SQL-Bedingung um den Anmeldenamen eines Benutzers zu ändern.';
+$lang['UpdatePass'] = 'SQL-Bedingung um das Passwort eines Benutzers zu ändern.';
+$lang['UpdateEmail'] = 'SQL-Bedingung um die E-Mail-Adresse eines Benutzers zu ändern.';
+$lang['UpdateName'] = 'SQL-Bedingung um den Namen eines Benutzers zu ändern.';
+$lang['UpdateTarget'] = 'SQL-Bedingung zur eindeutigen Identifikation des Benutzers.';
+$lang['delUserGroup'] = 'SQL-Kommando um einen Benutzer aus einer angegeben Gruppe zu entfernen.';
+$lang['getGroupID'] = 'SQL-Kommando um den Primärschlüssel einer Gruppe auszulesen.';
+$lang['debug_o_0'] = 'Keine.';
+$lang['debug_o_1'] = 'Nur Fehler.';
+$lang['debug_o_2'] = 'Alle SQL-Abfragen.';
diff --git a/lib/plugins/authmysql/lang/de/settings.php b/lib/plugins/authmysql/lang/de/settings.php
new file mode 100644
index 000000000..a1a99b6d6
--- /dev/null
+++ b/lib/plugins/authmysql/lang/de/settings.php
@@ -0,0 +1,6 @@
+<?php
+/**
+ * German language file
+ *
+ * @author Mateng Schimmerlos <mateng@firemail.de>)
+ */
diff --git a/lib/plugins/authmysql/lang/fi/settings.php b/lib/plugins/authmysql/lang/fi/settings.php
new file mode 100644
index 000000000..d3aa13e07
--- /dev/null
+++ b/lib/plugins/authmysql/lang/fi/settings.php
@@ -0,0 +1,6 @@
+<?php
+/**
+ * Finnish language file
+ *
+ * @author Otto Vainio <otto@valjakko.net>
+ */
diff --git a/lib/plugins/authmysql/lang/lv/settings.php b/lib/plugins/authmysql/lang/lv/settings.php
new file mode 100644
index 000000000..ced5dabf8
--- /dev/null
+++ b/lib/plugins/authmysql/lang/lv/settings.php
@@ -0,0 +1,6 @@
+<?php
+/**
+ * Latvian, Lettish language file
+ *
+ * @author Aivars Miška <allefm@gmail.com>
+ */
diff --git a/lib/plugins/authmysql/lang/nl/settings.php b/lib/plugins/authmysql/lang/nl/settings.php
new file mode 100644
index 000000000..dc85b7eee
--- /dev/null
+++ b/lib/plugins/authmysql/lang/nl/settings.php
@@ -0,0 +1,40 @@
+<?php
+/**
+ * Dutch language file
+ *
+ */
+$lang['server'] = 'Je MySQL server';
+$lang['user'] = 'MySql gebruikersnaam';
+$lang['password'] = 'Wachtwoord van bovenstaande gebruiker';
+$lang['database'] = 'Te gebruiken database';
+$lang['charset'] = 'Tekenset voor database';
+$lang['debug'] = 'Tonen aanvullende debuginformatie';
+$lang['forwardClearPass'] = 'Wachtwoorden als leesbare tekst in SQL commando\'s opnemen in plaats van versleutelde tekens';
+$lang['TablesToLock'] = 'Commagesepareerde lijst van tabellen die gelocked moeten worden bij schrijfacties';
+$lang['checkPass'] = 'SQL commando voor verifiëren van wachtwoorden';
+$lang['getUserInfo'] = 'SQL commando voor ophalen gebruikersinformatie';
+$lang['getGroups'] = 'SQL commando voor ophalen groepslidmaatschappen';
+$lang['getUsers'] = 'SQL commando voor tonen alle gebruikers';
+$lang['FilterLogin'] = 'SQL clausule voor filteren gebruikers op inlognaam';
+$lang['FilterName'] = 'SQL clausule voor filteren gebruikers op volledige naam';
+$lang['FilterEmail'] = 'SQL clausule voor filteren gebruikers op e-mailadres';
+$lang['FilterGroup'] = 'SQL clausule voor filteren gebruikers op groepslidmaatschap';
+$lang['SortOrder'] = 'SQL clausule voor sorteren gebruikers';
+$lang['addUser'] = 'SQL commando om een gebruiker toe te voegen';
+$lang['addGroup'] = 'SQL commando om een groep toe te voegen';
+$lang['addUserGroup'] = 'SQL commando om een gebruiker aan een groep toe te voegen';
+$lang['delGroup'] = 'SQL commando om een groep te verwijderen';
+$lang['getUserID'] = 'SQL commando om de de primaire sleutel van een gebruiker op te halen';
+$lang['delUser'] = 'SQL commando om een gebruiker te verwijderen';
+$lang['delUserRefs'] = 'SQL commando om een gebruiker uit alle groepen te verwijderen';
+$lang['updateUser'] = 'SQL commando om een gebruikersprofiel bij te werken';
+$lang['UpdateLogin'] = 'Bijwerkcommando om een inlognaam bij te werken';
+$lang['UpdatePass'] = 'Bijwerkcommando om een wachtwoord bij te werken';
+$lang['UpdateEmail'] = 'Bijwerkcommando om een e-mailadres bij te werken';
+$lang['UpdateName'] = 'Bijwerkcommando om een volledige naam te werken';
+$lang['UpdateTarget'] = 'Beperkingsclausule om gebruiker te identificeren voor bijwerken';
+$lang['delUserGroup'] = 'SQL commando om een gebruiker uit een bepaalde te verwijderen';
+$lang['getGroupID'] = 'SQL commando om de primaire sletel van een bepaalde groep op te halen';
+$lang['debug_o_0'] = 'geen';
+$lang['debug_o_1'] = 'alleen bij fouten';
+$lang['debug_o_2'] = 'alle SQL queries';
diff --git a/lib/plugins/authmysql/lang/pt-br/settings.php b/lib/plugins/authmysql/lang/pt-br/settings.php
index 59976ed65..5febedd13 100644
--- a/lib/plugins/authmysql/lang/pt-br/settings.php
+++ b/lib/plugins/authmysql/lang/pt-br/settings.php
@@ -13,6 +13,29 @@ $lang['debug'] = 'Mostrar informações adicionais de depuraçã
$lang['forwardClearPass'] = 'Passar senhas de usuários como texto puro para comandos SQL abaixo, ao invés de usar opção passcrypt';
$lang['TablesToLock'] = 'Lista separada por vírgulas para tabelas que devem estar travadas em operações de escrita';
$lang['checkPass'] = 'Comandos SQL para verificar senhas';
+$lang['getUserInfo'] = 'Comando SQL para obter informações de usuário';
+$lang['getGroups'] = 'Comando SQL para obter as credenciais de grupo de um usuário';
+$lang['getUsers'] = 'Comando SQL para listar todos os usuários';
+$lang['FilterLogin'] = 'Comando SQL para filtrar usuários pelo login';
+$lang['FilterName'] = 'Cláusula SQL para filtrar usuários por nome completo';
+$lang['FilterEmail'] = 'Cláusula SQL para filtrar usuários por endereço de email';
+$lang['FilterGroup'] = 'Cláusula SQL para filtrar usuários por membros de grupos';
+$lang['SortOrder'] = 'Cláusula SQL para ordenar usuários';
+$lang['addUser'] = 'Comando SQL para adicionar um novo usuário';
+$lang['addGroup'] = 'Comando SQL para adicionar um novo grupo';
+$lang['addUserGroup'] = 'Comando SQL para adicionar um usuário a um determinado grupo';
+$lang['delGroup'] = 'Comando SQL para remover um grupo';
+$lang['getUserID'] = 'Comando SQL para obter a chave primária de um usuário';
+$lang['delUser'] = 'Comando SQL para apagar um usuário';
+$lang['delUserRefs'] = 'Comando SQL para apagar um usuário de todos os grupos';
+$lang['updateUser'] = 'Comando SQL para atualizar perfil de usuário';
+$lang['UpdateLogin'] = 'Comando SQL para atualizar o login de um usuário';
+$lang['UpdatePass'] = 'Cláusula de atualização para atualizar senha de usuário';
+$lang['UpdateEmail'] = 'Cláusula de atualização para atualizar email do usuário';
+$lang['UpdateName'] = 'Cláusula de atualização para atualizar nome completo do usuário';
+$lang['UpdateTarget'] = 'Limitar cláusula para identificar usuário quando estiver atualizando';
+$lang['delUserGroup'] = 'Comando SQL para remover um usuário de um grupo determinado';
+$lang['getGroupID'] = 'Comando SQL para obter a chave primária de um grupo determinado';
$lang['debug_o_0'] = 'nenhum';
$lang['debug_o_1'] = 'apenas em erros';
$lang['debug_o_2'] = 'todas as queries SQL';
diff --git a/lib/plugins/authpgsql/lang/de-informal/settings.php b/lib/plugins/authpgsql/lang/de-informal/settings.php
index e7b3d2673..4c80245d6 100644
--- a/lib/plugins/authpgsql/lang/de-informal/settings.php
+++ b/lib/plugins/authpgsql/lang/de-informal/settings.php
@@ -1,6 +1,38 @@
<?php
/**
- * German (informal) language file
+ * German language file
*
- * @author Frank Loizzi <contact@software.bacal.de>
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * @author Matthias Schulte <dokuwiki@lupo49.de>
*/
+$lang['server'] = 'PostgreSQL-Server';
+$lang['port'] = 'Port des PostgreSQL-Servers.';
+$lang['user'] = 'Benutzername für den Zugriff auf den PostgreSQL-Server.';
+$lang['password'] = 'Passwort des angegebenen Benutzers.';
+$lang['database'] = 'Zu verwendende Datenbank.';
+$lang['debug'] = 'Debug-Informationen anzeigen?';
+$lang['forwardClearPass'] = 'Passwort der DokuWiki-Benutzer im Klartext an die Datenbank übergeben? (Im Normalfall wird die passcrypt-Option angewendet.)';
+$lang['checkPass'] = 'SQL-Kommando zum Überprüfen von Passwörtern.';
+$lang['getUserInfo'] = 'SQL-Kommando um Benutzerinformationen auszulesen.';
+$lang['getGroups'] = 'SQL-Kommando um Gruppen eines Benutzers auszulesen.';
+$lang['getUsers'] = 'SQL-Kommando um alle Benutzer auszulesen.';
+$lang['FilterLogin'] = 'SQL-Bedingung um Benutzer anhand ihres Anmeldenamens zu filtern.';
+$lang['FilterName'] = 'SQL-Bedingung um Benutzer anhand ihres Namens zu filtern.';
+$lang['FilterEmail'] = 'SQL-Bedingung um Benutzer anhand ihrer E-Mail-Adresse zu filtern.';
+$lang['FilterGroup'] = 'SQL-Bedingung um Benutzer anhand ihrer Gruppenzugehörigkeit zu filtern.';
+$lang['SortOrder'] = 'SQL-Bedingung um anhand der die Benutzerliste sortiert wird.';
+$lang['addUser'] = 'SQL-Kommando um einen neuen Benutzer anzulegen.';
+$lang['addGroup'] = 'SQL-Kommando um eine neue Gruppe anzulegen.';
+$lang['addUserGroup'] = 'SQL-Kommando um einen Benutzer zu einer Gruppe hinzuzufügen.';
+$lang['delGroup'] = 'SQL-Kommando um eine Gruppe zu löschen.';
+$lang['getUserID'] = 'SQL-Kommando um den Primärschlüssel des Benutzers auszulesen.';
+$lang['delUser'] = 'SQL-Kommando um einen Benutzer zu löschen.';
+$lang['delUserRefs'] = 'SQL-Kommando um einen Benutzer aus allen Gruppen zu entfernen.';
+$lang['updateUser'] = 'SQL-Kommando um das Profil eines Benutzers zu aktualisieren.';
+$lang['UpdateLogin'] = 'SQL-Bedingung um den Anmeldenamen eines Benutzers zu ändern.';
+$lang['UpdatePass'] = 'SQL-Bedingung um das Passwort eines Benutzers zu ändern.';
+$lang['UpdateEmail'] = 'SQL-Bedingung um die E-Mail-Adresse eines Benutzers zu ändern.';
+$lang['UpdateName'] = 'SQL-Bedingung um den Namen eines Benutzers zu ändern.';
+$lang['UpdateTarget'] = 'SQL-Bedingung zur eindeutigen Identifikation des Benutzers.';
+$lang['delUserGroup'] = 'SQL-Kommando um einen Benutzer aus einer angegeben Gruppe zu entfernen.';
+$lang['getGroupID'] = 'SQL-Kommando um den Primärschlüssel einer Gruppe auszulesen.';
diff --git a/lib/plugins/authpgsql/lang/de/settings.php b/lib/plugins/authpgsql/lang/de/settings.php
new file mode 100644
index 000000000..a1a99b6d6
--- /dev/null
+++ b/lib/plugins/authpgsql/lang/de/settings.php
@@ -0,0 +1,6 @@
+<?php
+/**
+ * German language file
+ *
+ * @author Mateng Schimmerlos <mateng@firemail.de>)
+ */
diff --git a/lib/plugins/authpgsql/lang/fi/settings.php b/lib/plugins/authpgsql/lang/fi/settings.php
new file mode 100644
index 000000000..d3aa13e07
--- /dev/null
+++ b/lib/plugins/authpgsql/lang/fi/settings.php
@@ -0,0 +1,6 @@
+<?php
+/**
+ * Finnish language file
+ *
+ * @author Otto Vainio <otto@valjakko.net>
+ */
diff --git a/lib/plugins/authpgsql/lang/lv/settings.php b/lib/plugins/authpgsql/lang/lv/settings.php
new file mode 100644
index 000000000..ced5dabf8
--- /dev/null
+++ b/lib/plugins/authpgsql/lang/lv/settings.php
@@ -0,0 +1,6 @@
+<?php
+/**
+ * Latvian, Lettish language file
+ *
+ * @author Aivars Miška <allefm@gmail.com>
+ */
diff --git a/lib/plugins/authpgsql/lang/nl/settings.php b/lib/plugins/authpgsql/lang/nl/settings.php
new file mode 100644
index 000000000..4e6c007c6
--- /dev/null
+++ b/lib/plugins/authpgsql/lang/nl/settings.php
@@ -0,0 +1,36 @@
+<?php
+/**
+ * Dutch language file
+ *
+ */
+$lang['server'] = 'Je PostgrSQL server';
+$lang['port'] = 'Je PostgreSQL server poort';
+$lang['user'] = 'PostgrSQL gebruikersnaam';
+$lang['password'] = 'Wachtwoord voor bovenstaande gebruiker';
+$lang['database'] = 'Te gebruiken database';
+$lang['debug'] = 'Tonen aanvullende debuginformatie';
+$lang['forwardClearPass'] = 'Wachtwoorden als leesbare tekst in SQL commando\'s opnemen in plaats van versleutelde tekens';
+$lang['checkPass'] = 'SQL commando voor verifiëren wachtwoorden';
+$lang['getUserInfo'] = 'SQL commando voor ophalen gebruikersinformatie';
+$lang['getGroups'] = 'SQL commando voor ophalen groepslidmaatschappen van gebruikers';
+$lang['getUsers'] = 'SQL commando voor tonen alle gebruikers';
+$lang['FilterLogin'] = 'SQL commando voor filteren gebruikers op inlognaam';
+$lang['FilterName'] = 'SQL commando voor filteren gebruikers op volledige naam';
+$lang['FilterEmail'] = 'SQL commando voor filteren gebruikers op e-mailadres';
+$lang['FilterGroup'] = 'SQL commando voor filteren gebruikers op groepslidmaatschap';
+$lang['SortOrder'] = 'SQL commando voor sorteren gebruikers';
+$lang['addUser'] = 'SQL commando voor toevoegen nieuwe gebruiker';
+$lang['addGroup'] = 'SQL commando voor toevoegen nieuwe groep';
+$lang['addUserGroup'] = 'SQL commando voor toevoegen gebruiker aan bestaande groep';
+$lang['delGroup'] = 'SQL commando voor verwijderen groep';
+$lang['getUserID'] = 'SQL commando om de primaire sleutel van een gebruiker op te halen';
+$lang['delUser'] = 'SQL commando voor verwijderen gebruiker';
+$lang['delUserRefs'] = 'SQL commando om een gebruiker uit alle groepen te verwijderen';
+$lang['updateUser'] = 'SQL commando om een gebruikersprofiel bij te werken';
+$lang['UpdateLogin'] = 'SQL commando om een inlognaam bij te werken';
+$lang['UpdatePass'] = 'SQL commando om een wachtwoord bij te werken';
+$lang['UpdateEmail'] = 'SQL commando om een e-mailadres bij te werken';
+$lang['UpdateName'] = 'SQL commando om een volledige naam bij te werken';
+$lang['UpdateTarget'] = 'Beperkingsclausule om gebruiker te identificeren voor bijwerken';
+$lang['delUserGroup'] = 'SQL commando om een gebruiker uit een bepaalde groep te verwijderen';
+$lang['getGroupID'] = 'SQL commando om de primaire sleutel van een bepaalde groep op te halen';
diff --git a/lib/plugins/authpgsql/lang/pt-br/settings.php b/lib/plugins/authpgsql/lang/pt-br/settings.php
index 714f01163..d91e9c8e5 100644
--- a/lib/plugins/authpgsql/lang/pt-br/settings.php
+++ b/lib/plugins/authpgsql/lang/pt-br/settings.php
@@ -9,6 +9,11 @@ $lang['port'] = 'Sua porta do servidor PostgreSQL';
$lang['user'] = 'Nome de usuário PostgreSQL';
$lang['password'] = 'Senha do usuário acima';
$lang['database'] = 'Base de dados para usar';
+$lang['debug'] = 'Mostrar informações adicionais de depuração';
+$lang['forwardClearPass'] = 'Transmitir senhas de usuário como texto puro para comandos SQL abaixo, ao invés de usar a opção passcrypt';
+$lang['checkPass'] = 'Comando SQL para verificar senhas';
+$lang['getUserInfo'] = 'Comando SQL para obter informações do usuário';
+$lang['getGroups'] = 'Comando SQL para obter as credenciais de um usuário de um determinado grupo';
$lang['getUsers'] = 'Comando SQL para listar todos os usuários';
$lang['FilterLogin'] = 'Cláusula SQL para filtrar usuários pelo nome de login';
$lang['FilterName'] = 'Cláusula SQL para filtrar usuários pelo nome completo';
@@ -23,3 +28,10 @@ $lang['getUserID'] = 'Comando SQL para obter chave primária de usu
$lang['delUser'] = 'Comando SQL para apagar usuário';
$lang['delUserRefs'] = 'Comando SQL para remover um usuário de todos os grupos';
$lang['updateUser'] = 'Comando SQL para atualizar perfil de usuário';
+$lang['UpdateLogin'] = 'Atualizar cláusula para atualizar o login do usuário';
+$lang['UpdatePass'] = 'Atualizar cláusula para atualizar a senha do usuário';
+$lang['UpdateEmail'] = 'Atualizar cláusula para atualizar o endereço de email';
+$lang['UpdateName'] = 'Atualizar cláusula para atualizar o nome completo do usuário';
+$lang['UpdateTarget'] = 'Limitar cláusula para identificar quando um usuário estiver atualizando';
+$lang['delUserGroup'] = 'Comando SQL para remover um usuário de um determinado grupo';
+$lang['getGroupID'] = 'Comando SQL para obter a chave primária de um determinado grupo';
diff --git a/lib/plugins/config/lang/de-informal/lang.php b/lib/plugins/config/lang/de-informal/lang.php
index 58a78fe47..72823c0de 100644
--- a/lib/plugins/config/lang/de-informal/lang.php
+++ b/lib/plugins/config/lang/de-informal/lang.php
@@ -10,31 +10,31 @@
* @author Pierre Corell <info@joomla-praxis.de>
* @author Frank Loizzi <contact@software.bacal.de>
*/
-$lang['menu'] = 'Einstellungen';
-$lang['error'] = 'Einstellungen wurden nicht aktualisiert auf Grund eines ungültigen Wertes. Bitte überprüfe deine Änderungen und versuche es erneut.<br />Die/der ungültige(n) Wert(e) werden durch eine rote Umrandung hervorgehoben.';
-$lang['updated'] = 'Einstellungen erfolgreich aktualisiert.';
+$lang['menu'] = 'Konfiguration';
+$lang['error'] = 'Konfiguration wurde nicht aktualisiert auf Grund eines ungültigen Wertes. Bitte überprüfe deine Änderungen und versuche es erneut.<br />Die/der ungültige(n) Wert(e) werden durch eine rote Umrandung hervorgehoben.';
+$lang['updated'] = 'Konfiguration erfolgreich aktualisiert.';
$lang['nochoice'] = '(keine andere Option möglich)';
-$lang['locked'] = 'Die Einstellungsdatei kann nicht aktualisiert werden. Wenn dies unbeabsichtigt ist stelle sicher, dass der Name und die Zugriffsrechte der Einstellungsdatei richtig sind.';
+$lang['locked'] = 'Die Konfigurationsdatei kann nicht aktualisiert werden. Wenn dies unbeabsichtigt ist stelle sicher, dass der Name und die Zugriffsrechte der Konfigurationsdatei richtig sind.';
$lang['danger'] = '**Achtung**: Eine Änderung dieser Einstellung kann dein Wiki und das Einstellungsmenü unerreichbar machen.';
$lang['warning'] = 'Achtung: Eine Änderungen dieser Option kann zu unbeabsichtigtem Verhalten führen.';
$lang['security'] = 'Sicherheitswarnung: Eine Änderungen dieser Option können ein Sicherheitsrisiko bedeuten.';
-$lang['_configuration_manager'] = 'Einstellungen';
-$lang['_header_dokuwiki'] = 'DokuWiki-Einstellungen';
-$lang['_header_plugin'] = 'Plugin-Einstellungen';
-$lang['_header_template'] = 'Vorlageneinstellungen';
-$lang['_header_undefined'] = 'unbestimmte Einstellungen';
-$lang['_basic'] = 'Grundeinstellungen';
-$lang['_display'] = 'Darstellungs-Einstellungen';
-$lang['_authentication'] = 'Bestätigungseinstellungen';
-$lang['_anti_spam'] = 'Anti-Spam-Einstellungen';
-$lang['_editing'] = 'Bearbeitungseinstellungen';
-$lang['_links'] = 'Link-Einstellungen';
-$lang['_media'] = 'Media-Einstellungen';
-$lang['_notifications'] = 'Benachrichtigungs-Konfiguration';
-$lang['_syndication'] = 'Syndication-Konfiguration (RSS)';
-$lang['_advanced'] = 'erweiterte Einstellungen';
-$lang['_network'] = 'Netzwerk-Einstellungen';
-$lang['_plugin_sufix'] = 'Plugin-Einstellungen';
+$lang['_configuration_manager'] = 'Konfiguration';
+$lang['_header_dokuwiki'] = 'DokuWiki-Konfiguration';
+$lang['_header_plugin'] = 'Plugin-Konfiguration';
+$lang['_header_template'] = 'Vorlagen';
+$lang['_header_undefined'] = 'Unbekannte Werte';
+$lang['_basic'] = 'Grundkonfiguration';
+$lang['_display'] = 'Darstellung';
+$lang['_authentication'] = 'Authentifizierung';
+$lang['_anti_spam'] = 'Anti-Spam';
+$lang['_editing'] = 'Bearbeitung';
+$lang['_links'] = 'Links';
+$lang['_media'] = 'Medien';
+$lang['_notifications'] = 'Benachrichtigungen';
+$lang['_syndication'] = 'Syndication (RSS)';
+$lang['_advanced'] = 'Erweiterte Konfiguration';
+$lang['_network'] = 'Netzwerk';
+$lang['_plugin_sufix'] = '';
$lang['_template_sufix'] = 'Vorlageneinstellungen';
$lang['_msg_setting_undefined'] = 'Keine Konfigurationsmetadaten.';
$lang['_msg_setting_no_class'] = 'Keine Konfigurationsklasse.';
@@ -190,7 +190,7 @@ $lang['xsendfile_o_2'] = 'Standard X-Sendfile-Header';
$lang['xsendfile_o_3'] = 'Proprietärer Nginx X-Accel-Redirect-Header';
$lang['showuseras_o_loginname'] = 'Login-Name';
$lang['showuseras_o_username'] = 'Voller Name des Nutzers';
-$lang['showuseras_o_email'] = 'E-Mail-Adresse des Benutzers (je nach Mailguard-Einstellung verschleiert)';
+$lang['showuseras_o_email'] = 'E-Mail-Adresse des Benutzers (Beachte "mailguard"-Einstellung)';
$lang['showuseras_o_email_link'] = 'E-Mail-Adresse des Benutzers als mailto:-Link';
$lang['useheading_o_0'] = 'Niemals';
$lang['useheading_o_navigation'] = 'Nur Navigation';
diff --git a/lib/plugins/config/lang/de/lang.php b/lib/plugins/config/lang/de/lang.php
index bcbc061a3..d72056236 100644
--- a/lib/plugins/config/lang/de/lang.php
+++ b/lib/plugins/config/lang/de/lang.php
@@ -17,6 +17,7 @@
* @author Paul Lachewsky <kaeptn.haddock@gmail.com>
* @author Pierre Corell <info@joomla-praxis.de>
* @author Matthias Schulte <dokuwiki@lupo49.de>
+ * @author Mateng Schimmerlos <mateng@firemail.de>)
*/
$lang['menu'] = 'Konfiguration';
$lang['error'] = 'Die Einstellungen wurden wegen einer fehlerhaften Eingabe nicht gespeichert.
@@ -49,28 +50,29 @@ $lang['_template_sufix'] = 'Template-Konfiguration';
$lang['_msg_setting_undefined'] = 'Keine Konfigurationsmetadaten.';
$lang['_msg_setting_no_class'] = 'Keine Konfigurationsklasse.';
$lang['_msg_setting_no_default'] = 'Kein Standardwert.';
-$lang['fmode'] = 'Rechte für neue Dateien';
-$lang['dmode'] = 'Rechte für neue Verzeichnisse';
-$lang['lang'] = 'Sprache';
-$lang['basedir'] = 'Installationsverzeichnis';
-$lang['baseurl'] = 'Installationspfad (URL)';
-$lang['savedir'] = 'Speicherverzeichnis';
-$lang['cookiedir'] = 'Cookiepfad. Frei lassen, um den gleichen Pfad wie "baseurl" zu benutzen.';
-$lang['start'] = 'Startseitenname';
$lang['title'] = 'Titel des Wikis';
+$lang['start'] = 'Startseitenname';
+$lang['lang'] = 'Sprache';
$lang['template'] = 'Designvorlage (Template)';
$lang['tagline'] = 'Tag-Linie (nur, wenn vom Template unterstützt)';
$lang['sidebar'] = 'Name der Sidebar-Seite (nur, wenn vom Template unterstützt)), ein leeres Feld deaktiviert die Sidebar';
$lang['license'] = 'Unter welcher Lizenz sollen Ihre Inhalte veröffentlicht werden?';
-$lang['fullpath'] = 'Den kompletten Dateipfad im Footer anzeigen';
+$lang['savedir'] = 'Speicherverzeichnis';
+$lang['basedir'] = 'Installationsverzeichnis';
+$lang['baseurl'] = 'Installationspfad (URL)';
+$lang['cookiedir'] = 'Cookiepfad. Frei lassen, um den gleichen Pfad wie "baseurl" zu benutzen.';
+$lang['dmode'] = 'Rechte für neue Verzeichnisse';
+$lang['fmode'] = 'Rechte für neue Dateien';
+$lang['allowdebug'] = 'Debug-Ausgaben erlauben <b>Abschalten wenn nicht benötigt!</b>';
$lang['recent'] = 'Anzahl der Einträge in der Änderungsliste';
+$lang['recent_days'] = 'Wieviele letzte Änderungen sollen einsehbar bleiben? (Tage)';
$lang['breadcrumbs'] = 'Anzahl der Einträge im "Krümelpfad"';
$lang['youarehere'] = 'Hierarchische Pfadnavigation verwenden';
+$lang['fullpath'] = 'Den kompletten Dateipfad im Footer anzeigen';
$lang['typography'] = 'Typographische Ersetzungen';
-$lang['htmlok'] = 'HTML erlauben';
-$lang['phpok'] = 'PHP erlauben';
$lang['dformat'] = 'Datumsformat (Siehe PHP <a href="http://www.php.net/strftime">strftime</a> Funktion)';
$lang['signature'] = 'Signatur';
+$lang['showuseras'] = 'Was angezeigt werden soll, wenn der Benutzer, der zuletzt eine Seite bearbeitet hat, angezeigt wird';
$lang['toptoclevel'] = 'Inhaltsverzeichnis bei dieser Überschriftengröße beginnen';
$lang['tocminheads'] = 'Mindestanzahl der Überschriften die entscheidet, ob ein Inhaltsverzeichnis erscheinen soll';
$lang['maxtoclevel'] = 'Maximale Überschriftsgröße für Inhaltsverzeichnis';
@@ -78,16 +80,8 @@ $lang['maxseclevel'] = 'Abschnitte bis zu dieser Stufe einzeln editier
$lang['camelcase'] = 'CamelCase-Verlinkungen verwenden';
$lang['deaccent'] = 'Seitennamen bereinigen';
$lang['useheading'] = 'Erste Überschrift als Seitennamen verwenden';
-$lang['refcheck'] = 'Auf Verwendung beim Löschen von Media-Dateien testen';
-$lang['refshow'] = 'Wiev iele Verwendungsorte der Media-Datei zeigen';
-$lang['allowdebug'] = 'Debug-Ausgaben erlauben <b>Abschalten wenn nicht benötigt!</b>';
-$lang['mediarevisions'] = 'Media-Revisionen (ältere Versionen) aktivieren?';
-$lang['usewordblock'] = 'Spam-Blocking benutzen';
-$lang['indexdelay'] = 'Zeit bevor Suchmaschinenindexierung erlaubt ist';
-$lang['relnofollow'] = 'rel="nofollow" verwenden';
-$lang['mailguard'] = 'E-Mail-Adressen schützen';
-$lang['iexssprotect'] = 'Hochgeladene Dateien auf bösartigen JavaScript- und HTML-Code untersuchen';
-$lang['showuseras'] = 'Was angezeigt werden soll, wenn der Benutzer, der zuletzt eine Seite bearbeitet hat, angezeigt wird';
+$lang['sneaky_index'] = 'Standardmäßig zeigt DokuWiki alle Namensräume in der Übersicht. Wenn diese Option aktiviert wird, werden alle Namensräume, für die der Benutzer keine Lese-Rechte hat, nicht angezeigt. Dies kann unter Umständen dazu führen, das lesbare Unter-Namensräume nicht angezeigt werden und macht die Übersicht evtl. unbrauchbar in Kombination mit bestimmten ACL Einstellungen.';
+$lang['hidepages'] = 'Seiten verstecken (Regulärer Ausdruck)';
$lang['useacl'] = 'Zugangskontrolle verwenden';
$lang['autopasswd'] = 'Passwort automatisch generieren';
$lang['authtype'] = 'Authentifizierungsmechanismus';
@@ -96,62 +90,69 @@ $lang['defaultgroup'] = 'Standardgruppe';
$lang['superuser'] = 'Administrator - Eine Gruppe oder Nutzer mit vollem Zugriff auf alle Seiten und Administrationswerkzeuge.';
$lang['manager'] = 'Manager - Eine Gruppe oder Nutzer mit Zugriff auf einige Administrationswerkzeuge.';
$lang['profileconfirm'] = 'Profiländerung nur nach Passwortbestätigung';
+$lang['rememberme'] = 'Permanente Login-Cookies erlauben (Auf diesem Computer eingeloggt bleiben)';
$lang['disableactions'] = 'DokuWiki-Aktionen deaktivieren';
$lang['disableactions_check'] = 'Check';
$lang['disableactions_subscription'] = 'Seiten-Abonnements';
$lang['disableactions_wikicode'] = 'Quelltext betrachten/exportieren';
$lang['disableactions_other'] = 'Andere Aktionen (durch Komma getrennt)';
-$lang['sneaky_index'] = 'Standardmäßig zeigt DokuWiki alle Namensräume in der Übersicht. Wenn diese Option aktiviert wird, werden alle Namensräume, für die der Benutzer keine Lese-Rechte hat, nicht angezeigt. Dies kann unter Umständen dazu führen, das lesbare Unter-Namensräume nicht angezeigt werden und macht die Übersicht evtl. unbrauchbar in Kombination mit bestimmten ACL Einstellungen.';
$lang['auth_security_timeout'] = 'Authentifikations-Timeout (Sekunden)';
$lang['securecookie'] = 'Sollen Cookies, die via HTTPS gesetzt wurden nur per HTTPS versendet werden? Deaktivieren Sie diese Option, wenn nur der Login Ihres Wikis mit SSL gesichert ist, aber das Betrachten des Wikis ungesichert geschieht.';
$lang['remote'] = 'Aktiviert den externen API-Zugang. Diese Option erlaubt es externen Anwendungen von außen auf die XML-RPC-Schnittstelle oder anderweitigen Schnittstellen zuzugreifen.';
$lang['remoteuser'] = 'Zugriff auf die externen Schnittstellen durch kommaseparierte Angabe von Benutzern oder Gruppen einschränken. Ein leeres Feld erlaubt Zugriff für jeden.';
-$lang['updatecheck'] = 'Automatisch auf Updates und Sicherheitswarnungen prüfen? DokuWiki muss sich dafür mit update.dokuwiki.org verbinden.';
-$lang['userewrite'] = 'URL rewriting';
-$lang['useslash'] = 'Schrägstrich (/) als Namensraumtrenner in URLs verwenden';
+$lang['usewordblock'] = 'Spam-Blocking benutzen';
+$lang['relnofollow'] = 'rel="nofollow" verwenden';
+$lang['indexdelay'] = 'Zeit bevor Suchmaschinenindexierung erlaubt ist';
+$lang['mailguard'] = 'E-Mail-Adressen schützen';
+$lang['iexssprotect'] = 'Hochgeladene Dateien auf bösartigen JavaScript- und HTML-Code untersuchen';
$lang['usedraft'] = 'Während des Bearbeitens automatisch Zwischenentwürfe speichern';
-$lang['sepchar'] = 'Worttrenner für Seitennamen in URLs';
-$lang['canonical'] = 'Immer Links mit vollständigen URLs erzeugen';
-$lang['fnencode'] = 'Methode um nicht-ASCII Dateinamen zu kodieren.';
-$lang['autoplural'] = 'Bei Links automatisch nach vorhandenen Pluralformen suchen';
-$lang['compression'] = 'Komprimierungsmethode für alte Seitenrevisionen';
-$lang['cachetime'] = 'Maximale Cachespeicherung (Sekunden)';
+$lang['htmlok'] = 'HTML erlauben';
+$lang['phpok'] = 'PHP erlauben';
$lang['locktime'] = 'Maximales Alter für Seitensperren (Sekunden)';
+$lang['cachetime'] = 'Maximale Cachespeicherung (Sekunden)';
+$lang['target____wiki'] = 'Zielfenster für interne Links (target Attribut)';
+$lang['target____interwiki'] = 'Zielfenster für InterWiki-Links (target Attribut)';
+$lang['target____extern'] = 'Zielfenster für Externe Links (target Attribut)';
+$lang['target____media'] = 'Zielfenster für (Bild-)Dateien (target Attribut)';
+$lang['target____windows'] = 'Zielfenster für Windows Freigaben (target Attribut)';
+$lang['mediarevisions'] = 'Media-Revisionen (ältere Versionen) aktivieren?';
+$lang['refcheck'] = 'Auf Verwendung beim Löschen von Media-Dateien testen';
+$lang['refshow'] = 'Wiev iele Verwendungsorte der Media-Datei zeigen';
+$lang['gdlib'] = 'GD Lib Version';
+$lang['im_convert'] = 'Pfad zu ImageMagicks-Konvertierwerkzeug';
+$lang['jpg_quality'] = 'JPEG Kompressionsqualität (0-100)';
$lang['fetchsize'] = 'Maximale Größe (in Bytes), die fetch.php von extern herunterladen darf';
+$lang['subscribers'] = 'E-Mail-Abos zulassen';
+$lang['subscribe_time'] = 'Zeit nach der Zusammenfassungs- und Änderungslisten-E-Mails verschickt werden; Dieser Wert sollte kleiner als die in recent_days konfigurierte Zeit sein.';
$lang['notify'] = 'Änderungsmitteilungen an diese E-Mail-Adresse versenden';
$lang['registernotify'] = 'Information über neu registrierte Nutzer an diese E-Mail-Adresse senden';
$lang['mailfrom'] = 'Absender-E-Mail-Adresse für automatische Mails';
$lang['mailprefix'] = 'Präfix für E-Mail-Betreff beim automatischen Versand von Benachrichtigungen';
$lang['htmlmail'] = 'Versendet optisch angenehmere, aber größere E-Mails im HTML-Format (multipart). Deaktivieren, um Text-Mails zu versenden.';
+$lang['sitemap'] = 'Google Sitemap erzeugen (Tage)';
+$lang['rss_type'] = 'XML-Feed-Format';
+$lang['rss_linkto'] = 'XML-Feed verlinken auf';
+$lang['rss_content'] = 'Welche Inhalte sollen im XML-Feed dargestellt werden?';
+$lang['rss_update'] = 'XML-Feed Aktualisierungsintervall (Sekunden)';
+$lang['rss_show_summary'] = 'Bearbeitungs-Zusammenfassung im XML-Feed anzeigen';
+$lang['rss_media'] = 'Welche Änderungen sollen im XML-Feed angezeigt werden?';
+$lang['updatecheck'] = 'Automatisch auf Updates und Sicherheitswarnungen prüfen? DokuWiki muss sich dafür mit update.dokuwiki.org verbinden.';
+$lang['userewrite'] = 'URL rewriting';
+$lang['useslash'] = 'Schrägstrich (/) als Namensraumtrenner in URLs verwenden';
+$lang['sepchar'] = 'Worttrenner für Seitennamen in URLs';
+$lang['canonical'] = 'Immer Links mit vollständigen URLs erzeugen';
+$lang['fnencode'] = 'Methode um nicht-ASCII Dateinamen zu kodieren.';
+$lang['autoplural'] = 'Bei Links automatisch nach vorhandenen Pluralformen suchen';
+$lang['compression'] = 'Komprimierungsmethode für alte Seitenrevisionen';
$lang['gzip_output'] = 'Seiten mit gzip komprimiert ausliefern';
-$lang['gdlib'] = 'GD Lib Version';
-$lang['im_convert'] = 'Pfad zu ImageMagicks-Konvertierwerkzeug';
-$lang['jpg_quality'] = 'JPEG Kompressionsqualität (0-100)';
-$lang['subscribers'] = 'E-Mail-Abos zulassen';
-$lang['subscribe_time'] = 'Zeit nach der Zusammenfassungs- und Änderungslisten-E-Mails verschickt werden; Dieser Wert sollte kleiner als die in recent_days konfigurierte Zeit sein.';
$lang['compress'] = 'JavaScript und Stylesheets komprimieren';
$lang['cssdatauri'] = 'Größe in Bytes, bis zu der Bilder in css-Dateien referenziert werden können, um HTTP-Anfragen zu minimieren. Diese Technik funktioniert nicht im IE 7 und älter! Empfohlene Einstellung: <code>400</code> to <code>600</code> Bytes. Setzen Sie die Einstellung auf <code>0</code> um die Funktion zu deaktivieren.';
-$lang['hidepages'] = 'Seiten verstecken (Regulärer Ausdruck)';
$lang['send404'] = 'Bei nicht vorhandenen Seiten mit 404 Fehlercode antworten';
-$lang['sitemap'] = 'Google Sitemap erzeugen (Tage)';
$lang['broken_iua'] = 'Falls die Funktion ignore_user_abort auf Ihrem System nicht funktioniert, könnte der Such-Index nicht funktionieren. IIS+PHP/CGI ist bekannt dafür. Siehe auch <a href="http://bugs.splitbrain.org/?do=details&amp;task_id=852">Bug 852</a>.';
$lang['xsendfile'] = 'Den X-Sendfile-Header nutzen, um Dateien direkt vom Webserver ausliefern zu lassen? Ihr Webserver muss dies unterstützen!';
$lang['renderer_xhtml'] = 'Standard-Renderer für die normale (XHTML) Wiki-Ausgabe.';
$lang['renderer__core'] = '%s (DokuWiki Kern)';
$lang['renderer__plugin'] = '%s (Plugin)';
-$lang['rememberme'] = 'Permanente Login-Cookies erlauben (Auf diesem Computer eingeloggt bleiben)';
-$lang['rss_type'] = 'XML-Feed-Format';
-$lang['rss_linkto'] = 'XML-Feed verlinken auf';
-$lang['rss_content'] = 'Welche Inhalte sollen im XML-Feed dargestellt werden?';
-$lang['rss_update'] = 'XML-Feed Aktualisierungsintervall (Sekunden)';
-$lang['recent_days'] = 'Wieviele letzte Änderungen sollen einsehbar bleiben? (Tage)';
-$lang['rss_show_summary'] = 'Bearbeitungs-Zusammenfassung im XML-Feed anzeigen';
-$lang['rss_media'] = 'Welche Änderungen sollen im XML-Feed angezeigt werden?';
-$lang['target____wiki'] = 'Zielfenster für interne Links (target Attribut)';
-$lang['target____interwiki'] = 'Zielfenster für InterWiki-Links (target Attribut)';
-$lang['target____extern'] = 'Zielfenster für Externe Links (target Attribut)';
-$lang['target____media'] = 'Zielfenster für (Bild-)Dateien (target Attribut)';
-$lang['target____windows'] = 'Zielfenster für Windows Freigaben (target Attribut)';
$lang['dnslookups'] = 'DokuWiki löst die IP-Adressen von Benutzern zu deren Hostnamen auf. Wenn du einen langsamen, unbrauchbaren DNS-Server verwendest oder die Funktion nicht benötigst, dann sollte diese Option deaktivert sein.';
$lang['proxy____host'] = 'Proxy-Server';
$lang['proxy____port'] = 'Proxy-Port';
diff --git a/lib/plugins/config/lang/fi/lang.php b/lib/plugins/config/lang/fi/lang.php
index f3c57d10e..990852f99 100644
--- a/lib/plugins/config/lang/fi/lang.php
+++ b/lib/plugins/config/lang/fi/lang.php
@@ -30,6 +30,7 @@ $lang['_editing'] = 'Sivumuokkauksen asetukset';
$lang['_links'] = 'Linkkien asetukset';
$lang['_media'] = 'Media-asetukset';
$lang['_notifications'] = 'Ilmoitus-asetukset';
+$lang['_syndication'] = 'Syöteasetukset';
$lang['_advanced'] = 'Lisäasetukset';
$lang['_network'] = 'Verkkoasetukset';
$lang['_plugin_sufix'] = 'liitännäisen asetukset';
@@ -85,6 +86,8 @@ $lang['disableactions_wikicode'] = 'Näytä lähdekoodi/Vie raakana';
$lang['disableactions_other'] = 'Muut toiminnot (pilkulla erotettuna)';
$lang['auth_security_timeout'] = 'Autentikoinnin aikakatkaisu (sekunteja)';
$lang['securecookie'] = 'Lähetetäänkö HTTPS:n kautta asetetut evästetiedot HTTPS-yhteydellä? Kytke pois, jos vain wikisi kirjautuminen on suojattu SSL:n avulla, mutta muuten wikiä käytetään ilman suojausta.';
+$lang['remote'] = 'Kytke "remote API" käyttöön. Tämä sallii muiden sovellusten päästä wikiin XML-RPC:n avulla';
+$lang['remoteuser'] = 'Salli "remote API" pääsy vain pilkulla erotetuille ryhmille tai käyttäjille tässä. Jätä tyhjäksi, jos haluat sallia käytön kaikille.';
$lang['usewordblock'] = 'Estä spam sanalistan avulla';
$lang['relnofollow'] = 'Käytä rel="nofollow" ulkoisille linkeille';
$lang['indexdelay'] = 'Aikaraja indeksoinnille (sek)';
@@ -113,12 +116,14 @@ $lang['notify'] = 'Lähetä muutosilmoitukset tähän osoitteesee
$lang['registernotify'] = 'Lähetä ilmoitus uusista rekisteröitymisistä tähän osoitteeseen';
$lang['mailfrom'] = 'Sähköpostiosoite automaattisia postituksia varten';
$lang['mailprefix'] = 'Etuliite automaattisesti lähetettyihin dähköposteihin';
+$lang['htmlmail'] = 'Lähetä paremman näköisiä, mutta isompia HTML multipart sähköposteja. Ota pois päältä, jos haluat vain tekstimuotoisia posteja.';
$lang['sitemap'] = 'Luo Google sitemap (päiviä)';
$lang['rss_type'] = 'XML-syötteen tyyppi';
$lang['rss_linkto'] = 'XML-syöte kytkeytyy';
$lang['rss_content'] = 'Mitä XML-syöte näyttää?';
$lang['rss_update'] = 'XML-syötteen päivitystahti (sek)';
$lang['rss_show_summary'] = 'XML-syöte näyttää yhteenvedon otsikossa';
+$lang['rss_media'] = 'Millaiset muutokset pitäisi olla mukana XML-syötteessä.';
$lang['updatecheck'] = 'Tarkista päivityksiä ja turvavaroituksia? Tätä varten DokuWikin pitää ottaa yhteys update.dokuwiki.orgiin.';
$lang['userewrite'] = 'Käytä siivottuja URLeja';
$lang['useslash'] = 'Käytä kauttaviivaa nimiavaruuksien erottimena URL-osoitteissa';
@@ -137,6 +142,7 @@ $lang['xsendfile'] = 'Käytä X-Sendfile otsikkoa, kun web-palvelin
$lang['renderer_xhtml'] = 'Renderöinti, jota käytetään wikin pääasialliseen (xhtml) tulostukseen';
$lang['renderer__core'] = '%s (dokuwiki core)';
$lang['renderer__plugin'] = '%s (liitännäinen)';
+$lang['dnslookups'] = 'DokuWiki tarkistaa sivun päivittäjän koneen IP-osoitteen isäntänimen. Kytke pois, jos käytät hidasta tai toimimatonta DNS-palvelinta, tai et halua tätä ominaisuutta.';
$lang['proxy____host'] = 'Proxy-palvelimen nimi';
$lang['proxy____port'] = 'Proxy portti';
$lang['proxy____user'] = 'Proxy käyttäjän nimi';
diff --git a/lib/plugins/config/lang/ko/intro.txt b/lib/plugins/config/lang/ko/intro.txt
index 5ef34df64..a2dc7b6f6 100644
--- a/lib/plugins/config/lang/ko/intro.txt
+++ b/lib/plugins/config/lang/ko/intro.txt
@@ -4,4 +4,4 @@ DokuWiki 설치할 때 설정을 바꾸기 위해 사용하는 페이지입니
플러그인에 대한 자세한 정보가 필요하다면 [[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 7737af70f..f69af2df6 100644
--- a/lib/plugins/config/lang/ko/lang.php
+++ b/lib/plugins/config/lang/ko/lang.php
@@ -54,9 +54,9 @@ $lang['baseurl'] = '서버 URL (예를 들어 <code>http://www.you
$lang['cookiedir'] = '쿠키 위치. 비워두면 기본 URL 위치로 지정됩니다.';
$lang['dmode'] = '디렉토리 만들기 모드';
$lang['fmode'] = '파일 만들기 모드';
-$lang['allowdebug'] = '디버그 허용 <b>필요하지 않으면 금지!</b>';
+$lang['allowdebug'] = '디버그 허용 <b>필요하지 않으면 비활성화할 것!</b>';
$lang['recent'] = '최근 바뀐 문서당 항목 수';
-$lang['recent_days'] = '최근 바뀐 문서 기준 시간 (날짜)';
+$lang['recent_days'] = '최근 바뀐 문서 기준 시간 (일)';
$lang['breadcrumbs'] = '위치 "추적" 수. 0으로 설정하면 비활성화합니다.';
$lang['youarehere'] = '계층형 위치 추적 (다음 위의 옵션을 비활성화하게 됩니다)';
$lang['fullpath'] = '문서 하단에 전체 경로 보여주기';
@@ -85,8 +85,8 @@ $lang['profileconfirm'] = '개인 정보를 바꿀 때 비밀번호 다
$lang['rememberme'] = '항상 로그인 정보 저장 허용 (기억하기)';
$lang['disableactions'] = 'DokuWiki 활동 비활성화';
$lang['disableactions_check'] = '검사';
-$lang['disableactions_subscription'] = '구독 신청/해지';
-$lang['disableactions_wikicode'] = '내용 보기/원본 내보대기';
+$lang['disableactions_subscription'] = '구독 신청/구독 취소';
+$lang['disableactions_wikicode'] = '내용 보기/원본 내보내기';
$lang['disableactions_other'] = '다른 활동 (쉼표로 구분)';
$lang['auth_security_timeout'] = '인증 보안 초과 시간 (초)';
$lang['securecookie'] = 'HTTPS로 보내진 쿠키는 HTTPS에만 적용 할까요? 위키의 로그인 페이지만 SSL로 암호화하고 위키 문서는 그렇지 않은 경우 비활성화 합니다.';
@@ -121,10 +121,10 @@ $lang['registernotify'] = '항상 새 사용자한테 이 이메일 주
$lang['mailfrom'] = '자동으로 보내지는 메일 발신자';
$lang['mailprefix'] = '자동으로 보내지는 메일의 제목 말머리 내용. 비웠을 경우 위키 제목 사용';
$lang['htmlmail'] = '용량은 조금 더 크지만 보기 좋은 HTML 태그가 포함된 메일을 보냅니다. 텍스트만의 메일을 보내고자하면 비활성화하세요.';
-$lang['sitemap'] = '구글 사이트맵 생성 (날짜). 0일 경우 비활성화';
+$lang['sitemap'] = '구글 사이트맵 생성 날짜 빈도. 0일 경우 비활성화합니다';
$lang['rss_type'] = 'XML 피드 타입';
$lang['rss_linkto'] = 'XML 피드 링크 정보';
-$lang['rss_content'] = 'XML 피드 항목에 표시되는 내용은?';
+$lang['rss_content'] = 'XML 피드 항목에 표시되는 내용은 무엇입니까?';
$lang['rss_update'] = 'XML 피드 업데이트 주기 (초)';
$lang['rss_show_summary'] = 'XML 피드 제목에서 요약 보여주기';
$lang['rss_media'] = '어떤 규격으로 XML 피드를 받아보시겠습니까?';
@@ -145,7 +145,7 @@ $lang['xsendfile'] = '웹 서버가 정적 파일을 제공하도록
$lang['renderer_xhtml'] = '주 (xhtml) 위키 출력 처리기';
$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'] = '프록시 사용자 이름';
@@ -165,7 +165,7 @@ $lang['typography_o_2'] = '모든 가능한 인용 부호 (동작 안될
$lang['userewrite_o_0'] = '사용 안함';
$lang['userewrite_o_1'] = '.htaccess';
$lang['userewrite_o_2'] = 'DokuWiki 내부 기능';
-$lang['deaccent_o_0'] = '사용 안함';
+$lang['deaccent_o_0'] = '끄기';
$lang['deaccent_o_1'] = '악센트 제거';
$lang['deaccent_o_2'] = '라틴문자화';
$lang['gdlib_o_0'] = 'GD 라이브러리 사용 불가';
@@ -192,8 +192,8 @@ $lang['xsendfile_o_1'] = '비공개 lighttpd 헤더 (1.5 이전 버전)'
$lang['xsendfile_o_2'] = '표준 X-Sendfile 헤더';
$lang['xsendfile_o_3'] = '비공개 Nginx X-Accel-Redirect 헤더';
$lang['showuseras_o_loginname'] = '로그인 이름';
-$lang['showuseras_o_username'] = '사용자 이름';
-$lang['showuseras_o_email'] = '사용자 이메일 주소 (메일 주소 보호 설정에 따라 안보일 수 있음)';
+$lang['showuseras_o_username'] = '사용자의 전체 이름';
+$lang['showuseras_o_email'] = '사용자의 이메일 주소 (메일 주소 보호 설정에 따라 안보일 수 있음)';
$lang['showuseras_o_email_link'] = 'mailto: link로 표현될 사용자 이메일 주소';
$lang['useheading_o_0'] = '아니오';
$lang['useheading_o_navigation'] = '둘러보기에만';
diff --git a/lib/plugins/config/lang/lv/lang.php b/lib/plugins/config/lang/lv/lang.php
index 50031d5e5..3adfd1871 100644
--- a/lib/plugins/config/lang/lv/lang.php
+++ b/lib/plugins/config/lang/lv/lang.php
@@ -26,6 +26,7 @@ $lang['_anti_spam'] = 'Pretspama iestatījumi';
$lang['_editing'] = 'Labošanas iestatījumi';
$lang['_links'] = 'Saišu iestatījumi';
$lang['_media'] = 'Mēdiju iestatījumi';
+$lang['_notifications'] = 'Brīdinājumu iestatījumi';
$lang['_advanced'] = 'Smalkāka iestatīšana';
$lang['_network'] = 'Tīkla iestatījumi';
$lang['_plugin_sufix'] = 'moduļa iestatījumi';
diff --git a/lib/plugins/config/lang/nl/lang.php b/lib/plugins/config/lang/nl/lang.php
index 85dc2c4c7..26ea3d8c1 100644
--- a/lib/plugins/config/lang/nl/lang.php
+++ b/lib/plugins/config/lang/nl/lang.php
@@ -63,7 +63,7 @@ $lang['allowdebug'] = 'Debug toestaan <b>uitzetten indien niet noodza
$lang['recent'] = 'Het aantal regels in Recente wijzigingen';
$lang['recent_days'] = 'Hoeveel recente wijzigingen bewaren (dagen)';
$lang['breadcrumbs'] = 'Aantal broodkruimels. Zet dit op 0 om uit te schakelen.';
-$lang['youarehere'] = 'Gebruik hierarchische broodkruimels (waarschijnlijk wil je dan de optie hierboven uitschakelen)';
+$lang['youarehere'] = 'Gebruik hiërarchische broodkruimels (waarschijnlijk wil je dan de optie hierboven uitschakelen)';
$lang['fullpath'] = 'Volledig pad van pagina\'s in de footer weergeven';
$lang['typography'] = 'Breng typografische wijzigingen aan';
$lang['dformat'] = 'Datum formaat (zie de PHP <a href="http://www.php.net/strftime">strftime</a> functie)';
diff --git a/lib/plugins/plugin/lang/de/lang.php b/lib/plugins/plugin/lang/de/lang.php
index 9f26a2933..0c560537f 100644
--- a/lib/plugins/plugin/lang/de/lang.php
+++ b/lib/plugins/plugin/lang/de/lang.php
@@ -18,6 +18,7 @@
* @author Christian Wichmann <nospam@zone0.de>
* @author Paul Lachewsky <kaeptn.haddock@gmail.com>
* @author Pierre Corell <info@joomla-praxis.de>
+ * @author Mateng Schimmerlos <mateng@firemail.de>)
*/
$lang['menu'] = 'Plugins verwalten';
$lang['download'] = 'Neues Plugin herunterladen und installieren';
diff --git a/lib/plugins/plugin/lang/ko/admin_plugin.txt b/lib/plugins/plugin/lang/ko/admin_plugin.txt
index b553d622b..7cbd08f7a 100644
--- a/lib/plugins/plugin/lang/ko/admin_plugin.txt
+++ b/lib/plugins/plugin/lang/ko/admin_plugin.txt
@@ -1,5 +1,3 @@
====== 플러그인 관리 ======
-이 페이지에서 Dokuwiki [[doku>plugins|플러그인]]에 관련된 모든 관리 작업을 합니다. 플러그인을 다운로드하거나 설치하기 위해서는 웹 서버가 플러그인 디렉토리에 대해 쓰기 권한을 가지고 있어야 합니다.
-
-
+이 페이지에서 Dokuwiki [[doku>plugins|플러그인]]에 관련된 모든 관리 작업을 합니다. 플러그인을 다운로드하거나 설치하기 위해서는 웹 서버가 플러그인 디렉토리에 대해 쓰기 권한을 가지고 있어야 합니다. \ No newline at end of file
diff --git a/lib/plugins/plugin/lang/ko/lang.php b/lib/plugins/plugin/lang/ko/lang.php
index 7ca021ac4..447fe667b 100644
--- a/lib/plugins/plugin/lang/ko/lang.php
+++ b/lib/plugins/plugin/lang/ko/lang.php
@@ -31,7 +31,7 @@ $lang['update_none'] = '업데이트를 찾을 수 없습니다.';
$lang['deleting'] = '삭제 중 ...';
$lang['deleted'] = '%s 플러그인이 삭제되었습니다.';
$lang['downloading'] = '다운로드 중 ...';
-$lang['downloaded'] = '%s 플러그인이 성공적으로 설치되었습니다.';
+$lang['downloaded'] = '%s 플러그인이 성공적으로 설치되었습니다';
$lang['downloads'] = '다음 플러그인이 성공적으로 설치되었습니다:';
$lang['download_none'] = '플러그인이 없거나 다운로드 또는 설치 중에 알 수 없는 문제가 발생했습니다.';
$lang['plugin'] = '플러그인:';
@@ -45,11 +45,11 @@ $lang['author'] = '만든이:';
$lang['www'] = '웹:';
$lang['error'] = '알 수 없는 문제가 발생했습니다.';
$lang['error_download'] = '플러그인 파일을 다운로드 할 수 없습니다: %s';
-$lang['error_badurl'] = '잘못된 URL 같습니다 - URL에서 파일 이름을 알 수 없습니다.';
-$lang['error_dircreate'] = '다운로드를 받기 위한 임시 디렉토리를 만들 수 없습니다.';
+$lang['error_badurl'] = '잘못된 URL 같습니다 - URL에서 파일 이름을 알 수 없습니다';
+$lang['error_dircreate'] = '다운로드를 받기 위한 임시 디렉토리를 만들 수 없습니다';
$lang['error_decompress'] = '플러그인 관리자가 다운로드 받은 파일을 압축을 풀 수 없습니다. 잘못 다운로드 받았을 수도 있으니 다시 한번 시도하거나 압축 포맷을 알 수 없는 경우에는 다운로드한 후 수동으로 직접 설치하세요.';
$lang['error_copy'] = '플러그인을 설치하는 동안 파일 복사하는 데 오류가 발생했습니다. <em>%s</em>: 디스크가 꽉 찼거나 파일 접근 권한이 잘못된 경우입니다. 플러그인 설치가 부분적으로만 이루어졌을 것입니다. 설치가 불완전합니다.';
-$lang['error_delete'] = '<em>%s</em> 플러그인을 삭제하는 동안 오류가 발생했습니다. 대부분의 경우 불완전한 파일이거나 디렉토리 접근 권한이 잘못된 경우입니다.';
+$lang['error_delete'] = '<em>%s</em> 플러그인을 삭제하는 동안 오류가 발생했습니다. 대부분의 경우 불완전한 파일이거나 디렉토리 접근 권한이 잘못된 경우입니다';
$lang['enabled'] = '%s 플러그인을 활성화했습니다.';
$lang['notenabled'] = '%s 플러그인을 활성화할 수 없습니다. 파일 권한을 확인하세요.';
$lang['disabled'] = '%s 플러그인을 비활성화했습니다.';
diff --git a/lib/plugins/popularity/lang/de/lang.php b/lib/plugins/popularity/lang/de/lang.php
index 42bdc14d5..4c1ba1391 100644
--- a/lib/plugins/popularity/lang/de/lang.php
+++ b/lib/plugins/popularity/lang/de/lang.php
@@ -15,6 +15,7 @@
* @author Christian Wichmann <nospam@zone0.de>
* @author Paul Lachewsky <kaeptn.haddock@gmail.com>
* @author Pierre Corell <info@joomla-praxis.de>
+ * @author Mateng Schimmerlos <mateng@firemail.de>)
*/
$lang['name'] = 'Popularitäts-Feedback (Eventuell längere Ladezeit)';
$lang['submit'] = 'Daten senden';
diff --git a/lib/plugins/popularity/lang/ko/lang.php b/lib/plugins/popularity/lang/ko/lang.php
index c881b5a5a..3463f4f8e 100644
--- a/lib/plugins/popularity/lang/ko/lang.php
+++ b/lib/plugins/popularity/lang/ko/lang.php
@@ -9,10 +9,10 @@
* @author erial2@gmail.com
* @author Myeongjin <aranet100@gmail.com>
*/
-$lang['name'] = '인기도 조사 (불러오는데 시간이 걸릴 수 있습니다.)';
+$lang['name'] = '인기도 조사 (불러오는 데 시간이 걸릴 수 있습니다)';
$lang['submit'] = '자료 보내기';
$lang['autosubmit'] = '자료를 자동으로 매달 한번씩 보내기';
$lang['submissionFailed'] = '다음과 같은 이유로 자료 보내기에 실패했습니다:';
-$lang['submitDirectly'] = '아래의 양식에 맞춰 수동으로 작성된 자료를 보낼 수 있습니다';
+$lang['submitDirectly'] = '아래의 양식에 맞춰 수동으로 작성된 자료를 보낼 수 있습니다.';
$lang['autosubmitError'] = '다음과 같은 이유로 자동 자료 보내기에 실패했습니다:';
$lang['lastSent'] = '자료를 보냈습니다';
diff --git a/lib/plugins/revert/lang/de/lang.php b/lib/plugins/revert/lang/de/lang.php
index b430ce876..39acd3c37 100644
--- a/lib/plugins/revert/lang/de/lang.php
+++ b/lib/plugins/revert/lang/de/lang.php
@@ -16,6 +16,7 @@
* @author Christian Wichmann <nospam@zone0.de>
* @author Paul Lachewsky <kaeptn.haddock@gmail.com>
* @author Pierre Corell <info@joomla-praxis.de>
+ * @author Mateng Schimmerlos <mateng@firemail.de>)
*/
$lang['menu'] = 'Seiten wieder herstellen';
$lang['filter'] = 'Nach betroffenen Seiten suchen';
diff --git a/lib/plugins/revert/lang/ko/intro.txt b/lib/plugins/revert/lang/ko/intro.txt
index 548890ecd..7aa618ba6 100644
--- a/lib/plugins/revert/lang/ko/intro.txt
+++ b/lib/plugins/revert/lang/ko/intro.txt
@@ -1,3 +1,3 @@
====== 되돌리기 관리자 ======
-스팸 공격으로부터 자동으로 되돌리는데 이 페이지가 도움이 될 수 있습니다. 스팸 공격받은 문서 목록을 찾으려면 문자열을 입력하고(예를 들어 스팸 URL) 나서 찾은 문서가 스팸 공격을 받았는지 확인하고 되돌리세요.
+스팸 공격으로부터 자동으로 되돌리는데 이 페이지가 도움이 될 수 있습니다. 스팸 공격받은 문서 목록을 찾으려면 문자열을 입력하고(예를 들어 스팸 URL) 나서 찾은 문서가 스팸 공격을 받았는지 확인하고 되돌리세요. \ No newline at end of file
diff --git a/lib/plugins/usermanager/lang/de/lang.php b/lib/plugins/usermanager/lang/de/lang.php
index 0dd90cc68..cfe528823 100644
--- a/lib/plugins/usermanager/lang/de/lang.php
+++ b/lib/plugins/usermanager/lang/de/lang.php
@@ -17,6 +17,7 @@
* @author Paul Lachewsky <kaeptn.haddock@gmail.com>
* @author Pierre Corell <info@joomla-praxis.de>
* @author Matthias Schulte <dokuwiki@lupo49.de>
+ * @author Mateng Schimmerlos <mateng@firemail.de>)
*/
$lang['menu'] = 'Benutzerverwaltung';
$lang['noauth'] = '(Authentifizierungssystem nicht verfügbar)';
diff --git a/lib/plugins/usermanager/lang/ko/add.txt b/lib/plugins/usermanager/lang/ko/add.txt
index 578ba5636..845d8090a 100644
--- a/lib/plugins/usermanager/lang/ko/add.txt
+++ b/lib/plugins/usermanager/lang/ko/add.txt
@@ -1 +1 @@
-===== 사용자 추가 =====
+===== 사용자 추가 ===== \ No newline at end of file
diff --git a/lib/plugins/usermanager/lang/ko/delete.txt b/lib/plugins/usermanager/lang/ko/delete.txt
index 1e9c0ba73..52b8209a1 100644
--- a/lib/plugins/usermanager/lang/ko/delete.txt
+++ b/lib/plugins/usermanager/lang/ko/delete.txt
@@ -1 +1 @@
-===== 사용자 삭제 =====
+===== 사용자 삭제 ===== \ No newline at end of file
diff --git a/lib/plugins/usermanager/lang/ko/edit.txt b/lib/plugins/usermanager/lang/ko/edit.txt
index ebb5bb002..a938c5b2e 100644
--- a/lib/plugins/usermanager/lang/ko/edit.txt
+++ b/lib/plugins/usermanager/lang/ko/edit.txt
@@ -1 +1 @@
-===== 사용자 정보 편집 =====
+===== 사용자 정보 편집 ===== \ No newline at end of file
diff --git a/lib/plugins/usermanager/lang/ko/intro.txt b/lib/plugins/usermanager/lang/ko/intro.txt
index 8c8bfa5b9..d75680c71 100644
--- a/lib/plugins/usermanager/lang/ko/intro.txt
+++ b/lib/plugins/usermanager/lang/ko/intro.txt
@@ -1 +1 @@
-====== 사용자 관리 ======
+====== 사용자 관리 ====== \ No newline at end of file
diff --git a/lib/plugins/usermanager/lang/ko/list.txt b/lib/plugins/usermanager/lang/ko/list.txt
index 93fa3d6f2..2a1b45bfb 100644
--- a/lib/plugins/usermanager/lang/ko/list.txt
+++ b/lib/plugins/usermanager/lang/ko/list.txt
@@ -1 +1 @@
-===== 사용자 목록 =====
+===== 사용자 목록 ===== \ No newline at end of file
diff --git a/lib/plugins/usermanager/lang/nl/lang.php b/lib/plugins/usermanager/lang/nl/lang.php
index 8f30ce3ea..e960e9a14 100644
--- a/lib/plugins/usermanager/lang/nl/lang.php
+++ b/lib/plugins/usermanager/lang/nl/lang.php
@@ -17,7 +17,7 @@
*/
$lang['menu'] = 'Gebruikersmanager';
$lang['noauth'] = '(gebruikersauthenticatie niet beschikbaar)';
-$lang['nosupport'] = '(gebruikersmanagement niet ondersteund)';
+$lang['nosupport'] = '(gebruikersbeheer niet ondersteund)';
$lang['badauth'] = 'ongeldige authenticatiemethode';
$lang['user_id'] = 'Gebruiker';
$lang['user_pass'] = 'Wachtwoord';
diff --git a/lib/scripts/jquery/jquery-ui-theme/images/animated-overlay.gif b/lib/scripts/jquery/jquery-ui-theme/images/animated-overlay.gif
new file mode 100644
index 000000000..d441f75eb
--- /dev/null
+++ b/lib/scripts/jquery/jquery-ui-theme/images/animated-overlay.gif
Binary files differ
diff --git a/lib/scripts/jquery/update.sh b/lib/scripts/jquery/update.sh
index 3bc2c761e..749b0f4e2 100755
--- a/lib/scripts/jquery/update.sh
+++ b/lib/scripts/jquery/update.sh
@@ -19,7 +19,7 @@ wget -nv https://ajax.googleapis.com/ajax/libs/jqueryui/1/jquery-ui.js -O jq
# load the smoothness theme
mkdir -p jquery-ui-theme/images
wget -nv -qO- https://ajax.googleapis.com/ajax/libs/jqueryui/1/themes/smoothness/jquery-ui.css | sed "s/font-family:[^;]*;//" > jquery-ui-theme/smoothness.css
-images=`gawk 'match($0, /url\((images\/[^\)]+)\)/, m) { print m[1] }' jquery-ui-theme/smoothness.css`
+images=`gawk 'match($0, /url\("?(images\/[^\)"]+)"?\)/, m) { print m[1] }' jquery-ui-theme/smoothness.css`
for img in $images
do
wget -nv https://ajax.googleapis.com/ajax/libs/jqueryui/1/themes/smoothness/$img -O jquery-ui-theme/$img
diff --git a/lib/styles/screen.css b/lib/styles/screen.css
index 241904d7c..2d84f65eb 100644
--- a/lib/styles/screen.css
+++ b/lib/styles/screen.css
@@ -20,6 +20,15 @@ div.notify {
border-radius: 5px;
}
+[dir=rtl] div.error,
+[dir=rtl] div.info,
+[dir=rtl] div.success,
+[dir=rtl] div.notify {
+ background-position: 99% 50%;
+ padding-left: .4em;
+ padding-right: 32px;
+}
+
div.error {
background-color: #fcc;
background-image: url(../images/error.png);
diff --git a/lib/tpl/dokuwiki/css/print.css b/lib/tpl/dokuwiki/css/print.css
index e0eaab848..86e686b69 100644
--- a/lib/tpl/dokuwiki/css/print.css
+++ b/lib/tpl/dokuwiki/css/print.css
@@ -106,7 +106,7 @@ blockquote {
border: solid #ccc;
border-width: 0 0 0 2pt;
}
-[dir=rtl] .dokuwiki blockquote {
+[dir=rtl] blockquote {
border-width: 0 2pt 0 0;
}