summaryrefslogtreecommitdiff
path: root/inc
diff options
context:
space:
mode:
Diffstat (limited to 'inc')
-rw-r--r--inc/EmailAddressValidator.php20
-rw-r--r--inc/HTTPClient.php35
-rw-r--r--inc/Input.class.php18
-rw-r--r--inc/JpegMeta.php19
-rw-r--r--inc/Mailer.class.php69
-rw-r--r--inc/RemoteAPICore.php23
-rw-r--r--inc/Sitemapper.php4
-rw-r--r--inc/Tar.class.php2
-rw-r--r--inc/actions.php36
-rw-r--r--inc/auth.php136
-rw-r--r--inc/cache.php100
-rw-r--r--inc/changelog.php8
-rw-r--r--inc/cliopts.php23
-rw-r--r--inc/common.php135
-rw-r--r--inc/compatibility.php36
-rw-r--r--inc/config_cascade.php3
-rw-r--r--inc/confutils.php3
-rw-r--r--inc/events.php92
-rw-r--r--inc/farm.php2
-rw-r--r--inc/feedcreator.class.php99
-rw-r--r--inc/fetch.functions.php15
-rw-r--r--inc/form.php24
-rw-r--r--inc/fulltext.php30
-rw-r--r--inc/html.php51
-rw-r--r--inc/httputils.php16
-rw-r--r--inc/indexer.php47
-rw-r--r--inc/infoutils.php23
-rw-r--r--inc/init.php44
-rw-r--r--inc/io.php54
-rw-r--r--inc/lang/af/jquery.ui.datepicker.js23
-rw-r--r--inc/lang/af/lang.php1
-rw-r--r--inc/lang/ar/jquery.ui.datepicker.js23
-rw-r--r--inc/lang/ar/lang.php26
-rw-r--r--inc/lang/az/jquery.ui.datepicker.js23
-rw-r--r--inc/lang/az/lang.php7
-rw-r--r--inc/lang/bg/jquery.ui.datepicker.js24
-rw-r--r--inc/lang/bg/lang.php56
-rw-r--r--inc/lang/bn/admin.txt3
-rw-r--r--inc/lang/bn/adminplugins.txt1
-rw-r--r--inc/lang/bn/backlinks.txt3
-rw-r--r--inc/lang/bn/conflict.txt5
-rw-r--r--inc/lang/bn/denied.txt3
-rw-r--r--inc/lang/bn/diff.txt3
-rw-r--r--inc/lang/bn/draft.txt5
-rw-r--r--inc/lang/bn/edit.txt1
-rw-r--r--inc/lang/bn/editrev.txt2
-rw-r--r--inc/lang/bn/index.txt3
-rw-r--r--inc/lang/bn/lang.php160
-rw-r--r--inc/lang/ca-valencia/lang.php8
-rw-r--r--inc/lang/ca/jquery.ui.datepicker.js23
-rw-r--r--inc/lang/cs/jquery.ui.datepicker.js23
-rw-r--r--inc/lang/cs/lang.php6
-rw-r--r--inc/lang/da/jquery.ui.datepicker.js23
-rw-r--r--inc/lang/da/lang.php16
-rw-r--r--inc/lang/de-informal/jquery.ui.datepicker.js23
-rw-r--r--inc/lang/de-informal/lang.php6
-rw-r--r--inc/lang/de/jquery.ui.datepicker.js23
-rw-r--r--inc/lang/de/lang.php9
-rw-r--r--inc/lang/el/jquery.ui.datepicker.js23
-rw-r--r--inc/lang/el/lang.php10
-rw-r--r--inc/lang/en/lang.php7
-rw-r--r--inc/lang/eo/admin.txt4
-rw-r--r--inc/lang/eo/adminplugins.txt2
-rw-r--r--inc/lang/eo/diff.txt2
-rw-r--r--inc/lang/eo/draft.txt2
-rw-r--r--inc/lang/eo/edit.txt2
-rw-r--r--inc/lang/eo/editrev.txt2
-rw-r--r--inc/lang/eo/jquery.ui.datepicker.js23
-rw-r--r--inc/lang/eo/lang.php17
-rw-r--r--inc/lang/es/jquery.ui.datepicker.js23
-rw-r--r--inc/lang/es/lang.php7
-rw-r--r--inc/lang/et/adminplugins.txt1
-rw-r--r--inc/lang/et/jquery.ui.datepicker.js23
-rw-r--r--inc/lang/et/lang.php113
-rw-r--r--inc/lang/et/resetpwd.txt3
-rw-r--r--inc/lang/et/subscr_digest.txt21
-rw-r--r--inc/lang/et/subscr_form.txt3
-rw-r--r--inc/lang/et/subscr_list.txt19
-rw-r--r--inc/lang/et/subscr_single.txt23
-rw-r--r--inc/lang/et/uploadmail.txt16
-rw-r--r--inc/lang/eu/jquery.ui.datepicker.js23
-rw-r--r--inc/lang/fa/jquery.ui.datepicker.js59
-rw-r--r--inc/lang/fa/lang.php2
-rw-r--r--inc/lang/fi/jquery.ui.datepicker.js23
-rw-r--r--inc/lang/fi/lang.php17
-rw-r--r--inc/lang/fo/jquery.ui.datepicker.js23
-rw-r--r--inc/lang/fr/denied.txt2
-rw-r--r--inc/lang/fr/jquery.ui.datepicker.js25
-rw-r--r--inc/lang/fr/lang.php15
-rw-r--r--inc/lang/gl/jquery.ui.datepicker.js23
-rw-r--r--inc/lang/he/jquery.ui.datepicker.js23
-rw-r--r--inc/lang/he/lang.php69
-rw-r--r--inc/lang/hi/jquery.ui.datepicker.js23
-rw-r--r--inc/lang/hr/jquery.ui.datepicker.js23
-rw-r--r--inc/lang/hu-formal/admin.txt3
-rw-r--r--inc/lang/hu-formal/adminplugins.txt1
-rw-r--r--inc/lang/hu-formal/backlinks.txt3
-rw-r--r--inc/lang/hu-formal/conflict.txt5
-rw-r--r--inc/lang/hu-formal/denied.txt3
-rw-r--r--inc/lang/hu-formal/diff.txt3
-rw-r--r--inc/lang/hu-formal/draft.txt5
-rw-r--r--inc/lang/hu-formal/edit.txt1
-rw-r--r--inc/lang/hu-formal/editrev.txt2
-rw-r--r--inc/lang/hu-formal/index.txt3
-rw-r--r--inc/lang/hu-formal/lang.php27
-rw-r--r--inc/lang/hu/jquery.ui.datepicker.js23
-rw-r--r--inc/lang/hu/lang.php6
-rw-r--r--inc/lang/id/adminplugins.txt1
-rw-r--r--inc/lang/id/jquery.ui.datepicker.js23
-rw-r--r--inc/lang/id/lang.php50
-rw-r--r--inc/lang/is/jquery.ui.datepicker.js23
-rw-r--r--inc/lang/is/lang.php1
-rw-r--r--inc/lang/it/jquery.ui.datepicker.js23
-rw-r--r--inc/lang/it/lang.php5
-rw-r--r--inc/lang/ja/jquery.ui.datepicker.js23
-rw-r--r--inc/lang/ja/lang.php5
-rw-r--r--inc/lang/ja/subscr_digest.txt2
-rw-r--r--inc/lang/ja/subscr_list.txt2
-rw-r--r--inc/lang/ja/subscr_single.txt2
-rw-r--r--inc/lang/kk/jquery.ui.datepicker.js23
-rw-r--r--inc/lang/km/jquery.ui.datepicker.js23
-rw-r--r--inc/lang/km/lang.php16
-rw-r--r--inc/lang/ko/denied.txt2
-rw-r--r--inc/lang/ko/editrev.txt2
-rw-r--r--inc/lang/ko/install.html26
-rw-r--r--inc/lang/ko/jquery.ui.datepicker.js23
-rw-r--r--inc/lang/ko/lang.php54
-rw-r--r--inc/lang/ko/mailtext.txt16
-rw-r--r--inc/lang/ko/password.txt4
-rw-r--r--inc/lang/ko/register.txt2
-rw-r--r--inc/lang/ko/registermail.txt14
-rw-r--r--inc/lang/ko/searchpage.txt4
-rw-r--r--inc/lang/ko/subscr_digest.txt6
-rw-r--r--inc/lang/ko/subscr_list.txt4
-rw-r--r--inc/lang/ko/subscr_single.txt12
-rw-r--r--inc/lang/ko/uploadmail.txt18
-rw-r--r--inc/lang/ku/lang.php21
-rw-r--r--inc/lang/lb/jquery.ui.datepicker.js23
-rw-r--r--inc/lang/lt/jquery.ui.datepicker.js23
-rw-r--r--inc/lang/lt/lang.php6
-rw-r--r--inc/lang/lv/jquery.ui.datepicker.js23
-rw-r--r--inc/lang/mg/lang.php14
-rw-r--r--inc/lang/mk/jquery.ui.datepicker.js23
-rw-r--r--inc/lang/ms/jquery.ui.datepicker.js23
-rw-r--r--inc/lang/nl/edit.txt2
-rw-r--r--inc/lang/nl/jquery.ui.datepicker.js23
-rw-r--r--inc/lang/nl/lang.php12
-rw-r--r--inc/lang/nl/mailtext.txt4
-rw-r--r--inc/lang/nl/read.txt2
-rw-r--r--inc/lang/nl/resendpwd.txt2
-rw-r--r--inc/lang/nl/subscr_form.txt2
-rw-r--r--inc/lang/nl/subscr_list.txt2
-rw-r--r--inc/lang/no/jquery.ui.datepicker.js23
-rw-r--r--inc/lang/no/lang.php33
-rw-r--r--inc/lang/pl/jquery.ui.datepicker.js23
-rw-r--r--inc/lang/pl/lang.php26
-rw-r--r--inc/lang/pt-br/editrev.txt2
-rw-r--r--inc/lang/pt-br/index.txt2
-rw-r--r--inc/lang/pt-br/jquery.ui.datepicker.js23
-rw-r--r--inc/lang/pt-br/lang.php8
-rw-r--r--inc/lang/pt/jquery.ui.datepicker.js22
-rw-r--r--inc/lang/ro/admin.txt2
-rw-r--r--inc/lang/ro/adminplugins.txt2
-rw-r--r--inc/lang/ro/backlinks.txt1
-rw-r--r--inc/lang/ro/conflict.txt7
-rw-r--r--inc/lang/ro/denied.txt6
-rw-r--r--inc/lang/ro/diff.txt3
-rw-r--r--inc/lang/ro/draft.txt7
-rw-r--r--inc/lang/ro/edit.txt3
-rw-r--r--inc/lang/ro/editrev.txt3
-rw-r--r--inc/lang/ro/index.txt4
-rw-r--r--inc/lang/ro/install.html12
-rw-r--r--inc/lang/ro/jquery.ui.datepicker.js26
-rw-r--r--inc/lang/ro/lang.php24
-rw-r--r--inc/lang/ro/locked.txt3
-rw-r--r--inc/lang/ro/login.txt6
-rw-r--r--inc/lang/ro/mailtext.txt23
-rw-r--r--inc/lang/ro/newpage.txt4
-rw-r--r--inc/lang/ro/norev.txt6
-rw-r--r--inc/lang/ro/password.txt8
-rw-r--r--inc/lang/ro/preview.txt3
-rw-r--r--inc/lang/ro/pwconfirm.txt13
-rw-r--r--inc/lang/ro/read.txt4
-rw-r--r--inc/lang/ro/recent.txt6
-rw-r--r--inc/lang/ro/register.txt3
-rw-r--r--inc/lang/ro/registermail.txt13
-rw-r--r--inc/lang/ro/resendpwd.txt4
-rw-r--r--inc/lang/ro/resetpwd.txt4
-rw-r--r--inc/lang/ro/revisions.txt7
-rw-r--r--inc/lang/ro/searchpage.txt2
-rw-r--r--inc/lang/ro/showrev.txt2
-rw-r--r--inc/lang/ro/stopwords.txt6
-rw-r--r--inc/lang/ro/subscr_digest.txt18
-rw-r--r--inc/lang/ro/subscr_form.txt3
-rw-r--r--inc/lang/ro/subscr_list.txt16
-rw-r--r--inc/lang/ro/subscr_single.txt22
-rw-r--r--inc/lang/ro/updateprofile.txt3
-rw-r--r--inc/lang/ro/uploadmail.txt8
-rw-r--r--inc/lang/ru/admin.txt2
-rw-r--r--inc/lang/ru/jquery.ui.datepicker.js23
-rw-r--r--inc/lang/ru/lang.php34
-rw-r--r--inc/lang/ru/mailtext.txt2
-rw-r--r--inc/lang/ru/norev.txt1
-rw-r--r--inc/lang/ru/password.txt2
-rw-r--r--inc/lang/ru/pwconfirm.txt2
-rw-r--r--inc/lang/ru/registermail.txt2
-rw-r--r--inc/lang/ru/subscr_digest.txt4
-rw-r--r--inc/lang/ru/subscr_list.txt4
-rw-r--r--inc/lang/ru/subscr_single.txt4
-rw-r--r--inc/lang/ru/uploadmail.txt2
-rw-r--r--inc/lang/sk/jquery.ui.datepicker.js23
-rw-r--r--inc/lang/sk/lang.php5
-rw-r--r--inc/lang/sl/jquery.ui.datepicker.js24
-rw-r--r--inc/lang/sl/lang.php10
-rw-r--r--inc/lang/sl/resetpwd.txt1
-rw-r--r--inc/lang/sq/jquery.ui.datepicker.js23
-rw-r--r--inc/lang/sr/jquery.ui.datepicker.js23
-rw-r--r--inc/lang/sv/jquery.ui.datepicker.js23
-rw-r--r--inc/lang/sv/lang.php12
-rw-r--r--inc/lang/sv/subscr_digest.txt19
-rw-r--r--inc/lang/th/jquery.ui.datepicker.js23
-rw-r--r--inc/lang/th/lang.php6
-rw-r--r--inc/lang/tr/adminplugins.txt1
-rw-r--r--inc/lang/tr/jquery.ui.datepicker.js23
-rw-r--r--inc/lang/tr/lang.php27
-rw-r--r--inc/lang/uk/jquery.ui.datepicker.js24
-rw-r--r--inc/lang/vi/jquery.ui.datepicker.js23
-rw-r--r--inc/lang/vi/lang.php221
-rw-r--r--inc/lang/zh-tw/jquery.ui.datepicker.js23
-rw-r--r--inc/lang/zh-tw/lang.php25
-rw-r--r--inc/lang/zh/jquery.ui.datepicker.js23
-rw-r--r--inc/lang/zh/lang.php21
-rw-r--r--inc/lessc.inc.php2
-rw-r--r--inc/load.php8
-rw-r--r--inc/mail.php17
-rw-r--r--inc/media.php166
-rw-r--r--inc/pageutils.php34
-rw-r--r--inc/parser/code.php1
-rw-r--r--inc/parser/handler.php7
-rw-r--r--inc/parser/metadata.php11
-rw-r--r--inc/parser/parser.php84
-rw-r--r--inc/parser/renderer.php20
-rw-r--r--inc/parser/xhtml.php141
-rw-r--r--inc/parser/xhtmlsummary.php1
-rw-r--r--inc/parserutils.php62
-rw-r--r--inc/plugin.php27
-rw-r--r--inc/plugincontroller.class.php118
-rw-r--r--inc/pluginutils.php61
-rw-r--r--inc/remote.php5
-rw-r--r--inc/search.php79
-rw-r--r--inc/subscription.php24
-rw-r--r--inc/template.php91
-rw-r--r--inc/toolbar.php6
253 files changed, 4023 insertions, 1170 deletions
diff --git a/inc/EmailAddressValidator.php b/inc/EmailAddressValidator.php
index bb4ef0ca9..fd6f3275b 100644
--- a/inc/EmailAddressValidator.php
+++ b/inc/EmailAddressValidator.php
@@ -15,8 +15,8 @@ class EmailAddressValidator {
/**
* Check email address validity
- * @param strEmailAddress Email address to be checked
- * @return True if email is valid, false if not
+ * @param string $strEmailAddress Email address to be checked
+ * @return bool True if email is valid, false if not
*/
public function check_email_address($strEmailAddress) {
@@ -82,8 +82,8 @@ class EmailAddressValidator {
/**
* Checks email section before "@" symbol for validity
- * @param strLocalPortion Text to be checked
- * @return True if local portion is valid, false if not
+ * @param string $strLocalPortion Text to be checked
+ * @return bool True if local portion is valid, false if not
*/
protected function check_local_portion($strLocalPortion) {
// Local portion can only be from 1 to 64 characters, inclusive.
@@ -113,8 +113,8 @@ class EmailAddressValidator {
/**
* Checks email section after "@" symbol for validity
- * @param strDomainPortion Text to be checked
- * @return True if domain portion is valid, false if not
+ * @param string $strDomainPortion Text to be checked
+ * @return bool True if domain portion is valid, false if not
*/
protected function check_domain_portion($strDomainPortion) {
// Total domain can only be from 1 to 255 characters, inclusive
@@ -172,10 +172,10 @@ class EmailAddressValidator {
/**
* Check given text length is between defined bounds
- * @param strText Text to be checked
- * @param intMinimum Minimum acceptable length
- * @param intMaximum Maximum acceptable length
- * @return True if string is within bounds (inclusive), false if not
+ * @param string $strText Text to be checked
+ * @param int $intMinimum Minimum acceptable length
+ * @param int $intMaximum Maximum acceptable length
+ * @return bool True if string is within bounds (inclusive), false if not
*/
protected function check_text_length($strText, $intMinimum, $intMaximum) {
// Minimum and maximum are both inclusive
diff --git a/inc/HTTPClient.php b/inc/HTTPClient.php
index b2621bdbb..53f3c9a78 100644
--- a/inc/HTTPClient.php
+++ b/inc/HTTPClient.php
@@ -254,7 +254,13 @@ class HTTPClient {
}
// add SSL stream prefix if needed - needs SSL support in PHP
- if($port == 443 || $this->proxy_ssl) $server = 'ssl://'.$server;
+ if($port == 443 || $this->proxy_ssl) {
+ if(!in_array('ssl', stream_get_transports())) {
+ $this->status = -200;
+ $this->error = 'This PHP version does not support SSL - cannot connect to server';
+ }
+ $server = 'ssl://'.$server;
+ }
// prepare headers
$headers = $this->headers;
@@ -304,11 +310,18 @@ class HTTPClient {
}
// try establish a CONNECT tunnel for SSL
- if($this->_ssltunnel($socket, $request_url)){
- // no keep alive for tunnels
- $this->keep_alive = false;
- // tunnel is authed already
- if(isset($headers['Proxy-Authentication'])) unset($headers['Proxy-Authentication']);
+ try {
+ if($this->_ssltunnel($socket, $request_url)){
+ // no keep alive for tunnels
+ $this->keep_alive = false;
+ // tunnel is authed already
+ if(isset($headers['Proxy-Authentication'])) unset($headers['Proxy-Authentication']);
+ }
+ } catch (HTTPClientException $e) {
+ $this->status = $e->getCode();
+ $this->error = $e->getMessage();
+ fclose($socket);
+ return false;
}
// keep alive?
@@ -363,7 +376,7 @@ class HTTPClient {
// get Status
if (!preg_match('/^HTTP\/(\d\.\d)\s*(\d+).*?\n/', $r_headers, $m))
- throw new HTTPClientException('Server returned bad answer');
+ throw new HTTPClientException('Server returned bad answer '.$r_headers);
$this->status = $m[2];
@@ -526,6 +539,7 @@ class HTTPClient {
*
* @param resource &$socket
* @param string &$requesturl
+ * @throws HTTPClientException when a tunnel is needed but could not be established
* @return bool true if a tunnel was established
*/
function _ssltunnel(&$socket, &$requesturl){
@@ -538,7 +552,7 @@ class HTTPClient {
$request = "CONNECT {$requestinfo['host']}:{$requestinfo['port']} HTTP/1.0".HTTP_NL;
$request .= "Host: {$requestinfo['host']}".HTTP_NL;
if($this->proxy_user) {
- 'Proxy-Authorization Basic '.base64_encode($this->proxy_user.':'.$this->proxy_pass).HTTP_NL;
+ $request .= 'Proxy-Authorization Basic '.base64_encode($this->proxy_user.':'.$this->proxy_pass).HTTP_NL;
}
$request .= HTTP_NL;
@@ -553,13 +567,14 @@ class HTTPClient {
}while($r_line != "\r\n" && $r_line != "\n");
$this->_debug('SSL Tunnel Response',$r_headers);
- if(preg_match('/^HTTP\/1\.0 200/i',$r_headers)){
+ if(preg_match('/^HTTP\/1\.[01] 200/i',$r_headers)){
if (stream_socket_enable_crypto($socket, true, STREAM_CRYPTO_METHOD_SSLv3_CLIENT)) {
$requesturl = $requestinfo['path'];
return true;
}
}
- return false;
+
+ throw new HTTPClientException('Failed to establish secure proxy connection', -150);
}
/**
diff --git a/inc/Input.class.php b/inc/Input.class.php
index 7434d2b2c..de8bf5b97 100644
--- a/inc/Input.class.php
+++ b/inc/Input.class.php
@@ -15,6 +15,8 @@ class Input {
public $post;
/** @var GetInput Access $_GET parameters */
public $get;
+ /** @var ServerInput Access $_SERVER parameters */
+ public $server;
protected $access;
@@ -25,6 +27,7 @@ class Input {
$this->access = &$_REQUEST;
$this->post = new PostInput();
$this->get = new GetInput();
+ $this->server = new ServerInput();
}
/**
@@ -260,3 +263,18 @@ class GetInput extends Input {
$_REQUEST[$name] = $value;
}
}
+
+/**
+ * Internal class used for $_SERVER access in Input class
+ */
+class ServerInput extends Input {
+ protected $access;
+
+ /**
+ * Initialize the $access array, remove subclass members
+ */
+ function __construct() {
+ $this->access = &$_SERVER;
+ }
+
+}
diff --git a/inc/JpegMeta.php b/inc/JpegMeta.php
index ba6a2b5bb..a35ec3ed0 100644
--- a/inc/JpegMeta.php
+++ b/inc/JpegMeta.php
@@ -161,7 +161,7 @@ class JpegMeta {
if($info != false) break;
}
- if($info === false) $info = $alt;
+ if($info === false) $info = '';
if(is_array($info)){
if(isset($info['val'])){
$info = $info['val'];
@@ -874,7 +874,7 @@ class JpegMeta {
/*************************************************************/
/*************************************************************/
- function _dispose() {
+ function _dispose($fileName = "") {
$this->_fileName = $fileName;
$this->_fp = null;
@@ -975,7 +975,7 @@ class JpegMeta {
if ($capture) {
if ($length)
- $this->_markers[$count]['data'] =& fread($this->_fp, $length);
+ $this->_markers[$count]['data'] = fread($this->_fp, $length);
else
$this->_markers[$count]['data'] = "";
}
@@ -1452,7 +1452,7 @@ class JpegMeta {
if ($this->_markers[$i]['marker'] == 0xE1) {
$signature = $this->_getFixedString($this->_markers[$i]['data'], 0, 29);
if ($signature == "http://ns.adobe.com/xap/1.0/\0") {
- $data =& substr($this->_markers[$i]['data'], 29);
+ $data = substr($this->_markers[$i]['data'], 29);
break;
}
}
@@ -2183,7 +2183,8 @@ class JpegMeta {
}
while ($j < $count) {
- $this->_putString($value, $j * 4, "\0\0\0\0");
+ $v = "\0\0\0\0";
+ $this->_putString($value, $j * 4, $v);
$j++;
}
break;
@@ -2206,7 +2207,8 @@ class JpegMeta {
}
while ($j < $count) {
- $this->_putString($value, $j * 8, "\0\0\0\0\0\0\0\0");
+ $v = "\0\0\0\0\0\0\0\0";
+ $this->_putString($value, $j * 8, $v);
$j++;
}
break;
@@ -2335,7 +2337,7 @@ class JpegMeta {
function _readIPTC(&$data, $pos = 0) {
$totalLength = strlen($data);
- $IPTCTags =& $this->_iptcTagNames();
+ $IPTCTags = $this->_iptcTagNames();
while ($pos < ($totalLength - 5)) {
$signature = $this->_getShort($data, $pos);
@@ -2927,7 +2929,8 @@ class JpegMeta {
$length = strlen($data) - $pos;
}
- return substr($data, $pos, $length);
+ $rv = substr($data, $pos, $length);
+ return $rv;
}
/*************************************************************/
diff --git a/inc/Mailer.class.php b/inc/Mailer.class.php
index 6a6468ab4..e90b45f99 100644
--- a/inc/Mailer.class.php
+++ b/inc/Mailer.class.php
@@ -39,11 +39,13 @@ class Mailer {
*/
public function __construct() {
global $conf;
+ /* @var Input $INPUT */
+ global $INPUT;
$server = parse_url(DOKU_URL, PHP_URL_HOST);
if(strpos($server,'.') === false) $server = $server.'.localhost';
- $this->partid = md5(uniqid(rand(), true)).'@'.$server;
+ $this->partid = substr(md5(uniqid(rand(), true)),0, 8).'@'.$server;
$this->boundary = '__________'.md5(uniqid(rand(), true));
$listid = join('.', array_reverse(explode('/', DOKU_BASE))).$server;
@@ -53,7 +55,7 @@ class Mailer {
// add some default headers for mailfiltering FS#2247
$this->setHeader('X-Mailer', 'DokuWiki');
- $this->setHeader('X-DokuWiki-User', $_SERVER['REMOTE_USER']);
+ $this->setHeader('X-DokuWiki-User', $INPUT->server->str('REMOTE_USER'));
$this->setHeader('X-DokuWiki-Title', $conf['title']);
$this->setHeader('X-DokuWiki-Server', $server);
$this->setHeader('X-Auto-Response-Suppress', 'OOF');
@@ -181,6 +183,9 @@ class Mailer {
public function setBody($text, $textrep = null, $htmlrep = null, $html = null, $wrap = true) {
global $INFO;
global $conf;
+ /* @var Input $INPUT */
+ global $INPUT;
+
$htmlrep = (array)$htmlrep;
$textrep = (array)$textrep;
@@ -218,24 +223,24 @@ class Mailer {
$cip = gethostsbyaddrs($ip);
$trep = array(
'DATE' => dformat(),
- 'BROWSER' => $_SERVER['HTTP_USER_AGENT'],
+ 'BROWSER' => $INPUT->server->str('HTTP_USER_AGENT'),
'IPADDRESS' => $ip,
'HOSTNAME' => $cip,
'TITLE' => $conf['title'],
'DOKUWIKIURL' => DOKU_URL,
- 'USER' => $_SERVER['REMOTE_USER'],
+ 'USER' => $INPUT->server->str('REMOTE_USER'),
'NAME' => $INFO['userinfo']['name'],
'MAIL' => $INFO['userinfo']['mail'],
);
$trep = array_merge($trep, (array)$textrep);
$hrep = array(
'DATE' => '<i>'.hsc(dformat()).'</i>',
- 'BROWSER' => hsc($_SERVER['HTTP_USER_AGENT']),
+ 'BROWSER' => hsc($INPUT->server->str('HTTP_USER_AGENT')),
'IPADDRESS' => '<code>'.hsc($ip).'</code>',
'HOSTNAME' => '<code>'.hsc($cip).'</code>',
'TITLE' => hsc($conf['title']),
'DOKUWIKIURL' => '<a href="'.DOKU_URL.'">'.DOKU_URL.'</a>',
- 'USER' => hsc($_SERVER['REMOTE_USER']),
+ 'USER' => hsc($INPUT->server->str('REMOTE_USER')),
'NAME' => hsc($INFO['userinfo']['name']),
'MAIL' => '<a href="mailto:"'.hsc($INFO['userinfo']['mail']).'">'.
hsc($INFO['userinfo']['mail']).'</a>',
@@ -277,7 +282,7 @@ class Mailer {
/**
* Add the To: recipients
*
- * @see setAddress
+ * @see cleanAddress
* @param string|array $address Multiple adresses separated by commas or as array
*/
public function to($address) {
@@ -287,7 +292,7 @@ class Mailer {
/**
* Add the Cc: recipients
*
- * @see setAddress
+ * @see cleanAddress
* @param string|array $address Multiple adresses separated by commas or as array
*/
public function cc($address) {
@@ -297,7 +302,7 @@ class Mailer {
/**
* Add the Bcc: recipients
*
- * @see setAddress
+ * @see cleanAddress
* @param string|array $address Multiple adresses separated by commas or as array
*/
public function bcc($address) {
@@ -310,7 +315,7 @@ class Mailer {
* This is set to $conf['mailfrom'] when not specified so you shouldn't need
* to call this function
*
- * @see setAddress
+ * @see cleanAddress
* @param string $address from address
*/
public function from($address) {
@@ -333,9 +338,9 @@ class Mailer {
* for headers. Addresses may not contain Non-ASCII data!
*
* Example:
- * setAddress("föö <foo@bar.com>, me@somewhere.com","TBcc");
+ * cc("föö <foo@bar.com>, me@somewhere.com","TBcc");
*
- * @param string|array $address Multiple adresses separated by commas or as array
+ * @param string|array $addresses Multiple adresses separated by commas or as array
* @return bool|string the prepared header (can contain multiple lines)
*/
public function cleanAddress($addresses) {
@@ -430,14 +435,13 @@ class Mailer {
}
$mime .= '--'.$this->boundary.MAILHEADER_EOL;
- $mime .= 'Content-Type: '.$media['mime'].';'.MAILHEADER_EOL.
- ' id="'.$cid.'"'.MAILHEADER_EOL;
- $mime .= 'Content-Transfer-Encoding: base64'.MAILHEADER_EOL;
- $mime .= "Content-ID: <$cid>".MAILHEADER_EOL;
+ $mime .= $this->wrappedHeaderLine('Content-Type', $media['mime'].'; id="'.$cid.'"');
+ $mime .= $this->wrappedHeaderLine('Content-Transfer-Encoding', 'base64');
+ $mime .= $this->wrappedHeaderLine('Content-ID',"<$cid>");
if($media['embed']) {
- $mime .= 'Content-Disposition: inline; filename='.$media['name'].''.MAILHEADER_EOL;
+ $mime .= $this->wrappedHeaderLine('Content-Disposition', 'inline; filename='.$media['name']);
} else {
- $mime .= 'Content-Disposition: attachment; filename='.$media['name'].''.MAILHEADER_EOL;
+ $mime .= $this->wrappedHeaderLine('Content-Disposition', 'attachment; filename='.$media['name']);
}
$mime .= MAILHEADER_EOL; //end of headers
$mime .= chunk_split(base64_encode($media['data']), 74, MAILHEADER_EOL);
@@ -523,7 +527,7 @@ class Mailer {
// clean up addresses
if(empty($this->headers['From'])) $this->from($conf['mailfrom']);
- $addrs = array('To', 'From', 'Cc', 'Bcc');
+ $addrs = array('To', 'From', 'Cc', 'Bcc', 'Reply-To', 'Sender');
foreach($addrs as $addr) {
if(isset($this->headers[$addr])) {
$this->headers[$addr] = $this->cleanAddress($this->headers[$addr]);
@@ -556,10 +560,17 @@ class Mailer {
}
}
- // wrap headers
- foreach($this->headers as $key => $val) {
- $this->headers[$key] = wordwrap($val, 78, MAILHEADER_EOL.' ');
- }
+ }
+
+ /**
+ * Returns a complete, EOL terminated header line, wraps it if necessary
+ *
+ * @param $key
+ * @param $val
+ * @return string
+ */
+ protected function wrappedHeaderLine($key, $val){
+ return wordwrap("$key: $val", 78, MAILHEADER_EOL.' ').MAILHEADER_EOL;
}
/**
@@ -570,8 +581,8 @@ class Mailer {
protected function prepareHeaders() {
$headers = '';
foreach($this->headers as $key => $val) {
- if ($val === '') continue;
- $headers .= "$key: $val".MAILHEADER_EOL;
+ if ($val === '' || is_null($val)) continue;
+ $headers .= $this->wrappedHeaderLine($key, $val);
}
return $headers;
}
@@ -634,16 +645,16 @@ class Mailer {
) return false;
// The To: header is special
- if(isset($this->headers['To'])) {
- $to = $this->headers['To'];
+ if(array_key_exists('To', $this->headers)) {
+ $to = (string)$this->headers['To'];
unset($this->headers['To']);
} else {
$to = '';
}
// so is the subject
- if(isset($this->headers['Subject'])) {
- $subject = $this->headers['Subject'];
+ if(array_key_exists('Subject', $this->headers)) {
+ $subject = (string)$this->headers['Subject'];
unset($this->headers['Subject']);
} else {
$subject = '';
diff --git a/inc/RemoteAPICore.php b/inc/RemoteAPICore.php
index 74c6689ac..a26c2d0de 100644
--- a/inc/RemoteAPICore.php
+++ b/inc/RemoteAPICore.php
@@ -3,7 +3,7 @@
/**
* Increased whenever the API is changed
*/
-define('DOKU_API_VERSION', 8);
+define('DOKU_API_VERSION', 9);
class RemoteAPICore {
@@ -24,6 +24,10 @@ class RemoteAPICore {
'return' => 'int',
'doc' => 'Tries to login with the given credentials and sets auth cookies.',
'public' => '1'
+ ), 'dokuwiki.logoff' => array(
+ 'args' => array(),
+ 'return' => 'int',
+ 'doc' => 'Tries to logoff by expiring auth cookies and the associated PHP session.'
), 'dokuwiki.getPagelist' => array(
'args' => array('string', 'array'),
'return' => 'array',
@@ -88,12 +92,12 @@ class RemoteAPICore {
), 'wiki.getPageInfo' => array(
'args' => array('string'),
'return' => 'array',
- 'doc' => 'Returns a struct with infos about the page.',
+ 'doc' => 'Returns a struct with info about the page.',
'name' => 'pageInfo'
), 'wiki.getPageInfoVersion' => array(
'args' => array('string', 'int'),
'return' => 'array',
- 'doc' => 'Returns a struct with infos about the page.',
+ 'doc' => 'Returns a struct with info about the page.',
'name' => 'pageInfo'
), 'wiki.getPageVersions' => array(
'args' => array('string', 'int'),
@@ -136,7 +140,7 @@ class RemoteAPICore {
), 'wiki.getAttachmentInfo' => array(
'args' => array('string'),
'return' => 'array',
- 'doc' => 'Returns a struct with infos about the attachment.'
+ 'doc' => 'Returns a struct with info about the attachment.'
), 'dokuwiki.getXMLRPCAPIVersion' => array(
'args' => array(),
'name' => 'getAPIVersion',
@@ -767,6 +771,17 @@ class RemoteAPICore {
return $ok;
}
+ function logoff(){
+ global $conf;
+ global $auth;
+ if(!$conf['useacl']) return 0;
+ if(!$auth) return 0;
+
+ auth_logoff();
+
+ return 1;
+ }
+
private function resolvePageId($id) {
$id = cleanID($id);
if(empty($id)) {
diff --git a/inc/Sitemapper.php b/inc/Sitemapper.php
index bf89a311c..6332746a6 100644
--- a/inc/Sitemapper.php
+++ b/inc/Sitemapper.php
@@ -131,9 +131,9 @@ class Sitemapper {
$encoded_sitemap_url = urlencode(wl('', array('do' => 'sitemap'), true, '&'));
$ping_urls = array(
- 'google' => 'http://www.google.com/webmasters/sitemaps/ping?sitemap='.$encoded_sitemap_url,
- 'yahoo' => 'http://search.yahooapis.com/SiteExplorerService/V1/updateNotification?appid=dokuwiki&url='.$encoded_sitemap_url,
+ 'google' => 'http://www.google.com/webmasters/sitemaps/ping?sitemap='.$encoded_sitemap_url,
'microsoft' => 'http://www.bing.com/webmaster/ping.aspx?siteMap='.$encoded_sitemap_url,
+ 'yandex' => 'http://blogs.yandex.ru/pings/?status=success&url='.$encoded_sitemap_url
);
$data = array('ping_urls' => $ping_urls,
diff --git a/inc/Tar.class.php b/inc/Tar.class.php
index bc87d7d29..903f7f35c 100644
--- a/inc/Tar.class.php
+++ b/inc/Tar.class.php
@@ -114,7 +114,7 @@ class Tar {
$header = $this->parseHeader($read);
if(!is_array($header)) continue;
- $this->skipbytes(ceil($header['size'] / 512) * 512, 1);
+ $this->skipbytes(ceil($header['size'] / 512) * 512);
$result[] = $header;
}
diff --git a/inc/actions.php b/inc/actions.php
index bf124c887..ef09a0dc7 100644
--- a/inc/actions.php
+++ b/inc/actions.php
@@ -20,6 +20,7 @@ function act_dispatch(){
global $ID;
global $INFO;
global $QUERY;
+ /* @var Input $INPUT */
global $INPUT;
global $lang;
global $conf;
@@ -53,7 +54,7 @@ function act_dispatch(){
}
}
- //display some infos
+ //display some info
if($ACT == 'check'){
check();
$ACT = 'show';
@@ -94,7 +95,7 @@ function act_dispatch(){
// user profile changes
if (in_array($ACT, array('profile','profile_delete'))) {
- if(!$_SERVER['REMOTE_USER']) {
+ if(!$INPUT->server->str('REMOTE_USER')) {
$ACT = 'login';
} else {
switch ($ACT) {
@@ -164,7 +165,8 @@ function act_dispatch(){
$pluginlist = plugin_list('admin');
if (in_array($page, $pluginlist)) {
// attempt to load the plugin
- if ($plugin =& plugin_load('admin',$page) !== null){
+
+ if (($plugin = plugin_load('admin',$page)) !== null){
/** @var DokuWiki_Admin_Plugin $plugin */
if($plugin->forAdminOnly() && !$INFO['isadmin']){
// a manager tried to load a plugin that's for admins only
@@ -189,7 +191,7 @@ function act_dispatch(){
unset($evt);
// when action 'show', the intial not 'show' and POST, do a redirect
- if($ACT == 'show' && $preact != 'show' && strtolower($_SERVER['REQUEST_METHOD']) == 'post'){
+ if($ACT == 'show' && $preact != 'show' && strtolower($INPUT->server->str('REQUEST_METHOD')) == 'post'){
act_redirect($ID,$preact);
}
@@ -413,6 +415,8 @@ function act_revert($act){
global $ID;
global $REV;
global $lang;
+ /* @var Input $INPUT */
+ global $INPUT;
// FIXME $INFO['writable'] currently refers to the attic version
// global $INFO;
// if (!$INFO['writable']) {
@@ -444,7 +448,7 @@ function act_revert($act){
session_write_close();
// when done, show current page
- $_SERVER['REQUEST_METHOD'] = 'post'; //should force a redirect
+ $INPUT->server->set('REQUEST_METHOD','post'); //should force a redirect
$REV = '';
return 'show';
}
@@ -492,17 +496,20 @@ function act_redirect_execute($opts){
function act_auth($act){
global $ID;
global $INFO;
+ /* @var Input $INPUT */
+ global $INPUT;
//already logged in?
- if(isset($_SERVER['REMOTE_USER']) && $act=='login'){
+ if($INPUT->server->has('REMOTE_USER') && $act=='login'){
return 'show';
}
//handle logout
if($act=='logout'){
$lockedby = checklock($ID); //page still locked?
- if($lockedby == $_SERVER['REMOTE_USER'])
+ if($lockedby == $INPUT->server->str('REMOTE_USER')){
unlock($ID); //try to unlock
+ }
// do the logout stuff
auth_logoff();
@@ -696,7 +703,7 @@ function act_sitemap($act) {
// Send file
//use x-sendfile header to pass the delivery to compatible webservers
- if (http_sendfile($sitemap)) exit;
+ http_sendfile($sitemap);
readfile($sitemap);
exit;
@@ -718,10 +725,11 @@ function act_subscription($act){
global $lang;
global $INFO;
global $ID;
+ /* @var Input $INPUT */
global $INPUT;
// subcriptions work for logged in users only
- if(!$_SERVER['REMOTE_USER']) return 'show';
+ if(!$INPUT->server->str('REMOTE_USER')) return 'show';
// get and preprocess data.
$params = array();
@@ -732,7 +740,7 @@ function act_subscription($act){
}
// any action given? if not just return and show the subscription page
- if(!$params['action'] || !checkSecurityToken()) return $act;
+ if(empty($params['action']) || !checkSecurityToken()) return $act;
// Handle POST data, may throw exception.
trigger_event('ACTION_HANDLE_SUBSCRIBE', $params, 'subscription_handle_post');
@@ -744,9 +752,9 @@ function act_subscription($act){
// Perform action.
$sub = new Subscription();
if($action == 'unsubscribe'){
- $ok = $sub->remove($target, $_SERVER['REMOTE_USER'], $style);
+ $ok = $sub->remove($target, $INPUT->server->str('REMOTE_USER'), $style);
}else{
- $ok = $sub->add($target, $_SERVER['REMOTE_USER'], $style);
+ $ok = $sub->add($target, $INPUT->server->str('REMOTE_USER'), $style);
}
if($ok) {
@@ -775,6 +783,8 @@ function act_subscription($act){
function subscription_handle_post(&$params) {
global $INFO;
global $lang;
+ /* @var Input $INPUT */
+ global $INPUT;
// Get and validate parameters.
if (!isset($params['target'])) {
@@ -805,7 +815,7 @@ function subscription_handle_post(&$params) {
}
if ($is === false) {
throw new Exception(sprintf($lang['subscr_not_subscribed'],
- $_SERVER['REMOTE_USER'],
+ $INPUT->server->str('REMOTE_USER'),
prettyprint_id($target)));
}
// subscription_set deletes a subscription if style = null.
diff --git a/inc/auth.php b/inc/auth.php
index 36fc7d086..2bdc3eb00 100644
--- a/inc/auth.php
+++ b/inc/auth.php
@@ -131,6 +131,8 @@ function auth_setup() {
function auth_loadACL() {
global $config_cascade;
global $USERINFO;
+ /* @var Input $INPUT */
+ global $INPUT;
if(!is_readable($config_cascade['acl']['default'])) return array();
@@ -139,16 +141,16 @@ function auth_loadACL() {
$out = array();
foreach($acl as $line) {
$line = trim($line);
- if($line{0} == '#') continue;
- list($id,$rest) = preg_split('/\s+/',$line,2);
+ if(empty($line) || ($line{0} == '#')) continue; // skip blank lines & comments
+ list($id,$rest) = preg_split('/[ \t]+/',$line,2);
- // substitue user wildcard first (its 1:1)
+ // substitute user wildcard first (its 1:1)
if(strstr($line, '%USER%')){
// if user is not logged in, this ACL line is meaningless - skip it
- if (!isset($_SERVER['REMOTE_USER'])) continue;
+ if (!$INPUT->server->has('REMOTE_USER')) continue;
- $id = str_replace('%USER%',cleanID($_SERVER['REMOTE_USER']),$id);
- $rest = str_replace('%USER%',auth_nameencode($_SERVER['REMOTE_USER']),$rest);
+ $id = str_replace('%USER%',cleanID($INPUT->server->str('REMOTE_USER')),$id);
+ $rest = str_replace('%USER%',auth_nameencode($INPUT->server->str('REMOTE_USER')),$rest);
}
// substitute group wildcard (its 1:m)
@@ -217,6 +219,8 @@ function auth_login($user, $pass, $sticky = false, $silent = false) {
global $lang;
/* @var DokuWiki_Auth_Plugin $auth */
global $auth;
+ /* @var Input $INPUT */
+ global $INPUT;
$sticky ? $sticky = true : $sticky = false; //sanity check
@@ -226,7 +230,7 @@ function auth_login($user, $pass, $sticky = false, $silent = false) {
//usual login
if($auth->checkPass($user, $pass)) {
// make logininfo globally available
- $_SERVER['REMOTE_USER'] = $user;
+ $INPUT->server->set('REMOTE_USER', $user);
$secret = auth_cookiesalt(!$sticky, true); //bind non-sticky to session
auth_setCookie($user, auth_encrypt($pass, $secret), $sticky);
return true;
@@ -253,7 +257,7 @@ function auth_login($user, $pass, $sticky = false, $silent = false) {
) {
// he has session, cookie and browser right - let him in
- $_SERVER['REMOTE_USER'] = $user;
+ $INPUT->server->set('REMOTE_USER', $user);
$USERINFO = $session['info']; //FIXME move all references to session
return true;
}
@@ -288,7 +292,10 @@ function auth_validateToken($token) {
}
// still here? trust the session data
global $USERINFO;
- $_SERVER['REMOTE_USER'] = $_SESSION[DOKU_COOKIE]['auth']['user'];
+ /* @var Input $INPUT */
+ global $INPUT;
+
+ $INPUT->server->set('REMOTE_USER',$_SESSION[DOKU_COOKIE]['auth']['user']);
$USERINFO = $_SESSION[DOKU_COOKIE]['auth']['info'];
return true;
}
@@ -321,11 +328,14 @@ function auth_createToken() {
* @return string a MD5 sum of various browser headers
*/
function auth_browseruid() {
+ /* @var Input $INPUT */
+ global $INPUT;
+
$ip = clientIP(true);
$uid = '';
- $uid .= $_SERVER['HTTP_USER_AGENT'];
- $uid .= $_SERVER['HTTP_ACCEPT_ENCODING'];
- $uid .= $_SERVER['HTTP_ACCEPT_CHARSET'];
+ $uid .= $INPUT->server->str('HTTP_USER_AGENT');
+ $uid .= $INPUT->server->str('HTTP_ACCEPT_ENCODING');
+ $uid .= $INPUT->server->str('HTTP_ACCEPT_CHARSET');
$uid .= substr($ip, 0, strpos($ip, '.'));
$uid = strtolower($uid);
return md5($uid);
@@ -511,6 +521,8 @@ function auth_logoff($keepbc = false) {
global $USERINFO;
/* @var DokuWiki_Auth_Plugin $auth */
global $auth;
+ /* @var Input $INPUT */
+ global $INPUT;
// make sure the session is writable (it usually is)
@session_start();
@@ -523,16 +535,11 @@ function auth_logoff($keepbc = false) {
unset($_SESSION[DOKU_COOKIE]['auth']['info']);
if(!$keepbc && isset($_SESSION[DOKU_COOKIE]['bc']))
unset($_SESSION[DOKU_COOKIE]['bc']);
- if(isset($_SERVER['REMOTE_USER']))
- unset($_SERVER['REMOTE_USER']);
+ $INPUT->server->remove('REMOTE_USER');
$USERINFO = null; //FIXME
$cookieDir = empty($conf['cookiedir']) ? DOKU_REL : $conf['cookiedir'];
- if(version_compare(PHP_VERSION, '5.2.0', '>')) {
- setcookie(DOKU_COOKIE, '', time() - 600000, $cookieDir, '', ($conf['securecookie'] && is_ssl()), true);
- } else {
- setcookie(DOKU_COOKIE, '', time() - 600000, $cookieDir, '', ($conf['securecookie'] && is_ssl()));
- }
+ setcookie(DOKU_COOKIE, '', time() - 600000, $cookieDir, '', ($conf['securecookie'] && is_ssl()), true);
if($auth) $auth->logOff();
}
@@ -557,13 +564,16 @@ function auth_ismanager($user = null, $groups = null, $adminonly = false) {
global $USERINFO;
/* @var DokuWiki_Auth_Plugin $auth */
global $auth;
+ /* @var Input $INPUT */
+ global $INPUT;
+
if(!$auth) return false;
if(is_null($user)) {
- if(!isset($_SERVER['REMOTE_USER'])) {
+ if(!$INPUT->server->has('REMOTE_USER')) {
return false;
} else {
- $user = $_SERVER['REMOTE_USER'];
+ $user = $INPUT->server->str('REMOTE_USER');
}
}
if(is_null($groups)) {
@@ -655,23 +665,47 @@ function auth_isMember($memberlist, $user, array $groups) {
function auth_quickaclcheck($id) {
global $conf;
global $USERINFO;
+ /* @var Input $INPUT */
+ global $INPUT;
# if no ACL is used always return upload rights
if(!$conf['useacl']) return AUTH_UPLOAD;
- return auth_aclcheck($id, $_SERVER['REMOTE_USER'], $USERINFO['grps']);
+ return auth_aclcheck($id, $INPUT->server->str('REMOTE_USER'), $USERINFO['grps']);
}
/**
- * Returns the maximum rights a user has for
- * the given ID or its namespace
+ * Returns the maximum rights a user has for the given ID or its namespace
*
* @author Andreas Gohr <andi@splitbrain.org>
- *
+ * @triggers AUTH_ACL_CHECK
* @param string $id page ID (needs to be resolved and cleaned)
* @param string $user Username
* @param array|null $groups Array of groups the user is in
* @return int permission level
*/
function auth_aclcheck($id, $user, $groups) {
+ $data = array(
+ 'id' => $id,
+ 'user' => $user,
+ 'groups' => $groups
+ );
+
+ return trigger_event('AUTH_ACL_CHECK', $data, 'auth_aclcheck_cb');
+}
+
+/**
+ * default ACL check method
+ *
+ * DO NOT CALL DIRECTLY, use auth_aclcheck() instead
+ *
+ * @author Andreas Gohr <andi@splitbrain.org>
+ * @param array $data event data
+ * @return int permission level
+ */
+function auth_aclcheck_cb($data) {
+ $id =& $data['id'];
+ $user =& $data['user'];
+ $groups =& $data['groups'];
+
global $conf;
global $AUTH_ACL;
/* @var DokuWiki_Auth_Plugin $auth */
@@ -716,11 +750,11 @@ function auth_aclcheck($id, $user, $groups) {
}
//check exact match first
- $matches = preg_grep('/^'.preg_quote($id, '/').'\s+(\S+)\s+/u', $AUTH_ACL);
+ $matches = preg_grep('/^'.preg_quote($id, '/').'[ \t]+([^ \t]+)[ \t]+/', $AUTH_ACL);
if(count($matches)) {
foreach($matches as $match) {
$match = preg_replace('/#.*$/', '', $match); //ignore comments
- $acl = preg_split('/\s+/', $match);
+ $acl = preg_split('/[ \t]+/', $match);
if(!$auth->isCaseSensitive() && $acl[1] !== '@ALL') {
$acl[1] = utf8_strtolower($acl[1]);
}
@@ -746,11 +780,11 @@ function auth_aclcheck($id, $user, $groups) {
}
do {
- $matches = preg_grep('/^'.preg_quote($path, '/').'\s+(\S+)\s+/u', $AUTH_ACL);
+ $matches = preg_grep('/^'.preg_quote($path, '/').'[ \t]+([^ \t]+)[ \t]+/', $AUTH_ACL);
if(count($matches)) {
foreach($matches as $match) {
$match = preg_replace('/#.*$/', '', $match); //ignore comments
- $acl = preg_split('/\s+/', $match);
+ $acl = preg_split('/[ \t]+/', $match);
if(!$auth->isCaseSensitive() && $acl[1] !== '@ALL') {
$acl[1] = utf8_strtolower($acl[1]);
}
@@ -808,14 +842,14 @@ function auth_nameencode($name, $skip_group = false) {
if(!isset($cache[$name][$skip_group])) {
if($skip_group && $name{0} == '@') {
- $cache[$name][$skip_group] = '@'.preg_replace(
- '/([\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f])/e',
- "'%'.dechex(ord(substr('\\1',-1)))", substr($name, 1)
+ $cache[$name][$skip_group] = '@'.preg_replace_callback(
+ '/([\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f])/',
+ 'auth_nameencode_callback', substr($name, 1)
);
} else {
- $cache[$name][$skip_group] = preg_replace(
- '/([\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f])/e',
- "'%'.dechex(ord(substr('\\1',-1)))", $name
+ $cache[$name][$skip_group] = preg_replace_callback(
+ '/([\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f])/',
+ 'auth_nameencode_callback', $name
);
}
}
@@ -824,6 +858,16 @@ function auth_nameencode($name, $skip_group = false) {
}
/**
+ * callback encodes the matches
+ *
+ * @param array $matches first complete match, next matching subpatterms
+ * @return string
+ */
+function auth_nameencode_callback($matches) {
+ return '%'.dechex(ord(substr($matches[1],-1)));
+}
+
+/**
* Create a pronouncable password
*
* The $foruser variable might be used by plugins to run additional password
@@ -1030,18 +1074,18 @@ function updateprofile() {
}
if($conf['profileconfirm']) {
- if(!$auth->checkPass($_SERVER['REMOTE_USER'], $INPUT->post->str('oldpass'))) {
+ if(!$auth->checkPass($INPUT->server->str('REMOTE_USER'), $INPUT->post->str('oldpass'))) {
msg($lang['badpassconfirm'], -1);
return false;
}
}
- if($result = $auth->triggerUserMod('modify', array($_SERVER['REMOTE_USER'], $changes))) {
+ if($result = $auth->triggerUserMod('modify', array($INPUT->server->str('REMOTE_USER'), $changes))) {
// update cookie and session with the changed data
if($changes['pass']) {
list( /*user*/, $sticky, /*pass*/) = auth_getCookie();
$pass = auth_encrypt($changes['pass'], auth_cookiesalt(!$sticky, true));
- auth_setCookie($_SERVER['REMOTE_USER'], $pass, (bool) $sticky);
+ auth_setCookie($INPUT->server->str('REMOTE_USER'), $pass, (bool) $sticky);
}
return true;
}
@@ -1049,6 +1093,11 @@ function updateprofile() {
return false;
}
+/**
+ * Delete the current logged-in user
+ *
+ * @return bool true on success, false on any error
+ */
function auth_deleteprofile(){
global $conf;
global $lang;
@@ -1072,13 +1121,13 @@ function auth_deleteprofile(){
}
if($conf['profileconfirm']) {
- if(!$auth->checkPass($_SERVER['REMOTE_USER'], $INPUT->post->str('oldpass'))) {
+ if(!$auth->checkPass($INPUT->server->str('REMOTE_USER'), $INPUT->post->str('oldpass'))) {
msg($lang['badpassconfirm'], -1);
return false;
}
}
- $deleted[] = $_SERVER['REMOTE_USER'];
+ $deleted[] = $INPUT->server->str('REMOTE_USER');
if($auth->triggerUserMod('delete', array($deleted))) {
// force and immediate logout including removing the sticky cookie
auth_logoff();
@@ -1282,11 +1331,8 @@ function auth_setCookie($user, $pass, $sticky) {
$cookie = base64_encode($user).'|'.((int) $sticky).'|'.base64_encode($pass);
$cookieDir = empty($conf['cookiedir']) ? DOKU_REL : $conf['cookiedir'];
$time = $sticky ? (time() + 60 * 60 * 24 * 365) : 0; //one year
- if(version_compare(PHP_VERSION, '5.2.0', '>')) {
- setcookie(DOKU_COOKIE, $cookie, $time, $cookieDir, '', ($conf['securecookie'] && is_ssl()), true);
- } else {
- setcookie(DOKU_COOKIE, $cookie, $time, $cookieDir, '', ($conf['securecookie'] && is_ssl()));
- }
+ setcookie(DOKU_COOKIE, $cookie, $time, $cookieDir, '', ($conf['securecookie'] && is_ssl()), true);
+
// set session
$_SESSION[DOKU_COOKIE]['auth']['user'] = $user;
$_SESSION[DOKU_COOKIE]['auth']['pass'] = sha1($pass);
diff --git a/inc/cache.php b/inc/cache.php
index 5eac94934..5f54a34a9 100644
--- a/inc/cache.php
+++ b/inc/cache.php
@@ -8,16 +8,24 @@
if(!defined('DOKU_INC')) die('meh.');
+/**
+ * Generic handling of caching
+ */
class cache {
- var $key = ''; // primary identifier for this item
- var $ext = ''; // file ext for cache data, secondary identifier for this item
- var $cache = ''; // cache file name
- var $depends = array(); // array containing cache dependency information,
+ public $key = ''; // primary identifier for this item
+ public $ext = ''; // file ext for cache data, secondary identifier for this item
+ public $cache = ''; // cache file name
+ public $depends = array(); // array containing cache dependency information,
// used by _useCache to determine cache validity
var $_event = ''; // event to be triggered during useCache
+ var $_time;
- function cache($key,$ext) {
+ /**
+ * @param string $key primary identifier
+ * @param string $ext file extension
+ */
+ public function cache($key,$ext) {
$this->key = $key;
$this->ext = $ext;
$this->cache = getCacheName($key,$ext);
@@ -36,7 +44,7 @@ class cache {
*
* @return bool true if cache can be used, false otherwise
*/
- function useCache($depends=array()) {
+ public function useCache($depends=array()) {
$this->depends = $depends;
$this->_addDependencies();
@@ -59,7 +67,7 @@ class cache {
*
* @return bool see useCache()
*/
- function _useCache() {
+ protected function _useCache() {
if (!empty($this->depends['purge'])) return false; // purge requested?
if (!($this->_time = @filemtime($this->cache))) return false; // cache exists?
@@ -83,7 +91,7 @@ class cache {
* it should not remove any existing dependencies and
* it should only overwrite a dependency when the new value is more stringent than the old
*/
- function _addDependencies() {
+ protected function _addDependencies() {
global $INPUT;
if ($INPUT->has('purge')) $this->depends['purge'] = true; // purge requested
}
@@ -94,7 +102,7 @@ class cache {
* @param bool $clean true to clean line endings, false to leave line endings alone
* @return string cache contents
*/
- function retrieveCache($clean=true) {
+ public function retrieveCache($clean=true) {
return io_readFile($this->cache, $clean);
}
@@ -104,14 +112,14 @@ class cache {
* @param string $data the data to be cached
* @return bool true on success, false otherwise
*/
- function storeCache($data) {
+ public function storeCache($data) {
return io_savefile($this->cache, $data);
}
/**
* remove any cached data associated with this cache instance
*/
- function removeCache() {
+ public function removeCache() {
@unlink($this->cache);
}
@@ -122,7 +130,7 @@ class cache {
* @param bool $success result of this cache use attempt
* @return bool pass-thru $success value
*/
- function _stats($success) {
+ protected function _stats($success) {
global $conf;
static $stats = null;
static $file;
@@ -157,14 +165,23 @@ class cache {
}
}
+/**
+ * Parser caching
+ */
class cache_parser extends cache {
- var $file = ''; // source file for cache
- var $mode = ''; // input mode (represents the processing the input file will undergo)
+ public $file = ''; // source file for cache
+ public $mode = ''; // input mode (represents the processing the input file will undergo)
var $_event = 'PARSER_CACHE_USE';
- function cache_parser($id, $file, $mode) {
+ /**
+ *
+ * @param string $id page id
+ * @param string $file source file for cache
+ * @param string $mode input mode
+ */
+ public function cache_parser($id, $file, $mode) {
if ($id) $this->page = $id;
$this->file = $file;
$this->mode = $mode;
@@ -172,24 +189,29 @@ class cache_parser extends cache {
parent::cache($file.$_SERVER['HTTP_HOST'].$_SERVER['SERVER_PORT'],'.'.$mode);
}
- function _useCache() {
+ /**
+ * method contains cache use decision logic
+ *
+ * @return bool see useCache()
+ */
+ protected function _useCache() {
if (!@file_exists($this->file)) return false; // source exists?
return parent::_useCache();
}
- function _addDependencies() {
- global $conf, $config_cascade;
+ protected function _addDependencies() {
+ global $conf;
$this->depends['age'] = isset($this->depends['age']) ?
min($this->depends['age'],$conf['cachetime']) : $conf['cachetime'];
// parser cache file dependencies ...
- $files = array($this->file, // ... source
+ $files = array($this->file, // ... source
DOKU_INC.'inc/parser/parser.php', // ... parser
DOKU_INC.'inc/parser/handler.php', // ... handler
);
- $files = array_merge($files, getConfigFiles('main')); // ... wiki settings
+ $files = array_merge($files, getConfigFiles('main')); // ... wiki settings
$this->depends['files'] = !empty($this->depends['files']) ? array_merge($files, $this->depends['files']) : $files;
parent::_addDependencies();
@@ -197,8 +219,17 @@ class cache_parser extends cache {
}
+/**
+ * Caching of data of renderer
+ */
class cache_renderer extends cache_parser {
- function _useCache() {
+
+ /**
+ * method contains cache use decision logic
+ *
+ * @return bool see useCache()
+ */
+ protected function _useCache() {
global $conf;
if (!parent::_useCache()) return false;
@@ -231,7 +262,7 @@ class cache_renderer extends cache_parser {
return true;
}
- function _addDependencies() {
+ protected function _addDependencies() {
// renderer cache file dependencies ...
$files = array(
@@ -253,18 +284,37 @@ class cache_renderer extends cache_parser {
}
}
+/**
+ * Caching of parser instructions
+ */
class cache_instructions extends cache_parser {
- function cache_instructions($id, $file) {
+ /**
+ * @param string $id page id
+ * @param string $file source file for cache
+ */
+ public function cache_instructions($id, $file) {
parent::cache_parser($id, $file, 'i');
}
- function retrieveCache($clean=true) {
+ /**
+ * retrieve the cached data
+ *
+ * @param bool $clean true to clean line endings, false to leave line endings alone
+ * @return string cache contents
+ */
+ public function retrieveCache($clean=true) {
$contents = io_readFile($this->cache, false);
return !empty($contents) ? unserialize($contents) : array();
}
- function storeCache($instructions) {
+ /**
+ * cache $instructions
+ *
+ * @param string $instructions the instruction to be cached
+ * @return bool true on success, false otherwise
+ */
+ public function storeCache($instructions) {
return io_savefile($this->cache,serialize($instructions));
}
}
diff --git a/inc/changelog.php b/inc/changelog.php
index 6ff1e0eca..cd46b1ec0 100644
--- a/inc/changelog.php
+++ b/inc/changelog.php
@@ -52,6 +52,8 @@ function parseChangelogLine($line) {
*/
function addLogEntry($date, $id, $type=DOKU_CHANGE_TYPE_EDIT, $summary='', $extra='', $flags=null){
global $conf, $INFO;
+ /** @var Input $INPUT */
+ global $INPUT;
// check for special flags as keys
if (!is_array($flags)) { $flags = array(); }
@@ -65,7 +67,7 @@ function addLogEntry($date, $id, $type=DOKU_CHANGE_TYPE_EDIT, $summary='', $extr
if(!$date) $date = time(); //use current time if none supplied
$remote = (!$flagExternalEdit)?clientIP(true):'127.0.0.1';
- $user = (!$flagExternalEdit)?$_SERVER['REMOTE_USER']:'';
+ $user = (!$flagExternalEdit)?$INPUT->server->str('REMOTE_USER'):'';
$strip = array("\t", "\n");
$logline = array(
@@ -117,12 +119,14 @@ function addLogEntry($date, $id, $type=DOKU_CHANGE_TYPE_EDIT, $summary='', $extr
*/
function addMediaLogEntry($date, $id, $type=DOKU_CHANGE_TYPE_EDIT, $summary='', $extra='', $flags=null){
global $conf;
+ /** @var Input $INPUT */
+ global $INPUT;
$id = cleanid($id);
if(!$date) $date = time(); //use current time if none supplied
$remote = clientIP(true);
- $user = $_SERVER['REMOTE_USER'];
+ $user = $INPUT->server->str('REMOTE_USER');
$strip = array("\t", "\n");
$logline = array(
diff --git a/inc/cliopts.php b/inc/cliopts.php
index 9cea686a2..3eac72e5b 100644
--- a/inc/cliopts.php
+++ b/inc/cliopts.php
@@ -74,9 +74,9 @@ class Doku_Cli_Opts {
/**
* <?php ?>
* @see http://www.sitepoint.com/article/php-command-line-1/3
- * @param string executing file name - this MUST be passed the __FILE__ constant
- * @param string short options
- * @param array (optional) long options
+ * @param string $bin_file executing file name - this MUST be passed the __FILE__ constant
+ * @param string $short_options short options
+ * @param array $long_options (optional) long options
* @return Doku_Cli_Opts_Container or Doku_Cli_Opts_Error
*/
function & getOptions($bin_file, $short_options, $long_options = null) {
@@ -233,12 +233,12 @@ class Doku_Cli_Opts {
* Parse short option
*
* @param string $arg Argument
- * @param string[] $short_options Available short options
+ * @param string $short_options Available short options
* @param string[][] &$opts
* @param string[] &$args
*
* @access private
- * @return void
+ * @return void|Doku_Cli_Opts_Error
*/
function _parseShortOption($arg, $short_options, &$opts, &$args) {
$len = strlen($arg);
@@ -324,7 +324,7 @@ class Doku_Cli_Opts {
* @param string[] &$args
*
* @access private
- * @return void|PEAR_Error
+ * @return void|Doku_Cli_Opts_Error
*/
function _parseLongOption($arg, $long_options, &$opts, &$args) {
@list($opt, $opt_arg) = explode('=', $arg, 2);
@@ -402,7 +402,7 @@ class Doku_Cli_Opts {
* Will take care on register_globals and register_argc_argv ini directives
*
* @access public
- * @return mixed the $argv PHP array or PEAR error if not registered
+ * @return array|Doku_Cli_Opts_Error the $argv PHP array or PEAR error if not registered
*/
function readPHPArgv() {
global $argv;
@@ -421,10 +421,19 @@ class Doku_Cli_Opts {
return $argv;
}
+ /**
+ * @param $code
+ * @param $msg
+ * @return Doku_Cli_Opts_Error
+ */
function raiseError($code, $msg) {
return new Doku_Cli_Opts_Error($code, $msg);
}
+ /**
+ * @param $obj
+ * @return bool
+ */
function isError($obj) {
return is_a($obj, 'Doku_Cli_Opts_Error');
}
diff --git a/inc/common.php b/inc/common.php
index 866e0aadd..9fbebde94 100644
--- a/inc/common.php
+++ b/inc/common.php
@@ -56,15 +56,18 @@ function stripctl($string) {
* @return string
*/
function getSecurityToken() {
- return PassHash::hmac('md5', session_id().$_SERVER['REMOTE_USER'], auth_cookiesalt());
+ /** @var Input $INPUT */
+ global $INPUT;
+ return PassHash::hmac('md5', session_id().$INPUT->server->str('REMOTE_USER'), auth_cookiesalt());
}
/**
* Check the secret CSRF token
*/
function checkSecurityToken($token = null) {
+ /** @var Input $INPUT */
global $INPUT;
- if(!$_SERVER['REMOTE_USER']) return true; // no logged in user, no need for a check
+ if(!$INPUT->server->str('REMOTE_USER')) return true; // no logged in user, no need for a check
if(is_null($token)) $token = $INPUT->str('sectok');
if(getSecurityToken() != $token) {
@@ -93,14 +96,16 @@ function formSecurityToken($print = true) {
*/
function basicinfo($id, $htmlClient=true){
global $USERINFO;
+ /* @var Input $INPUT */
+ global $INPUT;
// set info about manager/admin status.
$info['isadmin'] = false;
$info['ismanager'] = false;
- if(isset($_SERVER['REMOTE_USER'])) {
+ if($INPUT->server->has('REMOTE_USER')) {
$info['userinfo'] = $USERINFO;
$info['perm'] = auth_quickaclcheck($id);
- $info['client'] = $_SERVER['REMOTE_USER'];
+ $info['client'] = $INPUT->server->str('REMOTE_USER');
if($info['perm'] == AUTH_ADMIN) {
$info['isadmin'] = true;
@@ -111,7 +116,7 @@ function basicinfo($id, $htmlClient=true){
// if some outside auth were used only REMOTE_USER is set
if(!$info['userinfo']['name']) {
- $info['userinfo']['name'] = $_SERVER['REMOTE_USER'];
+ $info['userinfo']['name'] = $INPUT->server->str('REMOTE_USER');
}
} else {
@@ -140,6 +145,8 @@ function pageinfo() {
global $REV;
global $RANGE;
global $lang;
+ /* @var Input $INPUT */
+ global $INPUT;
$info = basicinfo($ID);
@@ -148,19 +155,20 @@ function pageinfo() {
$info['id'] = $ID;
$info['rev'] = $REV;
- if(isset($_SERVER['REMOTE_USER'])) {
+ if($INPUT->server->has('REMOTE_USER')) {
$sub = new Subscription();
$info['subscribed'] = $sub->user_subscription();
} else {
$info['subscribed'] = false;
}
- $info['locked'] = checklock($ID);
- $info['filepath'] = fullpath(wikiFN($ID));
- $info['exists'] = @file_exists($info['filepath']);
+ $info['locked'] = checklock($ID);
+ $info['filepath'] = fullpath(wikiFN($ID));
+ $info['exists'] = @file_exists($info['filepath']);
+ $info['currentrev'] = @filemtime($info['filepath']);
if($REV) {
//check if current revision was meant
- if($info['exists'] && (@filemtime($info['filepath']) == $REV)) {
+ if($info['exists'] && ($info['currentrev'] == $REV)) {
$REV = '';
} elseif($RANGE) {
//section editing does not work with old revisions!
@@ -190,7 +198,7 @@ function pageinfo() {
if($REV) {
$revinfo = getRevisionInfo($ID, $REV, 1024);
} else {
- if(is_array($info['meta']['last_change'])) {
+ if(!empty($info['meta']['last_change']) && is_array($info['meta']['last_change'])) {
$revinfo = $info['meta']['last_change'];
} else {
$revinfo = getRevisionInfo($ID, $info['lastmod'], 1024);
@@ -355,11 +363,14 @@ function breadcrumbs() {
*/
function idfilter($id, $ue = true) {
global $conf;
+ /* @var Input $INPUT */
+ global $INPUT;
+
if($conf['useslash'] && $conf['userewrite']) {
$id = strtr($id, ':', '/');
} elseif(strtoupper(substr(PHP_OS, 0, 3)) === 'WIN' &&
$conf['userewrite'] &&
- strpos($_SERVER['SERVER_SOFTWARE'], 'Microsoft-IIS') === false
+ strpos($INPUT->server->str('SERVER_SOFTWARE'), 'Microsoft-IIS') === false
) {
$id = strtr($id, ':', ';');
}
@@ -474,13 +485,13 @@ function ml($id = '', $more = '', $direct = true, $sep = '&amp;', $abs = false)
if(is_array($more)) {
// add token for resized images
- if($more['w'] || $more['h'] || $isexternalimage){
+ if(!empty($more['w']) || !empty($more['h']) || $isexternalimage){
$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']);
- if(!$more['h']) unset($more['h']);
+ if(empty($more['w'])) unset($more['w']);
+ if(empty($more['h'])) unset($more['h']);
if(isset($more['id']) && $direct) unset($more['id']);
$more = buildURLparams($more, $sep);
} else {
@@ -587,6 +598,8 @@ function checkwordblock($text = '') {
global $SUM;
global $conf;
global $INFO;
+ /* @var Input $INPUT */
+ global $INPUT;
if(!$conf['usewordblock']) return false;
@@ -619,9 +632,9 @@ function checkwordblock($text = '') {
if(count($re) && preg_match('#('.join('|', $re).')#si', $text, $matches)) {
// prepare event data
$data['matches'] = $matches;
- $data['userinfo']['ip'] = $_SERVER['REMOTE_ADDR'];
- if($_SERVER['REMOTE_USER']) {
- $data['userinfo']['user'] = $_SERVER['REMOTE_USER'];
+ $data['userinfo']['ip'] = $INPUT->server->str('REMOTE_ADDR');
+ if($INPUT->server->str('REMOTE_USER')) {
+ $data['userinfo']['user'] = $INPUT->server->str('REMOTE_USER');
$data['userinfo']['name'] = $INFO['userinfo']['name'];
$data['userinfo']['mail'] = $INFO['userinfo']['mail'];
}
@@ -647,12 +660,17 @@ function checkwordblock($text = '') {
* @return string
*/
function clientIP($single = false) {
+ /* @var Input $INPUT */
+ global $INPUT;
+
$ip = array();
- $ip[] = $_SERVER['REMOTE_ADDR'];
- if(!empty($_SERVER['HTTP_X_FORWARDED_FOR']))
- $ip = array_merge($ip, explode(',', str_replace(' ', '', $_SERVER['HTTP_X_FORWARDED_FOR'])));
- if(!empty($_SERVER['HTTP_X_REAL_IP']))
- $ip = array_merge($ip, explode(',', str_replace(' ', '', $_SERVER['HTTP_X_REAL_IP'])));
+ $ip[] = $INPUT->server->str('REMOTE_ADDR');
+ if($INPUT->server->str('HTTP_X_FORWARDED_FOR')) {
+ $ip = array_merge($ip, explode(',', str_replace(' ', '', $INPUT->server->str('HTTP_X_FORWARDED_FOR'))));
+ }
+ if($INPUT->server->str('HTTP_X_REAL_IP')) {
+ $ip = array_merge($ip, explode(',', str_replace(' ', '', $INPUT->server->str('HTTP_X_REAL_IP'))));
+ }
// some IPv4/v6 regexps borrowed from Feyd
// see: http://forums.devnetwork.net/viewtopic.php?f=38&t=53479
@@ -711,16 +729,18 @@ function clientIP($single = false) {
* @link http://www.brainhandles.com/2007/10/15/detecting-mobile-browsers/#code
*/
function clientismobile() {
+ /* @var Input $INPUT */
+ global $INPUT;
- if(isset($_SERVER['HTTP_X_WAP_PROFILE'])) return true;
+ if($INPUT->server->has('HTTP_X_WAP_PROFILE')) return true;
- if(preg_match('/wap\.|\.wap/i', $_SERVER['HTTP_ACCEPT'])) return true;
+ if(preg_match('/wap\.|\.wap/i', $INPUT->server->str('HTTP_ACCEPT'))) return true;
- if(!isset($_SERVER['HTTP_USER_AGENT'])) return false;
+ if(!$INPUT->server->has('HTTP_USER_AGENT')) return false;
$uamatches = 'midp|j2me|avantg|docomo|novarra|palmos|palmsource|240x320|opwv|chtml|pda|windows ce|mmp\/|blackberry|mib\/|symbian|wireless|nokia|hand|mobi|phone|cdm|up\.b|audio|SIE\-|SEC\-|samsung|HTC|mot\-|mitsu|sagem|sony|alcatel|lg|erics|vx|NEC|philips|mmm|xx|panasonic|sharp|wap|sch|rover|pocket|benq|java|pt|pg|vox|amoi|bird|compal|kg|voda|sany|kdd|dbt|sendo|sgh|gradi|jb|\d\d\di|moto';
- if(preg_match("/$uamatches/i", $_SERVER['HTTP_USER_AGENT'])) return true;
+ if(preg_match("/$uamatches/i", $INPUT->server->str('HTTP_USER_AGENT'))) return true;
return false;
}
@@ -760,6 +780,9 @@ function gethostsbyaddrs($ips) {
*/
function checklock($id) {
global $conf;
+ /* @var Input $INPUT */
+ global $INPUT;
+
$lock = wikiLockFN($id);
//no lockfile
@@ -772,8 +795,8 @@ function checklock($id) {
}
//my own lock
- list($ip, $session) = explode("\n", io_readFile($lock));
- if($ip == $_SERVER['REMOTE_USER'] || $ip == clientIP() || $session == session_id()) {
+ @list($ip, $session) = explode("\n", io_readFile($lock));
+ if($ip == $INPUT->server->str('REMOTE_USER') || $ip == clientIP() || $session == session_id()) {
return false;
}
@@ -787,14 +810,16 @@ function checklock($id) {
*/
function lock($id) {
global $conf;
+ /* @var Input $INPUT */
+ global $INPUT;
if($conf['locktime'] == 0) {
return;
}
$lock = wikiLockFN($id);
- if($_SERVER['REMOTE_USER']) {
- io_saveFile($lock, $_SERVER['REMOTE_USER']);
+ if($INPUT->server->str('REMOTE_USER')) {
+ io_saveFile($lock, $INPUT->server->str('REMOTE_USER'));
} else {
io_saveFile($lock, clientIP()."\n".session_id());
}
@@ -808,10 +833,13 @@ function lock($id) {
* @return bool true if a lock was removed
*/
function unlock($id) {
+ /* @var Input $INPUT */
+ global $INPUT;
+
$lock = wikiLockFN($id);
if(@file_exists($lock)) {
- list($ip, $session) = explode("\n", io_readFile($lock));
- if($ip == $_SERVER['REMOTE_USER'] || $ip == clientIP() || $session == session_id()) {
+ @list($ip, $session) = explode("\n", io_readFile($lock));
+ if($ip == $INPUT->server->str('REMOTE_USER') || $ip == clientIP() || $session == session_id()) {
@unlink($lock);
return true;
}
@@ -937,6 +965,8 @@ function parsePageTemplate(&$data) {
global $USERINFO;
global $conf;
+ /* @var Input $INPUT */
+ global $INPUT;
// replace placeholders
$file = noNS($id);
@@ -968,7 +998,7 @@ function parsePageTemplate(&$data) {
utf8_ucfirst($page),
utf8_ucwords($page),
utf8_strtoupper($page),
- $_SERVER['REMOTE_USER'],
+ $INPUT->server->str('REMOTE_USER'),
$USERINFO['name'],
$USERINFO['mail'],
$conf['dformat'],
@@ -1049,6 +1079,9 @@ function saveWikiText($id, $text, $summary, $minor = false) {
global $conf;
global $lang;
global $REV;
+ /* @var Input $INPUT */
+ global $INPUT;
+
// ignore if no changes were made
if($text == rawWiki($id, '')) {
return;
@@ -1111,7 +1144,7 @@ function saveWikiText($id, $text, $summary, $minor = false) {
$type = DOKU_CHANGE_TYPE_CREATE;
} else if($wasRemoved) {
$type = DOKU_CHANGE_TYPE_DELETE;
- } else if($minor && $conf['useacl'] && $_SERVER['REMOTE_USER']) {
+ } else if($minor && $conf['useacl'] && $INPUT->server->str('REMOTE_USER')) {
$type = DOKU_CHANGE_TYPE_MINOR_EDIT;
} //minor edits only for logged in users
@@ -1140,7 +1173,6 @@ function saveWikiText($id, $text, $summary, $minor = false) {
* @author Andreas Gohr <andi@splitbrain.org>
*/
function saveOldRevision($id) {
- global $conf;
$oldf = wikiFN($id);
if(!@file_exists($oldf)) return '';
$date = filemtime($oldf);
@@ -1164,6 +1196,8 @@ function saveOldRevision($id) {
*/
function notify($id, $who, $rev = '', $summary = '', $minor = false, $replace = array()) {
global $conf;
+ /* @var Input $INPUT */
+ global $INPUT;
// decide if there is something to do, eg. whom to mail
if($who == 'admin') {
@@ -1172,7 +1206,7 @@ function notify($id, $who, $rev = '', $summary = '', $minor = false, $replace =
$to = $conf['notify'];
} elseif($who == 'subscribers') {
if(!actionOK('subscribe')) return false; //subscribers enabled?
- if($conf['useacl'] && $_SERVER['REMOTE_USER'] && $minor) return false; //skip minors
+ if($conf['useacl'] && $INPUT->server->str('REMOTE_USER') && $minor) return false; //skip minors
$data = array('id' => $id, 'addresslist' => '', 'self' => false);
trigger_event(
'COMMON_NOTIFY_ADDRESSLIST', $data,
@@ -1197,10 +1231,13 @@ function notify($id, $who, $rev = '', $summary = '', $minor = false, $replace =
* @author Todd Augsburger <todd@rollerorgans.com>
*/
function getGoogleQuery() {
- if(!isset($_SERVER['HTTP_REFERER'])) {
+ /* @var Input $INPUT */
+ global $INPUT;
+
+ if(!$INPUT->server->has('HTTP_REFERER')) {
return '';
}
- $url = parse_url($_SERVER['HTTP_REFERER']);
+ $url = parse_url($INPUT->server->str('HTTP_REFERER'));
// only handle common SEs
if(!preg_match('/(google|bing|yahoo|ask|duckduckgo|babylon|aol|yandex)/',$url['host'])) return '';
@@ -1230,8 +1267,9 @@ function getGoogleQuery() {
/**
* Return the human readable size of a file
*
- * @param int $size A file size
- * @param int $dec A number of decimal places
+ * @param int $size A file size
+ * @param int $dec A number of decimal places
+ * @return string human readable size
* @author Martin Benjamin <b.martin@cybernet.ch>
* @author Aidan Lister <aidan@php.net>
* @version 1.0.0
@@ -1362,12 +1400,16 @@ function php_to_byte($v) {
$l = substr($v, -1);
$ret = substr($v, 0, -1);
switch(strtoupper($l)) {
+ /** @noinspection PhpMissingBreakStatementInspection */
case 'P':
$ret *= 1024;
+ /** @noinspection PhpMissingBreakStatementInspection */
case 'T':
$ret *= 1024;
+ /** @noinspection PhpMissingBreakStatementInspection */
case 'G':
$ret *= 1024;
+ /** @noinspection PhpMissingBreakStatementInspection */
case 'M':
$ret *= 1024;
case 'K':
@@ -1518,6 +1560,9 @@ function is_mem_available($mem, $bytes = 1048576) {
* @author Andreas Gohr <andi@splitbrain.org>
*/
function send_redirect($url) {
+ /* @var Input $INPUT */
+ global $INPUT;
+
//are there any undisplayed messages? keep them in session for display
global $MSG;
if(isset($MSG) && count($MSG) && !defined('NOSESSION')) {
@@ -1531,7 +1576,7 @@ function send_redirect($url) {
// work around IE bug
// http://www.ianhoar.com/2008/11/16/internet-explorer-6-and-redirected-anchor-links/
- list($url, $hash) = explode('#', $url);
+ @list($url, $hash) = explode('#', $url);
if($hash) {
if(strpos($url, '?')) {
$url = $url.'&#'.$hash;
@@ -1541,9 +1586,9 @@ function send_redirect($url) {
}
// check if running on IIS < 6 with CGI-PHP
- if(isset($_SERVER['SERVER_SOFTWARE']) && isset($_SERVER['GATEWAY_INTERFACE']) &&
- (strpos($_SERVER['GATEWAY_INTERFACE'], 'CGI') !== false) &&
- (preg_match('|^Microsoft-IIS/(\d)\.\d$|', trim($_SERVER['SERVER_SOFTWARE']), $matches)) &&
+ if($INPUT->server->has('SERVER_SOFTWARE') && $INPUT->server->has('GATEWAY_INTERFACE') &&
+ (strpos($INPUT->server->str('GATEWAY_INTERFACE'), 'CGI') !== false) &&
+ (preg_match('|^Microsoft-IIS/(\d)\.\d$|', trim($INPUT->server->str('SERVER_SOFTWARE')), $matches)) &&
$matches[1] < 6
) {
header('Refresh: 0;url='.$url);
diff --git a/inc/compatibility.php b/inc/compatibility.php
new file mode 100644
index 000000000..ae780e5ac
--- /dev/null
+++ b/inc/compatibility.php
@@ -0,0 +1,36 @@
+<?php
+/**
+ * compatibility functions
+ *
+ * This file contains a few functions that might be missing from the PHP build
+ */
+
+if(!function_exists('ctype_space')) {
+ /**
+ * Check for whitespace character(s)
+ *
+ * @see ctype_space
+ * @param string $text
+ * @return bool
+ */
+ function ctype_space($text) {
+ if(!is_string($text)) return false; #FIXME original treats between -128 and 255 inclusive as ASCII chars
+ if(trim($text) === '') return true;
+ return false;
+ }
+}
+
+if(!function_exists('ctype_digit')) {
+ /**
+ * Check for numeric character(s)
+ *
+ * @see ctype_digit
+ * @param string $text
+ * @return bool
+ */
+ function ctype_digit($text) {
+ if(!is_string($text)) return false; #FIXME original treats between -128 and 255 inclusive as ASCII chars
+ if(preg_match('/^\d+$/', $text)) return true;
+ return false;
+ }
+} \ No newline at end of file
diff --git a/inc/config_cascade.php b/inc/config_cascade.php
index e1ab0eead..2c4f1612b 100644
--- a/inc/config_cascade.php
+++ b/inc/config_cascade.php
@@ -50,9 +50,6 @@ $config_cascade = array_merge(
),
'userstyle' => array(
'screen' => DOKU_CONF.'userstyle.css',
- // @deprecated 2012-04-09: rtl will cease to be a mode of its own,
- // please use "[dir=rtl]" in any css file in all, screen or print mode instead
- 'rtl' => DOKU_CONF.'userrtl.css',
'print' => DOKU_CONF.'userprint.css',
'feed' => DOKU_CONF.'userfeed.css',
'all' => DOKU_CONF.'userall.css',
diff --git a/inc/confutils.php b/inc/confutils.php
index 0ac003b72..31371d41f 100644
--- a/inc/confutils.php
+++ b/inc/confutils.php
@@ -237,13 +237,14 @@ function getConfigFiles($type) {
* check if the given action was disabled in config
*
* @author Andreas Gohr <andi@splitbrain.org>
+ * @param string $action
* @returns boolean true if enabled, false if disabled
*/
function actionOK($action){
static $disabled = null;
if(is_null($disabled) || defined('SIMPLE_TEST')){
global $conf;
- /** @var auth_basic $auth */
+ /** @var DokuWiki_Auth_Plugin $auth */
global $auth;
// prepare disabled actions array and handle legacy options
diff --git a/inc/events.php b/inc/events.php
index f7b1a7a16..7f9824f60 100644
--- a/inc/events.php
+++ b/inc/events.php
@@ -8,15 +8,18 @@
if(!defined('DOKU_INC')) die('meh.');
+/**
+ * The event
+ */
class Doku_Event {
// public properties
- var $name = ''; // READONLY event name, objects must register against this name to see the event
- var $data = null; // READWRITE data relevant to the event, no standardised format (YET!)
- var $result = null; // READWRITE the results of the event action, only relevant in "_AFTER" advise
+ public $name = ''; // READONLY event name, objects must register against this name to see the event
+ public $data = null; // READWRITE data relevant to the event, no standardised format (YET!)
+ public $result = null; // READWRITE the results of the event action, only relevant in "_AFTER" advise
// event handlers may modify this if they are preventing the default action
// to provide the after event handlers with event results
- var $canPreventDefault = true; // READONLY if true, event handlers can prevent the events default action
+ public $canPreventDefault = true; // READONLY if true, event handlers can prevent the events default action
// private properties, event handlers can effect these through the provided methods
var $_default = true; // whether or not to carry out the default action associated with the event
@@ -33,6 +36,13 @@ class Doku_Event {
}
/**
+ * @return string
+ */
+ function __toString() {
+ return $this->name;
+ }
+
+ /**
* advise functions
*
* advise all registered handlers of this event
@@ -47,7 +57,8 @@ class Doku_Event {
* $evt->advise_after();
* unset($evt);
*
- * @return results of processing the event, usually $this->_default
+ * @param bool $enablePreventDefault
+ * @return bool results of processing the event, usually $this->_default
*/
function advise_before($enablePreventDefault=true) {
global $EVENT_HANDLER;
@@ -73,7 +84,9 @@ class Doku_Event {
* $this->_default, all of which may have been modified by the event handlers.
* - advise all registered (<event>_AFTER) handlers that the event has taken place
*
- * @return $event->results
+ * @param null|callable $action
+ * @param bool $enablePrevent
+ * @return mixed $event->results
* the value set by any <event>_before or <event> handlers if the default action is prevented
* or the results of the default action (as modified by <event>_after handlers)
* or NULL no action took place and no handler modified the value
@@ -112,12 +125,15 @@ class Doku_Event {
function preventDefault() { $this->_default = false; }
}
+/**
+ * Controls the registration and execution of all events,
+ */
class Doku_Event_Handler {
// public properties: none
// private properties
- var $_hooks = array(); // array of events and their registered handlers
+ protected $_hooks = array(); // array of events and their registered handlers
/**
* event_handler
@@ -128,6 +144,7 @@ class Doku_Event_Handler {
function Doku_Event_Handler() {
// load action plugins
+ /** @var DokuWiki_Action_Plugin $plugin */
$plugin = null;
$pluginlist = plugin_list('action');
@@ -143,34 +160,47 @@ class Doku_Event_Handler {
*
* register a hook for an event
*
- * @param $event (string) name used by the event, (incl '_before' or '_after' for triggers)
- * @param $obj (obj) object in whose scope method is to be executed,
+ * @param $event string name used by the event, (incl '_before' or '_after' for triggers)
+ * @param $advise string
+ * @param $obj object object in whose scope method is to be executed,
* if NULL, method is assumed to be a globally available function
- * @param $method (function) event handler function
- * @param $param (mixed) data passed to the event handler
+ * @param $method string event handler function
+ * @param $param mixed data passed to the event handler
+ * @param $seq int sequence number for ordering hook execution (ascending)
*/
- function register_hook($event, $advise, $obj, $method, $param=null) {
- $this->_hooks[$event.'_'.$advise][] = array($obj, $method, $param);
+ function register_hook($event, $advise, $obj, $method, $param=null, $seq=0) {
+ $seq = (int)$seq;
+ $doSort = !isset($this->_hooks[$event.'_'.$advise][$seq]);
+ $this->_hooks[$event.'_'.$advise][$seq][] = array($obj, $method, $param);
+
+ if ($doSort) {
+ ksort($this->_hooks[$event.'_'.$advise]);
+ }
}
- function process_event(&$event,$advise='') {
+ /**
+ * process the before/after event
+ *
+ * @param Doku_Event $event
+ * @param string $advise BEFORE or AFTER
+ */
+ function process_event($event,$advise='') {
$evt_name = $event->name . ($advise ? '_'.$advise : '_BEFORE');
if (!empty($this->_hooks[$evt_name])) {
- foreach ($this->_hooks[$evt_name] as $hook) {
- // list($obj, $method, $param) = $hook;
- $obj =& $hook[0];
- $method = $hook[1];
- $param = $hook[2];
-
- if (is_null($obj)) {
- $method($event, $param);
- } else {
- $obj->$method($event, $param);
- }
+ foreach ($this->_hooks[$evt_name] as $sequenced_hooks) {
+ foreach ($sequenced_hooks as $hook) {
+ list($obj, $method, $param) = $hook;
- if (!$event->_continue) break;
+ if (is_null($obj)) {
+ $method($event, $param);
+ } else {
+ $obj->$method($event, $param);
+ }
+
+ if (!$event->_continue) return;
+ }
}
}
}
@@ -181,12 +211,12 @@ class Doku_Event_Handler {
*
* function wrapper to process (create, trigger and destroy) an event
*
- * @param $name (string) name for the event
- * @param $data (mixed) event data
- * @param $action (callback) (optional, default=NULL) default action, a php callback function
- * @param $canPreventDefault (bool) (optional, default=true) can hooks prevent the default action
+ * @param $name string name for the event
+ * @param $data mixed event data
+ * @param $action callback (optional, default=NULL) default action, a php callback function
+ * @param $canPreventDefault bool (optional, default=true) can hooks prevent the default action
*
- * @return (mixed) the event results value after all event processing is complete
+ * @return mixed the event results value after all event processing is complete
* by default this is the return value of the default action however
* it can be set or modified by event handler hooks
*/
diff --git a/inc/farm.php b/inc/farm.php
index 54692928d..cee61816c 100644
--- a/inc/farm.php
+++ b/inc/farm.php
@@ -135,9 +135,7 @@ $config_cascade = array(
),
),
'userstyle' => array(
- 'default' => DOKU_CONF.'userstyle.css', // 'default' was renamed to 'screen' on 2011-02-26, so will be deprecated in the next version
'screen' => DOKU_CONF.'userstyle.css',
- 'rtl' => DOKU_CONF.'userrtl.css', // deprecated since version after 2012-04-09
'print' => DOKU_CONF.'userprint.css',
'feed' => DOKU_CONF.'userfeed.css',
'all' => DOKU_CONF.'userall.css',
diff --git a/inc/feedcreator.class.php b/inc/feedcreator.class.php
index 670a1bc29..b90da5724 100644
--- a/inc/feedcreator.class.php
+++ b/inc/feedcreator.class.php
@@ -185,6 +185,8 @@ class HtmlDescribable {
*/
var $descriptionTruncSize;
+ var $description;
+
/**
* Returns a formatted description field, depending on descriptionHtmlSyndicated and
* $descriptionTruncSize properties
@@ -222,7 +224,7 @@ class FeedHtmlField {
/**
* Creates a new instance of FeedHtmlField.
- * @param $string: if given, sets the rawFieldContent property
+ * @param string $parFieldContent: if given, sets the rawFieldContent property
*/
function FeedHtmlField($parFieldContent) {
if ($parFieldContent) {
@@ -267,8 +269,14 @@ class FeedHtmlField {
* @author Kai Blankenhorn <kaib@bitfolge.de>
*/
class UniversalFeedCreator extends FeedCreator {
+ /** @var FeedCreator */
var $_feed;
+ /**
+ * Sets format
+ *
+ * @param string $format
+ */
function _setFormat($format) {
switch (strtoupper($format)) {
@@ -344,7 +352,7 @@ class UniversalFeedCreator extends FeedCreator {
* Creates a syndication feed based on the items previously added.
*
* @see FeedCreator::addItem()
- * @param string format format the feed should comply to. Valid values are:
+ * @param string $format format the feed should comply to. Valid values are:
* "PIE0.1", "mbox", "RSS0.91", "RSS1.0", "RSS2.0", "OPML", "ATOM0.3", "HTML", "JS"
* @return string the contents of the feed.
*/
@@ -358,10 +366,10 @@ class UniversalFeedCreator extends FeedCreator {
* header may be sent to redirect the use to the newly created file.
* @since 1.4
*
- * @param string format format the feed should comply to. Valid values are:
+ * @param string $format format the feed should comply to. Valid values are:
* "PIE0.1" (deprecated), "mbox", "RSS0.91", "RSS1.0", "RSS2.0", "OPML", "ATOM", "ATOM0.3", "HTML", "JS"
- * @param string filename optional the filename where a recent version of the feed is saved. If not specified, the filename is $_SERVER["PHP_SELF"] with the extension changed to .xml (see _generateFilename()).
- * @param boolean displayContents optional send the content of the file or not. If true, the file will be sent in the body of the response.
+ * @param string $filename optional the filename where a recent version of the feed is saved. If not specified, the filename is $_SERVER["PHP_SELF"] with the extension changed to .xml (see _generateFilename()).
+ * @param boolean $displayContents optional send the content of the file or not. If true, the file will be sent in the body of the response.
*/
function saveFeed($format="RSS0.91", $filename="", $displayContents=true) {
$this->_setFormat($format);
@@ -376,10 +384,10 @@ class UniversalFeedCreator extends FeedCreator {
* before anything else, especially before you do the time consuming task to build the feed
* (web fetching, for example).
*
- * @param string format format the feed should comply to. Valid values are:
+ * @param string $format format the feed should comply to. Valid values are:
* "PIE0.1" (deprecated), "mbox", "RSS0.91", "RSS1.0", "RSS2.0", "OPML", "ATOM0.3".
- * @param filename string optional the filename where a recent version of the feed is saved. If not specified, the filename is $_SERVER["PHP_SELF"] with the extension changed to .xml (see _generateFilename()).
- * @param timeout int optional the timeout in seconds before a cached version is refreshed (defaults to 3600 = 1 hour)
+ * @param string $filename optional the filename where a recent version of the feed is saved. If not specified, the filename is $_SERVER["PHP_SELF"] with the extension changed to .xml (see _generateFilename()).
+ * @param int $timeout optional the timeout in seconds before a cached version is refreshed (defaults to 3600 = 1 hour)
*/
function useCached($format="RSS0.91", $filename="", $timeout=3600) {
$this->_setFormat($format);
@@ -390,7 +398,7 @@ class UniversalFeedCreator extends FeedCreator {
/**
* Outputs feed to the browser - needed for on-the-fly feed generation (like it is done in WordPress, etc.)
*
- * @param format string format the feed should comply to. Valid values are:
+ * @param $format string format the feed should comply to. Valid values are:
* "PIE0.1" (deprecated), "mbox", "RSS0.91", "RSS1.0", "RSS2.0", "OPML", "ATOM0.3".
*/
function outputFeed($format='RSS0.91') {
@@ -422,7 +430,13 @@ class FeedCreator extends HtmlDescribable {
/**
* Optional attributes of a feed.
*/
- var $syndicationURL, $image, $language, $copyright, $pubDate, $lastBuildDate, $editor, $editorEmail, $webmaster, $category, $docs, $ttl, $rating, $skipHours, $skipDays;
+ var $syndicationURL, $language, $copyright, $pubDate, $lastBuildDate, $editor, $editorEmail, $webmaster, $category, $docs, $ttl, $rating, $skipHours, $skipDays;
+ /**
+ * Optional attribute of a feed
+ *
+ * @var FeedImage
+ */
+ var $image = null;
/**
* The url of the external xsl stylesheet used to format the naked rss feed.
@@ -430,13 +444,18 @@ class FeedCreator extends HtmlDescribable {
*/
var $xslStyleSheet = "";
+ /**
+ * Style sheet for rss feed
+ */
+ var $cssStyleSheet = "";
+
/**
* @access private
+ * @var FeedItem[]
*/
var $items = Array();
-
/**
* This feed's MIME content type.
* @since 1.4
@@ -466,7 +485,7 @@ class FeedCreator extends HtmlDescribable {
/**
* Adds an FeedItem to the feed.
*
- * @param object FeedItem $item The FeedItem to add to the feed.
+ * @param FeedItem $item The FeedItem to add to the feed.
* @access public
*/
function addItem($item) {
@@ -482,8 +501,8 @@ class FeedCreator extends HtmlDescribable {
* If the string is already shorter than $length, it is returned unchanged.
*
* @static
- * @param string string A string to be truncated.
- * @param int length the maximum length the string should be truncated to
+ * @param string $string A string to be truncated.
+ * @param int $length the maximum length the string should be truncated to
* @return string the truncated string
*/
function iTrunc($string, $length) {
@@ -527,8 +546,8 @@ class FeedCreator extends HtmlDescribable {
/**
* Creates a string containing all additional elements specified in
* $additionalElements.
- * @param elements array an associative array containing key => value pairs
- * @param indentString string a string that will be inserted before every generated line
+ * @param $elements array an associative array containing key => value pairs
+ * @param $indentString string a string that will be inserted before every generated line
* @return string the XML tags corresponding to $additionalElements
*/
function _createAdditionalElements($elements, $indentString="") {
@@ -541,6 +560,9 @@ class FeedCreator extends HtmlDescribable {
return $ae;
}
+ /**
+ * Create elements for stylesheets
+ */
function _createStylesheetReferences() {
$xml = "";
if ($this->cssStyleSheet) $xml .= "<?xml-stylesheet href=\"".$this->cssStyleSheet."\" type=\"text/css\"?>\n";
@@ -610,8 +632,8 @@ class FeedCreator extends HtmlDescribable {
* before anything else, especially before you do the time consuming task to build the feed
* (web fetching, for example).
* @since 1.4
- * @param filename string optional the filename where a recent version of the feed is saved. If not specified, the filename is $_SERVER["PHP_SELF"] with the extension changed to .xml (see _generateFilename()).
- * @param timeout int optional the timeout in seconds before a cached version is refreshed (defaults to 3600 = 1 hour)
+ * @param $filename string optional the filename where a recent version of the feed is saved. If not specified, the filename is $_SERVER["PHP_SELF"] with the extension changed to .xml (see _generateFilename()).
+ * @param $timeout int optional the timeout in seconds before a cached version is refreshed (defaults to 3600 = 1 hour)
*/
function useCached($filename="", $timeout=3600) {
$this->_timeout = $timeout;
@@ -629,8 +651,8 @@ class FeedCreator extends HtmlDescribable {
* header may be sent to redirect the user to the newly created file.
* @since 1.4
*
- * @param filename string optional the filename where a recent version of the feed is saved. If not specified, the filename is $_SERVER["PHP_SELF"] with the extension changed to .xml (see _generateFilename()).
- * @param redirect boolean optional send an HTTP redirect header or not. If true, the user will be automatically redirected to the created file.
+ * @param $filename string optional the filename where a recent version of the feed is saved. If not specified, the filename is $_SERVER["PHP_SELF"] with the extension changed to .xml (see _generateFilename()).
+ * @param $displayContents boolean optional send an HTTP redirect header or not. If true, the user will be automatically redirected to the created file.
*/
function saveFeed($filename="", $displayContents=true) {
if ($filename=="") {
@@ -667,6 +689,7 @@ class FeedCreator extends HtmlDescribable {
* Usually, you won't need to use this.
*/
class FeedDate {
+ /** @var int */
var $unix;
/**
@@ -726,7 +749,7 @@ class FeedDate {
/**
* Gets the date stored in this FeedDate as an RFC 822 date.
*
- * @return a date in RFC 822 format
+ * @return string a date in RFC 822 format
*/
function rfc822() {
//return gmdate("r",$this->unix);
@@ -738,7 +761,7 @@ class FeedDate {
/**
* Gets the date stored in this FeedDate as an ISO 8601 date.
*
- * @return a date in ISO 8601 (RFC 3339) format
+ * @return string a date in ISO 8601 (RFC 3339) format
*/
function iso8601() {
$date = gmdate("Y-m-d\TH:i:sO",$this->unix);
@@ -751,7 +774,7 @@ class FeedDate {
/**
* Gets the date stored in this FeedDate as unix time stamp.
*
- * @return a date as a unix time stamp
+ * @return int a date as a unix time stamp
*/
function unix() {
return $this->unix;
@@ -777,7 +800,7 @@ class RSSCreator10 extends FeedCreator {
$feed = "<?xml version=\"1.0\" encoding=\"".$this->encoding."\"?>\n";
$feed.= $this->_createGeneratorComment();
if ($this->cssStyleSheet=="") {
- $cssStyleSheet = "http://www.w3.org/2000/08/w3c-synd/style.css";
+ $this->cssStyleSheet = "http://www.w3.org/2000/08/w3c-synd/style.css";
}
$feed.= $this->_createStylesheetReferences();
$feed.= "<rdf:RDF\n";
@@ -1032,12 +1055,16 @@ class PIECreator01 extends FeedCreator {
$this->encoding = "utf-8";
}
+ /**
+ * Build content
+ * @return string
+ */
function createFeed() {
$feed = "<?xml version=\"1.0\" encoding=\"".$this->encoding."\"?>\n";
$feed.= $this->_createStylesheetReferences();
$feed.= "<feed version=\"0.1\" xmlns=\"http://example.com/newformat#\">\n";
$feed.= " <title>".FeedCreator::iTrunc(htmlspecialchars($this->title),100)."</title>\n";
- $this->truncSize = 500;
+ $this->descriptionTruncSize = 500;
$feed.= " <subtitle>".$this->getDescription()."</subtitle>\n";
$feed.= " <link>".$this->link."</link>\n";
$icnt = count($this->items);
@@ -1091,6 +1118,10 @@ class AtomCreator10 extends FeedCreator {
$this->encoding = "utf-8";
}
+ /**
+ * Build content
+ * @return string
+ */
function createFeed() {
$feed = "<?xml version=\"1.0\" encoding=\"".$this->encoding."\"?>\n";
$feed.= $this->_createGeneratorComment();
@@ -1174,6 +1205,10 @@ class AtomCreator03 extends FeedCreator {
$this->encoding = "utf-8";
}
+ /**
+ * Build content
+ * @return string
+ */
function createFeed() {
$feed = "<?xml version=\"1.0\" encoding=\"".$this->encoding."\"?>\n";
$feed.= $this->_createGeneratorComment();
@@ -1281,6 +1316,7 @@ class MBOXCreator extends FeedCreator {
*/
function createFeed() {
$icnt = count($this->items);
+ $feed = "";
for ($i=0; $i<$icnt; $i++) {
if ($this->items[$i]->author!="") {
$from = $this->items[$i]->author;
@@ -1331,6 +1367,10 @@ class OPMLCreator extends FeedCreator {
$this->encoding = "utf-8";
}
+ /**
+ * Build content
+ * @return string
+ */
function createFeed() {
$feed = "<?xml version=\"1.0\" encoding=\"".$this->encoding."\"?>\n";
$feed.= $this->_createGeneratorComment();
@@ -1441,6 +1481,7 @@ class HTMLCreator extends FeedCreator {
}
//set an openInNewWindow_token_to be inserted or not
+ $targetInsert = "";
if ($this->openInNewWindow) {
$targetInsert = " target='_blank'";
}
@@ -1568,6 +1609,14 @@ class JSCreator extends HTMLCreator {
* @author Andreas Gohr <andi@splitbrain.org>
*/
class DokuWikiFeedCreator extends UniversalFeedCreator{
+
+ /**
+ * Build content
+ *
+ * @param string $format
+ * @param string $encoding
+ * @return string
+ */
function createFeed($format = "RSS0.91",$encoding='iso-8859-15') {
$this->_setFormat($format);
$this->_feed->encoding = $encoding;
diff --git a/inc/fetch.functions.php b/inc/fetch.functions.php
index 207ad9e5f..c61c54503 100644
--- a/inc/fetch.functions.php
+++ b/inc/fetch.functions.php
@@ -15,13 +15,15 @@
*
* @author Andreas Gohr <andi@splitbrain.org>
* @author Ben Coburn <btcoburn@silicodon.net>
+ * @author Gerry Weissbach <dokuwiki@gammaproduction.de>
* @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?
+ * @param string $orig original file to send - the file name will be used for the Content-Disposition
*/
-function sendFile($file, $mime, $dl, $cache, $public = false) {
+function sendFile($file, $mime, $dl, $cache, $public = false, $orig = null) {
global $conf;
// send mime headers
header("Content-Type: $mime");
@@ -62,15 +64,20 @@ function sendFile($file, $mime, $dl, $cache, $public = false) {
$fmtime = @filemtime($file);
http_conditionalRequest($fmtime);
+ // Use the current $file if is $orig is not set.
+ if ( $orig == null ) {
+ $orig = $file;
+ }
+
//download or display?
if($dl) {
- header('Content-Disposition: attachment; filename="'.utf8_basename($file).'";');
+ header('Content-Disposition: attachment; filename="'.utf8_basename($orig).'";');
} else {
- header('Content-Disposition: inline; filename="'.utf8_basename($file).'";');
+ header('Content-Disposition: inline; filename="'.utf8_basename($orig).'";');
}
//use x-sendfile header to pass the delivery to compatible webservers
- if(http_sendfile($file)) exit;
+ http_sendfile($file);
// send file contents
$fp = @fopen($file, "rb");
diff --git a/inc/form.php b/inc/form.php
index bdf520a2e..610f50200 100644
--- a/inc/form.php
+++ b/inc/form.php
@@ -47,15 +47,11 @@ class Doku_Form {
* with up to four parameters is deprecated, instead the first parameter
* should be an array with parameters.
*
- * @param mixed $params Parameters for the HTML form element; Using the
- * deprecated calling convention this is the ID
- * attribute of the form
- * @param string $action (optional, deprecated) submit URL, defaults to
- * current page
- * @param string $method (optional, deprecated) 'POST' or 'GET', default
- * is POST
- * @param string $enctype (optional, deprecated) Encoding type of the
- * data
+ * @param mixed $params Parameters for the HTML form element; Using the deprecated
+ * calling convention this is the ID attribute of the form
+ * @param bool|string $action (optional, deprecated) submit URL, defaults to current page
+ * @param bool|string $method (optional, deprecated) 'POST' or 'GET', default is POST
+ * @param bool|string $enctype (optional, deprecated) Encoding type of the data
* @author Tom N Harris <tnharris@whoopdedo.org>
*/
function Doku_Form($params, $action=false, $method=false, $enctype=false) {
@@ -176,7 +172,7 @@ class Doku_Form {
* Gets the position of the first of a type of element.
*
* @param string $type Element type to look for.
- * @return array pseudo-element if found, false otherwise
+ * @return int position of element if found, otherwise false
* @author Tom N Harris <tnharris@whoopdedo.org>
*/
function findElementByType($type) {
@@ -193,7 +189,7 @@ class Doku_Form {
* Gets the position of the element with an ID attribute.
*
* @param string $id ID of the element to find.
- * @return array pseudo-element if found, false otherwise
+ * @return int position of element if found, otherwise false
* @author Tom N Harris <tnharris@whoopdedo.org>
*/
function findElementById($id) {
@@ -211,7 +207,7 @@ class Doku_Form {
*
* @param string $name Attribute name.
* @param string $value Attribute value.
- * @return array pseudo-element if found, false otherwise
+ * @return int position of element if found, otherwise false
* @author Tom N Harris <tnharris@whoopdedo.org>
*/
function findElementByAttribute($name, $value) {
@@ -230,7 +226,7 @@ class Doku_Form {
* first (underflow) or last (overflow) element.
*
* @param int $pos 0-based index
- * @return arrayreference pseudo-element
+ * @return array reference pseudo-element
* @author Tom N Harris <tnharris@whoopdedo.org>
*/
function &getElementAt($pos) {
@@ -680,7 +676,7 @@ function form_wikitext($attrs) {
// mandatory attributes
unset($attrs['name']);
unset($attrs['id']);
- return '<textarea name="wikitext" id="wiki__text" '
+ return '<textarea name="wikitext" id="wiki__text" dir="auto" '
.buildAttributes($attrs,true).'>'.DOKU_LF
.formText($attrs['_text'])
.'</textarea>';
diff --git a/inc/fulltext.php b/inc/fulltext.php
index bd8e6b866..dd918f214 100644
--- a/inc/fulltext.php
+++ b/inc/fulltext.php
@@ -72,8 +72,20 @@ function _ft_pageSearch(&$data) {
$pages = end($stack);
$pages_matched = array();
foreach(array_keys($pages) as $id){
- $text = utf8_strtolower(rawWiki($id));
- if (strpos($text, $phrase) !== false) {
+ $evdata = array(
+ 'id' => $id,
+ 'phrase' => $phrase,
+ 'text' => rawWiki($id)
+ );
+ $evt = new Doku_Event('FULLTEXT_PHRASE_MATCH',$evdata);
+ if ($evt->advise_before() && $evt->result !== true) {
+ $text = utf8_strtolower($evdata['text']);
+ if (strpos($text, $phrase) !== false) {
+ $evt->result = true;
+ }
+ }
+ $evt->advise_after();
+ if ($evt->result === true) {
$pages_matched[$id] = 0; // phrase: always 0 hit
}
}
@@ -333,7 +345,7 @@ function ft_snippet($id,$highlight){
$pre = min($pre,100-$post);
} else if ($post>50) {
$post = min($post, 100-$pre);
- } else {
+ } else if ($offset == 0) {
// both are less than 50, means the context is the whole string
// make it so and break out of this loop - there is no need for the
// complex snippet calculations
@@ -354,12 +366,12 @@ function ft_snippet($id,$highlight){
}
// set $offset for next match attempt
- // substract strlen to avoid splitting a potential search success,
- // this is an approximation as the search pattern may match strings
- // of varying length and it will fail if the context snippet
- // boundary breaks a matching string longer than the current match
- $utf8_offset = $utf8_idx + $post;
- $offset = $idx + strlen(utf8_substr($text,$utf8_idx,$post));
+ // continue matching after the current match
+ // if the current match is not the longest possible match starting at the current offset
+ // this prevents further matching of this snippet but for possible matches of length
+ // smaller than match length + context (at least 50 characters) this match is part of the context
+ $utf8_offset = $utf8_idx + $utf8_len;
+ $offset = $idx + strlen(utf8_substr($text,$utf8_idx,$utf8_len));
$offset = utf8_correctIdx($text,$offset);
}
diff --git a/inc/html.php b/inc/html.php
index 03e9dc751..41f26e5cd 100644
--- a/inc/html.php
+++ b/inc/html.php
@@ -28,20 +28,6 @@ function html_wikilink($id,$name=null,$search=''){
}
/**
- * Helps building long attribute lists
- *
- * @deprecated Use buildAttributes instead
- * @author Andreas Gohr <andi@splitbrain.org>
- */
-function html_attbuild($attributes){
- $ret = '';
- foreach ( $attributes as $key => $value ) {
- $ret .= $key.'="'.formText($value).'" ';
- }
- return trim($ret);
-}
-
-/**
* The loginform
*
* @author Andreas Gohr <andi@splitbrain.org>
@@ -428,7 +414,7 @@ function html_revisions($first=0, $media_id = false){
global $conf;
global $lang;
$id = $ID;
- /* we need to get one additionally log entry to be able to
+ /* we need to get one additional log entry to be able to
* decide if this is the last page or is there another one.
* see html_recent()
*/
@@ -705,7 +691,7 @@ function html_recent($first=0, $show_changes='both'){
$form->addElement(form_makeOpenTag('div', array('class' => 'li')));
- if ($recent['media']) {
+ if (!empty($recent['media'])) {
$form->addElement(media_printicon($recent['id']));
} else {
$icon = DOKU_BASE.'lib/images/fileicons/file.png';
@@ -719,7 +705,7 @@ function html_recent($first=0, $show_changes='both'){
$diff = false;
$href = '';
- if ($recent['media']) {
+ if (!empty($recent['media'])) {
$diff = (count(getRevisions($recent['id'], 0, 1, 8192, true)) && @file_exists(mediaFN($recent['id'])));
if ($diff) {
$href = media_managerURL(array('tab_details' => 'history',
@@ -729,7 +715,7 @@ function html_recent($first=0, $show_changes='both'){
$href = wl($recent['id'],"do=diff", false, '&');
}
- if ($recent['media'] && !$diff) {
+ if (!empty($recent['media']) && !$diff) {
$form->addElement('<img src="'.DOKU_BASE.'lib/images/blank.gif" width="15" height="11" alt="" />');
} else {
$form->addElement(form_makeOpenTag('a', array('class' => 'diff_link', 'href' => $href)));
@@ -743,7 +729,7 @@ function html_recent($first=0, $show_changes='both'){
$form->addElement(form_makeCloseTag('a'));
}
- if ($recent['media']) {
+ if (!empty($recent['media'])) {
$href = media_managerURL(array('tab_details' => 'history',
'image' => $recent['id'], 'ns' => getNS($recent['id'])), '&');
} else {
@@ -759,7 +745,7 @@ function html_recent($first=0, $show_changes='both'){
)));
$form->addElement(form_makeCloseTag('a'));
- if ($recent['media']) {
+ if (!empty($recent['media'])) {
$href = media_managerURL(array('tab_details' => 'view', 'image' => $recent['id'], 'ns' => getNS($recent['id'])), '&');
$class = (file_exists(mediaFN($recent['id']))) ? 'wikilink1' : $class = 'wikilink2';
$form->addElement(form_makeOpenTag('a', array('class' => $class, 'href' => $href)));
@@ -1203,7 +1189,7 @@ function html_diff($text='',$intro=true,$type=null){
$diffurl = wl($ID, array(
'do' => 'diff',
'rev2[0]' => $l_rev,
- 'rev2[1]' => $r_rev,
+ 'rev2[1]' => $r_rev ? $r_rev : $INFO['currentrev'], // link to exactly this view FS#2835
'difftype' => $type,
));
ptln('<p><a class="wikilink1" href="'.$diffurl.'">'.$lang['difflink'].'</a></p>');
@@ -1648,6 +1634,17 @@ function html_debug(){
print_r($inis);
print '</pre>';
+ if (function_exists('apache_get_version')) {
+ $apache['version'] = apache_get_version();
+
+ if (function_exists('apache_get_modules')) {
+ $apache['modules'] = apache_get_modules();
+ }
+ print '<b>Apache</b><pre>';
+ print_r($apache);
+ print '</pre>';
+ }
+
print '</body></html>';
}
@@ -1661,7 +1658,7 @@ function html_admin(){
global $ID;
global $INFO;
global $conf;
- /** @var auth_basic $auth */
+ /** @var DokuWiki_Auth_Plugin $auth */
global $auth;
// build menu of admin functions from the plugins that handle them
@@ -1669,7 +1666,7 @@ function html_admin(){
$menu = array();
foreach ($pluginlist as $p) {
/** @var DokuWiki_Admin_Plugin $obj */
- if($obj =& plugin_load('admin',$p) === null) continue;
+ if(($obj = plugin_load('admin',$p)) === null) continue;
// check permissions
if($obj->forAdminOnly() && !$INFO['isadmin']) continue;
@@ -1712,12 +1709,12 @@ function html_admin(){
}
unset($menu['acl']);
- if($menu['plugin']){
+ if($menu['extension']){
ptln(' <li class="admin_plugin"><div class="li">'.
- '<a href="'.wl($ID, array('do' => 'admin','page' => 'plugin')).'">'.
- $menu['plugin']['prompt'].'</a></div></li>');
+ '<a href="'.wl($ID, array('do' => 'admin','page' => 'extension')).'">'.
+ $menu['extension']['prompt'].'</a></div></li>');
}
- unset($menu['plugin']);
+ unset($menu['extension']);
if($menu['config']){
ptln(' <li class="admin_config"><div class="li">'.
diff --git a/inc/httputils.php b/inc/httputils.php
index ca60ed509..efeb2a56c 100644
--- a/inc/httputils.php
+++ b/inc/httputils.php
@@ -64,12 +64,13 @@ function http_conditionalRequest($timestamp){
* Let the webserver send the given file via x-sendfile method
*
* @author Chris Smith <chris@jalakai.co.uk>
- * @returns void or exits with previously header() commands executed
+ * @param string $file absolute path of file to send
+ * @returns void or exits with previous header() commands executed
*/
function http_sendfile($file) {
global $conf;
- //use x-sendfile header to pass the delivery to compatible webservers
+ //use x-sendfile header to pass the delivery to compatible web servers
if($conf['xsendfile'] == 1){
header("X-LIGHTTPD-send-file: $file");
ob_end_clean();
@@ -79,12 +80,12 @@ function http_sendfile($file) {
ob_end_clean();
exit;
}elseif($conf['xsendfile'] == 3){
+ // FS#2388 nginx just needs the relative path.
+ $file = DOKU_REL.substr($file, strlen(fullpath(DOKU_INC)) + 1);
header("X-Accel-Redirect: $file");
ob_end_clean();
exit;
}
-
- return false;
}
/**
@@ -92,7 +93,7 @@ function http_sendfile($file) {
*
* This function exits the running script
*
- * @param ressource $fh - file handle for an already open file
+ * @param resource $fh - file handle for an already open file
* @param int $size - size of the whole file
* @param int $mime - MIME type of the file
*
@@ -204,7 +205,7 @@ function http_gzip_valid($uncompressed_file) {
*
* This function handles output of cacheable resource files. It ses the needed
* HTTP headers. If a useable cache is present, it is passed to the web server
- * and the scrpt is terminated.
+ * and the script is terminated.
*/
function http_cached($cache, $cache_ok) {
global $conf;
@@ -223,7 +224,8 @@ function http_cached($cache, $cache_ok) {
header('Content-Encoding: gzip');
readfile($cache.".gz");
} else {
- if (!http_sendfile($cache)) readfile($cache);
+ http_sendfile($cache);
+ readfile($cache);
}
exit;
}
diff --git a/inc/indexer.php b/inc/indexer.php
index 8f0ba7ec6..a167db47f 100644
--- a/inc/indexer.php
+++ b/inc/indexer.php
@@ -10,7 +10,7 @@
if(!defined('DOKU_INC')) die('meh.');
// Version tag used to force rebuild on upgrade
-define('INDEXER_VERSION', 6);
+define('INDEXER_VERSION', 8);
// set the minimum token length to use in the index (note, this doesn't apply to numeric tokens)
if (!defined('IDX_MINWORDLENGTH')) define('IDX_MINWORDLENGTH',2);
@@ -215,7 +215,8 @@ class Doku_Indexer {
foreach (array_keys($words) as $wlen) {
$word_idx = $this->getIndex('w', $wlen);
foreach ($words[$wlen] as $word => $freq) {
- $wid = array_search($word, $word_idx);
+ $word = (string)$word;
+ $wid = array_search($word, $word_idx, true);
if ($wid === false) {
$wid = count($word_idx);
$word_idx[] = $word;
@@ -269,8 +270,9 @@ class Doku_Indexer {
// Special handling for titles so the index file is simpler
if (array_key_exists('title', $key)) {
$value = $key['title'];
- if (is_array($value))
+ if (is_array($value)) {
$value = $value[0];
+ }
$this->saveIndexKey('title', '', $pid, $value);
unset($key['title']);
}
@@ -296,22 +298,26 @@ class Doku_Indexer {
foreach ($values as $val) {
$val = (string)$val;
if ($val !== "") {
- $id = array_search($val, $metawords);
+ $id = array_search($val, $metawords, true);
if ($id === false) {
+ // didn't find $val, so we'll add it to the end of metawords and create a placeholder in metaidx
$id = count($metawords);
$metawords[$id] = $val;
+ $metaidx[$id] = '';
$addwords = true;
}
// test if value is already in the index
- if (isset($val_idx[$id]) && $val_idx[$id] <= 0)
+ if (isset($val_idx[$id]) && $val_idx[$id] <= 0){
$val_idx[$id] = 0;
- else // else add it
+ } else { // else add it
$val_idx[$id] = 1;
+ }
}
}
- if ($addwords)
+ if ($addwords) {
$this->saveIndex($metaname.'_w', '', $metawords);
+ }
$vals_changed = false;
foreach ($val_idx as $id => $action) {
if ($action == -1) {
@@ -352,13 +358,13 @@ class Doku_Indexer {
$pages = $this->getPages();
- $id = array_search($oldpage, $pages);
+ $id = array_search($oldpage, $pages, true);
if ($id === false) {
$this->unlock();
return 'page is not in index';
}
- $new_id = array_search($newpage, $pages);
+ $new_id = array_search($newpage, $pages, true);
if ($new_id !== false) {
// make sure the page is not in the index anymore
if ($this->deletePageNoLock($newpage) !== true) {
@@ -397,9 +403,9 @@ class Doku_Indexer {
// change the relation references index
$metavalues = $this->getIndex($key, '_w');
- $oldid = array_search($oldvalue, $metavalues);
+ $oldid = array_search($oldvalue, $metavalues, true);
if ($oldid !== false) {
- $newid = array_search($newvalue, $metavalues);
+ $newid = array_search($newvalue, $metavalues, true);
if ($newid !== false) {
// free memory
unset ($metavalues);
@@ -600,7 +606,7 @@ class Doku_Indexer {
foreach ($wordlist as $i => $word) {
if ((!is_numeric($word) && strlen($word) < IDX_MINWORDLENGTH)
- || array_search($word, $stopwords) !== false)
+ || array_search($word, $stopwords, true) !== false)
unset($wordlist[$i]);
}
return array_values($wordlist);
@@ -771,7 +777,7 @@ class Doku_Indexer {
foreach(array_keys(preg_grep('/'.$re.'/', $words)) as $i)
$value_ids[$i][] = $val;
} else {
- if (($i = array_search($val, $words)) !== false)
+ if (($i = array_search($val, $words, true)) !== false)
$value_ids[$i][] = $val;
}
}
@@ -874,7 +880,7 @@ class Doku_Indexer {
// handle exact search
if (isset($tokenlength[$ixlen])) {
foreach ($tokenlength[$ixlen] as $xword) {
- $wid = array_search($xword, $word_idx);
+ $wid = array_search($xword, $word_idx, true);
if ($wid !== false) {
$wids[$ixlen][] = $wid;
foreach ($tokens[$xword] as $w)
@@ -1017,8 +1023,9 @@ class Doku_Indexer {
return false;
}
}
- if ($conf['dperm'])
+ if (!empty($conf['dperm'])) {
chmod($lock, $conf['dperm']);
+ }
return $status;
}
@@ -1152,7 +1159,7 @@ class Doku_Indexer {
*/
protected function addIndexKey($idx, $suffix, $value) {
$index = $this->getIndex($idx, $suffix);
- $id = array_search($value, $index);
+ $id = array_search($value, $index, true);
if ($id === false) {
$id = count($index);
$index[$id] = $value;
@@ -1212,14 +1219,16 @@ class Doku_Indexer {
*/
protected function updateTuple($line, $id, $count) {
$newLine = $line;
- if ($newLine !== '')
+ if ($newLine !== ''){
$newLine = preg_replace('/(^|:)'.preg_quote($id,'/').'\*\d*/', '', $newLine);
+ }
$newLine = trim($newLine, ':');
if ($count) {
- if (strlen($newLine) > 0)
+ if (strlen($newLine) > 0) {
return "$id*$count:".$newLine;
- else
+ } else {
return "$id*$count".$newLine;
+ }
}
return $newLine;
}
diff --git a/inc/infoutils.php b/inc/infoutils.php
index 7358955a0..0992040d9 100644
--- a/inc/infoutils.php
+++ b/inc/infoutils.php
@@ -102,15 +102,21 @@ function getVersion(){
function check(){
global $conf;
global $INFO;
+ /* @var Input $INPUT */
+ global $INPUT;
if ($INFO['isadmin'] || $INFO['ismanager']){
msg('DokuWiki version: '.getVersion(),1);
- }
- if(version_compare(phpversion(),'5.2.0','<')){
- msg('Your PHP version is too old ('.phpversion().' vs. 5.2.0+ needed)',-1);
- }else{
- msg('PHP version '.phpversion(),1);
+ if(version_compare(phpversion(),'5.2.0','<')){
+ msg('Your PHP version is too old ('.phpversion().' vs. 5.2.0+ needed)',-1);
+ }else{
+ msg('PHP version '.phpversion(),1);
+ }
+ } else {
+ if(version_compare(phpversion(),'5.2.0','<')){
+ msg('Your PHP version is too old',-1);
+ }
}
$mem = (int) php_to_byte(ini_get('memory_limit'));
@@ -200,7 +206,7 @@ function check(){
}
if($INFO['userinfo']['name']){
- msg('You are currently logged in as '.$_SERVER['REMOTE_USER'].' ('.$INFO['userinfo']['name'].')',0);
+ msg('You are currently logged in as '.$INPUT->server->str('REMOTE_USER').' ('.$INFO['userinfo']['name'].')',0);
msg('You are part of the groups '.join($INFO['userinfo']['grps'],', '),0);
}else{
msg('You are currently not logged in',0);
@@ -357,6 +363,9 @@ function dbg($msg,$hidden=false){
*/
function dbglog($msg,$header=''){
global $conf;
+ /* @var Input $INPUT */
+ global $INPUT;
+
// The debug log isn't automatically cleaned thus only write it when
// debugging has been enabled by the user.
if($conf['allowdebug'] !== 1) return;
@@ -369,7 +378,7 @@ function dbglog($msg,$header=''){
$file = $conf['cachedir'].'/debug.log';
$fh = fopen($file,'a');
if($fh){
- fwrite($fh,date('H:i:s ').$_SERVER['REMOTE_ADDR'].': '.$msg."\n");
+ fwrite($fh,date('H:i:s ').$INPUT->server->str('REMOTE_ADDR').': '.$msg."\n");
fclose($fh);
}
}
diff --git a/inc/init.php b/inc/init.php
index 30eb1b251..4ff239787 100644
--- a/inc/init.php
+++ b/inc/init.php
@@ -140,18 +140,21 @@ if ($conf['gzip_output'] &&
}
// init session
-if (!headers_sent() && !defined('NOSESSION')){
- session_name("DokuWiki");
- $cookieDir = empty($conf['cookiedir']) ? DOKU_REL : $conf['cookiedir'];
- if (version_compare(PHP_VERSION, '5.2.0', '>')) {
- session_set_cookie_params(0,$cookieDir,'',($conf['securecookie'] && is_ssl()),true);
- }else{
- session_set_cookie_params(0,$cookieDir,'',($conf['securecookie'] && is_ssl()));
+if(!headers_sent() && !defined('NOSESSION')) {
+ if(!defined('DOKU_SESSION_NAME')) define ('DOKU_SESSION_NAME', "DokuWiki");
+ if(!defined('DOKU_SESSION_LIFETIME')) define ('DOKU_SESSION_LIFETIME', 0);
+ if(!defined('DOKU_SESSION_PATH')) {
+ $cookieDir = empty($conf['cookiedir']) ? DOKU_REL : $conf['cookiedir'];
+ define ('DOKU_SESSION_PATH', $cookieDir);
}
+ if(!defined('DOKU_SESSION_DOMAIN')) define ('DOKU_SESSION_DOMAIN', '');
+
+ session_name(DOKU_SESSION_NAME);
+ session_set_cookie_params(DOKU_SESSION_LIFETIME, DOKU_SESSION_PATH, DOKU_SESSION_DOMAIN, ($conf['securecookie'] && is_ssl()), true);
session_start();
// load left over messages
- if(isset($_SESSION[DOKU_COOKIE]['msg'])){
+ if(isset($_SESSION[DOKU_COOKIE]['msg'])) {
$MSG = $_SESSION[DOKU_COOKIE]['msg'];
unset($_SESSION[DOKU_COOKIE]['msg']);
}
@@ -173,7 +176,7 @@ if(function_exists('set_magic_quotes_runtime')) @set_magic_quotes_runtime(0);
$_REQUEST = array_merge($_GET,$_POST);
// we don't want a purge URL to be digged
-if(isset($_REQUEST['purge']) && $_SERVER['HTTP_REFERER']) unset($_REQUEST['purge']);
+if(isset($_REQUEST['purge']) && !empty($_SERVER['HTTP_REFERER'])) unset($_REQUEST['purge']);
// disable gzip if not available
if($conf['compression'] == 'bz2' && !function_exists('bzopen')){
@@ -183,11 +186,6 @@ if($conf['compression'] == 'gz' && !function_exists('gzopen')){
$conf['compression'] = 0;
}
-// fix dateformat for upgraders
-if(strpos($conf['dformat'],'%') === false){
- $conf['dformat'] = '%Y/%m/%d %H:%M';
-}
-
// precalculate file creation modes
init_creationmodes();
@@ -267,10 +265,10 @@ function init_lang($langCode) {
$lang = array();
//load the language files
- require_once(DOKU_INC.'inc/lang/en/lang.php');
+ require(DOKU_INC.'inc/lang/en/lang.php');
if ($langCode && $langCode != 'en') {
if (file_exists(DOKU_INC."inc/lang/$langCode/lang.php")) {
- require_once(DOKU_INC."inc/lang/$langCode/lang.php");
+ require(DOKU_INC."inc/lang/$langCode/lang.php");
}
}
}
@@ -288,7 +286,7 @@ function init_files(){
$fh = @fopen($file,'a');
if($fh){
fclose($fh);
- if($conf['fperm']) chmod($file, $conf['fperm']);
+ if(!empty($conf['fperm'])) chmod($file, $conf['fperm']);
}else{
nice_die("$file is not writable. Check your permissions settings!");
}
@@ -404,6 +402,10 @@ function remove_magic_quotes(&$array) {
* Returns the full absolute URL to the directory where
* DokuWiki is installed in (includes a trailing slash)
*
+ * !! Can not access $_SERVER values through $INPUT
+ * !! here as this function is called before $INPUT is
+ * !! initialized.
+ *
* @author Andreas Gohr <andi@splitbrain.org>
*/
function getBaseURL($abs=null){
@@ -443,12 +445,12 @@ function getBaseURL($abs=null){
//split hostheader into host and port
if(isset($_SERVER['HTTP_HOST'])){
$parsed_host = parse_url('http://'.$_SERVER['HTTP_HOST']);
- $host = $parsed_host['host'];
- $port = $parsed_host['port'];
+ $host = isset($parsed_host['host']) ? $parsed_host['host'] : null;
+ $port = isset($parsed_host['port']) ? $parsed_host['port'] : null;
}elseif(isset($_SERVER['SERVER_NAME'])){
$parsed_host = parse_url('http://'.$_SERVER['SERVER_NAME']);
- $host = $parsed_host['host'];
- $port = $parsed_host['port'];
+ $host = isset($parsed_host['host']) ? $parsed_host['host'] : null;
+ $port = isset($parsed_host['port']) ? $parsed_host['port'] : null;
}else{
$host = php_uname('n');
$port = '';
diff --git a/inc/io.php b/inc/io.php
index 4bd7c3364..27a34b045 100644
--- a/inc/io.php
+++ b/inc/io.php
@@ -367,8 +367,6 @@ function io_createNamespace($id, $ns_type='pages') {
* @author Andreas Gohr <andi@splitbrain.org>
*/
function io_makeFileDir($file){
- global $conf;
-
$dir = dirname($file);
if(!@is_dir($dir)){
io_mkdir_p($dir) || msg("Creating directory $dir failed",-1);
@@ -393,7 +391,7 @@ function io_mkdir_p($target){
return io_mkdir_ftp($dir);
}else{
$ret = @mkdir($target,$conf['dmode']); // crawl back up & create dir tree
- if($ret && $conf['dperm']) chmod($target, $conf['dperm']);
+ if($ret && !empty($conf['dperm'])) chmod($target, $conf['dperm']);
return $ret;
}
}
@@ -401,6 +399,56 @@ function io_mkdir_p($target){
}
/**
+ * Recursively delete a directory
+ *
+ * @author Andreas Gohr <andi@splitbrain.org>
+ * @param string $path
+ * @param bool $removefiles defaults to false which will delete empty directories only
+ * @return bool
+ */
+function io_rmdir($path, $removefiles = false) {
+ if(!is_string($path) || $path == "") return false;
+ if(!file_exists($path)) return true; // it's already gone or was never there, count as success
+
+ if(is_dir($path) && !is_link($path)) {
+ $dirs = array();
+ $files = array();
+
+ if(!$dh = @opendir($path)) return false;
+ while(false !== ($f = readdir($dh))) {
+ if($f == '..' || $f == '.') continue;
+
+ // collect dirs and files first
+ if(is_dir("$path/$f") && !is_link("$path/$f")) {
+ $dirs[] = "$path/$f";
+ } else if($removefiles) {
+ $files[] = "$path/$f";
+ } else {
+ return false; // abort when non empty
+ }
+
+ }
+ closedir($dh);
+
+ // now traverse into directories first
+ foreach($dirs as $dir) {
+ if(!io_rmdir($dir, $removefiles)) return false; // abort on any error
+ }
+
+ // now delete files
+ foreach($files as $file) {
+ if(!@unlink($file)) return false; //abort on any error
+ }
+
+ // remove self
+ return @rmdir($path);
+ } else if($removefiles) {
+ return @unlink($path);
+ }
+ return false;
+}
+
+/**
* Creates a directory using FTP
*
* This is used when the safemode workaround is enabled
diff --git a/inc/lang/af/jquery.ui.datepicker.js b/inc/lang/af/jquery.ui.datepicker.js
new file mode 100644
index 000000000..0922ef7a1
--- /dev/null
+++ b/inc/lang/af/jquery.ui.datepicker.js
@@ -0,0 +1,23 @@
+/* Afrikaans initialisation for the jQuery UI date picker plugin. */
+/* Written by Renier Pretorius. */
+jQuery(function($){
+ $.datepicker.regional['af'] = {
+ closeText: 'Selekteer',
+ prevText: 'Vorige',
+ nextText: 'Volgende',
+ currentText: 'Vandag',
+ monthNames: ['Januarie','Februarie','Maart','April','Mei','Junie',
+ 'Julie','Augustus','September','Oktober','November','Desember'],
+ monthNamesShort: ['Jan', 'Feb', 'Mrt', 'Apr', 'Mei', 'Jun',
+ 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Des'],
+ dayNames: ['Sondag', 'Maandag', 'Dinsdag', 'Woensdag', 'Donderdag', 'Vrydag', 'Saterdag'],
+ dayNamesShort: ['Son', 'Maa', 'Din', 'Woe', 'Don', 'Vry', 'Sat'],
+ dayNamesMin: ['So','Ma','Di','Wo','Do','Vr','Sa'],
+ weekHeader: 'Wk',
+ dateFormat: 'dd/mm/yy',
+ firstDay: 1,
+ isRTL: false,
+ showMonthAfterYear: false,
+ yearSuffix: ''};
+ $.datepicker.setDefaults($.datepicker.regional['af']);
+});
diff --git a/inc/lang/af/lang.php b/inc/lang/af/lang.php
index ab8e5177b..826fda6e8 100644
--- a/inc/lang/af/lang.php
+++ b/inc/lang/af/lang.php
@@ -24,7 +24,6 @@ $lang['btn_logout'] = 'Teken uit';
$lang['btn_back'] = 'Terug';
$lang['btn_backlink'] = 'Wat skakel hierheen';
$lang['btn_subscribe'] = 'Hou bladsy dop';
-$lang['btn_unsubscribe'] = 'Verwyder van bladsy dophoulys';
$lang['btn_register'] = 'Skep gerus \'n rekening';
$lang['loggedinas'] = 'Ingeteken as';
$lang['user'] = 'Gebruikernaam';
diff --git a/inc/lang/ar/jquery.ui.datepicker.js b/inc/lang/ar/jquery.ui.datepicker.js
new file mode 100644
index 000000000..cef0f08fd
--- /dev/null
+++ b/inc/lang/ar/jquery.ui.datepicker.js
@@ -0,0 +1,23 @@
+/* Arabic Translation for jQuery UI date picker plugin. */
+/* Khaled Alhourani -- me@khaledalhourani.com */
+/* NOTE: monthNames are the original months names and they are the Arabic names, not the new months name فبراير - يناير and there isn't any Arabic roots for these months */
+jQuery(function($){
+ $.datepicker.regional['ar'] = {
+ closeText: 'إغلاق',
+ prevText: '&#x3C;السابق',
+ nextText: 'التالي&#x3E;',
+ currentText: 'اليوم',
+ monthNames: ['كانون الثاني', 'شباط', 'آذار', 'نيسان', 'مايو', 'حزيران',
+ 'تموز', 'آب', 'أيلول', 'تشرين الأول', 'تشرين الثاني', 'كانون الأول'],
+ monthNamesShort: ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'],
+ dayNames: ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'],
+ dayNamesShort: ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'],
+ dayNamesMin: ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'],
+ weekHeader: 'أسبوع',
+ dateFormat: 'dd/mm/yy',
+ firstDay: 6,
+ isRTL: true,
+ showMonthAfterYear: false,
+ yearSuffix: ''};
+ $.datepicker.setDefaults($.datepicker.regional['ar']);
+});
diff --git a/inc/lang/ar/lang.php b/inc/lang/ar/lang.php
index ad1de212b..157513429 100644
--- a/inc/lang/ar/lang.php
+++ b/inc/lang/ar/lang.php
@@ -1,12 +1,14 @@
<?php
+
/**
- * Arabic language file
- *
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
* @author Mostafa Hussein <mostafa@gmail.com>
* @author Yaman Hokan <always.smile.yh@hotmail.com>
* @author Usama Akkad <uahello@gmail.com>
* @author uahello@gmail.com
+ * @author Ahmad Abd-Elghany <tolpa1@gmail.com>
+ * @author alhajr <alhajr300@gmail.com>
*/
$lang['encoding'] = 'utf-8';
$lang['direction'] = 'rtl';
@@ -31,8 +33,8 @@ $lang['btn_upload'] = 'ارفع';
$lang['btn_cancel'] = 'ألغ';
$lang['btn_index'] = 'خريطة موقع';
$lang['btn_secedit'] = 'حرر';
-$lang['btn_login'] = 'لج';
-$lang['btn_logout'] = 'اخرج';
+$lang['btn_login'] = 'تسجيل الدخول';
+$lang['btn_logout'] = 'خروج';
$lang['btn_admin'] = 'المدير';
$lang['btn_update'] = 'حدّث';
$lang['btn_delete'] = 'احذف';
@@ -50,6 +52,7 @@ $lang['btn_revert'] = 'استعد';
$lang['btn_register'] = 'سجّل';
$lang['btn_apply'] = 'طبق';
$lang['btn_media'] = 'مدير الوسائط';
+$lang['btn_deleteuser'] = 'احذف حسابي الخاص';
$lang['loggedinas'] = 'داخل باسم';
$lang['user'] = 'اسم المستخدم';
$lang['pass'] = 'كلمة السر';
@@ -61,6 +64,7 @@ $lang['fullname'] = 'الاسم الحقيقي';
$lang['email'] = 'البريد الإلكتروني';
$lang['profile'] = 'الملف الشخصي';
$lang['badlogin'] = 'عذرا، اسم المشترك أو كلمة السر غير صحيحة';
+$lang['badpassconfirm'] = 'عذراً,كلمة السر غير صحيحة';
$lang['minoredit'] = 'تعديلات طفيفة';
$lang['draftdate'] = 'حفظ المسودات آليا مفعّل';
$lang['nosecedit'] = 'غُيرت الصفحة في هذه الأثناء، معلومات الجزء اصبحت قديمة. حُمُلت كل الصفحة بدلا.';
@@ -77,6 +81,11 @@ $lang['profna'] = 'هذه الويكي لا تدعم تعديل
$lang['profnochange'] = 'لا تغييرات، لا شيء ليُعمل.';
$lang['profnoempty'] = 'غير مسموح باسم مستخدم أو بريد فارغ.';
$lang['profchanged'] = 'حُدث الملف الشخصي للمستخدم بنجاح.';
+$lang['profnodelete'] = 'هذه الموسوعه لا ندعم حذف الأشخاص';
+$lang['profdeleteuser'] = 'احذف حساب';
+$lang['profdeleted'] = 'حسابك الخاص تم حذفه من هذه الموسوعة';
+$lang['profconfdelete'] = 'أنا أرغب في حذف حسابي من هذه الموسوعة.<br/>
+هذا الحدث غير ممكن.';
$lang['pwdforget'] = 'أنسيت كلمة السر؟ احصل على واحدة جديدة';
$lang['resendna'] = 'هذه الويكي لا تدعم إعادة إرسال كلمة المرور.';
$lang['resendpwd'] = 'اضبط كلمة سر جديدة لـ';
@@ -258,6 +267,8 @@ $lang['subscr_m_unsubscribe'] = 'ألغ الاشتراك';
$lang['subscr_m_subscribe'] = 'اشترك';
$lang['subscr_m_receive'] = 'استقبال';
$lang['subscr_style_every'] = 'بريدا على كل تغيير';
+$lang['subscr_style_digest'] = 'البريد الإلكتروني, ملخص للتغييرات لكل صفحة (كل يوم %.2f)';
+$lang['subscr_style_list'] = 'قائمة بالصفحات التي تم تغييرها منذ آخر بريد الإلكتروني (كل يوم %.2f)';
$lang['authtempfail'] = 'تصريح المشترك غير متوفر مؤقتاً، إن استمرت هذه الحالة يرجى مراسلة المدير';
$lang['authpwdexpire'] = 'ستنتهي صلاحية كلمة السر في %d . عليك بتغييرها سريعا.';
$lang['i_chooselang'] = 'اختر لغتك';
@@ -289,8 +300,12 @@ $lang['i_policy'] = 'تصريح ACL مبدئي';
$lang['i_pol0'] = 'ويكي مفتوحة؛ أي القراءة والكتابة والتحميل مسموحة للجميع';
$lang['i_pol1'] = 'ويكي عامة؛ أي القراءة للجميع ولكن الكتابة والتحميل للمشتركين المسجلين فقط';
$lang['i_pol2'] = 'ويكي مغلقة؛ أي القراءة والكتابة والتحميل للمشتركين المسجلين فقط';
+$lang['i_allowreg'] = 'السماح للمستخدمين بتسجيل أنفسهم';
$lang['i_retry'] = 'إعادة المحاولة';
$lang['i_license'] = 'اختر الرخصة التي تريد وضع المحتوى تحتها:';
+$lang['i_license_none'] = 'لا تظهر أية معلومات للترخيص';
+$lang['i_pop_field'] = 'من فضلك، ساعدنا على تحسين تجربة دوكي ويكي:';
+$lang['i_pop_label'] = 'مرة واحدة في شهر، إرسال بيانات استخدام المجهول للمطورين دوكي ويكي';
$lang['recent_global'] = 'انت تراقب حاليا التغييرات داخل نطاق <b>%s</b>. يمكنك أيضا <a href="%s">عرض أحدث تغييرات الويكي كلها</a>.';
$lang['years'] = '%d سنة مضت';
$lang['months'] = '%d شهرا مضى';
@@ -323,3 +338,6 @@ $lang['media_perm_read'] = 'عفوا، لست مخولا بقراءة ال
$lang['media_perm_upload'] = 'عفوا، لست مخولا برفع الملفات.';
$lang['media_update'] = 'ارفع إصدارا أحدث';
$lang['media_restore'] = 'استرجع هذه النسخة';
+$lang['currentns'] = 'مساحة الاسم الحالية';
+$lang['searchresult'] = 'نتيجة البحث';
+$lang['wikimarkup'] = 'علامات الوكي';
diff --git a/inc/lang/az/jquery.ui.datepicker.js b/inc/lang/az/jquery.ui.datepicker.js
new file mode 100644
index 000000000..a133a9eb2
--- /dev/null
+++ b/inc/lang/az/jquery.ui.datepicker.js
@@ -0,0 +1,23 @@
+/* Azerbaijani (UTF-8) initialisation for the jQuery UI date picker plugin. */
+/* Written by Jamil Najafov (necefov33@gmail.com). */
+jQuery(function($) {
+ $.datepicker.regional['az'] = {
+ closeText: 'Bağla',
+ prevText: '&#x3C;Geri',
+ nextText: 'İrəli&#x3E;',
+ currentText: 'Bugün',
+ monthNames: ['Yanvar','Fevral','Mart','Aprel','May','İyun',
+ 'İyul','Avqust','Sentyabr','Oktyabr','Noyabr','Dekabr'],
+ monthNamesShort: ['Yan','Fev','Mar','Apr','May','İyun',
+ 'İyul','Avq','Sen','Okt','Noy','Dek'],
+ dayNames: ['Bazar','Bazar ertəsi','Çərşənbə axşamı','Çərşənbə','Cümə axşamı','Cümə','Şənbə'],
+ dayNamesShort: ['B','Be','Ça','Ç','Ca','C','Ş'],
+ dayNamesMin: ['B','B','Ç','С','Ç','C','Ş'],
+ weekHeader: 'Hf',
+ dateFormat: 'dd.mm.yy',
+ firstDay: 1,
+ isRTL: false,
+ showMonthAfterYear: false,
+ yearSuffix: ''};
+ $.datepicker.setDefaults($.datepicker.regional['az']);
+});
diff --git a/inc/lang/az/lang.php b/inc/lang/az/lang.php
index f296dacc8..df54b4f10 100644
--- a/inc/lang/az/lang.php
+++ b/inc/lang/az/lang.php
@@ -37,7 +37,6 @@ $lang['btn_back'] = 'Geri';
$lang['btn_backlink'] = 'Bura olan link-lər';
$lang['btn_backtomedia'] = 'media-fayl seçiminə qayıt';
$lang['btn_subscribe'] = 'Abunə ol (bütün dəyişiklər)';
-$lang['btn_unsubscribe'] = 'Abunəlikdən çıx (bütün dəyişiklər)';
$lang['btn_profile'] = 'Profil';
$lang['btn_reset'] = 'Boşalt';
$lang['btn_draft'] = 'Qaralamada düzəliş etmək';
@@ -89,7 +88,6 @@ $lang['txt_overwrt'] = 'Mövcud olan faylın üstündən yaz';
$lang['lockedby'] = 'В данный момент заблокирован Bu an blokdadır';
$lang['lockexpire'] = 'Blok bitir:';
$lang['js']['willexpire'] = 'Sizin bu səhifədə dəyişik etmək üçün blokunuz bir dəqiqə ərzində bitəcək.\nMünaqişələrdən yayınmaq və blokun taymerini sıfırlamaq üçün, baxış düyməsini sıxın.';
-$lang['notsavedyet'] = 'Yaddaşa yazılmamış dəyişiklər itəcəklər.\nSiz davam etmək istəyirsiz?';
$lang['rssfailed'] = 'Aşağıda göstərilmiş xəbər lentini əldə edən zaman xəta baş verdi: ';
$lang['nothingfound'] = 'Heçnə tapılmadı.';
$lang['mediaselect'] = 'Mediya-faylın seçilməsi';
@@ -185,11 +183,6 @@ $lang['img_copyr'] = 'Müəllif hüquqları';
$lang['img_format'] = 'Format';
$lang['img_camera'] = 'Model';
$lang['img_keywords'] = 'Açar sözlər';
-$lang['subscribe_success'] = '%s adlı istifadəçi %s səhifənin paylanma siyahısına əlavə olundu';
-$lang['subscribe_error'] = '%s adlı istifadəçini %s səhifənin paylanma siyahısına əlavə etmə zamanı səhv baş verdi';
-$lang['subscribe_noaddress'] = 'Sizin profilinizdə e-mail göstərilməyib.Ona görə siz paylnma siyahılarına əlavə edilə bilməzsiniz.';
-$lang['unsubscribe_success'] = '%s adlı istifadəçi %s səhifənin paylanma siyahısından silinmişdir';
-$lang['unsubscribe_error'] = '%s adlı istifadəçini %s səhifənin paylanma siyahısından silən zaman xəta baş verdi.';
$lang['authtempfail'] = 'İstifadəçilərin autentifikasiyası müvəqqəti dayandırılıb. Əgər bu problem uzun müddət davam edir sə, administrator ilə əlaqə saxlayın.';
$lang['i_chooselang'] = 'Dili seçin/Language';
$lang['i_installer'] = 'DokuWiki quraşdırılır';
diff --git a/inc/lang/bg/jquery.ui.datepicker.js b/inc/lang/bg/jquery.ui.datepicker.js
new file mode 100644
index 000000000..86ab88582
--- /dev/null
+++ b/inc/lang/bg/jquery.ui.datepicker.js
@@ -0,0 +1,24 @@
+/* Bulgarian initialisation for the jQuery UI date picker plugin. */
+/* Written by Stoyan Kyosev (http://svest.org). */
+jQuery(function($){
+ $.datepicker.regional['bg'] = {
+ closeText: 'затвори',
+ prevText: '&#x3C;назад',
+ nextText: 'напред&#x3E;',
+ nextBigText: '&#x3E;&#x3E;',
+ currentText: 'днес',
+ monthNames: ['Януари','Февруари','Март','Април','Май','Юни',
+ 'Юли','Август','Септември','Октомври','Ноември','Декември'],
+ monthNamesShort: ['Яну','Фев','Мар','Апр','Май','Юни',
+ 'Юли','Авг','Сеп','Окт','Нов','Дек'],
+ dayNames: ['Неделя','Понеделник','Вторник','Сряда','Четвъртък','Петък','Събота'],
+ dayNamesShort: ['Нед','Пон','Вто','Сря','Чет','Пет','Съб'],
+ dayNamesMin: ['Не','По','Вт','Ср','Че','Пе','Съ'],
+ weekHeader: 'Wk',
+ dateFormat: 'dd.mm.yy',
+ firstDay: 1,
+ isRTL: false,
+ showMonthAfterYear: false,
+ yearSuffix: ''};
+ $.datepicker.setDefaults($.datepicker.regional['bg']);
+});
diff --git a/inc/lang/bg/lang.php b/inc/lang/bg/lang.php
index e909980db..bb74ff1ca 100644
--- a/inc/lang/bg/lang.php
+++ b/inc/lang/bg/lang.php
@@ -1,20 +1,20 @@
<?php
+
/**
- * Bulgarian language file
- *
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
* @author Nikolay Vladimirov <nikolay@vladimiroff.com>
* @author Viktor Usunov <usun0v@mail.bg>
* @author Kiril <neohidra@gmail.com>
+ * @author Ivan Peltekov <ivan.peltekov@abv.bg>
*/
$lang['encoding'] = 'utf-8';
$lang['direction'] = 'ltr';
-$lang['doublequoteopening'] = '"'; //&ldquo;
-$lang['doublequoteclosing'] = '"'; //&rdquo;
-$lang['singlequoteopening'] = '‘'; //&lsquo;
-$lang['singlequoteclosing'] = '’'; //&rsquo;
-$lang['apostrophe'] = '’'; //&rsquo;
-
+$lang['doublequoteopening'] = '"';
+$lang['doublequoteclosing'] = '"';
+$lang['singlequoteopening'] = '‘';
+$lang['singlequoteclosing'] = '’';
+$lang['apostrophe'] = '’';
$lang['btn_edit'] = 'Редактиране';
$lang['btn_source'] = 'Преглед на кода';
$lang['btn_show'] = 'Преглед на страницата';
@@ -50,7 +50,7 @@ $lang['btn_revert'] = 'Възстановяване';
$lang['btn_register'] = 'Регистриране';
$lang['btn_apply'] = 'Прилагане';
$lang['btn_media'] = 'Диспечер на файлове';
-
+$lang['btn_deleteuser'] = 'Изтрий профила ми';
$lang['loggedinas'] = 'Вписани сте като';
$lang['user'] = 'Потребител';
$lang['pass'] = 'Парола';
@@ -62,10 +62,10 @@ $lang['fullname'] = 'Истинско име';
$lang['email'] = 'Електронна поща';
$lang['profile'] = 'Потребителски профил';
$lang['badlogin'] = 'Грешно потребителско име или парола.';
+$lang['badpassconfirm'] = 'Съжаляваме, паролата е грешна';
$lang['minoredit'] = 'Промените са незначителни';
-$lang['draftdate'] = 'Черновата е автоматично записана на'; // full dformat date will be added
+$lang['draftdate'] = 'Черновата е автоматично записана на';
$lang['nosecedit'] = 'Страницата бе междувременно променена, презареждане на страницата поради неактуална информация.';
-
$lang['regmissing'] = 'Моля, попълнете всички полета.';
$lang['reguexists'] = 'Вече съществува потребител с избраното име.';
$lang['regsuccess'] = 'Потребителят е създаден, а паролата е пратена по електронната поща.';
@@ -75,12 +75,15 @@ $lang['regbadmail'] = 'Въведеният адрес изглежд
$lang['regbadpass'] = 'Двете въведени пароли не съвпадат, моля опитайте отново.';
$lang['regpwmail'] = 'Паролата ви за DokuWiki';
$lang['reghere'] = 'Все още нямате профил? Направете си';
-
$lang['profna'] = 'Wiki-то не поддържа промяна на профила';
$lang['profnochange'] = 'Няма промени.';
$lang['profnoempty'] = 'Въвеждането на име и ел. поща е задължително';
$lang['profchanged'] = 'Потребителският профил е обновен успешно.';
-
+$lang['profnodelete'] = 'Не е възможно изтриване на потребители в това wiki ';
+$lang['profdeleteuser'] = 'Изтрий профила ми';
+$lang['profdeleted'] = 'Вашият профил е премахнат от това wiki ';
+$lang['profconfdelete'] = 'Искам да изтрия профила си от това wiki. <br/> Веднъж изтрит, профила не може да бъде възстановен!';
+$lang['profconfdeletemissing'] = 'Не и маркирана опцията за потвърждение';
$lang['pwdforget'] = 'Забравили сте паролата си? Получете нова';
$lang['resendna'] = 'Wiki-то не поддържа повторно пращане на паролата.';
$lang['resendpwd'] = 'Задаване на нова парола за';
@@ -89,10 +92,8 @@ $lang['resendpwdnouser'] = 'Потребителят не е намере
$lang['resendpwdbadauth'] = 'Кодът за потвърждение е невалиден. Проверете дали сте използвали целия линк за потвърждение.';
$lang['resendpwdconfirm'] = 'Линк за потвърждение е пратен по електронната поща.';
$lang['resendpwdsuccess'] = 'Новата ви паролата е пратена по електронната поща.';
-
$lang['license'] = 'Ако не е посочено друго, съдържанието на Wiki-то е лицензирано под следния лиценз:';
$lang['licenseok'] = 'Бележка: Редактирайки страницата, Вие се съгласявате да лицензирате промените (които сте направили) под следния лиценз:';
-
$lang['searchmedia'] = 'Търсене на файл: ';
$lang['searchmedia_in'] = 'Търсене в %s';
$lang['txt_upload'] = 'Изберете файл за качване';
@@ -101,7 +102,6 @@ $lang['txt_overwrt'] = 'Презапиши съществуващит
$lang['maxuploadsize'] = 'Макс. размер за отделните файлове е %s.';
$lang['lockedby'] = 'В момента е заключена от';
$lang['lockexpire'] = 'Ще бъде отключена на';
-
$lang['js']['willexpire'] = 'Страницата ще бъде отключена за редактиране след минута.\nЗа предотвратяване на конфликти, ползвайте бутона "Преглед", за рестартиране на брояча за заключване.';
$lang['js']['notsavedyet'] = 'Незаписаните промени ще бъдат загубени. Желаете ли да продължите?';
$lang['js']['searchmedia'] = 'Търсене на файлове';
@@ -143,10 +143,8 @@ $lang['js']['media_done_btn'] = 'Готово';
$lang['js']['media_drop'] = 'Влачете и пуснете файливе тук, за да бъдат качени';
$lang['js']['media_cancel'] = 'премахване';
$lang['js']['media_overwrt'] = 'Презапиши съществуващите файлове';
-
$lang['rssfailed'] = 'Възникна грешка при получаването на емисията: ';
$lang['nothingfound'] = 'Нищо не е открито.';
-
$lang['mediaselect'] = 'Файлове';
$lang['fileupload'] = 'Качване на файлове';
$lang['uploadsucc'] = 'Качването е успешно';
@@ -171,7 +169,6 @@ $lang['mediaextchange'] = 'Разширението на файла е с
$lang['reference'] = 'Връзки за';
$lang['ref_inuse'] = 'Файлът не може да бъде изтрит, защото все още се ползва от следните страници:';
$lang['ref_hidden'] = 'Някои връзки са към страници, които нямате права да четете';
-
$lang['hits'] = 'Съвпадения';
$lang['quickhits'] = 'Съвпадащи имена на страници';
$lang['toc'] = 'Съдържание';
@@ -201,18 +198,15 @@ $lang['site_tools'] = 'Инструменти за сайта';
$lang['page_tools'] = 'Инструменти за страници';
$lang['skip_to_content'] = 'към съдържанието';
$lang['sidebar'] = 'Странична лента';
-
$lang['mail_newpage'] = 'добавена страница: ';
$lang['mail_changed'] = 'променена страница: ';
$lang['mail_subscribe_list'] = 'променени страници в именно пространство: ';
$lang['mail_new_user'] = 'нов потребител: ';
$lang['mail_upload'] = 'качен файл: ';
-
$lang['changes_type'] = 'Преглед на променените';
$lang['pages_changes'] = 'Страници';
$lang['media_changes'] = 'Файлове';
$lang['both_changes'] = 'Страници и файлове';
-
$lang['qb_bold'] = 'Удебелен текст';
$lang['qb_italic'] = 'Курсив текст';
$lang['qb_underl'] = 'Подчертан текст';
@@ -237,11 +231,8 @@ $lang['qb_media'] = 'Добавяне на изображения
$lang['qb_sig'] = 'Вмъкване на подпис';
$lang['qb_smileys'] = 'Усмивчици';
$lang['qb_chars'] = 'Специални знаци';
-
$lang['upperns'] = 'към майчиното именно пространство';
-
$lang['admin_register'] = 'Добавяне на нов потребител';
-
$lang['metaedit'] = 'Редактиране на метаданни';
$lang['metasaveerr'] = 'Записването на метаданните се провали';
$lang['metasaveok'] = 'Метаданните са запазени успешно';
@@ -259,7 +250,6 @@ $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'] = 'Добавянето ви към списъка с абонати не е възможно поради липсата на свързан адрес (на ел. поща) с профила ви.';
@@ -267,7 +257,6 @@ $lang['subscr_unsubscribe_success'] = '%s е премахнат от списъ
$lang['subscr_unsubscribe_error'] = 'Грешка при премахването на %s от списъка с абониралите се за %s';
$lang['subscr_already_subscribed'] = '%s е вече абониран за %s';
$lang['subscr_not_subscribed'] = '%s не е абониран за %s';
-// Manage page for subscriptions
$lang['subscr_m_not_subscribed'] = 'Не сте абониран за текущата страницата или именно пространство.';
$lang['subscr_m_new_header'] = 'Добави абонамент';
$lang['subscr_m_current_header'] = 'Текущи абонаменти';
@@ -277,12 +266,8 @@ $lang['subscr_m_receive'] = 'Получаване';
$lang['subscr_style_every'] = 'на ел. писмо при всяка промяна';
$lang['subscr_style_digest'] = 'на ел. писмо с обобщение на промените във всяка страница (всеки %.2f дни)';
$lang['subscr_style_list'] = 'на списък с променените страници от последното ел. писмо (всеки %.2f дни)';
-
-/* auth.class language support */
$lang['authtempfail'] = 'Удостоверяването на потребители не е възможно за момента. Ако продължи дълго, моля уведомете администратора на Wiki страницата.';
$lang['authpwdexpire'] = 'Срока на паролата ви ще изтече след %d дни. Препорачително е да я смените по-скоро.';
-
-/* installer strings */
$lang['i_chooselang'] = 'Изберете вашия изик';
$lang['i_installer'] = 'Инсталатор на DokuWiki';
$lang['i_wikiname'] = 'Име на Wiki-то';
@@ -299,19 +284,18 @@ $lang['i_writeerr'] = '<code>%s</code> не можа да бъде с
$lang['i_badhash'] = 'Файлът dokuwiki.php не може да бъде разпознат или е променен (hash=<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'] = 'Първоначална политика за достъп';
$lang['i_pol0'] = 'Отворено Wiki (всеки може да чете, пише и качва)';
$lang['i_pol1'] = 'Публично Wiki (всеки може да чете, само регистрирани пишат и качват)';
$lang['i_pol2'] = 'Затворено Wiki (само регистрирани четат, пишат и качват)';
+$lang['i_allowreg'] = 'Разрешете на потребителите за се регистрират сами';
$lang['i_retry'] = 'Повторен опит';
$lang['i_license'] = 'Моля, изберете лиценз под който желаете да публикувате съдържанието:';
$lang['i_license_none'] = 'Без показване на информация относно лиценза';
$lang['i_pop_field'] = 'Моля, помогнете за усъвършенстването на DokuWiki:';
$lang['i_pop_label'] = 'Изпращане на анонимна информация до разработчиците на DokuWiki, веднъж седмично';
-
$lang['recent_global'] = 'В момента преглеждате промените в именно пространство <b>%s</b>. Може да прегледате и <a href="%s">промените в цялото Wiki</a>.';
$lang['years'] = 'преди %d години';
$lang['months'] = 'преди %d месеца';
@@ -320,9 +304,7 @@ $lang['days'] = 'преди %d дни';
$lang['hours'] = 'преди %d часа';
$lang['minutes'] = 'преди %d минути';
$lang['seconds'] = 'преди %d секунди';
-
$lang['wordblock'] = 'Направените от Вас промени не са съхранени, защото съдържат забранен текст (SPAM).';
-
$lang['media_uploadtab'] = 'Качване';
$lang['media_searchtab'] = 'Търсене';
$lang['media_file'] = 'Файл';
@@ -346,5 +328,5 @@ $lang['media_perm_read'] = 'За съжаление нямате дост
$lang['media_perm_upload'] = 'За съжаление нямате достатъчно права, за да можете да качите файла.';
$lang['media_update'] = 'Качване на нова версия';
$lang['media_restore'] = 'Възстановяване на тази версия';
-
-//Setup VIM: ex: et ts=2 :
+$lang['searchresult'] = 'Резултати от търсенето';
+$lang['plainhtml'] = 'Обикновен HTML';
diff --git a/inc/lang/bn/admin.txt b/inc/lang/bn/admin.txt
new file mode 100644
index 000000000..ede23c764
--- /dev/null
+++ b/inc/lang/bn/admin.txt
@@ -0,0 +1,3 @@
+====== প্রশাসন ======
+
+আপনি DokuWiki পাওয়া প্রশাসনিক কাজগুলো একটি তালিকা পেতে পারেন নীচে. \ No newline at end of file
diff --git a/inc/lang/bn/adminplugins.txt b/inc/lang/bn/adminplugins.txt
new file mode 100644
index 000000000..c491ff9b4
--- /dev/null
+++ b/inc/lang/bn/adminplugins.txt
@@ -0,0 +1 @@
+===== অতিরিক্ত প্লাগইন ===== \ No newline at end of file
diff --git a/inc/lang/bn/backlinks.txt b/inc/lang/bn/backlinks.txt
new file mode 100644
index 000000000..61a7cac3f
--- /dev/null
+++ b/inc/lang/bn/backlinks.txt
@@ -0,0 +1,3 @@
+====== ব্যাকলিঙ্কগুলি ======
+
+এই বর্তমান পৃষ্ঠায় ফিরে সংযোগ আছে বলে মনে হচ্ছে যে পেজের একটি তালিকা. \ No newline at end of file
diff --git a/inc/lang/bn/conflict.txt b/inc/lang/bn/conflict.txt
new file mode 100644
index 000000000..b18ad9531
--- /dev/null
+++ b/inc/lang/bn/conflict.txt
@@ -0,0 +1,5 @@
+====== একটি নতুন সংস্করণ উপস্থিত ======
+
+আপনি সম্পাদিত ডকুমেন্টের একটি নতুন সংস্করণ বিদ্যমান. আপনি এটি সম্পাদনা যখন অন্য ব্যবহারকারীর নথি পরিবর্তিত যখন এটি হয়.
+
+পুঙ্খানুপুঙ্খভাবে নিচে দেখানো পার্থক্য পরীক্ষা, তারপর রাখা যা সংস্করণে ঠিক. আপনি "সংরক্ষণ" চয়ন, আপনার সংস্করণ সংরক্ষিত হবে অথবা বর্তমান সংস্করণ রাখা ''বাতিল'' হিট করুন. \ No newline at end of file
diff --git a/inc/lang/bn/denied.txt b/inc/lang/bn/denied.txt
new file mode 100644
index 000000000..711275bad
--- /dev/null
+++ b/inc/lang/bn/denied.txt
@@ -0,0 +1,3 @@
+====== অনুমতি অস্বীকার =====
+
+দুঃখিত, আপনি কি এগিয়ে যেতে যথেষ্ট অধিকার নেই. সম্ভবত আপনি লগইন ভুলে গেছেন? \ No newline at end of file
diff --git a/inc/lang/bn/diff.txt b/inc/lang/bn/diff.txt
new file mode 100644
index 000000000..5952e28da
--- /dev/null
+++ b/inc/lang/bn/diff.txt
@@ -0,0 +1,3 @@
+====== পার্থক্য ======
+
+এর মানে আপনি পৃষ্ঠার দুটি সংস্করণের মধ্যে পার্থক্য দেখায়. \ No newline at end of file
diff --git a/inc/lang/bn/draft.txt b/inc/lang/bn/draft.txt
new file mode 100644
index 000000000..0b614f485
--- /dev/null
+++ b/inc/lang/bn/draft.txt
@@ -0,0 +1,5 @@
+====== খসড়া ফাইল ====== পাওয়া
+
+এই পৃষ্ঠাতে আপনার সর্বশেষ সম্পাদনা সময় সঠিকভাবে সম্পন্ন করা হয় নি. DokuWiki স্বয়ংক্রিয়ভাবে আপনি এখন আপনার সম্পাদনা চালিয়ে যেতে ব্যবহার করতে পারেন যা আপনার কাজ করার সময় একটি খসড়া সংরক্ষিত. আপনি আপনার শেষ সময় থেকে সংরক্ষিত ছিল যে তথ্য দেখতে পারেন নিচে.
+
+আপনি / /ফিরাইয়া আনা / / আপনার হারিয়ে সম্পাদনা সময়, / / মুছে দিন / / স্বতঃসংরক্ষিত খসড়া অথবা / / বাতিল / / সম্পাদনা প্রক্রিয়া পুনরুদ্ধার করতে চান তা স্থির করুন. \ No newline at end of file
diff --git a/inc/lang/bn/edit.txt b/inc/lang/bn/edit.txt
new file mode 100644
index 000000000..b294b6461
--- /dev/null
+++ b/inc/lang/bn/edit.txt
@@ -0,0 +1 @@
+পাতা সম্পাদনা করুন এবং ''সংরক্ষণ'' আঘাত. দেখুন [[উইকি: সিনট্যাক্স]] উইকি সিনট্যাক্স জন্য. আপনি এটি **উন্নত** করতে পারেন শুধুমাত্র যদি পাতাটি সম্পাদনা করুন. আপনি কিছু কিছু বিষয় পরীক্ষা আপনার প্রথম পদক্ষেপ করা শিখতে চান [[খেলার মাঠ: খেলার মাঠ | খেলার মাঠ]]. \ No newline at end of file
diff --git a/inc/lang/bn/editrev.txt b/inc/lang/bn/editrev.txt
new file mode 100644
index 000000000..1ea72367e
--- /dev/null
+++ b/inc/lang/bn/editrev.txt
@@ -0,0 +1,2 @@
+** আপনি নথির একটি পুরোনো সংস্করণ লোড করেছেন! ** যদি আপনি এটি সংরক্ষণ করেন, আপনি এই তথ্য দিয়ে একটি নতুন সংস্করণ তৈরি করবে.
+---- \ No newline at end of file
diff --git a/inc/lang/bn/index.txt b/inc/lang/bn/index.txt
new file mode 100644
index 000000000..9f5ad751a
--- /dev/null
+++ b/inc/lang/bn/index.txt
@@ -0,0 +1,3 @@
+====== সাইটম্যাপ ======
+
+এই দ্বারা আদেশ সমস্ত উপলব্ধ পৃষ্ঠাগুলি উপর একটি সাইট ম্যাপ হল [[Doku> নামব্যবধান | নামব্যবধান]]. \ No newline at end of file
diff --git a/inc/lang/bn/lang.php b/inc/lang/bn/lang.php
new file mode 100644
index 000000000..230f3ef80
--- /dev/null
+++ b/inc/lang/bn/lang.php
@@ -0,0 +1,160 @@
+<?php
+
+/**
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Foysol <ragebot1125@gmail.com>
+ * @author ninetailz <ninetailz1125@gmail.com>
+ * @author Khan M. B. Asad <muhammad2017@gmail.com>
+ */
+$lang['encoding'] = 'utf-8';
+$lang['direction'] = 'itr';
+$lang['doublequoteopening'] = '"';
+$lang['doublequoteclosing'] = '"';
+$lang['singlequoteopening'] = '\'';
+$lang['singlequoteclosing'] = '\'';
+$lang['apostrophe'] = '\'';
+$lang['btn_edit'] = 'এই পৃষ্ঠা সম্পাদনা করুন';
+$lang['btn_source'] = 'দেখান পাতা উৎস';
+$lang['btn_show'] = 'দেখান পৃষ্ঠা';
+$lang['btn_create'] = 'এই পৃষ্ঠা তৈরি করুন';
+$lang['btn_search'] = 'অনুসন্ধান';
+$lang['btn_save'] = 'Save';
+$lang['btn_preview'] = 'পূর্বরূপ';
+$lang['btn_top'] = 'উপরে ফিরে যান ';
+$lang['btn_newer'] = '<< আরো সাম্প্রতিক';
+$lang['btn_older'] = 'কম সাম্প্রতিক >>';
+$lang['btn_revs'] = 'প্রাচীন সংশোধন';
+$lang['btn_recent'] = 'সাধিত পরিবর্তনসমূহ';
+$lang['btn_upload'] = 'আপলোড করুন';
+$lang['btn_cancel'] = 'বাতিল করা';
+$lang['btn_index'] = 'সাইট ম্যাপ';
+$lang['btn_secedit'] = 'সম্পাদন করা';
+$lang['btn_login'] = 'লগইন';
+$lang['btn_logout'] = 'লগ আউট';
+$lang['btn_admin'] = 'অ্যাডমিন';
+$lang['btn_update'] = 'আধুনিক করা';
+$lang['btn_delete'] = 'মুছে ফেলা';
+$lang['btn_back'] = 'পিছনে';
+$lang['btn_backlink'] = 'ব্যাকলিঙ্কগুলি';
+$lang['btn_backtomedia'] = 'পিছনে Mediafile নির্বাচনে যান';
+$lang['btn_subscribe'] = 'সাবস্ক্রিপশন পরিচালনা করুন';
+$lang['btn_profile'] = 'প্রোফাইল আপডেট করুন';
+$lang['btn_reset'] = 'রিসেট করুন';
+$lang['btn_resendpwd'] = 'সেট করুন নতুন পাসওয়ার্ড';
+$lang['btn_draft'] = 'সম্পাদনা খসড়া';
+$lang['btn_recover'] = 'খসড়া উদ্ধার';
+$lang['btn_draftdel'] = 'খসড়া মুছে দিন';
+$lang['btn_revert'] = 'পুনরূদ্ধার করা';
+$lang['btn_register'] = 'খাতা';
+$lang['btn_apply'] = 'প্রয়োগ করা';
+$lang['btn_media'] = 'মিডিয়া ম্যানেজার';
+$lang['btn_deleteuser'] = 'আমার অ্যাকাউন্ট অপসারণ করুন';
+$lang['loggedinas'] = 'লগ ইন';
+$lang['user'] = 'ইউজারনেম';
+$lang['pass'] = 'পাসওয়ার্ড';
+$lang['newpass'] = 'নতুন পাসওয়ার্ড';
+$lang['oldpass'] = 'বর্তমান পাসওয়ার্ড নিশ্চিত করুন';
+$lang['passchk'] = 'আরো একবার';
+$lang['remember'] = 'আমাকে মনে রেখো';
+$lang['fullname'] = 'আমাকে মনে রেখো';
+$lang['email'] = 'ই মেইল';
+$lang['profile'] = 'ব্যবহারকারী প্রোফাইল';
+$lang['badlogin'] = 'দুঃখিত, ব্যবহারকারীর নাম বা পাসওয়ার্ড ভুল ছিল.';
+$lang['badpassconfirm'] = 'দুঃখিত, পাসওয়ার্ড ভুল ছিল';
+$lang['minoredit'] = 'ক্ষুদ্র পরিবর্তনসমূহ';
+$lang['draftdate'] = 'খসড়া উপর স্বতঃসংরক্ষণ';
+$lang['nosecedit'] = 'পাতা ইতিমধ্যে পরিবর্তিত হয়েছিল, অধ্যায় তথ্যের পরিবর্তে পুরো পাতা লোড তারিখ সীমার বাইরে ছিল.
+';
+$lang['regmissing'] = 'দুঃখিত, আপনি সমস্ত ক্ষেত্রগুলি পূরণ করা আবশ্যক.';
+$lang['reguexists'] = 'দুঃখিত, এই লগইন সঙ্গে একটি ব্যবহারকারী ইতিমধ্যেই বিদ্যমান.';
+$lang['regsuccess'] = 'ব্যবহারকারী তৈরি করা হয়েছে এবং পাসওয়ার্ড ইমেইল করে পাঠানো হয়েছিল.';
+$lang['regsuccess2'] = 'ব্যবহারকারী তৈরি করা হয়েছে.';
+$lang['regmailfail'] = 'একটি ত্রুটি পাসওয়ার্ড মেইল পাঠানোর নেভিগেশন ছিল মনে হচ্ছে. অ্যাডমিন যোগাযোগ করুন!';
+$lang['regbadmail'] = 'প্রদত্ত ইমেইল ঠিকানা সঠিক মনে হচ্ছে - আপনি এই একটি ত্রুটি মনে হলে, অ্যাডমিন যোগাযোগ';
+$lang['regbadpass'] = 'দুটি প্রদত্ত পাসওয়ার্ড অভিন্ন নয়, আবার চেষ্টা করুন.';
+$lang['regpwmail'] = 'আপনার DokuWiki পাসওয়ার্ড';
+$lang['reghere'] = 'যদিও তোমার কোনো একাউন্ট নেই? শুধু একটি পেতে';
+$lang['profna'] = 'এই উইকি প্রোফাইল পরিবর্তন সমর্থন করে না';
+$lang['profnochange'] = 'এমন কোন পরিবর্তন, না কিছুই.';
+$lang['profnoempty'] = 'একটি খালি নাম অথবা ইমেইল ঠিকানা অনুমোদিত নয়.';
+$lang['profchanged'] = 'ইউজার প্রোফাইল সফলভাবে আপডেট.';
+$lang['profnodelete'] = 'এই উইকি ব্যবহারকারী মুছে ফেলার সমর্থন করে না';
+$lang['profdeleteuser'] = 'একাউন্ট মুছে দিন';
+$lang['profdeleted'] = 'আপনার অ্যাকাউন্টটি এই উইকি থেকে মুছে ফেলা হয়েছে';
+$lang['profconfdelete'] = 'আমি এই উইকি থেকে আমার অ্যাকাউন্ট অপসারণ করতে ইচ্ছুক. <br/> এই ক্রিয়াটি পূর্বাবস্থায় ফেরানো যায় না.';
+$lang['profconfdeletemissing'] = 'নিশ্চিতকরণ চেক বক্স ticked না';
+$lang['pwdforget'] = 'আপনার পাসওয়ার্ড ভুলে গেছেন? একটি নতুন পান';
+$lang['resendna'] = 'এই উইকি পাসওয়ার্ড পুনরায় প্রেরণ সমর্থন করে না.';
+$lang['resendpwd'] = 'জন্য সেট করুন নতুন পাসওয়ার্ড';
+$lang['resendpwdmissing'] = 'দুঃখিত, আপনি সমস্ত ক্ষেত্রগুলি পূরণ করা আবশ্যক.';
+$lang['resendpwdnouser'] = 'দুঃখিত, আমরা আমাদের ডাটাবেসের মধ্যে ব্যবহারকারীর খুঁজে পাচ্ছি না.';
+$lang['resendpwdbadauth'] = 'দুঃখিত, এই auth কোড বৈধ নয়. আপনি সম্পূর্ণ কনফার্মেশন লিঙ্ক ব্যবহার নিশ্চিত করুন.';
+$lang['resendpwdconfirm'] = 'একটি নিশ্চায়ন লিঙ্ক ইমেলের মাধ্যমে পাঠানো হয়েছে.';
+$lang['resendpwdsuccess'] = 'আপনার নতুন পাসওয়ার্ড ইমেইলের মাধ্যমে পাঠানো হয়েছে.';
+$lang['license'] = 'অন্যথায় নোট যেখানে ছাড়া, এই উইকি নেভিগেশন কন্টেন্ট নিম্নলিখিত লাইসেন্সের আওতায় লাইসেন্সকৃত:';
+$lang['licenseok'] = 'দ্রষ্টব্য: আপনি নিম্নলিখিত লাইসেন্সের অধীনে আপনার বিষয়বস্তু লাইসেন্স সম্মত হন এই পৃষ্ঠার সম্পাদনার দ্বারা:';
+$lang['searchmedia'] = 'অনুসন্ধান ফাইলের নাম:';
+$lang['searchmedia_in'] = 'অনুসন্ধান %s -এ';
+$lang['txt_upload'] = 'আপলোড করার জন্য নির্বাচন করুন ফাইল';
+$lang['txt_filename'] = 'হিসাবে আপলোড করুন (ঐচ্ছিক)';
+$lang['txt_overwrt'] = 'বিদ্যমান ফাইল মুছে যাবে';
+$lang['maxuploadsize'] = 'সর্বোচ্চ আপলোড করুন. %s-ফাইলের প্রতি.';
+$lang['lockedby'] = 'বর্তমানে দ্বারা লক';
+$lang['lockexpire'] = 'তালা এ মেয়াদ শেষ';
+$lang['js']['willexpire'] = 'এই পৃষ্ঠার সম্পাদনার জন্য আপনার লক এক মিনিটের মধ্যে মেয়াদ শেষ সম্পর্কে. \ দ্বন্দ্ব লক টাইমার রিসেট প্রিভিউ বাটন ব্যবহার এড়াতে.';
+$lang['js']['notsavedyet'] = 'অসংরক্ষিত পরিবর্তন হারিয়ে যাবে.';
+$lang['js']['searchmedia'] = 'ফাইলের জন্য অনুসন্ধান';
+$lang['js']['keepopen'] = 'নির্বাচনের উপর উইন্ডো খোলা রাখুন';
+$lang['js']['hidedetails'] = 'বিশদ আড়াল করুন';
+$lang['js']['mediatitle'] = 'লিংক সেটিংস';
+$lang['js']['mediadisplay'] = 'লিংক টাইপ';
+$lang['js']['mediaalign'] = 'শ্রেণীবিন্যাস';
+$lang['js']['mediasize'] = 'চিত্র আকার';
+$lang['js']['mediatarget'] = 'লিংক টার্গেট';
+$lang['js']['mediaclose'] = 'বন্ধ করা';
+$lang['js']['mediainsert'] = 'ঢোকান';
+$lang['js']['mediadisplayimg'] = 'ছবিটি দেখান';
+$lang['js']['mediadisplaylnk'] = 'শুধুমাত্র লিঙ্ক দেখান';
+$lang['js']['mediasmall'] = 'ক্ষুদ্র সংস্করণ';
+$lang['js']['mediamedium'] = 'মাধ্যম সংস্করণ';
+$lang['js']['medialarge'] = 'বড় সংস্করণ';
+$lang['js']['mediaoriginal'] = 'আসল সংস্করণ';
+$lang['js']['medialnk'] = 'বিস্তারিত পৃষ্ঠায় লিংক';
+$lang['js']['mediadirect'] = 'মূল সরাসরি লিঙ্ক';
+$lang['js']['medianolnk'] = 'কোনো লিঙ্ক নাই';
+$lang['js']['medianolink'] = 'ইমেজ লিঙ্ক কোরো না';
+$lang['js']['medialeft'] = 'বাম দিকে ইমেজ সারিবদ্ধ কর';
+$lang['js']['mediaright'] = 'ডান দিকে ইমেজ সারিবদ্ধ কর';
+$lang['js']['mediacenter'] = 'মাঝখানে ইমেজ সারিবদ্ধ কর';
+$lang['js']['medianoalign'] = 'কোনো সারিবদ্ধ করা প্রয়োজন নেই';
+$lang['js']['nosmblinks'] = 'উইন্ডোস শেয়ার এর সাথে সংযোগ সাধন কেবল মাইক্রোসফ্ট ইন্টারনেট এক্সপ্লোরারেই সম্ভব।\nতবে আপনি লিংকটি কপি পেস্ট করতেই পারেন।';
+$lang['js']['linkwiz'] = 'লিংক উইজার্ড';
+$lang['js']['linkto'] = 'সংযোগের লক্ষ্য:';
+$lang['js']['del_confirm'] = 'নির্বাচিত আইটেম(গুলো) আসলেই মুছে ফেলতে চান?';
+$lang['js']['restore_confirm'] = 'এই সংস্করণ সত্যিই পূর্বাবস্থায় ফিরিয়ে আনতে চান?';
+$lang['js']['media_diff'] = 'পার্থক্যগুলো দেখুন:';
+$lang['js']['media_diff_both'] = 'পাশাপাশি';
+$lang['js']['media_diff_opacity'] = 'শাইন-থ্রু';
+$lang['js']['media_diff_portions'] = 'ঝেঁটিয়ে বিদায়';
+$lang['js']['media_select'] = 'ফাইল নির্বাচন...';
+$lang['js']['media_upload_btn'] = 'আপলোড';
+$lang['js']['media_done_btn'] = 'সাধিত';
+$lang['js']['media_drop'] = 'আপলোডের জন্য এখানে ফাইল ফেলুন';
+$lang['js']['media_cancel'] = 'অপসারণ';
+$lang['js']['media_overwrt'] = 'বর্তমান ফাইল ওভাররাইট করুন';
+$lang['rssfailed'] = 'ফিডটি জোগাড় করতে গিয়ে একটি ত্রুটি ঘটেছে:';
+$lang['nothingfound'] = 'কিছু পাওয়া যায়নি।';
+$lang['mediaselect'] = 'মিডিয়া ফাইল';
+$lang['fileupload'] = 'মিডিয়া ফাইল আপলোড';
+$lang['uploadsucc'] = 'আপলোড সফল';
+$lang['uploadfail'] = 'আপলোড ব্যর্থ। অনুমতি জনিত ত্রুটি কী?';
+$lang['uploadwrong'] = 'আপলোড প্রত্যাখ্যাত। এই ফাইল এক্সটেনশন অননুমোদিত।';
+$lang['uploadexist'] = 'ফাইল ইতিমধ্যেই বিরাজমান। কিছু করা হয়নি।';
+$lang['uploadbadcontent'] = 'আপলোডকৃত সামগ্রী %s ফাইল এক্সটেনশন এর সাথে মিলেনি।';
+$lang['uploadspam'] = 'স্প্যাম ব্ল্যাকলিস্ট আপলোড আটকে দিয়েছে।';
+$lang['uploadxss'] = 'সামগ্রীটি ক্ষতিকর ভেবে আপলোড আটকে দেয়া হয়েছে।';
+$lang['uploadsize'] = 'আপলোডকৃত ফাইলটি বেশি বড়ো। (সর্বোচ্চ %s)';
+$lang['deletesucc'] = '"%s" ফাইলটি মুছে ফেলা হয়েছে।';
+$lang['deletefail'] = '"%s" ডিলিট করা যায়নি - অনুমতি আছে কি না দেখুন।';
+$lang['mediainuse'] = '"%s" ফাইলটি মোছা হয়নি - এটি এখনো ব্যবহৃত হচ্ছে।';
diff --git a/inc/lang/ca-valencia/lang.php b/inc/lang/ca-valencia/lang.php
index 941ceda6c..9ab423783 100644
--- a/inc/lang/ca-valencia/lang.php
+++ b/inc/lang/ca-valencia/lang.php
@@ -38,7 +38,6 @@ $lang['btn_back'] = 'Arrere';
$lang['btn_backlink'] = 'Vínculs remitents';
$lang['btn_backtomedia'] = 'Tornar a la selecció d\'archius de mijos';
$lang['btn_subscribe'] = 'Subscriure\'s a la pàgina';
-$lang['btn_unsubscribe'] = 'Desubscriure\'s de la pàgina';
$lang['btn_profile'] = 'Actualisar perfil';
$lang['btn_reset'] = 'Reiniciar';
$lang['btn_draft'] = 'Editar borrador';
@@ -186,11 +185,6 @@ $lang['img_copyr'] = 'Copyright';
$lang['img_format'] = 'Format';
$lang['img_camera'] = 'Càmara';
$lang['img_keywords'] = 'Paraules clau';
-$lang['subscribe_success'] = '%s afegit a la llista de subscripció per a %s';
-$lang['subscribe_error'] = 'Erro afegint a %s a la llista de subscripció per a %s';
-$lang['subscribe_noaddress'] = 'No hi ha cap direcció associada a la sessió, no es pot subscriure';
-$lang['unsubscribe_success'] = '%s borrat de la llista de subscripció per a %s';
-$lang['unsubscribe_error'] = 'Erro borrant a %s de la llista de subscripció per a %s';
$lang['authtempfail'] = 'L\'autenticació d\'usuaris està desactivada temporalment. Si la situació persistix, per favor, informe a l\'administrador del Wiki.';
$lang['i_chooselang'] = 'Trie l\'idioma';
$lang['i_installer'] = 'Instalador de DokuWiki';
@@ -221,7 +215,7 @@ $lang['i_retry'] = 'Reintentar';
$lang['recent_global'] = 'Està veent els canvis dins de l\'espai de noms <b>%s</b>. També pot <a href="%s">vore els canvis recents en el wiki sancer</a>.';
$lang['years'] = 'fa %d anys';
$lang['months'] = 'fa %d mesos';
-$lang['weeks'] = 'fa %s semanes';
+$lang['weeks'] = 'fa %d semanes';
$lang['days'] = 'fa %d dies';
$lang['hours'] = 'fa %d hores';
$lang['minutes'] = 'fa %d minuts';
diff --git a/inc/lang/ca/jquery.ui.datepicker.js b/inc/lang/ca/jquery.ui.datepicker.js
new file mode 100644
index 000000000..a10b549c2
--- /dev/null
+++ b/inc/lang/ca/jquery.ui.datepicker.js
@@ -0,0 +1,23 @@
+/* Inicialització en català per a l'extensió 'UI date picker' per jQuery. */
+/* Writers: (joan.leon@gmail.com). */
+jQuery(function($){
+ $.datepicker.regional['ca'] = {
+ closeText: 'Tanca',
+ prevText: 'Anterior',
+ nextText: 'Següent',
+ currentText: 'Avui',
+ monthNames: ['gener','febrer','març','abril','maig','juny',
+ 'juliol','agost','setembre','octubre','novembre','desembre'],
+ monthNamesShort: ['gen','feb','març','abr','maig','juny',
+ 'jul','ag','set','oct','nov','des'],
+ dayNames: ['diumenge','dilluns','dimarts','dimecres','dijous','divendres','dissabte'],
+ dayNamesShort: ['dg','dl','dt','dc','dj','dv','ds'],
+ dayNamesMin: ['dg','dl','dt','dc','dj','dv','ds'],
+ weekHeader: 'Set',
+ dateFormat: 'dd/mm/yy',
+ firstDay: 1,
+ isRTL: false,
+ showMonthAfterYear: false,
+ yearSuffix: ''};
+ $.datepicker.setDefaults($.datepicker.regional['ca']);
+});
diff --git a/inc/lang/cs/jquery.ui.datepicker.js b/inc/lang/cs/jquery.ui.datepicker.js
new file mode 100644
index 000000000..b96b1a51c
--- /dev/null
+++ b/inc/lang/cs/jquery.ui.datepicker.js
@@ -0,0 +1,23 @@
+/* Czech initialisation for the jQuery UI date picker plugin. */
+/* Written by Tomas Muller (tomas@tomas-muller.net). */
+jQuery(function($){
+ $.datepicker.regional['cs'] = {
+ closeText: 'Zavřít',
+ prevText: '&#x3C;Dříve',
+ nextText: 'Později&#x3E;',
+ currentText: 'Nyní',
+ monthNames: ['leden','únor','březen','duben','květen','červen',
+ 'červenec','srpen','září','říjen','listopad','prosinec'],
+ monthNamesShort: ['led','úno','bře','dub','kvě','čer',
+ 'čvc','srp','zář','říj','lis','pro'],
+ dayNames: ['neděle', 'pondělí', 'úterý', 'středa', 'čtvrtek', 'pátek', 'sobota'],
+ dayNamesShort: ['ne', 'po', 'út', 'st', 'čt', 'pá', 'so'],
+ dayNamesMin: ['ne','po','út','st','čt','pá','so'],
+ weekHeader: 'Týd',
+ dateFormat: 'dd.mm.yy',
+ firstDay: 1,
+ isRTL: false,
+ showMonthAfterYear: false,
+ yearSuffix: ''};
+ $.datepicker.setDefaults($.datepicker.regional['cs']);
+});
diff --git a/inc/lang/cs/lang.php b/inc/lang/cs/lang.php
index 56ffd91de..a0f69b3dc 100644
--- a/inc/lang/cs/lang.php
+++ b/inc/lang/cs/lang.php
@@ -16,6 +16,7 @@
* @author mkucera66@seznam.cz
* @author Zbyněk Křivka <krivka@fit.vutbr.cz>
* @author Gerrit Uitslag <klapinklapin@gmail.com>
+ * @author Petr Klíma <qaxi@seznam.cz>
*/
$lang['encoding'] = 'utf-8';
$lang['direction'] = 'ltr';
@@ -299,6 +300,7 @@ $lang['i_policy'] = 'Úvodní politika ACL';
$lang['i_pol0'] = 'Otevřená wiki (čtení, zápis a upload pro všechny)';
$lang['i_pol1'] = 'Veřejná wiki (čtení pro všechny, zápis a upload pro registrované uživatele)';
$lang['i_pol2'] = 'Uzavřená wiki (čtení, zápis a upload pouze pro registrované uživatele)';
+$lang['i_allowreg'] = 'Povol uživatelům registraci';
$lang['i_retry'] = 'Zkusit znovu';
$lang['i_license'] = 'Vyberte prosím licenci obsahu:';
$lang['i_license_none'] = 'Nezobrazovat žádné licenční informace';
@@ -336,3 +338,7 @@ $lang['media_perm_read'] = 'Bohužel, nemáte práva číst soubory.';
$lang['media_perm_upload'] = 'Bohužel, nemáte práva nahrávat soubory.';
$lang['media_update'] = 'Nahrát novou verzi';
$lang['media_restore'] = 'Obnovit tuto verzi';
+$lang['currentns'] = 'Aktuální jmenný prostor';
+$lang['searchresult'] = 'Výsledek hledání';
+$lang['plainhtml'] = 'Čisté HTML';
+$lang['wikimarkup'] = 'Wiki jazyk';
diff --git a/inc/lang/da/jquery.ui.datepicker.js b/inc/lang/da/jquery.ui.datepicker.js
new file mode 100644
index 000000000..7e42948b3
--- /dev/null
+++ b/inc/lang/da/jquery.ui.datepicker.js
@@ -0,0 +1,23 @@
+/* Danish initialisation for the jQuery UI date picker plugin. */
+/* Written by Jan Christensen ( deletestuff@gmail.com). */
+jQuery(function($){
+ $.datepicker.regional['da'] = {
+ closeText: 'Luk',
+ prevText: '&#x3C;Forrige',
+ nextText: 'Næste&#x3E;',
+ currentText: 'Idag',
+ monthNames: ['Januar','Februar','Marts','April','Maj','Juni',
+ 'Juli','August','September','Oktober','November','December'],
+ monthNamesShort: ['Jan','Feb','Mar','Apr','Maj','Jun',
+ 'Jul','Aug','Sep','Okt','Nov','Dec'],
+ dayNames: ['Søndag','Mandag','Tirsdag','Onsdag','Torsdag','Fredag','Lørdag'],
+ dayNamesShort: ['Søn','Man','Tir','Ons','Tor','Fre','Lør'],
+ dayNamesMin: ['Sø','Ma','Ti','On','To','Fr','Lø'],
+ weekHeader: 'Uge',
+ dateFormat: 'dd-mm-yy',
+ firstDay: 1,
+ isRTL: false,
+ showMonthAfterYear: false,
+ yearSuffix: ''};
+ $.datepicker.setDefaults($.datepicker.regional['da']);
+});
diff --git a/inc/lang/da/lang.php b/inc/lang/da/lang.php
index f36c43fdb..eb50bb240 100644
--- a/inc/lang/da/lang.php
+++ b/inc/lang/da/lang.php
@@ -1,8 +1,8 @@
<?php
+
/**
- * danish language file
- *
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
* @author koeppe <koeppe@kazur.dk>
* @author Jon Bendtsen <bendtsen@diku.dk>
* @author Lars Næsbye Christensen <larsnaesbye@stud.ku.dk>
@@ -14,6 +14,9 @@
* @author rasmus@kinnerup.com
* @author Michael Pedersen subben@gmail.com
* @author Mikael Lyngvig <mikael@lyngvig.org>
+ * @author Soren Birk <soer9648@hotmail.com>
+ * @author Jens Hyllegaard <jens.hyllegaard@gmail.com>
+ * @author soer9648 <soer9648@eucl.dk>
*/
$lang['encoding'] = 'utf-8';
$lang['direction'] = 'ltr';
@@ -57,6 +60,7 @@ $lang['btn_revert'] = 'Reetablér';
$lang['btn_register'] = 'Registrér';
$lang['btn_apply'] = 'Anvend';
$lang['btn_media'] = 'Media Manager';
+$lang['btn_deleteuser'] = 'Fjern Min Konto';
$lang['loggedinas'] = 'Logget ind som';
$lang['user'] = 'Brugernavn';
$lang['pass'] = 'Adgangskode';
@@ -68,6 +72,7 @@ $lang['fullname'] = 'Fulde navn';
$lang['email'] = 'E-mail';
$lang['profile'] = 'Brugerprofil';
$lang['badlogin'] = 'Brugernavn eller adgangskode var forkert.';
+$lang['badpassconfirm'] = 'Kodeordet var desværre forkert';
$lang['minoredit'] = 'Mindre ændringer';
$lang['draftdate'] = 'Kladde automatisk gemt d.';
$lang['nosecedit'] = 'Siden blev ændret i mellemtiden, sektions information var for gammel, hentede hele siden i stedet.';
@@ -84,6 +89,10 @@ $lang['profna'] = 'Denne wiki understøtter ikke ændring af prof
$lang['profnochange'] = 'Ingen ændringer, intet modificeret.';
$lang['profnoempty'] = 'Tomt navn eller e-mail adresse er ikke tilladt.';
$lang['profchanged'] = 'Brugerprofil opdateret korrekt.';
+$lang['profnodelete'] = 'Denne wiki supporterer ikke sletning af brugere';
+$lang['profdeleteuser'] = 'Slet Konto';
+$lang['profdeleted'] = 'Din brugerkonto er blevet slettet fra denne wiki';
+$lang['profconfdelete'] = 'Jeg ønsker at slette min konto fra denne wiki. <br/> Denne handling kan ikke fortrydes.';
$lang['pwdforget'] = 'Har du glemt dit adgangskode? Få et nyt';
$lang['resendna'] = 'Denne wiki understøtter ikke udsendelse af nyt adgangskode.';
$lang['resendpwd'] = 'Vælg ny adgangskode for';
@@ -198,6 +207,7 @@ $lang['user_tools'] = 'Brugerværktøjer';
$lang['site_tools'] = 'Webstedsværktøjer';
$lang['page_tools'] = 'Sideværktøjer';
$lang['skip_to_content'] = 'hop til indhold';
+$lang['sidebar'] = 'Sidebjælke';
$lang['mail_newpage'] = 'dokument tilføjet:';
$lang['mail_changed'] = 'dokument ændret:';
$lang['mail_subscribe_list'] = 'sider ændret i navnerum';
@@ -292,6 +302,8 @@ $lang['i_pol1'] = 'Offentlig Wiki (alle kan læse, kun registrere
$lang['i_pol2'] = 'Lukket Wiki (kun for registerede brugere kan læse, skrive og overføre)';
$lang['i_retry'] = 'Forsøg igen';
$lang['i_license'] = 'Vælg venligst licensen du vil tilføje dit indhold under:';
+$lang['i_license_none'] = 'Vis ikke licensinformationer';
+$lang['i_pop_field'] = 'Hjælp os venligst med at forbedre oplevelsen af DokuWiki:';
$lang['recent_global'] = 'Du ser lige nu ændringerne i <b>%s</b> navnerummet. Du kan også <a href="%s">se de sidste ændringer for hele wiki siden </a>';
$lang['years'] = '%d år siden';
$lang['months'] = '%d måned siden';
diff --git a/inc/lang/de-informal/jquery.ui.datepicker.js b/inc/lang/de-informal/jquery.ui.datepicker.js
new file mode 100644
index 000000000..abe75c4e4
--- /dev/null
+++ b/inc/lang/de-informal/jquery.ui.datepicker.js
@@ -0,0 +1,23 @@
+/* German initialisation for the jQuery UI date picker plugin. */
+/* Written by Milian Wolff (mail@milianw.de). */
+jQuery(function($){
+ $.datepicker.regional['de'] = {
+ closeText: 'Schließen',
+ prevText: '&#x3C;Zurück',
+ nextText: 'Vor&#x3E;',
+ currentText: 'Heute',
+ monthNames: ['Januar','Februar','März','April','Mai','Juni',
+ 'Juli','August','September','Oktober','November','Dezember'],
+ monthNamesShort: ['Jan','Feb','Mär','Apr','Mai','Jun',
+ 'Jul','Aug','Sep','Okt','Nov','Dez'],
+ dayNames: ['Sonntag','Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag'],
+ dayNamesShort: ['So','Mo','Di','Mi','Do','Fr','Sa'],
+ dayNamesMin: ['So','Mo','Di','Mi','Do','Fr','Sa'],
+ weekHeader: 'KW',
+ dateFormat: 'dd.mm.yy',
+ firstDay: 1,
+ isRTL: false,
+ showMonthAfterYear: false,
+ yearSuffix: ''};
+ $.datepicker.setDefaults($.datepicker.regional['de']);
+});
diff --git a/inc/lang/de-informal/lang.php b/inc/lang/de-informal/lang.php
index 02ff85fad..be3f14a18 100644
--- a/inc/lang/de-informal/lang.php
+++ b/inc/lang/de-informal/lang.php
@@ -2,7 +2,7 @@
/**
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
- *
+ *
* @author Andreas Gohr <andi@splitbrain.org>
* @author Christof <gagi@fin.de>
* @author Anika Henke <anika@selfthinker.org>
@@ -21,6 +21,7 @@
* @author Pierre Corell <info@joomla-praxis.de>
* @author Frank Loizzi <contact@software.bacal.de>
* @author Volker Bödker <volker@boedker.de>
+ * @author Janosch <janosch@moinzen.de>
*/
$lang['encoding'] = 'utf-8';
$lang['direction'] = 'ltr';
@@ -302,6 +303,7 @@ $lang['i_policy'] = 'Anfangseinstellungen der Zugangskontrolle (ACL
$lang['i_pol0'] = 'Offenes Wiki (lesen, schreiben und hochladen für alle Benutzer)';
$lang['i_pol1'] = 'Öffentliches Wiki (Lesen für alle, Schreiben und Hochladen nur für registrierte Benutzer)';
$lang['i_pol2'] = 'Geschlossenes Wiki (Lesen, Schreiben und Hochladen nur für registrierte Benutzer)';
+$lang['i_allowreg'] = 'Benutzer können sich selbst registrieren';
$lang['i_retry'] = 'Wiederholen';
$lang['i_license'] = 'Bitte wähle die Lizenz aus unter der die Wiki-Inhalte veröffentlicht werden sollen:';
$lang['i_license_none'] = 'Keine Lizenzinformationen anzeigen';
@@ -339,3 +341,5 @@ $lang['media_perm_read'] = 'Du besitzt nicht die notwendigen Berechtigunge
$lang['media_perm_upload'] = 'Du besitzt nicht die notwendigen Berechtigungen um Dateien hochzuladen.';
$lang['media_update'] = 'Neue Version hochladen';
$lang['media_restore'] = 'Diese Version wiederherstellen';
+$lang['currentns'] = 'Aktueller Namensraum';
+$lang['searchresult'] = 'Suchergebnis';
diff --git a/inc/lang/de/jquery.ui.datepicker.js b/inc/lang/de/jquery.ui.datepicker.js
new file mode 100644
index 000000000..abe75c4e4
--- /dev/null
+++ b/inc/lang/de/jquery.ui.datepicker.js
@@ -0,0 +1,23 @@
+/* German initialisation for the jQuery UI date picker plugin. */
+/* Written by Milian Wolff (mail@milianw.de). */
+jQuery(function($){
+ $.datepicker.regional['de'] = {
+ closeText: 'Schließen',
+ prevText: '&#x3C;Zurück',
+ nextText: 'Vor&#x3E;',
+ currentText: 'Heute',
+ monthNames: ['Januar','Februar','März','April','Mai','Juni',
+ 'Juli','August','September','Oktober','November','Dezember'],
+ monthNamesShort: ['Jan','Feb','Mär','Apr','Mai','Jun',
+ 'Jul','Aug','Sep','Okt','Nov','Dez'],
+ dayNames: ['Sonntag','Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag'],
+ dayNamesShort: ['So','Mo','Di','Mi','Do','Fr','Sa'],
+ dayNamesMin: ['So','Mo','Di','Mi','Do','Fr','Sa'],
+ weekHeader: 'KW',
+ dateFormat: 'dd.mm.yy',
+ firstDay: 1,
+ isRTL: false,
+ showMonthAfterYear: false,
+ yearSuffix: ''};
+ $.datepicker.setDefaults($.datepicker.regional['de']);
+});
diff --git a/inc/lang/de/lang.php b/inc/lang/de/lang.php
index 685e668c4..1840f2a6c 100644
--- a/inc/lang/de/lang.php
+++ b/inc/lang/de/lang.php
@@ -2,7 +2,7 @@
/**
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
- *
+ *
* @author Andreas Gohr <andi@splitbrain.org>
* @author Christof <gagi@fin.de>
* @author Anika Henke <anika@selfthinker.org>
@@ -22,6 +22,8 @@
* @author Paul Lachewsky <kaeptn.haddock@gmail.com>
* @author Pierre Corell <info@joomla-praxis.de>
* @author Mateng Schimmerlos <mateng@firemail.de>
+ * @author Benedikt Fey <spam@lifeisgoooood.de>
+ * @author Joerg <scooter22@gmx.de>
*/
$lang['encoding'] = 'utf-8';
$lang['direction'] = 'ltr';
@@ -303,6 +305,7 @@ $lang['i_policy'] = 'Anfangseinstellungen der Zugangskontrolle (ACL
$lang['i_pol0'] = 'Offenes Wiki (lesen, schreiben und hochladen für alle Benutzer)';
$lang['i_pol1'] = 'Öffentliches Wiki (Lesen für alle, Schreiben und Hochladen nur für registrierte Benutzer)';
$lang['i_pol2'] = 'Geschlossenes Wiki (Lesen, Schreiben und Hochladen nur für registrierte Benutzer)';
+$lang['i_allowreg'] = 'Benutzer dürfen sich registrieren';
$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';
@@ -340,3 +343,7 @@ $lang['media_perm_read'] = 'Sie besitzen nicht die notwendigen Berechtigun
$lang['media_perm_upload'] = 'Sie besitzen nicht die notwendigen Berechtigungen um Dateien hochzuladen.';
$lang['media_update'] = 'Neue Version hochladen';
$lang['media_restore'] = 'Diese Version wiederherstellen';
+$lang['currentns'] = 'Aktueller Namensraum';
+$lang['searchresult'] = 'Suchergebnisse';
+$lang['plainhtml'] = 'HTML Klartext';
+$lang['wikimarkup'] = 'Wiki Markup';
diff --git a/inc/lang/el/jquery.ui.datepicker.js b/inc/lang/el/jquery.ui.datepicker.js
new file mode 100644
index 000000000..1ac47561a
--- /dev/null
+++ b/inc/lang/el/jquery.ui.datepicker.js
@@ -0,0 +1,23 @@
+/* Greek (el) initialisation for the jQuery UI date picker plugin. */
+/* Written by Alex Cicovic (http://www.alexcicovic.com) */
+jQuery(function($){
+ $.datepicker.regional['el'] = {
+ closeText: 'Κλείσιμο',
+ prevText: 'Προηγούμενος',
+ nextText: 'Επόμενος',
+ currentText: 'Τρέχων Μήνας',
+ monthNames: ['Ιανουάριος','Φεβρουάριος','Μάρτιος','Απρίλιος','Μάιος','Ιούνιος',
+ 'Ιούλιος','Αύγουστος','Σεπτέμβριος','Οκτώβριος','Νοέμβριος','Δεκέμβριος'],
+ monthNamesShort: ['Ιαν','Φεβ','Μαρ','Απρ','Μαι','Ιουν',
+ 'Ιουλ','Αυγ','Σεπ','Οκτ','Νοε','Δεκ'],
+ dayNames: ['Κυριακή','Δευτέρα','Τρίτη','Τετάρτη','Πέμπτη','Παρασκευή','Σάββατο'],
+ dayNamesShort: ['Κυρ','Δευ','Τρι','Τετ','Πεμ','Παρ','Σαβ'],
+ dayNamesMin: ['Κυ','Δε','Τρ','Τε','Πε','Πα','Σα'],
+ weekHeader: 'Εβδ',
+ dateFormat: 'dd/mm/yy',
+ firstDay: 1,
+ isRTL: false,
+ showMonthAfterYear: false,
+ yearSuffix: ''};
+ $.datepicker.setDefaults($.datepicker.regional['el']);
+});
diff --git a/inc/lang/el/lang.php b/inc/lang/el/lang.php
index 1d30816de..170e101a5 100644
--- a/inc/lang/el/lang.php
+++ b/inc/lang/el/lang.php
@@ -2,7 +2,7 @@
/**
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
- *
+ *
* @author Thanos Massias <tm@thriasio.gr>
* @author Αθανάσιος Νταής <homunculus@wana.gr>
* @author Konstantinos Koryllos <koryllos@gmail.com>
@@ -10,6 +10,8 @@
* @author Petros Vidalis <pvidalis@gmail.com>
* @author Vasileios Karavasilis vasileioskaravasilis@gmail.com
* @author Constantinos Xanthopoulos <conx@xanthopoulos.info>
+ * @author chris taklis <ctaklis@gmail.com>
+ * @author cross <cross1962@gmail.com>
*/
$lang['encoding'] = 'utf-8';
$lang['direction'] = 'ltr';
@@ -85,6 +87,7 @@ $lang['profchanged'] = 'Το προφίλ χρήστη τροποπο
$lang['profnodelete'] = 'Το wiki δεν υποστηρίζει την διαγραφή χρηστών';
$lang['profdeleteuser'] = 'Διαγραφή λογαριασμού';
$lang['profdeleted'] = 'Ο λογαριασμός διαγράφηκε από αυτό το wiki';
+$lang['profconfdelete'] = 'Επιθυμώ να διαγράψω τον λογαριασμό μου από αυτό το wiki. <br/> Αυτή η επιλογή δεν μπορεί να αναιρεθεί.';
$lang['pwdforget'] = 'Ξεχάσατε το κωδικό σας; Αποκτήστε νέο.';
$lang['resendna'] = 'Αυτό το wiki δεν υποστηρίζει την εκ\' νέου αποστολή κωδικών.';
$lang['resendpwd'] = 'Εισαγωγή νέου ωδικού για';
@@ -269,7 +272,7 @@ $lang['subscr_style_every'] = 'email σε κάθε αλλαγή';
$lang['subscr_style_digest'] = 'συνοπτικό email αλλαγών της σελίδας (κάθε %.2f μέρες)';
$lang['subscr_style_list'] = 'λίστα σελίδων με αλλαγές μετά από το τελευταίο email (κάθε %.2f μέρες)';
$lang['authtempfail'] = 'Η συνδεση χρηστών είναι απενεργοποιημένη αυτή την στιγμή. Αν αυτό διαρκέσει για πολύ, παρακαλούμε ενημερώστε τον διαχειριστή του wiki.';
-$lang['authpwdexpire'] = 'Ο κωδικός πρόσβασης θα λήξει σε %s ημέρες. Προτείνουμε να τον αλλάξετε σύντομα.';
+$lang['authpwdexpire'] = 'Ο κωδικός πρόσβασης θα λήξει σε %d ημέρες. Προτείνουμε να τον αλλάξετε σύντομα.';
$lang['i_chooselang'] = 'Επιλογή γλώσσας';
$lang['i_installer'] = 'Οδηγός εγκατάστασης DokuWiki';
$lang['i_wikiname'] = 'Ονομασία wiki';
@@ -291,6 +294,7 @@ $lang['i_policy'] = 'Αρχική πολιτική Λίστας Δ
$lang['i_pol0'] = 'Ανοιχτό Wiki (όλοι μπορούν να διαβάσουν ή να δημιουργήσουν/τροποποιήσουν σελίδες και να μεταφορτώσουν αρχεία)';
$lang['i_pol1'] = 'Δημόσιο Wiki (όλοι μπορούν να διαβάσουν σελίδες αλλά μόνο οι εγγεγραμμένοι χρήστες μπορούν να δημιουργήσουν/τροποποιήσουν σελίδες και να μεταφορτώσουν αρχεία)';
$lang['i_pol2'] = 'Κλειστό Wiki (μόνο οι εγγεγραμμένοι χρήστες μπορούν να διαβάσουν ή να δημιουργήσουν/τροποποιήσουν σελίδες και να μεταφορτώσουν αρχεία)';
+$lang['i_allowreg'] = 'Οι χρήστες επιτρέπεται να εγγραφούν μόνοι τους';
$lang['i_retry'] = 'Νέα προσπάθεια';
$lang['i_license'] = 'Παρακαλώ επιλέξτε την άδεια που θα χρησιμοποιήσετε για την διάθεση του περιεχομένου σας:';
$lang['recent_global'] = 'Βλέπετε τις αλλαγές εντός του φακέλου <b>%s</b>. Μπορείτε επίσης να <a href="%s">δείτε τις πρόσφατες αλλαγές σε όλο το wiki</a>.';
@@ -319,8 +323,10 @@ $lang['media_search'] = 'Αναζήτηση στο <strong>%s</strong>
$lang['media_view'] = '%s';
$lang['media_viewold'] = '%s στα %s';
$lang['media_edit'] = 'Επεξεργασία %s';
+$lang['media_history'] = 'Ιστορικό των %s';
$lang['media_meta_edited'] = 'τα μεταδεδομένα επεξεργάστηκαν';
$lang['media_perm_read'] = 'Συγνώμη, δεν έχετε επαρκή διακαιώματα για να διαβάσετε αυτά τα αρχεία.';
$lang['media_perm_upload'] = 'Συγνώμη, δεν έχετε επαρκή διακαιώματα για να φορτώσετε αυτά τα αρχεία.';
$lang['media_update'] = 'Φόρτωση νέας έκδοσης';
$lang['media_restore'] = 'Επαναφορά αυτή της έκδοσης';
+$lang['searchresult'] = 'Αποτέλεσμα έρευνας';
diff --git a/inc/lang/en/lang.php b/inc/lang/en/lang.php
index d4ddf293a..cbdef8661 100644
--- a/inc/lang/en/lang.php
+++ b/inc/lang/en/lang.php
@@ -224,7 +224,7 @@ $lang['both_changes'] = 'Both pages and media files';
$lang['qb_bold'] = 'Bold Text';
$lang['qb_italic'] = 'Italic Text';
$lang['qb_underl'] = 'Underlined Text';
-$lang['qb_code'] = 'Code Text';
+$lang['qb_code'] = 'Monospaced Text';
$lang['qb_strike'] = 'Strike-through Text';
$lang['qb_h1'] = 'Level 1 Headline';
$lang['qb_h2'] = 'Level 2 Headline';
@@ -315,6 +315,7 @@ $lang['i_policy'] = 'Initial ACL policy';
$lang['i_pol0'] = 'Open Wiki (read, write, upload for everyone)';
$lang['i_pol1'] = 'Public Wiki (read for everyone, write and upload for registered users)';
$lang['i_pol2'] = 'Closed Wiki (read, write, upload for registered users only)';
+$lang['i_allowreg'] = 'Allow users to register themselves';
$lang['i_retry'] = 'Retry';
$lang['i_license'] = 'Please choose the license you want to put your content under:';
$lang['i_license_none'] = 'Do not show any license information';
@@ -356,4 +357,8 @@ $lang['media_perm_upload'] = 'Sorry, you don\'t have enough rights to upload
$lang['media_update'] = 'Upload new version';
$lang['media_restore'] = 'Restore this version';
+$lang['currentns'] = 'Current namespace';
+$lang['searchresult'] = 'Search Result';
+$lang['plainhtml'] = 'Plain HTML';
+$lang['wikimarkup'] = 'Wiki Markup';
//Setup VIM: ex: et ts=2 :
diff --git a/inc/lang/eo/admin.txt b/inc/lang/eo/admin.txt
index 2ede2763c..4b3cf0c2a 100644
--- a/inc/lang/eo/admin.txt
+++ b/inc/lang/eo/admin.txt
@@ -1,3 +1,3 @@
-====== Administro ======
+====== Administrado ======
-Sube vi povas trovi liston de administraj taskoj disponeblaj en DokuWiki.
+Sube vi trovas liston de administraj taskoj haveblaj en DokuWiki.
diff --git a/inc/lang/eo/adminplugins.txt b/inc/lang/eo/adminplugins.txt
index 769a8c538..bb7e7829b 100644
--- a/inc/lang/eo/adminplugins.txt
+++ b/inc/lang/eo/adminplugins.txt
@@ -1 +1 @@
-===== Eksteraj kromaĵoj ===== \ No newline at end of file
+===== Aldonaj kromaĵoj ===== \ No newline at end of file
diff --git a/inc/lang/eo/diff.txt b/inc/lang/eo/diff.txt
index 5829a7db1..3c9db61c8 100644
--- a/inc/lang/eo/diff.txt
+++ b/inc/lang/eo/diff.txt
@@ -1,4 +1,4 @@
====== Diferencoj ======
-Ĉi tie vi povas vidi diferencojn inter la aktuala versio kaj la elektita revizio de la paĝo.
+Tio montras diferencojn inter du versioj de la paĝo.
diff --git a/inc/lang/eo/draft.txt b/inc/lang/eo/draft.txt
index 32ddc83f6..57526f3b5 100644
--- a/inc/lang/eo/draft.txt
+++ b/inc/lang/eo/draft.txt
@@ -1,5 +1,5 @@
====== Skiza dosiero troviĝis ======
-Via lasta sekcio de redakto en tiu ĉi paĝo ne korekte kompletiĝis. DokuWiki aŭtomate konservis skizon dum vi laboris, kiun vi nun povas uzi por daŭrigi vian redaktadon. Sube vi povas vidi la datumaron, kiu konserviĝis el via lasta sekcio.
+Via lasta redaktosesio en tiu ĉi paĝo ne ĝuste kompletiĝis. DokuWiki aŭtomate konservis skizon dum vi laboris, kiun vi nun povas uzi por daŭrigi vian redaktadon. Sube vi povas vidi la datumaron, kiu konserviĝis el via lasta sesio.
Bonvolu decidi ĉu vi volas //restarigi// vian perditan redakton, //forigi// la aŭtomate konservitan skizon aŭ //rezigni// pri la redakta procezo.
diff --git a/inc/lang/eo/edit.txt b/inc/lang/eo/edit.txt
index 29b3382c5..ccc8a613d 100644
--- a/inc/lang/eo/edit.txt
+++ b/inc/lang/eo/edit.txt
@@ -1 +1 @@
-Redaktu paĝon kaj poste premu butonon titolitan '"Konservi'". Bonvolu tralegi la [[wiki:syntax|vikian sintakson]] por kompreni kiel vi povas krei paĝojn. Bonvolu redakti nur se vi planas **plibonigi** la enhavon de la paĝo. Se vi volas nur testi ion, bonvolu uzi specialan paĝon: [[wiki:playground|ludejo]].
+Redaktu paĝon kaj poste premu butonon titolitan '"Konservi'". Bonvolu tralegi la [[wiki:syntax|vikian sintakson]] pri la formatigo. Bonvolu redakti **nur**, se vi povas **plibonigi** la enhavon de la paĝo. Se vi volas nur testi ion, bonvolu uzi specialan paĝon: [[playground:playground|sablokesto]].
diff --git a/inc/lang/eo/editrev.txt b/inc/lang/eo/editrev.txt
index 1640baa91..2e1406b0f 100644
--- a/inc/lang/eo/editrev.txt
+++ b/inc/lang/eo/editrev.txt
@@ -1,2 +1,2 @@
-**Vi laboras kun malnova revizio de la dokumento!** Se vi konservos ĝin, kreiĝos nova kuranta versio kun la sama enhavo.
+**Vi laboras kun malnova revizio de la dokumento!** Se vi konservos ĝin, kreiĝos nova kuranta versio kun tiu enhavo.
----
diff --git a/inc/lang/eo/jquery.ui.datepicker.js b/inc/lang/eo/jquery.ui.datepicker.js
new file mode 100644
index 000000000..39e44fc57
--- /dev/null
+++ b/inc/lang/eo/jquery.ui.datepicker.js
@@ -0,0 +1,23 @@
+/* Esperanto initialisation for the jQuery UI date picker plugin. */
+/* Written by Olivier M. (olivierweb@ifrance.com). */
+jQuery(function($){
+ $.datepicker.regional['eo'] = {
+ closeText: 'Fermi',
+ prevText: '&#x3C;Anta',
+ nextText: 'Sekv&#x3E;',
+ currentText: 'Nuna',
+ monthNames: ['Januaro','Februaro','Marto','Aprilo','Majo','Junio',
+ 'Julio','Aŭgusto','Septembro','Oktobro','Novembro','Decembro'],
+ monthNamesShort: ['Jan','Feb','Mar','Apr','Maj','Jun',
+ 'Jul','Aŭg','Sep','Okt','Nov','Dec'],
+ dayNames: ['Dimanĉo','Lundo','Mardo','Merkredo','Ĵaŭdo','Vendredo','Sabato'],
+ dayNamesShort: ['Dim','Lun','Mar','Mer','Ĵaŭ','Ven','Sab'],
+ dayNamesMin: ['Di','Lu','Ma','Me','Ĵa','Ve','Sa'],
+ weekHeader: 'Sb',
+ dateFormat: 'dd/mm/yy',
+ firstDay: 0,
+ isRTL: false,
+ showMonthAfterYear: false,
+ yearSuffix: ''};
+ $.datepicker.setDefaults($.datepicker.regional['eo']);
+});
diff --git a/inc/lang/eo/lang.php b/inc/lang/eo/lang.php
index 39346bb01..97231bdce 100644
--- a/inc/lang/eo/lang.php
+++ b/inc/lang/eo/lang.php
@@ -2,7 +2,7 @@
/**
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
- *
+ *
* @author Antono Vasiljev <esperanto.minsk ĈE tut.by>
* @author Felipe Castro <fefcas@yahoo.com.br>
* @author Felipe Castro <fefcas@uol.com.br>
@@ -37,13 +37,13 @@ $lang['btn_secedit'] = 'Redakti';
$lang['btn_login'] = 'Ensaluti';
$lang['btn_logout'] = 'Elsaluti';
$lang['btn_admin'] = 'Administri';
-$lang['btn_update'] = 'Ĝisdatigi';
+$lang['btn_update'] = 'Aktualigi';
$lang['btn_delete'] = 'Forigi';
$lang['btn_back'] = 'Retroiri';
$lang['btn_backlink'] = 'Retroligoj';
$lang['btn_backtomedia'] = 'Retroiri al elekto de dosiero';
$lang['btn_subscribe'] = 'Aliĝi al paĝaj modifoj';
-$lang['btn_profile'] = 'Ĝisdatigi profilon';
+$lang['btn_profile'] = 'Aktualigi profilon';
$lang['btn_reset'] = 'Rekomenci';
$lang['btn_resendpwd'] = 'Sendi novan pasvorton';
$lang['btn_draft'] = 'Redakti skizon';
@@ -53,7 +53,7 @@ $lang['btn_revert'] = 'Restarigi';
$lang['btn_register'] = 'Registriĝi';
$lang['btn_apply'] = 'Apliki';
$lang['btn_media'] = 'Medio-administrilo';
-$lang['btn_deleteuser'] = 'Forigi mian aliĝon';
+$lang['btn_deleteuser'] = 'Forigi mian konton';
$lang['loggedinas'] = 'Ensalutinta kiel';
$lang['user'] = 'Uzant-nomo';
$lang['pass'] = 'Pasvorto';
@@ -81,7 +81,7 @@ $lang['reghere'] = 'Se vi ne havas konton, vi povas akiri ĝin';
$lang['profna'] = 'Tiu ĉi vikio ne ebligas modifon en la profiloj.';
$lang['profnochange'] = 'Neniu ŝanĝo, nenio farinda.';
$lang['profnoempty'] = 'Malplena nomo aŭ retadreso ne estas permesata.';
-$lang['profchanged'] = 'La profilo de la uzanto sukcese ĝisdatiĝis.';
+$lang['profchanged'] = 'La profilo de la uzanto sukcese aktualiĝis.';
$lang['profnodelete'] = 'Tiu ĉi vikio ne subtenas forigo de uzantoj';
$lang['profdeleteuser'] = 'Forigi aliĝon';
$lang['profdeleted'] = 'Via uzant-aliĝo estis forigata de tiu ĉi vikio';
@@ -104,7 +104,7 @@ $lang['txt_filename'] = 'Alŝuti kiel (laŭvole)';
$lang['txt_overwrt'] = 'Anstataŭigi ekzistantan dosieron';
$lang['maxuploadsize'] = 'Alŝuto maks. %s po dosiero.';
$lang['lockedby'] = 'Nune ŝlosita de';
-$lang['lockexpire'] = 'Ŝlosado ĉesos en';
+$lang['lockexpire'] = 'Ŝlosado ĉesos je';
$lang['js']['willexpire'] = 'Vi povos redakti ĉi tiun paĝon post unu minuto.\nSe vi volas nuligi tempokontrolon de la ŝlosado, premu la butonon "Antaŭrigardi".';
$lang['js']['notsavedyet'] = 'Ne konservitaj modifoj perdiĝos.
Ĉu vi certe volas daŭrigi la procezon?';
@@ -293,6 +293,7 @@ $lang['i_policy'] = 'Komenca ACL-a agordo';
$lang['i_pol0'] = 'Malferma Vikio (legi, skribi, alŝuti povas ĉiuj)';
$lang['i_pol1'] = 'Publika Vikio (legi povas ĉiuj, skribi kaj alŝuti povas registritaj uzantoj)';
$lang['i_pol2'] = 'Ferma Vikio (legi, skribi, alŝuti nur povas registritaj uzantoj)';
+$lang['i_allowreg'] = 'Permesi al uzantoj registri sin mem';
$lang['i_retry'] = 'Reprovi';
$lang['i_license'] = 'Bonvolu elekti la permesilon, sub kiun vi volas meti vian enhavon:';
$lang['i_license_none'] = 'Ne montri licencinformojn';
@@ -330,3 +331,7 @@ $lang['media_perm_read'] = 'Bedaûrinde viaj rajtoj ne sufiĉas por legi d
$lang['media_perm_upload'] = 'Bedaûrinde viaj rajtoj ne sufiĉas por alŝuti dosierojn.';
$lang['media_update'] = 'Alŝuti novan version';
$lang['media_restore'] = 'Restarigi ĉi tiun version';
+$lang['currentns'] = 'Aktuala nomspaco';
+$lang['searchresult'] = 'Serĉrezulto';
+$lang['plainhtml'] = 'Plena HTML';
+$lang['wikimarkup'] = 'Vikiteksto';
diff --git a/inc/lang/es/jquery.ui.datepicker.js b/inc/lang/es/jquery.ui.datepicker.js
new file mode 100644
index 000000000..ae32124e7
--- /dev/null
+++ b/inc/lang/es/jquery.ui.datepicker.js
@@ -0,0 +1,23 @@
+/* Inicialización en español para la extensión 'UI date picker' para jQuery. */
+/* Traducido por Vester (xvester@gmail.com). */
+jQuery(function($){
+ $.datepicker.regional['es'] = {
+ closeText: 'Cerrar',
+ prevText: '&#x3C;Ant',
+ nextText: 'Sig&#x3E;',
+ currentText: 'Hoy',
+ monthNames: ['enero','febrero','marzo','abril','mayo','junio',
+ 'julio','agosto','septiembre','octubre','noviembre','diciembre'],
+ monthNamesShort: ['ene','feb','mar','abr','may','jun',
+ 'jul','ago','sep','oct','nov','dic'],
+ dayNames: ['domingo','lunes','martes','miércoles','jueves','viernes','sábado'],
+ dayNamesShort: ['dom','lun','mar','mié','jue','vie','sáb'],
+ dayNamesMin: ['D','L','M','X','J','V','S'],
+ weekHeader: 'Sm',
+ dateFormat: 'dd/mm/yy',
+ firstDay: 1,
+ isRTL: false,
+ showMonthAfterYear: false,
+ yearSuffix: ''};
+ $.datepicker.setDefaults($.datepicker.regional['es']);
+});
diff --git a/inc/lang/es/lang.php b/inc/lang/es/lang.php
index 0764621b0..b9f81dd82 100644
--- a/inc/lang/es/lang.php
+++ b/inc/lang/es/lang.php
@@ -30,6 +30,8 @@
* @author Mercè López mercelz@gmail.com
* @author r0sk <r0sk10@gmail.com>
* @author monica <may.dorado@gmail.com>
+ * @author Antonio Bueno <atnbueno@gmail.com>
+ * @author Juan De La Cruz <juann.dlc@gmail.com>
*/
$lang['encoding'] = 'utf-8';
$lang['direction'] = 'ltr';
@@ -313,6 +315,7 @@ $lang['i_policy'] = 'Política de ACL inicial';
$lang['i_pol0'] = 'Wiki abierto (leer, escribir y subir archivos para todos)';
$lang['i_pol1'] = 'Wiki público (leer para todos, escribir y subir archivos para usuarios registrados únicamente)';
$lang['i_pol2'] = 'Wiki cerrado (leer, escribir y subir archivos para usuarios registrados únicamente)';
+$lang['i_allowreg'] = 'Permitir que los usuarios se registren a sí mismos';
$lang['i_retry'] = 'Reintentar';
$lang['i_license'] = 'Por favor escoja una licencia bajo la que publicar su contenido:';
$lang['i_license_none'] = 'No mostrar ninguna información sobre licencias';
@@ -350,3 +353,7 @@ $lang['media_perm_read'] = 'Disculpa, no tienes los permisos necesarios pa
$lang['media_perm_upload'] = 'Disculpa, no tienes los permisos necesarios para cargar ficheros.';
$lang['media_update'] = 'Actualizar nueva versión';
$lang['media_restore'] = 'Restaurar esta versión';
+$lang['currentns'] = 'Espacio de nombres actual';
+$lang['searchresult'] = 'Resultado de la búsqueda';
+$lang['plainhtml'] = 'HTML sencillo';
+$lang['wikimarkup'] = 'Etiquetado Wiki';
diff --git a/inc/lang/et/adminplugins.txt b/inc/lang/et/adminplugins.txt
new file mode 100644
index 000000000..ee3ffb0a7
--- /dev/null
+++ b/inc/lang/et/adminplugins.txt
@@ -0,0 +1 @@
+===== Täiendavad laiendused ===== \ No newline at end of file
diff --git a/inc/lang/et/jquery.ui.datepicker.js b/inc/lang/et/jquery.ui.datepicker.js
new file mode 100644
index 000000000..62cbea8fa
--- /dev/null
+++ b/inc/lang/et/jquery.ui.datepicker.js
@@ -0,0 +1,23 @@
+/* Estonian initialisation for the jQuery UI date picker plugin. */
+/* Written by Mart Sõmermaa (mrts.pydev at gmail com). */
+jQuery(function($){
+ $.datepicker.regional['et'] = {
+ closeText: 'Sulge',
+ prevText: 'Eelnev',
+ nextText: 'Järgnev',
+ currentText: 'Täna',
+ monthNames: ['Jaanuar','Veebruar','Märts','Aprill','Mai','Juuni',
+ 'Juuli','August','September','Oktoober','November','Detsember'],
+ monthNamesShort: ['Jaan', 'Veebr', 'Märts', 'Apr', 'Mai', 'Juuni',
+ 'Juuli', 'Aug', 'Sept', 'Okt', 'Nov', 'Dets'],
+ dayNames: ['Pühapäev', 'Esmaspäev', 'Teisipäev', 'Kolmapäev', 'Neljapäev', 'Reede', 'Laupäev'],
+ dayNamesShort: ['Pühap', 'Esmasp', 'Teisip', 'Kolmap', 'Neljap', 'Reede', 'Laup'],
+ dayNamesMin: ['P','E','T','K','N','R','L'],
+ weekHeader: 'näd',
+ dateFormat: 'dd.mm.yy',
+ firstDay: 1,
+ isRTL: false,
+ showMonthAfterYear: false,
+ yearSuffix: ''};
+ $.datepicker.setDefaults($.datepicker.regional['et']);
+});
diff --git a/inc/lang/et/lang.php b/inc/lang/et/lang.php
index cc736db4d..fdfae2d9d 100644
--- a/inc/lang/et/lang.php
+++ b/inc/lang/et/lang.php
@@ -1,13 +1,15 @@
<?php
+
/**
- * Estonian language file
- *
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
* @author Oliver S6ro <seem.iges@mail.ee>
* @author Aari Juhanson <aari@vmg.vil.ee>
* @author Kaiko Kaur <kaiko@kultuur.edu.ee>
* @author kristian.kankainen@kuu.la
* @author Rivo Zängov <eraser@eraser.ee>
+ * @author Janar Leas <janarleas@gmail.com>
+ * @author Janar Leas <janar.leas@eesti.ee>
*/
$lang['encoding'] = 'utf-8';
$lang['direction'] = 'ltr';
@@ -43,11 +45,15 @@ $lang['btn_backtomedia'] = 'Tagasi faili valikusse';
$lang['btn_subscribe'] = 'Jälgi seda lehte (teated meilile)';
$lang['btn_profile'] = 'Minu info';
$lang['btn_reset'] = 'Taasta';
+$lang['btn_resendpwd'] = 'Sea uus salasõna';
$lang['btn_draft'] = 'Toimeta mustandit';
$lang['btn_recover'] = 'Taata mustand';
$lang['btn_draftdel'] = 'Kustuta mustand';
$lang['btn_revert'] = 'Taasta';
$lang['btn_register'] = 'Registreeri uus kasutaja';
+$lang['btn_apply'] = 'Kinnita';
+$lang['btn_media'] = 'Meedia haldur';
+$lang['btn_deleteuser'] = 'Eemalda minu konto';
$lang['loggedinas'] = 'Logis sisse kui';
$lang['user'] = 'Kasutaja';
$lang['pass'] = 'Parool';
@@ -59,8 +65,10 @@ $lang['fullname'] = 'Täielik nimi';
$lang['email'] = 'E-post';
$lang['profile'] = 'Kasutaja info';
$lang['badlogin'] = 'Oops, Sinu kasutajanimi või parool oli vale.';
+$lang['badpassconfirm'] = 'Väär salasõna';
$lang['minoredit'] = 'Ebaolulised muudatused';
$lang['draftdate'] = 'Mustand automaatselt salvestatud';
+$lang['nosecedit'] = 'Leht on vahepeal muutunud, jaotiste teave osutus aegunuks sestap laeti tervelehekülg.';
$lang['regmissing'] = 'Kõik väljad tuleb ära täita.';
$lang['reguexists'] = 'Tegelikult on sellise nimega kasutaja juba olemas.';
$lang['regsuccess'] = 'Kasutaja sai tehtud. Parool saadeti Sulle e-posti aadressil.';
@@ -76,21 +84,30 @@ $lang['profna'] = 'Viki ei toeta profiili muudatusi';
$lang['profnochange'] = 'Muutused puuduvad.';
$lang['profnoempty'] = 'Tühi nimi ega meiliaadress pole lubatud.';
$lang['profchanged'] = 'Kasutaja info edukalt muudetud';
+$lang['profnodelete'] = 'See wiki ei toeta kasutajate kustutamist';
+$lang['profdeleteuser'] = 'Kustuta konto';
+$lang['profdeleted'] = 'Sinu kasutajakonto on sellest wikist kustutatud';
+$lang['profconfdelete'] = 'Soovin sellest wikist oma konnto eemaldada. <br/> See tegevus on taastamatu.';
+$lang['profconfdeletemissing'] = 'Kinnituse valikkast märkimata.';
$lang['pwdforget'] = 'Unustasid parooli? Tee uus';
$lang['resendna'] = 'See wiki ei toeta parooli taassaatmist.';
+$lang['resendpwd'] = 'Sea uus salasõna';
$lang['resendpwdmissing'] = 'Khmm... Sa pead täitma kõik väljad.';
$lang['resendpwdnouser'] = 'Aga sellist kasutajat ei ole.';
$lang['resendpwdbadauth'] = 'See autentimiskood ei ole õige. Kontrolli, et kopeerisid terve lingi.';
$lang['resendpwdconfirm'] = 'Kinnituslink saadeti meilile.';
$lang['resendpwdsuccess'] = 'Uus parool saadeti Sinu meilile.';
+$lang['license'] = 'Kus pole öeldud teisiti, kehtib selle wiki sisule järgmine leping:';
+$lang['licenseok'] = 'Teadmiseks: Toimetades seda lehte, nõustud avaldama oma sisu järgmise lepingu alusel:';
$lang['searchmedia'] = 'Otsi failinime:';
$lang['searchmedia_in'] = 'Otsi %s';
$lang['txt_upload'] = 'Vali fail, mida üles laadida';
$lang['txt_filename'] = 'Siseta oma Wikinimi (soovituslik)';
$lang['txt_overwrt'] = 'Kirjutan olemasoleva faili üle';
+$lang['maxuploadsize'] = 'Üleslaadimiseks lubatu enim %s faili kohta.';
$lang['lockedby'] = 'Praegu on selle lukustanud';
$lang['lockexpire'] = 'Lukustus aegub';
-$lang['js']['willexpire'] = 'Teie lukustus selle lehe toimetamisele aegub umbes minuti pärast.\nIgasugu probleemide vältimiseks kasuta eelvaate nuppu, et lukustusarvesti taas tööle panna.';
+$lang['js']['willexpire'] = 'Teie lukustus selle lehe toimetamisele aegub umbes minuti pärast.\nIgasugu probleemide vältimiseks kasuta eelvaate nuppu, et lukustusarvesti taas tööle panna.';
$lang['js']['notsavedyet'] = 'Sul on seal salvestamata muudatusi, mis kohe kõige kaduva teed lähevad.
Kas Sa ikka tahad edasi liikuda?';
$lang['js']['searchmedia'] = 'Otsi faile';
@@ -122,6 +139,17 @@ Siiski võid kopeerida ja asetada lingi.';
$lang['js']['linkwiz'] = 'Lingi nõustaja';
$lang['js']['linkto'] = 'Lingi:';
$lang['js']['del_confirm'] = 'Kas kustutame selle kirje?';
+$lang['js']['restore_confirm'] = 'Tõesti taastad selle järgu?';
+$lang['js']['media_diff'] = 'Vaatle erisusi:';
+$lang['js']['media_diff_both'] = 'Kõrvuti';
+$lang['js']['media_diff_opacity'] = 'Kuma läbi';
+$lang['js']['media_diff_portions'] = 'Puhasta';
+$lang['js']['media_select'] = 'Vali failid…';
+$lang['js']['media_upload_btn'] = 'Lae üles';
+$lang['js']['media_done_btn'] = 'Valmis';
+$lang['js']['media_drop'] = 'Üleslaadimiseks viska failid siia';
+$lang['js']['media_cancel'] = 'eemalda';
+$lang['js']['media_overwrt'] = 'Asenda olemasolevad failid';
$lang['rssfailed'] = 'Sinu soovitud info ammutamisel tekkis viga: ';
$lang['nothingfound'] = 'Oops, aga mitte muhvigi ei leitud.';
$lang['mediaselect'] = 'Hunnik faile';
@@ -131,6 +159,8 @@ $lang['uploadfail'] = 'Üleslaadimine läks nässu. Äkki pole Sa sel
$lang['uploadwrong'] = 'Ei saa Sa midagi üles laadida. Oops, aga seda tüüpi faili sul lihtsalt ei lubata üles laadida';
$lang['uploadexist'] = 'Fail on juba olemas. Midagi ei muudetud.';
$lang['uploadbadcontent'] = 'Üles laaditu ei sobinud %s faililaiendiga.';
+$lang['uploadspam'] = 'Üleslaadimine tõrjuti rämpssisu vältija poolt.';
+$lang['uploadxss'] = 'Üleslaadimine tõrjuti kahtlase sisu võimaluse tõttu';
$lang['uploadsize'] = 'Üles laaditud fail on liiga suur (maksimaalne suurus on %s).';
$lang['deletesucc'] = 'Fail nimega "%s" sai kustutatud.';
$lang['deletefail'] = 'Faili nimega "%s" ei kustutatud (kontrolli õigusi).';
@@ -155,6 +185,7 @@ $lang['diff'] = 'Näita erinevusi hetkel kehtiva versiooniga';
$lang['diff2'] = 'Näita valitud versioonide erinevusi';
$lang['difflink'] = 'Lõlita võrdlemise vaatele';
$lang['diff_type'] = 'Vaata erinevusi:';
+$lang['diff_inline'] = 'Jooksvalt';
$lang['diff_side'] = 'Kõrvuti';
$lang['line'] = 'Rida';
$lang['breadcrumb'] = 'Käidud rada';
@@ -166,9 +197,22 @@ $lang['created'] = 'tekitatud';
$lang['restored'] = 'vana versioon taastatud (%s)';
$lang['external_edit'] = 'väline muutmine';
$lang['summary'] = 'kokkuvõte muudatustest';
+$lang['noflash'] = 'Sele sisu vaatamisesks on vajalik <a href="http://www.adobe.com/products/flashplayer/">Adobe Flash Laiendus</a>.';
+$lang['tools'] = 'Tööriistad';
+$lang['user_tools'] = 'Kasutaja tarvikud';
+$lang['site_tools'] = 'Lehe tööriistad';
+$lang['page_tools'] = 'Lehekülje tarvikud';
+$lang['skip_to_content'] = 'mine sisule';
+$lang['sidebar'] = 'Külgriba';
$lang['mail_newpage'] = 'leht lisatud:';
$lang['mail_changed'] = 'leht muudetud';
+$lang['mail_subscribe_list'] = 'muutunud lehed nimeruumis:';
$lang['mail_new_user'] = 'Uus kasutaja:';
+$lang['mail_upload'] = 'üles laetud fail:';
+$lang['changes_type'] = 'Näita mmutuseid';
+$lang['pages_changes'] = 'Leheküljed';
+$lang['media_changes'] = 'Meedia failid';
+$lang['both_changes'] = 'Mõlemid, leheküljed ja meedia failid';
$lang['qb_bold'] = 'Rasvane kiri';
$lang['qb_italic'] = 'Kaldkiri';
$lang['qb_underl'] = 'Alajoonega kiri';
@@ -193,6 +237,7 @@ $lang['qb_media'] = 'Lisa pilte ja muid faile';
$lang['qb_sig'] = 'Lisa allkiri!';
$lang['qb_smileys'] = 'Emotikonid';
$lang['qb_chars'] = 'Erisümbolid';
+$lang['upperns'] = 'mine ülemisse nimeruumi';
$lang['admin_register'] = 'Lisa kasutaja';
$lang['metaedit'] = 'Muuda lisainfot';
$lang['metasaveerr'] = 'Lisainfo salvestamine läks untsu.';
@@ -208,7 +253,26 @@ $lang['img_copyr'] = 'Autoriõigused';
$lang['img_format'] = 'Formaat';
$lang['img_camera'] = 'Kaamera';
$lang['img_keywords'] = 'Võtmesõnad';
+$lang['img_width'] = 'Laius';
+$lang['img_height'] = 'Kõrgus';
+$lang['img_manager'] = 'Näita meediahalduris';
+$lang['subscr_style_every'] = 'igast toimetamisest teavitab ekiri';
+$lang['subscr_style_digest'] = 'kokkuvõte ekirjaga toimetamistest igal leheküljel (iga %.2f päeva järel)';
+$lang['subscr_style_list'] = 'Peale viimast ekirja (iga %.2f päeva järel) toimetaud lehekülgede loend.';
+$lang['subscr_subscribe_success'] = '%s lisati %s tellijaks';
+$lang['subscr_subscribe_error'] = 'Viga %s lisamisel %s tellijaks';
+$lang['subscr_subscribe_noaddress'] = 'Sinu kasutajaga pole seotud ühtegi aadressi, seega ei saa sind tellijaks lisada';
+$lang['subscr_unsubscribe_success'] = '%s eemaldati %s tellijatest';
+$lang['subscr_unsubscribe_error'] = 'Viga %s eemaldamisel %s tellijatest';
+$lang['subscr_already_subscribed'] = '%s on juba %s tellija';
+$lang['subscr_not_subscribed'] = '%s pole %s tellija';
+$lang['subscr_m_not_subscribed'] = 'Sina pole hetkel selle lehekülje ega nimeruumi tellija.';
+$lang['subscr_m_new_header'] = 'Lisa tellimus';
+$lang['subscr_m_current_header'] = 'Hetkel tellitud';
+$lang['subscr_m_unsubscribe'] = 'Eemalda tellimus';
+$lang['subscr_m_subscribe'] = 'Telli';
$lang['authtempfail'] = 'Kasutajate autentimine on ajutiselt rivist väljas. Kui see olukord mõne aja jooksul ei parane, siis teavita sellest serveri haldajat.';
+$lang['authpwdexpire'] = 'Sinu salasõna aegub %päeva pärast, võiksid seda peatselt muuta.';
$lang['i_chooselang'] = 'Vali keel';
$lang['i_installer'] = 'DokuWiki paigaldaja';
$lang['i_wikiname'] = 'Wiki nimi';
@@ -218,9 +282,11 @@ $lang['i_problems'] = 'Paigaldaja leidis mõned vead, mis on allpool
$lang['i_modified'] = 'Õnnetuste vältimiseks läheb see skript käima ainult värskelt paigaldatud ja muutmata Dokuwiki peal.
Sa peaksid ilmselt kogu koodi uuesti lahti pakkima. Vaata ka <a href="http://dokuwiki.org/install">Dokuwiki installeerimis juhendit</a>';
$lang['i_funcna'] = 'PHP funktsiooni <code>%s</code> ei ole olemas.võibolla sinu serveri hooldaja on selle mingil põhjusel keelanud?';
+$lang['i_phpver'] = 'Sinu PHP versioon <code>%s</code> on vanem nõutavast <code>%s</code>. Pead oma paigaldatud PHP-d uuendama.';
$lang['i_permfail'] = 'Dokuwiki ei saa kirjutada faili <code>%s</code>. Kontrolli serveris failide õigused üle.';
$lang['i_confexists'] = '<code>%s</code> on juba olemas';
$lang['i_writeerr'] = 'Faili <code>%s</code> ei lubata tekitada. Kontrolli kataloogi ja faili õigusi.';
+$lang['i_badhash'] = 'Tundmatu või muutunud dokuwiki.php (hash=<code>%s</code>)';
$lang['i_badval'] = '<code>%s</code> - lubamatu või tühi väärtus';
$lang['i_success'] = 'Seadistamine on õnnelikult lõpule viidud. Sa võid nüüd kustutada faili install.php. Alusta oma <a href="doku.php?id=wiki:welcome">uue DokuWiki</a> täitmist.';
$lang['i_failure'] = 'Konfiguratsiooni faili kirjutamisel esines vigu. Võimalik, et pead need käsitsi parandama enne <a href="doku.php?id=wiki:welcome">uue DokuWiki</a> täitma asumist.';
@@ -228,4 +294,45 @@ $lang['i_policy'] = 'Wiki õiguste algne poliitika';
$lang['i_pol0'] = 'Avatud (lugemine, kirjutamine ja üleslaadimine kõigile lubatud)';
$lang['i_pol1'] = 'Avalikuks lugemiseks (lugeda saavad kõik, kirjutada ja üles laadida vaid registreeritud kasutajad)';
$lang['i_pol2'] = 'Suletud (kõik õigused, kaasaarvatud lugemine on lubatud vaid registreeritud kasutajatele)';
+$lang['i_allowreg'] = 'Luba kasutajail endid ise arvele võtta';
$lang['i_retry'] = 'Proovi uuesti';
+$lang['i_license'] = 'Vali leping, mille alusel wiki sisu avaldatakse:';
+$lang['i_license_none'] = 'Ära näita mingit lepingu teavet';
+$lang['i_pop_field'] = 'Aitake meil täiendada DokuWiki kasutuskogemsut:';
+$lang['i_pop_label'] = 'Kord kuus, saada DokuWiki arendajatele anonüümseid kasutus andmeid.';
+$lang['recent_global'] = 'Uurid hetkel nimeruumi <b>%s</b> muudatusi. Võid uurida ka <a href="%s">kogu selle wiki</a> muudatusi.';
+$lang['years'] = '%d aasta eest';
+$lang['months'] = '%d kuu eest';
+$lang['weeks'] = '%d nädala eest';
+$lang['days'] = '%d päeva eest';
+$lang['hours'] = '%d tunni eest';
+$lang['minutes'] = '%d minuti eest';
+$lang['seconds'] = '%d sekundi eest';
+$lang['wordblock'] = 'Sinu toimetus jäeti muutmata tõrjutud teksti tõttu (rämpspost?).';
+$lang['media_uploadtab'] = 'Lae-↑ ';
+$lang['media_searchtab'] = 'Otsi';
+$lang['media_file'] = 'Fail';
+$lang['media_viewtab'] = 'Vaata';
+$lang['media_edittab'] = 'Toimeta';
+$lang['media_historytab'] = 'Ajalugu';
+$lang['media_list_thumbs'] = 'Pisipildid';
+$lang['media_list_rows'] = 'Ridu';
+$lang['media_sort_name'] = 'Nimi';
+$lang['media_sort_date'] = 'Kuupäev';
+$lang['media_namespaces'] = 'Vali nimeruum';
+$lang['media_files'] = 'Failid %s-is';
+$lang['media_upload'] = 'Lae %s-ssi';
+$lang['media_search'] = 'Leia %s-st';
+$lang['media_view'] = '%s';
+$lang['media_viewold'] = '%s asub %s-s';
+$lang['media_edit'] = 'Muuda %s-i';
+$lang['media_history'] = '%s ajalugu';
+$lang['media_meta_edited'] = 'toimetati päiseteavet';
+$lang['media_perm_read'] = 'Sul pole piisavaid õigusi failide vaatamiseks';
+$lang['media_perm_upload'] = 'Sul pole piisavaid õigusi failide üleslaadimiseks';
+$lang['media_update'] = 'Lea üles uus järk';
+$lang['media_restore'] = 'Ennista sellele järgule';
+$lang['currentns'] = 'Hetkel nimeruumis';
+$lang['searchresult'] = 'Otsingu tulemus';
+$lang['plainhtml'] = 'Liht-HTML';
+$lang['wikimarkup'] = 'Wiki märgistus';
diff --git a/inc/lang/et/resetpwd.txt b/inc/lang/et/resetpwd.txt
new file mode 100644
index 000000000..3a802986f
--- /dev/null
+++ b/inc/lang/et/resetpwd.txt
@@ -0,0 +1,3 @@
+====== Sea uus salasõna ======
+
+Sisesta oma selle wiki kasutajale uus salasõna \ No newline at end of file
diff --git a/inc/lang/et/subscr_digest.txt b/inc/lang/et/subscr_digest.txt
new file mode 100644
index 000000000..7446fd9f4
--- /dev/null
+++ b/inc/lang/et/subscr_digest.txt
@@ -0,0 +1,21 @@
+Tere!
+
+Wiki-s @TITLE@ toimetati lehekülge @PAGE@.
+
+Muudatustest lähemalt:
+
+--------------------------------------------------------
+@DIFF@
+--------------------------------------------------------
+
+Endine: @OLDPAGE@
+Uus: @NEWPAGE@
+
+Lehekülje teavituste katkestamiseks, sisene wiki-sse aadressil @DOKUWIKIURL@
+ja mine:
+@SUBSCRIBE@
+ning loobu lehekülje ja/või nimeruumi muudatuste teavitustest.
+
+--
+Selle e-kirja lõi DokuWiki aadressilt
+@DOKUWIKIURL@ \ No newline at end of file
diff --git a/inc/lang/et/subscr_form.txt b/inc/lang/et/subscr_form.txt
new file mode 100644
index 000000000..45d911f72
--- /dev/null
+++ b/inc/lang/et/subscr_form.txt
@@ -0,0 +1,3 @@
+====== Tellimuste haldus ======
+
+See lehekülg lubab sul hallata oma tellimusi antud leheküljele ja nimeruumi. \ No newline at end of file
diff --git a/inc/lang/et/subscr_list.txt b/inc/lang/et/subscr_list.txt
new file mode 100644
index 000000000..0629651b7
--- /dev/null
+++ b/inc/lang/et/subscr_list.txt
@@ -0,0 +1,19 @@
+Tere!
+
+Wiki-s @TITLE@ toimetati nimeruumi @PAGE@.
+Muudatustest lähemalt:
+
+--------------------------------------------------------
+@DIFF@
+--------------------------------------------------------
+Endine: @OLDPAGE@
+Uus: @NEWPAGE@
+
+Lehekülje teavituste katkestamiseks, sisene wiki-sse aadressil @DOKUWIKIURL@
+ja mine:
+@SUBSCRIBE@
+ning loobu lehekülje ja/või nimeruumi muudatuste teavitustest.
+
+--
+Selle e-kirja lõi DokuWiki aadressilt
+@DOKUWIKIURL@ \ No newline at end of file
diff --git a/inc/lang/et/subscr_single.txt b/inc/lang/et/subscr_single.txt
new file mode 100644
index 000000000..149c95ad1
--- /dev/null
+++ b/inc/lang/et/subscr_single.txt
@@ -0,0 +1,23 @@
+Tere!
+
+Wikis @TITLE@ toimetati lehekülge @PAGE@.
+Muudatustest lähemalt:
+
+--------------------------------------------------------
+@DIFF@
+--------------------------------------------------------
+
+Kuupäev : @DATE@
+Kasutaja : @USER@
+Kokkuvõte: @SUMMARY@
+Endine: @OLDPAGE@
+Uus: @NEWPAGE@
+
+Lehekülje teavituste katkestamiseks, sisene wiki-sse aadressil @DOKUWIKIURL@
+ja mine:
+@SUBSCRIBE@
+ning loobu lehekülje ja/või nimeruumi muudatuste teavitustest.
+
+--
+Selle e-kirja lõi DokuWiki aadressilt
+@DOKUWIKIURL@ \ No newline at end of file
diff --git a/inc/lang/et/uploadmail.txt b/inc/lang/et/uploadmail.txt
new file mode 100644
index 000000000..2d3a6aa7e
--- /dev/null
+++ b/inc/lang/et/uploadmail.txt
@@ -0,0 +1,16 @@
+Sinu DokuWiki-sse lisati fail.
+Lähemalt:
+
+ Fail : @MEDIA@
+ Endine : @OLD@
+ Kuupäev : @DATE@
+ Veebilehitseja : @BROWSER@
+ IP-aadress : @IPADDRESS@
+ Hostinimi : @HOSTNAME@
+ Suurus : @SIZE@
+ MIME liik : @MIME@
+ Kasutaja : @ USER@
+
+--
+Selle e-kirja lõi DokuWiki aadressilt
+@DOKUWIKIURL@ \ No newline at end of file
diff --git a/inc/lang/eu/jquery.ui.datepicker.js b/inc/lang/eu/jquery.ui.datepicker.js
new file mode 100644
index 000000000..a71db2c72
--- /dev/null
+++ b/inc/lang/eu/jquery.ui.datepicker.js
@@ -0,0 +1,23 @@
+/* Euskarako oinarria 'UI date picker' jquery-ko extentsioarentzat */
+/* Karrikas-ek itzulia (karrikas@karrikas.com) */
+jQuery(function($){
+ $.datepicker.regional['eu'] = {
+ closeText: 'Egina',
+ prevText: '&#x3C;Aur',
+ nextText: 'Hur&#x3E;',
+ currentText: 'Gaur',
+ monthNames: ['urtarrila','otsaila','martxoa','apirila','maiatza','ekaina',
+ 'uztaila','abuztua','iraila','urria','azaroa','abendua'],
+ monthNamesShort: ['urt.','ots.','mar.','api.','mai.','eka.',
+ 'uzt.','abu.','ira.','urr.','aza.','abe.'],
+ dayNames: ['igandea','astelehena','asteartea','asteazkena','osteguna','ostirala','larunbata'],
+ dayNamesShort: ['ig.','al.','ar.','az.','og.','ol.','lr.'],
+ dayNamesMin: ['ig','al','ar','az','og','ol','lr'],
+ weekHeader: 'As',
+ dateFormat: 'yy-mm-dd',
+ firstDay: 1,
+ isRTL: false,
+ showMonthAfterYear: false,
+ yearSuffix: ''};
+ $.datepicker.setDefaults($.datepicker.regional['eu']);
+});
diff --git a/inc/lang/fa/jquery.ui.datepicker.js b/inc/lang/fa/jquery.ui.datepicker.js
new file mode 100644
index 000000000..bb957f6d8
--- /dev/null
+++ b/inc/lang/fa/jquery.ui.datepicker.js
@@ -0,0 +1,59 @@
+/* Persian (Farsi) Translation for the jQuery UI date picker plugin. */
+/* Javad Mowlanezhad -- jmowla@gmail.com */
+/* Jalali calendar should supported soon! (Its implemented but I have to test it) */
+jQuery(function($) {
+ $.datepicker.regional['fa'] = {
+ closeText: 'بستن',
+ prevText: '&#x3C;قبلی',
+ nextText: 'بعدی&#x3E;',
+ currentText: 'امروز',
+ monthNames: [
+ 'فروردين',
+ 'ارديبهشت',
+ 'خرداد',
+ 'تير',
+ 'مرداد',
+ 'شهريور',
+ 'مهر',
+ 'آبان',
+ 'آذر',
+ 'دی',
+ 'بهمن',
+ 'اسفند'
+ ],
+ monthNamesShort: ['1','2','3','4','5','6','7','8','9','10','11','12'],
+ dayNames: [
+ 'يکشنبه',
+ 'دوشنبه',
+ 'سه‌شنبه',
+ 'چهارشنبه',
+ 'پنجشنبه',
+ 'جمعه',
+ 'شنبه'
+ ],
+ dayNamesShort: [
+ 'ی',
+ 'د',
+ 'س',
+ 'چ',
+ 'پ',
+ 'ج',
+ 'ش'
+ ],
+ dayNamesMin: [
+ 'ی',
+ 'د',
+ 'س',
+ 'چ',
+ 'پ',
+ 'ج',
+ 'ش'
+ ],
+ weekHeader: 'هف',
+ dateFormat: 'yy/mm/dd',
+ firstDay: 6,
+ isRTL: true,
+ showMonthAfterYear: false,
+ yearSuffix: ''};
+ $.datepicker.setDefaults($.datepicker.regional['fa']);
+});
diff --git a/inc/lang/fa/lang.php b/inc/lang/fa/lang.php
index 6cb5164d8..dbad62890 100644
--- a/inc/lang/fa/lang.php
+++ b/inc/lang/fa/lang.php
@@ -10,6 +10,7 @@
* @author Milad DZand <M.DastanZand@gmail.com>
* @author AmirH Hassaneini <mytechmix@gmail.com>
* @author mehrdad <mehrdad.jafari.bojd@gmail.com>
+ * @author reza_khn <reza_khn@yahoo.com>
*/
$lang['encoding'] = 'utf-8';
$lang['direction'] = 'rtl';
@@ -84,6 +85,7 @@ $lang['profnoempty'] = 'نام و آدرس ایمیل باید پر ش
$lang['profchanged'] = 'پروفایل کاربر با موفقیت به روز شد';
$lang['profnodelete'] = 'ویکی توانایی پشتیبانی از حذف کاربران را ندارد';
$lang['profdeleteuser'] = 'حذف حساب کاربری';
+$lang['profdeleted'] = 'حساب کاربری شما حذف گردیده است.';
$lang['pwdforget'] = 'گذرواژه‌ی خود را فراموش کرده‌اید؟ جدید دریافت کنید';
$lang['resendna'] = 'این ویکی ارسال مجدد گذرواژه را پشتیبانی نمی‌کند';
$lang['resendpwd'] = 'تعیین کلمه عبور جدید برای ';
diff --git a/inc/lang/fi/jquery.ui.datepicker.js b/inc/lang/fi/jquery.ui.datepicker.js
new file mode 100644
index 000000000..e5c554aba
--- /dev/null
+++ b/inc/lang/fi/jquery.ui.datepicker.js
@@ -0,0 +1,23 @@
+/* Finnish initialisation for the jQuery UI date picker plugin. */
+/* Written by Harri Kilpiö (harrikilpio@gmail.com). */
+jQuery(function($){
+ $.datepicker.regional['fi'] = {
+ closeText: 'Sulje',
+ prevText: '&#xAB;Edellinen',
+ nextText: 'Seuraava&#xBB;',
+ currentText: 'Tänään',
+ monthNames: ['Tammikuu','Helmikuu','Maaliskuu','Huhtikuu','Toukokuu','Kesäkuu',
+ 'Heinäkuu','Elokuu','Syyskuu','Lokakuu','Marraskuu','Joulukuu'],
+ monthNamesShort: ['Tammi','Helmi','Maalis','Huhti','Touko','Kesä',
+ 'Heinä','Elo','Syys','Loka','Marras','Joulu'],
+ dayNamesShort: ['Su','Ma','Ti','Ke','To','Pe','La'],
+ dayNames: ['Sunnuntai','Maanantai','Tiistai','Keskiviikko','Torstai','Perjantai','Lauantai'],
+ dayNamesMin: ['Su','Ma','Ti','Ke','To','Pe','La'],
+ weekHeader: 'Vk',
+ dateFormat: 'd.m.yy',
+ firstDay: 1,
+ isRTL: false,
+ showMonthAfterYear: false,
+ yearSuffix: ''};
+ $.datepicker.setDefaults($.datepicker.regional['fi']);
+});
diff --git a/inc/lang/fi/lang.php b/inc/lang/fi/lang.php
index 4a0a88ac8..feefc3da8 100644
--- a/inc/lang/fi/lang.php
+++ b/inc/lang/fi/lang.php
@@ -1,13 +1,14 @@
<?php
+
/**
- * Finnish language file
- *
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
* @author Petteri <petteri@gmail.com>
* @author Matti Pöllä <mpo@iki.fi>
* @author Otto Vainio <otto@valjakko.net>
* @author Teemu Mattila <ghcsystems@gmail.com>
* @author Sami Olmari <sami@olmari.fi>
+ * @author Rami Lehti <rammer@ipi.fi>
*/
$lang['encoding'] = 'utf-8';
$lang['direction'] = 'ltr';
@@ -51,6 +52,7 @@ $lang['btn_revert'] = 'palauta';
$lang['btn_register'] = 'Rekisteröidy';
$lang['btn_apply'] = 'Toteuta';
$lang['btn_media'] = 'Media manager';
+$lang['btn_deleteuser'] = 'Poista tilini';
$lang['loggedinas'] = 'Kirjautunut nimellä';
$lang['user'] = 'Käyttäjänimi';
$lang['pass'] = 'Salasana';
@@ -62,6 +64,7 @@ $lang['fullname'] = 'Koko nimi';
$lang['email'] = 'Sähköposti';
$lang['profile'] = 'Käyttäjän profiili';
$lang['badlogin'] = 'Käyttäjänimi tai salasana oli väärä.';
+$lang['badpassconfirm'] = 'Valitan. Salasana oli väärin';
$lang['minoredit'] = 'Pieni muutos';
$lang['draftdate'] = 'Luonnos tallennettu automaattisesti';
$lang['nosecedit'] = 'Sivu on muuttunut välillä ja kappaleen tiedot olivat vanhentuneet. Koko sivu ladattu.';
@@ -78,6 +81,11 @@ $lang['profna'] = 'Tässä wikissä profiilien muokkaaminen ei ol
$lang['profnochange'] = 'Ei muutoksia.';
$lang['profnoempty'] = 'Tyhjä nimi tai sähköpostiosoite ei ole sallittu.';
$lang['profchanged'] = 'Käyttäjän profiilin päivitys onnistui.';
+$lang['profnodelete'] = 'Tässä wikissä ei voi poistaa käyttäjiä';
+$lang['profdeleteuser'] = 'Poista tili';
+$lang['profdeleted'] = 'Käyttäjätilisi on postettu tästä wikistä';
+$lang['profconfdelete'] = 'Haluan poistaa käyttäjätilini tästä wikistä. <br/> Tätä toimintoa ei voi myöhemmin peruuttaa.';
+$lang['profconfdeletemissing'] = 'Vahvistus rastia ei valittu';
$lang['pwdforget'] = 'Unohtuiko salasana? Hanki uusi';
$lang['resendna'] = 'Tämä wiki ei tue salasanan uudelleenlähettämistä.';
$lang['resendpwd'] = 'Aseta uusisalasana';
@@ -284,6 +292,7 @@ $lang['i_policy'] = 'Käyttöoikeuksien oletusmenettelytapa';
$lang['i_pol0'] = 'Avoin Wiki (luku, kirjoitus, tiedostojen lähetys on sallittu kaikille)';
$lang['i_pol1'] = 'Julkinen Wiki (luku kaikilla, kirjoitus ja tiedostojen lähetys rekisteröidyillä käyttäjillä)';
$lang['i_pol2'] = 'Suljettu Wiki (luku, kirjoitus ja tiedostojen lähetys vain rekisteröityneillä käyttäjillä)';
+$lang['i_allowreg'] = 'Salli käyttäjien rekisteröityminen';
$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';
@@ -321,3 +330,7 @@ $lang['media_perm_read'] = 'Anteeksi. Sinulla ei ole riittävästi oikeuks
$lang['media_perm_upload'] = 'Anteeksi. Sinulla ei ole riittävästi oikeuksia lähettääksesi tiedostoja.';
$lang['media_update'] = 'Lähetä uusi versio';
$lang['media_restore'] = 'Palauta tämä versio';
+$lang['currentns'] = 'Nykyinen nimiavaruus';
+$lang['searchresult'] = 'Haun tulokset';
+$lang['plainhtml'] = 'pelkkä HTML';
+$lang['wikimarkup'] = 'Wiki markup';
diff --git a/inc/lang/fo/jquery.ui.datepicker.js b/inc/lang/fo/jquery.ui.datepicker.js
new file mode 100644
index 000000000..cb0e3def7
--- /dev/null
+++ b/inc/lang/fo/jquery.ui.datepicker.js
@@ -0,0 +1,23 @@
+/* Faroese initialisation for the jQuery UI date picker plugin */
+/* Written by Sverri Mohr Olsen, sverrimo@gmail.com */
+jQuery(function($){
+ $.datepicker.regional['fo'] = {
+ closeText: 'Lat aftur',
+ prevText: '&#x3C;Fyrra',
+ nextText: 'Næsta&#x3E;',
+ currentText: 'Í dag',
+ monthNames: ['Januar','Februar','Mars','Apríl','Mei','Juni',
+ 'Juli','August','September','Oktober','November','Desember'],
+ monthNamesShort: ['Jan','Feb','Mar','Apr','Mei','Jun',
+ 'Jul','Aug','Sep','Okt','Nov','Des'],
+ dayNames: ['Sunnudagur','Mánadagur','Týsdagur','Mikudagur','Hósdagur','Fríggjadagur','Leyardagur'],
+ dayNamesShort: ['Sun','Mán','Týs','Mik','Hós','Frí','Ley'],
+ dayNamesMin: ['Su','Má','Tý','Mi','Hó','Fr','Le'],
+ weekHeader: 'Vk',
+ dateFormat: 'dd-mm-yy',
+ firstDay: 1,
+ isRTL: false,
+ showMonthAfterYear: false,
+ yearSuffix: ''};
+ $.datepicker.setDefaults($.datepicker.regional['fo']);
+});
diff --git a/inc/lang/fr/denied.txt b/inc/lang/fr/denied.txt
index 20d4d6755..56c59a7c2 100644
--- a/inc/lang/fr/denied.txt
+++ b/inc/lang/fr/denied.txt
@@ -1,3 +1,3 @@
====== Autorisation refusée ======
-Désolé, vous n'avez pas les droits pour continuer. Peut-être avez-vous oublié de vous identifier ?
+Désolé, vous n'avez pas suffisement d'autorisations pour poursuivre votre demande. Peut-être avez-vous oublié de vous identifier ?
diff --git a/inc/lang/fr/jquery.ui.datepicker.js b/inc/lang/fr/jquery.ui.datepicker.js
new file mode 100644
index 000000000..2d06743a6
--- /dev/null
+++ b/inc/lang/fr/jquery.ui.datepicker.js
@@ -0,0 +1,25 @@
+/* French initialisation for the jQuery UI date picker plugin. */
+/* Written by Keith Wood (kbwood{at}iinet.com.au),
+ Stéphane Nahmani (sholby@sholby.net),
+ Stéphane Raimbault <stephane.raimbault@gmail.com> */
+jQuery(function($){
+ $.datepicker.regional['fr'] = {
+ closeText: 'Fermer',
+ prevText: 'Précédent',
+ nextText: 'Suivant',
+ currentText: 'Aujourd\'hui',
+ monthNames: ['janvier', 'février', 'mars', 'avril', 'mai', 'juin',
+ 'juillet', 'août', 'septembre', 'octobre', 'novembre', 'décembre'],
+ monthNamesShort: ['janv.', 'févr.', 'mars', 'avril', 'mai', 'juin',
+ 'juil.', 'août', 'sept.', 'oct.', 'nov.', 'déc.'],
+ dayNames: ['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi'],
+ dayNamesShort: ['dim.', 'lun.', 'mar.', 'mer.', 'jeu.', 'ven.', 'sam.'],
+ dayNamesMin: ['D','L','M','M','J','V','S'],
+ weekHeader: 'Sem.',
+ dateFormat: 'dd/mm/yy',
+ firstDay: 1,
+ isRTL: false,
+ showMonthAfterYear: false,
+ yearSuffix: ''};
+ $.datepicker.setDefaults($.datepicker.regional['fr']);
+});
diff --git a/inc/lang/fr/lang.php b/inc/lang/fr/lang.php
index 44bc0f859..32e3055f7 100644
--- a/inc/lang/fr/lang.php
+++ b/inc/lang/fr/lang.php
@@ -28,6 +28,8 @@
* @author Anael Mobilia <contrib@anael.eu>
* @author Bruno Veilleux <bruno.vey@gmail.com>
* @author Emmanuel <seedfloyd@gmail.com>
+ * @author Jérôme Brandt <jeromebrandt@gmail.com>
+ * @author Wild <wild.dagger@free.fr>
*/
$lang['encoding'] = 'utf-8';
$lang['direction'] = 'ltr';
@@ -50,10 +52,10 @@ $lang['btn_revs'] = 'Anciennes révisions';
$lang['btn_recent'] = 'Derniers changements';
$lang['btn_upload'] = 'Envoyer';
$lang['btn_cancel'] = 'Annuler';
-$lang['btn_index'] = 'Index';
+$lang['btn_index'] = 'Plan du site';
$lang['btn_secedit'] = 'Modifier';
-$lang['btn_login'] = 'Connexion';
-$lang['btn_logout'] = 'Déconnexion';
+$lang['btn_login'] = 'S\'identifier';
+$lang['btn_logout'] = 'Se déconnecter';
$lang['btn_admin'] = 'Administrer';
$lang['btn_update'] = 'Mettre à jour';
$lang['btn_delete'] = 'Effacer';
@@ -68,7 +70,7 @@ $lang['btn_draft'] = 'Modifier le brouillon';
$lang['btn_recover'] = 'Récupérer le brouillon';
$lang['btn_draftdel'] = 'Effacer le brouillon';
$lang['btn_revert'] = 'Restaurer';
-$lang['btn_register'] = 'S\'enregistrer';
+$lang['btn_register'] = 'Créer un compte';
$lang['btn_apply'] = 'Appliquer';
$lang['btn_media'] = 'Gestionnaire de médias';
$lang['btn_deleteuser'] = 'Supprimer mon compte';
@@ -309,6 +311,7 @@ $lang['i_policy'] = 'Politique de contrôle d\'accès initiale';
$lang['i_pol0'] = 'Wiki ouvert (lecture, écriture, envoi de fichiers pour tout le monde)';
$lang['i_pol1'] = 'Wiki public (lecture pour tout le monde, écriture et envoi de fichiers pour les utilisateurs enregistrés)';
$lang['i_pol2'] = 'Wiki fermé (lecture, écriture, envoi de fichiers pour les utilisateurs enregistrés uniquement)';
+$lang['i_allowreg'] = 'Permettre aux utilisateurs de s\'enregistrer eux-mêmes.';
$lang['i_retry'] = 'Réessayer';
$lang['i_license'] = 'Veuillez choisir la licence sous laquelle vous souhaitez placer votre contenu :';
$lang['i_license_none'] = 'Ne pas afficher d\'information de licence.';
@@ -346,3 +349,7 @@ $lang['media_perm_read'] = 'Désolé, vous n\'avez pas l\'autorisation de
$lang['media_perm_upload'] = 'Désolé, vous n\'avez pas l\'autorisation d\'envoyer des fichiers.';
$lang['media_update'] = 'Envoyer une nouvelle version';
$lang['media_restore'] = 'Restaurer cette version';
+$lang['currentns'] = 'Namespace actuel';
+$lang['searchresult'] = 'Résultat de la recherche';
+$lang['plainhtml'] = 'HTML brut';
+$lang['wikimarkup'] = 'Wiki balise';
diff --git a/inc/lang/gl/jquery.ui.datepicker.js b/inc/lang/gl/jquery.ui.datepicker.js
new file mode 100644
index 000000000..59b989a6d
--- /dev/null
+++ b/inc/lang/gl/jquery.ui.datepicker.js
@@ -0,0 +1,23 @@
+/* Galician localization for 'UI date picker' jQuery extension. */
+/* Translated by Jorge Barreiro <yortx.barry@gmail.com>. */
+jQuery(function($){
+ $.datepicker.regional['gl'] = {
+ closeText: 'Pechar',
+ prevText: '&#x3C;Ant',
+ nextText: 'Seg&#x3E;',
+ currentText: 'Hoxe',
+ monthNames: ['Xaneiro','Febreiro','Marzo','Abril','Maio','Xuño',
+ 'Xullo','Agosto','Setembro','Outubro','Novembro','Decembro'],
+ monthNamesShort: ['Xan','Feb','Mar','Abr','Mai','Xuñ',
+ 'Xul','Ago','Set','Out','Nov','Dec'],
+ dayNames: ['Domingo','Luns','Martes','Mércores','Xoves','Venres','Sábado'],
+ dayNamesShort: ['Dom','Lun','Mar','Mér','Xov','Ven','Sáb'],
+ dayNamesMin: ['Do','Lu','Ma','Mé','Xo','Ve','Sá'],
+ weekHeader: 'Sm',
+ dateFormat: 'dd/mm/yy',
+ firstDay: 1,
+ isRTL: false,
+ showMonthAfterYear: false,
+ yearSuffix: ''};
+ $.datepicker.setDefaults($.datepicker.regional['gl']);
+});
diff --git a/inc/lang/he/jquery.ui.datepicker.js b/inc/lang/he/jquery.ui.datepicker.js
new file mode 100644
index 000000000..b9e8deec5
--- /dev/null
+++ b/inc/lang/he/jquery.ui.datepicker.js
@@ -0,0 +1,23 @@
+/* Hebrew initialisation for the UI Datepicker extension. */
+/* Written by Amir Hardon (ahardon at gmail dot com). */
+jQuery(function($){
+ $.datepicker.regional['he'] = {
+ closeText: 'סגור',
+ prevText: '&#x3C;הקודם',
+ nextText: 'הבא&#x3E;',
+ currentText: 'היום',
+ monthNames: ['ינואר','פברואר','מרץ','אפריל','מאי','יוני',
+ 'יולי','אוגוסט','ספטמבר','אוקטובר','נובמבר','דצמבר'],
+ monthNamesShort: ['ינו','פבר','מרץ','אפר','מאי','יוני',
+ 'יולי','אוג','ספט','אוק','נוב','דצמ'],
+ dayNames: ['ראשון','שני','שלישי','רביעי','חמישי','שישי','שבת'],
+ dayNamesShort: ['א\'','ב\'','ג\'','ד\'','ה\'','ו\'','שבת'],
+ dayNamesMin: ['א\'','ב\'','ג\'','ד\'','ה\'','ו\'','שבת'],
+ weekHeader: 'Wk',
+ dateFormat: 'dd/mm/yy',
+ firstDay: 0,
+ isRTL: true,
+ showMonthAfterYear: false,
+ yearSuffix: ''};
+ $.datepicker.setDefaults($.datepicker.regional['he']);
+});
diff --git a/inc/lang/he/lang.php b/inc/lang/he/lang.php
index 5afdbf2fc..8efe0da17 100644
--- a/inc/lang/he/lang.php
+++ b/inc/lang/he/lang.php
@@ -1,15 +1,18 @@
<?php
+
/**
- * Hebrew language file
- *
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
- * @link http://sourceforge.net/projects/hebdokuwiki/
+ *
* @author גיא שפר <guysoft@ort.org.il>
* @author Denis Simakov <akinoame1@gmail.com>
* @author Dotan Kamber <kamberd@yahoo.com>
* @author Moshe Kaplan <mokplan@gmail.com>
* @author Yaron Yogev <yaronyogev@gmail.com>
* @author Yaron Shahrabani <sh.yaron@gmail.com>
+ * @author Roy Zahor <roy.zahor@gmail.com>
+ * @author alex <ralexay@gmail.com>
+ * @author matt carroll <matt.carroll@gmail.com>
+ * @author tomer <tomercarolldergicz@gmail.com>
*/
$lang['encoding'] = 'utf-8';
$lang['direction'] = 'rtl';
@@ -45,11 +48,15 @@ $lang['btn_backtomedia'] = 'חזרה לבחירת קובץ מדיה';
$lang['btn_subscribe'] = 'מעקב אחרי שינוים';
$lang['btn_profile'] = 'עדכון הפרופיל';
$lang['btn_reset'] = 'איפוס';
+$lang['btn_resendpwd'] = 'הגדר סיסמה חדשה';
$lang['btn_draft'] = 'עריכת טיוטה';
$lang['btn_recover'] = 'שחזור טיוטה';
$lang['btn_draftdel'] = 'מחיקת טיוטה';
$lang['btn_revert'] = 'שחזור';
$lang['btn_register'] = 'הרשמה';
+$lang['btn_apply'] = 'ליישם';
+$lang['btn_media'] = 'מנהל המדיה';
+$lang['btn_deleteuser'] = 'להסיר את החשבון שלי';
$lang['loggedinas'] = 'נכנסת בשם';
$lang['user'] = 'שם משתמש';
$lang['pass'] = 'ססמה';
@@ -61,6 +68,7 @@ $lang['fullname'] = 'שם מלא';
$lang['email'] = 'דוא״ל';
$lang['profile'] = 'פרופיל המשתמש';
$lang['badlogin'] = 'שם המשתמש או הססמה שגויים, עמך הסליחה';
+$lang['badpassconfirm'] = 'מצטערים, הסיסמה שגויה';
$lang['minoredit'] = 'שינוים מזעריים';
$lang['draftdate'] = 'הטיוטה נשמרה אוטומטית ב־';
$lang['nosecedit'] = 'הדף השתנה בינתיים, הקטע שערכת אינו מעודכן - העמוד כולו נטען במקום זאת.';
@@ -77,8 +85,14 @@ $lang['profna'] = 'בוויקי הזה לא ניתן לשנות
$lang['profnochange'] = 'אין שינויים, הפרופיל לא עודכן';
$lang['profnoempty'] = 'השם וכתובת הדוא״ל לא יכולים להיות ריקים';
$lang['profchanged'] = 'הפרופיל עודכן בהצלחה';
+$lang['profnodelete'] = 'ויקי אינה תומכת במחיקת משתמשים';
+$lang['profdeleteuser'] = 'הסר חשבון';
+$lang['profdeleted'] = 'חשבון המשתמש שלך נמחק מויקי זה';
+$lang['profconfdelete'] = 'ברצוני להסיר את החשבון שלי מוויקי זה. <br/> לא ניתן לבטל פעולה זו.';
+$lang['profconfdeletemissing'] = 'תיבת אישור אינו מסומן';
$lang['pwdforget'] = 'שכחת את הססמה שלך? ניתן לקבל חדשה';
$lang['resendna'] = 'הוויקי הזה אינו תומך בחידוש ססמה';
+$lang['resendpwd'] = 'הגדר סיסמא חדשה בעבור';
$lang['resendpwdmissing'] = 'עליך למלא את כל השדות, עמך הסליחה.';
$lang['resendpwdnouser'] = 'משתמש בשם זה לא נמצא במסד הנתונים, עמך הסליחה.';
$lang['resendpwdbadauth'] = 'קוד אימות זה אינו תקף. יש לוודא כי נעשה שימוש בקישור האימות המלא, עמך הסליחה.';
@@ -91,9 +105,10 @@ $lang['searchmedia_in'] = 'חיפוש תחת %s';
$lang['txt_upload'] = 'בחירת קובץ להעלות';
$lang['txt_filename'] = 'העלאה בשם (נתון לבחירה)';
$lang['txt_overwrt'] = 'שכתוב על קובץ קיים';
+$lang['maxuploadsize'] = 'העלה מקסימום. s% לכל קובץ.';
$lang['lockedby'] = 'נעול על ידי';
$lang['lockexpire'] = 'הנעילה פגה';
-$lang['js']['willexpire'] = 'הנעילה תחלוף עוד זמן קצר. \nלמניעת התנגשויות יש להשתמש בכפתור הרענון מטה כדי לאפס את מד משך הנעילה.';
+$lang['js']['willexpire'] = 'הנעילה תחלוף עוד זמן קצר. \nלמניעת התנגשויות יש להשתמש בכפתור הרענון מטה כדי לאפס את מד משך הנעילה.';
$lang['js']['notsavedyet'] = 'שינויים שלא נשמרו ילכו לאיבוד.';
$lang['js']['searchmedia'] = 'חיפוש אחר קבצים';
$lang['js']['keepopen'] = 'השארת חלון פתוח על הבחירה';
@@ -124,6 +139,17 @@ $lang['js']['nosmblinks'] = 'קישור לכונני שיתוף של Window
$lang['js']['linkwiz'] = 'אשף הקישורים';
$lang['js']['linkto'] = 'קישור אל:';
$lang['js']['del_confirm'] = 'באמת למחוק?';
+$lang['js']['restore_confirm'] = 'באמת לשחזר את הגירסא הזאת?';
+$lang['js']['media_diff'] = 'הצגת הבדלים:';
+$lang['js']['media_diff_both'] = 'זה לצד זה';
+$lang['js']['media_diff_opacity'] = 'ניקוי דרך';
+$lang['js']['media_diff_portions'] = 'לחבוט';
+$lang['js']['media_select'] = 'בחר קבצים...';
+$lang['js']['media_upload_btn'] = 'העלאה';
+$lang['js']['media_done_btn'] = 'בוצע';
+$lang['js']['media_drop'] = 'גרור לכאן קבצים בכדי להעלותם';
+$lang['js']['media_cancel'] = 'הסר';
+$lang['js']['media_overwrt'] = 'שכתב קבצים קיימים';
$lang['rssfailed'] = 'אירע כשל בעת קבלת הזנה זו:';
$lang['nothingfound'] = 'לא נמצאו תוצאות.';
$lang['mediaselect'] = 'קובצי מדיה';
@@ -158,6 +184,9 @@ $lang['yours'] = 'הגרסה שלך';
$lang['diff'] = 'הצגת שינוים מגרסה זו ועד הנוכחית';
$lang['diff2'] = 'הצגת הבדלים בין הגרסאות שנבחרו';
$lang['difflink'] = 'קישור לתצוגה השוואה זו';
+$lang['diff_type'] = 'הצגת הבדלים:';
+$lang['diff_inline'] = 'באותה השורה';
+$lang['diff_side'] = 'זה לצד זה';
$lang['line'] = 'שורה';
$lang['breadcrumb'] = 'ביקורים אחרונים';
$lang['youarehere'] = 'זהו מיקומך';
@@ -170,11 +199,21 @@ $lang['external_edit'] = 'עריכה חיצונית';
$lang['summary'] = 'תקציר העריכה';
$lang['noflash'] = '<a href="http://www.adobe.com/products/flashplayer/">תוסף פלאש לדפדפן</a> נדרש כדי להציג תוכן זה.';
$lang['download'] = 'הורדת מקטע';
+$lang['tools'] = 'כלים';
+$lang['user_tools'] = 'כלים של משתמש';
+$lang['site_tools'] = 'כלים של אתר';
+$lang['page_tools'] = 'כלים של דף';
+$lang['skip_to_content'] = 'עבור לתוכן';
+$lang['sidebar'] = 'הסרגל הצידי';
$lang['mail_newpage'] = 'דף נוסף:';
$lang['mail_changed'] = 'דף שונה:';
$lang['mail_subscribe_list'] = 'דפים שהשתנו במרחב השם:';
$lang['mail_new_user'] = 'משתמש חדש:';
$lang['mail_upload'] = 'קובץ הועלה:';
+$lang['changes_type'] = 'צפו בשינויים של';
+$lang['pages_changes'] = 'דפים';
+$lang['media_changes'] = 'קבצי מדיה';
+$lang['both_changes'] = 'קבצי מדיה ודפים ';
$lang['qb_bold'] = 'טקסט מודגש';
$lang['qb_italic'] = 'טקסט נטוי';
$lang['qb_underl'] = 'טקסט עם קו תחתון';
@@ -215,6 +254,9 @@ $lang['img_copyr'] = 'זכויות יוצרים';
$lang['img_format'] = 'מבנה';
$lang['img_camera'] = 'מצלמה';
$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'] = 'אין כתובת המשויכת עם הכניסה שלך, נא ניתן להוסיף אותך לרשימת המינויים';
@@ -232,6 +274,7 @@ $lang['subscr_style_every'] = 'דוא״ל עם כל שינוי';
$lang['subscr_style_digest'] = 'הודעת דוא״ל המציגה את כל השינויים בכל עמוד (בכל %.2f ימים)';
$lang['subscr_style_list'] = 'רשימת השינויים בדפים מאז הודעת הדוא״ל האחרונה (בכל %.2f ימים)';
$lang['authtempfail'] = 'אימות משתמשים אינו זמין כרגע. אם מצב זה נמשך נא ליידע את מנהל הוויקי.';
+$lang['authpwdexpire'] = 'הסיסמה שלך תפוג ב% d ימים, אתה צריך לשנות את זה בקרוב.';
$lang['i_chooselang'] = 'נא לבחור שפה';
$lang['i_installer'] = 'תכנית ההתקנה של DokuWiki';
$lang['i_wikiname'] = 'שם הוויקי';
@@ -242,6 +285,7 @@ $lang['i_modified'] = 'משיקולי אבטחה סקריפט זה י
עליך לחלץ שנית את הקבצים מהחבילה שהורדה או להיעזר בדף
<a href="http://dokuwiki.org/install">Dokuwiki installation instructions</a>';
$lang['i_funcna'] = 'פונקציית ה-PHP&rlm; <code>%s</code> אינה זמינה. יתכן כי מארח האתר חסם אותה מסיבה כלשהי?';
+$lang['i_phpver'] = 'גרסת PHP שלך <code>%s</code> נמוכה מ <code>%s</ code> הצורך. אתה צריך לשדרג PHP שלך להתקין.';
$lang['i_permfail'] = '<code>%s</code> אינה ניתנת לכתיבה על ידי DokuWiki. עליך לשנות הרשאות תיקייה זו!';
$lang['i_confexists'] = '<code>%s</code> כבר קיים';
$lang['i_writeerr'] = 'אין אפשרות ליצור את <code>%s</code>. נא לבדוק את הרשאות הקובץ/תיקייה וליצור את הקובץ ידנית.';
@@ -253,8 +297,12 @@ $lang['i_policy'] = 'מדיניות ACL התחלתית';
$lang['i_pol0'] = 'ויקי פתוח (קריאה, כתיבה והעלאה לכולם)';
$lang['i_pol1'] = ' ויקי ציבורי (קריאה לכולם, כתיבה והעלאה למשתמשים רשומים)';
$lang['i_pol2'] = 'ויקי סגור (קריאה, כתיבה והעלאה למשתמשים רשומים בלבד)';
+$lang['i_allowreg'] = 'אפשר למשתמשים לרשום את עצמם';
$lang['i_retry'] = 'ניסיון נוסף';
$lang['i_license'] = 'נא לבחור את הרישיון שיחול על התוכן שבוויקי שלך:';
+$lang['i_license_none'] = 'אל תציג כל מידע רישיון';
+$lang['i_pop_field'] = 'אנא, עזרו לנו לשפר את חווית ה DokuWiki:';
+$lang['i_pop_label'] = 'פעם בחודש, לשלוח את נתוני שימוש אנונימיים למפתחי DokuWiki';
$lang['recent_global'] = 'נכון לעכשיו מתנהל על ידיך מעקב אחר מרחב השם <b>%s</b>. כמו כן, באפשרותך <a href="%s">לצפות בשינויים האחרונים בוויקי כולו</a>.';
$lang['years'] = 'לפני %d שנים';
$lang['months'] = 'לפני %d חודשים';
@@ -264,3 +312,16 @@ $lang['hours'] = 'לפני %d שעות';
$lang['minutes'] = 'לפני %d דקות';
$lang['seconds'] = 'לפני %d שניות';
$lang['wordblock'] = 'השינויים שלך לא נשמרו כיוון שהם מכילים טקסט חסום (ספאם).';
+$lang['media_uploadtab'] = 'להעלות';
+$lang['media_searchtab'] = 'חיפוש';
+$lang['media_file'] = 'קובץ';
+$lang['media_viewtab'] = 'תצוגה';
+$lang['media_edittab'] = 'עריכה';
+$lang['media_historytab'] = 'היסטוריה';
+$lang['media_list_thumbs'] = 'תמונות ממוזערות';
+$lang['media_list_rows'] = 'שורות';
+$lang['media_sort_name'] = 'שם';
+$lang['media_sort_date'] = 'תאריך';
+$lang['media_namespaces'] = 'בחר מרחב שמות';
+$lang['media_files'] = 'קבצים ב s%';
+$lang['media_upload'] = 'להעלות s%';
diff --git a/inc/lang/hi/jquery.ui.datepicker.js b/inc/lang/hi/jquery.ui.datepicker.js
new file mode 100644
index 000000000..6c563b997
--- /dev/null
+++ b/inc/lang/hi/jquery.ui.datepicker.js
@@ -0,0 +1,23 @@
+/* Hindi initialisation for the jQuery UI date picker plugin. */
+/* Written by Michael Dawart. */
+jQuery(function($){
+ $.datepicker.regional['hi'] = {
+ closeText: 'बंद',
+ prevText: 'पिछला',
+ nextText: 'अगला',
+ currentText: 'आज',
+ monthNames: ['जनवरी ','फरवरी','मार्च','अप्रेल','मई','जून',
+ 'जूलाई','अगस्त ','सितम्बर','अक्टूबर','नवम्बर','दिसम्बर'],
+ monthNamesShort: ['जन', 'फर', 'मार्च', 'अप्रेल', 'मई', 'जून',
+ 'जूलाई', 'अग', 'सित', 'अक्ट', 'नव', 'दि'],
+ dayNames: ['रविवार', 'सोमवार', 'मंगलवार', 'बुधवार', 'गुरुवार', 'शुक्रवार', 'शनिवार'],
+ dayNamesShort: ['रवि', 'सोम', 'मंगल', 'बुध', 'गुरु', 'शुक्र', 'शनि'],
+ dayNamesMin: ['रवि', 'सोम', 'मंगल', 'बुध', 'गुरु', 'शुक्र', 'शनि'],
+ weekHeader: 'हफ्ता',
+ dateFormat: 'dd/mm/yy',
+ firstDay: 1,
+ isRTL: false,
+ showMonthAfterYear: false,
+ yearSuffix: ''};
+ $.datepicker.setDefaults($.datepicker.regional['hi']);
+});
diff --git a/inc/lang/hr/jquery.ui.datepicker.js b/inc/lang/hr/jquery.ui.datepicker.js
new file mode 100644
index 000000000..2fe37b64b
--- /dev/null
+++ b/inc/lang/hr/jquery.ui.datepicker.js
@@ -0,0 +1,23 @@
+/* Croatian i18n for the jQuery UI date picker plugin. */
+/* Written by Vjekoslav Nesek. */
+jQuery(function($){
+ $.datepicker.regional['hr'] = {
+ closeText: 'Zatvori',
+ prevText: '&#x3C;',
+ nextText: '&#x3E;',
+ currentText: 'Danas',
+ monthNames: ['Siječanj','Veljača','Ožujak','Travanj','Svibanj','Lipanj',
+ 'Srpanj','Kolovoz','Rujan','Listopad','Studeni','Prosinac'],
+ monthNamesShort: ['Sij','Velj','Ožu','Tra','Svi','Lip',
+ 'Srp','Kol','Ruj','Lis','Stu','Pro'],
+ dayNames: ['Nedjelja','Ponedjeljak','Utorak','Srijeda','Četvrtak','Petak','Subota'],
+ dayNamesShort: ['Ned','Pon','Uto','Sri','Čet','Pet','Sub'],
+ dayNamesMin: ['Ne','Po','Ut','Sr','Če','Pe','Su'],
+ weekHeader: 'Tje',
+ dateFormat: 'dd.mm.yy.',
+ firstDay: 1,
+ isRTL: false,
+ showMonthAfterYear: false,
+ yearSuffix: ''};
+ $.datepicker.setDefaults($.datepicker.regional['hr']);
+});
diff --git a/inc/lang/hu-formal/admin.txt b/inc/lang/hu-formal/admin.txt
new file mode 100644
index 000000000..b661bfb17
--- /dev/null
+++ b/inc/lang/hu-formal/admin.txt
@@ -0,0 +1,3 @@
+===== Beállítások =====
+
+Alább találja a DokuWiki-ben elérhető beállítási lehetőségek listáját. \ No newline at end of file
diff --git a/inc/lang/hu-formal/adminplugins.txt b/inc/lang/hu-formal/adminplugins.txt
new file mode 100644
index 000000000..b077521fb
--- /dev/null
+++ b/inc/lang/hu-formal/adminplugins.txt
@@ -0,0 +1 @@
+===== További bővítmények ===== \ No newline at end of file
diff --git a/inc/lang/hu-formal/backlinks.txt b/inc/lang/hu-formal/backlinks.txt
new file mode 100644
index 000000000..437eb2e25
--- /dev/null
+++ b/inc/lang/hu-formal/backlinks.txt
@@ -0,0 +1,3 @@
+====== Hivatkozások ======
+
+Mindazon oldalak listája, amelyek az aktuális oldalra hivatkoznak. \ No newline at end of file
diff --git a/inc/lang/hu-formal/conflict.txt b/inc/lang/hu-formal/conflict.txt
new file mode 100644
index 000000000..6718d67e6
--- /dev/null
+++ b/inc/lang/hu-formal/conflict.txt
@@ -0,0 +1,5 @@
+====== Újabb változat érhető el ======
+
+Az Ön által szerkesztett oldalnak már egy újabb változata érhető el. Ez akkor fordulhat elő, ha egy másik felhasználó módosította a dokumtemot, mialatt Ön is szerkesztette azt.
+
+Vizsgálja meg az alább látható eltéréseket, majd döntse el, melyik változatot tartja meg. Ha a "Mentés" gombot választja, az Ön verziója mentődik el. Kattintson a "Mégsem" gombra a jelenlegi változat megtartásához. \ No newline at end of file
diff --git a/inc/lang/hu-formal/denied.txt b/inc/lang/hu-formal/denied.txt
new file mode 100644
index 000000000..97abd632a
--- /dev/null
+++ b/inc/lang/hu-formal/denied.txt
@@ -0,0 +1,3 @@
+====== Hozzáférés megtadadva ======
+
+Sajnáljuk, de nincs joga a folytatáshoz. Talán elfelejtett bejelentkezni? \ No newline at end of file
diff --git a/inc/lang/hu-formal/diff.txt b/inc/lang/hu-formal/diff.txt
new file mode 100644
index 000000000..f922a504a
--- /dev/null
+++ b/inc/lang/hu-formal/diff.txt
@@ -0,0 +1,3 @@
+====== Eltérések ======
+
+Az oldal két változata közötti különbségek az alábbiak. \ No newline at end of file
diff --git a/inc/lang/hu-formal/draft.txt b/inc/lang/hu-formal/draft.txt
new file mode 100644
index 000000000..9233eacad
--- /dev/null
+++ b/inc/lang/hu-formal/draft.txt
@@ -0,0 +1,5 @@
+===== Piszkozatot találtam =====
+
+Az Ön ezen az oldalon végzett utolsó szerkesztési művelete helytelenül fejeződött be. A DokuWiki automatikusan elmentett egy piszkozatot az Ön munkája során. Alább láthatók az utolsó munkafázis mentett adatai.
+
+Kérjük, döntse el, hogy //helyreállítja-e// a befejezetlen módosításokat, vagy //törli// az automatikusan mentett piszkozatot, vagy //megszakítja// a szerkesztési folyamatot. \ No newline at end of file
diff --git a/inc/lang/hu-formal/edit.txt b/inc/lang/hu-formal/edit.txt
new file mode 100644
index 000000000..08f648ba6
--- /dev/null
+++ b/inc/lang/hu-formal/edit.txt
@@ -0,0 +1 @@
+Módosítsa az oldalt, majd kattintson a "Mentés" gombra. A wiki-szintaxishoz nézze meg a [[wiki:syntax|szintaxis]] oldalt. Kérjük, csak akkor módosítsa az oldalt, ha **tökéletesíteni**, **javítani** tudja. Amennyiben szeretne kipróbálni ezt-azt, a [[playground:playground|játszótéren]] megtanulhatja az első lépéseket. \ No newline at end of file
diff --git a/inc/lang/hu-formal/editrev.txt b/inc/lang/hu-formal/editrev.txt
new file mode 100644
index 000000000..2eca33c7a
--- /dev/null
+++ b/inc/lang/hu-formal/editrev.txt
@@ -0,0 +1,2 @@
+**A dokumentum egy korábbi változatát töltötte be!** Ha az oldalt elmenti, akkor egy új változat jön létre belőle.
+---- \ No newline at end of file
diff --git a/inc/lang/hu-formal/index.txt b/inc/lang/hu-formal/index.txt
new file mode 100644
index 000000000..0f2b18fd2
--- /dev/null
+++ b/inc/lang/hu-formal/index.txt
@@ -0,0 +1,3 @@
+====== Oldaltérkép (tartalom) ======
+
+Az összes elérhető oldal [[doku>namespaces|névterek]] szerint rendezett oldaltérképe. \ No newline at end of file
diff --git a/inc/lang/hu-formal/lang.php b/inc/lang/hu-formal/lang.php
new file mode 100644
index 000000000..a98bdc0d3
--- /dev/null
+++ b/inc/lang/hu-formal/lang.php
@@ -0,0 +1,27 @@
+<?php
+
+/**
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Marina Vladi <deldadam@gmail.com>
+ */
+$lang['encoding'] = 'utf-8';
+$lang['direction'] = 'ltr';
+$lang['doublequoteopening'] = '„';
+$lang['doublequoteclosing'] = '”';
+$lang['singlequoteopening'] = '‚';
+$lang['singlequoteclosing'] = '’';
+$lang['apostrophe'] = '’';
+$lang['btn_edit'] = 'Oldal módosítása';
+$lang['btn_source'] = 'Forrás megtekintése';
+$lang['btn_show'] = 'Oldal megtekintése';
+$lang['btn_create'] = 'Oldal létrehozása';
+$lang['btn_search'] = 'Keresés';
+$lang['btn_save'] = 'Mentés';
+$lang['btn_preview'] = 'Előnézet';
+$lang['btn_top'] = 'Oldal tetejére';
+$lang['btn_newer'] = '<< újabb';
+$lang['btn_older'] = 'régebbi >>';
+$lang['btn_revs'] = 'Korábbi változatok';
+$lang['btn_recent'] = 'Legújabb változások';
+$lang['btn_upload'] = 'Feltöltés';
diff --git a/inc/lang/hu/jquery.ui.datepicker.js b/inc/lang/hu/jquery.ui.datepicker.js
new file mode 100644
index 000000000..b28c268c1
--- /dev/null
+++ b/inc/lang/hu/jquery.ui.datepicker.js
@@ -0,0 +1,23 @@
+/* Hungarian initialisation for the jQuery UI date picker plugin. */
+/* Written by Istvan Karaszi (jquery@spam.raszi.hu). */
+jQuery(function($){
+ $.datepicker.regional['hu'] = {
+ closeText: 'bezár',
+ prevText: 'vissza',
+ nextText: 'előre',
+ currentText: 'ma',
+ monthNames: ['Január', 'Február', 'Március', 'Április', 'Május', 'Június',
+ 'Július', 'Augusztus', 'Szeptember', 'Október', 'November', 'December'],
+ monthNamesShort: ['Jan', 'Feb', 'Már', 'Ápr', 'Máj', 'Jún',
+ 'Júl', 'Aug', 'Szep', 'Okt', 'Nov', 'Dec'],
+ dayNames: ['Vasárnap', 'Hétfő', 'Kedd', 'Szerda', 'Csütörtök', 'Péntek', 'Szombat'],
+ dayNamesShort: ['Vas', 'Hét', 'Ked', 'Sze', 'Csü', 'Pén', 'Szo'],
+ dayNamesMin: ['V', 'H', 'K', 'Sze', 'Cs', 'P', 'Szo'],
+ weekHeader: 'Hét',
+ dateFormat: 'yy.mm.dd.',
+ firstDay: 1,
+ isRTL: false,
+ showMonthAfterYear: true,
+ yearSuffix: ''};
+ $.datepicker.setDefaults($.datepicker.regional['hu']);
+});
diff --git a/inc/lang/hu/lang.php b/inc/lang/hu/lang.php
index 2622934c2..a0aef9447 100644
--- a/inc/lang/hu/lang.php
+++ b/inc/lang/hu/lang.php
@@ -12,6 +12,7 @@
* @author David Szabo <szabo.david@gyumolcstarhely.hu>
* @author Marton Sebok <sebokmarton@gmail.com>
* @author Serenity87HUN <anikototh87@gmail.com>
+ * @author Marina Vladi <deldadam@gmail.com>
*/
$lang['encoding'] = 'utf-8';
$lang['direction'] = 'ltr';
@@ -295,6 +296,7 @@ $lang['i_policy'] = 'Kezdeti hozzáférési lista házirend';
$lang['i_pol0'] = 'Nyitott wiki (mindenki olvashatja, írhatja és fájlokat tölthet fel)';
$lang['i_pol1'] = 'Publikus wiki (mindenki olvashatja, de csak regisztrált felhasználók írhatják és tölthetnek fel fájlokat)';
$lang['i_pol2'] = 'Zárt wiki (csak regisztrált felhasználók olvashatják, írhatják és tölthetnek fel fájlokat)';
+$lang['i_allowreg'] = 'A felhasználók saját maguk is regisztrálhatnak';
$lang['i_retry'] = 'Újra';
$lang['i_license'] = 'Kérlek, válassz licencet a feltöltött tartalomhoz:';
$lang['i_license_none'] = 'Ne jelenítsen meg licenc információt';
@@ -332,3 +334,7 @@ $lang['media_perm_read'] = 'Sajnáljuk, nincs jogod a fájlok olvasásáho
$lang['media_perm_upload'] = 'Sajnáljuk, nincs jogod a feltöltéshez.';
$lang['media_update'] = 'Új verzió feltöltése';
$lang['media_restore'] = 'Ezen verzió visszaállítása';
+$lang['currentns'] = 'Aktuális névtér';
+$lang['searchresult'] = 'Keresés eredménye';
+$lang['plainhtml'] = 'Sima HTML';
+$lang['wikimarkup'] = 'Wiki-jelölőnyelv';
diff --git a/inc/lang/id/adminplugins.txt b/inc/lang/id/adminplugins.txt
new file mode 100644
index 000000000..2a91b3d1a
--- /dev/null
+++ b/inc/lang/id/adminplugins.txt
@@ -0,0 +1 @@
+=====Plugin Tambahan===== \ No newline at end of file
diff --git a/inc/lang/id/jquery.ui.datepicker.js b/inc/lang/id/jquery.ui.datepicker.js
new file mode 100644
index 000000000..6327fa60c
--- /dev/null
+++ b/inc/lang/id/jquery.ui.datepicker.js
@@ -0,0 +1,23 @@
+/* Indonesian initialisation for the jQuery UI date picker plugin. */
+/* Written by Deden Fathurahman (dedenf@gmail.com). */
+jQuery(function($){
+ $.datepicker.regional['id'] = {
+ closeText: 'Tutup',
+ prevText: '&#x3C;mundur',
+ nextText: 'maju&#x3E;',
+ currentText: 'hari ini',
+ monthNames: ['Januari','Februari','Maret','April','Mei','Juni',
+ 'Juli','Agustus','September','Oktober','Nopember','Desember'],
+ monthNamesShort: ['Jan','Feb','Mar','Apr','Mei','Jun',
+ 'Jul','Agus','Sep','Okt','Nop','Des'],
+ dayNames: ['Minggu','Senin','Selasa','Rabu','Kamis','Jumat','Sabtu'],
+ dayNamesShort: ['Min','Sen','Sel','Rab','kam','Jum','Sab'],
+ dayNamesMin: ['Mg','Sn','Sl','Rb','Km','jm','Sb'],
+ weekHeader: 'Mg',
+ dateFormat: 'dd/mm/yy',
+ firstDay: 0,
+ isRTL: false,
+ showMonthAfterYear: false,
+ yearSuffix: ''};
+ $.datepicker.setDefaults($.datepicker.regional['id']);
+});
diff --git a/inc/lang/id/lang.php b/inc/lang/id/lang.php
index 07df9d89e..5cb5cb6ea 100644
--- a/inc/lang/id/lang.php
+++ b/inc/lang/id/lang.php
@@ -1,11 +1,13 @@
<?php
+
/**
- * Indonesian language file
- *
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
* @author mubaidillah <mubaidillah@gmail.com>
* @author Irwan Butar Butar <irwansah.putra@gmail.com>
* @author Yustinus Waruwu <juswaruwu@gmail.com>
+ * @author zamroni <therons@ymail.com>
+ * @author umriya afini <bigdream.power@gmail.com>
*/
$lang['encoding'] = 'utf-8';
$lang['direction'] = 'ltr';
@@ -39,12 +41,16 @@ $lang['btn_back'] = 'Kembali';
$lang['btn_backlink'] = 'Backlinks';
$lang['btn_backtomedia'] = 'Kembali ke Pilihan Mediafile';
$lang['btn_subscribe'] = 'Ikuti Perubahan';
-$lang['btn_unsubscribe'] = 'Berhenti Ikuti Perubahan';
$lang['btn_profile'] = 'Ubah Profil';
$lang['btn_reset'] = 'Reset';
+$lang['btn_resendpwd'] = 'Atur password baru';
$lang['btn_draft'] = 'Edit draft';
+$lang['btn_recover'] = 'Cadangkan draf';
$lang['btn_draftdel'] = 'Hapus draft';
+$lang['btn_revert'] = 'Kembalikan';
$lang['btn_register'] = 'Daftar';
+$lang['btn_apply'] = 'Terapkan';
+$lang['btn_deleteuser'] = 'Hapus Akun Saya';
$lang['loggedinas'] = 'Login sebagai ';
$lang['user'] = 'Username';
$lang['pass'] = 'Password';
@@ -56,6 +62,7 @@ $lang['fullname'] = 'Nama lengkap';
$lang['email'] = 'E-Mail';
$lang['profile'] = 'Profil User';
$lang['badlogin'] = 'Maaf, username atau password salah.';
+$lang['badpassconfirm'] = 'Maaf, password salah';
$lang['minoredit'] = 'Perubahan Minor';
$lang['draftdate'] = 'Simpan draft secara otomatis';
$lang['regmissing'] = 'Maaf, Anda harus mengisi semua field.';
@@ -71,20 +78,43 @@ $lang['profna'] = 'Wiki ini tidak mengijinkan perubahan profil.';
$lang['profnochange'] = 'Tidak ada perubahan.';
$lang['profnoempty'] = 'Mohon mengisikan nama atau alamat email.';
$lang['profchanged'] = 'Profil User berhasil diubah.';
+$lang['profdeleteuser'] = 'Hapus Akun';
+$lang['profdeleted'] = 'Akun anda telah dihapus dari wiki ini';
+$lang['profconfdelete'] = 'Saya berharap menghapus akun saya dari wiki ini.
+Aksi ini tidak bisa diselesaikan.';
+$lang['profconfdeletemissing'] = 'Knfirmasi check box tidak tercentang';
$lang['pwdforget'] = 'Lupa Password? Dapatkan yang baru';
$lang['resendna'] = 'Wiki ini tidak mendukung pengiriman ulang password.';
+$lang['resendpwd'] = 'Atur password baru';
$lang['resendpwdmissing'] = 'Maaf, Anda harus mengisikan semua field.';
$lang['resendpwdnouser'] = 'Maaf, user ini tidak ditemukan.';
$lang['resendpwdbadauth'] = 'Maaf, kode autentikasi tidak valid. Pastikan Anda menggunakan keseluruhan link konfirmasi.';
$lang['resendpwdconfirm'] = 'Link konfirmasi telah dikirim melalui email.';
$lang['resendpwdsuccess'] = 'Password baru Anda telah dikirim melalui email.';
+$lang['searchmedia'] = 'Cari nama file:';
$lang['txt_upload'] = 'File yang akan diupload';
$lang['txt_filename'] = 'Masukkan nama wiki (opsional)';
$lang['txt_overwrt'] = 'File yang telah ada akan ditindih';
$lang['lockedby'] = 'Sedang dikunci oleh';
$lang['lockexpire'] = 'Penguncian artikel sampai dengan';
-$lang['js']['willexpire'] = 'Halaman yang sedang Anda kunci akan berakhir dalam waktu kurang lebih satu menit.\nUntuk menghindari konflik, gunakan tombol Preview untuk me-reset timer pengunci.';
+$lang['js']['willexpire'] = 'Halaman yang sedang Anda kunci akan berakhir dalam waktu kurang lebih satu menit.\nUntuk menghindari konflik, gunakan tombol Preview untuk me-reset timer pengunci.';
$lang['js']['notsavedyet'] = 'Perubahan yang belum disimpan akan hilang.\nYakin akan dilanjutkan?';
+$lang['js']['searchmedia'] = 'Cari file';
+$lang['js']['keepopen'] = 'Biarkan window terbuka dalam pemilihan';
+$lang['js']['hidedetails'] = 'Sembunyikan detil';
+$lang['js']['mediatitle'] = 'Pengaturan Link';
+$lang['js']['mediasize'] = 'Ukuran gambar';
+$lang['js']['mediaclose'] = 'Tutup';
+$lang['js']['mediadisplayimg'] = 'Lihat gambar';
+$lang['js']['mediadisplaylnk'] = 'Lihat hanya link';
+$lang['js']['nosmblinks'] = 'Link ke share Windows hanya bekerja di Microsoft Internet Explorer.
+Anda masih dapat mengcopy and paste linknya.';
+$lang['js']['del_confirm'] = 'Hapus tulisan ini?';
+$lang['js']['media_select'] = 'Pilih file...';
+$lang['js']['media_upload_btn'] = 'Unggah';
+$lang['js']['media_done_btn'] = 'Selesai';
+$lang['js']['media_drop'] = 'Tarik file disini untuk mengunggah';
+$lang['js']['media_cancel'] = 'Buang';
$lang['rssfailed'] = 'Error terjadi saat mengambil feed: ';
$lang['nothingfound'] = 'Tidak menemukan samasekali.';
$lang['mediaselect'] = 'Pilihan Mediafile';
@@ -96,13 +126,13 @@ $lang['uploadexist'] = 'File telah ada. Tidak mengerjakan apa-apa.';
$lang['uploadbadcontent'] = 'Isi file yang diupload tidak cocok dengan ekstensi file %s.';
$lang['uploadspam'] = 'File yang diupload diblok oleh spam blacklist.';
$lang['uploadxss'] = 'File yang diupload diblok karena kemungkinan isi yang berbahaya.';
+$lang['uploadsize'] = 'File yang diupload terlalu besar. (max.%)';
$lang['deletesucc'] = 'File "%s" telah dihapus.';
$lang['deletefail'] = '"%s" tidak dapat dihapus - cek hak aksesnya.';
$lang['mediainuse'] = 'File "%s" belum dihapus - file ini sedang digunakan.';
$lang['namespaces'] = 'Namespaces';
$lang['mediafiles'] = 'File tersedia didalam';
-$lang['js']['keepopen'] = 'Biarkan window terbuka dalam pemilihan';
-$lang['js']['hidedetails'] = 'Sembunyikan detil';
+$lang['accessdenied'] = 'Anda tidak diperbolehkan melihat halaman ini';
$lang['mediausage'] = 'Gunakan sintaks berikut untuk me-refer ke file ini';
$lang['mediaview'] = 'Tampilkan file asli';
$lang['mediaroot'] = 'root';
@@ -132,7 +162,7 @@ $lang['mail_newpage'] = 'Halaman ditambahkan:';
$lang['mail_changed'] = 'Halaman diubah:';
$lang['mail_new_user'] = 'User baru:';
$lang['mail_upload'] = 'Berkas di-upload:';
-$lang['js']['nosmblinks'] = "Link ke share Windows hanya bekerja di Microsoft Internet Explorer.\nAnda masih dapat mengcopy and paste linknya.";
+$lang['pages_changes'] = 'Halaman';
$lang['qb_bold'] = 'Tebal';
$lang['qb_italic'] = 'Miring';
$lang['qb_underl'] = 'Garis Bawah';
@@ -152,7 +182,6 @@ $lang['qb_media'] = 'Tambahkan gambar atau file lain';
$lang['qb_sig'] = 'Sisipkan tanda tangan';
$lang['qb_smileys'] = 'Smileys';
$lang['qb_chars'] = 'Karakter Khusus';
-$lang['js']['del_confirm'] = 'Hapus tulisan ini?';
$lang['admin_register'] = 'Tambah user baru';
$lang['metaedit'] = 'Edit Metadata';
$lang['metasaveerr'] = 'Gagal menulis metadata';
@@ -168,11 +197,6 @@ $lang['img_copyr'] = 'Hakcipta';
$lang['img_format'] = 'Format';
$lang['img_camera'] = 'Kamera';
$lang['img_keywords'] = 'Katakunci';
-$lang['subscribe_success'] = 'Penambahan %s ke data subsripsi untuk %s';
-$lang['subscribe_error'] = 'Gagal menambahkan %s ke data subsripsi untuk %s';
-$lang['subscribe_noaddress'] = 'Tidak ditemukan alamat yang berhubungan dengan login Anda, Anda tidak dapat menambahkan daftar subscription';
-$lang['unsubscribe_success'] = 'Menghapus %s dari daftar subscription untuk %s';
-$lang['unsubscribe_error'] = 'Gagal menghapus %s dari daftar subscription untuk %s';
$lang['authtempfail'] = 'Autentikasi user saat ini sedang tidak dapat digunakan. Jika kejadian ini berlanjut, Harap informasikan admin Wiki Anda.';
$lang['i_chooselang'] = 'Pilih bahasa';
$lang['i_installer'] = 'Instalasi DokuWiki';
diff --git a/inc/lang/is/jquery.ui.datepicker.js b/inc/lang/is/jquery.ui.datepicker.js
new file mode 100644
index 000000000..4fc429888
--- /dev/null
+++ b/inc/lang/is/jquery.ui.datepicker.js
@@ -0,0 +1,23 @@
+/* Icelandic initialisation for the jQuery UI date picker plugin. */
+/* Written by Haukur H. Thorsson (haukur@eskill.is). */
+jQuery(function($){
+ $.datepicker.regional['is'] = {
+ closeText: 'Loka',
+ prevText: '&#x3C; Fyrri',
+ nextText: 'Næsti &#x3E;',
+ currentText: 'Í dag',
+ monthNames: ['Janúar','Febrúar','Mars','Apríl','Maí','Júní',
+ 'Júlí','Ágúst','September','Október','Nóvember','Desember'],
+ monthNamesShort: ['Jan','Feb','Mar','Apr','Maí','Jún',
+ 'Júl','Ágú','Sep','Okt','Nóv','Des'],
+ dayNames: ['Sunnudagur','Mánudagur','Þriðjudagur','Miðvikudagur','Fimmtudagur','Föstudagur','Laugardagur'],
+ dayNamesShort: ['Sun','Mán','Þri','Mið','Fim','Fös','Lau'],
+ dayNamesMin: ['Su','Má','Þr','Mi','Fi','Fö','La'],
+ weekHeader: 'Vika',
+ dateFormat: 'dd.mm.yy',
+ firstDay: 0,
+ isRTL: false,
+ showMonthAfterYear: false,
+ yearSuffix: ''};
+ $.datepicker.setDefaults($.datepicker.regional['is']);
+});
diff --git a/inc/lang/is/lang.php b/inc/lang/is/lang.php
index 78ae7e249..fbc7e9049 100644
--- a/inc/lang/is/lang.php
+++ b/inc/lang/is/lang.php
@@ -44,7 +44,6 @@ $lang['btn_back'] = 'Til baka';
$lang['btn_backlink'] = 'Hvað tengist hingað';
$lang['btn_backtomedia'] = 'Aftur til miðlaskrá';
$lang['btn_subscribe'] = 'Vakta';
-$lang['btn_unsubscribe'] = 'Afvakta';
$lang['btn_profile'] = 'Uppfæra notanda';
$lang['btn_reset'] = 'Endurstilla';
$lang['btn_draft'] = 'Breyta uppkasti';
diff --git a/inc/lang/it/jquery.ui.datepicker.js b/inc/lang/it/jquery.ui.datepicker.js
new file mode 100644
index 000000000..a01f043f8
--- /dev/null
+++ b/inc/lang/it/jquery.ui.datepicker.js
@@ -0,0 +1,23 @@
+/* Italian initialisation for the jQuery UI date picker plugin. */
+/* Written by Antonello Pasella (antonello.pasella@gmail.com). */
+jQuery(function($){
+ $.datepicker.regional['it'] = {
+ closeText: 'Chiudi',
+ prevText: '&#x3C;Prec',
+ nextText: 'Succ&#x3E;',
+ currentText: 'Oggi',
+ monthNames: ['Gennaio','Febbraio','Marzo','Aprile','Maggio','Giugno',
+ 'Luglio','Agosto','Settembre','Ottobre','Novembre','Dicembre'],
+ monthNamesShort: ['Gen','Feb','Mar','Apr','Mag','Giu',
+ 'Lug','Ago','Set','Ott','Nov','Dic'],
+ dayNames: ['Domenica','Lunedì','Martedì','Mercoledì','Giovedì','Venerdì','Sabato'],
+ dayNamesShort: ['Dom','Lun','Mar','Mer','Gio','Ven','Sab'],
+ dayNamesMin: ['Do','Lu','Ma','Me','Gi','Ve','Sa'],
+ weekHeader: 'Sm',
+ dateFormat: 'dd/mm/yy',
+ firstDay: 1,
+ isRTL: false,
+ showMonthAfterYear: false,
+ yearSuffix: ''};
+ $.datepicker.setDefaults($.datepicker.regional['it']);
+});
diff --git a/inc/lang/it/lang.php b/inc/lang/it/lang.php
index 5300dfd2a..a2bde3b60 100644
--- a/inc/lang/it/lang.php
+++ b/inc/lang/it/lang.php
@@ -2,7 +2,7 @@
/**
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
- *
+ *
* @author Giorgio Vecchiocattivi <giorgio@vecchio.it>
* @author Roberto Bolli [http://www.rbnet.it/]
* @author Silvia Sargentoni <polinnia@tin.it>
@@ -16,6 +16,7 @@
* @author Matteo Pasotti <matteo@xquiet.eu>
* @author snarchio@gmail.com
* @author Edmondo Di Tucci <snarchio@gmail.com>
+ * @author Claudio Lanconelli <lancos@libero.it>
*/
$lang['encoding'] = 'utf-8';
$lang['direction'] = 'ltr';
@@ -298,6 +299,7 @@ $lang['i_policy'] = 'Regole di accesso iniziali';
$lang['i_pol0'] = 'Wiki Aperto (lettura, scrittura, caricamento file per tutti)';
$lang['i_pol1'] = 'Wiki Pubblico (lettura per tutti, scrittura e caricamento file per gli utenti registrati)';
$lang['i_pol2'] = 'Wiki Chiuso (lettura, scrittura, caricamento file solamente per gli utenti registrati)';
+$lang['i_allowreg'] = 'Permetti agli utenti di registrarsi';
$lang['i_retry'] = 'Riprova';
$lang['i_license'] = 'Per favore scegli la licenza sotto cui vuoi rilasciare il contenuto:';
$lang['i_license_none'] = 'Non mostrare informazioni sulla licenza';
@@ -335,3 +337,4 @@ $lang['media_perm_read'] = 'Spiacente, non hai abbastanza privilegi per le
$lang['media_perm_upload'] = 'Spiacente, non hai abbastanza privilegi per caricare files.';
$lang['media_update'] = 'Carica nuova versione';
$lang['media_restore'] = 'Ripristina questa versione';
+$lang['searchresult'] = 'Risultati della ricerca';
diff --git a/inc/lang/ja/jquery.ui.datepicker.js b/inc/lang/ja/jquery.ui.datepicker.js
new file mode 100644
index 000000000..4d0b63c77
--- /dev/null
+++ b/inc/lang/ja/jquery.ui.datepicker.js
@@ -0,0 +1,23 @@
+/* Japanese initialisation for the jQuery UI date picker plugin. */
+/* Written by Kentaro SATO (kentaro@ranvis.com). */
+jQuery(function($){
+ $.datepicker.regional['ja'] = {
+ closeText: '閉じる',
+ prevText: '&#x3C;前',
+ nextText: '次&#x3E;',
+ currentText: '今日',
+ monthNames: ['1月','2月','3月','4月','5月','6月',
+ '7月','8月','9月','10月','11月','12月'],
+ monthNamesShort: ['1月','2月','3月','4月','5月','6月',
+ '7月','8月','9月','10月','11月','12月'],
+ dayNames: ['日曜日','月曜日','火曜日','水曜日','木曜日','金曜日','土曜日'],
+ dayNamesShort: ['日','月','火','水','木','金','土'],
+ dayNamesMin: ['日','月','火','水','木','金','土'],
+ weekHeader: '週',
+ dateFormat: 'yy/mm/dd',
+ firstDay: 0,
+ isRTL: false,
+ showMonthAfterYear: true,
+ yearSuffix: '年'};
+ $.datepicker.setDefaults($.datepicker.regional['ja']);
+});
diff --git a/inc/lang/ja/lang.php b/inc/lang/ja/lang.php
index b032e1ce5..1f53b0a90 100644
--- a/inc/lang/ja/lang.php
+++ b/inc/lang/ja/lang.php
@@ -294,6 +294,7 @@ $lang['i_policy'] = 'ACL初期設定';
$lang['i_pol0'] = 'オープン Wiki(全ての人に、閲覧・書き込み・アップロードを許可)';
$lang['i_pol1'] = 'パブリック Wiki(閲覧は全ての人が可能、書き込み・アップロードは登録ユーザーのみ)';
$lang['i_pol2'] = 'クローズド Wiki (登録ユーザーにのみ使用を許可)';
+$lang['i_allowreg'] = 'ユーザ自身で登録可能';
$lang['i_retry'] = '再試行';
$lang['i_license'] = 'あなたが作成したコンテンツが属するライセンスを選択してください:';
$lang['i_license_none'] = 'ライセンス情報を表示しません。';
@@ -331,3 +332,7 @@ $lang['media_perm_read'] = 'ファイルを閲覧する権限がありま
$lang['media_perm_upload'] = 'ファイルをアップロードする権限がありません。';
$lang['media_update'] = '新しいバージョンをアップロード';
$lang['media_restore'] = 'このバージョンを復元';
+$lang['currentns'] = '現在の名前空間';
+$lang['searchresult'] = '検索結果';
+$lang['plainhtml'] = 'プレーンHTML';
+$lang['wikimarkup'] = 'Wikiマークアップ';
diff --git a/inc/lang/ja/subscr_digest.txt b/inc/lang/ja/subscr_digest.txt
index ff5fc8d47..b6c91a3a6 100644
--- a/inc/lang/ja/subscr_digest.txt
+++ b/inc/lang/ja/subscr_digest.txt
@@ -16,6 +16,6 @@
@SUBSCRIBE@
ページと名前空間の変更に対する購読を解除してください。
---
+--
このメールは次の DokuWiki によって生成されました:
@DOKUWIKIURL@ \ No newline at end of file
diff --git a/inc/lang/ja/subscr_list.txt b/inc/lang/ja/subscr_list.txt
index 0d225af58..9869fb811 100644
--- a/inc/lang/ja/subscr_list.txt
+++ b/inc/lang/ja/subscr_list.txt
@@ -14,6 +14,6 @@
@SUBSCRIBE@
ページと名前空間の変更に対する購読を解除してください。
---
+--
このメールは次の DokuWiki によって生成されました:
@DOKUWIKIURL@ \ No newline at end of file
diff --git a/inc/lang/ja/subscr_single.txt b/inc/lang/ja/subscr_single.txt
index b02352238..4620f73d6 100644
--- a/inc/lang/ja/subscr_single.txt
+++ b/inc/lang/ja/subscr_single.txt
@@ -19,6 +19,6 @@
@SUBSCRIBE@
ページと名前空間の変更に対する購読を解除してください。
---
+--
このメールは次の DokuWiki によって生成されました:
@DOKUWIKIURL@ \ No newline at end of file
diff --git a/inc/lang/kk/jquery.ui.datepicker.js b/inc/lang/kk/jquery.ui.datepicker.js
new file mode 100644
index 000000000..dcd6a65df
--- /dev/null
+++ b/inc/lang/kk/jquery.ui.datepicker.js
@@ -0,0 +1,23 @@
+/* Kazakh (UTF-8) initialisation for the jQuery UI date picker plugin. */
+/* Written by Dmitriy Karasyov (dmitriy.karasyov@gmail.com). */
+jQuery(function($){
+ $.datepicker.regional['kk'] = {
+ closeText: 'Жабу',
+ prevText: '&#x3C;Алдыңғы',
+ nextText: 'Келесі&#x3E;',
+ currentText: 'Бүгін',
+ monthNames: ['Қаңтар','Ақпан','Наурыз','Сәуір','Мамыр','Маусым',
+ 'Шілде','Тамыз','Қыркүйек','Қазан','Қараша','Желтоқсан'],
+ monthNamesShort: ['Қаң','Ақп','Нау','Сәу','Мам','Мау',
+ 'Шіл','Там','Қыр','Қаз','Қар','Жел'],
+ dayNames: ['Жексенбі','Дүйсенбі','Сейсенбі','Сәрсенбі','Бейсенбі','Жұма','Сенбі'],
+ dayNamesShort: ['жкс','дсн','ссн','срс','бсн','жма','снб'],
+ dayNamesMin: ['Жк','Дс','Сс','Ср','Бс','Жм','Сн'],
+ weekHeader: 'Не',
+ dateFormat: 'dd.mm.yy',
+ firstDay: 1,
+ isRTL: false,
+ showMonthAfterYear: false,
+ yearSuffix: ''};
+ $.datepicker.setDefaults($.datepicker.regional['kk']);
+});
diff --git a/inc/lang/km/jquery.ui.datepicker.js b/inc/lang/km/jquery.ui.datepicker.js
new file mode 100644
index 000000000..f9c4e3a02
--- /dev/null
+++ b/inc/lang/km/jquery.ui.datepicker.js
@@ -0,0 +1,23 @@
+/* Khmer initialisation for the jQuery calendar extension. */
+/* Written by Chandara Om (chandara.teacher@gmail.com). */
+jQuery(function($){
+ $.datepicker.regional['km'] = {
+ closeText: 'ធ្វើ​រួច',
+ prevText: 'មុន',
+ nextText: 'បន្ទាប់',
+ currentText: 'ថ្ងៃ​នេះ',
+ monthNames: ['មករា','កុម្ភៈ','មីនា','មេសា','ឧសភា','មិថុនា',
+ 'កក្កដា','សីហា','កញ្ញា','តុលា','វិច្ឆិកា','ធ្នូ'],
+ monthNamesShort: ['មករា','កុម្ភៈ','មីនា','មេសា','ឧសភា','មិថុនា',
+ 'កក្កដា','សីហា','កញ្ញា','តុលា','វិច្ឆិកា','ធ្នូ'],
+ dayNames: ['អាទិត្យ', 'ចន្ទ', 'អង្គារ', 'ពុធ', 'ព្រហស្បតិ៍', 'សុក្រ', 'សៅរ៍'],
+ dayNamesShort: ['អា', 'ច', 'អ', 'ពុ', 'ព្រហ', 'សុ', 'សៅ'],
+ dayNamesMin: ['អា', 'ច', 'អ', 'ពុ', 'ព្រហ', 'សុ', 'សៅ'],
+ weekHeader: 'សប្ដាហ៍',
+ dateFormat: 'dd-mm-yy',
+ firstDay: 1,
+ isRTL: false,
+ showMonthAfterYear: false,
+ yearSuffix: ''};
+ $.datepicker.setDefaults($.datepicker.regional['km']);
+});
diff --git a/inc/lang/km/lang.php b/inc/lang/km/lang.php
index 8c65dbf7c..4800b6c23 100644
--- a/inc/lang/km/lang.php
+++ b/inc/lang/km/lang.php
@@ -36,7 +36,6 @@ $lang['btn_back'] = 'ត្រឡប់';
$lang['btn_backlink'] = 'ខ្សែចំណងក្រោយ';
$lang['btn_backtomedia'] = 'ទៅប្រព័នឯកសាវិញ';
$lang['btn_subscribe'] = 'ដាក់ដំណឹងផ្លស់ប្តូរ';
-$lang['btn_unsubscribe'] = 'ដកដំណឹងផ្លស់ប្តូរ';
$lang['btn_profile'] = 'កែប្រវត្តិរូប';
$lang['btn_reset'] = 'កមណត់ឡើងរិញ';
$lang['btn_draft'] = 'កែគំរោង';
@@ -140,8 +139,6 @@ $lang['mail_changed'] = 'ទំព័រប្រែប្រួល';
$lang['mail_new_user'] = 'អ្នកប្រើថ្មី';
$lang['mail_upload'] = 'រុញអក្សាលើង';
-$lang['nosmblinks'] = 'ខ្សែបន្តទៅ «Windows share» ប្រើបានក្នុង «Microsoft IE»។ អ្នកអាច កាត់ឬបិត ខ្សែនេះ។';
-
$lang['qb_bold'] = 'ឃ្វាមក្រស';
$lang['qb_italic'] = 'ឃ្វាមជ្រៀង';
$lang['qb_underl'] = 'ឃ្វាម';
@@ -165,13 +162,6 @@ $lang['qb_chars'] = 'អក្ខរៈពិសេស';
$lang['js']['del_confirm']= 'លុប';
$lang['admin_register']= 'តែមអ្នកប្រើ';//'Add new user';
-$lang['spell_start'] = 'ពិនិត្យអក្ខរាវិរុទ្ធ';//'Check Spelling';
-$lang['spell_stop'] = 'បណ្តកំរែ';
-$lang['spell_wait'] = 'សូមចាំ';//'Please wait...';
-$lang['spell_noerr'] = 'ឥតមានខុះទេ';
-$lang['spell_nosug'] = 'ឥតមានយោបល់';
-$lang['spell_change']= 'ដូរជំនួស';//'Change';
-
$lang['metaedit'] = 'កែទិន្នន័យអរូប';//'Edit Metadata';
$lang['metasaveerr'] = 'ពំអាចកត់រទិន្នន័យអរូប';//'Writing metadata failed';
$lang['metasaveok'] = 'ទិន្នន័យអរូប';
@@ -187,12 +177,6 @@ $lang['img_format'] = 'ធុនប្រភេទ';
$lang['img_camera'] = 'គ្រឿងថត';
$lang['img_keywords']= 'មេពាក្ស';//'Keywords';
-$lang['subscribe_success'] = ' ដកថែម %s ចូលបញ្ជីបរិវិសកមចំពោះ %s';
-$lang['subscribe_error'] = 'មានកំហុសពេលបន្ថែម %s ចូលបញ្ជីបរិវិសកមចំពោះ %s';
-$lang['subscribe_noaddress']= 'ឥតមានអាសយដ្ឋាន អ្នកមិនអាចកត់ចុល';
-$lang['unsubscribe_success']= 'ដក %s ចេញពីបញ្ជីបរិវិសកមចំពោះ %s';
-$lang['unsubscribe_error'] = 'មានកំហុសពេលដក %s​ ចេញពីបញ្ជីបរិវិសកមចំពោះ %s';
-
/* auth.class language support */
$lang['authtempfail'] = 'ការផ្ទៀងផ្ទាត់​ភាព​​ត្រឹមត្រូវឥតដំនេ។ ប្រើ ....';
diff --git a/inc/lang/ko/denied.txt b/inc/lang/ko/denied.txt
index cff844bf4..cf0b294a4 100644
--- a/inc/lang/ko/denied.txt
+++ b/inc/lang/ko/denied.txt
@@ -1,3 +1,3 @@
====== 권한 거절 ======
-죄송하지만 계속할 수 있는 권한이 없습니다. 로그인하세요. \ No newline at end of file
+죄송하지만 계속할 수 있는 권한이 없습니다. 로그인을 잊으셨나요? \ No newline at end of file
diff --git a/inc/lang/ko/editrev.txt b/inc/lang/ko/editrev.txt
index 8d3aeb813..530b38d25 100644
--- a/inc/lang/ko/editrev.txt
+++ b/inc/lang/ko/editrev.txt
@@ -1,2 +1,2 @@
-**문서의 이전 판을 선택했습니다!** 저장하면 이 데이터로 새 판을 만듭니다.
+**문서의 이전 판을 선택했습니다!** 저장하면 이 자료로 새 판을 만듭니다.
---- \ No newline at end of file
diff --git a/inc/lang/ko/install.html b/inc/lang/ko/install.html
index 886ed2d30..ecc0d3caa 100644
--- a/inc/lang/ko/install.html
+++ b/inc/lang/ko/install.html
@@ -1,10 +1,22 @@
-<p>이 페이지는 <a href="http://dokuwiki.org">Dokuwiki</a> 설치와 환경 설정을 도와줍니다.
-설치 과정에 대한 더 자세한 정보는 <a href="http://dokuwiki.org/ko:installer">관련 문서</a>를 참고하시기 바랍니다.</p>
+<p>이 페이지는 <a href="http://dokuwiki.org">도쿠위키</a>의 첫
+설치와 환경 설정을 도와줍니다. 이 설치 프로그램에 대한 자세한 정보는
+<a href="http://dokuwiki.org/ko:installer">설명문 페이지</a>에서
+볼 수 있습니다.</p>
-<p>DokuWiki는 위키 문서와 문서와 관련된 정보(예를 들어 그림, 검색 색인, 이전 판 문서)를 저장하기 위해 일반적인 텍스트 파일을 사용합니다. 정상적으로 DokuWiki를 사용하려면 이 파일을 담고 있는 디렉토리에 대한 쓰기 권한을 가지고 있어야 합니다.
-현재 설치 과정 중에는 디렉토리 권한 설정이 불가능합니다. 보통 직접 셸 명령어를 사용하거나, 호스팅을 사용한다면 FTP나 호스팅 제어판(예를 들어 CPanel)을 사용해서 설정해야 합니다.</p>
+<p>도쿠위키는 위키 문서와 해당 문서와 관련된 정보(예를 들어 그림,
+검색 색인, 이전 판 문서 등)를 저장하기 위해 일반적인 텍스트 파일을
+사용합니다. 성공적으로 작동하려면 도쿠위키는 이 파일을 담고
+있는 디렉토리에 대한 쓰기 권한이 <strong>있어야</strong> 합니다.
+이 설치 프로그램은 디렉토리 권한을 설정할 수 없습니다. 보통
+직접 명령 셸에 수행하거나 호스팅을 사용한다면, FTP나 호스팅
+제어판(예를 들어 CPanel)을 통해 수행해야 합니다.</p>
-<p>현재 설치 과정중에 관리자로 로그인 후 DokuWiki의 관리 메뉴(플러그인 설치, 사용자 관리, 위키 문서 접근 권한 관리, 옵션 설정)를 가능하게 <acronym title="접근 제어 목록">ACL</acronym>에 대한 환경 설정을 수행합니다.
-DokuWiki가 동작하는데 필요한 사항은 아니지만, 어쨌든 더 쉽게 관리자가 관리할 수 있도록 해줍니다.</p>
+<p>이 설치 프로그램은 관리자로 로그인하고 나서 플러그인 설치, 사용자 관리,
+위키 문서로의 접근 관리와 환경 설정을 바꾸기 위한 도쿠위키의 관리 메뉴에
+접근할 수 있는, <acronym title="access control list; 접근 제어 목록">ACL</acronym>에
+대한 도쿠위키 환경을 설정합니다. 도쿠위키가 작동하는데 필요하지 않지만,
+도쿠위키를 쉽게 관리할 수 있도록 해줍니다.</p>
-<p>숙련된 사용자나 특별한 설치 과정이 필요한 경우에는 <a href="http://dokuwiki.org/ko:install">설치 과정</a>과 <a href="http://dokuwiki.org/ko:config">환경 설정</a> 링크를 참고하시기 바랍니다.</p> \ No newline at end of file
+<p>숙련된 사용자나 특수한 설치가 필요한 사용자에게 자세한 내용은
+<a href="http://dokuwiki.org/ko:install">설치 지침</a>과
+<a href="http://dokuwiki.org/ko:config">환경 설정</a> 링크를 사용해야 합니다.</p>
diff --git a/inc/lang/ko/jquery.ui.datepicker.js b/inc/lang/ko/jquery.ui.datepicker.js
new file mode 100644
index 000000000..af36f3d6b
--- /dev/null
+++ b/inc/lang/ko/jquery.ui.datepicker.js
@@ -0,0 +1,23 @@
+/* Korean initialisation for the jQuery calendar extension. */
+/* Written by DaeKwon Kang (ncrash.dk@gmail.com), Edited by Genie. */
+jQuery(function($){
+ $.datepicker.regional['ko'] = {
+ closeText: '닫기',
+ prevText: '이전달',
+ nextText: '다음달',
+ currentText: '오늘',
+ monthNames: ['1월','2월','3월','4월','5월','6월',
+ '7월','8월','9월','10월','11월','12월'],
+ monthNamesShort: ['1월','2월','3월','4월','5월','6월',
+ '7월','8월','9월','10월','11월','12월'],
+ dayNames: ['일요일','월요일','화요일','수요일','목요일','금요일','토요일'],
+ dayNamesShort: ['일','월','화','수','목','금','토'],
+ dayNamesMin: ['일','월','화','수','목','금','토'],
+ weekHeader: 'Wk',
+ dateFormat: 'yy-mm-dd',
+ firstDay: 0,
+ isRTL: false,
+ showMonthAfterYear: true,
+ yearSuffix: '년'};
+ $.datepicker.setDefaults($.datepicker.regional['ko']);
+});
diff --git a/inc/lang/ko/lang.php b/inc/lang/ko/lang.php
index e6cae3db0..266ff01e5 100644
--- a/inc/lang/ko/lang.php
+++ b/inc/lang/ko/lang.php
@@ -11,6 +11,7 @@
* @author erial2@gmail.com
* @author Myeongjin <aranet100@gmail.com>
* @author Gerrit Uitslag <klapinklapin@gmail.com>
+ * @author Garam <rowain8@gmail.com>
*/
$lang['encoding'] = 'utf-8';
$lang['direction'] = 'ltr';
@@ -23,7 +24,7 @@ $lang['btn_edit'] = '문서 편집';
$lang['btn_source'] = '원본 보기';
$lang['btn_show'] = '문서 보기';
$lang['btn_create'] = '문서 만들기';
-$lang['btn_search'] = '찾기';
+$lang['btn_search'] = '검색';
$lang['btn_save'] = '저장';
$lang['btn_preview'] = '미리 보기';
$lang['btn_top'] = '맨 위로';
@@ -69,13 +70,13 @@ $lang['badlogin'] = '죄송하지만 사용자 이름이나 비밀
$lang['badpassconfirm'] = '죄송하지만 비밀번호가 잘못되었습니다';
$lang['minoredit'] = '사소한 바뀜';
$lang['draftdate'] = '초안 자동 저장 시간';
-$lang['nosecedit'] = '한동안 문서가 바뀌었으며, 문단 정보가 오래되어 문서 전체를 대신 열었습니다.';
+$lang['nosecedit'] = '한 동안 문서가 바뀌었으며, 문단 정보가 오래되어 문서 전체를 대신 열었습니다.';
$lang['regmissing'] = '죄송하지만 모든 필드를 채워야 합니다.';
$lang['reguexists'] = '죄송하지만 같은 이름을 사용하는 사용자가 있습니다.';
$lang['regsuccess'] = '사용자를 만들었으며 비밀번호는 이메일로 보냈습니다.';
$lang['regsuccess2'] = '사용자를 만들었습니다.';
-$lang['regmailfail'] = '비밀번호를 이메일로 보낼 때 오류가 발생했습니다. 관리자에게 문의하세요!';
-$lang['regbadmail'] = '이메일 주소가 잘못됐습니다 - 오류라고 생각하면 관리자에게 문의하세요';
+$lang['regmailfail'] = '비밀번호를 이메일로 보내는 동안 오류가 발생했습니다. 관리자에게 문의하세요!';
+$lang['regbadmail'] = '주어진 이메일 주소가 잘못되었습니다 - 오류라고 생각하면 관리자에게 문의하세요';
$lang['regbadpass'] = '새 비밀번호가 같지 않습니다. 다시 입력하세요.';
$lang['regpwmail'] = '도쿠위키 비밀번호';
$lang['reghere'] = '계정이 없나요? 계정을 등록할 수 있습니다';
@@ -85,7 +86,7 @@ $lang['profnoempty'] = '이름이나 이메일 주소가 비었습니
$lang['profchanged'] = '개인 정보가 성공적으로 바뀌었습니다.';
$lang['profnodelete'] = '이 위키는 사용자 삭제를 지원하지 않습니다';
$lang['profdeleteuser'] = '계정 삭제';
-$lang['profdeleted'] = '내 사용자 계정이 이 위키에서 삭제되었습니다';
+$lang['profdeleted'] = '당신의 사용자 계정이 이 위키에서 삭제되었습니다';
$lang['profconfdelete'] = '이 위키에서 내 계정을 제거하고 싶습니다. <br/> 이 행동은 되돌릴 수 없습니다.';
$lang['profconfdeletemissing'] = '선택하지 않은 확인 상자를 확인';
$lang['pwdforget'] = '비밀번호를 잊으셨나요? 비밀번호를 재설정할 수 있습니다';
@@ -96,19 +97,19 @@ $lang['resendpwdnouser'] = '죄송하지만 데이터베이스에서 이
$lang['resendpwdbadauth'] = '죄송하지만 인증 코드가 올바르지 않습니다. 잘못된 확인 링크인지 확인하세요.';
$lang['resendpwdconfirm'] = '확인 링크를 이메일로 보냈습니다.';
$lang['resendpwdsuccess'] = '새 비밀번호를 이메일로 보냈습니다.';
-$lang['license'] = '별도로 명시하지 않을 경우, 이 위키의 내용은 다음의 라이선스에 따라 사용할 수 있습니다:';
-$lang['licenseok'] = '참고: 이 문서를 편집하면 내용은 다음 라이선스에 따라 사용 허가에 동의합니다:';
-$lang['searchmedia'] = '파일 이름 찾기:';
-$lang['searchmedia_in'] = '%s에서 찾기';
+$lang['license'] = '별도로 명시하지 않을 경우, 이 위키의 내용은 다음 라이선스에 따라 사용할 수 있습니다:';
+$lang['licenseok'] = '참고: 이 문서를 편집하면 내용은 다음 라이선스에 따라 배포하는 데 동의합니다:';
+$lang['searchmedia'] = '파일 이름 검색:';
+$lang['searchmedia_in'] = '%s에서 검색';
$lang['txt_upload'] = '올릴 파일 선택';
-$lang['txt_filename'] = '올릴 파일 이름 입력 (선택 사항)';
+$lang['txt_filename'] = '올릴 파일 이름 (선택 사항)';
$lang['txt_overwrt'] = '기존 파일에 덮어쓰기';
$lang['maxuploadsize'] = '최대 올리기 용량. 파일당 %s입니다.';
$lang['lockedby'] = '현재 잠겨진 사용자';
$lang['lockexpire'] = '잠금 해제 시간';
$lang['js']['willexpire'] = '잠시 후 편집 잠금이 해제됩니다.\n편집 충돌을 피하려면 미리 보기를 눌러 잠금 시간을 다시 설정하세요.';
$lang['js']['notsavedyet'] = '저장하지 않은 바뀜이 사라집니다.';
-$lang['js']['searchmedia'] = '파일 찾기';
+$lang['js']['searchmedia'] = '파일 검색';
$lang['js']['keepopen'] = '선택할 때 창을 열어 놓기';
$lang['js']['hidedetails'] = '자세한 정보 숨기기';
$lang['js']['mediatitle'] = '링크 설정';
@@ -152,7 +153,7 @@ $lang['nothingfound'] = '아무 것도 없습니다.';
$lang['mediaselect'] = '미디어 파일';
$lang['fileupload'] = '미디어 파일 올리기';
$lang['uploadsucc'] = '올리기 성공';
-$lang['uploadfail'] = '올리기를 실패했습니다. 잘못된 권한 때문일지도 모릅니다.';
+$lang['uploadfail'] = '올리기가 실패되었습니다. 잘못된 권한 때문일지도 모릅니다.';
$lang['uploadwrong'] = '올리기가 거부되었습니다. 금지된 파일 확장자입니다!';
$lang['uploadexist'] = '파일이 이미 존재합니다.';
$lang['uploadbadcontent'] = '올린 파일이 %s 파일 확장자와 일치하지 않습니다.';
@@ -174,7 +175,7 @@ $lang['reference'] = '참고';
$lang['ref_inuse'] = '다음 문서에서 아직 사용 중이므로 파일을 삭제할 수 없습니다:';
$lang['ref_hidden'] = '문서의 일부 참고는 읽을 수 있는 권한이 없습니다';
$lang['hits'] = '조회 수';
-$lang['quickhits'] = '일치하는 문서이름';
+$lang['quickhits'] = '일치하는 문서 이름';
$lang['toc'] = '목차';
$lang['current'] = '현재';
$lang['yours'] = '판';
@@ -182,7 +183,7 @@ $lang['diff'] = '현재 판과의 차이 보기';
$lang['diff2'] = '선택한 판 사이의 차이 보기';
$lang['difflink'] = '차이 보기로 링크';
$lang['diff_type'] = '차이 보기:';
-$lang['diff_inline'] = '인라인 방식';
+$lang['diff_inline'] = '직렬 방식';
$lang['diff_side'] = '다중 창 방식';
$lang['line'] = '줄';
$lang['breadcrumb'] = '추적';
@@ -244,7 +245,7 @@ $lang['img_backto'] = '뒤로';
$lang['img_title'] = '제목';
$lang['img_caption'] = '설명';
$lang['img_date'] = '날짜';
-$lang['img_fname'] = '파일이름';
+$lang['img_fname'] = '파일 이름';
$lang['img_fsize'] = '크기';
$lang['img_artist'] = '촬영자';
$lang['img_copyr'] = '저작권';
@@ -257,7 +258,7 @@ $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_success'] = '%s 사용자가 %s 구독 목록에서 제거했습니다';
$lang['subscr_unsubscribe_error'] = '%s 사용자가 %s 구독 목록에서 삭제하는데 실패했습니다';
$lang['subscr_already_subscribed'] = '%s 사용자가 이미 %s에 구독하고 있습니다';
$lang['subscr_not_subscribed'] = '%s 사용자가 %s에 구독하고 있지 않습니다';
@@ -270,13 +271,13 @@ $lang['subscr_m_receive'] = '받기';
$lang['subscr_style_every'] = '모든 바뀜을 이메일로 받기';
$lang['subscr_style_digest'] = '각 문서의 바뀜을 요약 (매 %.2f일 마다)';
$lang['subscr_style_list'] = '마지막 이메일 이후 바뀐 문서의 목록 (매 %.2f일 마다)';
-$lang['authtempfail'] = '사용자 인증을 일시적으로 사용할 수 없습니다. 만약 계속해서 문제가 발생하면 위키 관리자에게 문의하시기 바랍니다.';
-$lang['authpwdexpire'] = '비밀번호를 바꾼지 %d일이 지났으며, 비민번호를 곧 바꿔야 합니다.';
+$lang['authtempfail'] = '사용자 인증을 일시적으로 사용할 수 없습니다. 만약 계속해서 문제가 발생한다면 위키 관리자에게 문의하시기 바랍니다.';
+$lang['authpwdexpire'] = '비밀번호를 바꾼지 %d일이 지났으며, 비밀번호를 곧 바꿔야 합니다.';
$lang['i_chooselang'] = '사용할 언어를 선택하세요';
-$lang['i_installer'] = 'DokuWiki 설치';
+$lang['i_installer'] = '도쿠위키 설치';
$lang['i_wikiname'] = '위키 이름';
$lang['i_enableacl'] = 'ACL 활성화 (권장)';
-$lang['i_superuser'] = '슈퍼 유저';
+$lang['i_superuser'] = '슈퍼 사용자';
$lang['i_problems'] = '설치하는 동안 아래와 같은 문제가 발생했습니다. 문제를 해결한 후 설치를 계속할 수 있습니다.';
$lang['i_modified'] = '보안 상의 이유로 이 스크립트는 수정되지 않은 새 도쿠위키 설치에서만 동작됩니다.
다운로드한 압축 패키지를 다시 설치하거나 <a href="http://dokuwiki.org/ko:install">도쿠위키 설치 과정</a>을 참고해서 설치하세요.';
@@ -293,6 +294,7 @@ $lang['i_policy'] = '초기 ACL 정책';
$lang['i_pol0'] = '열린 위키 (누구나 읽기, 쓰기, 올리기가 가능합니다)';
$lang['i_pol1'] = '공개 위키 (누구나 읽을 수 있지만, 등록된 사용자만 쓰기와 올리기가 가능합니다)';
$lang['i_pol2'] = '닫힌 위키 (등록된 사용자만 읽기, 쓰기, 올리기가 가능합니다)';
+$lang['i_allowreg'] = '사용자 자신이 등록할 수 있음';
$lang['i_retry'] = '다시 시도';
$lang['i_license'] = '내용을 배포하기 위한 라이선스를 선택하세요:';
$lang['i_license_none'] = '라이선스 정보를 보여주지 않습니다';
@@ -308,7 +310,7 @@ $lang['minutes'] = '%d분 전';
$lang['seconds'] = '%d초 전';
$lang['wordblock'] = '차단 문구(스팸)를 포함하고 있어서 바뀜을 저장하지 않았습니다.';
$lang['media_uploadtab'] = '올리기';
-$lang['media_searchtab'] = '찾기';
+$lang['media_searchtab'] = '검색';
$lang['media_file'] = '파일';
$lang['media_viewtab'] = '보기';
$lang['media_edittab'] = '편집';
@@ -320,13 +322,17 @@ $lang['media_sort_date'] = '날짜';
$lang['media_namespaces'] = '이름공간 선택';
$lang['media_files'] = '%s에 있는 파일';
$lang['media_upload'] = '%s에 올리기';
-$lang['media_search'] = '%s에서 찾기';
+$lang['media_search'] = '%s에서 검색';
$lang['media_view'] = '%s';
-$lang['media_viewold'] = '%2$s (%1$s에 있음)';
+$lang['media_viewold'] = '%s (%s에 있음)';
$lang['media_edit'] = '%s 편집';
-$lang['media_history'] = '%s의 내역';
+$lang['media_history'] = '%s의 역사';
$lang['media_meta_edited'] = '메타데이터 편집됨';
$lang['media_perm_read'] = '죄송하지만 파일을 읽을 권한이 없습니다.';
$lang['media_perm_upload'] = '죄송하지만 파일을 올릴 권한이 없습니다.';
$lang['media_update'] = '새 판 올리기';
$lang['media_restore'] = '이 판으로 되돌리기';
+$lang['currentns'] = '현재 이름공간';
+$lang['searchresult'] = '검색 결과';
+$lang['plainhtml'] = '일반 HTML';
+$lang['wikimarkup'] = '위키 문법';
diff --git a/inc/lang/ko/mailtext.txt b/inc/lang/ko/mailtext.txt
index e9e9c25e1..c97f446e2 100644
--- a/inc/lang/ko/mailtext.txt
+++ b/inc/lang/ko/mailtext.txt
@@ -1,13 +1,13 @@
도쿠위키 문서가 추가되거나 바뀌었습니다. 자세한 내용은 다음과 같습니다:
-날짜 : @DATE@
-브라우저 : @BROWSER@
-IP 주소 : @IPADDRESS@
-호스트 이름 : @HOSTNAME@
-이전 판 : @OLDPAGE@
-새 판 : @NEWPAGE@
-편집 요약 : @SUMMARY@
-사용자 : @USER@
+날짜: @DATE@
+브라우저: @BROWSER@
+IP 주소: @IPADDRESS@
+호스트 이름: @HOSTNAME@
+이전 판: @OLDPAGE@
+새 판: @NEWPAGE@
+편집 요약: @SUMMARY@
+사용자: @USER@
@DIFF@
diff --git a/inc/lang/ko/password.txt b/inc/lang/ko/password.txt
index 790f6b479..a60801ae1 100644
--- a/inc/lang/ko/password.txt
+++ b/inc/lang/ko/password.txt
@@ -2,8 +2,8 @@
여기에 @DOKUWIKIURL@에서 @TITLE@의 사용자 정보가 있습니다.
-로그인 : @LOGIN@
-비밀번호 : @PASSWORD@
+로그인: @LOGIN@
+비밀번호: @PASSWORD@
--
이 메일은 @DOKUWIKIURL@에서 도쿠위키가 생성했습니다 \ No newline at end of file
diff --git a/inc/lang/ko/register.txt b/inc/lang/ko/register.txt
index 4df968896..4d3df298e 100644
--- a/inc/lang/ko/register.txt
+++ b/inc/lang/ko/register.txt
@@ -1,3 +1,3 @@
====== 새 사용자 등록 ======
-이 위키에 새 계정을 만드려면 아래의 모든 내용을 입력하세요. **올바른 이메일 주소**를 사용하세요. 비밀번호를 입력하는 곳이 없다면 비밀번호는 이 이메일로 보내집니다. 사용자 이름은 올바른 [[doku>ko:pagename|문서이름]]이어야 합니다. \ No newline at end of file
+이 위키에 새 계정을 만드려면 아래의 모든 내용을 입력하세요. **올바른 이메일 주소**를 사용하세요. 비밀번호를 입력하는 곳이 없다면, 새 비밀번호는 해당 주소로 보내집니다. 사용자 이름은 올바른 [[doku>ko:pagename|문서 이름]]이어야 합니다. \ No newline at end of file
diff --git a/inc/lang/ko/registermail.txt b/inc/lang/ko/registermail.txt
index e7c808047..afa66686a 100644
--- a/inc/lang/ko/registermail.txt
+++ b/inc/lang/ko/registermail.txt
@@ -1,13 +1,13 @@
새 사용자가 등록되었습니다. 자세한 내용은 다음과 같습니다:
-사용자 이름 : @NEWUSER@
-실제 이름 : @NEWNAME@
-이메일 : @NEWEMAIL@
+사용자 이름: @NEWUSER@
+실명: @NEWNAME@
+이메일: @NEWEMAIL@
-날짜 : @DATE@
-브라우저 : @BROWSER@
-IP 주소 : @IPADDRESS@
-호스트 이름 : @HOSTNAME@
+날짜: @DATE@
+브라우저: @BROWSER@
+IP 주소: @IPADDRESS@
+호스트 이름: @HOSTNAME@
--
이 메일은 @DOKUWIKIURL@에서 도쿠위키가 생성했습니다 \ No newline at end of file
diff --git a/inc/lang/ko/searchpage.txt b/inc/lang/ko/searchpage.txt
index cb9bae2e0..2313f0bb0 100644
--- a/inc/lang/ko/searchpage.txt
+++ b/inc/lang/ko/searchpage.txt
@@ -1,5 +1,5 @@
-====== 찾기 ======
+====== 검색 ======
-아래에서 찾기 결과를 볼 수 있습니다. 만일 원하는 문서를 찾지 못하였다면, "문서 만들기"나 "문서 편집"을 사용해 쿼리 내용과 같은 이름의 문서를 만들거나 편집할 수 있습니다.
+아래에서 검색 결과를 찾을 수 있습니다. 만약 원하는 문서를 찾지 못했다면, "문서 만들기"나 "문서 편집"을 사용해 검색어와 같은 이름의 문서를 만들거나 편집할 수 있습니다.
===== 결과 ===== \ No newline at end of file
diff --git a/inc/lang/ko/subscr_digest.txt b/inc/lang/ko/subscr_digest.txt
index 7a044736a..0f03e51a3 100644
--- a/inc/lang/ko/subscr_digest.txt
+++ b/inc/lang/ko/subscr_digest.txt
@@ -7,12 +7,12 @@
@DIFF@
--------------------------------------------------------
-이전 판 : @OLDPAGE@
-새 판 : @NEWPAGE@
+이전 판: @OLDPAGE@
+새 판: @NEWPAGE@
문서의 알림을 취소하려면, @DOKUWIKIURL@에 로그인한 뒤
@SUBSCRIBE@ 문서를 방문해 문서나 이름공간의 구독을 취소하세요.
---
+--
이 메일은 @DOKUWIKIURL@에서 도쿠위키가 생성했습니다 \ No newline at end of file
diff --git a/inc/lang/ko/subscr_list.txt b/inc/lang/ko/subscr_list.txt
index 57aa78cf7..95133bbc7 100644
--- a/inc/lang/ko/subscr_list.txt
+++ b/inc/lang/ko/subscr_list.txt
@@ -10,5 +10,5 @@
문서의 알림을 취소하려면, @DOKUWIKIURL@에 로그인한 뒤
@SUBSCRIBE@ 문서를 방문해 문서나 이름공간의 구독을 취소하세요.
---
-이 메일은 @DOKUWIKIURL@에서 도쿠위키가 생성했습니다. \ No newline at end of file
+--
+이 메일은 @DOKUWIKIURL@에서 도쿠위키가 생성했습니다 \ No newline at end of file
diff --git a/inc/lang/ko/subscr_single.txt b/inc/lang/ko/subscr_single.txt
index ed5478441..1c7e551f0 100644
--- a/inc/lang/ko/subscr_single.txt
+++ b/inc/lang/ko/subscr_single.txt
@@ -7,14 +7,14 @@
@DIFF@
--------------------------------------------------------
-날짜 : @DATE@
-사용자 : @USER@
-편집 요약 : @SUMMARY@
-이전 판 : @OLDPAGE@
-새 판 : @NEWPAGE@
+날짜: @DATE@
+사용자: @USER@
+편집 요약: @SUMMARY@
+이전 판: @OLDPAGE@
+새 판: @NEWPAGE@
문서의 알림을 취소하려면, @DOKUWIKIURL@에 로그인한 뒤
@SUBSCRIBE@ 문서를 방문해 문서나 이름공간의 구독을 취소하세요.
---
+--
이 메일은 @DOKUWIKIURL@에서 도쿠위키가 생성했습니다 \ No newline at end of file
diff --git a/inc/lang/ko/uploadmail.txt b/inc/lang/ko/uploadmail.txt
index 1304ee331..430a843b2 100644
--- a/inc/lang/ko/uploadmail.txt
+++ b/inc/lang/ko/uploadmail.txt
@@ -1,14 +1,14 @@
도쿠위키가 파일을 올렸습니다. 자세한 정보는 다음과 같습니다:
-파일 : @MEDIA@
-이전 판 : @OLD@
-날짜 : @DATE@
-브라우저 : @BROWSER@
-IP 주소 : @IPADDRESS@
-호스트 이름 : @HOSTNAME@
-크기 : @SIZE@
-MIME 종류 : @MIME@
-사용자 : @USER@
+파일: @MEDIA@
+이전 판: @OLD@
+날짜: @DATE@
+브라우저: @BROWSER@
+IP 주소: @IPADDRESS@
+호스트 이름: @HOSTNAME@
+크기: @SIZE@
+MIME 유형: @MIME@
+사용자: @USER@
--
이 메일은 @DOKUWIKIURL@에서 도쿠위키가 생성했습니다 \ No newline at end of file
diff --git a/inc/lang/ku/lang.php b/inc/lang/ku/lang.php
index 51ed6c8bf..b6287806d 100644
--- a/inc/lang/ku/lang.php
+++ b/inc/lang/ku/lang.php
@@ -33,7 +33,6 @@ $lang['btn_back'] = 'Paş';
$lang['btn_backlink'] = 'Girêdanên paş';
$lang['btn_backtomedia'] = 'Back to Mediafile Selection';
$lang['btn_subscribe'] = 'Subscribe Changes';
-$lang['btn_unsubscribe'] = 'Unsubscribe Changes';
$lang['btn_register'] = 'Register';
$lang['loggedinas'] = 'Logged in as';
@@ -123,22 +122,8 @@ $lang['qb_sig'] = 'Insert Signature';
$lang['js']['del_confirm']= 'Delete this entry?';
-$lang['admin_acl'] = 'Access Control List Management...';
$lang['admin_register']= 'Add new user...';
-$lang['acl_group'] = 'Group';
-$lang['acl_user'] = 'User';
-$lang['acl_perms'] = 'Permissions for';
-$lang['page'] = 'Rûpel';
-$lang['namespace'] = 'Namespace';
-
-$lang['acl_perm1'] = 'Bixwîne';
-$lang['acl_perm2'] = 'Biguherîne';
-$lang['acl_perm4'] = 'Biafirîne';
-$lang['acl_perm8'] = 'Upload';
-$lang['acl_perm16'] = 'Jê bibe';
-$lang['acl_new'] = 'Add new Entry';
-
$lang['metaedit'] = 'Edit Metadata';
$lang['metasaveerr'] = 'Writing metadata failed';
$lang['metasaveok'] = 'Metadata saved';
@@ -154,10 +139,4 @@ $lang['img_format'] = 'Format';
$lang['img_camera'] = 'Camera';
$lang['img_keywords']= 'Keywords';
-$lang['subscribe_success'] = 'Added %s to subscription list for %s';
-$lang['subscribe_error'] = 'Error adding %s to subscription list for %s';
-$lang['subscribe_noaddress']= 'There is no address associated with your login, you cannot be added to the subscription list';
-$lang['unsubscribe_success']= 'Removed %s from subscription list for %s';
-$lang['unsubscribe_error'] = 'Error removing %s from subscription list for %s';
-
//Setup VIM: ex: et ts=2 :
diff --git a/inc/lang/lb/jquery.ui.datepicker.js b/inc/lang/lb/jquery.ui.datepicker.js
new file mode 100644
index 000000000..87c79d594
--- /dev/null
+++ b/inc/lang/lb/jquery.ui.datepicker.js
@@ -0,0 +1,23 @@
+/* Luxembourgish initialisation for the jQuery UI date picker plugin. */
+/* Written by Michel Weimerskirch <michel@weimerskirch.net> */
+jQuery(function($){
+ $.datepicker.regional['lb'] = {
+ closeText: 'Fäerdeg',
+ prevText: 'Zréck',
+ nextText: 'Weider',
+ currentText: 'Haut',
+ monthNames: ['Januar','Februar','Mäerz','Abrëll','Mee','Juni',
+ 'Juli','August','September','Oktober','November','Dezember'],
+ monthNamesShort: ['Jan', 'Feb', 'Mäe', 'Abr', 'Mee', 'Jun',
+ 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Dez'],
+ dayNames: ['Sonndeg', 'Méindeg', 'Dënschdeg', 'Mëttwoch', 'Donneschdeg', 'Freideg', 'Samschdeg'],
+ dayNamesShort: ['Son', 'Méi', 'Dën', 'Mët', 'Don', 'Fre', 'Sam'],
+ dayNamesMin: ['So','Mé','Dë','Më','Do','Fr','Sa'],
+ weekHeader: 'W',
+ dateFormat: 'dd.mm.yy',
+ firstDay: 1,
+ isRTL: false,
+ showMonthAfterYear: false,
+ yearSuffix: ''};
+ $.datepicker.setDefaults($.datepicker.regional['lb']);
+});
diff --git a/inc/lang/lt/jquery.ui.datepicker.js b/inc/lang/lt/jquery.ui.datepicker.js
new file mode 100644
index 000000000..54eb523b3
--- /dev/null
+++ b/inc/lang/lt/jquery.ui.datepicker.js
@@ -0,0 +1,23 @@
+/* Lithuanian (UTF-8) initialisation for the jQuery UI date picker plugin. */
+/* @author Arturas Paleicikas <arturas@avalon.lt> */
+jQuery(function($){
+ $.datepicker.regional['lt'] = {
+ closeText: 'Uždaryti',
+ prevText: '&#x3C;Atgal',
+ nextText: 'Pirmyn&#x3E;',
+ currentText: 'Šiandien',
+ monthNames: ['Sausis','Vasaris','Kovas','Balandis','Gegužė','Birželis',
+ 'Liepa','Rugpjūtis','Rugsėjis','Spalis','Lapkritis','Gruodis'],
+ monthNamesShort: ['Sau','Vas','Kov','Bal','Geg','Bir',
+ 'Lie','Rugp','Rugs','Spa','Lap','Gru'],
+ dayNames: ['sekmadienis','pirmadienis','antradienis','trečiadienis','ketvirtadienis','penktadienis','šeštadienis'],
+ dayNamesShort: ['sek','pir','ant','tre','ket','pen','šeš'],
+ dayNamesMin: ['Se','Pr','An','Tr','Ke','Pe','Še'],
+ weekHeader: 'SAV',
+ dateFormat: 'yy-mm-dd',
+ firstDay: 1,
+ isRTL: false,
+ showMonthAfterYear: true,
+ yearSuffix: ''};
+ $.datepicker.setDefaults($.datepicker.regional['lt']);
+});
diff --git a/inc/lang/lt/lang.php b/inc/lang/lt/lang.php
index 142aa0f23..c38ea8838 100644
--- a/inc/lang/lt/lang.php
+++ b/inc/lang/lt/lang.php
@@ -40,7 +40,6 @@ $lang['btn_back'] = 'Atgal';
$lang['btn_backlink'] = 'Atgalinės nuorodos';
$lang['btn_backtomedia'] = 'Atgal į Mediabylos išsirinkimą';
$lang['btn_subscribe'] = 'Užsisakyti keitimų prenumeratą';
-$lang['btn_unsubscribe'] = 'Atsisakyti keitimų prenumeratos';
$lang['btn_profile'] = 'Atnaujinti profilį';
$lang['btn_reset'] = 'Atstata';
$lang['btn_draft'] = 'Redaguoti juodraštį';
@@ -175,11 +174,6 @@ $lang['img_copyr'] = 'Autorinės teisės';
$lang['img_format'] = 'Formatas';
$lang['img_camera'] = 'Kamera';
$lang['img_keywords'] = 'Raktiniai žodžiai';
-$lang['subscribe_success'] = '%s užsakyta "%s" prenumerata';
-$lang['subscribe_error'] = '%s užsakant "%s" prenumeratą įvyko klaida';
-$lang['subscribe_noaddress'] = 'Jūs nesatė nurodęs el. pašto adreso, todėl negalima Jums užsakyti prenumeratos';
-$lang['unsubscribe_success'] = '%s ištrintas iš "%s" prenumeratos';
-$lang['unsubscribe_error'] = '%s trinant iš "%s" prenumeratos įvyko klaida';
$lang['authtempfail'] = 'Vartotojo tapatumo nustatymas laikinai nepasiekiamas. Jei ši situacija kartojasi, tai praneškite savo administratoriui.';
$lang['i_chooselang'] = 'Pasirinkite kalbą';
$lang['i_installer'] = 'DokuWiki Instaliatorius';
diff --git a/inc/lang/lv/jquery.ui.datepicker.js b/inc/lang/lv/jquery.ui.datepicker.js
new file mode 100644
index 000000000..3fdf8565b
--- /dev/null
+++ b/inc/lang/lv/jquery.ui.datepicker.js
@@ -0,0 +1,23 @@
+/* Latvian (UTF-8) initialisation for the jQuery UI date picker plugin. */
+/* @author Arturas Paleicikas <arturas.paleicikas@metasite.net> */
+jQuery(function($){
+ $.datepicker.regional['lv'] = {
+ closeText: 'Aizvērt',
+ prevText: 'Iepr.',
+ nextText: 'Nāk.',
+ currentText: 'Šodien',
+ monthNames: ['Janvāris','Februāris','Marts','Aprīlis','Maijs','Jūnijs',
+ 'Jūlijs','Augusts','Septembris','Oktobris','Novembris','Decembris'],
+ monthNamesShort: ['Jan','Feb','Mar','Apr','Mai','Jūn',
+ 'Jūl','Aug','Sep','Okt','Nov','Dec'],
+ dayNames: ['svētdiena','pirmdiena','otrdiena','trešdiena','ceturtdiena','piektdiena','sestdiena'],
+ dayNamesShort: ['svt','prm','otr','tre','ctr','pkt','sst'],
+ dayNamesMin: ['Sv','Pr','Ot','Tr','Ct','Pk','Ss'],
+ weekHeader: 'Ned.',
+ dateFormat: 'dd.mm.yy',
+ firstDay: 1,
+ isRTL: false,
+ showMonthAfterYear: false,
+ yearSuffix: ''};
+ $.datepicker.setDefaults($.datepicker.regional['lv']);
+});
diff --git a/inc/lang/mg/lang.php b/inc/lang/mg/lang.php
index e3c7a0c2b..c5ed669a9 100644
--- a/inc/lang/mg/lang.php
+++ b/inc/lang/mg/lang.php
@@ -116,20 +116,6 @@ $lang['qb_sig'] = 'Manisy sonia';
$lang['js']['del_confirm']= 'Hofafana ilay andalana?';
-$lang['admin_acl'] = 'Fitantanana ACL (Access Control List)...';
$lang['admin_register']= 'Ampio mpampiasa vaovao...';
-$lang['acl_group'] = 'Vondrona';
-$lang['acl_user'] = 'Mpampiasa';
-$lang['acl_perms'] = 'Alalana @';
-$lang['page'] = 'Pejy';
-$lang['namespace'] = 'Namespace';
-
-$lang['acl_perm1'] = 'Mamaky';
-$lang['acl_perm2'] = 'Manova';
-$lang['acl_perm4'] = 'Manamboatra';
-$lang['acl_perm8'] = 'Mandefa rakitra';
-$lang['acl_perm16'] = 'Mamafa';
-$lang['acl_new'] = 'Ampio andalana vaovao';
-
//Setup VIM: ex: et ts=2 :
diff --git a/inc/lang/mk/jquery.ui.datepicker.js b/inc/lang/mk/jquery.ui.datepicker.js
new file mode 100644
index 000000000..028532551
--- /dev/null
+++ b/inc/lang/mk/jquery.ui.datepicker.js
@@ -0,0 +1,23 @@
+/* Macedonian i18n for the jQuery UI date picker plugin. */
+/* Written by Stojce Slavkovski. */
+jQuery(function($){
+ $.datepicker.regional['mk'] = {
+ closeText: 'Затвори',
+ prevText: '&#x3C;',
+ nextText: '&#x3E;',
+ currentText: 'Денес',
+ monthNames: ['Јануари','Февруари','Март','Април','Мај','Јуни',
+ 'Јули','Август','Септември','Октомври','Ноември','Декември'],
+ monthNamesShort: ['Јан','Фев','Мар','Апр','Мај','Јун',
+ 'Јул','Авг','Сеп','Окт','Ное','Дек'],
+ dayNames: ['Недела','Понеделник','Вторник','Среда','Четврток','Петок','Сабота'],
+ dayNamesShort: ['Нед','Пон','Вто','Сре','Чет','Пет','Саб'],
+ dayNamesMin: ['Не','По','Вт','Ср','Че','Пе','Са'],
+ weekHeader: 'Сед',
+ dateFormat: 'dd.mm.yy',
+ firstDay: 1,
+ isRTL: false,
+ showMonthAfterYear: false,
+ yearSuffix: ''};
+ $.datepicker.setDefaults($.datepicker.regional['mk']);
+});
diff --git a/inc/lang/ms/jquery.ui.datepicker.js b/inc/lang/ms/jquery.ui.datepicker.js
new file mode 100644
index 000000000..e70de7299
--- /dev/null
+++ b/inc/lang/ms/jquery.ui.datepicker.js
@@ -0,0 +1,23 @@
+/* Malaysian initialisation for the jQuery UI date picker plugin. */
+/* Written by Mohd Nawawi Mohamad Jamili (nawawi@ronggeng.net). */
+jQuery(function($){
+ $.datepicker.regional['ms'] = {
+ closeText: 'Tutup',
+ prevText: '&#x3C;Sebelum',
+ nextText: 'Selepas&#x3E;',
+ currentText: 'hari ini',
+ monthNames: ['Januari','Februari','Mac','April','Mei','Jun',
+ 'Julai','Ogos','September','Oktober','November','Disember'],
+ monthNamesShort: ['Jan','Feb','Mac','Apr','Mei','Jun',
+ 'Jul','Ogo','Sep','Okt','Nov','Dis'],
+ dayNames: ['Ahad','Isnin','Selasa','Rabu','Khamis','Jumaat','Sabtu'],
+ dayNamesShort: ['Aha','Isn','Sel','Rab','kha','Jum','Sab'],
+ dayNamesMin: ['Ah','Is','Se','Ra','Kh','Ju','Sa'],
+ weekHeader: 'Mg',
+ dateFormat: 'dd/mm/yy',
+ firstDay: 0,
+ isRTL: false,
+ showMonthAfterYear: false,
+ yearSuffix: ''};
+ $.datepicker.setDefaults($.datepicker.regional['ms']);
+});
diff --git a/inc/lang/nl/edit.txt b/inc/lang/nl/edit.txt
index 9718d0900..88a15cfe4 100644
--- a/inc/lang/nl/edit.txt
+++ b/inc/lang/nl/edit.txt
@@ -1 +1 @@
-Pas de pagina aan en klik op ''Opslaan''. Zie [[wiki:syntax]] voor de Wiki-syntax. Pas de pagina allen aan als hij **verbeterd** kan worden. Als je iets wilt uitproberen kun je spelen in de [[playground:playground|zandbak]].
+Pas de pagina aan en klik op ''Opslaan''. Zie [[wiki:syntax]] voor de Wiki-syntax. Pas de pagina alleen aan als hij **verbeterd** kan worden. Als je iets wilt uitproberen kun je spelen in de [[playground:playground|zandbak]].
diff --git a/inc/lang/nl/jquery.ui.datepicker.js b/inc/lang/nl/jquery.ui.datepicker.js
new file mode 100644
index 000000000..203f16069
--- /dev/null
+++ b/inc/lang/nl/jquery.ui.datepicker.js
@@ -0,0 +1,23 @@
+/* Dutch (UTF-8) initialisation for the jQuery UI date picker plugin. */
+/* Written by Mathias Bynens <http://mathiasbynens.be/> */
+jQuery(function($){
+ $.datepicker.regional.nl = {
+ closeText: 'Sluiten',
+ prevText: '←',
+ nextText: '→',
+ currentText: 'Vandaag',
+ monthNames: ['januari', 'februari', 'maart', 'april', 'mei', 'juni',
+ 'juli', 'augustus', 'september', 'oktober', 'november', 'december'],
+ monthNamesShort: ['jan', 'feb', 'mrt', 'apr', 'mei', 'jun',
+ 'jul', 'aug', 'sep', 'okt', 'nov', 'dec'],
+ dayNames: ['zondag', 'maandag', 'dinsdag', 'woensdag', 'donderdag', 'vrijdag', 'zaterdag'],
+ dayNamesShort: ['zon', 'maa', 'din', 'woe', 'don', 'vri', 'zat'],
+ dayNamesMin: ['zo', 'ma', 'di', 'wo', 'do', 'vr', 'za'],
+ weekHeader: 'Wk',
+ dateFormat: 'dd-mm-yy',
+ firstDay: 1,
+ isRTL: false,
+ showMonthAfterYear: false,
+ yearSuffix: ''};
+ $.datepicker.setDefaults($.datepicker.regional.nl);
+});
diff --git a/inc/lang/nl/lang.php b/inc/lang/nl/lang.php
index 96f29f686..e22aa9fff 100644
--- a/inc/lang/nl/lang.php
+++ b/inc/lang/nl/lang.php
@@ -20,6 +20,9 @@
* @author mprins <mprins@users.sf.net>
* @author Gerrit Uitslag <klapinklapin@gmail.com>
* @author Klap-in <klapinklapin@gmail.com>
+ * @author Remon <no@email.local>
+ * @author gicalle <gicalle@hotmail.com>
+ * @author Rene <wllywlnt@yahoo.com>
*/
$lang['encoding'] = 'utf-8';
$lang['direction'] = 'ltr';
@@ -222,7 +225,7 @@ $lang['changes_type'] = 'Bekijk wijzigingen van';
$lang['pages_changes'] = 'Pagina\'s';
$lang['media_changes'] = 'Mediabestanden';
$lang['both_changes'] = 'Zowel pagina\'s als mediabestanden';
-$lang['qb_bold'] = 'Vette tekst';
+$lang['qb_bold'] = 'Vetgedrukte tekst';
$lang['qb_italic'] = 'Cursieve tekst';
$lang['qb_underl'] = 'Onderstreepte tekst';
$lang['qb_code'] = 'Code tekst';
@@ -267,7 +270,7 @@ $lang['img_height'] = 'Hoogte';
$lang['img_manager'] = 'In mediabeheerder bekijken';
$lang['subscr_subscribe_success'] = '%s is ingeschreven voor %s';
$lang['subscr_subscribe_error'] = 'Fout bij inschrijven van %s voor %s';
-$lang['subscr_subscribe_noaddress'] = 'Er is geen emailadres geassocieerd met uw account, u kunt daardoor niet worden ingeschreven.';
+$lang['subscr_subscribe_noaddress'] = 'Er is geen e-mailadres gekoppeld aan uw account, u kunt daardoor niet worden ingeschreven.';
$lang['subscr_unsubscribe_success'] = '%s is nu uitgeschreven bij %s.';
$lang['subscr_unsubscribe_error'] = 'Fout bij uitschrijven van %s bij %s.';
$lang['subscr_already_subscribed'] = '%s is reeds ingeschreven bij %s.';
@@ -303,6 +306,7 @@ $lang['i_policy'] = 'Initieel ACL-beleid';
$lang['i_pol0'] = 'Open wiki (lezen, schrijven, uploaden voor iedereen)';
$lang['i_pol1'] = 'Publieke wiki (lezen voor iedereen, schrijven en uploaden voor geregistreerde gebruikers)';
$lang['i_pol2'] = 'Besloten wiki (lezen, schrijven en uploaden alleen voor geregistreerde gebruikers)';
+$lang['i_allowreg'] = 'Toestaan dat gebruikers zichzelf registeren';
$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';
@@ -340,3 +344,7 @@ $lang['media_perm_read'] = 'Sorry, u heeft niet voldoende rechten om besta
$lang['media_perm_upload'] = 'Sorry, u heeft niet voldoende rechten om bestanden te uploaden.';
$lang['media_update'] = 'Upload nieuwe versie';
$lang['media_restore'] = 'Deze versie terugzetten';
+$lang['currentns'] = 'Huidige namespace';
+$lang['searchresult'] = 'Zoekresultaat';
+$lang['plainhtml'] = 'Alleen HTML';
+$lang['wikimarkup'] = 'Wiki Opmaak';
diff --git a/inc/lang/nl/mailtext.txt b/inc/lang/nl/mailtext.txt
index dbe35c519..d12093a5b 100644
--- a/inc/lang/nl/mailtext.txt
+++ b/inc/lang/nl/mailtext.txt
@@ -1,9 +1,9 @@
-Er is een pagina in je DokuWiki toegevoegd of gewijzigd. Hier zijn de details
+Er is een pagina in je DokuWiki toegevoegd of gewijzigd. Hier zijn de details:
Datum : @DATE@
Browser : @BROWSER@
IP-Adres : @IPADDRESS@
-Hostname : @HOSTNAME@
+Hostnaam : @HOSTNAME@
Oude revisie : @OLDPAGE@
Nieuwe revisie: @NEWPAGE@
Samenvatting : @SUMMARY@
diff --git a/inc/lang/nl/read.txt b/inc/lang/nl/read.txt
index fcb791811..2a9bb9a93 100644
--- a/inc/lang/nl/read.txt
+++ b/inc/lang/nl/read.txt
@@ -1,2 +1,2 @@
-Deze pagina is niet beschrijfbaar. Je kan de broncode bekijken maar niks veranderen. Neem contact op met de beheerder als je denkt dat dit niet klopt.
+Deze pagina is alleen-lezen. Je kan de broncode bekijken maar niet veranderen. Neem contact op met de beheerder als je denkt dat dit niet klopt.
diff --git a/inc/lang/nl/resendpwd.txt b/inc/lang/nl/resendpwd.txt
index ed4617748..3a67587d7 100644
--- a/inc/lang/nl/resendpwd.txt
+++ b/inc/lang/nl/resendpwd.txt
@@ -1,3 +1,3 @@
==== Verstuur een nieuw wachtwoord ====
-Voer uw gebruikersnaam in het formulier hieronder in om een nieuw wachtwoord aan te vragen voor deze wiki. Een bevestigingslink zal worden verzonden naar het geregistreerde e-mailadres.
+Voer je gebruikersnaam in het formulier hieronder in om een nieuw wachtwoord aan te vragen voor deze wiki. Een bevestigingslink zal worden verzonden naar het geregistreerde e-mailadres.
diff --git a/inc/lang/nl/subscr_form.txt b/inc/lang/nl/subscr_form.txt
index a554f843e..0f9f2d006 100644
--- a/inc/lang/nl/subscr_form.txt
+++ b/inc/lang/nl/subscr_form.txt
@@ -1,3 +1,3 @@
====== Beheer inschrijvingen ======
-Deze pagina stelt u in staat uw inschrijven voor de huidige pagina en namespace te configureren. \ No newline at end of file
+Deze pagina stelt u in staat uw abonnementen voor de huidige pagina en namespace te configureren. \ No newline at end of file
diff --git a/inc/lang/nl/subscr_list.txt b/inc/lang/nl/subscr_list.txt
index 5e1a62144..7cde7128e 100644
--- a/inc/lang/nl/subscr_list.txt
+++ b/inc/lang/nl/subscr_list.txt
@@ -6,7 +6,7 @@ Pagina's in de namespace @PAGE@ van de @TITLE@ wiki zijn veranderd. Hier zijn de
@DIFF@
--------------------------------------------------------
-Om het verzenden van deze wijzigingsberichtente te stoppen, logt u in op het wiki op @DOKUWIKIURL@ en navigeert u naar @SUBSCRIBE@. Vervolgens kunt u zich voor elke gewenste pagina of namespace uitschrijven.
+Om het verzenden van deze wijzigingsberichten te stoppen, logt u in op het wiki op @DOKUWIKIURL@ en navigeert u naar @SUBSCRIBE@. Vervolgens kunt u zich voor elke gewenste pagina of namespace uitschrijven.
--
Deze email is gegenereerd door DokuWiki op @DOKUWIKIURL@ \ No newline at end of file
diff --git a/inc/lang/no/jquery.ui.datepicker.js b/inc/lang/no/jquery.ui.datepicker.js
new file mode 100644
index 000000000..d36e430be
--- /dev/null
+++ b/inc/lang/no/jquery.ui.datepicker.js
@@ -0,0 +1,23 @@
+/* Norwegian initialisation for the jQuery UI date picker plugin. */
+/* Written by Naimdjon Takhirov (naimdjon@gmail.com). */
+
+jQuery(function($){
+ $.datepicker.regional['no'] = {
+ closeText: 'Lukk',
+ prevText: '&#xAB;Forrige',
+ nextText: 'Neste&#xBB;',
+ currentText: 'I dag',
+ monthNames: ['januar','februar','mars','april','mai','juni','juli','august','september','oktober','november','desember'],
+ monthNamesShort: ['jan','feb','mar','apr','mai','jun','jul','aug','sep','okt','nov','des'],
+ dayNamesShort: ['søn','man','tir','ons','tor','fre','lør'],
+ dayNames: ['søndag','mandag','tirsdag','onsdag','torsdag','fredag','lørdag'],
+ dayNamesMin: ['sø','ma','ti','on','to','fr','lø'],
+ weekHeader: 'Uke',
+ dateFormat: 'dd.mm.yy',
+ firstDay: 1,
+ isRTL: false,
+ showMonthAfterYear: false,
+ yearSuffix: ''
+ };
+ $.datepicker.setDefaults($.datepicker.regional['no']);
+});
diff --git a/inc/lang/no/lang.php b/inc/lang/no/lang.php
index 254d3c56b..3f31f6c73 100644
--- a/inc/lang/no/lang.php
+++ b/inc/lang/no/lang.php
@@ -1,8 +1,8 @@
<?php
+
/**
- * Norwegian language file
- *
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
* @author Reidar Mosvold <Reidar.Mosvold@hit.no>
* @author Jorge Barrera Grandon <jorge@digitalwolves.org>
* @author Rune Rasmussen [http://www.syntaxerror.no/]
@@ -11,13 +11,15 @@
* @author Torkill Bruland <torkar-b@online.no>
* @author Rune M. Andersen <rune.andersen@gmail.com>
* @author Jakob Vad Nielsen <me@jakobnielsen.net>
- * @author Kjell Tore Næsgaard <kjell.t.nasgaard@ntnu.no>
+ * @author Kjell Tore Næsgaard <kjell.t.nasgaard@ntnu.no>
* @author Knut Staring <knutst@gmail.com>
* @author Lisa Ditlefsen <lisa@vervesearch.com>
* @author Erik Pedersen <erik.pedersen@shaw.ca>
* @author Rune Rasmussen syntaxerror.no@gmail.com
* @author Jon Bøe <jonmagneboe@hotmail.com>
* @author Egil Hansen <egil@rosetta.no>
+ * @author Thomas Juberg <Thomas.Juberg@Gmail.com>
+ * @author Boris <boris@newton-media.no>
*/
$lang['encoding'] = 'utf-8';
$lang['direction'] = 'ltr';
@@ -53,6 +55,7 @@ $lang['btn_backtomedia'] = 'Tilbake til valg av mediafil';
$lang['btn_subscribe'] = 'Abonnér på endringer';
$lang['btn_profile'] = 'Oppdater profil';
$lang['btn_reset'] = 'Tilbakestill';
+$lang['btn_resendpwd'] = 'Sett nytt passord';
$lang['btn_draft'] = 'Rediger kladd';
$lang['btn_recover'] = 'Gjennvinn kladd';
$lang['btn_draftdel'] = 'Slett kladd';
@@ -60,6 +63,7 @@ $lang['btn_revert'] = 'Gjenopprette';
$lang['btn_register'] = 'Registrer deg';
$lang['btn_apply'] = 'Bruk';
$lang['btn_media'] = 'Mediefiler';
+$lang['btn_deleteuser'] = 'Fjern min konto';
$lang['loggedinas'] = 'Innlogget som';
$lang['user'] = 'Brukernavn';
$lang['pass'] = 'Passord';
@@ -71,6 +75,7 @@ $lang['fullname'] = 'Fullt navn';
$lang['email'] = 'E-post';
$lang['profile'] = 'Brukerprofil';
$lang['badlogin'] = 'Ugyldig brukernavn og/eller passord.';
+$lang['badpassconfirm'] = 'Beklager, passordet var feil';
$lang['minoredit'] = 'Mindre endringer';
$lang['draftdate'] = 'Kladd autolagret';
$lang['nosecedit'] = 'Siden ble endret i mellomtiden, seksjonsinfo har blitt foreldet - lastet full side istedet.';
@@ -87,8 +92,14 @@ $lang['profna'] = 'Denne wikien støtter ikke profilendringer';
$lang['profnochange'] = 'Ingen endringer, ingenting å gjøre.';
$lang['profnoempty'] = 'Tomt navn- eller e-postfelt er ikke tillatt.';
$lang['profchanged'] = 'Brukerprofilen ble vellykket oppdatert.';
+$lang['profnodelete'] = 'Denne wikien støtter ikke sletting av brukere';
+$lang['profdeleteuser'] = 'Slett konto';
+$lang['profdeleted'] = 'Din brukerkonto har blitt slettet fra denne wikien';
+$lang['profconfdelete'] = 'Jeg ønsker å fjerne min konto fra denne wikien. <br/> Denne handlingen kan ikke omgjøres.';
+$lang['profconfdeletemissing'] = 'Boks for bekreftelse ikke avkrysset';
$lang['pwdforget'] = 'Glemt passordet ditt? Få deg et nytt';
$lang['resendna'] = 'Denne wikien støtter ikke nyutsending av passord.';
+$lang['resendpwd'] = 'Sett nytt passord for';
$lang['resendpwdmissing'] = 'Beklager, du må fylle inn alle felt.';
$lang['resendpwdnouser'] = 'Beklager, vi kan ikke finne denne brukeren i vår database.';
$lang['resendpwdbadauth'] = 'Beklager, denne autorisasjonskoden er ikke gyldig. Sjekk at du brukte hele bekreftelseslenken.';
@@ -101,6 +112,7 @@ $lang['searchmedia_in'] = 'Søk i %s';
$lang['txt_upload'] = 'Velg fil som skal lastes opp';
$lang['txt_filename'] = 'Skriv inn wikinavn (alternativt)';
$lang['txt_overwrt'] = 'Overskriv eksisterende fil';
+$lang['maxuploadsize'] = 'Opplast maks % per fil.';
$lang['lockedby'] = 'Låst av';
$lang['lockexpire'] = 'Låsingen utløper';
$lang['js']['willexpire'] = 'Din redigeringslås for dette dokumentet kommer snart til å utløpe.\nFor å unngå versjonskonflikter bør du forhåndsvise dokumentet ditt for å forlenge redigeringslåsen.';
@@ -195,6 +207,12 @@ $lang['external_edit'] = 'ekstern redigering';
$lang['summary'] = 'Redigeringskommentar';
$lang['noflash'] = 'For at dette innholdet skal vises må du ha <a href="http://www.adobe.com/products/flashplayer/">Adobe Flash Plugin</a>.';
$lang['download'] = 'Last ned utdraget';
+$lang['tools'] = 'Verktøy';
+$lang['user_tools'] = 'Brukerverktøy';
+$lang['site_tools'] = 'Nettstedverktøy';
+$lang['page_tools'] = 'Sideverktøy';
+$lang['skip_to_content'] = 'Hopp til innhold';
+$lang['sidebar'] = 'Sidefelt';
$lang['mail_newpage'] = 'side lagt til:';
$lang['mail_changed'] = 'side endret:';
$lang['mail_subscribe_list'] = 'side endret i \'namespace\':';
@@ -264,6 +282,7 @@ $lang['subscr_style_every'] = 'e-post for alle endringer';
$lang['subscr_style_digest'] = 'e-post med sammendrag av endringer for hver side (%.2f dager mellom hver)';
$lang['subscr_style_list'] = 'liste med sider som er endra siden forrige e-post (%.2f dager mellom hver)';
$lang['authtempfail'] = 'Brukerautorisasjon er midlertidig utilgjengelig. Om dette vedvarer, vennligst informer Wiki-admin.';
+$lang['authpwdexpire'] = 'Ditt passord går ut om %d dager, du bør endre det snarest.';
$lang['i_chooselang'] = 'Velg språk';
$lang['i_installer'] = 'DokuWiki-installasjon';
$lang['i_wikiname'] = 'Wikinavn';
@@ -288,8 +307,12 @@ $lang['i_policy'] = 'Innledende ACL-politikk';
$lang['i_pol0'] = 'Åpen Wiki (les, skriv og opplasting for alle)';
$lang['i_pol1'] = 'Offentlig Wiki (les for alle, skriving og opplasting bare for registrerte brukere)';
$lang['i_pol2'] = 'Lukket Wiki (les, skriv og opplasting bare for registrerte brukere)';
+$lang['i_allowreg'] = 'Tillat at brukere registrerer seg selv';
$lang['i_retry'] = 'Prøv igjen';
$lang['i_license'] = 'Velg lisens som du vil legge ut innholdet under:';
+$lang['i_license_none'] = 'Ikke vis noen lisensinformasjon';
+$lang['i_pop_field'] = 'Venligst hejlp oss å forbedre Dokuwiki-opplevelsen:';
+$lang['i_pop_label'] = 'Sand annonyme bruksdata til Dokuwiki-utviklerene, en gang i måneden';
$lang['recent_global'] = 'Du ser nå på endringene i navnerommet <b>%s</b>. Du kan også<a href="%s">se på nylig foretatte endringer for hele wikien</a>.';
$lang['years'] = '%d år siden';
$lang['months'] = '%d måneder siden';
@@ -316,8 +339,12 @@ $lang['media_search'] = 'Søk i navnerommet <strong>%s</strong>.';
$lang['media_view'] = '%s';
$lang['media_viewold'] = '%s på %s';
$lang['media_edit'] = 'Rediger %s';
+$lang['media_history'] = '%vis historikk';
$lang['media_meta_edited'] = 'metadata er endra';
$lang['media_perm_read'] = 'Beklager, du har ikke tilgang til å lese filer.';
$lang['media_perm_upload'] = 'Beklager, du har ikke tilgang til å laste opp filer.';
$lang['media_update'] = 'Last opp ny versjon';
$lang['media_restore'] = 'Gjenopprett denne versjonen';
+$lang['currentns'] = 'gjeldende navnemellomrom';
+$lang['searchresult'] = 'Søk i resultat';
+$lang['plainhtml'] = 'Enkel HTML';
diff --git a/inc/lang/pl/jquery.ui.datepicker.js b/inc/lang/pl/jquery.ui.datepicker.js
new file mode 100644
index 000000000..0ffc515b9
--- /dev/null
+++ b/inc/lang/pl/jquery.ui.datepicker.js
@@ -0,0 +1,23 @@
+/* Polish initialisation for the jQuery UI date picker plugin. */
+/* Written by Jacek Wysocki (jacek.wysocki@gmail.com). */
+jQuery(function($){
+ $.datepicker.regional['pl'] = {
+ closeText: 'Zamknij',
+ prevText: '&#x3C;Poprzedni',
+ nextText: 'Następny&#x3E;',
+ currentText: 'Dziś',
+ monthNames: ['Styczeń','Luty','Marzec','Kwiecień','Maj','Czerwiec',
+ 'Lipiec','Sierpień','Wrzesień','Październik','Listopad','Grudzień'],
+ monthNamesShort: ['Sty','Lu','Mar','Kw','Maj','Cze',
+ 'Lip','Sie','Wrz','Pa','Lis','Gru'],
+ dayNames: ['Niedziela','Poniedziałek','Wtorek','Środa','Czwartek','Piątek','Sobota'],
+ dayNamesShort: ['Nie','Pn','Wt','Śr','Czw','Pt','So'],
+ dayNamesMin: ['N','Pn','Wt','Śr','Cz','Pt','So'],
+ weekHeader: 'Tydz',
+ dateFormat: 'dd.mm.yy',
+ firstDay: 1,
+ isRTL: false,
+ showMonthAfterYear: false,
+ yearSuffix: ''};
+ $.datepicker.setDefaults($.datepicker.regional['pl']);
+});
diff --git a/inc/lang/pl/lang.php b/inc/lang/pl/lang.php
index 118f0e5ab..e5f2d8d40 100644
--- a/inc/lang/pl/lang.php
+++ b/inc/lang/pl/lang.php
@@ -1,8 +1,8 @@
<?php
+
/**
- * polish language file
- *
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
* @author Grzegorz Żur <grzegorz.zur@gmail.com>
* @author Mariusz Kujawski <marinespl@gmail.com>
* @author Maciej Kurczewski <pipijajko@gmail.com>
@@ -14,6 +14,8 @@
* @author Łukasz Chmaj <teachmeter@gmail.com>
* @author Begina Felicysym <begina.felicysym@wp.eu>
* @author Aoi Karasu <aoikarasu@gmail.com>
+ * @author Tomasz Bosak <bosak.tomasz@gmail.com>
+ * @author Paweł Jan Czochański <czochanski@gmail.com>
*/
$lang['encoding'] = 'utf-8';
$lang['direction'] = 'ltr';
@@ -57,6 +59,7 @@ $lang['btn_revert'] = 'Przywróć';
$lang['btn_register'] = 'Zarejestruj się!';
$lang['btn_apply'] = 'Zastosuj';
$lang['btn_media'] = 'Menadżer multimediów';
+$lang['btn_deleteuser'] = 'Usuń moje konto';
$lang['loggedinas'] = 'Zalogowany jako';
$lang['user'] = 'Użytkownik';
$lang['pass'] = 'Hasło';
@@ -68,6 +71,7 @@ $lang['fullname'] = 'Imię i nazwisko';
$lang['email'] = 'E-mail';
$lang['profile'] = 'Profil użytkownika';
$lang['badlogin'] = 'Nazwa użytkownika lub hasło są nieprawidłowe.';
+$lang['badpassconfirm'] = 'Niestety, hasło jest niepoprawne.';
$lang['minoredit'] = 'Mniejsze zmiany';
$lang['draftdate'] = 'Czas zachowania szkicu';
$lang['nosecedit'] = 'Strona została zmodyfikowana, sekcje zostały zmienione. Załadowano całą stronę.';
@@ -84,6 +88,11 @@ $lang['profna'] = 'To wiki nie pozwala na zmianę profilu.';
$lang['profnochange'] = 'Żadnych zmian, nic do zrobienia.';
$lang['profnoempty'] = 'Pusta nazwa lub adres e-mail nie dozwolone.';
$lang['profchanged'] = 'Zaktualizowano profil użytkownika.';
+$lang['profnodelete'] = 'Ta wiki nie umożliwia usuwania użytkowników';
+$lang['profdeleteuser'] = 'Usuń konto';
+$lang['profdeleted'] = 'Twoje konto zostało usunięte z tej wiki';
+$lang['profconfdelete'] = 'Chcę usunąć moje konto z tej wiki. <br/> Decyzja nie może być cofnięta.';
+$lang['profconfdeletemissing'] = 'Pole potwierdzenia nie zostało zaznaczone';
$lang['pwdforget'] = 'Nie pamiętasz hasła? Zdobądź nowe!';
$lang['resendna'] = 'To wiki nie pozwala na powtórne przesyłanie hasła.';
$lang['resendpwd'] = 'Podaj nowe hasło dla';
@@ -199,6 +208,7 @@ $lang['user_tools'] = 'Narzędzia użytkownika';
$lang['site_tools'] = 'Narzędzia witryny';
$lang['page_tools'] = 'Narzędzia strony';
$lang['skip_to_content'] = 'przejście do zawartości';
+$lang['sidebar'] = 'Pasek boczny';
$lang['mail_newpage'] = 'Strona dodana:';
$lang['mail_changed'] = 'Strona zmieniona:';
$lang['mail_subscribe_list'] = 'Zmienione strony w katalogu:';
@@ -265,6 +275,8 @@ $lang['subscr_m_unsubscribe'] = 'Zrezygnuj z subskrypcji';
$lang['subscr_m_subscribe'] = 'Subskrybuj';
$lang['subscr_m_receive'] = 'Otrzymuj';
$lang['subscr_style_every'] = 'email przy każdej zmianie';
+$lang['subscr_style_digest'] = 'e-mailowy wyciąg zmian dla każdej strony (co %.2f dni)';
+$lang['subscr_style_list'] = 'lista zmienionych stron od ostatniego e-maila (co %.2f dni)';
$lang['authtempfail'] = 'Uwierzytelnienie użytkownika jest w tej chwili niemożliwe. Jeśli ta sytuacja się powtórzy, powiadom administratora tego wiki.';
$lang['authpwdexpire'] = 'Twoje hasło wygaśnie za %d dni. Należy je zmienić w krótkim czasie.';
$lang['i_chooselang'] = 'Wybierz język';
@@ -288,8 +300,12 @@ $lang['i_policy'] = 'Wstępna polityka uprawnień ACL';
$lang['i_pol0'] = 'Otwarte Wiki (odczyt, zapis i dodawanie plików dla wszystkich)';
$lang['i_pol1'] = 'Publiczne Wiki (odczyt dla wszystkich, zapis i dodawanie plików tylko dla zarejestrowanych użytkowników)';
$lang['i_pol2'] = 'Zamknięte Wiki (odczyt, zapis i dodawanie plików tylko dla zarejestrowanych użytkowników)';
+$lang['i_allowreg'] = 'Pozwól użytkownikom rejestrować się.';
$lang['i_retry'] = 'Spróbuj ponownie';
$lang['i_license'] = 'Wybierz licencję, na warunkach której chcesz udostępniać treści:';
+$lang['i_license_none'] = 'Nie pokazuj żadnych informacji o licencji.';
+$lang['i_pop_field'] = 'Proszę, pomóż nam ulepszyć doświadczenia z DokuWiki:';
+$lang['i_pop_label'] = 'Raz na miesiąc, wysyłaj anonimowe statystyki do deweloperów DokuWiki';
$lang['recent_global'] = 'W tej chwili przeglądasz zmiany w katalogu <b>%s</b>. Możesz przejrzeć także <a href="%s">zmiany w całym wiki</a>.';
$lang['years'] = '%d lat temu';
$lang['months'] = '%d miesięcy temu';
@@ -309,7 +325,7 @@ $lang['media_list_thumbs'] = 'Miniatury';
$lang['media_list_rows'] = 'Wiersze';
$lang['media_sort_name'] = 'Nazwa';
$lang['media_sort_date'] = 'Data';
-$lang['media_namespaces'] = 'Wybierz przestrzeń nazw';
+$lang['media_namespaces'] = 'Wybierz katalog';
$lang['media_files'] = 'Pliki w %s';
$lang['media_upload'] = 'Przesyłanie plików na %s';
$lang['media_search'] = 'Znajdź w %s';
@@ -322,3 +338,7 @@ $lang['media_perm_read'] = 'Przepraszamy, nie masz wystarczających uprawn
$lang['media_perm_upload'] = 'Przepraszamy, nie masz wystarczających uprawnień do przesyłania plików.';
$lang['media_update'] = 'Prześlij nową wersję';
$lang['media_restore'] = 'Odtwórz tą wersję';
+$lang['currentns'] = 'Obecny katalog';
+$lang['searchresult'] = 'Wyniki wyszukiwania';
+$lang['plainhtml'] = 'Czysty HTML';
+$lang['wikimarkup'] = 'Znaczniki';
diff --git a/inc/lang/pt-br/editrev.txt b/inc/lang/pt-br/editrev.txt
index c7aa47878..df6413525 100644
--- a/inc/lang/pt-br/editrev.txt
+++ b/inc/lang/pt-br/editrev.txt
@@ -1,4 +1,4 @@
-**Você carregou uma revisão antiga desse documento!** Se você salvá-la, irá criar uma nova versão em esses dados.
+**Você carregou uma revisão antiga desse documento!** Se você salvá-la, irá criar uma nova versão com esses dados.
----
diff --git a/inc/lang/pt-br/index.txt b/inc/lang/pt-br/index.txt
index a7d17a2bc..816a49952 100644
--- a/inc/lang/pt-br/index.txt
+++ b/inc/lang/pt-br/index.txt
@@ -1,3 +1,3 @@
====== Índice ======
-Esse é um índice de todas as páginas disponíveis, ordenadas por [[doku>namespaces|espaços de nomes]]. \ No newline at end of file
+Esse é um índice de todas as páginas disponíveis, ordenadas por [[doku>namespaces|domínios]]. \ No newline at end of file
diff --git a/inc/lang/pt-br/jquery.ui.datepicker.js b/inc/lang/pt-br/jquery.ui.datepicker.js
new file mode 100644
index 000000000..521967ec3
--- /dev/null
+++ b/inc/lang/pt-br/jquery.ui.datepicker.js
@@ -0,0 +1,23 @@
+/* Brazilian initialisation for the jQuery UI date picker plugin. */
+/* Written by Leonildo Costa Silva (leocsilva@gmail.com). */
+jQuery(function($){
+ $.datepicker.regional['pt-BR'] = {
+ closeText: 'Fechar',
+ prevText: '&#x3C;Anterior',
+ nextText: 'Próximo&#x3E;',
+ currentText: 'Hoje',
+ monthNames: ['Janeiro','Fevereiro','Março','Abril','Maio','Junho',
+ 'Julho','Agosto','Setembro','Outubro','Novembro','Dezembro'],
+ monthNamesShort: ['Jan','Fev','Mar','Abr','Mai','Jun',
+ 'Jul','Ago','Set','Out','Nov','Dez'],
+ dayNames: ['Domingo','Segunda-feira','Terça-feira','Quarta-feira','Quinta-feira','Sexta-feira','Sábado'],
+ dayNamesShort: ['Dom','Seg','Ter','Qua','Qui','Sex','Sáb'],
+ dayNamesMin: ['Dom','Seg','Ter','Qua','Qui','Sex','Sáb'],
+ weekHeader: 'Sm',
+ dateFormat: 'dd/mm/yy',
+ firstDay: 0,
+ isRTL: false,
+ showMonthAfterYear: false,
+ yearSuffix: ''};
+ $.datepicker.setDefaults($.datepicker.regional['pt-BR']);
+});
diff --git a/inc/lang/pt-br/lang.php b/inc/lang/pt-br/lang.php
index 812799f04..6845e792d 100644
--- a/inc/lang/pt-br/lang.php
+++ b/inc/lang/pt-br/lang.php
@@ -22,6 +22,7 @@
* @author Victor Westmann <victor.westmann@gmail.com>
* @author Leone Lisboa Magevski <leone1983@gmail.com>
* @author Dário Estevão <darioems@gmail.com>
+ * @author Juliano Marconi Lanigra <juliano.marconi@gmail.com>
*/
$lang['encoding'] = 'utf-8';
$lang['direction'] = 'ltr';
@@ -97,6 +98,8 @@ $lang['profchanged'] = 'O perfil do usuário foi atualizado com sucess
$lang['profnodelete'] = 'Esse wiki não suporta a exclusão de usuários ';
$lang['profdeleteuser'] = 'Excluir a conta';
$lang['profdeleted'] = 'Sua conta de usuário foi excluída desse wiki';
+$lang['profconfdelete'] = 'Eu desejo remover minha conta dessa wiki. <br/> Essa ação não pode ser desfeita.';
+$lang['profconfdeletemissing'] = 'Caixa de confirmação não marcada';
$lang['pwdforget'] = 'Esqueceu sua senha? Solicite outra';
$lang['resendna'] = 'Esse wiki não tem suporte para o reenvio de senhas.';
$lang['resendpwd'] = 'Definir a nova senha para';
@@ -304,6 +307,7 @@ $lang['i_policy'] = 'Política inicial de permissões';
$lang['i_pol0'] = 'Wiki aberto (leitura, escrita e envio de arquivos por todos)';
$lang['i_pol1'] = 'Wiki público (leitura por todos, escrita e envio de arquivos por usuários registrados)';
$lang['i_pol2'] = 'Wiki fechado (leitura, escrita e envio de arquivos somente por usuários registrados)';
+$lang['i_allowreg'] = 'Permite usuários se registrarem';
$lang['i_retry'] = 'Tentar novamente';
$lang['i_license'] = 'Por favor escolha a licença que voce deseja utilizar para seu conteúdo:';
$lang['i_license_none'] = 'Não mostrar nenhuma informação da licença';
@@ -341,3 +345,7 @@ $lang['media_perm_read'] = 'Desculpe, mas você não tem privilégios sufi
$lang['media_perm_upload'] = 'Desculpe, mas você não tem privilégios suficientes para enviar arquivos.';
$lang['media_update'] = 'Enviar uma nova versão';
$lang['media_restore'] = 'Restaurar esta versão';
+$lang['currentns'] = 'Domínio atual';
+$lang['searchresult'] = 'Resultado da Busca';
+$lang['plainhtml'] = 'HTML simples';
+$lang['wikimarkup'] = 'Marcação wiki';
diff --git a/inc/lang/pt/jquery.ui.datepicker.js b/inc/lang/pt/jquery.ui.datepicker.js
new file mode 100644
index 000000000..4fb16f032
--- /dev/null
+++ b/inc/lang/pt/jquery.ui.datepicker.js
@@ -0,0 +1,22 @@
+/* Portuguese initialisation for the jQuery UI date picker plugin. */
+jQuery(function($){
+ $.datepicker.regional['pt'] = {
+ closeText: 'Fechar',
+ prevText: 'Anterior',
+ nextText: 'Seguinte',
+ currentText: 'Hoje',
+ monthNames: ['Janeiro','Fevereiro','Março','Abril','Maio','Junho',
+ 'Julho','Agosto','Setembro','Outubro','Novembro','Dezembro'],
+ monthNamesShort: ['Jan','Fev','Mar','Abr','Mai','Jun',
+ 'Jul','Ago','Set','Out','Nov','Dez'],
+ dayNames: ['Domingo','Segunda-feira','Terça-feira','Quarta-feira','Quinta-feira','Sexta-feira','Sábado'],
+ dayNamesShort: ['Dom','Seg','Ter','Qua','Qui','Sex','Sáb'],
+ dayNamesMin: ['Dom','Seg','Ter','Qua','Qui','Sex','Sáb'],
+ weekHeader: 'Sem',
+ dateFormat: 'dd/mm/yy',
+ firstDay: 0,
+ isRTL: false,
+ showMonthAfterYear: false,
+ yearSuffix: ''};
+ $.datepicker.setDefaults($.datepicker.regional['pt']);
+});
diff --git a/inc/lang/ro/admin.txt b/inc/lang/ro/admin.txt
index b19a4d804..8c7b3d6bd 100644
--- a/inc/lang/ro/admin.txt
+++ b/inc/lang/ro/admin.txt
@@ -1,3 +1,3 @@
====== Administrare ======
-Puteți vedea mai jos o listă cu activitățile administrative disponibile în DokuWiki. \ No newline at end of file
+Poți vedea mai jos o listă cu acțiunile administrative disponibile în DokuWiki.
diff --git a/inc/lang/ro/adminplugins.txt b/inc/lang/ro/adminplugins.txt
index 6712d8225..121a8fdb6 100644
--- a/inc/lang/ro/adminplugins.txt
+++ b/inc/lang/ro/adminplugins.txt
@@ -1 +1 @@
-===== Plugin-uri Adiționale ===== \ No newline at end of file
+===== Plugin-uri suplimentare =====
diff --git a/inc/lang/ro/backlinks.txt b/inc/lang/ro/backlinks.txt
index 3fd5e3415..ae52a105f 100644
--- a/inc/lang/ro/backlinks.txt
+++ b/inc/lang/ro/backlinks.txt
@@ -1,4 +1,3 @@
====== Legături înapoi ======
Aceasta e o listă de pagini care au legături către pagina curentă.
-
diff --git a/inc/lang/ro/conflict.txt b/inc/lang/ro/conflict.txt
index 072f574f4..dcac6774a 100644
--- a/inc/lang/ro/conflict.txt
+++ b/inc/lang/ro/conflict.txt
@@ -1,6 +1,7 @@
====== Există o nouă versiune ======
-Există o versiune nouă a documentului editat. Aceasta se întîmplă cînd un alt utilizator a schimbat documentul în timp ce îl editezi.
-
-Examinează diferențele arătate mai jos, apoi ia decizia care versiune o reții. Dacă alegi ''Salvează'', versiunea documentului va fi salvată. Apăsați ''Renunțare'' pentru a menține versiunea curentă.
+Există o versiune nouă a paginii editate. Aceasta se întâmplă atunci când
+un alt utilizator a modificat pagina în timp ce editai.
+Examinează diferențele indicate mai jos, apoi ia decizia care versiune o vei
+reține. Dacă alegi ''Salvează'', versiunea paginii va fi salvată. Apasă ''Renunțare'' pentru a menține versiunea curentă.
diff --git a/inc/lang/ro/denied.txt b/inc/lang/ro/denied.txt
index 430db7610..8e8126a17 100644
--- a/inc/lang/ro/denied.txt
+++ b/inc/lang/ro/denied.txt
@@ -1,4 +1,4 @@
-====== Acces Interzis ======
-
-Din păcate nu aveți destule drepturi pentru a continua. Poate ați uitat să vă logați?
+====== Acces nepermis ======
+Din păcate nu ai destule drepturi pentru a continua. Poate ai uitat să te
+autentifici?
diff --git a/inc/lang/ro/diff.txt b/inc/lang/ro/diff.txt
index 197244453..4bf6250d9 100644
--- a/inc/lang/ro/diff.txt
+++ b/inc/lang/ro/diff.txt
@@ -1,4 +1,3 @@
====== Diferențe ======
-Aceasta arată diferențele dintre revziile selectate și versiunea curentă a paginii.
-
+Aici sunt prezentate diferențele dintre versiunile selectate și versiunea curentă a paginii.
diff --git a/inc/lang/ro/draft.txt b/inc/lang/ro/draft.txt
index 74badee8e..550db52ff 100644
--- a/inc/lang/ro/draft.txt
+++ b/inc/lang/ro/draft.txt
@@ -1,5 +1,8 @@
====== Fișierul schiță nu a fost găsit ======
-Ultima dvs. sesiune de editare nu s-a finalizat corect. În timpul lucrului, DocuWiki a salvat automat o schiță, pe care o puteți utiliza acum pentru a continua editarea. Mai jos puteți vedea informațiile care s-au salvat de la ultima dvs. sesiune.
+Ultima ta sesiune de editare nu s-a finalizat corect. În vreme ce lucrai,
+DokuWiki a salvat automat o schiță, pe care o poți utiliza acum pentru a
+continua editarea. Mai jos poți vedea informațiile care s-au salvat de la ultima sesiune.
-Decideți dacă vreți să //recuperați// sesiunea de editare pierdută, //ștergeți// schița salvată automat sau să //anulați// procesul de editare. \ No newline at end of file
+Decide dacă vrei să //recuperezi// sesiunea de editare pierdută, să //ștergi//
+schița salvată automat sau să //anulezi// procesul de editare.
diff --git a/inc/lang/ro/edit.txt b/inc/lang/ro/edit.txt
index 78761b9c4..cd5aa2e50 100644
--- a/inc/lang/ro/edit.txt
+++ b/inc/lang/ro/edit.txt
@@ -1,2 +1 @@
-Editează pagina și apasă ''Salvează''. Vezi [[wiki:syntax]] pentru sintaxă. Te rog editează pagina doar pentru a o **îmbunătați**. Dacă vrei să testezi cîteva lucruri, învață sa faci primii pași în [[playground:playground]].
-
+Editează pagina și apasă ''Salvează''. Vezi [[wiki:syntax]] pentru sintaxă. Te rog editează pagina doar pentru a o **îmbunătați**. Dacă vrei să testezi câteva lucruri, învață sa faci primii pași în [[playground:playground]].
diff --git a/inc/lang/ro/editrev.txt b/inc/lang/ro/editrev.txt
index 290dca496..983cd657d 100644
--- a/inc/lang/ro/editrev.txt
+++ b/inc/lang/ro/editrev.txt
@@ -1,2 +1,3 @@
-**Ai încărcat o versuine veche a documentului!** Dacă ai salvat-o, vei crea o versiune nouă cu această dată.
+**Ai încărcat o versiune anterioră a paginii.** Dacă ai salvat-o, vei crea o
+versiune nouă cu aceast conținut.
----
diff --git a/inc/lang/ro/index.txt b/inc/lang/ro/index.txt
index 5b88cc03b..1ae5b9ca5 100644
--- a/inc/lang/ro/index.txt
+++ b/inc/lang/ro/index.txt
@@ -1,4 +1,4 @@
====== Index ======
-Acesta e un index al tuturor paginilor ordonat după [[doku>namespaces|namespaces]].
-
+Acesta e un index al tuturor paginilor ordonat după [[doku>namespaces|spații
+de nume]].
diff --git a/inc/lang/ro/install.html b/inc/lang/ro/install.html
index 7fdc8fc21..222b86e54 100644
--- a/inc/lang/ro/install.html
+++ b/inc/lang/ro/install.html
@@ -1,10 +1,10 @@
-<p>Această pagină oferă asistență la instalarea pentru prima dată a <a href="http://dokuwiki.org">Dokuwiki</a>. Mai multe informații privind această instalare găsiți pe <a href="http://dokuwiki.org/installer">pagina de documentație</a>.</p>
+<p>Această pagină oferă asistență la instalarea pentru prima dată a <a href="http://dokuwiki.org">Dokuwiki</a>. Mai multe informații privind această instalare găsești în <a href="http://dokuwiki.org/installer">pagina de documentație</a>.</p>
-<p>DokuWiki folosește fișiere obișnuite pentru stocarea paginilor wiki și a informaților asociate acestor pagini (de ex. imagini, indecși de căutare, versiuni vechi, etc). Pentru a lucra cu succes, DokuWiki <strong>trebuie</strong> să aibă drepturi de scriere în directoarele ce conțin aceste fișiere.
-Acest script de instalare nu poate seta drepturile directoarelor. De regulă, aceasta se face direct, în linie de comandă, sau în cazul găzduirii, prin FTP sau prin panoul de control al gazdei (de ex. cPanel).</p>
+<p>DokuWiki folosește fișiere obișnuite pentru stocarea paginilor wiki și a informaților asociate acestor pagini (de ex. imagini, indecși de căutare, versiuni vechi etc.). Pentru a putea fi folosit, DokuWiki <strong>trebuie</strong> să aibă drepturi de scriere în directoarele ce conțin aceste fișiere.
+Acest script de instalare nu poate configura drepturile directoarelor. De regulă, aceasta se face direct, în linie de comandă, sau în cazul unoi soluții de hosting, prin FTP sau prin panoul de control al gazdei (de ex. cPanel).</p>
-<p>Acest script de instalare va configura DokuWiki pentru <abbr title="access control list">ACL</abbr>, care permite logarea administratorului și accesul la meniul de administrare pentru instalarea plugin-urilor, gestiunea utilizatorilor, a accesului la paginile wiki și modificarea setărilor de configurare.
-Nu este necesar pentru ca DokuWiki să funcționeze, însă face mai ușoară administrarea DokuWiki.</p>
+<p>Acest script de instalare va configura DokuWiki pentru <abbr title="access control list">ACL</abbr>, care permite autentificarea administratorului și accesul la meniul de administrare pentru instalarea plugin-urilor, gestiunea utilizatorilor, accesului la paginile wiki și modificarea configurației.
+Acest script nu este necesar pentru funcționarea DokuWiki, însă ușurează administrarea.
-<p>Utilizatorii experimentați sau utilizatorii ce au nevoie de setări speciale ar putea folosi această legătură privind<a href="http://dokuwiki.org/install">instrucțiunile de instalare</a> și <a href="http://dokuwiki.org/config">setările de configurare</a>.</p>
+<p>Utilizatorii experimentați sau utilizatorii care au nevoie de o configurație specială pot accesa paginile cu <a href="http://dokuwiki.org/install">instrucțiunile de instalare</a> și <a href="http://dokuwiki.org/config">opțiunile de configurare</a> a DokuWiki.</p>
diff --git a/inc/lang/ro/jquery.ui.datepicker.js b/inc/lang/ro/jquery.ui.datepicker.js
new file mode 100644
index 000000000..a988270d7
--- /dev/null
+++ b/inc/lang/ro/jquery.ui.datepicker.js
@@ -0,0 +1,26 @@
+/* Romanian initialisation for the jQuery UI date picker plugin.
+ *
+ * Written by Edmond L. (ll_edmond@walla.com)
+ * and Ionut G. Stan (ionut.g.stan@gmail.com)
+ */
+jQuery(function($){
+ $.datepicker.regional['ro'] = {
+ closeText: 'Închide',
+ prevText: '&#xAB; Luna precedentă',
+ nextText: 'Luna următoare &#xBB;',
+ currentText: 'Azi',
+ monthNames: ['Ianuarie','Februarie','Martie','Aprilie','Mai','Iunie',
+ 'Iulie','August','Septembrie','Octombrie','Noiembrie','Decembrie'],
+ monthNamesShort: ['Ian', 'Feb', 'Mar', 'Apr', 'Mai', 'Iun',
+ 'Iul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],
+ dayNames: ['Duminică', 'Luni', 'Marţi', 'Miercuri', 'Joi', 'Vineri', 'Sâmbătă'],
+ dayNamesShort: ['Dum', 'Lun', 'Mar', 'Mie', 'Joi', 'Vin', 'Sâm'],
+ dayNamesMin: ['Du','Lu','Ma','Mi','Jo','Vi','Sâ'],
+ weekHeader: 'Săpt',
+ dateFormat: 'dd.mm.yy',
+ firstDay: 1,
+ isRTL: false,
+ showMonthAfterYear: false,
+ yearSuffix: ''};
+ $.datepicker.setDefaults($.datepicker.regional['ro']);
+});
diff --git a/inc/lang/ro/lang.php b/inc/lang/ro/lang.php
index 028c55a20..491ab58e7 100644
--- a/inc/lang/ro/lang.php
+++ b/inc/lang/ro/lang.php
@@ -28,7 +28,7 @@ $lang['btn_preview'] = 'Previzualizează';
$lang['btn_top'] = 'La început';
$lang['btn_newer'] = '<< mai recent';
$lang['btn_older'] = 'mai vechi>>';
-$lang['btn_revs'] = 'Versiuni vechi';
+$lang['btn_revs'] = 'Versiuni anterioare';
$lang['btn_recent'] = 'Modificări recente';
$lang['btn_upload'] = 'Upload';
$lang['btn_cancel'] = 'Renunțare';
@@ -53,7 +53,7 @@ $lang['btn_revert'] = 'Revenire';
$lang['btn_register'] = 'Înregistrează';
$lang['btn_apply'] = 'Aplică';
$lang['btn_media'] = 'Administrare media';
-$lang['loggedinas'] = 'Logat ca și';
+$lang['loggedinas'] = 'Autentificat ca';
$lang['user'] = 'Utilizator';
$lang['pass'] = 'Parola';
$lang['newpass'] = 'Parola nouă';
@@ -72,15 +72,15 @@ $lang['reguexists'] = 'Ne pare rău, un utilizator cu acest nume este
$lang['regsuccess'] = 'Utilizatorul a fost creat. Parola a fost trimisă prin e-mail.';
$lang['regsuccess2'] = 'Utilizatorul a fost creat.';
$lang['regmailfail'] = 'Se pare că a fost o eroare la trimiterea parolei prin e-mail. Contactează administratorul!';
-$lang['regbadmail'] = 'Adresa de e-mail este nevalidă - dacă sunteți de părere că este o eroare contactează administratorul.';
-$lang['regbadpass'] = 'Cele două parole furnizate nu sunt identice; încercați din nou.';
+$lang['regbadmail'] = 'Adresa de e-mail este nevalidă - dacă ești de părere că este o eroare contactează administratorul.';
+$lang['regbadpass'] = 'Cele două parole furnizate nu sunt identice; încearcă din nou.';
$lang['regpwmail'] = 'Parola ta DokuWiki';
-$lang['reghere'] = 'Înca nu ai un cont? Fă-ți unul!';
+$lang['reghere'] = 'Încă nu ai un cont? Creează unul!';
$lang['profna'] = 'Acest wiki nu permite modificarea profilului';
$lang['profnochange'] = 'Nici o modificare; nimic de făcut.';
-$lang['profnoempty'] = 'Nu sunt admise numele sau adresa de e-mail necompletate.';
+$lang['profnoempty'] = 'Nu sunt permise numele sau adresa de e-mail necompletate.';
$lang['profchanged'] = 'Profilul de utilizator a fost actualizat cu succes.';
-$lang['pwdforget'] = 'Parola uitată? Obține una nouă!';
+$lang['pwdforget'] = 'Parolă uitată? Obține una nouă!';
$lang['resendna'] = 'Acest wiki nu permite retrimiterea parolei.';
$lang['resendpwd'] = 'Configurează o parolă nouă pentru';
$lang['resendpwdmissing'] = 'Ne pare rău, trebuie completate toate câmpurile.';
@@ -103,15 +103,15 @@ Dorești să continui?';
$lang['js']['searchmedia'] = 'Caută fișiere';
$lang['js']['keepopen'] = 'Menține fereastra deschisă la selecție';
$lang['js']['hidedetails'] = 'Ascunde detalii';
-$lang['js']['mediatitle'] = 'Setări link';
-$lang['js']['mediadisplay'] = 'Tip link';
+$lang['js']['mediatitle'] = 'Configurare link';
+$lang['js']['mediadisplay'] = 'Tip de link';
$lang['js']['mediaalign'] = 'Aliniere';
$lang['js']['mediasize'] = 'Mărime imagine';
$lang['js']['mediatarget'] = 'Țintă link';
$lang['js']['mediaclose'] = 'Închide';
$lang['js']['mediainsert'] = 'Inserează';
$lang['js']['mediadisplayimg'] = 'Afișează imaginea';
-$lang['js']['mediadisplaylnk'] = 'Afișează doar linkul';
+$lang['js']['mediadisplaylnk'] = 'Afișează doar link-ul';
$lang['js']['mediasmall'] = 'Versiune mică';
$lang['js']['mediamedium'] = 'Versiune medie';
$lang['js']['medialarge'] = 'Versiune mare';
@@ -133,7 +133,7 @@ $lang['js']['restore_confirm'] = 'Ești sigur de restaurarea acestei versiuni?';
$lang['js']['media_diff'] = 'Arată diferențele:';
$lang['js']['media_diff_both'] = 'Unul lângă altul';
$lang['js']['media_diff_opacity'] = 'Străveziu';
-$lang['js']['media_diff_portions'] = 'Lovește cu putere';
+$lang['js']['media_diff_portions'] = 'Glisează';
$lang['js']['media_select'] = 'Selectează fișierele...';
$lang['js']['media_upload_btn'] = 'Încarcă';
$lang['js']['media_done_btn'] = 'Gata';
@@ -283,7 +283,7 @@ $lang['i_success'] = 'Configurarea a fost finalizată cu succes. Acu
$lang['i_failure'] = 'Au apărut erori la scrierea fișierelor de configurare. Va trebui să le corectezi manual înainte de a putea folosi <a href="doku.php?id=wiki:welcome">noua ta instanță DokuWiki</a>.';
$lang['i_policy'] = 'Politica ACL (liste de control a accesului) inițială';
$lang['i_pol0'] = 'Wiki deschis (oricine poate citi, scrie și încărca fișiere)';
-$lang['i_pol1'] = 'Wiki public (oricine poate citi, utilizatorii înregistrați pot scrie și încărca fișiere';
+$lang['i_pol1'] = 'Wiki public (oricine poate citi, utilizatorii înregistrați pot scrie și încărca fișiere)';
$lang['i_pol2'] = 'Wiki închis (doar utilizatorii înregistrați pot citi, scrie și încărca fișiere)';
$lang['i_retry'] = 'Încearcă din nou';
$lang['i_license'] = 'Te rugăm să alegi licența sub care dorești să publici conținutul:';
diff --git a/inc/lang/ro/locked.txt b/inc/lang/ro/locked.txt
index 8708157ec..d1e80ad40 100644
--- a/inc/lang/ro/locked.txt
+++ b/inc/lang/ro/locked.txt
@@ -1,3 +1,4 @@
====== Pagină blocată ======
-Pagina este momentan blocată de alt utilizator. Trebuie să aștepți pînă cînd acest utilizator termină editarea ori expiră blocarea.
+Pagina este momentan blocată de alt utilizator. Trebuie să aștepți pînă când
+acest utilizator termină editarea sau până când expiră blocarea.
diff --git a/inc/lang/ro/login.txt b/inc/lang/ro/login.txt
index 81bca6298..7de38f621 100644
--- a/inc/lang/ro/login.txt
+++ b/inc/lang/ro/login.txt
@@ -1,4 +1,4 @@
-====== Login ======
-
-Nu sînteți logat! Introduceți datele de autentificare pentru logare. Trebuie să permiteți cookie-uri pentru logare.
+====== Autentificare ======
+Nu ești autentificat! Introdu datele de autentificare. Pentru ca
+autentificarea să funcționeze trebuie să fie permise cookie-urile în browser.
diff --git a/inc/lang/ro/mailtext.txt b/inc/lang/ro/mailtext.txt
index 77aca8c4b..8d20a301d 100644
--- a/inc/lang/ro/mailtext.txt
+++ b/inc/lang/ro/mailtext.txt
@@ -1,16 +1,17 @@
-A fost adăugată sau schimbată o pagină. Aici sînt detaliile:
+Salutare, @FULLNAME@!
-Data : @DATE@
-Navigator : @BROWSER@
-Adresa-IP : @IPADDRESS@
-Nume gazdă : @HOSTNAME@
-Versiune veche : @OLDPAGE@
-Versiune nouă : @NEWPAGE@
-Rezumat editare: @SUMMARY@
+A fost adăugată sau modificată o pagină. Aici sunt detaliile:
-@DIFF@
+Dată : @DATE@
+Browser : @BROWSER@
+Adresă IP : @IPADDRESS@
+Hostname : @HOSTNAME@
+Versiune anterioară : @OLDPAGE@
+Versiune curentă : @NEWPAGE@
+Sumar editare: @SUMMARY@
+@DIFF@
---
-Mailul a fost generat de DokuWiki la
+--
+Acest e-mail a fost generat de DokuWiki la
@DOKUWIKIURL@
diff --git a/inc/lang/ro/newpage.txt b/inc/lang/ro/newpage.txt
index 886258609..2ef35136e 100644
--- a/inc/lang/ro/newpage.txt
+++ b/inc/lang/ro/newpage.txt
@@ -1,3 +1,3 @@
-====== Subiectul nu există încă ======
+====== Pagina nu există încă ======
-Ați urmat o legătură către un subiect care nu există. O puteți crea prin apăsarea butonului ''Editează această pagină''.
+Ai urmat o legătură către o pagină care nu există. O poti crea prin apăsarea butonului ''Editează această pagină''.
diff --git a/inc/lang/ro/norev.txt b/inc/lang/ro/norev.txt
index 4a21abcbf..08bbb74dd 100644
--- a/inc/lang/ro/norev.txt
+++ b/inc/lang/ro/norev.txt
@@ -1,4 +1,4 @@
-====== Nu există versiunea ======
-
-Versiunea specificată nu există. Folosește butonul ''Versiuni vechi'' pentru o listă a versiunilor acestui document.
+====== Nu există versiunea paginii ======
+Versiunea indicată nu există. Folosește butonul ''Versiuni anterioare'' pentru
+o listă a versiunilor acestei pagini.
diff --git a/inc/lang/ro/password.txt b/inc/lang/ro/password.txt
index a7eb12dd9..eb325204b 100644
--- a/inc/lang/ro/password.txt
+++ b/inc/lang/ro/password.txt
@@ -1,10 +1,10 @@
-Salut @FULLNAME@!
+Salutare, @FULLNAME@!
-Aici sînt datele utilizator pentru @TITLE@ la @DOKUWIKIURL@
+Aici se găsesc credențialele de utilizator pentru @TITLE@ la @DOKUWIKIURL@
Login : @LOGIN@
Parola : @PASSWORD@
---
-Mesajul a fost generat de către DokuWiki la
+--
+Acest e-mail a fost generat de DokuWiki la
@DOKUWIKIURL@
diff --git a/inc/lang/ro/preview.txt b/inc/lang/ro/preview.txt
index 1964d7476..c89d19727 100644
--- a/inc/lang/ro/preview.txt
+++ b/inc/lang/ro/preview.txt
@@ -1,4 +1,3 @@
====== Previzualizare ======
-Acesta este modul în care va arăta textul. Nu uita: **Nu** e încă **salvat**!
-
+Acesta este modul în care va arăta textul. Ai în vedere: **Nu** e încă **salvat**!
diff --git a/inc/lang/ro/pwconfirm.txt b/inc/lang/ro/pwconfirm.txt
index ae2d9f963..0728b2ef0 100644
--- a/inc/lang/ro/pwconfirm.txt
+++ b/inc/lang/ro/pwconfirm.txt
@@ -1,13 +1,14 @@
-Salut @FULLNAME@!
+Salutare, @FULLNAME@!
-Cineva a cerut o parolă nouă pentru @TITLE@ pentru conectarea la @DOKUWIKIURL@
+Cineva a cerut o parolă nouă pentru @TITLE@ pentru conectarea la
+@DOKUWIKIURL@.
-Dacă nu ați solicitat o parolă nouă, ignorați acest email.
+Dacă nu ai solicitat o parolă nouă, ignoră acest e-mail.
-Pentru a confirma că cererea a fost într-adevăr trimisă de dumneavoastră, folosiți link-ul de mai jos.
+Pentru a confirma că cererea a fost într-adevăr trimisă de tine, folosește link-ul de mai jos.
@CONFIRM@
--
-Acest mail a fost generat de DocuWiki la
-@DOKUWIKIURL@ \ No newline at end of file
+Acest e-mail a fost generat de DokuWiki la
+@DOKUWIKIURL@
diff --git a/inc/lang/ro/read.txt b/inc/lang/ro/read.txt
index 72c33c0c0..442188f21 100644
--- a/inc/lang/ro/read.txt
+++ b/inc/lang/ro/read.txt
@@ -1,2 +1,2 @@
-Această pagină poate fi doar citită. Poți vedea sursa, dar n-o poți modifica. Consultă administratorul dacă crezi că e ceva în neregulă.
-
+Această pagină poate fi doar citită. Poți vedea sursa, dar nu poți modifica
+pagina. Consultă administratorul dacă ești de părere că ceva este în neregulă.
diff --git a/inc/lang/ro/recent.txt b/inc/lang/ro/recent.txt
index 8d4aa043a..e92ca8fa7 100644
--- a/inc/lang/ro/recent.txt
+++ b/inc/lang/ro/recent.txt
@@ -1,5 +1,3 @@
-====== Schimbări recente ======
-
-Următoarele pagini au fost schimbate recent.
-
+====== Modificări recente ======
+Următoarele pagini au fost modificate recent.
diff --git a/inc/lang/ro/register.txt b/inc/lang/ro/register.txt
index e062a46bc..1a6ef2538 100644
--- a/inc/lang/ro/register.txt
+++ b/inc/lang/ro/register.txt
@@ -1,3 +1,4 @@
====== Înregistrează-te ca utilizator nou ======
-Pentru a crea un wiki nou completează mai jos toate informațiile. Asigură-te că ai introdus o adresă de **e-mail validă** unde va fi trimisă noua parolă. Numele de utilizator trebuie de asemenea să fie valid [[doku>pagename|pagename]].
+Pentru a crea un wiki nou completează mai jos toate informațiile. Asigură-te
+că ai introdus o adresă de e-mail **validă** unde va fi trimisă noua parolă. Numele de utilizator trebuie de asemenea să fie valid [[doku>pagename|pagename]].
diff --git a/inc/lang/ro/registermail.txt b/inc/lang/ro/registermail.txt
index fb754af67..2aab247f7 100644
--- a/inc/lang/ro/registermail.txt
+++ b/inc/lang/ro/registermail.txt
@@ -1,14 +1,15 @@
-Un nou utilizator s-a înregsitrat. Iată detaliile:
+Salutare, @FULLNAME@!
-Nume utilizator : @NEWUSER@
+Un nou utilizator s-a înregistrat. Iată detaliile:
+
+Nume de utilizator : @NEWUSER@
Nume complet : @NEWNAME@
E-mail : @NEWEMAIL@
-
-Data : @DATE@
+Dată : @DATE@
Browser : @BROWSER@
Adresă IP : @IPADDRESS@
Hostname : @HOSTNAME@
---
-Acest mail a fost generat automat de către DokuWiki la
+--
+Acest e-mail a fost generat de DokuWiki la
@DOKUWIKIURL@
diff --git a/inc/lang/ro/resendpwd.txt b/inc/lang/ro/resendpwd.txt
index 4a67f9e80..24d995e89 100644
--- a/inc/lang/ro/resendpwd.txt
+++ b/inc/lang/ro/resendpwd.txt
@@ -1,3 +1,5 @@
====== Trimite parolă nouă ======
-Introduceți numele de utilizator în formularul de mai jos pentru a solicita o nouă parolă pentru această wiki. Un link de confirmare va fi trimis la adresa de email înregistrată. \ No newline at end of file
+Introduc numele de utilizator în formularul de mai jos pentru a solicita o
+nouă parolă pentru aceast wiki. Un link de confirmare va fi trimis la adresa
+de e-mail înregistrată.
diff --git a/inc/lang/ro/resetpwd.txt b/inc/lang/ro/resetpwd.txt
index 2eb8052f1..9cea53c4a 100644
--- a/inc/lang/ro/resetpwd.txt
+++ b/inc/lang/ro/resetpwd.txt
@@ -1,3 +1,3 @@
-====== Setează parolă nouă ======
+====== Configurează o parolă nouă ======
-Vă rugăm să introduceți o nouă parolă pentru contul dvs. pe acest wiki. \ No newline at end of file
+Te rog să introduci o parolă nouă pentru contul tău de pe acest wiki.
diff --git a/inc/lang/ro/revisions.txt b/inc/lang/ro/revisions.txt
index d42134c61..7cafaf046 100644
--- a/inc/lang/ro/revisions.txt
+++ b/inc/lang/ro/revisions.txt
@@ -1,4 +1,5 @@
-====== Versiune veche ======
-
-Acestea sînt versiunile vechi ale documentului curent. Pentru revenirea la o versiune mai veche, selecteaz-o de mai jos, clic pe ''Editează această pagină'' și salveaz-o.
+====== Versiune anterioară ======
+Acestea sunt versiunile anterioare ale paginii curente. Pentru revenirea la o
+versiune anteroară, selectează versiunea de mai jos, clic pe ''Editează
+această pagină'' și salvează versiunea.
diff --git a/inc/lang/ro/searchpage.txt b/inc/lang/ro/searchpage.txt
index 8c78c68c3..53e66adf0 100644
--- a/inc/lang/ro/searchpage.txt
+++ b/inc/lang/ro/searchpage.txt
@@ -1,5 +1,5 @@
====== Căutare ======
-Rezultatele căutării sînt afisate mai jos. Dacă n-ați găsit ce-ați căutat, puteți creea o pagină nouă după căutare prin folosirea butonului ''Editează această pagină''.
+Rezultatele căutării sunt afișate mai jos. Dacă nu ai găsit ce ai căutat, poți crea o pagină nouă prin folosirea butonului ''Editează această pagină''.
===== Rezultate =====
diff --git a/inc/lang/ro/showrev.txt b/inc/lang/ro/showrev.txt
index c1d5e545d..4c76fd402 100644
--- a/inc/lang/ro/showrev.txt
+++ b/inc/lang/ro/showrev.txt
@@ -1,2 +1,2 @@
-**Aceasta e o versiune veche a documentului!**
+**Aceasta e o versiune anterioară a paginii.**
----
diff --git a/inc/lang/ro/stopwords.txt b/inc/lang/ro/stopwords.txt
index 1f0d9536b..adcd7eff1 100644
--- a/inc/lang/ro/stopwords.txt
+++ b/inc/lang/ro/stopwords.txt
@@ -1,6 +1,8 @@
# Aceasta este o listă de cuvinte ignorate la indexare, câte un cuvânt pe linie
-# Când editați acest fișier, asigurați-vă că folosiți sfârșituri de linie UNIX (o singură linie nouă)
-# Nu e nevoie să includeți cuvinte mai scurte de 3 caractere - acestea sunt, oricum, ignorate
+# Când editezi acest fișier, asigură-te că folosești sfârșituri de linie UNIX
+# (o singură linie nouă).
+# Nu e nevoie să incluzi cuvinte mai scurte de 3 caractere - acestea sunt,
+# oricum, ignorate.
# Această listă se bazează pe cele ce pot fi găsite la http://www.ranks.nl/stopwords/
about
are
diff --git a/inc/lang/ro/subscr_digest.txt b/inc/lang/ro/subscr_digest.txt
index ad0a30708..8b0aac5c4 100644
--- a/inc/lang/ro/subscr_digest.txt
+++ b/inc/lang/ro/subscr_digest.txt
@@ -1,20 +1,20 @@
-Buna ziua!
+Salutare, @FULLNAME@!
-Pagina @PAGE@ în @TITLE@ wiki s-a modificat.
+Pagina @PAGE@ în @TITLE@ wiki a fost modificată.
Acestea sunt modificările:
--------------------------------------------------------
@DIFF@
--------------------------------------------------------
-Vechea revizie: @OLDPAGE@
-Noua revizie: @NEWPAGE@
+Versiune anterioară: @OLDPAGE@
+Versiune curentă: @NEWPAGE@
-Pentru a anula notificarea paginii, logați-vă pe wiki la
-@DOKUWIKIURL@ apoi navigați la
+Pentru a anula notificarea paginii, autentifică-te pe wiki la
+@DOKUWIKIURL@ apoi accesează
@SUBSCRIBE@
-și dezabonați-vă de la pagină și/sau modificările numelui de spațiu.
+și dezabonează-te de la pagină și/sau modificările spațiului de nume.
--
-Acest mail a fost generat de DokuWiki la
-@DOKUWIKIURL@ \ No newline at end of file
+Acest e-mail a fost generat de DokuWiki la
+@DOKUWIKIURL@
diff --git a/inc/lang/ro/subscr_form.txt b/inc/lang/ro/subscr_form.txt
index e55dfe6cb..c198cafdc 100644
--- a/inc/lang/ro/subscr_form.txt
+++ b/inc/lang/ro/subscr_form.txt
@@ -1,3 +1,4 @@
====== Administrarea abonărilor ======
-Această pagină vă permite să vă administrați abonările pentru pagina curentă și numele de spațiu. \ No newline at end of file
+Această pagină îți permite să îți administrăzi abonările pentru pagina curentă
+și pentru spațiul de nume.
diff --git a/inc/lang/ro/subscr_list.txt b/inc/lang/ro/subscr_list.txt
index 1b55ea917..c34334268 100644
--- a/inc/lang/ro/subscr_list.txt
+++ b/inc/lang/ro/subscr_list.txt
@@ -1,17 +1,17 @@
-Bună ziua!
+Salutare, @FULLNAME@!
-Paginile din numele de spațiu @PAGE@ al @TITLE@ wiki s-au modificat.
-Acestea sunt modificările:
+Paginile din spațiul de nume @PAGE@ al @TITLE@ wiki au fost modificate.
+Modificările sunt următoarele:
--------------------------------------------------------
@DIFF@
--------------------------------------------------------
-Pentru a anula notificarea paginii, logați-vă pe wiki la
-@DOKUWIKIURL@ apoi navigați la
+Pentru a anula notificarea paginii, autentificcă-te pe wiki la
+@DOKUWIKIURL@ apoi accesează
@SUBSCRIBE@
-și dezabonați-vă de la pagină și/sau modificările numelui de spațiu.
+și dezabonează-te de la pagină și/sau modificările spațiului de nume.
--
-Acest mail a fost generat de DokuWiki la
-@DOKUWIKIURL@ \ No newline at end of file
+Acest e-mail a fost generat de DokuWiki la
+@DOKUWIKIURL@
diff --git a/inc/lang/ro/subscr_single.txt b/inc/lang/ro/subscr_single.txt
index 006db741d..0fee1a831 100644
--- a/inc/lang/ro/subscr_single.txt
+++ b/inc/lang/ro/subscr_single.txt
@@ -1,23 +1,23 @@
-Bună ziua!
+Salutare, @FULLNAME@!
-Pagina @PAGE@ în @TITLE@ wiki s-a modificat.
-Acestea sunt modificările:
+Pagina @PAGE@ în @TITLE@ wiki a fost modificată.
+Modificările sunt următoarele:
--------------------------------------------------------
@DIFF@
--------------------------------------------------------
-Data: @DATE@
+Dată: @DATE@
Utilizator: @USER@
Sumarul editării: @SUMMARY@
-Vechea revizie: @OLDPAGE@
-Noua revizie: @NEWPAGE@
+Versiune anterioară: @OLDPAGE@
+Versiune curentă: @NEWPAGE@
-Pentru a anula notificarea paginii, logați-vă pe wiki la
-@DOKUWIKIURL@ apoi navigați la
+Pentru a anula notificarea paginii, autentificcă-te pe wiki la
+@DOKUWIKIURL@ apoi accesează
@SUBSCRIBE@
-și dezabonați-vă de la pagină și/sau modificările numelui de spațiu.
+și dezabonează-te de la pagină și/sau modificările spațiului de nume.
--
-Acest mail a fost generat de DokuWiki la
-@DOKUWIKIURL@ \ No newline at end of file
+Acest e-mail a fost generat de DokuWiki la
+@DOKUWIKIURL@
diff --git a/inc/lang/ro/updateprofile.txt b/inc/lang/ro/updateprofile.txt
index f3985a1c6..de43c69cb 100644
--- a/inc/lang/ro/updateprofile.txt
+++ b/inc/lang/ro/updateprofile.txt
@@ -1,3 +1,4 @@
====== Actualizare profil utilizator ======
-Trebuie să completați doar câmpurile pe care doriți să le modificați. Nu puteți modifica numele de utilizator. \ No newline at end of file
+Trebuie să completezi doar câmpurile pe care dorești să le modifici. Nu poți
+modifica numele de utilizator.
diff --git a/inc/lang/ro/uploadmail.txt b/inc/lang/ro/uploadmail.txt
index c1e5736e2..81c2828e8 100644
--- a/inc/lang/ro/uploadmail.txt
+++ b/inc/lang/ro/uploadmail.txt
@@ -1,7 +1,9 @@
-Un fișier a fost încărcat în DocuWiki. Iată detaliile:
+Salutare, @FULLNAME@!
+
+Un fișier a fost încărcat în DokuWiki. Iată detaliile:
Fișier : @MEDIA@
-Data : @DATE@
+Dată : @DATE@
Browser : @BROWSER@
Adresă IP : @IPADDRESS@
Hostname : @HOSTNAME@
@@ -10,5 +12,5 @@ MIME Type : @MIME@
Utilizator : @USER@
--
-Acest mail a fost generat automat de către DokuWiki la
+Acest e-mail a fost generat de DokuWiki la
@DOKUWIKIURL@
diff --git a/inc/lang/ru/admin.txt b/inc/lang/ru/admin.txt
index e00daa447..cd609a347 100644
--- a/inc/lang/ru/admin.txt
+++ b/inc/lang/ru/admin.txt
@@ -1,4 +1,4 @@
====== Управление ======
-Ниже вы сможете найти список административных операций, доступных в «ДокуВики».
+Ниже вы сможете найти список административных операций, доступных в «Докувики».
diff --git a/inc/lang/ru/jquery.ui.datepicker.js b/inc/lang/ru/jquery.ui.datepicker.js
new file mode 100644
index 000000000..a51971405
--- /dev/null
+++ b/inc/lang/ru/jquery.ui.datepicker.js
@@ -0,0 +1,23 @@
+/* Russian (UTF-8) initialisation for the jQuery UI date picker plugin. */
+/* Written by Andrew Stromnov (stromnov@gmail.com). */
+jQuery(function($){
+ $.datepicker.regional['ru'] = {
+ closeText: 'Закрыть',
+ prevText: '&#x3C;Пред',
+ nextText: 'След&#x3E;',
+ currentText: 'Сегодня',
+ monthNames: ['Январь','Февраль','Март','Апрель','Май','Июнь',
+ 'Июль','Август','Сентябрь','Октябрь','Ноябрь','Декабрь'],
+ monthNamesShort: ['Янв','Фев','Мар','Апр','Май','Июн',
+ 'Июл','Авг','Сен','Окт','Ноя','Дек'],
+ dayNames: ['воскресенье','понедельник','вторник','среда','четверг','пятница','суббота'],
+ dayNamesShort: ['вск','пнд','втр','срд','чтв','птн','сбт'],
+ dayNamesMin: ['Вс','Пн','Вт','Ср','Чт','Пт','Сб'],
+ weekHeader: 'Нед',
+ dateFormat: 'dd.mm.yy',
+ firstDay: 1,
+ isRTL: false,
+ showMonthAfterYear: false,
+ yearSuffix: ''};
+ $.datepicker.setDefaults($.datepicker.regional['ru']);
+});
diff --git a/inc/lang/ru/lang.php b/inc/lang/ru/lang.php
index 6a0c4bb6b..bf8fa34c8 100644
--- a/inc/lang/ru/lang.php
+++ b/inc/lang/ru/lang.php
@@ -22,6 +22,9 @@
* @author Johnny Utah <pcpa@cyberpunk.su>
* @author Ivan I. Udovichenko (sendtome@mymailbox.pp.ua)
* @author Pavel <ivanovtsk@mail.ru>
+ * @author Artur <ncuxxx@gmail.com>
+ * @author Erli Moen <evseev.jr@gmail.com>
+ * @author Aleksandr Selivanov <alexgearbox@yandex.ru>
*/
$lang['encoding'] = ' utf-8';
$lang['direction'] = 'ltr';
@@ -88,7 +91,7 @@ $lang['regsuccess2'] = 'Пользователь создан.';
$lang['regmailfail'] = 'Похоже есть проблема с отправкой пароля по почте. Пожалуйста, сообщите об этом администратору.';
$lang['regbadmail'] = 'Данный вами адрес электронной почты выглядит неправильным. Если вы считаете это ошибкой, сообщите администратору.';
$lang['regbadpass'] = 'Два введённых пароля не идентичны. Пожалуйста, попробуйте ещё раз.';
-$lang['regpwmail'] = 'Ваш пароль для системы «ДокуВики»';
+$lang['regpwmail'] = 'Ваш пароль для системы «Докувики»';
$lang['reghere'] = 'У вас ещё нет аккаунта? Зарегистрируйтесь';
$lang['profna'] = 'Данная вики не поддерживает изменение профиля';
$lang['profnochange'] = 'Изменений не было внесено, профиль не обновлён.';
@@ -143,7 +146,7 @@ $lang['js']['medialeft'] = 'Выровнять изображение по
$lang['js']['mediaright'] = 'Выровнять изображение по правому краю.';
$lang['js']['mediacenter'] = 'Выровнять изображение по центру.';
$lang['js']['medianoalign'] = 'Не выравнивать.';
-$lang['js']['nosmblinks'] = 'Ссылка на сетевые каталоги Windows работает только из Интернет Эксплорера. Но вы можете скопировать ссылку.';
+$lang['js']['nosmblinks'] = 'Ссылка на сетевые каталоги Windows работает только из MS Internet Explorer, но вы можете скопировать ссылку.';
$lang['js']['linkwiz'] = 'Мастер ссылок';
$lang['js']['linkto'] = 'Ссылка на:';
$lang['js']['del_confirm'] = 'Вы на самом деле желаете удалить выбранное?';
@@ -284,33 +287,34 @@ $lang['subscr_style_list'] = 'список изменённых страни
$lang['authtempfail'] = 'Аутентификация пользователей временно недоступна. Если проблема продолжается какое-то время, пожалуйста, сообщите об этом своему администратору вики.';
$lang['authpwdexpire'] = 'Действие вашего пароля истекает через %d дней. Вы должны изменить его как можно скорее';
$lang['i_chooselang'] = 'Выберите свой язык/Choose your language';
-$lang['i_installer'] = 'Установка «ДокуВики»';
+$lang['i_installer'] = 'Установка «Докувики»';
$lang['i_wikiname'] = 'Название вики';
$lang['i_enableacl'] = 'Разрешить ограничение прав доступа (рекомендуется)';
$lang['i_superuser'] = 'Суперпользователь';
$lang['i_problems'] = 'Программа установки столкнулась с проблемами, перечисленными ниже. Чтобы продолжить, вам необходимо их устранить. ';
-$lang['i_modified'] = 'Из соображений безопасности эта программа запускается только на новой, неизменённой установке «ДокуВики».
+$lang['i_modified'] = 'Из соображений безопасности эта программа запускается только на новой, неизменённой установке «Докувики».
Вам нужно либо заново распаковать скачанный пакет установки, либо обратиться к полной
- <a href="http://www.dokuwiki.org/install">инструкции по установке «ДокуВики»</a>';
+ <a href="http://www.dokuwiki.org/install">инструкции по установке «Докувики»</a>';
$lang['i_funcna'] = 'Функция PHP <code>%s</code> недоступна. Может быть, она по какой-то причине заблокирована вашим хостером?';
$lang['i_phpver'] = 'Ваша версия PHP (<code>%s</code>) ниже требуемой (<code>%s</code>). Вам необходимо обновить установленную версию PHP.';
-$lang['i_permfail'] = '<code>%s</code> недоступна для записи «ДокуВики». Вам необходимо исправить системные права доступа для этой директории!';
+$lang['i_permfail'] = '<code>%s</code> недоступна для записи «Докувики». Вам необходимо исправить системные права доступа для этой директории!';
$lang['i_confexists'] = '<code>%s</code> уже существует';
-$lang['i_writeerr'] = 'Не удалось создать <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_success'] = 'Конфигурация прошла успешно. Теперь вы можете удалить файл install.php. Переходите к
- <a href="doku.php?id=wiki:welcome">своей новой «ДокуВики»</a>.';
-$lang['i_failure'] = 'При записи в файлы конфигурации были обнаружены ошибки. Возможно, вам придётся исправить их вручную, прежде чем вы сможете использовать <a href="doku.php?id=wiki:welcome">свою новую «ДокуВики»</a>.';
+ <a href="doku.php?id=wiki:welcome">своей новой «Докувики»</a>.';
+$lang['i_failure'] = 'При записи в файлы конфигурации были обнаружены ошибки. Возможно, вам придётся исправить их вручную, прежде чем вы сможете использовать <a href="doku.php?id=wiki:welcome">свою новую «Докувики»</a>.';
$lang['i_policy'] = 'Исходная политика прав доступа';
$lang['i_pol0'] = 'Открытая вики (чтение, запись, закачка файлов для всех)';
$lang['i_pol1'] = 'Общедоступная вики (чтение для всех, запись и загрузка файлов для зарегистрированных пользователей)';
$lang['i_pol2'] = 'Закрытая вики (чтение, запись и загрузка файлов только для зарегистрированных пользователей)';
+$lang['i_allowreg'] = 'Разрешить пользователям самостоятельно регистрироваться';
$lang['i_retry'] = 'Повторить попытку';
-$lang['i_license'] = 'Пожалуйста, выберите тип лицензии для своей вики:';
-$lang['i_license_none'] = 'Не отображать информацию о лицензионных операциях';
-$lang['i_pop_field'] = 'Пожалуйста, помогите нам улучшить «ДокуВики»:';
-$lang['i_pop_label'] = 'Отправлять раз в месяц анонимную пользовательскую информацию разработчикам «ДокуВики»';
+$lang['i_license'] = 'Пожалуйста, выберите тип лицензии для своей вики';
+$lang['i_license_none'] = 'Не отображать информацию о лицензии';
+$lang['i_pop_field'] = 'Пожалуйста, помогите нам улучшить «Докувики»:';
+$lang['i_pop_label'] = 'Отправлять раз в месяц анонимную пользовательскую информацию разработчикам «Докувики»';
$lang['recent_global'] = 'Вы просматриваете изменения в пространстве имён <b>%s</b>. Вы можете также <a href="%s">просмотреть недавние изменения во всей вики</a>.';
$lang['years'] = '%d лет назад';
$lang['months'] = '%d месяц(ев) назад';
@@ -344,3 +348,7 @@ $lang['media_perm_read'] = 'Извините, у вас недостато
$lang['media_perm_upload'] = 'Извините, у вас недостаточно прав для загрузки файлов.';
$lang['media_update'] = 'Загрузить новую версию';
$lang['media_restore'] = 'Восстановить эту версию';
+$lang['currentns'] = 'Текущее пространство имён';
+$lang['searchresult'] = 'Результаты поиска';
+$lang['plainhtml'] = 'Простой HTML';
+$lang['wikimarkup'] = 'вики-разметка';
diff --git a/inc/lang/ru/mailtext.txt b/inc/lang/ru/mailtext.txt
index 2b3f76bbd..953daddf2 100644
--- a/inc/lang/ru/mailtext.txt
+++ b/inc/lang/ru/mailtext.txt
@@ -13,5 +13,5 @@ IP-адрес: @IPADDRESS@
--
-Это письмо было сгенерировано «ДокуВики» по адресу
+Это письмо было сгенерировано «Докувики» по адресу
@DOKUWIKIURL@
diff --git a/inc/lang/ru/norev.txt b/inc/lang/ru/norev.txt
index 388d6149d..c088d0d5a 100644
--- a/inc/lang/ru/norev.txt
+++ b/inc/lang/ru/norev.txt
@@ -1,4 +1,3 @@
====== Такой версии не существует ======
Указанная версия страницы не существует. Нажмите на кнопку «История страницы», чтобы получить список доступных предыдущих версий этого документа.
-
diff --git a/inc/lang/ru/password.txt b/inc/lang/ru/password.txt
index eb100f334..fabdf2b68 100644
--- a/inc/lang/ru/password.txt
+++ b/inc/lang/ru/password.txt
@@ -6,5 +6,5 @@
Пароль: @PASSWORD@
--
-Это письмо было сгенерировано «ДокуВики» по адресу
+Это письмо было сгенерировано «Докувики» по адресу
@DOKUWIKIURL@
diff --git a/inc/lang/ru/pwconfirm.txt b/inc/lang/ru/pwconfirm.txt
index 9c27af752..954c75dfe 100644
--- a/inc/lang/ru/pwconfirm.txt
+++ b/inc/lang/ru/pwconfirm.txt
@@ -9,5 +9,5 @@
@CONFIRM@
--
-Это сообщение было сгенерировано «ДокуВики» по адресу
+Это сообщение было сгенерировано «Докувики» по адресу
@DOKUWIKIURL@
diff --git a/inc/lang/ru/registermail.txt b/inc/lang/ru/registermail.txt
index fc862b034..86ef11e8c 100644
--- a/inc/lang/ru/registermail.txt
+++ b/inc/lang/ru/registermail.txt
@@ -10,5 +10,5 @@
Хост: @HOSTNAME@
--
-Это сообщение было сгенерировано «ДокуВики» по адресу
+Это сообщение было сгенерировано «Докувики» по адресу
@DOKUWIKIURL@
diff --git a/inc/lang/ru/subscr_digest.txt b/inc/lang/ru/subscr_digest.txt
index 41774a4e9..ac0fc0528 100644
--- a/inc/lang/ru/subscr_digest.txt
+++ b/inc/lang/ru/subscr_digest.txt
@@ -15,6 +15,6 @@
@SUBSCRIBE@
и отмените подписку на страницу и/или пространство имен.
---
-Это письмо создано «ДокуВики» с сайта
+--
+Это письмо создано «Докувики» с сайта
@DOKUWIKIURL@ \ No newline at end of file
diff --git a/inc/lang/ru/subscr_list.txt b/inc/lang/ru/subscr_list.txt
index 41e1323bc..984a25eb0 100644
--- a/inc/lang/ru/subscr_list.txt
+++ b/inc/lang/ru/subscr_list.txt
@@ -12,6 +12,6 @@
@SUBSCRIBE@
и отмените подписку на страницу и/или пространство имён.
---
-Это письмо создано «ДокуВики» с сайта
+--
+Это письмо создано «Докувики» с сайта
@DOKUWIKIURL@ \ No newline at end of file
diff --git a/inc/lang/ru/subscr_single.txt b/inc/lang/ru/subscr_single.txt
index 911a48e96..679ca6fff 100644
--- a/inc/lang/ru/subscr_single.txt
+++ b/inc/lang/ru/subscr_single.txt
@@ -19,6 +19,6 @@
@SUBSCRIBE@
и отмените подписку на страницу и/или пространство имён.
---
-Это письмо создано «ДокуВики» с сайта
+--
+Это письмо создано «Докувики» с сайта
@DOKUWIKIURL@ \ No newline at end of file
diff --git a/inc/lang/ru/uploadmail.txt b/inc/lang/ru/uploadmail.txt
index f696f2c44..84103b45a 100644
--- a/inc/lang/ru/uploadmail.txt
+++ b/inc/lang/ru/uploadmail.txt
@@ -11,5 +11,5 @@
Пользователь: @USER@
--
-Это письмо было сгенерировано «ДокуВики» по адресу
+Это письмо было сгенерировано «Докувики» по адресу
@DOKUWIKIURL@
diff --git a/inc/lang/sk/jquery.ui.datepicker.js b/inc/lang/sk/jquery.ui.datepicker.js
new file mode 100644
index 000000000..0cb76c4e8
--- /dev/null
+++ b/inc/lang/sk/jquery.ui.datepicker.js
@@ -0,0 +1,23 @@
+/* Slovak initialisation for the jQuery UI date picker plugin. */
+/* Written by Vojtech Rinik (vojto@hmm.sk). */
+jQuery(function($){
+ $.datepicker.regional['sk'] = {
+ closeText: 'Zavrieť',
+ prevText: '&#x3C;Predchádzajúci',
+ nextText: 'Nasledujúci&#x3E;',
+ currentText: 'Dnes',
+ monthNames: ['január','február','marec','apríl','máj','jún',
+ 'júl','august','september','október','november','december'],
+ monthNamesShort: ['Jan','Feb','Mar','Apr','Máj','Jún',
+ 'Júl','Aug','Sep','Okt','Nov','Dec'],
+ dayNames: ['nedeľa','pondelok','utorok','streda','štvrtok','piatok','sobota'],
+ dayNamesShort: ['Ned','Pon','Uto','Str','Štv','Pia','Sob'],
+ dayNamesMin: ['Ne','Po','Ut','St','Št','Pia','So'],
+ weekHeader: 'Ty',
+ dateFormat: 'dd.mm.yy',
+ firstDay: 1,
+ isRTL: false,
+ showMonthAfterYear: false,
+ yearSuffix: ''};
+ $.datepicker.setDefaults($.datepicker.regional['sk']);
+});
diff --git a/inc/lang/sk/lang.php b/inc/lang/sk/lang.php
index e8c1151d5..aa823b074 100644
--- a/inc/lang/sk/lang.php
+++ b/inc/lang/sk/lang.php
@@ -290,6 +290,7 @@ $lang['i_policy'] = 'Počiatočná ACL politika';
$lang['i_pol0'] = 'Otvorená Wiki (čítanie, zápis a nahrávanie pre každého)';
$lang['i_pol1'] = 'Verejná Wiki (čítanie pre každého, zápis a nahrávanie pre registrovaných užívateľov)';
$lang['i_pol2'] = 'Uzatvorená Wiki (čítanie, zápis a nahrávanie len pre registrovaných užívateľov)';
+$lang['i_allowreg'] = 'Povolenie samostanej registrácie používateľov';
$lang['i_retry'] = 'Skúsiť znovu';
$lang['i_license'] = 'Vyberte licenciu, pod ktorou chcete uložiť váš obsah:';
$lang['i_license_none'] = 'Nezobrazovať žiadne licenčné informácie';
@@ -327,3 +328,7 @@ $lang['media_perm_read'] = 'Prepáčte, ale nemáte dostatočné oprávnen
$lang['media_perm_upload'] = 'Prepáčte, ale nemáte dostatočné oprávnenie na nahrávanie súborov.';
$lang['media_update'] = 'Nahrať novú verziu';
$lang['media_restore'] = 'Obnoviť túto verziu';
+$lang['currentns'] = 'Aktuálny menný priestor';
+$lang['searchresult'] = 'Výsledky hľadania';
+$lang['plainhtml'] = 'Jednoduché HTML';
+$lang['wikimarkup'] = 'Wiki formát';
diff --git a/inc/lang/sl/jquery.ui.datepicker.js b/inc/lang/sl/jquery.ui.datepicker.js
new file mode 100644
index 000000000..048a47af7
--- /dev/null
+++ b/inc/lang/sl/jquery.ui.datepicker.js
@@ -0,0 +1,24 @@
+/* Slovenian initialisation for the jQuery UI date picker plugin. */
+/* Written by Jaka Jancar (jaka@kubje.org). */
+/* c = č, s = š z = ž C = Č S = Š Z = Ž */
+jQuery(function($){
+ $.datepicker.regional['sl'] = {
+ closeText: 'Zapri',
+ prevText: '&#x3C;Prejšnji',
+ nextText: 'Naslednji&#x3E;',
+ currentText: 'Trenutni',
+ monthNames: ['Januar','Februar','Marec','April','Maj','Junij',
+ 'Julij','Avgust','September','Oktober','November','December'],
+ monthNamesShort: ['Jan','Feb','Mar','Apr','Maj','Jun',
+ 'Jul','Avg','Sep','Okt','Nov','Dec'],
+ dayNames: ['Nedelja','Ponedeljek','Torek','Sreda','Četrtek','Petek','Sobota'],
+ dayNamesShort: ['Ned','Pon','Tor','Sre','Čet','Pet','Sob'],
+ dayNamesMin: ['Ne','Po','To','Sr','Če','Pe','So'],
+ weekHeader: 'Teden',
+ dateFormat: 'dd.mm.yy',
+ firstDay: 1,
+ isRTL: false,
+ showMonthAfterYear: false,
+ yearSuffix: ''};
+ $.datepicker.setDefaults($.datepicker.regional['sl']);
+});
diff --git a/inc/lang/sl/lang.php b/inc/lang/sl/lang.php
index 2f69163f5..c9a47927d 100644
--- a/inc/lang/sl/lang.php
+++ b/inc/lang/sl/lang.php
@@ -2,13 +2,14 @@
/**
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
- *
+ *
* @author Jaka Kranjc <lynxlupodian@hotmail.com>
* @author Boštjan Seničar <senicar@gmail.com>
* @author Dejan Levec <webphp@gmail.com>
* @author Gregor Skumavc (grega.skumavc@gmail.com)
* @author Matej Urbančič (mateju@svn.gnome.org)
* @author Matej Urbančič <mateju@svn.gnome.org>
+ * @author matej <mateju@svn.gnome.org>
*/
$lang['encoding'] = 'utf-8';
$lang['direction'] = 'ltr';
@@ -195,6 +196,7 @@ $lang['user_tools'] = 'Uporabniška orodja';
$lang['site_tools'] = 'Orodja spletišča';
$lang['page_tools'] = 'Orodja strani';
$lang['skip_to_content'] = 'preskoči na vsebino';
+$lang['sidebar'] = 'Stranska vrstica';
$lang['mail_newpage'] = '[DokuWiki] stran dodana:';
$lang['mail_changed'] = '[DokuWiki] stran spremenjena:';
$lang['mail_subscribe_list'] = 'strani s spremenjenim imenom:';
@@ -264,6 +266,7 @@ $lang['subscr_style_every'] = 'elektronsko sporočilo ob vsaki spremembi';
$lang['subscr_style_digest'] = 'strnjeno elektronsko sporočilo sprememb za vsako stran (vsakih %.2f dni)';
$lang['subscr_style_list'] = 'seznam spremenjenih strani od zadnjega elektronskega sporočila (vsakih %.2f dni)';
$lang['authtempfail'] = 'Potrditev uporabnika je trenutno nedostopna. Stopite v stik s skrbnikom sistema wiki.';
+$lang['authpwdexpire'] = 'Geslo bo poteklo v %d dneh. Priporočljivo ga je zamenjati.';
$lang['i_chooselang'] = 'Izberite jezik';
$lang['i_installer'] = 'DokuWiki namestitev';
$lang['i_wikiname'] = 'Ime Wiki spletišča';
@@ -284,6 +287,7 @@ $lang['i_policy'] = 'Začetna določila ACL';
$lang['i_pol0'] = 'Odprt Wiki (branje, zapis, nalaganje datotek je javno za vse)';
$lang['i_pol1'] = 'Javni Wiki (branje za vse, zapis in nalaganje datotek za prijavljene uporabnike)';
$lang['i_pol2'] = 'Zaprt Wiki (berejo in urejajo lahko le prijavljeni uporabniki)';
+$lang['i_allowreg'] = 'Dovoli uporabnikom vpis';
$lang['i_retry'] = 'Ponovni poskus';
$lang['i_license'] = 'Izbor dovoljenja objave vsebine:';
$lang['i_license_none'] = 'Ne pokaži podrobnosti dovoljenja.';
@@ -319,3 +323,7 @@ $lang['media_perm_read'] = 'Ni ustreznih dovoljenj za branje datotek.';
$lang['media_perm_upload'] = 'Ni ustreznih dovoljenj za nalaganje datotek.';
$lang['media_update'] = 'Naloži novo različico';
$lang['media_restore'] = 'Obnovi to različico';
+$lang['currentns'] = 'Trenutni imenski prostor';
+$lang['searchresult'] = 'Rezultati iskanja';
+$lang['plainhtml'] = 'Zapis HTML';
+$lang['wikimarkup'] = 'Oblikovni jezik Wiki';
diff --git a/inc/lang/sl/resetpwd.txt b/inc/lang/sl/resetpwd.txt
new file mode 100644
index 000000000..c2a81ab9a
--- /dev/null
+++ b/inc/lang/sl/resetpwd.txt
@@ -0,0 +1 @@
+====== Nastavitev novega gesla ======<br><br>Vnesite novo geslo za račun Wiki. \ No newline at end of file
diff --git a/inc/lang/sq/jquery.ui.datepicker.js b/inc/lang/sq/jquery.ui.datepicker.js
new file mode 100644
index 000000000..d6086a789
--- /dev/null
+++ b/inc/lang/sq/jquery.ui.datepicker.js
@@ -0,0 +1,23 @@
+/* Albanian initialisation for the jQuery UI date picker plugin. */
+/* Written by Flakron Bytyqi (flakron@gmail.com). */
+jQuery(function($){
+ $.datepicker.regional['sq'] = {
+ closeText: 'mbylle',
+ prevText: '&#x3C;mbrapa',
+ nextText: 'Përpara&#x3E;',
+ currentText: 'sot',
+ monthNames: ['Janar','Shkurt','Mars','Prill','Maj','Qershor',
+ 'Korrik','Gusht','Shtator','Tetor','Nëntor','Dhjetor'],
+ monthNamesShort: ['Jan','Shk','Mar','Pri','Maj','Qer',
+ 'Kor','Gus','Sht','Tet','Nën','Dhj'],
+ dayNames: ['E Diel','E Hënë','E Martë','E Mërkurë','E Enjte','E Premte','E Shtune'],
+ dayNamesShort: ['Di','Hë','Ma','Më','En','Pr','Sh'],
+ dayNamesMin: ['Di','Hë','Ma','Më','En','Pr','Sh'],
+ weekHeader: 'Ja',
+ dateFormat: 'dd.mm.yy',
+ firstDay: 1,
+ isRTL: false,
+ showMonthAfterYear: false,
+ yearSuffix: ''};
+ $.datepicker.setDefaults($.datepicker.regional['sq']);
+});
diff --git a/inc/lang/sr/jquery.ui.datepicker.js b/inc/lang/sr/jquery.ui.datepicker.js
new file mode 100644
index 000000000..1349a26cf
--- /dev/null
+++ b/inc/lang/sr/jquery.ui.datepicker.js
@@ -0,0 +1,23 @@
+/* Serbian i18n for the jQuery UI date picker plugin. */
+/* Written by Dejan Dimić. */
+jQuery(function($){
+ $.datepicker.regional['sr'] = {
+ closeText: 'Затвори',
+ prevText: '&#x3C;',
+ nextText: '&#x3E;',
+ currentText: 'Данас',
+ monthNames: ['Јануар','Фебруар','Март','Април','Мај','Јун',
+ 'Јул','Август','Септембар','Октобар','Новембар','Децембар'],
+ monthNamesShort: ['Јан','Феб','Мар','Апр','Мај','Јун',
+ 'Јул','Авг','Сеп','Окт','Нов','Дец'],
+ dayNames: ['Недеља','Понедељак','Уторак','Среда','Четвртак','Петак','Субота'],
+ dayNamesShort: ['Нед','Пон','Уто','Сре','Чет','Пет','Суб'],
+ dayNamesMin: ['Не','По','Ут','Ср','Че','Пе','Су'],
+ weekHeader: 'Сед',
+ dateFormat: 'dd.mm.yy',
+ firstDay: 1,
+ isRTL: false,
+ showMonthAfterYear: false,
+ yearSuffix: ''};
+ $.datepicker.setDefaults($.datepicker.regional['sr']);
+});
diff --git a/inc/lang/sv/jquery.ui.datepicker.js b/inc/lang/sv/jquery.ui.datepicker.js
new file mode 100644
index 000000000..cbb5ad135
--- /dev/null
+++ b/inc/lang/sv/jquery.ui.datepicker.js
@@ -0,0 +1,23 @@
+/* Swedish initialisation for the jQuery UI date picker plugin. */
+/* Written by Anders Ekdahl ( anders@nomadiz.se). */
+jQuery(function($){
+ $.datepicker.regional['sv'] = {
+ closeText: 'Stäng',
+ prevText: '&#xAB;Förra',
+ nextText: 'Nästa&#xBB;',
+ currentText: 'Idag',
+ monthNames: ['Januari','Februari','Mars','April','Maj','Juni',
+ 'Juli','Augusti','September','Oktober','November','December'],
+ monthNamesShort: ['Jan','Feb','Mar','Apr','Maj','Jun',
+ 'Jul','Aug','Sep','Okt','Nov','Dec'],
+ dayNamesShort: ['Sön','Mån','Tis','Ons','Tor','Fre','Lör'],
+ dayNames: ['Söndag','Måndag','Tisdag','Onsdag','Torsdag','Fredag','Lördag'],
+ dayNamesMin: ['Sö','Må','Ti','On','To','Fr','Lö'],
+ weekHeader: 'Ve',
+ dateFormat: 'yy-mm-dd',
+ firstDay: 1,
+ isRTL: false,
+ showMonthAfterYear: false,
+ yearSuffix: ''};
+ $.datepicker.setDefaults($.datepicker.regional['sv']);
+});
diff --git a/inc/lang/sv/lang.php b/inc/lang/sv/lang.php
index 20e8700b7..8c8858f61 100644
--- a/inc/lang/sv/lang.php
+++ b/inc/lang/sv/lang.php
@@ -2,7 +2,7 @@
/**
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
- *
+ *
* @author Joaquim Homrighausen <joho@webbplatsen.se>
* @author Per Foreby <per@foreby.se>
* @author Nicklas Henriksson <nicklas[at]nihe.se>
@@ -19,6 +19,7 @@
* @author Smorkster Andersson smorkster@gmail.com
* @author Henrik <henrik@idealis.se>
* @author Tor Härnqvist <tor.harnqvist@gmail.com>
+ * @author Hans Iwan Bratt <hibratt@gmail.com>
*/
$lang['encoding'] = 'utf-8';
$lang['direction'] = 'ltr';
@@ -148,6 +149,8 @@ $lang['js']['del_confirm'] = 'Vill du verkligen radera?';
$lang['js']['restore_confirm'] = 'Återställa denna version?';
$lang['js']['media_diff'] = 'Se skillnader:';
$lang['js']['media_diff_both'] = 'Sida vid sida';
+$lang['js']['media_diff_opacity'] = 'Genomskinlig';
+$lang['js']['media_diff_portions'] = 'Svep';
$lang['js']['media_select'] = 'Välj filer...';
$lang['js']['media_upload_btn'] = 'Ladda upp';
$lang['js']['media_done_btn'] = 'Färdig';
@@ -204,8 +207,10 @@ $lang['noflash'] = '<a href="http://www.adobe.com/products/flashpl
$lang['download'] = 'Ladda ner kodfragmentet';
$lang['tools'] = 'Verktyg';
$lang['user_tools'] = 'Användarverktyg';
+$lang['site_tools'] = 'Webbverktyg';
$lang['page_tools'] = 'Sidverktyg';
$lang['skip_to_content'] = 'hoppa till innehåll';
+$lang['sidebar'] = 'Sidmeny';
$lang['mail_newpage'] = 'sida tillagd:';
$lang['mail_changed'] = 'sida ändrad:';
$lang['mail_subscribe_list'] = 'sidor ändrade i namnrymd:';
@@ -260,7 +265,7 @@ $lang['img_height'] = 'Höjd';
$lang['img_manager'] = 'Se mediahanteraren';
$lang['subscr_subscribe_success'] = 'La till %s till prenumerationslista %s';
$lang['subscr_subscribe_noaddress'] = 'Det finns ingen adress associerad med din inloggning, du kan inte bli tillagd i prenumerationslistan';
-$lang['subscr_unsubscribe_success'] = '% borttagen från prenumerationslistan för %';
+$lang['subscr_unsubscribe_success'] = '%s borttagen från prenumerationslistan för %s';
$lang['subscr_unsubscribe_error'] = 'Fel vid borttagning av %s från prenumerationslista %s';
$lang['subscr_already_subscribed'] = '%s prenumererar redan på %s';
$lang['subscr_not_subscribed'] = '%s prenumererar inte på %s';
@@ -298,6 +303,7 @@ $lang['i_policy'] = 'Initial ACL-policy';
$lang['i_pol0'] = 'Öppen wiki (alla får läsa, skriva och ladda upp filer)';
$lang['i_pol1'] = 'Publik wiki (alla får läsa, registrerade användare för skriva och ladda upp filer)';
$lang['i_pol2'] = 'Sluten wiki (endast registrerade användare får läsa, skriva och ladda upp filer)';
+$lang['i_allowreg'] = 'Tillåt användare att registrera sig själva';
$lang['i_retry'] = 'Försök igen';
$lang['i_license'] = 'Vänligen välj licens du vill använda för ditt innehåll:';
$lang['i_license_none'] = 'Visa ingen licensinformation';
@@ -335,3 +341,5 @@ $lang['media_perm_read'] = 'Du har tyvärr inte tillräckliga behörighete
$lang['media_perm_upload'] = 'Du har tyvärr inte tillräckliga behörigheter för att ladda upp filer.';
$lang['media_update'] = 'Ladda upp ny version';
$lang['media_restore'] = 'Återställ denna version';
+$lang['searchresult'] = 'Sökresultat';
+$lang['plainhtml'] = 'Ren HTML';
diff --git a/inc/lang/sv/subscr_digest.txt b/inc/lang/sv/subscr_digest.txt
new file mode 100644
index 000000000..6724726ac
--- /dev/null
+++ b/inc/lang/sv/subscr_digest.txt
@@ -0,0 +1,19 @@
+Hej
+
+Sidan @PAGE@ med @TITLE@ har ändrats.
+Här är ändringarna:
+
+-----------------------------
+@DIFF@
+-----------------------------
+
+Äldre versionen: @OLDPAGE@
+Ny version: @NEWPAGE@
+
+För att avbryta meddelanden om sidändringar logga in till wikin @DOKUWIKIURL@, besök sedan
+@SUBSCRIBE@
+och avbeställ ändringar av sidor och/eller namespace.
+
+--
+Detta meddelande har skapats av DokuWiki vid
+@DOKUWIKIURL@ \ No newline at end of file
diff --git a/inc/lang/th/jquery.ui.datepicker.js b/inc/lang/th/jquery.ui.datepicker.js
new file mode 100644
index 000000000..aecfd27cc
--- /dev/null
+++ b/inc/lang/th/jquery.ui.datepicker.js
@@ -0,0 +1,23 @@
+/* Thai initialisation for the jQuery UI date picker plugin. */
+/* Written by pipo (pipo@sixhead.com). */
+jQuery(function($){
+ $.datepicker.regional['th'] = {
+ closeText: 'ปิด',
+ prevText: '&#xAB;&#xA0;ย้อน',
+ nextText: 'ถัดไป&#xA0;&#xBB;',
+ currentText: 'วันนี้',
+ monthNames: ['มกราคม','กุมภาพันธ์','มีนาคม','เมษายน','พฤษภาคม','มิถุนายน',
+ 'กรกฎาคม','สิงหาคม','กันยายน','ตุลาคม','พฤศจิกายน','ธันวาคม'],
+ monthNamesShort: ['ม.ค.','ก.พ.','มี.ค.','เม.ย.','พ.ค.','มิ.ย.',
+ 'ก.ค.','ส.ค.','ก.ย.','ต.ค.','พ.ย.','ธ.ค.'],
+ dayNames: ['อาทิตย์','จันทร์','อังคาร','พุธ','พฤหัสบดี','ศุกร์','เสาร์'],
+ dayNamesShort: ['อา.','จ.','อ.','พ.','พฤ.','ศ.','ส.'],
+ dayNamesMin: ['อา.','จ.','อ.','พ.','พฤ.','ศ.','ส.'],
+ weekHeader: 'Wk',
+ dateFormat: 'dd/mm/yy',
+ firstDay: 0,
+ isRTL: false,
+ showMonthAfterYear: false,
+ yearSuffix: ''};
+ $.datepicker.setDefaults($.datepicker.regional['th']);
+});
diff --git a/inc/lang/th/lang.php b/inc/lang/th/lang.php
index a89a6ee6b..5d364166b 100644
--- a/inc/lang/th/lang.php
+++ b/inc/lang/th/lang.php
@@ -45,7 +45,6 @@ $lang['btn_back'] = 'ย้อนกลับ';
$lang['btn_backlink'] = 'หน้าที่ลิงก์มา';
$lang['btn_backtomedia'] = 'กลับไปยังหน้าเลือกไฟล์สื่อ';
$lang['btn_subscribe'] = 'เฝ้าดู';
-$lang['btn_unsubscribe'] = 'เลิกเฝ้าดู';
$lang['btn_profile'] = 'แก้ข้อมูลผู้ใช้';
$lang['btn_reset'] = 'เริ่มใหม่';
$lang['btn_draft'] = 'แก้ไขเอกสารฉบับร่าง';
@@ -193,11 +192,6 @@ $lang['img_copyr'] = 'ผู้ถือลิขสิทธิ์'
$lang['img_format'] = 'รูปแบบ';
$lang['img_camera'] = 'กล้อง';
$lang['img_keywords'] = 'คำหลัก';
-$lang['subscribe_success'] = 'เพิ่ม %s เข้าไปในรายชื่อสมาชิกลงทะเบียนสำหรับ %s';
-$lang['subscribe_error'] = 'มีข้อผิดพลาดในการเพิ่ม %s ในรายชื่อสมัครสมาชิกสำหรับ %s';
-$lang['subscribe_noaddress'] = 'ไม่มีที่อยู่ที่ตรงกับชื่อล็อกอินของคุณ ชื่อคุณไม่สามารถถูกเพิ่มเข้าไปในรายชื่อสมัครสมาชิก';
-$lang['unsubscribe_success'] = 'ถอด % ออกจากรายชื่อสมัครสมาชิกของ %s';
-$lang['unsubscribe_error'] = 'มีข้อผิดพลาดในการถอด %s ออกจากรายชื่อสมาชิกของ %s';
$lang['authtempfail'] = 'ระบบตรวจสอบสิทธิ์ผู้ใช้ไม่พร้อมใช้งานชั่วคราว หากสถานการณ์ยังไม่เปลี่ยนแปลง กรุณาแจ้งผู้ดูแลระบวิกิของคุณ';
$lang['i_chooselang'] = 'เลือกภาษาของคุณ';
$lang['i_installer'] = 'ตัวติดตั้งโดกุวิกิ';
diff --git a/inc/lang/tr/adminplugins.txt b/inc/lang/tr/adminplugins.txt
new file mode 100644
index 000000000..7c8de9d9f
--- /dev/null
+++ b/inc/lang/tr/adminplugins.txt
@@ -0,0 +1 @@
+===== İlave Eklentiler ===== \ No newline at end of file
diff --git a/inc/lang/tr/jquery.ui.datepicker.js b/inc/lang/tr/jquery.ui.datepicker.js
new file mode 100644
index 000000000..75b583a77
--- /dev/null
+++ b/inc/lang/tr/jquery.ui.datepicker.js
@@ -0,0 +1,23 @@
+/* Turkish initialisation for the jQuery UI date picker plugin. */
+/* Written by Izzet Emre Erkan (kara@karalamalar.net). */
+jQuery(function($){
+ $.datepicker.regional['tr'] = {
+ closeText: 'kapat',
+ prevText: '&#x3C;geri',
+ nextText: 'ileri&#x3e',
+ currentText: 'bugün',
+ monthNames: ['Ocak','Şubat','Mart','Nisan','Mayıs','Haziran',
+ 'Temmuz','Ağustos','Eylül','Ekim','Kasım','Aralık'],
+ monthNamesShort: ['Oca','Şub','Mar','Nis','May','Haz',
+ 'Tem','Ağu','Eyl','Eki','Kas','Ara'],
+ dayNames: ['Pazar','Pazartesi','Salı','Çarşamba','Perşembe','Cuma','Cumartesi'],
+ dayNamesShort: ['Pz','Pt','Sa','Ça','Pe','Cu','Ct'],
+ dayNamesMin: ['Pz','Pt','Sa','Ça','Pe','Cu','Ct'],
+ weekHeader: 'Hf',
+ dateFormat: 'dd.mm.yy',
+ firstDay: 1,
+ isRTL: false,
+ showMonthAfterYear: false,
+ yearSuffix: ''};
+ $.datepicker.setDefaults($.datepicker.regional['tr']);
+});
diff --git a/inc/lang/tr/lang.php b/inc/lang/tr/lang.php
index e40c28f63..210a82530 100644
--- a/inc/lang/tr/lang.php
+++ b/inc/lang/tr/lang.php
@@ -1,14 +1,16 @@
<?php
+
/**
- * turkish language file
- *
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
* @author Selim Farsakoğlu <farsakogluselim@yahoo.de>
* @author Aydın Coşkuner <aydinweb@gmail.com>
* @author Cihan Kahveci <kahvecicihan@gmail.com>
* @author Yavuz Selim <yavuzselim@gmail.com>
* @author Caleb Maclennan <caleb@alerque.com>
* @author farukerdemoncel@gmail.com
+ * @author Mustafa Aslan <maslan@hotmail.com>
+ * @author huseyin can <huseyincan73@gmail.com>
*/
$lang['encoding'] = 'utf-8';
$lang['direction'] = 'ltr';
@@ -52,6 +54,7 @@ $lang['btn_revert'] = 'Geri Yükle';
$lang['btn_register'] = 'Kayıt ol';
$lang['btn_apply'] = 'Uygula';
$lang['btn_media'] = 'Çokluortam Yöneticisi';
+$lang['btn_deleteuser'] = 'Hesabımı Sil';
$lang['loggedinas'] = 'Giriş ismi';
$lang['user'] = 'Kullanıcı ismi';
$lang['pass'] = 'Parola';
@@ -63,6 +66,7 @@ $lang['fullname'] = 'Tam isim';
$lang['email'] = 'E-posta';
$lang['profile'] = 'Kullanıcı Bilgileri';
$lang['badlogin'] = 'Üzgünüz, Kullanıcı adı veya şifre yanlış oldu.';
+$lang['badpassconfirm'] = 'Üzgünüz, parolanız yanlış';
$lang['minoredit'] = 'Küçük Değişiklikler';
$lang['draftdate'] = 'Taslak şu saatte otomatik kaydedildi:';
$lang['nosecedit'] = 'Sayfa yakın zamanda değiştirilmiştir, bölüm bilgisi eski kalmıştır. Bunun için bölüm yerine tüm sayfa yüklenmiştir.';
@@ -79,6 +83,11 @@ $lang['profna'] = 'Bu wiki kullanıcı bilgilerini değiştirmeyi
$lang['profnochange'] = 'Değişiklik yok, birşey yapılmadı.';
$lang['profnoempty'] = 'Boş isim veya e-posta adresine izin verilmiyor.';
$lang['profchanged'] = 'Kullanıcı bilgileri başarıyla değiştirildi.';
+$lang['profnodelete'] = 'Bu wiki kullanıcı silmeyi desteklemiyor';
+$lang['profdeleteuser'] = 'Hesabı Sil';
+$lang['profdeleted'] = 'Bu wiki\'den hesabınız silindi';
+$lang['profconfdelete'] = 'Bu wiki\'den hesabımı silmek istiyorum. <br/>Bu işlem geri alınamaz';
+$lang['profconfdeletemissing'] = 'Onay kutusu işaretlenmedi';
$lang['pwdforget'] = 'Parolanızı mı unuttunuz? Yeni bir parola alın';
$lang['resendna'] = 'Bu wiki parolayı tekrar göndermeyi desteklememektedir.';
$lang['resendpwd'] = 'İçin yeni şifre belirle';
@@ -94,6 +103,7 @@ $lang['searchmedia_in'] = '%s içinde ara';
$lang['txt_upload'] = 'Yüklenecek dosyayı seç';
$lang['txt_filename'] = 'Dosya adı (zorunlu değil)';
$lang['txt_overwrt'] = 'Mevcut dosyanın üstüne yaz';
+$lang['maxuploadsize'] = 'Yükleme dosya başına en fazla %s';
$lang['lockedby'] = 'Şu an şunun tarafından kilitli:';
$lang['lockexpire'] = 'Kilitin açılma tarihi:';
$lang['js']['willexpire'] = 'Bu sayfayı değiştirme kilidinin süresi yaklaşık bir dakika içinde geçecek.\nÇakışmaları önlemek için önizleme tuşunu kullanarak kilit sayacını sıfırla.';
@@ -129,6 +139,7 @@ $lang['js']['linkto'] = 'Bağlantı:';
$lang['js']['del_confirm'] = 'Bu girişi sil?';
$lang['js']['restore_confirm'] = 'Bu sürüme geri dönmek istediğinizden emin misiniz?';
$lang['js']['media_diff'] = 'Farkları gör:';
+$lang['js']['media_diff_both'] = 'Yan yana';
$lang['js']['media_select'] = 'Dosyalar seç...';
$lang['js']['media_upload_btn'] = 'Yükle';
$lang['js']['media_done_btn'] = 'Bitti';
@@ -169,6 +180,7 @@ $lang['yours'] = 'Senin Sürümün';
$lang['diff'] = 'Kullanılan sürüm ile farkları göster';
$lang['diff2'] = 'Seçili sürümler arasındaki farkı göster';
$lang['difflink'] = 'Karşılaştırma görünümüne bağlantı';
+$lang['diff_type'] = 'farklı görünüş';
$lang['line'] = 'Satır';
$lang['breadcrumb'] = 'İz';
$lang['youarehere'] = 'Buradasınız';
@@ -181,10 +193,17 @@ $lang['external_edit'] = 'Dışarıdan düzenle';
$lang['summary'] = 'Özeti düzenle';
$lang['noflash'] = 'Bu içeriği göstermek için <a href="http://www.adobe.com/products/flashplayer/">Adobe Flash Eklentisi</a> gerekmektedir.';
$lang['download'] = 'Parçacığı indir';
+$lang['tools'] = 'Alet';
+$lang['user_tools'] = 'Kullanıcı Aletleri';
+$lang['site_tools'] = 'Site Aletleri';
+$lang['page_tools'] = 'Sayfa Aletleri';
+$lang['skip_to_content'] = 'Bağlanmak için kaydır';
+$lang['sidebar'] = 'kaydırma çubuğu';
$lang['mail_newpage'] = 'sayfa eklenme:';
$lang['mail_changed'] = 'sayfa değiştirilme:';
$lang['mail_new_user'] = 'yeni kullanıcı';
$lang['mail_upload'] = 'dosya yüklendi:';
+$lang['changes_type'] = 'görünüşü değiştir';
$lang['pages_changes'] = 'Sayfalar';
$lang['media_changes'] = 'Çokluortam dosyaları';
$lang['both_changes'] = 'Sayfalar ve çoklu ortam dosyaları';
@@ -228,6 +247,9 @@ $lang['img_keywords'] = 'Anahtar Sözcükler';
$lang['img_width'] = 'Genişlik';
$lang['img_height'] = 'Yükseklik';
$lang['img_manager'] = 'Ortam oynatıcısında göster';
+$lang['subscr_m_new_header'] = 'Üyelik ekle';
+$lang['subscr_m_current_header'] = 'Üyeliğini onayla';
+$lang['subscr_m_unsubscribe'] = 'Üyelik iptali';
$lang['subscr_m_subscribe'] = 'Kayıt ol';
$lang['subscr_m_receive'] = 'Al';
$lang['authtempfail'] = 'Kullanıcı doğrulama geçici olarak yapılamıyor. Eğer bu durum devam ederse lütfen Wiki yöneticine haber veriniz.';
@@ -280,4 +302,5 @@ $lang['media_view'] = '%s';
$lang['media_edit'] = 'Düzenle %s';
$lang['media_history'] = 'Geçmiş %s';
$lang['media_perm_upload'] = 'Üzgünüm, karşıya dosya yükleme yetkiniz yok.';
+$lang['media_update'] = 'Yeni versiyonu yükleyin';
$lang['media_restore'] = 'Bu sürümü eski haline getir';
diff --git a/inc/lang/uk/jquery.ui.datepicker.js b/inc/lang/uk/jquery.ui.datepicker.js
new file mode 100644
index 000000000..2bdc82ff7
--- /dev/null
+++ b/inc/lang/uk/jquery.ui.datepicker.js
@@ -0,0 +1,24 @@
+/* Ukrainian (UTF-8) initialisation for the jQuery UI date picker plugin. */
+/* Written by Maxim Drogobitskiy (maxdao@gmail.com). */
+/* Corrected by Igor Milla (igor.fsp.milla@gmail.com). */
+jQuery(function($){
+ $.datepicker.regional['uk'] = {
+ closeText: 'Закрити',
+ prevText: '&#x3C;',
+ nextText: '&#x3E;',
+ currentText: 'Сьогодні',
+ monthNames: ['Січень','Лютий','Березень','Квітень','Травень','Червень',
+ 'Липень','Серпень','Вересень','Жовтень','Листопад','Грудень'],
+ monthNamesShort: ['Січ','Лют','Бер','Кві','Тра','Чер',
+ 'Лип','Сер','Вер','Жов','Лис','Гру'],
+ dayNames: ['неділя','понеділок','вівторок','середа','четвер','п’ятниця','субота'],
+ dayNamesShort: ['нед','пнд','вів','срд','чтв','птн','сбт'],
+ dayNamesMin: ['Нд','Пн','Вт','Ср','Чт','Пт','Сб'],
+ weekHeader: 'Тиж',
+ dateFormat: 'dd/mm/yy',
+ firstDay: 1,
+ isRTL: false,
+ showMonthAfterYear: false,
+ yearSuffix: ''};
+ $.datepicker.setDefaults($.datepicker.regional['uk']);
+});
diff --git a/inc/lang/vi/jquery.ui.datepicker.js b/inc/lang/vi/jquery.ui.datepicker.js
new file mode 100644
index 000000000..b49e7eb13
--- /dev/null
+++ b/inc/lang/vi/jquery.ui.datepicker.js
@@ -0,0 +1,23 @@
+/* Vietnamese initialisation for the jQuery UI date picker plugin. */
+/* Translated by Le Thanh Huy (lthanhhuy@cit.ctu.edu.vn). */
+jQuery(function($){
+ $.datepicker.regional['vi'] = {
+ closeText: 'Đóng',
+ prevText: '&#x3C;Trước',
+ nextText: 'Tiếp&#x3E;',
+ currentText: 'Hôm nay',
+ monthNames: ['Tháng Một', 'Tháng Hai', 'Tháng Ba', 'Tháng Tư', 'Tháng Năm', 'Tháng Sáu',
+ 'Tháng Bảy', 'Tháng Tám', 'Tháng Chín', 'Tháng Mười', 'Tháng Mười Một', 'Tháng Mười Hai'],
+ monthNamesShort: ['Tháng 1', 'Tháng 2', 'Tháng 3', 'Tháng 4', 'Tháng 5', 'Tháng 6',
+ 'Tháng 7', 'Tháng 8', 'Tháng 9', 'Tháng 10', 'Tháng 11', 'Tháng 12'],
+ dayNames: ['Chủ Nhật', 'Thứ Hai', 'Thứ Ba', 'Thứ Tư', 'Thứ Năm', 'Thứ Sáu', 'Thứ Bảy'],
+ dayNamesShort: ['CN', 'T2', 'T3', 'T4', 'T5', 'T6', 'T7'],
+ dayNamesMin: ['CN', 'T2', 'T3', 'T4', 'T5', 'T6', 'T7'],
+ weekHeader: 'Tu',
+ dateFormat: 'dd/mm/yy',
+ firstDay: 0,
+ isRTL: false,
+ showMonthAfterYear: false,
+ yearSuffix: ''};
+ $.datepicker.setDefaults($.datepicker.regional['vi']);
+});
diff --git a/inc/lang/vi/lang.php b/inc/lang/vi/lang.php
index c6b61da51..d8e40f875 100644
--- a/inc/lang/vi/lang.php
+++ b/inc/lang/vi/lang.php
@@ -1,42 +1,38 @@
<?php
+
/**
- * vietnamese language file
- *
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
- * @author James Do <jdo@myrealbox.com>
+ *
+ * @author James Do <jdo@myrealbox.com>
*/
-
-
-
$lang['encoding'] = 'utf-8';
$lang['direction'] = 'ltr';
-$lang['doublequoteopening'] = '“'; //&ldquo;
-$lang['doublequoteclosing'] = '”'; //&rdquo;
-$lang['singlequoteopening'] = '‘'; //&lsquo;
-$lang['singlequoteclosing'] = '’'; //&rsquo;
-$lang['apostrophe'] = '’'; //&rsquo;
-
-$lang['btn_edit'] = 'Biên soạn trang này';
-$lang['btn_source'] = 'Xem mã nguồn';
-$lang['btn_show'] = 'Xem trang';
-$lang['btn_create'] = 'Tạo trang này';
-$lang['btn_search'] = 'Tìm';
-$lang['btn_save'] = 'Lưu';
-$lang['btn_preview']= 'Duyệt trước';
-$lang['btn_top'] = 'Trở lên trên';
+$lang['doublequoteopening'] = '“';
+$lang['doublequoteclosing'] = '”';
+$lang['singlequoteopening'] = '‘';
+$lang['singlequoteclosing'] = '’';
+$lang['apostrophe'] = '’';
+$lang['btn_edit'] = 'Biên soạn trang này';
+$lang['btn_source'] = 'Xem mã nguồn';
+$lang['btn_show'] = 'Xem trang';
+$lang['btn_create'] = 'Tạo trang này';
+$lang['btn_search'] = 'Tìm';
+$lang['btn_save'] = 'Lưu';
+$lang['btn_preview'] = 'Duyệt trước';
+$lang['btn_top'] = 'Trở lên trên';
$lang['btn_newer'] = '<< mới hơn';
$lang['btn_older'] = 'cũ hơn >>';
-$lang['btn_revs'] = 'Các phiên bản cũ';
-$lang['btn_recent'] = 'Thay đổi gần đây';
-$lang['btn_upload'] = 'Tải lên';
-$lang['btn_cancel'] = 'Huỷ bỏ';
-$lang['btn_index'] = 'Mục lục';
-$lang['btn_secedit']= 'Biên soạn';
-$lang['btn_login'] = 'Đăng nhập';
-$lang['btn_logout'] = 'Thoát';
-$lang['btn_admin'] = 'Quản lý';
-$lang['btn_update'] = 'Cập nhật';
-$lang['btn_delete'] = 'Xoá';
+$lang['btn_revs'] = 'Các phiên bản cũ';
+$lang['btn_recent'] = 'Thay đổi gần đây';
+$lang['btn_upload'] = 'Tải lên';
+$lang['btn_cancel'] = 'Huỷ bỏ';
+$lang['btn_index'] = 'Mục lục';
+$lang['btn_secedit'] = 'Biên soạn';
+$lang['btn_login'] = 'Đăng nhập';
+$lang['btn_logout'] = 'Thoát';
+$lang['btn_admin'] = 'Quản lý';
+$lang['btn_update'] = 'Cập nhật';
+$lang['btn_delete'] = 'Xoá';
$lang['btn_back'] = 'Quay lại';
$lang['btn_backlink'] = 'Liên kết tới đây';
$lang['btn_profile'] = 'Cập nhật hồ sơ';
@@ -46,40 +42,36 @@ $lang['btn_draft'] = 'Sửa bản nháp';
$lang['btn_recover'] = 'Phục hồi bản nháp';
$lang['btn_draftdel'] = 'Xóa bản nháp';
$lang['btn_revert'] = 'Phục hồi';
-$lang['btn_register'] = 'Đăng ký';
+$lang['btn_register'] = 'Đăng ký';
$lang['btn_apply'] = 'Chấp nhận';
$lang['btn_media'] = 'Quản lý tệp tin';
-
-$lang['loggedinas'] = 'Username đang dùng';
-$lang['user'] = 'Username';
-$lang['pass'] = 'Mật khẩu';
+$lang['loggedinas'] = 'Username đang dùng';
+$lang['user'] = 'Username';
+$lang['pass'] = 'Mật khẩu';
$lang['newpass'] = 'Mật khẩu mới';
$lang['oldpass'] = 'Nhập lại mật khẩu hiện tại';
$lang['passchk'] = 'lần nữa';
-$lang['remember'] = 'Lưu username/password lại';
-$lang['fullname'] = 'Họ và tên';
-$lang['email'] = 'E-Mail';
+$lang['remember'] = 'Lưu username/password lại';
+$lang['fullname'] = 'Họ và tên';
+$lang['email'] = 'E-Mail';
$lang['profile'] = 'Hồ sơ thành viên';
-$lang['badlogin'] = 'Username hoặc password không đúng.';
+$lang['badlogin'] = 'Username hoặc password không đúng.';
$lang['minoredit'] = 'Minor Changes';
-$lang['draftdate'] = 'Bản nháp được tự động lưu lúc'; // full dformat date will be added
+$lang['draftdate'] = 'Bản nháp được tự động lưu lúc';
$lang['nosecedit'] = 'Các trang web đã được thay đổi trong khi chờ đợi, phần thông tin quá hạn đã được thay thế bằng trang đầy đủ.';
-
-$lang['regmissing'] = 'Bạn cần điền vào tất cả các trường';
-$lang['reguexists'] = 'Bạn khác đã dùng username này rồi.';
-$lang['regsuccess'] = 'Đã tạo username, và đã gởi password.';
+$lang['regmissing'] = 'Bạn cần điền vào tất cả các trường';
+$lang['reguexists'] = 'Bạn khác đã dùng username này rồi.';
+$lang['regsuccess'] = 'Đã tạo username, và đã gởi password.';
$lang['regsuccess2'] = 'Thành viên vừa được tạo.';
-$lang['regmailfail']= 'Không gởi password được. Xin bạn liên hệ với người quản lý.';
-$lang['regbadmail'] = 'Email hình như không đúng. Xin bạn liên hệ với người quản lý.';
+$lang['regmailfail'] = 'Không gởi password được. Xin bạn liên hệ với người quản lý.';
+$lang['regbadmail'] = 'Email hình như không đúng. Xin bạn liên hệ với người quản lý.';
$lang['regbadpass'] = 'Hai mật khẩu đưa ra là không giống nhau, xin vui lòng thử lại.';
-$lang['regpwmail'] = 'Password DokuWiki của bạn là';
-$lang['reghere'] = 'Xin bạn đăng ký username nếu chưa có';
-
+$lang['regpwmail'] = 'Password DokuWiki của bạn là';
+$lang['reghere'] = 'Xin bạn đăng ký username nếu chưa có';
$lang['profna'] = 'Wiki này không hỗ trợ sửa đổi hồ sơ cá nhân';
$lang['profnochange'] = 'Không có thay đổi, không có gì để làm.';
$lang['profnoempty'] = 'Không được để trống tên hoặc địa chỉ email.';
$lang['profchanged'] = 'Cập nhật hồ sơ thành viên thành công.';
-
$lang['pwdforget'] = 'Bạn quên mật khẩu? Tạo lại mật khẩu mới';
$lang['resendna'] = 'Wiki này không hỗ trợ gửi lại mật khẩu.';
$lang['resendpwd'] = 'Gửi mật khẩu mới cho';
@@ -88,20 +80,17 @@ $lang['resendpwdnouser'] = 'Xin lỗi, chúng tôi không thể tìm thấ
$lang['resendpwdbadauth'] = 'Xin lỗi, mã này xác thực không hợp lệ. Hãy chắc chắn rằng bạn sử dụng liên kết xác nhận đầy đủ.';
$lang['resendpwdconfirm'] = 'Một liên kết xác nhận đã được gửi bằng email.';
$lang['resendpwdsuccess'] = 'Mật khẩu mới của bạn đã được gửi bằng email.';
-
$lang['license'] = 'Trừ khi có ghi chú khác, nội dung trên wiki này được cấp phép theo giấy phép sau đây:';
$lang['licenseok'] = 'Lưu ý: Bằng cách chỉnh sửa trang này, bạn đồng ý cấp giấy phép nội dung của bạn theo giấy phép sau:';
-
$lang['searchmedia'] = 'Tìm tên file:';
$lang['searchmedia_in'] = 'Tìm ở %s';
-$lang['txt_upload'] = 'Chọn tệp để tải lên';
-$lang['txt_filename'] = 'Điền wikiname (tuỳ ý)';
+$lang['txt_upload'] = 'Chọn tệp để tải lên';
+$lang['txt_filename'] = 'Điền wikiname (tuỳ ý)';
$lang['txt_overwrt'] = 'Ghi đè file trùng';
-$lang['lockedby'] = 'Đang khoá bởi';
-$lang['lockexpire'] = 'Sẽ được mở khóa vào lúc';
-
-$lang['js']['willexpire'] = 'Trong một phút nữa bài viết sẽ được mở khóa để cho phép người khác chỉnh sửa.\nĐể tránh xung đột, bạn nên bấm nút Duyệt trước để lập lại thời gian khoá bài';
-$lang['js']['notsavedyet'] = 'Hiện có những thay đổi chưa được bảo lưu, và sẽ mất.\nBạn thật sự muốn tiếp tục?';
+$lang['lockedby'] = 'Đang khoá bởi';
+$lang['lockexpire'] = 'Sẽ được mở khóa vào lúc';
+$lang['js']['willexpire'] = 'Trong một phút nữa bài viết sẽ được mở khóa để cho phép người khác chỉnh sửa.\nĐể tránh xung đột, bạn nên bấm nút Duyệt trước để lập lại thời gian khoá bài';
+$lang['js']['notsavedyet'] = 'Hiện có những thay đổi chưa được bảo lưu, và sẽ mất.\nBạn thật sự muốn tiếp tục?';
$lang['js']['searchmedia'] = 'Tìm kiếm tập tin';
$lang['js']['keepopen'] = 'Giữ cửa sổ đang mở trên lựa chọn';
$lang['js']['hidedetails'] = 'Ẩn thông tin chi tiết';
@@ -126,29 +115,27 @@ $lang['js']['medialeft'] = 'Căn ảnh sang trái.';
$lang['js']['mediaright'] = 'Căn ảnh sang phải.';
$lang['js']['mediacenter'] = 'Cản ảnh ra giữa.';
$lang['js']['medianoalign'] = 'Không căn.';
-$lang['js']['nosmblinks'] = 'Nối với các Windows shares chỉ có hiệu lực với Microsoft Internet Explorer.\nBạn vẫn có thể sao và chép các mốc nối.';
+$lang['js']['nosmblinks'] = 'Nối với các Windows shares chỉ có hiệu lực với Microsoft Internet Explorer.\nBạn vẫn có thể sao và chép các mốc nối.';
$lang['js']['linkwiz'] = 'Hộp thoại liên kết';
$lang['js']['linkto'] = 'Liên kết tới:';
-$lang['js']['del_confirm']= 'Xoá mục này?';
+$lang['js']['del_confirm'] = 'Xoá mục này?';
$lang['js']['restore_confirm'] = 'Sẵn sàng phục hồi phiên bản này?';
-$lang['js']['media_diff'] = 'So sánh:';
-$lang['js']['media_select'] = 'Chọn nhiều file…';
-$lang['js']['media_upload_btn'] = 'Tải lên';
-$lang['js']['media_done_btn'] = 'Xong';
-$lang['js']['media_drop'] = 'Kéo các file vào đây để tải lên';
-$lang['js']['media_overwrt'] = 'Ghi đè các file trùng';
-
-$lang['rssfailed'] = 'Nguồn này gặp phải lỗi';
-$lang['nothingfound']= 'Không tìm được gì';
-
-$lang['mediaselect'] = 'Xem';
-$lang['fileupload'] = 'Tải lên tệp media';
-$lang['uploadsucc'] = 'Tải lên thành công';
-$lang['uploadfail'] = 'Tải lên thất bại. Có thể vì không đủ quyền?';
-$lang['uploadwrong'] = 'Tải lên bị từ chối. Cấm tải loại tệp này';
+$lang['js']['media_diff'] = 'So sánh:';
+$lang['js']['media_select'] = 'Chọn nhiều file…';
+$lang['js']['media_upload_btn'] = 'Tải lên';
+$lang['js']['media_done_btn'] = 'Xong';
+$lang['js']['media_drop'] = 'Kéo các file vào đây để tải lên';
+$lang['js']['media_overwrt'] = 'Ghi đè các file trùng';
+$lang['rssfailed'] = 'Nguồn này gặp phải lỗi';
+$lang['nothingfound'] = 'Không tìm được gì';
+$lang['mediaselect'] = 'Xem';
+$lang['fileupload'] = 'Tải lên tệp media';
+$lang['uploadsucc'] = 'Tải lên thành công';
+$lang['uploadfail'] = 'Tải lên thất bại. Có thể vì không đủ quyền?';
+$lang['uploadwrong'] = 'Tải lên bị từ chối. Cấm tải loại tệp này';
$lang['uploadexist'] = 'Tệp tin bị trùng. Chưa có gì xảy ra.';
-$lang['namespaces'] = 'Thư mục';
-$lang['mediafiles'] = 'Tệp có sẵn ở';
+$lang['namespaces'] = 'Thư mục';
+$lang['mediafiles'] = 'Tệp có sẵn ở';
$lang['accessdenied'] = 'Bạn không được phép xem trang này.';
$lang['mediausage'] = 'Sử dụng cú pháp sau đây để dẫn đến tập tin này:';
$lang['mediaview'] = 'Xem tệp gốc';
@@ -157,56 +144,51 @@ $lang['mediaupload'] = 'Tải một tập tin lên thư mục hiện t
$lang['mediaextchange'] = 'Phần mở rộng thay đổi từ .%s thành .%s!';
$lang['ref_inuse'] = 'Không thể xóa tập tin vì nó đang được sử dụng cho các trang sau:';
$lang['ref_hidden'] = 'Một số tài liệu sử dụng cho trang này bạn không được cấp phép truy cập.';
-
-$lang['hits'] = 'Trùng';
-$lang['quickhits'] = 'Trang trùng hợp';
-$lang['toc'] = 'Nội dung';
-$lang['current'] = 'hiện tại';
-$lang['yours'] = 'Phiên bản hiện tại';
-$lang['diff'] = 'cho xem khác biệt với phiên bản hiện tại';
+$lang['hits'] = 'Trùng';
+$lang['quickhits'] = 'Trang trùng hợp';
+$lang['toc'] = 'Nội dung';
+$lang['current'] = 'hiện tại';
+$lang['yours'] = 'Phiên bản hiện tại';
+$lang['diff'] = 'cho xem khác biệt với phiên bản hiện tại';
$lang['diff2'] = 'Sự khác biệt giữa các bản được lựa chọn';
$lang['difflink'] = 'Liên kết để xem bản so sánh này';
$lang['diff_type'] = 'Xem sự khác biệt:';
$lang['diff_inline'] = 'Nội tuyến';
$lang['diff_side'] = 'Xếp cạnh nhau';
-$lang['line'] = 'Dòng';
-$lang['breadcrumb'] = 'Trang đã xem';
+$lang['line'] = 'Dòng';
+$lang['breadcrumb'] = 'Trang đã xem';
$lang['youarehere'] = 'Bạn đang ở đây';
-$lang['lastmod'] = 'Thời điểm thay đổi';
-$lang['by'] = 'do';
-$lang['deleted'] = 'bị xoá';
-$lang['created'] = 'được tạo ra';
-$lang['restored'] = 'phiên bản cũ đã được khôi phục (%s)';
+$lang['lastmod'] = 'Thời điểm thay đổi';
+$lang['by'] = 'do';
+$lang['deleted'] = 'bị xoá';
+$lang['created'] = 'được tạo ra';
+$lang['restored'] = 'phiên bản cũ đã được khôi phục (%s)';
$lang['external_edit'] = 'external edit';
-$lang['summary'] = 'Tóm tắt biên soạn';
+$lang['summary'] = 'Tóm tắt biên soạn';
$lang['noflash'] = '<a href="http://www.adobe.com/products/flashplayer/">Adobe Flash Plugin</a> cần được cài để có thể xem nội dung này.';
-
-$lang['mail_newpage'] = 'Trang được thêm:';
-$lang['mail_changed'] = 'Trang thay đổi:';
-
+$lang['mail_newpage'] = 'Trang được thêm:';
+$lang['mail_changed'] = 'Trang thay đổi:';
$lang['changes_type'] = 'Xem thay đổi của';
$lang['pages_changes'] = 'Trang';
$lang['media_changes'] = 'Tệp media';
$lang['both_changes'] = 'Cả trang và các tập tin media';
-
-$lang['qb_bold'] = 'Chữ đậm';
-$lang['qb_italic'] = 'Chữ nghiêng';
-$lang['qb_underl'] = 'Chữ gạch dưới';
-$lang['qb_code'] = 'Chữ mã nguồn';
+$lang['qb_bold'] = 'Chữ đậm';
+$lang['qb_italic'] = 'Chữ nghiêng';
+$lang['qb_underl'] = 'Chữ gạch dưới';
+$lang['qb_code'] = 'Chữ mã nguồn';
$lang['qb_strike'] = 'Strike-through Text';
-$lang['qb_h1'] = 'Đầu đề cấp 1';
-$lang['qb_h2'] = 'Đầu đề cấp 2';
-$lang['qb_h3'] = 'Đầu đề cấp 3';
-$lang['qb_h4'] = 'Đầu đề cấp 4';
-$lang['qb_h5'] = 'Đầu đề cấp 5';
-$lang['qb_link'] = 'Mốc nối nội tại';
-$lang['qb_extlink'] = 'Mốc nối ra ngoài';
-$lang['qb_hr'] = 'Gạch ngang';
-$lang['qb_ol'] = 'Điểm trong danh sách có thứ tự';
-$lang['qb_ul'] = 'Điểm trong danh sách không đánh số';
-$lang['qb_media'] = 'Thêm ảnh và tệp khác';
-$lang['qb_sig'] = 'Đặt chữ ký';
-
+$lang['qb_h1'] = 'Đầu đề cấp 1';
+$lang['qb_h2'] = 'Đầu đề cấp 2';
+$lang['qb_h3'] = 'Đầu đề cấp 3';
+$lang['qb_h4'] = 'Đầu đề cấp 4';
+$lang['qb_h5'] = 'Đầu đề cấp 5';
+$lang['qb_link'] = 'Mốc nối nội tại';
+$lang['qb_extlink'] = 'Mốc nối ra ngoài';
+$lang['qb_hr'] = 'Gạch ngang';
+$lang['qb_ol'] = 'Điểm trong danh sách có thứ tự';
+$lang['qb_ul'] = 'Điểm trong danh sách không đánh số';
+$lang['qb_media'] = 'Thêm ảnh và tệp khác';
+$lang['qb_sig'] = 'Đặt chữ ký';
$lang['metaedit'] = 'Sửa Metadata';
$lang['metasaveerr'] = 'Thất bại khi viết metadata';
$lang['metasaveok'] = 'Metadata đã được lưu';
@@ -224,11 +206,8 @@ $lang['img_keywords'] = 'Từ khóa';
$lang['img_width'] = 'Rộng';
$lang['img_height'] = 'Cao';
$lang['img_manager'] = 'Xem trong trình quản lý tệp media';
-
-/* installer strings */
$lang['i_chooselang'] = 'Chọn ngôn ngữ';
$lang['i_retry'] = 'Thử lại';
-
$lang['years'] = 'cách đây %d năm';
$lang['months'] = 'cách đây %d tháng';
$lang['weeks'] = 'cách đây %d tuần';
@@ -236,9 +215,7 @@ $lang['days'] = 'cách đây %d ngày';
$lang['hours'] = 'cách đây %d giờ';
$lang['minutes'] = 'cách đây %d phút';
$lang['seconds'] = 'cách đây %d giây';
-
$lang['wordblock'] = 'Thay đổi của bạn đã không được lưu lại bởi vì nó có chứa văn bản bị chặn (spam).';
-
$lang['media_uploadtab'] = 'Tải lên';
$lang['media_searchtab'] = 'Tìm';
$lang['media_file'] = 'Tệp';
@@ -262,5 +239,3 @@ $lang['media_perm_read'] = 'Sorry, bạn không đủ quyền truy cập.'
$lang['media_perm_upload'] = 'Xin lỗi, bạn không đủ quyền để upload file lên.';
$lang['media_update'] = 'Tải lên phiên bản mới';
$lang['media_restore'] = 'Phục hồi phiên bản này';
-
-//Setup VIM: ex: et ts=2 :
diff --git a/inc/lang/zh-tw/jquery.ui.datepicker.js b/inc/lang/zh-tw/jquery.ui.datepicker.js
new file mode 100644
index 000000000..b9105ea50
--- /dev/null
+++ b/inc/lang/zh-tw/jquery.ui.datepicker.js
@@ -0,0 +1,23 @@
+/* Chinese initialisation for the jQuery UI date picker plugin. */
+/* Written by Ressol (ressol@gmail.com). */
+jQuery(function($){
+ $.datepicker.regional['zh-TW'] = {
+ closeText: '關閉',
+ prevText: '&#x3C;上月',
+ nextText: '下月&#x3E;',
+ currentText: '今天',
+ monthNames: ['一月','二月','三月','四月','五月','六月',
+ '七月','八月','九月','十月','十一月','十二月'],
+ monthNamesShort: ['一月','二月','三月','四月','五月','六月',
+ '七月','八月','九月','十月','十一月','十二月'],
+ dayNames: ['星期日','星期一','星期二','星期三','星期四','星期五','星期六'],
+ dayNamesShort: ['周日','周一','周二','周三','周四','周五','周六'],
+ dayNamesMin: ['日','一','二','三','四','五','六'],
+ weekHeader: '周',
+ dateFormat: 'yy/mm/dd',
+ firstDay: 1,
+ isRTL: false,
+ showMonthAfterYear: true,
+ yearSuffix: '年'};
+ $.datepicker.setDefaults($.datepicker.regional['zh-TW']);
+});
diff --git a/inc/lang/zh-tw/lang.php b/inc/lang/zh-tw/lang.php
index 2d12719f6..456377810 100644
--- a/inc/lang/zh-tw/lang.php
+++ b/inc/lang/zh-tw/lang.php
@@ -8,11 +8,11 @@
* @author http://www.chinese-tools.com/tools/converter-simptrad.html
* @author Wayne San <waynesan@zerozone.tw>
* @author Cheng-Wei Chien <e.cwchien@gmail.com>
- * @author Danny Lin
* @author Shuo-Ting Jian <shoting@gmail.com>
* @author syaoranhinata@gmail.com
* @author Ichirou Uchiki <syaoranhinata@gmail.com>
* @author tsangho <ou4222@gmail.com>
+ * @author Danny Lin <danny0838@gmail.com>
*/
$lang['encoding'] = 'utf-8';
$lang['direction'] = 'ltr';
@@ -81,15 +81,17 @@ $lang['regbadmail'] = '您輸入的電郵地址似乎不正確。若
$lang['regbadpass'] = '兩次輸入的密碼不一致,請再試一次。';
$lang['regpwmail'] = '您的 DokuWiki 帳號密碼';
$lang['reghere'] = '您還沒有帳號嗎?註冊一個吧。';
-$lang['profna'] = '在本 wiki 上,不能修改個人資料。';
+$lang['profna'] = '本 wiki 不支援修改個人資料。';
$lang['profnochange'] = '並未作任何變更。';
$lang['profnoempty'] = '帳號或電郵地址不可空白!';
$lang['profchanged'] = '個人資料已更新。';
-$lang['profnodelete'] = '這一wiki不支援刪除用戶';
+$lang['profnodelete'] = '本 wiki 不支援刪除使用者';
$lang['profdeleteuser'] = '刪除帳號';
-$lang['profdeleted'] = '您在這wiki中的用戶帳號已經被刪除';
+$lang['profdeleted'] = '您的使用者帳號已從本 wiki 刪除';
+$lang['profconfdelete'] = '我想把帳號從本 wiki 刪除(不能復原)';
+$lang['profconfdeletemissing'] = '未勾選確認方塊';
$lang['pwdforget'] = '忘記密碼了?索取新密碼!';
-$lang['resendna'] = '本 wiki 並不支援重寄密碼。';
+$lang['resendna'] = '本 wiki 不支援重寄密碼。';
$lang['resendpwd'] = '設定新密碼供';
$lang['resendpwdmissing'] = '抱歉,您必須填寫所有欄位。';
$lang['resendpwdnouser'] = '抱歉,資料庫內找不到這個使用者。';
@@ -97,7 +99,7 @@ $lang['resendpwdbadauth'] = '抱歉,認證碼無效。請確認您使用
$lang['resendpwdconfirm'] = '確認連結已通過郵件發送給您了。';
$lang['resendpwdsuccess'] = '您的新密碼已寄出。';
$lang['license'] = '若無特別註明,本 wiki 上的內容都是採用以下授權方式:';
-$lang['licenseok'] = '注意:編輯此頁面表示您已同意以下的授權方式:';
+$lang['licenseok'] = '注意:編輯此頁面表示您同意用以下授權方式發布您撰寫的內容:';
$lang['searchmedia'] = '搜尋檔名:';
$lang['searchmedia_in'] = '在 %s 裏搜尋';
$lang['txt_upload'] = '請選擇要上傳的檔案';
@@ -232,7 +234,7 @@ $lang['qb_extlink'] = '外部連結';
$lang['qb_hr'] = '水平線';
$lang['qb_ol'] = '有序列表項目';
$lang['qb_ul'] = '無序列表項目';
-$lang['qb_media'] = '加入圖片或檔案';
+$lang['qb_media'] = '加入圖片或檔案 (開新視窗)';
$lang['qb_sig'] = '插入簽名';
$lang['qb_smileys'] = '表情符號';
$lang['qb_chars'] = '特殊字元';
@@ -271,6 +273,8 @@ $lang['subscr_m_receive'] = '接收';
$lang['subscr_style_every'] = '每次更改都發送信件';
$lang['subscr_style_digest'] = '對每個頁面發送更改的摘要信件 (每 %.2f 天)';
$lang['subscr_style_list'] = '自上次發信以來更改的頁面的列表 (每 %.2f 天)';
+
+/* auth.class language support */
$lang['authtempfail'] = '暫不提供帳號認證。若本狀況持續,請通知本 wiki 管理員。';
$lang['authpwdexpire'] = '您的密碼將在 %d 天內到期,請馬上更換新密碼。';
$lang['i_chooselang'] = '選擇您的語系';
@@ -307,7 +311,7 @@ $lang['weeks'] = '%d 週前';
$lang['days'] = '%d 天前';
$lang['hours'] = '%d 個小時前';
$lang['minutes'] = '%d 分鐘前';
-$lang['seconds'] = '%s 秒鐘前';
+$lang['seconds'] = '%d 秒鐘前';
$lang['wordblock'] = '無法儲存您的更改,因它含有受阻擋的文字 (垃圾訊息)。';
$lang['media_uploadtab'] = '上傳';
$lang['media_searchtab'] = '搜尋';
@@ -332,3 +336,8 @@ $lang['media_perm_read'] = '抱歉,您沒有足夠權限讀取檔案。'
$lang['media_perm_upload'] = '抱歉,您沒有足夠權限上傳檔案。';
$lang['media_update'] = '上傳新的版本';
$lang['media_restore'] = '還原這個版本';
+
+$lang['currentns'] = '目前的命名空間';
+$lang['searchresult'] = '搜尋結果';
+$lang['plainhtml'] = '純 HTML';
+$lang['wikimarkup'] = 'Wiki 語法標記';
diff --git a/inc/lang/zh/jquery.ui.datepicker.js b/inc/lang/zh/jquery.ui.datepicker.js
new file mode 100644
index 000000000..d337e4a99
--- /dev/null
+++ b/inc/lang/zh/jquery.ui.datepicker.js
@@ -0,0 +1,23 @@
+/* Chinese initialisation for the jQuery UI date picker plugin. */
+/* Written by Cloudream (cloudream@gmail.com). */
+jQuery(function($){
+ $.datepicker.regional['zh-CN'] = {
+ closeText: '关闭',
+ prevText: '&#x3C;上月',
+ nextText: '下月&#x3E;',
+ currentText: '今天',
+ monthNames: ['一月','二月','三月','四月','五月','六月',
+ '七月','八月','九月','十月','十一月','十二月'],
+ monthNamesShort: ['一月','二月','三月','四月','五月','六月',
+ '七月','八月','九月','十月','十一月','十二月'],
+ dayNames: ['星期日','星期一','星期二','星期三','星期四','星期五','星期六'],
+ dayNamesShort: ['周日','周一','周二','周三','周四','周五','周六'],
+ dayNamesMin: ['日','一','二','三','四','五','六'],
+ weekHeader: '周',
+ dateFormat: 'yy-mm-dd',
+ firstDay: 1,
+ isRTL: false,
+ showMonthAfterYear: true,
+ yearSuffix: '年'};
+ $.datepicker.setDefaults($.datepicker.regional['zh-CN']);
+});
diff --git a/inc/lang/zh/lang.php b/inc/lang/zh/lang.php
index a6c95143f..8777c65a5 100644
--- a/inc/lang/zh/lang.php
+++ b/inc/lang/zh/lang.php
@@ -17,6 +17,11 @@
* @author Shuo-Ting Jian <shoting@gmail.com>
* @author Rachel <rzhang0802@gmail.com>
* @author Donald <donaldtcong@gmail.com>
+ * @author Yangyu Huang <yangyu.huang@gmail.com>
+ * @author anjianshi <anjianshi@gmail.com>
+ * @author oott123 <ip.192.168.1.1@qq.com>
+ * @author Cupen <Cupenoruler@foxmail.com>
+ * @author xiqingongzi <Xiqingongzi@Gmail.com>
*/
$lang['encoding'] = 'utf-8';
$lang['direction'] = 'ltr';
@@ -32,7 +37,7 @@ $lang['btn_create'] = '创建该页面';
$lang['btn_search'] = '搜索';
$lang['btn_save'] = '保存';
$lang['btn_preview'] = '预览';
-$lang['btn_top'] = '到顶部';
+$lang['btn_top'] = '回到顶部';
$lang['btn_newer'] = '<< 较新的';
$lang['btn_older'] = '较旧的 >>';
$lang['btn_revs'] = '修订记录';
@@ -60,6 +65,7 @@ $lang['btn_revert'] = '恢复';
$lang['btn_register'] = '注册';
$lang['btn_apply'] = '应用';
$lang['btn_media'] = '媒体管理器';
+$lang['btn_deleteuser'] = '移除我的账户';
$lang['loggedinas'] = '登录为';
$lang['user'] = '用户名';
$lang['pass'] = '密码';
@@ -75,7 +81,7 @@ $lang['badpassconfirm'] = '对不起,密码错误';
$lang['minoredit'] = '细微修改';
$lang['draftdate'] = '草稿自动保存于';
$lang['nosecedit'] = '在您编辑期间本页刚被他人修改过,局部信息已过期,故载入全页。';
-$lang['regmissing'] = '对不起,您必须填写所有的区域。';
+$lang['regmissing'] = '对不起,您必须填写所有的字段。';
$lang['reguexists'] = '对不起,该用户名已经存在。';
$lang['regsuccess'] = '新用户已建立,密码将通过电子邮件发送给您。';
$lang['regsuccess2'] = '新用户已建立';
@@ -84,11 +90,15 @@ $lang['regbadmail'] = '您输入的邮件地址有问题——如果
$lang['regbadpass'] = '您输入的密码与系统产生的不符,请重试。';
$lang['regpwmail'] = '您的 DokuWiki 密码';
$lang['reghere'] = '还没有账号?立即注册';
-$lang['profna'] = '本维基不支持修改个人信息';
+$lang['profna'] = '本维基不允许修改个人信息';
$lang['profnochange'] = '没有改动,不进行操作。';
$lang['profnoempty'] = '不允许使用空的用户名或邮件地址。';
$lang['profchanged'] = '用户信息更新成功。';
+$lang['profnodelete'] = '这个 wiki 不支持删除用户';
$lang['profdeleteuser'] = '删除账号';
+$lang['profdeleted'] = '你的用户已经从这个 wiki 中删除';
+$lang['profconfdelete'] = '我希望删除我的账户。<br/>这项操作无法撤销。';
+$lang['profconfdeletemissing'] = '确认框未勾选';
$lang['pwdforget'] = '忘记密码?立即获取新密码';
$lang['resendna'] = '本维基不支持二次发送密码。';
$lang['resendpwd'] = '设置新密码用于';
@@ -299,6 +309,7 @@ $lang['i_policy'] = '初始的 ACL 政策';
$lang['i_pol0'] = '开放的维基(任何人都有读、写、上传的权限)';
$lang['i_pol1'] = '公共的维基(任何人都有读的权限,只有注册用户才有写和上传的权限)';
$lang['i_pol2'] = '关闭的维基(只有注册用户才有读、写、上传的权限)';
+$lang['i_allowreg'] = '允许用户自行注册';
$lang['i_retry'] = '重试';
$lang['i_license'] = '请选择您希望的内容发布许可协议:';
$lang['i_license_none'] = '不要显示任何许可协议信息';
@@ -336,3 +347,7 @@ $lang['media_perm_read'] = '抱歉,您没有足够权限读取这些文
$lang['media_perm_upload'] = '抱歉,您没有足够权限来上传文件。';
$lang['media_update'] = '上传新版本';
$lang['media_restore'] = '恢复这个版本';
+$lang['currentns'] = '当前命名空间';
+$lang['searchresult'] = '搜索结果';
+$lang['plainhtml'] = '纯HTML';
+$lang['wikimarkup'] = 'Wiki Markup 语言';
diff --git a/inc/lessc.inc.php b/inc/lessc.inc.php
index 0699de52f..3d0ed768a 100644
--- a/inc/lessc.inc.php
+++ b/inc/lessc.inc.php
@@ -708,7 +708,7 @@ class lessc {
}
$oldParent = $mixin->parent;
- if ($mixin != $block) $mixin->parent = $block;
+ if ($mixin !== $block) $mixin->parent = $block;
foreach ($this->sortProps($mixin->props) as $subProp) {
if ($suffix !== null &&
diff --git a/inc/load.php b/inc/load.php
index 923671296..f1deffe19 100644
--- a/inc/load.php
+++ b/inc/load.php
@@ -35,6 +35,7 @@ require_once(DOKU_INC.'inc/template.php');
require_once(DOKU_INC.'inc/toolbar.php');
require_once(DOKU_INC.'inc/utf8.php');
require_once(DOKU_INC.'inc/auth.php');
+require_once(DOKU_INC.'inc/compatibility.php');
/**
* spl_autoload_register callback
@@ -75,6 +76,7 @@ function load_autoload($name){
'ZipLib' => DOKU_INC.'inc/ZipLib.class.php',
'DokuWikiFeedCreator' => DOKU_INC.'inc/feedcreator.class.php',
'Doku_Parser_Mode' => DOKU_INC.'inc/parser/parser.php',
+ 'Doku_Parser_Mode_Plugin' => DOKU_INC.'inc/parser/parser.php',
'SafeFN' => DOKU_INC.'inc/SafeFN.class.php',
'Sitemapper' => DOKU_INC.'inc/Sitemapper.php',
'PassHash' => DOKU_INC.'inc/PassHash.class.php',
@@ -94,6 +96,12 @@ function load_autoload($name){
'DokuWiki_Remote_Plugin' => DOKU_PLUGIN.'remote.php',
'DokuWiki_Auth_Plugin' => DOKU_PLUGIN.'auth.php',
+ 'Doku_Renderer' => DOKU_INC.'inc/parser/renderer.php',
+ 'Doku_Renderer_xhtml' => DOKU_INC.'inc/parser/xhtml.php',
+ 'Doku_Renderer_code' => DOKU_INC.'inc/parser/code.php',
+ 'Doku_Renderer_xhtmlsummary' => DOKU_INC.'inc/parser/xhtmlsummary.php',
+ 'Doku_Renderer_metadata' => DOKU_INC.'inc/parser/metadata.php',
+
);
if(isset($classes[$name])){
diff --git a/inc/mail.php b/inc/mail.php
index d0ea651bf..9994ac63e 100644
--- a/inc/mail.php
+++ b/inc/mail.php
@@ -40,6 +40,8 @@ if (!defined('PREG_PATTERN_VALID_EMAIL')) define('PREG_PATTERN_VALID_EMAIL', '['
function mail_setup(){
global $conf;
global $USERINFO;
+ /** @var Input $INPUT */
+ global $INPUT;
// auto constructed address
$host = @parse_url(DOKU_URL,PHP_URL_HOST);
@@ -53,11 +55,8 @@ function mail_setup(){
$replace['@MAIL@'] = $noreply;
}
- if(!empty($_SERVER['REMOTE_USER'])){
- $replace['@USER@'] = $_SERVER['REMOTE_USER'];
- }else{
- $replace['@USER@'] = 'noreply';
- }
+ // use 'noreply' if no user
+ $replace['@USER@'] = $INPUT->server->str('REMOTE_USER', 'noreply', true);
if(!empty($USERINFO['name'])){
$replace['@NAME@'] = $USERINFO['name'];
@@ -284,10 +283,9 @@ function mail_quotedprintable_encode($sText,$maxlen=74,$bEmulate_imap_8bit=true)
// for EBCDIC safeness encode !"#$@[\]^`{|}~,
// for complete safeness encode every character :)
if ($bEmulate_imap_8bit)
- $sRegExp = '/[^\x20\x21-\x3C\x3E-\x7E]/e';
+ $sRegExp = '/[^\x20\x21-\x3C\x3E-\x7E]/';
- $sReplmt = 'sprintf( "=%02X", ord ( "$0" ) ) ;';
- $sLine = preg_replace( $sRegExp, $sReplmt, $sLine );
+ $sLine = preg_replace_callback( $sRegExp, 'mail_quotedprintable_encode_callback', $sLine );
// encode x09,x20 at lineends
{
@@ -330,3 +328,6 @@ function mail_quotedprintable_encode($sText,$maxlen=74,$bEmulate_imap_8bit=true)
return implode(MAILHEADER_EOL,$aLines);
}
+function mail_quotedprintable_encode_callback($matches){
+ return sprintf( "=%02X", ord ( $matches[0] ) ) ;
+}
diff --git a/inc/media.php b/inc/media.php
index a9f6be771..dc76521c6 100644
--- a/inc/media.php
+++ b/inc/media.php
@@ -90,7 +90,7 @@ function media_metasave($id,$auth,$data){
* @return bool
*/
function media_isexternal($id){
- if (preg_match('#^(https?|ftp)://#i', $id)) return true;
+ if (preg_match('#^(?:https?|ftp)://#i', $id)) return true;
return false;
}
@@ -115,7 +115,7 @@ function media_ispublic($id){
* @author Kate Arzamastseva <pshns@ukr.net>
*/
function media_metaform($id,$auth){
- global $lang, $config_cascade;
+ global $lang;
if($auth < AUTH_UPLOAD) {
echo '<div class="nothing">'.$lang['media_perm_upload'].'</div>'.NL;
@@ -167,6 +167,8 @@ function media_metaform($id,$auth){
$form->addElement(form_makeButton('submit', '', $lang['btn_save'], array('accesskey' => 's', 'name' => 'mediado[save]')));
$form->addElement('</div>'.NL);
$form->printForm();
+
+ return true;
}
/**
@@ -176,7 +178,7 @@ function media_metaform($id,$auth){
*/
function media_inuse($id) {
global $conf;
- $mediareferences = array();
+
if($conf['refcheck']){
$mediareferences = ft_mediause($id,true);
if(!count($mediareferences)) {
@@ -199,7 +201,9 @@ define('DOKU_MEDIA_EMPTY_NS', 8);
*
* If configured, checks for media references before deletion
*
- * @author Andreas Gohr <andi@splitbrain.org>
+ * @author Andreas Gohr <andi@splitbrain.org>
+ * @param string $id media id
+ * @param int $auth current auth check result
* @return int One of: 0,
* DOKU_MEDIA_DELETED,
* DOKU_MEDIA_DELETED | DOKU_MEDIA_EMPTY_NS,
@@ -248,6 +252,8 @@ function media_delete($id,$auth){
/**
* Handle file uploads via XMLHttpRequest
*
+ * @param string $ns target namespace
+ * @param int $auth current auth check result
* @return mixed false on error, id of the new file on success
*/
function media_upload_xhr($ns,$auth){
@@ -255,7 +261,7 @@ function media_upload_xhr($ns,$auth){
global $INPUT;
$id = $INPUT->get->str('qqfile');
- list($ext,$mime,$dl) = mimetype($id);
+ list($ext,$mime) = mimetype($id);
$input = fopen("php://input", "r");
if (!($tmp = io_mktmpdir())) return false;
$path = $tmp.'/'.md5($id);
@@ -278,7 +284,7 @@ function media_upload_xhr($ns,$auth){
'copy'
);
unlink($path);
- if ($tmp) dir_delete($tmp);
+ if ($tmp) io_rmdir($tmp, true);
if (is_array($res)) {
msg($res[0], $res[1]);
return false;
@@ -291,6 +297,9 @@ function media_upload_xhr($ns,$auth){
*
* @author Andreas Gohr <andi@splitbrain.org>
* @author Michael Klier <chi@chimeric.de>
+ * @param string $ns target namespace
+ * @param int $auth current auth check result
+ * @param bool|array $file $_FILES member, $_FILES['upload'] if false
* @return mixed false on error, id of the new file on success
*/
function media_upload($ns,$auth,$file=false){
@@ -307,8 +316,8 @@ function media_upload($ns,$auth,$file=false){
if($file['error']) return false;
// check extensions
- list($fext,$fmime,$dl) = mimetype($file['name']);
- list($iext,$imime,$dl) = mimetype($id);
+ list($fext,$fmime) = mimetype($file['name']);
+ list($iext,$imime) = mimetype($id);
if($fext && !$iext){
// no extension specified in id - read original one
$id .= '.'.$fext;
@@ -563,10 +572,10 @@ function media_contentcheck($file,$mime){
*/
function media_notify($id,$file,$mime,$old_rev=false){
global $conf;
- if(empty($conf['notify'])) return; //notify enabled?
+ if(empty($conf['notify'])) return false; //notify enabled?
$subscription = new Subscription();
- return $subscription->send_media_diff($conf['notify'], 'uploadmail', $id, $old_rev, '');
+ return $subscription->send_media_diff($conf['notify'], 'uploadmail', $id, $old_rev);
}
/**
@@ -640,7 +649,8 @@ function media_tabs_files($selected_tab = ''){
* Prints tabs for files details actions
*
* @author Kate Arzamastseva <pshns@ukr.net>
- * @param string $selected_tab - opened tab
+ * @param string $image filename of the current image
+ * @param string $selected_tab opened tab
*/
function media_tabs_details($image, $selected_tab = ''){
global $lang, $conf;
@@ -649,7 +659,7 @@ function media_tabs_details($image, $selected_tab = ''){
$tabs['view'] = array('href' => media_managerURL(array('tab_details' => 'view'), '&'),
'caption' => $lang['media_viewtab']);
- list($ext, $mime) = mimetype($image);
+ list(, $mime) = mimetype($image);
if ($mime == 'image/jpeg' && @file_exists(mediaFN($image))) {
$tabs['edit'] = array('href' => media_managerURL(array('tab_details' => 'edit'), '&'),
'caption' => $lang['media_edittab']);
@@ -669,7 +679,6 @@ function media_tabs_details($image, $selected_tab = ''){
*/
function media_tab_files_options(){
global $lang;
- global $NS;
global $INPUT;
global $ID;
$form = new Doku_Form(array('class' => 'options', 'method' => 'get',
@@ -695,7 +704,7 @@ function media_tab_files_options(){
if ($checked == $option) {
$attrs['checked'] = 'checked';
}
- $form->addElement(form_makeRadioField($group, $option,
+ $form->addElement(form_makeRadioField($group . '_dwmedia', $option,
$lang['media_' . $group . '_' . $option],
$content[0] . '__' . $option,
$option, $attrs));
@@ -719,10 +728,23 @@ function _media_get_sort_type() {
return _media_get_display_param('sort', array('default' => 'name', 'date'));
}
+/**
+ * Returns type of listing for the list of files in media manager
+ *
+ * @author Kate Arzamastseva <pshns@ukr.net>
+ * @return string - list type
+ */
function _media_get_list_type() {
return _media_get_display_param('list', array('default' => 'thumbs', 'rows'));
}
+/**
+ * Get display parameters
+ *
+ * @param string $param name of parameter
+ * @param array $values allowed values, where default value has index key 'default'
+ * @return string the parameter value
+ */
function _media_get_display_param($param, $values) {
global $INPUT;
if (in_array($INPUT->str($param), $values)) {
@@ -776,7 +798,6 @@ function media_tab_upload($ns,$auth=null,$jump='') {
* @author Kate Arzamastseva <pshns@ukr.net>
*/
function media_tab_search($ns,$auth=null) {
- global $lang;
global $INPUT;
$do = $INPUT->str('mediado');
@@ -796,7 +817,7 @@ function media_tab_search($ns,$auth=null) {
* @author Kate Arzamastseva <pshns@ukr.net>
*/
function media_tab_view($image, $ns, $auth=null, $rev=false) {
- global $lang, $conf;
+ global $lang;
if(is_null($auth)) $auth = auth_quickaclcheck("$ns:*");
if ($image && $auth >= AUTH_READ) {
@@ -816,11 +837,10 @@ function media_tab_view($image, $ns, $auth=null, $rev=false) {
* @author Kate Arzamastseva <pshns@ukr.net>
*/
function media_tab_edit($image, $ns, $auth=null) {
- global $lang;
if(is_null($auth)) $auth = auth_quickaclcheck("$ns:*");
if ($image) {
- list($ext, $mime) = mimetype($image);
+ list(, $mime) = mimetype($image);
if ($mime == 'image/jpeg') media_metaform($image,$auth);
}
}
@@ -852,6 +872,10 @@ function media_tab_history($image, $ns, $auth=null) {
/**
* Prints mediafile details
*
+ * @param string $image media id
+ * @param $auth
+ * @param int|bool $rev
+ * @param JpegMeta|bool $meta
* @author Kate Arzamastseva <pshns@ukr.net>
*/
function media_preview($image, $auth, $rev=false, $meta=false) {
@@ -935,9 +959,10 @@ function media_preview_buttons($image, $auth, $rev=false) {
* Returns image width and height for mediamanager preview panel
*
* @author Kate Arzamastseva <pshns@ukr.net>
- * @param string $image
- * @param int $rev
+ * @param string $image
+ * @param int $rev
* @param JpegMeta $meta
+ * @param int $size
* @return array
*/
function media_image_preview_size($image, $rev, $meta, $size = 500) {
@@ -979,8 +1004,6 @@ function media_getTag($tags,$meta,$alt=''){
* @return array
*/
function media_file_tags($meta) {
- global $config_cascade;
-
// load the field descriptions
static $fields = null;
if(is_null($fields)){
@@ -995,7 +1018,7 @@ function media_file_tags($meta) {
foreach($fields as $key => $tag){
$t = array();
if (!empty($tag[0])) $t = array($tag[0]);
- if(is_array($tag[3])) $t = array_merge($t,$tag[3]);
+ if(isset($tag[3]) && is_array($tag[3])) $t = array_merge($t,$tag[3]);
$value = media_getTag($t, $meta);
$tags[] = array('tag' => $tag, 'value' => $value);
}
@@ -1033,7 +1056,6 @@ function media_details($image, $auth, $rev=false, $meta=false) {
* @author Kate Arzamastseva <pshns@ukr.net>
*/
function media_diff($image, $ns, $auth, $fromajax = false) {
- global $lang;
global $conf;
global $INPUT;
@@ -1092,9 +1114,15 @@ function media_diff($image, $ns, $auth, $fromajax = false) {
}
+/**
+ * Callback for media file diff
+ *
+ * @param $data
+ * @return bool|void
+ */
function _media_file_diff($data) {
if(is_array($data) && count($data)===6) {
- return media_file_diff($data[0], $data[1], $data[2], $data[3], $data[4], $data[5]);
+ media_file_diff($data[0], $data[1], $data[2], $data[3], $data[4], $data[5]);
} else {
return false;
}
@@ -1107,13 +1135,12 @@ function _media_file_diff($data) {
*/
function media_file_diff($image, $l_rev, $r_rev, $ns, $auth, $fromajax){
global $lang;
- global $config_cascade;
global $INPUT;
$l_meta = new JpegMeta(mediaFN($image, $l_rev));
$r_meta = new JpegMeta(mediaFN($image, $r_rev));
- $is_img = preg_match("/\.(jpe?g|gif|png)$/", $image);
+ $is_img = preg_match('/\.(jpe?g|gif|png)$/', $image);
if ($is_img) {
$l_size = media_image_preview_size($image, $l_rev, $l_meta);
$r_size = media_image_preview_size($image, $r_rev, $r_meta);
@@ -1140,7 +1167,7 @@ function media_file_diff($image, $l_rev, $r_rev, $ns, $auth, $fromajax){
if ($difftype == 'opacity' || $difftype == 'portions') {
media_image_diff($image, $l_rev, $r_rev, $l_size, $r_size, $difftype);
if (!$fromajax) echo '</div>';
- return '';
+ return;
}
}
@@ -1274,7 +1301,7 @@ function media_restore($image, $rev, $auth){
$removed = (!file_exists(mediaFN($image)) && file_exists(mediaMetaFN($image, '.changes')));
if (!$image || (!file_exists(mediaFN($image)) && !$removed)) return false;
if (!$rev || !file_exists(mediaFN($image, $rev))) return false;
- list($iext,$imime,$dl) = mimetype($image);
+ list(,$imime,) = mimetype($image);
$res = media_upload_finish(mediaFN($image, $rev),
mediaFN($image),
$image,
@@ -1364,7 +1391,7 @@ function media_printfile($item,$auth,$jump,$display_namespace=false){
}
// Prepare fileicons
- list($ext,$mime,$dl) = mimetype($item['file'],false);
+ list($ext) = mimetype($item['file'],false);
$class = preg_replace('/[^_\-a-z0-9]+/i','_',$ext);
$class = 'select mediafile mf_'.$class;
@@ -1420,7 +1447,7 @@ function media_printfile($item,$auth,$jump,$display_namespace=false){
}
function media_printicon($filename){
- list($ext,$mime,$dl) = mimetype(mediaFN($filename),false);
+ list($ext) = mimetype(mediaFN($filename),false);
if (@file_exists(DOKU_INC.'lib/images/fileicons/'.$ext.'.png')) {
$icon = DOKU_BASE.'lib/images/fileicons/'.$ext.'.png';
@@ -1438,8 +1465,6 @@ function media_printicon($filename){
* @author Kate Arzamastseva <pshns@ukr.net>
*/
function media_printfile_thumbs($item,$auth,$jump=false,$display_namespace=false){
- global $lang;
- global $conf;
// Prepare filename
$file = utf8_decodeFN($item['file']);
@@ -1484,7 +1509,7 @@ function media_printfile_thumbs($item,$auth,$jump=false,$display_namespace=false
}
/**
- * Prints a thumbnail and metainfos
+ * Prints a thumbnail and metainfo
*/
function media_printimgdetail($item, $fullscreen=false){
// prepare thumbnail
@@ -1552,12 +1577,13 @@ function media_printimgdetail($item, $fullscreen=false){
* parameters
*
* @author Kate Arzamastseva <pshns@ukr.net>
- * @param array $params
- * @param string $amp - separator
- * @return string - link
+ * @param array|bool $params
+ * @param string $amp - separator
+ * @param bool $abs
+ * @param bool $params_array
+ * @return string|array - link
*/
function media_managerURL($params=false, $amp='&amp;', $abs=false, $params_array=false) {
- global $conf;
global $ID;
global $INPUT;
@@ -1753,7 +1779,7 @@ function media_nstree_item($item){
global $INPUT;
$pos = strrpos($item['id'], ':');
$label = substr($item['id'], $pos > 0 ? $pos + 1 : 0);
- if(!$item['label']) $item['label'] = $label;
+ if(empty($item['label'])) $item['label'] = $label;
$ret = '';
if (!($INPUT->str('do') == 'media'))
@@ -1800,6 +1826,7 @@ function media_resize_image($file, $ext, $w, $h=0){
if($info == false) return $file; // that's no image - it's a spaceship!
if(!$h) $h = round(($w * $info[1]) / $info[0]);
+ if(!$w) $w = round(($h * $info[0]) / $info[1]);
// we wont scale up to infinity
if($w > 2000 || $h > 2000) return $file;
@@ -1814,7 +1841,7 @@ function media_resize_image($file, $ext, $w, $h=0){
if( $mtime > filemtime($file) ||
media_resize_imageIM($ext,$file,$info[0],$info[1],$local,$w,$h) ||
media_resize_imageGD($ext,$file,$info[0],$info[1],$local,$w,$h) ){
- if($conf['fperm']) chmod($local, $conf['fperm']);
+ if(!empty($conf['fperm'])) @chmod($local, $conf['fperm']);
return $local;
}
//still here? resizing failed
@@ -1875,7 +1902,7 @@ function media_crop_image($file, $ext, $w, $h=0){
if( $mtime > @filemtime($file) ||
media_crop_imageIM($ext,$file,$info[0],$info[1],$local,$cw,$ch,$cx,$cy) ||
media_resize_imageGD($ext,$file,$cw,$ch,$local,$cw,$ch,$cx,$cy) ){
- if($conf['fperm']) chmod($local, $conf['fperm']);
+ if(!empty($conf['fperm'])) @chmod($local, $conf['fperm']);
return media_resize_image($local,$ext, $w, $h);
}
@@ -2129,4 +2156,61 @@ function media_resize_imageGD($ext,$from,$from_w,$from_h,$to,$to_w,$to_h,$ofs_x=
return $okay;
}
+/**
+ * Return other media files with the same base name
+ * but different extensions.
+ *
+ * @param string $src - ID of media file
+ * @param array $exts - alternative extensions to find other files for
+ * @return array - mime type => file ID
+ *
+ * @author Anika Henke <anika@selfthinker.org>
+ */
+function media_alternativefiles($src, $exts){
+
+ $files = array();
+ list($srcExt, $srcMime) = mimetype($src);
+ $filebase = substr($src, 0, -1 * (strlen($srcExt)+1));
+
+ foreach($exts as $ext) {
+ $fileid = $filebase.'.'.$ext;
+ $file = mediaFN($fileid);
+ if(file_exists($file)) {
+ list($fileExt, $fileMime) = mimetype($file);
+ $files[$fileMime] = $fileid;
+ }
+ }
+ return $files;
+}
+
+/**
+ * Check if video/audio is supported to be embedded.
+ *
+ * @param string $mime - mimetype of media file
+ * @param string $type - type of media files to check ('video', 'audio', or none)
+ * @return boolean
+ *
+ * @author Anika Henke <anika@selfthinker.org>
+ */
+function media_supportedav($mime, $type=NULL){
+ $supportedAudio = array(
+ 'ogg' => 'audio/ogg',
+ 'mp3' => 'audio/mpeg',
+ 'wav' => 'audio/wav',
+ );
+ $supportedVideo = array(
+ 'webm' => 'video/webm',
+ 'ogv' => 'video/ogg',
+ 'mp4' => 'video/mp4',
+ );
+ if ($type == 'audio') {
+ $supportedAv = $supportedAudio;
+ } elseif ($type == 'video') {
+ $supportedAv = $supportedVideo;
+ } else {
+ $supportedAv = array_merge($supportedAudio, $supportedVideo);
+ }
+ return in_array($mime, $supportedAv);
+}
+
/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
diff --git a/inc/pageutils.php b/inc/pageutils.php
index bf79daa7d..8474c5697 100644
--- a/inc/pageutils.php
+++ b/inc/pageutils.php
@@ -19,6 +19,7 @@
* @author Andreas Gohr <andi@splitbrain.org>
*/
function getID($param='id',$clean=true){
+ /** @var Input $INPUT */
global $INPUT;
global $conf;
global $ACT;
@@ -27,7 +28,7 @@ function getID($param='id',$clean=true){
//construct page id from request URI
if(empty($id) && $conf['userewrite'] == 2){
- $request = $_SERVER['REQUEST_URI'];
+ $request = $INPUT->server->str('REQUEST_URI');
$script = '';
//get the script URL
@@ -36,15 +37,15 @@ function getID($param='id',$clean=true){
if($param != 'id') {
$relpath = 'lib/exe/';
}
- $script = $conf['basedir'].$relpath.utf8_basename($_SERVER['SCRIPT_FILENAME']);
-
- }elseif($_SERVER['PATH_INFO']){
- $request = $_SERVER['PATH_INFO'];
- }elseif($_SERVER['SCRIPT_NAME']){
- $script = $_SERVER['SCRIPT_NAME'];
- }elseif($_SERVER['DOCUMENT_ROOT'] && $_SERVER['SCRIPT_FILENAME']){
- $script = preg_replace ('/^'.preg_quote($_SERVER['DOCUMENT_ROOT'],'/').'/','',
- $_SERVER['SCRIPT_FILENAME']);
+ $script = $conf['basedir'].$relpath.utf8_basename($INPUT->server->str('SCRIPT_FILENAME'));
+
+ }elseif($INPUT->server->str('PATH_INFO')){
+ $request = $INPUT->server->str('PATH_INFO');
+ }elseif($INPUT->server->str('SCRIPT_NAME')){
+ $script = $INPUT->server->str('SCRIPT_NAME');
+ }elseif($INPUT->server->str('DOCUMENT_ROOT') && $INPUT->server->str('SCRIPT_FILENAME')){
+ $script = preg_replace ('/^'.preg_quote($INPUT->server->str('DOCUMENT_ROOT'),'/').'/','',
+ $INPUT->server->str('SCRIPT_FILENAME'));
$script = '/'.$script;
}
@@ -94,9 +95,9 @@ function getID($param='id',$clean=true){
* @author Andreas Gohr <andi@splitbrain.org>
* @param string $raw_id The pageid to clean
* @param boolean $ascii Force ASCII
- * @param boolean $media DEPRECATED
+ * @return string cleaned id
*/
-function cleanID($raw_id,$ascii=false,$media=false){
+function cleanID($raw_id,$ascii=false){
global $conf;
static $sepcharpat = null;
@@ -245,6 +246,7 @@ function page_exists($id,$rev='',$clean=true) {
* @param $rev string page revision, empty string for current
* @param $clean bool flag indicating that $raw_id should be cleaned. Only set to false
* when $id is guaranteed to have been cleaned already.
+ * @return string full path
*
* @author Andreas Gohr <andi@splitbrain.org>
*/
@@ -362,6 +364,7 @@ function mediaFN($id, $rev=''){
*
* @param string $id The id of the local file
* @param string $ext The file extension (usually txt)
+ * @return string full filepath to localized file
* @author Andreas Gohr <andi@splitbrain.org>
*/
function localeFN($id,$ext='txt'){
@@ -396,7 +399,7 @@ function resolve_id($ns,$id,$clean=true){
// if the id starts with a dot we need to handle the
// relative stuff
- if($id{0} == '.'){
+ if($id && $id{0} == '.'){
// normalize initial dots without a colon
$id = preg_replace('/^(\.+)(?=[^:\.])/','\1:',$id);
// prepend the current namespace
@@ -544,6 +547,11 @@ function isHiddenPage($id){
return $data['hidden'];
}
+/**
+ * callback checks if page is hidden
+ *
+ * @param array $data event data see isHiddenPage()
+ */
function _isHiddenPage(&$data) {
global $conf;
global $ACT;
diff --git a/inc/parser/code.php b/inc/parser/code.php
index 0b8e3ee02..d77ffd1aa 100644
--- a/inc/parser/code.php
+++ b/inc/parser/code.php
@@ -5,7 +5,6 @@
* @author Andreas Gohr <andi@splitbrain.org>
*/
if(!defined('DOKU_INC')) die('meh.');
-require_once DOKU_INC . 'inc/parser/renderer.php';
class Doku_Renderer_code extends Doku_Renderer {
var $_codeblock=0;
diff --git a/inc/parser/handler.php b/inc/parser/handler.php
index 196cafc57..c4104dac9 100644
--- a/inc/parser/handler.php
+++ b/inc/parser/handler.php
@@ -70,7 +70,7 @@ class Doku_Handler {
*/
function plugin($match, $state, $pos, $pluginname){
$data = array($match);
- $plugin =& plugin_load('syntax',$pluginname);
+ $plugin = plugin_load('syntax',$pluginname);
if($plugin != null){
$data = $plugin->handle($match, $state, $pos, $this);
}
@@ -653,8 +653,8 @@ function Doku_Handler_Parse_Media($match) {
//parse width and height
if(preg_match('#(\d+)(x(\d+))?#i',$param,$size)){
- ($size[1]) ? $w = $size[1] : $w = null;
- ($size[3]) ? $h = $size[3] : $h = null;
+ !empty($size[1]) ? $w = $size[1] : $w = null;
+ !empty($size[3]) ? $h = $size[3] : $h = null;
} else {
$w = null;
$h = null;
@@ -1456,6 +1456,7 @@ class Doku_Handler_Table {
class Doku_Handler_Block {
var $calls = array();
var $skipEol = false;
+ var $inParagraph = false;
// Blocks these should not be inside paragraphs
var $blockOpen = array(
diff --git a/inc/parser/metadata.php b/inc/parser/metadata.php
index 437559370..82a268fd6 100644
--- a/inc/parser/metadata.php
+++ b/inc/parser/metadata.php
@@ -16,8 +16,6 @@ if ( !defined('DOKU_TAB') ) {
define ('DOKU_TAB',"\t");
}
-require_once DOKU_INC . 'inc/parser/renderer.php';
-
/**
* The Renderer
*/
@@ -274,7 +272,12 @@ class Doku_Renderer_metadata extends Doku_Renderer {
$this->internallink($link, $link);
}
- function locallink($hash, $name = null){}
+ function locallink($hash, $name = null){
+ if(is_array($name)) {
+ $this->_firstimage($name['src']);
+ if ($name['type'] == 'internalmedia') $this->_recordMediaUsage($name['src']);
+ }
+ }
/**
* keep track of internal links in $this->meta['relation']['references']
@@ -296,7 +299,7 @@ class Doku_Renderer_metadata extends Doku_Renderer {
// first resolve and clean up the $id
resolve_pageid(getNS($ID), $id, $exists);
- list($page, $hash) = explode('#', $id, 2);
+ @list($page, $hash) = explode('#', $id, 2);
// set metadata
$this->meta['relation']['references'][$page] = $exists;
diff --git a/inc/parser/parser.php b/inc/parser/parser.php
index e39a4daf5..252bd9170 100644
--- a/inc/parser/parser.php
+++ b/inc/parser/parser.php
@@ -125,43 +125,91 @@ class Doku_Parser {
}
//-------------------------------------------------------------------
+
/**
- * This class and all the subclasses below are
- * used to reduce the effort required to register
- * modes with the Lexer. For performance these
- * could all be eliminated later perhaps, or
- * the Parser could be serialized to a file once
- * all modes are registered
+ * Class Doku_Parser_Mode_Interface
*
- * @author Harry Fuecks <hfuecks@gmail.com>
+ * Defines a mode (syntax component) in the Parser
*/
-class Doku_Parser_Mode {
+interface Doku_Parser_Mode_Interface {
+ /**
+ * returns a number used to determine in which order modes are added
+ */
+ public function getSort();
+
+ /**
+ * Called before any calls to connectTo
+ */
+ function preConnect();
+
+ /**
+ * Connects the mode
+ *
+ * @param string $mode
+ */
+ function connectTo($mode);
/**
+ * Called after all calls to connectTo
+ */
+ function postConnect();
+
+ /**
+ * Check if given mode is accepted inside this mode
+ *
+ * @param string $mode
+ * @return bool
+ */
+ function accepts($mode);
+}
+
+/**
+ * This class and all the subclasses below are used to reduce the effort required to register
+ * modes with the Lexer.
+ *
+ * @author Harry Fuecks <hfuecks@gmail.com>
+ */
+class Doku_Parser_Mode implements Doku_Parser_Mode_Interface {
+ /**
* @var Doku_Lexer $Lexer
*/
var $Lexer;
-
var $allowedModes = array();
- // returns a number used to determine in which order modes are added
function getSort() {
trigger_error('getSort() not implemented in '.get_class($this), E_USER_WARNING);
}
- // Called before any calls to connectTo
function preConnect() {}
-
- // Connects the mode
function connectTo($mode) {}
-
- // Called after all calls to connectTo
function postConnect() {}
-
function accepts($mode) {
return in_array($mode, (array) $this->allowedModes );
}
+}
+
+/**
+ * Basically the same as Doku_Parser_Mode but extends from DokuWiki_Plugin
+ *
+ * Adds additional functions to syntax plugins
+ */
+class Doku_Parser_Mode_Plugin extends DokuWiki_Plugin implements Doku_Parser_Mode_Interface {
+ /**
+ * @var Doku_Lexer $Lexer
+ */
+ var $Lexer;
+ var $allowedModes = array();
+
+ function getSort() {
+ trigger_error('getSort() not implemented in '.get_class($this), E_USER_WARNING);
+ }
+ function preConnect() {}
+ function connectTo($mode) {}
+ function postConnect() {}
+ function accepts($mode) {
+ return in_array($mode, (array) $this->allowedModes );
+ }
}
//-------------------------------------------------------------------
@@ -454,8 +502,8 @@ class Doku_Parser_Mode_table extends Doku_Parser_Mode {
}
function connectTo($mode) {
- $this->Lexer->addEntryPattern('\s*\n\^',$mode,'table');
- $this->Lexer->addEntryPattern('\s*\n\|',$mode,'table');
+ $this->Lexer->addEntryPattern('[\t ]*\n\^',$mode,'table');
+ $this->Lexer->addEntryPattern('[\t ]*\n\|',$mode,'table');
}
function postConnect() {
diff --git a/inc/parser/renderer.php b/inc/parser/renderer.php
index ee0b2344d..800fa3a95 100644
--- a/inc/parser/renderer.php
+++ b/inc/parser/renderer.php
@@ -6,8 +6,6 @@
* @author Andreas Gohr <andi@splitbrain.org>
*/
if(!defined('DOKU_INC')) die('meh.');
-require_once DOKU_INC . 'inc/plugin.php';
-require_once DOKU_INC . 'inc/pluginutils.php';
/**
* An empty renderer, produces no output
@@ -59,9 +57,15 @@ class Doku_Renderer extends DokuWiki_Plugin {
return false;
}
-
- //handle plugin rendering
- function plugin($name,$data){
+ /**
+ * handle plugin rendering
+ *
+ * @param string $name Plugin name
+ * @param mixed $data custom data set by handler
+ * @param string $state matched state if any
+ * @param string $match raw matched syntax
+ */
+ function plugin($name,$data,$state='',$match=''){
$plugin = plugin_load('syntax',$name);
if($plugin != null){
$plugin->render($this->getFormat(),$this,$data);
@@ -274,8 +278,8 @@ class Doku_Renderer extends DokuWiki_Plugin {
function _simpleTitle($name){
global $conf;
- //if there is a hash we use the ancor name only
- list($name,$hash) = explode('#',$name,2);
+ //if there is a hash we use the anchor name only
+ @list($name,$hash) = explode('#',$name,2);
if($hash) return $hash;
if($conf['useslash']){
@@ -301,7 +305,7 @@ class Doku_Renderer extends DokuWiki_Plugin {
}
//split into hash and url part
- list($reference,$hash) = explode('#',$reference,2);
+ @list($reference,$hash) = explode('#',$reference,2);
//replace placeholder
if(preg_match('#\{(URL|NAME|SCHEME|HOST|PORT|PATH|QUERY)\}#',$url)){
diff --git a/inc/parser/xhtml.php b/inc/parser/xhtml.php
index e9f2cc037..a1059cd42 100644
--- a/inc/parser/xhtml.php
+++ b/inc/parser/xhtml.php
@@ -17,9 +17,6 @@ if ( !defined('DOKU_TAB') ) {
define ('DOKU_TAB',"\t");
}
-require_once DOKU_INC . 'inc/parser/renderer.php';
-require_once DOKU_INC . 'inc/html.php';
-
/**
* The Renderer
*/
@@ -562,6 +559,12 @@ class Doku_Renderer_xhtml extends Doku_Renderer {
* $search,$returnonly & $linktype are not for the renderer but are used
* elsewhere - no need to implement them in other renderers
*
+ * @param string $id pageid
+ * @param string|null $name link name
+ * @param string|null $search adds search url param
+ * @param bool $returnonly whether to return html or write to doc attribute
+ * @param string $linktype type to set use of headings
+ * @return void|string writes to doc attribute or returns html depends on $returnonly
* @author Andreas Gohr <andi@splitbrain.org>
*/
function internallink($id, $name = null, $search=null,$returnonly=false,$linktype='content') {
@@ -603,7 +606,7 @@ class Doku_Renderer_xhtml extends Doku_Renderer {
}
//keep hash anchor
- list($id,$hash) = explode('#',$id,2);
+ @list($id,$hash) = explode('#',$id,2);
if(!empty($hash)) $hash = $this->_headerToLink($hash);
//prepare for formating
@@ -781,7 +784,7 @@ class Doku_Renderer_xhtml extends Doku_Renderer {
}
function internalmedia ($src, $title=null, $align=null, $width=null,
- $height=null, $cache=null, $linking=null) {
+ $height=null, $cache=null, $linking=null, $return=NULL) {
global $ID;
list($src,$hash) = explode('#',$src,2);
resolve_mediaid(getNS($ID),$src, $exists);
@@ -793,8 +796,8 @@ class Doku_Renderer_xhtml extends Doku_Renderer {
list($ext,$mime,$dl) = mimetype($src,false);
if(substr($mime,0,5) == 'image' && $render){
$link['url'] = ml($src,array('id'=>$ID,'cache'=>$cache),($linking=='direct'));
- }elseif($mime == 'application/x-shockwave-flash' && $render){
- // don't link flash movies
+ }elseif(($mime == 'application/x-shockwave-flash' || media_supportedav($mime)) && $render){
+ // don't link movies
$noLink = true;
}else{
// add file icons
@@ -812,8 +815,13 @@ class Doku_Renderer_xhtml extends Doku_Renderer {
}
//output formatted
- if ($linking == 'nolink' || $noLink) $this->doc .= $link['name'];
- else $this->doc .= $this->_formatLink($link);
+ if ($return) {
+ if ($linking == 'nolink' || $noLink) return $link['name'];
+ else return $this->_formatLink($link);
+ } else {
+ if ($linking == 'nolink' || $noLink) $this->doc .= $link['name'];
+ else $this->doc .= $this->_formatLink($link);
+ }
}
function externalmedia ($src, $title=null, $align=null, $width=null,
@@ -829,8 +837,8 @@ class Doku_Renderer_xhtml extends Doku_Renderer {
if(substr($mime,0,5) == 'image' && $render){
// link only jpeg images
// if ($ext != 'jpg' && $ext != 'jpeg') $noLink = true;
- }elseif($mime == 'application/x-shockwave-flash' && $render){
- // don't link flash movies
+ }elseif(($mime == 'application/x-shockwave-flash' || media_supportedav($mime)) && $render){
+ // don't link movies
$noLink = true;
}else{
// add file icons
@@ -1099,6 +1107,30 @@ class Doku_Renderer_xhtml extends Doku_Renderer {
$ret .= ' />';
+ }elseif(media_supportedav($mime, 'video') || media_supportedav($mime, 'audio')){
+ // first get the $title
+ $title = !is_null($title) ? $this->_xmlEntities($title) : false;
+ if (!$render) {
+ // if the file is not supposed to be rendered
+ // return the title of the file (just the sourcename if there is no title)
+ return $title ? $title : $this->_xmlEntities(utf8_basename(noNS($src)));
+ }
+
+ $att = array();
+ $att['class'] = "media$align";
+ if ($title) {
+ $att['title'] = $title;
+ }
+
+ if (media_supportedav($mime, 'video')) {
+ //add video
+ $ret .= $this->_video($src, $width, $height, $att);
+ }
+ if (media_supportedav($mime, 'audio')) {
+ //add audio
+ $ret .= $this->_audio($src, $att);
+ }
+
}elseif($mime == 'application/x-shockwave-flash'){
if (!$render) {
// if the flash is not supposed to be rendered
@@ -1231,6 +1263,93 @@ class Doku_Renderer_xhtml extends Doku_Renderer {
}
+ /**
+ * Embed video(s) in HTML
+ *
+ * @author Anika Henke <anika@selfthinker.org>
+ *
+ * @param string $src - ID of video to embed
+ * @param int $width - width of the video in pixels
+ * @param int $height - height of the video in pixels
+ * @param array $atts - additional attributes for the <video> tag
+ * @return string
+ */
+ function _video($src,$width,$height,$atts=null){
+ // prepare width and height
+ if(is_null($atts)) $atts = array();
+ $atts['width'] = (int) $width;
+ $atts['height'] = (int) $height;
+ if(!$atts['width']) $atts['width'] = 320;
+ if(!$atts['height']) $atts['height'] = 240;
+
+ // prepare alternative formats
+ $extensions = array('webm', 'ogv', 'mp4');
+ $alternatives = media_alternativefiles($src, $extensions);
+ $poster = media_alternativefiles($src, array('jpg', 'png'), true);
+ $posterUrl = '';
+ if (!empty($poster)) {
+ $posterUrl = ml(reset($poster),array('cache'=>$cache),true,'&');
+ }
+
+ $out = '';
+ // open video tag
+ $out .= '<video '.buildAttributes($atts).' controls="controls"';
+ if ($posterUrl) $out .= ' poster="'.hsc($posterUrl).'"';
+ $out .= '>'.NL;
+ $fallback = '';
+
+ // output source for each alternative video format
+ foreach($alternatives as $mime => $file) {
+ $url = ml($file,array('cache'=>$cache),true,'&');
+ $title = $atts['title'] ? $atts['title'] : $this->_xmlEntities(utf8_basename(noNS($file)));
+
+ $out .= '<source src="'.hsc($url).'" type="'.$mime.'" />'.NL;
+ // alternative content (just a link to the file)
+ $fallback .= $this->internalmedia($file, $title, NULL, NULL, NULL, $cache=NULL, $linking='linkonly', $return=true);
+ }
+
+ // finish
+ $out .= $fallback;
+ $out .= '</video>'.NL;
+ return $out;
+ }
+
+ /**
+ * Embed audio in HTML
+ *
+ * @author Anika Henke <anika@selfthinker.org>
+ *
+ * @param string $src - ID of audio to embed
+ * @param array $atts - additional attributes for the <audio> tag
+ * @return string
+ */
+ function _audio($src,$atts=null){
+
+ // prepare alternative formats
+ $extensions = array('ogg', 'mp3', 'wav');
+ $alternatives = media_alternativefiles($src, $extensions);
+
+ $out = '';
+ // open audio tag
+ $out .= '<audio '.buildAttributes($atts).' controls="controls">'.NL;
+ $fallback = '';
+
+ // output source for each alternative audio format
+ foreach($alternatives as $mime => $file) {
+ $url = ml($file,array('cache'=>$cache),true,'&');
+ $title = $atts['title'] ? $atts['title'] : $this->_xmlEntities(utf8_basename(noNS($file)));
+
+ $out .= '<source src="'.hsc($url).'" type="'.$mime.'" />'.NL;
+ // alternative content (just a link to the file)
+ $fallback .= $this->internalmedia($file, $title, NULL, NULL, NULL, $cache=NULL, $linking='linkonly', $return=true);
+ }
+
+ // finish
+ $out .= $fallback;
+ $out .= '</audio>'.NL;
+ return $out;
+ }
+
}
//Setup VIM: ex: et ts=4 :
diff --git a/inc/parser/xhtmlsummary.php b/inc/parser/xhtmlsummary.php
index 95f86cbef..867b71f6a 100644
--- a/inc/parser/xhtmlsummary.php
+++ b/inc/parser/xhtmlsummary.php
@@ -1,6 +1,5 @@
<?php
if(!defined('DOKU_INC')) die('meh.');
-require_once DOKU_INC . 'inc/parser/xhtml.php';
/**
* The summary XHTML form selects either up to the first two paragraphs
diff --git a/inc/parserutils.php b/inc/parserutils.php
index 56161af44..06bd6dbb8 100644
--- a/inc/parserutils.php
+++ b/inc/parserutils.php
@@ -158,6 +158,8 @@ function p_cached_instructions($file,$cacheonly=false,$id='') {
*
* @author Harry Fuecks <hfuecks@gmail.com>
* @author Andreas Gohr <andi@splitbrain.org>
+ * @param string $text raw wiki syntax text
+ * @return array a list of instruction arrays
*/
function p_get_instructions($text){
@@ -428,8 +430,9 @@ function p_render_metadata($id, $orig){
global $ID, $METADATA_RENDERERS;
// avoid recursive rendering processes for the same id
- if (isset($METADATA_RENDERERS[$id]))
+ if (isset($METADATA_RENDERERS[$id])) {
return $orig;
+ }
// store the original metadata in the global $METADATA_RENDERERS so p_set_metadata can use it
$METADATA_RENDERERS[$id] =& $orig;
@@ -442,8 +445,6 @@ function p_render_metadata($id, $orig){
$evt = new Doku_Event('PARSER_METADATA_RENDER', $orig);
if ($evt->advise_before()) {
- require_once DOKU_INC."inc/parser/metadata.php";
-
// get instructions
$instructions = p_cached_instructions(wikiFN($id),false,$id);
if(is_null($instructions)){
@@ -586,7 +587,7 @@ function p_sort_modes($a, $b){
function p_render($mode,$instructions,&$info){
if(is_null($instructions)) return '';
- $Renderer =& p_get_renderer($mode);
+ $Renderer = p_get_renderer($mode);
if (is_null($Renderer)) return null;
$Renderer->reset();
@@ -614,45 +615,54 @@ function p_render($mode,$instructions,&$info){
}
/**
+ * Figure out the correct renderer class to use for $mode,
+ * instantiate and return it
+ *
* @param $mode string Mode of the renderer to get
* @return null|Doku_Renderer The renderer
+ *
+ * @author Christopher Smith <chris@jalakai.co.uk>
*/
-function & p_get_renderer($mode) {
+function p_get_renderer($mode) {
/** @var Doku_Plugin_Controller $plugin_controller */
global $conf, $plugin_controller;
$rname = !empty($conf['renderer_'.$mode]) ? $conf['renderer_'.$mode] : $mode;
$rclass = "Doku_Renderer_$rname";
+ // if requested earlier or a bundled renderer
if( class_exists($rclass) ) {
- return new $rclass();
+ $Renderer = new $rclass();
+ return $Renderer;
}
- // try default renderer first:
- $file = DOKU_INC."inc/parser/$rname.php";
- if(@file_exists($file)){
- require_once $file;
+ // not bundled, see if its an enabled plugin for rendering $mode
+ $Renderer = $plugin_controller->load('renderer',$rname);
+ if ($Renderer && is_a($Renderer, 'Doku_Renderer') && ($mode == $Renderer->getFormat())) {
+ return $Renderer;
+ }
- if ( !class_exists($rclass) ) {
- trigger_error("Unable to resolve render class $rclass",E_USER_WARNING);
- msg("Renderer '$rname' for $mode not valid",-1);
- return null;
- }
- $Renderer = new $rclass();
- }else{
- // Maybe a plugin/component is available?
- list($plugin, $component) = $plugin_controller->_splitName($rname);
- if (!$plugin_controller->isdisabled($plugin)){
- $Renderer =& $plugin_controller->load('renderer',$rname);
+ // there is a configuration error!
+ // not bundled, not a valid enabled plugin, use $mode to try to fallback to a bundled renderer
+ $rclass = "Doku_Renderer_$mode";
+ if ( class_exists($rclass) ) {
+ // viewers should see renderered output, so restrict the warning to admins only
+ $msg = "No renderer '$rname' found for mode '$mode', check your plugins";
+ if ($mode == 'xhtml') {
+ $msg .= " and the 'renderer_xhtml' config setting";
}
+ $msg .= ".<br/>Attempting to fallback to the bundled renderer.";
+ msg($msg,-1,'','',MSG_ADMINS_ONLY);
- if(!isset($Renderer) || is_null($Renderer)){
- msg("No renderer '$rname' found for mode '$mode'",-1);
- return null;
- }
+ $Renderer = new $rclass;
+ $Renderer->nocache(); // fallback only (and may include admin alerts), don't cache
+ return $Renderer;
}
- return $Renderer;
+ // fallback failed, alert the world
+ trigger_error("Unable to resolve render class $rclass",E_USER_WARNING);
+ msg("No renderer '$rname' found for mode '$mode'",-1);
+ return null;
}
/**
diff --git a/inc/plugin.php b/inc/plugin.php
index dccd37bd9..95bdaee2b 100644
--- a/inc/plugin.php
+++ b/inc/plugin.php
@@ -239,10 +239,35 @@ class DokuWiki_Plugin {
}
/**
+ * A fallback to provide access to the old render() method
+ *
+ * Since syntax plugins provide their own render method with a different signature and they now
+ * inherit from Doku_Plugin we can no longer have a render() method here (Strict Standards Violation).
+ * Instead use render_text()
+ *
+ * @deprecated 2014-01-22
+ * @param $name
+ * @param $arguments
+ * @return null|string
+ */
+ function __call($name, $arguments) {
+ if($name == 'render'){
+ if(!isset($arguments[1])) $arguments[1] = 'xhtml';
+ return $this->render_text($arguments[0], $arguments[1]);
+ }
+ trigger_error("no such method $name", E_ERROR);
+ return null;
+ }
+
+ /**
* output text string through the parser, allows dokuwiki markup to be used
* very ineffecient for small pieces of data - try not to use
+ *
+ * @param string $text wiki markup to parse
+ * @param string $format output format
+ * @return null|string
*/
- function render($text, $format='xhtml') {
+ function render_text($text, $format='xhtml') {
return p_render($format, p_get_instructions($text),$info);
}
diff --git a/inc/plugincontroller.class.php b/inc/plugincontroller.class.php
index c825870cd..d80cd4c9e 100644
--- a/inc/plugincontroller.class.php
+++ b/inc/plugincontroller.class.php
@@ -11,15 +11,15 @@ if(!defined('DOKU_PLUGIN')) define('DOKU_PLUGIN',DOKU_INC.'lib/plugins/');
class Doku_Plugin_Controller {
- var $list_bytype = array();
- var $tmp_plugins = array();
- var $plugin_cascade = array('default'=>array(),'local'=>array(),'protected'=>array());
- var $last_local_config_file = '';
+ protected $list_bytype = array();
+ protected $tmp_plugins = array();
+ protected $plugin_cascade = array('default'=>array(),'local'=>array(),'protected'=>array());
+ protected $last_local_config_file = '';
/**
* Populates the master list of plugins
*/
- function __construct() {
+ public function __construct() {
$this->loadConfig();
$this->_populateMasterList();
}
@@ -34,11 +34,13 @@ class Doku_Plugin_Controller {
* false to only return enabled plugins,
* true to return both enabled and disabled plugins
*
- * @return array of plugin names
+ * @return array of
+ * - plugin names when $type = ''
+ * - or plugin component names when a $type is given
*
* @author Andreas Gohr <andi@splitbrain.org>
*/
- function getList($type='',$all=false){
+ public function getList($type='',$all=false){
// request the complete list
if (!$type) {
@@ -64,9 +66,9 @@ class Doku_Plugin_Controller {
* @param $name string name of the plugin to load
* @param $new bool true to return a new instance of the plugin, false to use an already loaded instance
* @param $disabled bool true to load even disabled plugins
- * @return objectreference the plugin object or null on failure
+ * @return DokuWiki_Plugin|DokuWiki_Syntax_Plugin|null the plugin object or null on failure
*/
- function load($type,$name,$new=false,$disabled=false){
+ public function load($type,$name,$new=false,$disabled=false){
//we keep all loaded plugins available in global scope for reuse
global $DOKU_PLUGINS;
@@ -108,26 +110,59 @@ class Doku_Plugin_Controller {
return $DOKU_PLUGINS[$type][$name];
}
- function isdisabled($plugin) {
+ /**
+ * Whether plugin is disabled
+ *
+ * @param string $plugin name of plugin
+ * @return bool; true disabled, false enabled
+ */
+ public function isdisabled($plugin) {
return empty($this->tmp_plugins[$plugin]);
}
- function disable($plugin) {
+ /**
+ * Disable the plugin
+ *
+ * @param string $plugin name of plugin
+ * @return bool; true saving succeed, false saving failed
+ */
+ public function disable($plugin) {
if(array_key_exists($plugin,$this->plugin_cascade['protected'])) return false;
$this->tmp_plugins[$plugin] = 0;
return $this->saveList();
}
- function enable($plugin) {
+ /**
+ * Enable the plugin
+ *
+ * @param string $plugin name of plugin
+ * @return bool; true saving succeed, false saving failed
+ */
+ public function enable($plugin) {
if(array_key_exists($plugin,$this->plugin_cascade['protected'])) return false;
$this->tmp_plugins[$plugin] = 1;
return $this->saveList();
}
- function get_directory($plugin) {
+ /**
+ * Returns directory name of plugin
+ *
+ * @param string $plugin name of plugin
+ * @return string name of directory
+ */
+ public function get_directory($plugin) {
return $plugin;
}
+ /**
+ * Returns cascade of the config files
+ *
+ * @return array with arrays of plugin configs
+ */
+ public function getCascade() {
+ return $this->plugin_cascade;
+ }
+
protected function _populateMasterList() {
global $conf;
@@ -169,6 +204,13 @@ class Doku_Plugin_Controller {
}
}
+ /**
+ * Includes the plugin config $files
+ * and returns the entries of the $plugins array set in these files
+ *
+ * @param array $files list of files to include, latter overrides previous
+ * @return array with entries of the $plugins arrays of the included files
+ */
protected function checkRequire($files) {
$plugins = array();
foreach($files as $file) {
@@ -179,14 +221,15 @@ class Doku_Plugin_Controller {
return $plugins;
}
- function getCascade() {
- return $this->plugin_cascade;
- }
-
/**
* Save the current list of plugins
+ *
+ * @param bool $forceSave;
+ * false to save only when config changed
+ * true to always save
+ * @return bool; true saving succeed, false saving failed
*/
- function saveList($forceSave = false) {
+ protected function saveList($forceSave = false) {
global $conf;
if (empty($this->tmp_plugins)) return false;
@@ -206,7 +249,7 @@ class Doku_Plugin_Controller {
$backup = $file.'.bak';
if (@file_exists($backup)) @unlink($backup);
if (!@copy($file,$backup)) return false;
- if ($conf['fperm']) chmod($backup, $conf['fperm']);
+ if (!empty($conf['fperm'])) chmod($backup, $conf['fperm']);
}
//check if can open for writing, else restore
return io_saveFile($file,$out);
@@ -216,9 +259,10 @@ class Doku_Plugin_Controller {
/**
* Rebuild the set of local plugins
+ *
* @return array array of plugins to be saved in end($config_cascade['plugins']['local'])
*/
- function rebuildLocal() {
+ protected function rebuildLocal() {
//assign to local variable to avoid overwriting
$backup = $this->tmp_plugins;
//Can't do anything about protected one so rule them out completely
@@ -238,7 +282,7 @@ class Doku_Plugin_Controller {
* Build the list of plugins and cascade
*
*/
- function loadConfig() {
+ protected function loadConfig() {
global $config_cascade;
foreach(array('default','protected') as $type) {
if(array_key_exists($type,$config_cascade['plugins']))
@@ -253,7 +297,18 @@ class Doku_Plugin_Controller {
$this->tmp_plugins = array_merge($this->plugin_cascade['default'],$this->plugin_cascade['local'],$this->plugin_cascade['protected']);
}
- function _getListByType($type, $enabled) {
+ /**
+ * Returns a list of available plugin components of given type
+ *
+ * @param string $type, plugin_type name;
+ * the type of plugin to return,
+ * @param bool $enabled;
+ * true to return enabled plugins,
+ * false to return disabled plugins
+ *
+ * @return array of plugin components of requested type
+ */
+ protected function _getListByType($type, $enabled) {
$master_list = $enabled ? array_keys(array_filter($this->tmp_plugins)) : array_keys(array_filter($this->tmp_plugins,array($this,'negate')));
$plugins = array();
@@ -278,14 +333,29 @@ class Doku_Plugin_Controller {
return $plugins;
}
- function _splitName($name) {
+ /**
+ * Split name in a plugin name and a component name
+ *
+ * @param string $name
+ * @return array with
+ * - plugin name
+ * - and component name when available, otherwise empty string
+ */
+ protected function _splitName($name) {
if (array_search($name, array_keys($this->tmp_plugins)) === false) {
return explode('_',$name,2);
}
return array($name,'');
}
- function negate($input) {
+
+ /**
+ * Returns inverse boolean value of the input
+ *
+ * @param mixed $input
+ * @return bool inversed boolean value of input
+ */
+ protected function negate($input) {
return !(bool) $input;
}
}
diff --git a/inc/pluginutils.php b/inc/pluginutils.php
index 7c37d4f7f..911c4e5c0 100644
--- a/inc/pluginutils.php
+++ b/inc/pluginutils.php
@@ -14,31 +14,92 @@ if(!defined('DOKU_PLUGIN_NAME_REGEX')) define('DOKU_PLUGIN_NAME_REGEX', '[a-zA-Z
/**
* Original plugin functions, remain for backwards compatibility
*/
+
+/**
+ * Return list of available plugins
+ *
+ * @param string $type type of plugins; empty string for all
+ * @param bool $all; true to retrieve all, false to retrieve only enabled plugins
+ * @return array with plugin names or plugin component names
+ */
function plugin_list($type='',$all=false) {
+ /** @var $plugin_controller Doku_Plugin_Controller */
global $plugin_controller;
return $plugin_controller->getList($type,$all);
}
+
+/**
+ * Returns plugin object
+ * Returns only new instances of a plugin when $new is true or if plugin is not Singleton,
+ * otherwise an already loaded instance.
+ *
+ * @param $type string type of plugin to load
+ * @param $name string name of the plugin to load
+ * @param $new bool true to return a new instance of the plugin, false to use an already loaded instance
+ * @param $disabled bool true to load even disabled plugins
+ * @return DokuWiki_Plugin|null the plugin object or null on failure
+ */
function plugin_load($type,$name,$new=false,$disabled=false) {
+ /** @var $plugin_controller Doku_Plugin_Controller */
global $plugin_controller;
return $plugin_controller->load($type,$name,$new,$disabled);
}
+
+/**
+ * Whether plugin is disabled
+ *
+ * @param string $plugin name of plugin
+ * @return bool; true disabled, false enabled
+ */
function plugin_isdisabled($plugin) {
+ /** @var $plugin_controller Doku_Plugin_Controller */
global $plugin_controller;
return $plugin_controller->isdisabled($plugin);
}
+
+/**
+ * Enable the plugin
+ *
+ * @param string $plugin name of plugin
+ * @return bool; true saving succeed, false saving failed
+ */
function plugin_enable($plugin) {
+ /** @var $plugin_controller Doku_Plugin_Controller */
global $plugin_controller;
return $plugin_controller->enable($plugin);
}
+
+/**
+ * Disable the plugin
+ *
+ * @param string $plugin name of plugin
+ * @return bool; true saving succeed, false saving failed
+ */
function plugin_disable($plugin) {
+ /** @var $plugin_controller Doku_Plugin_Controller */
global $plugin_controller;
return $plugin_controller->disable($plugin);
}
+
+/**
+ * Returns directory name of plugin
+ *
+ * @param string $plugin name of plugin
+ * @return string name of directory
+ */
function plugin_directory($plugin) {
+ /** @var $plugin_controller Doku_Plugin_Controller */
global $plugin_controller;
return $plugin_controller->get_directory($plugin);
}
+
+/**
+ * Returns cascade of the config files
+ *
+ * @return array with arrays of plugin configs
+ */
function plugin_getcascade() {
+ /** @var $plugin_controller Doku_Plugin_Controller */
global $plugin_controller;
return $plugin_controller->getCascade();
}
diff --git a/inc/remote.php b/inc/remote.php
index 2ef28afd2..e27aa74f8 100644
--- a/inc/remote.php
+++ b/inc/remote.php
@@ -169,6 +169,9 @@ class RemoteAPI {
public function hasAccess() {
global $conf;
global $USERINFO;
+ /** @var Input $INPUT */
+ global $INPUT;
+
if (!$conf['remote']) {
return false;
}
@@ -179,7 +182,7 @@ class RemoteAPI {
return true;
}
- return auth_isMember($conf['remoteuser'], $_SERVER['REMOTE_USER'], (array) $USERINFO['grps']);
+ return auth_isMember($conf['remoteuser'], $INPUT->server->str('REMOTE_USER'), (array) $USERINFO['grps']);
}
/**
diff --git a/inc/search.php b/inc/search.php
index 884aa7b23..be4710237 100644
--- a/inc/search.php
+++ b/inc/search.php
@@ -9,14 +9,15 @@
if(!defined('DOKU_INC')) die('meh.');
/**
- * recurse direcory
+ * Recurse directory
*
* This function recurses into a given base directory
* and calls the supplied function for each file and directory
*
- * @param array ref $data The results of the search are stored here
+ * @param array &$data The results of the search are stored here
* @param string $base Where to start the search
* @param callback $func Callback (function name or array with object,method)
+ * @param array $opts option array will be given to the Callback
* @param string $dir Current directory beyond $base
* @param int $lvl Recursion Level
* @param mixed $sort 'natural' to use natural order sorting (default); 'date' to sort by filemtime; leave empty to skip sorting.
@@ -68,12 +69,12 @@ function search(&$data,$base,$func,$opts,$dir='',$lvl=1,$sort='natural'){
* decide if this directory should be traversed (true) or not (false)
* The function has to accept the following parameters:
*
- * &$data - Reference to the result data structure
- * $base - Base usually $conf['datadir']
- * $file - current file or directory relative to $base
- * $type - Type either 'd' for directory or 'f' for file
- * $lvl - Current recursion depht
- * $opts - option array as given to search()
+ * array &$data - Reference to the result data structure
+ * string $base - Base usually $conf['datadir']
+ * string $file - current file or directory relative to $base
+ * string $type - Type either 'd' for directory or 'f' for file
+ * int $lvl - Current recursion depht
+ * array $opts - option array as given to search()
*
* return values for files are ignored
*
@@ -110,7 +111,7 @@ function search_index(&$data,$base,$file,$type,$lvl,$opts){
$opts = array(
'pagesonly' => true,
'listdirs' => true,
- 'listfiles' => !$opts['nofiles'],
+ 'listfiles' => empty($opts['nofiles']),
'sneakyacl' => $conf['sneaky_index'],
// Hacky, should rather use recmatch
'depth' => preg_match('#^'.preg_quote($file, '#').'(/|$)#','/'.$opts['ns']) ? 0 : -1
@@ -140,7 +141,7 @@ function search_media(&$data,$base,$file,$type,$lvl,$opts){
//we do nothing with directories
if($type == 'd') {
- if(!$opts['depth']) return true; // recurse forever
+ if(empty($opts['depth'])) return true; // recurse forever
$depth = substr_count($file,'/');
if($depth >= $opts['depth']) return false; // depth reached
return true;
@@ -156,12 +157,12 @@ function search_media(&$data,$base,$file,$type,$lvl,$opts){
//check ACL for namespace (we have no ACL for mediafiles)
$info['perm'] = auth_quickaclcheck(getNS($info['id']).':*');
- if(!$opts['skipacl'] && $info['perm'] < AUTH_READ){
+ if(empty($opts['skipacl']) && $info['perm'] < AUTH_READ){
return false;
}
//check pattern filter
- if($opts['pattern'] && !@preg_match($opts['pattern'], $info['id'])){
+ if(!empty($opts['pattern']) && !@preg_match($opts['pattern'], $info['id'])){
return false;
}
@@ -175,7 +176,7 @@ function search_media(&$data,$base,$file,$type,$lvl,$opts){
}else{
$info['isimg'] = false;
}
- if($opts['hash']){
+ if(!empty($opts['hash'])){
$info['hash'] = md5(io_readFile(mediaFN($info['id']),false));
}
@@ -334,6 +335,15 @@ function pathID($path,$keeptxt=false){
* showhidden bool show hidden files too
* firsthead bool return first heading for pages
*
+ * @param array &$data - Reference to the result data structure
+ * @param string $base - Base usually $conf['datadir']
+ * @param string $file - current file or directory relative to $base
+ * @param string $type - Type either 'd' for directory or 'f' for file
+ * @param int $lvl - Current recursion depht
+ * @param array $opts - option array as given to search()
+ * @return bool if this directory should be traversed (true) or not (false)
+ * return value is ignored for files
+ *
* @author Andreas Gohr <gohr@cosmocode.de>
*/
function search_universal(&$data,$base,$file,$type,$lvl,$opts){
@@ -341,17 +351,18 @@ function search_universal(&$data,$base,$file,$type,$lvl,$opts){
$return = true;
// get ID and check if it is a valid one
- $item['id'] = pathID($file,($type == 'd' || $opts['keeptxt']));
+ $item['id'] = pathID($file,($type == 'd' || !empty($opts['keeptxt'])));
if($item['id'] != cleanID($item['id'])){
- if($opts['showmsg'])
+ if(!empty($opts['showmsg'])){
msg(hsc($item['id']).' is not a valid file name for DokuWiki - skipped',-1);
+ }
return false; // skip non-valid files
}
$item['ns'] = getNS($item['id']);
if($type == 'd') {
// decide if to recursion into this directory is wanted
- if(!$opts['depth']){
+ if(empty($opts['depth'])){
$return = true; // recurse forever
}else{
$depth = substr_count($file,'/');
@@ -361,13 +372,17 @@ function search_universal(&$data,$base,$file,$type,$lvl,$opts){
$return = true;
}
}
- if($return && !preg_match('/'.$opts['recmatch'].'/',$file)){
- $return = false; // doesn't match
+
+ if ($return) {
+ $match = empty($opts['recmatch']) || preg_match('/'.$opts['recmatch'].'/',$file);
+ if (!$match) {
+ return false; // doesn't match
+ }
}
}
// check ACL
- if(!$opts['skipacl']){
+ if(empty($opts['skipacl'])){
if($type == 'd'){
$item['perm'] = auth_quickaclcheck($item['id'].':*');
}else{
@@ -379,17 +394,17 @@ function search_universal(&$data,$base,$file,$type,$lvl,$opts){
// are we done here maybe?
if($type == 'd'){
- if(!$opts['listdirs']) return $return;
- if(!$opts['skipacl'] && $opts['sneakyacl'] && $item['perm'] < AUTH_READ) return false; //neither list nor recurse
- if($opts['dirmatch'] && !preg_match('/'.$opts['dirmatch'].'/',$file)) return $return;
- if($opts['nsmatch'] && !preg_match('/'.$opts['nsmatch'].'/',$item['ns'])) return $return;
+ if(empty($opts['listdirs'])) return $return;
+ if(empty($opts['skipacl']) && !empty($opts['sneakyacl']) && $item['perm'] < AUTH_READ) return false; //neither list nor recurse
+ if(!empty($opts['dirmatch']) && !preg_match('/'.$opts['dirmatch'].'/',$file)) return $return;
+ if(!empty($opts['nsmatch']) && !preg_match('/'.$opts['nsmatch'].'/',$item['ns'])) return $return;
}else{
- if(!$opts['listfiles']) return $return;
- if(!$opts['skipacl'] && $item['perm'] < AUTH_READ) return $return;
- if($opts['pagesonly'] && (substr($file,-4) != '.txt')) return $return;
- if(!$opts['showhidden'] && isHiddenPage($item['id'])) return $return;
- if($opts['filematch'] && !preg_match('/'.$opts['filematch'].'/',$file)) return $return;
- if($opts['idmatch'] && !preg_match('/'.$opts['idmatch'].'/',$item['id'])) return $return;
+ if(empty($opts['listfiles'])) return $return;
+ if(empty($opts['skipacl']) && $item['perm'] < AUTH_READ) return $return;
+ if(!empty($opts['pagesonly']) && (substr($file,-4) != '.txt')) return $return;
+ if(empty($opts['showhidden']) && isHiddenPage($item['id'])) return $return;
+ if(!empty($opts['filematch']) && !preg_match('/'.$opts['filematch'].'/',$file)) return $return;
+ if(!empty($opts['idmatch']) && !preg_match('/'.$opts['idmatch'].'/',$item['id'])) return $return;
}
// still here? prepare the item
@@ -397,7 +412,7 @@ function search_universal(&$data,$base,$file,$type,$lvl,$opts){
$item['level'] = $lvl;
$item['open'] = $return;
- if($opts['meta']){
+ if(!empty($opts['meta'])){
$item['file'] = utf8_basename($file);
$item['size'] = filesize($base.'/'.$file);
$item['mtime'] = filemtime($base.'/'.$file);
@@ -407,8 +422,8 @@ function search_universal(&$data,$base,$file,$type,$lvl,$opts){
}
if($type == 'f'){
- if($opts['hash']) $item['hash'] = md5(io_readFile($base.'/'.$file,false));
- if($opts['firsthead']) $item['title'] = p_get_first_heading($item['id'],METADATA_DONT_RENDER);
+ if(!empty($opts['hash'])) $item['hash'] = md5(io_readFile($base.'/'.$file,false));
+ if(!empty($opts['firsthead'])) $item['title'] = p_get_first_heading($item['id'],METADATA_DONT_RENDER);
}
// finally add the item
diff --git a/inc/subscription.php b/inc/subscription.php
index ecbc9ef19..adf1b821c 100644
--- a/inc/subscription.php
+++ b/inc/subscription.php
@@ -62,7 +62,7 @@ class Subscription {
return false;
}
- if($conf['dperm']) chmod($lock, $conf['dperm']);
+ if(!empty($conf['dperm'])) chmod($lock, $conf['dperm']);
return true;
}
@@ -256,8 +256,10 @@ class Subscription {
if(!$this->isenabled()) return false;
global $ID;
+ /** @var Input $INPUT */
+ global $INPUT;
if(!$id) $id = $ID;
- if(!$user) $user = $_SERVER['REMOTE_USER'];
+ if(!$user) $user = $INPUT->server->str('REMOTE_USER');
$subs = $this->subscribers($id, $user);
if(!count($subs)) return false;
@@ -288,17 +290,19 @@ class Subscription {
public function send_bulk($page) {
if(!$this->isenabled()) return 0;
- /** @var auth_basic $auth */
+ /** @var DokuWiki_Auth_Plugin $auth */
global $auth;
global $conf;
global $USERINFO;
+ /** @var Input $INPUT */
+ global $INPUT;
$count = 0;
$subscriptions = $this->subscribers($page, null, array('digest', 'list'));
// remember current user info
$olduinfo = $USERINFO;
- $olduser = $_SERVER['REMOTE_USER'];
+ $olduser = $INPUT->server->str('REMOTE_USER');
foreach($subscriptions as $target => $users) {
if(!$this->lock($target)) continue;
@@ -315,7 +319,7 @@ class Subscription {
// Work as the user to make sure ACLs apply correctly
$USERINFO = $auth->getUserData($user);
- $_SERVER['REMOTE_USER'] = $user;
+ $INPUT->server->set('REMOTE_USER',$user);
if($USERINFO === false) continue;
if(!$USERINFO['mail']) continue;
@@ -334,7 +338,7 @@ class Subscription {
foreach($changes as $rev) {
$n = 0;
while(!is_null($rev) && $rev['date'] >= $lastupdate &&
- ($_SERVER['REMOTE_USER'] === $rev['user'] ||
+ ($INPUT->server->str('REMOTE_USER') === $rev['user'] ||
$rev['type'] === DOKU_CHANGE_TYPE_MINOR_EDIT)) {
$rev = getRevisions($rev['id'], $n++, 1);
$rev = (count($rev) > 0) ? $rev[0] : null;
@@ -369,7 +373,7 @@ class Subscription {
// restore current user info
$USERINFO = $olduinfo;
- $_SERVER['REMOTE_USER'] = $olduser;
+ $INPUT->server->set('REMOTE_USER',$olduser);
return $count;
}
@@ -651,9 +655,11 @@ class Subscription {
public function notifyaddresses(&$data) {
if(!$this->isenabled()) return;
- /** @var auth_basic $auth */
+ /** @var DokuWiki_Auth_Plugin $auth */
global $auth;
global $conf;
+ /** @var Input $INPUT */
+ global $INPUT;
$id = $data['id'];
$self = $data['self'];
@@ -667,7 +673,7 @@ class Subscription {
$userinfo = $auth->getUserData($user);
if($userinfo === false) continue;
if(!$userinfo['mail']) continue;
- if(!$self && $user == $_SERVER['REMOTE_USER']) continue; //skip our own changes
+ if(!$self && $user == $INPUT->server->str('REMOTE_USER')) continue; //skip our own changes
$level = auth_aclcheck($id, $user, $userinfo['grps']);
if($level >= AUTH_READ) {
diff --git a/inc/template.php b/inc/template.php
index c08767e52..88964fada 100644
--- a/inc/template.php
+++ b/inc/template.php
@@ -210,7 +210,7 @@ function tpl_toc($return = false) {
} else {
$tocok = true;
}
- $toc = $meta['description']['tableofcontents'];
+ $toc = isset($meta['description']['tableofcontents']) ? $meta['description']['tableofcontents'] : null;
if(!$tocok || !is_array($toc) || !$conf['tocminheads'] || count($toc) < $conf['tocminheads']) {
$toc = array();
}
@@ -223,7 +223,7 @@ function tpl_toc($return = false) {
if(in_array($class, $pluginlist)) {
// attempt to load the plugin
/** @var $plugin DokuWiki_Admin_Plugin */
- $plugin =& plugin_load('admin', $class);
+ $plugin = plugin_load('admin', $class);
}
}
if( ($plugin !== null) && (!$plugin->forAdminOnly() || $INFO['isadmin']) ) {
@@ -257,7 +257,7 @@ function tpl_admin() {
if(in_array($class, $pluginlist)) {
// attempt to load the plugin
/** @var $plugin DokuWiki_Admin_Plugin */
- $plugin =& plugin_load('admin', $class);
+ $plugin = plugin_load('admin', $class);
}
}
@@ -291,6 +291,8 @@ function tpl_metaheaders($alt = true) {
global $lang;
global $conf;
global $updateVersion;
+ /** @var Input $INPUT */
+ global $INPUT;
// prepare the head array
$head = array();
@@ -318,11 +320,11 @@ function tpl_metaheaders($alt = true) {
if($alt) {
$head['link'][] = array(
'rel' => 'alternate', 'type'=> 'application/rss+xml',
- 'title'=> 'Recent Changes', 'href'=> DOKU_BASE.'feed.php'
+ 'title'=> $lang['btn_recent'], 'href'=> DOKU_BASE.'feed.php'
);
$head['link'][] = array(
'rel' => 'alternate', 'type'=> 'application/rss+xml',
- 'title'=> 'Current Namespace',
+ 'title'=> $lang['currentns'],
'href' => DOKU_BASE.'feed.php?mode=list&ns='.$INFO['namespace']
);
if(($ACT == 'show' || $ACT == 'search') && $INFO['writable']) {
@@ -336,21 +338,21 @@ function tpl_metaheaders($alt = true) {
if($ACT == 'search') {
$head['link'][] = array(
'rel' => 'alternate', 'type'=> 'application/rss+xml',
- 'title'=> 'Search Result',
+ 'title'=> $lang['searchresult'],
'href' => DOKU_BASE.'feed.php?mode=search&q='.$QUERY
);
}
if(actionOK('export_xhtml')) {
$head['link'][] = array(
- 'rel' => 'alternate', 'type'=> 'text/html', 'title'=> 'Plain HTML',
+ 'rel' => 'alternate', 'type'=> 'text/html', 'title'=> $lang['plainhtml'],
'href'=> exportlink($ID, 'xhtml', '', false, '&')
);
}
if(actionOK('export_raw')) {
$head['link'][] = array(
- 'rel' => 'alternate', 'type'=> 'text/plain', 'title'=> 'Wiki Markup',
+ 'rel' => 'alternate', 'type'=> 'text/plain', 'title'=> $lang['wikimarkup'],
'href'=> exportlink($ID, 'raw', '', false, '&')
);
}
@@ -401,7 +403,7 @@ function tpl_metaheaders($alt = true) {
// make $INFO and other vars available to JavaScripts
$json = new JSON();
$script = "var NS='".$INFO['namespace']."';";
- if($conf['useacl'] && $_SERVER['REMOTE_USER']) {
+ if($conf['useacl'] && $INPUT->server->str('REMOTE_USER')) {
$script .= "var SIG='".toolbar_signature()."';";
}
$script .= 'var JSINFO = '.$json->encode($JSINFO).';';
@@ -603,9 +605,12 @@ function tpl_get_action($type) {
global $REV;
global $ACT;
global $conf;
+ /** @var Input $INPUT */
+ global $INPUT;
// check disabled actions and fix the badly named ones
if($type == 'history') $type = 'revisions';
+ if ($type == 'subscription') $type = 'subscribe';
if(!actionOK($type)) return false;
$accesskey = null;
@@ -636,7 +641,7 @@ function tpl_get_action($type) {
$accesskey = 'v';
}
} else {
- $params = array();
+ $params = array('do' => '');
$type = 'show';
$accesskey = 'v';
}
@@ -657,7 +662,7 @@ function tpl_get_action($type) {
break;
case 'top':
$accesskey = 't';
- $params = array();
+ $params = array('do' => '');
$id = '#dokuwiki__top';
break;
case 'back':
@@ -666,12 +671,12 @@ function tpl_get_action($type) {
return false;
}
$id = $parent;
- $params = array();
+ $params = array('do' => '');
$accesskey = 'b';
break;
case 'login':
$params['sectok'] = getSecurityToken();
- if(isset($_SERVER['REMOTE_USER'])) {
+ if($INPUT->server->has('REMOTE_USER')) {
if(!actionOK('logout')) {
return false;
}
@@ -680,12 +685,12 @@ function tpl_get_action($type) {
}
break;
case 'register':
- if($_SERVER['REMOTE_USER']) {
+ if($INPUT->server->str('REMOTE_USER')) {
return false;
}
break;
case 'resendpwd':
- if($_SERVER['REMOTE_USER']) {
+ if($INPUT->server->str('REMOTE_USER')) {
return false;
}
break;
@@ -701,19 +706,15 @@ function tpl_get_action($type) {
$params['rev'] = $REV;
$params['sectok'] = getSecurityToken();
break;
- /** @noinspection PhpMissingBreakStatementInspection */
- case 'subscription':
- $type = 'subscribe';
- $params['do'] = 'subscribe';
case 'subscribe':
- if(!$_SERVER['REMOTE_USER']) {
+ if(!$INPUT->server->str('REMOTE_USER')) {
return false;
}
break;
case 'backlink':
break;
case 'profile':
- if(!isset($_SERVER['REMOTE_USER'])) {
+ if(!$INPUT->server->has('REMOTE_USER')) {
return false;
}
break;
@@ -889,8 +890,11 @@ function tpl_youarehere($sep = ' » ') {
function tpl_userinfo() {
global $lang;
global $INFO;
- if(isset($_SERVER['REMOTE_USER'])) {
- print $lang['loggedinas'].': <bdi>'.hsc($INFO['userinfo']['name']).'</bdi> (<bdi>'.hsc($_SERVER['REMOTE_USER']).'</bdi>)';
+ /** @var Input $INPUT */
+ global $INPUT;
+
+ if($INPUT->server->str('REMOTE_USER')) {
+ print $lang['loggedinas'].': <bdi>'.hsc($INFO['userinfo']['name']).'</bdi> (<bdi>'.hsc($INPUT->server->str('REMOTE_USER')).'</bdi>)';
return true;
}
return false;
@@ -1033,6 +1037,7 @@ function tpl_img_getTag($tags, $alt = '', $src = null) {
*/
function tpl_img($maxwidth = 0, $maxheight = 0, $link = true, $params = null) {
global $IMG;
+ /** @var Input $INPUT */
global $INPUT;
$w = tpl_img_getTag('File.Width');
$h = tpl_img_getTag('File.Height');
@@ -1126,10 +1131,11 @@ function tpl_indexerWebBug() {
*
* use this function to access template configuration variables
*
- * @param string $id
- * @return string
+ * @param string $id name of the value to access
+ * @param mixed $notset what to return if the setting is not available
+ * @return mixed
*/
-function tpl_getConf($id) {
+function tpl_getConf($id, $notset=false) {
global $conf;
static $tpl_configloaded = false;
@@ -1146,7 +1152,11 @@ function tpl_getConf($id) {
}
}
- return $conf['tpl'][$tpl][$id];
+ if(isset($conf['tpl'][$tpl][$id])){
+ return $conf['tpl'][$tpl][$id];
+ }
+
+ return $notset;
}
/**
@@ -1240,6 +1250,7 @@ function tpl_mediaContent($fromajax = false, $sort='natural') {
global $INUSE;
global $NS;
global $JUMPTO;
+ /** @var Input $INPUT */
global $INPUT;
$do = $INPUT->extract('do')->str('do');
@@ -1289,6 +1300,7 @@ function tpl_mediaFileList() {
global $NS;
global $JUMPTO;
global $lang;
+ /** @var Input $INPUT */
global $INPUT;
$opened_tab = $INPUT->str('tab_files');
@@ -1329,7 +1341,9 @@ function tpl_mediaFileList() {
* @author Kate Arzamastseva <pshns@ukr.net>
*/
function tpl_mediaFileDetails($image, $rev) {
- global $AUTH, $NS, $conf, $DEL, $lang, $INPUT;
+ global $AUTH, $NS, $conf, $DEL, $lang;
+ /** @var Input $INPUT */
+ global $INPUT;
$removed = (!file_exists(mediaFN($image)) && file_exists(mediaMetaFN($image, '.changes')) && $conf['mediarevisions']);
if(!$image || (!file_exists(mediaFN($image)) && !$removed) || $DEL) return;
@@ -1407,12 +1421,14 @@ function tpl_actiondropdown($empty = '', $button = '&gt;') {
global $ID;
global $REV;
global $lang;
+ /** @var Input $INPUT */
+ global $INPUT;
echo '<form action="'.script().'" method="get" accept-charset="utf-8">';
echo '<div class="no">';
echo '<input type="hidden" name="id" value="'.$ID.'" />';
if($REV) echo '<input type="hidden" name="rev" value="'.$REV.'" />';
- if ($_SERVER['REMOTE_USER']) {
+ if ($INPUT->server->str('REMOTE_USER')) {
echo '<input type="hidden" name="sectok" value="'.getSecurityToken().'" />';
}
@@ -1697,18 +1713,6 @@ function tpl_includeFile($file) {
}
/**
- * Returns icon from data/media root directory if it exists, otherwise
- * the one in the template's image directory.
- *
- * @deprecated Use tpl_getMediaFile() instead
- * @author Anika Henke <anika@selfthinker.org>
- */
-function tpl_getFavicon($abs = false, $fileName = 'favicon.ico') {
- $look = array(":wiki:$fileName", ":$fileName", "images/$fileName");
- return tpl_getMediaFile($look, $abs);
-}
-
-/**
* Returns <link> tag for various icon types (favicon|mobile|generic)
*
* @author Anika Henke <anika@selfthinker.org>
@@ -1790,11 +1794,14 @@ function tpl_media() {
*/
function tpl_classes() {
global $ACT, $conf, $ID, $INFO;
+ /** @var Input $INPUT */
+ global $INPUT;
+
$classes = array(
'dokuwiki',
'mode_'.$ACT,
'tpl_'.$conf['template'],
- $_SERVER['REMOTE_USER'] ? 'loggedIn' : '',
+ $INPUT->server->bool('REMOTE_USER') ? 'loggedIn' : '',
$INFO['exists'] ? '' : 'notFound',
($ID == $conf['start']) ? 'home' : '',
);
diff --git a/inc/toolbar.php b/inc/toolbar.php
index b588d4477..7cc29e866 100644
--- a/inc/toolbar.php
+++ b/inc/toolbar.php
@@ -56,7 +56,7 @@ function toolbar_JSdefines($varname){
'type' => 'format',
'title' => $lang['qb_code'],
'icon' => 'mono.png',
- 'key' => 'c',
+ 'key' => 'm',
'open' => "''",
'close' => "''",
'block' => false
@@ -241,10 +241,12 @@ function toolbar_JSdefines($varname){
function toolbar_signature(){
global $conf;
global $INFO;
+ /** @var Input $INPUT */
+ global $INPUT;
$sig = $conf['signature'];
$sig = dformat(null,$sig);
- $sig = str_replace('@USER@',$_SERVER['REMOTE_USER'],$sig);
+ $sig = str_replace('@USER@',$INPUT->server->str('REMOTE_USER'),$sig);
$sig = str_replace('@NAME@',$INFO['userinfo']['name'],$sig);
$sig = str_replace('@MAIL@',$INFO['userinfo']['mail'],$sig);
$sig = str_replace('@DATE@',dformat(),$sig);