summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGerrit Uitslag <klapinklapin@gmail.com>2014-12-09 17:26:28 +0100
committerGerrit Uitslag <klapinklapin@gmail.com>2014-12-09 17:26:28 +0100
commit8702de7f7e170bddfdb622c393c3cac3446fd1c5 (patch)
treec7269ea61f5d4230a6f916dbabee4ce412e0a9fb
parent1cc82e5c76ae7fcd646e448404afdc0fd458bf55 (diff)
parent9a0ca2cfd8ac42895af3be2efbd2cab7e6d33578 (diff)
downloadrpg-8702de7f7e170bddfdb622c393c3cac3446fd1c5.tar.gz
rpg-8702de7f7e170bddfdb622c393c3cac3446fd1c5.tar.bz2
Merge remote-tracking branch 'origin/master' into scrutinizerissues
Conflicts: inc/media.php inc/plugin.php inc/template.php lib/plugins/authplain/_test/escaping.test.php lib/plugins/syntax.php
-rw-r--r--_test/tests/inc/changelog_getlastrevisionat.test.php127
-rw-r--r--_test/tests/inc/common_ml.test.php11
-rw-r--r--_test/tests/inc/common_wl.test.php11
-rw-r--r--_test/tests/inc/parser/parser_footnote.test.php2
-rw-r--r--_test/tests/inc/parser/parser_lists.test.php20
-rw-r--r--_test/tests/lib/exe/js_js_compress.test.php78
-rwxr-xr-xbin/striplangs.php3
-rw-r--r--conf/mime.conf5
-rw-r--r--doku.php39
-rw-r--r--inc/actions.php2
-rw-r--r--inc/auth.php1
-rw-r--r--inc/cache.php2
-rw-r--r--inc/changelog.php20
-rw-r--r--inc/common.php3
-rw-r--r--inc/compatibility.php46
-rw-r--r--inc/config_cascade.php114
-rw-r--r--inc/html.php15
-rw-r--r--inc/infoutils.php27
-rw-r--r--inc/init.php34
-rw-r--r--inc/lang/ar/lang.php1
-rw-r--r--inc/lang/ar/searchpage.txt2
-rw-r--r--inc/lang/az/lang.php1
-rw-r--r--inc/lang/az/searchpage.txt2
-rw-r--r--inc/lang/bg/lang.php1
-rw-r--r--inc/lang/bg/searchpage.txt2
-rw-r--r--inc/lang/ca-valencia/lang.php1
-rw-r--r--inc/lang/ca-valencia/searchpage.txt2
-rw-r--r--inc/lang/ca/lang.php1
-rw-r--r--inc/lang/ca/searchpage.txt2
-rw-r--r--inc/lang/cs/lang.php6
-rw-r--r--inc/lang/cs/searchpage.txt2
-rw-r--r--inc/lang/da/lang.php1
-rw-r--r--inc/lang/da/searchpage.txt2
-rw-r--r--inc/lang/de-informal/lang.php1
-rw-r--r--inc/lang/de-informal/searchpage.txt2
-rw-r--r--inc/lang/de/lang.php6
-rw-r--r--inc/lang/de/searchpage.txt2
-rw-r--r--inc/lang/el/searchpage.txt2
-rw-r--r--inc/lang/en/lang.php3
-rw-r--r--inc/lang/en/searchpage.txt2
-rw-r--r--inc/lang/eo/lang.php1
-rw-r--r--inc/lang/eo/searchpage.txt2
-rw-r--r--inc/lang/es/lang.php1
-rw-r--r--inc/lang/es/searchpage.txt2
-rw-r--r--inc/lang/et/lang.php1
-rw-r--r--inc/lang/et/searchpage.txt2
-rw-r--r--inc/lang/eu/lang.php12
-rw-r--r--inc/lang/eu/searchpage.txt2
-rw-r--r--inc/lang/fa/lang.php3
-rw-r--r--inc/lang/fa/searchpage.txt2
-rw-r--r--inc/lang/fi/lang.php1
-rw-r--r--inc/lang/fi/searchpage.txt2
-rw-r--r--inc/lang/fo/lang.php1
-rw-r--r--inc/lang/fo/searchpage.txt2
-rw-r--r--inc/lang/fr/lang.php4
-rw-r--r--inc/lang/fr/searchpage.txt2
-rw-r--r--inc/lang/gl/lang.php1
-rw-r--r--inc/lang/gl/searchpage.txt2
-rw-r--r--inc/lang/he/lang.php1
-rw-r--r--inc/lang/he/searchpage.txt2
-rw-r--r--inc/lang/hr/lang.php17
-rw-r--r--inc/lang/hr/searchpage.txt2
-rw-r--r--inc/lang/hu/lang.php1
-rw-r--r--inc/lang/hu/searchpage.txt2
-rw-r--r--inc/lang/ia/lang.php1
-rw-r--r--inc/lang/ia/searchpage.txt2
-rw-r--r--inc/lang/id/lang.php1
-rw-r--r--inc/lang/id/searchpage.txt2
-rw-r--r--inc/lang/it/lang.php1
-rw-r--r--inc/lang/it/searchpage.txt2
-rw-r--r--inc/lang/ja/lang.php1
-rw-r--r--inc/lang/ja/searchpage.txt2
-rw-r--r--inc/lang/ko/lang.php3
-rw-r--r--inc/lang/ko/searchpage.txt4
-rw-r--r--inc/lang/ku/lang.php1
-rw-r--r--inc/lang/ku/searchpage.txt2
-rw-r--r--inc/lang/la/searchpage.txt2
-rw-r--r--inc/lang/lb/lang.php1
-rw-r--r--inc/lang/lb/searchpage.txt2
-rw-r--r--inc/lang/lt/lang.php1
-rw-r--r--inc/lang/lt/searchpage.txt2
-rw-r--r--inc/lang/lv/lang.php1
-rw-r--r--inc/lang/lv/searchpage.txt3
-rw-r--r--inc/lang/mg/lang.php2
-rw-r--r--inc/lang/mg/searchpage.txt2
-rw-r--r--inc/lang/mr/lang.php1
-rw-r--r--inc/lang/mr/searchpage.txt2
-rw-r--r--inc/lang/ne/lang.php1
-rw-r--r--inc/lang/ne/searchpage.txt4
-rw-r--r--inc/lang/nl/lang.php1
-rw-r--r--inc/lang/nl/searchpage.txt2
-rw-r--r--inc/lang/no/lang.php5
-rw-r--r--inc/lang/no/searchpage.txt2
-rw-r--r--inc/lang/pl/lang.php1
-rw-r--r--inc/lang/pl/searchpage.txt2
-rw-r--r--inc/lang/pt-br/lang.php1
-rw-r--r--inc/lang/pt-br/searchpage.txt2
-rw-r--r--inc/lang/pt/lang.php1
-rw-r--r--inc/lang/pt/searchpage.txt2
-rw-r--r--inc/lang/ro/lang.php1
-rw-r--r--inc/lang/ro/searchpage.txt2
-rw-r--r--inc/lang/ru/lang.php21
-rw-r--r--inc/lang/ru/mailtext.txt2
-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/revisions.txt2
-rw-r--r--inc/lang/ru/searchpage.txt2
-rw-r--r--inc/lang/ru/uploadmail.txt2
-rw-r--r--inc/lang/sk/lang.php1
-rw-r--r--inc/lang/sk/searchpage.txt2
-rw-r--r--inc/lang/sl/lang.php1
-rw-r--r--inc/lang/sl/searchpage.txt2
-rw-r--r--inc/lang/sq/lang.php1
-rw-r--r--inc/lang/sq/searchpage.txt2
-rw-r--r--inc/lang/sr/lang.php1
-rw-r--r--inc/lang/sr/searchpage.txt2
-rw-r--r--inc/lang/sv/lang.php1
-rw-r--r--inc/lang/sv/searchpage.txt2
-rw-r--r--inc/lang/th/lang.php1
-rw-r--r--inc/lang/th/searchpage.txt3
-rw-r--r--inc/lang/tr/lang.php1
-rw-r--r--inc/lang/tr/searchpage.txt2
-rw-r--r--inc/lang/uk/lang.php1
-rw-r--r--inc/lang/uk/searchpage.txt2
-rw-r--r--inc/lang/vi/lang.php1
-rw-r--r--inc/lang/vi/searchpage.txt2
-rw-r--r--inc/lang/zh-tw/lang.php2
-rw-r--r--inc/lang/zh-tw/searchpage.txt2
-rw-r--r--inc/lang/zh/lang.php1
-rw-r--r--inc/lang/zh/searchpage.txt2
-rw-r--r--inc/mail.php2
-rw-r--r--inc/media.php4
-rw-r--r--inc/pageutils.php38
-rw-r--r--inc/parser/handler.php23
-rw-r--r--inc/parser/metadata.php3
-rw-r--r--inc/parser/renderer.php3
-rw-r--r--inc/parser/xhtml.php48
-rw-r--r--inc/parserutils.php13
-rw-r--r--inc/plugin.php53
-rw-r--r--inc/plugincontroller.class.php6
-rw-r--r--inc/template.php55
-rw-r--r--install.php5
-rw-r--r--lib/exe/css.php7
-rw-r--r--lib/exe/detail.php3
-rw-r--r--lib/exe/js.php36
-rw-r--r--lib/images/smileys/index.php2
-rw-r--r--lib/plugins/acl/lang/eu/lang.php5
-rw-r--r--lib/plugins/auth.php2
-rw-r--r--lib/plugins/authad/lang/fa/settings.php10
-rw-r--r--lib/plugins/authad/lang/no/lang.php8
-rw-r--r--lib/plugins/authad/lang/no/settings.php2
-rw-r--r--lib/plugins/authad/lang/ru/settings.php3
-rw-r--r--lib/plugins/authldap/lang/fa/settings.php10
-rw-r--r--lib/plugins/authldap/lang/no/settings.php2
-rw-r--r--lib/plugins/authmysql/lang/no/settings.php14
-rw-r--r--lib/plugins/authpgsql/auth.php6
-rw-r--r--lib/plugins/authpgsql/lang/ru/settings.php2
-rw-r--r--lib/plugins/authplain/_test/escaping.test.php45
-rw-r--r--lib/plugins/authplain/auth.php34
-rw-r--r--lib/plugins/extension/helper/list.php5
-rw-r--r--lib/plugins/extension/lang/cs/intro_templates.txt1
-rw-r--r--lib/plugins/extension/lang/cs/lang.php26
-rw-r--r--lib/plugins/extension/lang/en/lang.php1
-rw-r--r--lib/plugins/extension/lang/hr/lang.php20
-rw-r--r--lib/plugins/extension/lang/ru/lang.php25
-rw-r--r--lib/plugins/extension/lang/zh-tw/intro_plugins.txt1
-rw-r--r--lib/plugins/extension/lang/zh-tw/lang.php30
-rw-r--r--lib/plugins/popularity/lang/eu/lang.php5
-rw-r--r--lib/plugins/revert/lang/eu/lang.php6
-rw-r--r--lib/plugins/revert/lang/no/lang.php1
-rw-r--r--lib/plugins/syntax.php4
-rw-r--r--lib/plugins/usermanager/lang/cs/lang.php3
-rw-r--r--lib/plugins/usermanager/lang/eu/lang.php5
-rw-r--r--lib/plugins/usermanager/lang/hr/lang.php4
-rw-r--r--lib/plugins/usermanager/lang/ru/import.txt3
-rw-r--r--lib/plugins/usermanager/lang/ru/lang.php3
-rw-r--r--lib/tpl/dokuwiki/detail.php2
178 files changed, 1071 insertions, 328 deletions
diff --git a/_test/tests/inc/changelog_getlastrevisionat.test.php b/_test/tests/inc/changelog_getlastrevisionat.test.php
new file mode 100644
index 000000000..84b185ce8
--- /dev/null
+++ b/_test/tests/inc/changelog_getlastrevisionat.test.php
@@ -0,0 +1,127 @@
+<?php
+
+/**
+ * Tests for requesting revisioninfo of a revision of a page with getRevisionInfo()
+ *
+ * This class uses the files:
+ * - data/pages/mailinglist.txt
+ * - data/meta/mailinglist.changes
+ */
+class changelog_getlastrevisionat_test extends DokuWikiTest {
+
+ private $pageid = 'mailinglist';
+
+ function setup() {
+ parent::setup();
+ global $cache_revinfo;
+ $cache =& $cache_revinfo;
+ if(isset($cache['nonexist'])) {
+ unset($cache['nonexist']);
+ }
+ if(isset($cache['mailinglist'])) {
+ unset($cache['mailinglist']);
+ }
+ }
+
+
+ /**
+ * no nonexist.changes meta file available
+ */
+ function test_changemetadatanotexists() {
+ $rev = 1362525899;
+ $id = 'nonexist';
+ $revsexpected = false;
+
+ $pagelog = new PageChangeLog($id, $chunk_size = 8192);
+ $revs = $pagelog->getLastRevisionAt($rev);
+ $this->assertEquals($revsexpected, $revs);
+ }
+
+ /**
+ * start at exact current revision of mailinglist page
+ *
+ */
+ function test_startatexactcurrentrev() {
+ $rev = 1385051947;
+ $revsexpected = '';
+
+ //set a known timestamp
+ touch(wikiFN($this->pageid), $rev);
+
+ $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192);
+ $revs = $pagelog->getLastRevisionAt($rev);
+ $this->assertEquals($revsexpected, $revs);
+
+ }
+
+ /**
+ * test a future revision
+ *
+ */
+ function test_futurerev() {
+ $rev = 1385051947;
+ $revsexpected = '';
+
+ //set a known timestamp
+ touch(wikiFN($this->pageid), $rev);
+
+ $rev +=1;
+
+ $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192);
+ $revs = $pagelog->getLastRevisionAt($rev);
+ $this->assertEquals($revsexpected, $revs);
+
+ }
+
+ /**
+ * start at exact last revision of mailinglist page
+ *
+ */
+ function test_exactlastrev() {
+ $rev = 1360110636;
+ $revsexpected = 1360110636;
+
+ $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192);
+ $revs = $pagelog->getLastRevisionAt($rev);
+ $this->assertEquals($revsexpected, $revs);
+ }
+
+
+ /**
+ * Request not existing revision
+ *
+ */
+ function test_olderrev() {
+ $rev = 1;
+ $revexpected = false;
+
+ $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192);
+ $revfound = $pagelog->getLastRevisionAt($rev);
+ $this->assertEquals($revexpected, $revfound);
+ }
+
+ /**
+ * Start at non existing revision somewhere between existing revisions
+ */
+ function test_notexistingrev() {
+ $rev = 1362525890;
+ $revexpected = 1362525359;
+
+ $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192);
+ $revfound = $pagelog->getLastRevisionAt($rev);
+ $this->assertEquals($revexpected, $revfound);
+ }
+
+ /**
+ * request nonexisting page
+ *
+ */
+ function test_notexistingpage() {
+ $rev = 1385051947;
+ $currentexpected = false;
+
+ $pagelog = new PageChangeLog('nonexistingpage', $chunk_size = 8192);
+ $current = $pagelog->getLastRevisionAt($rev);
+ $this->assertEquals($currentexpected, $current);
+ }
+} \ No newline at end of file
diff --git a/_test/tests/inc/common_ml.test.php b/_test/tests/inc/common_ml.test.php
index 415c0a88d..027dcaef2 100644
--- a/_test/tests/inc/common_ml.test.php
+++ b/_test/tests/inc/common_ml.test.php
@@ -146,4 +146,15 @@ class common_ml_test extends DokuWikiTest {
$this->assertEquals($expect, ml($id, $args));
}
+
+ function test_ml_empty_rev() {
+ global $conf;
+ $conf['useslash'] = 0;
+ $conf['userewrite'] = 0;
+
+ $args = array('a' => 'b', 'c' => 'd', 'rev' => '');
+
+ $expect = DOKU_BASE . $this->script . '?a=b&amp;c=d&amp;media=some:img.jpg';
+ $this->assertEquals($expect, ml('some:img.jpg', $args));
+ }
}
diff --git a/_test/tests/inc/common_wl.test.php b/_test/tests/inc/common_wl.test.php
index 2e34dcae3..4bfde3f39 100644
--- a/_test/tests/inc/common_wl.test.php
+++ b/_test/tests/inc/common_wl.test.php
@@ -142,6 +142,17 @@ class common_wl_test extends DokuWikiTest {
$expect = DOKU_BASE . DOKU_SCRIPT . '/some/one?a=b&c=d';
$this->assertEquals($expect, wl('some:one', 'a=b,c=d', false, '&'));
}
+
+ function test_wl_empty_rev() {
+ global $conf;
+ $conf['useslash'] = 0;
+ $conf['userewrite'] = 0;
+
+ $args = array('a' => 'b', 'c' => 'd', 'rev' => '');
+
+ $expect = DOKU_BASE . DOKU_SCRIPT . '?id=some:&amp;a=b&amp;c=d';
+ $this->assertEquals($expect, wl('some:', $args));
+ }
diff --git a/_test/tests/inc/parser/parser_footnote.test.php b/_test/tests/inc/parser/parser_footnote.test.php
index b47a575de..2457fb031 100644
--- a/_test/tests/inc/parser/parser_footnote.test.php
+++ b/_test/tests/inc/parser/parser_footnote.test.php
@@ -303,7 +303,7 @@ class TestOfDoku_Parser_Footnote extends TestOfDoku_Parser {
array('nest', array ( array (
array('footnote_open',array()),
array('listu_open',array()),
- array('listitem_open',array(1)),
+ array('listitem_open',array(1,Doku_Handler_List::NODE)),
array('listcontent_open',array()),
array('cdata',array("A")),
array('listcontent_close',array()),
diff --git a/_test/tests/inc/parser/parser_lists.test.php b/_test/tests/inc/parser/parser_lists.test.php
index e4ef1f83e..6acaff637 100644
--- a/_test/tests/inc/parser/parser_lists.test.php
+++ b/_test/tests/inc/parser/parser_lists.test.php
@@ -13,7 +13,7 @@ class TestOfDoku_Parser_Lists extends TestOfDoku_Parser {
$calls = array (
array('document_start',array()),
array('listu_open',array()),
- array('listitem_open',array(1)),
+ array('listitem_open',array(1,Doku_Handler_List::NODE)),
array('listcontent_open',array()),
array('cdata',array("A")),
array('listcontent_close',array()),
@@ -46,7 +46,7 @@ class TestOfDoku_Parser_Lists extends TestOfDoku_Parser {
$calls = array (
array('document_start',array()),
array('listo_open',array()),
- array('listitem_open',array(1)),
+ array('listitem_open',array(1,Doku_Handler_List::NODE)),
array('listcontent_open',array()),
array('cdata',array("A")),
array('listcontent_close',array()),
@@ -80,7 +80,7 @@ class TestOfDoku_Parser_Lists extends TestOfDoku_Parser {
$calls = array (
array('document_start',array()),
array('listo_open',array()),
- array('listitem_open',array(1)),
+ array('listitem_open',array(1,Doku_Handler_List::NODE)),
array('listcontent_open',array()),
array('cdata',array("A")),
array('listcontent_close',array()),
@@ -109,7 +109,7 @@ class TestOfDoku_Parser_Lists extends TestOfDoku_Parser {
$calls = array (
array('document_start',array()),
array('listu_open',array()),
- array('listitem_open',array(1)),
+ array('listitem_open',array(1,Doku_Handler_List::NODE)),
array('listcontent_open',array()),
array('cdata',array("A")),
array('listcontent_close',array()),
@@ -138,7 +138,7 @@ class TestOfDoku_Parser_Lists extends TestOfDoku_Parser {
$calls = array (
array('document_start',array()),
array('listo_open',array()),
- array('listitem_open',array(1)),
+ array('listitem_open',array(1,Doku_Handler_List::NODE)),
array('listcontent_open',array()),
array('cdata',array("A")),
array('listcontent_close',array()),
@@ -188,7 +188,7 @@ Bar');
array('cdata',array("Foo")),
array('p_close',array()),
array('listu_open',array()),
- array('listitem_open',array(1)),
+ array('listitem_open',array(1,Doku_Handler_List::NODE)),
array('listcontent_open',array()),
array('cdata',array("A")),
array('listcontent_close',array()),
@@ -227,7 +227,7 @@ Bar');
$calls = array (
array('document_start',array()),
array('listu_open',array()),
- array('listitem_open',array(1)),
+ array('listitem_open',array(1,Doku_Handler_List::NODE)),
array('listcontent_open',array()),
array('strong_open',array()),
array('cdata',array("A")),
@@ -262,7 +262,7 @@ Bar');
$calls = array (
array('document_start',array()),
array('listu_open',array()),
- array('listitem_open',array(1)),
+ array('listitem_open',array(1,Doku_Handler_List::NODE)),
array('listcontent_open',array()),
array('unformatted',array("A")),
array('listcontent_close',array()),
@@ -291,7 +291,7 @@ Bar');
$calls = array (
array('document_start',array()),
array('listu_open',array()),
- array('listitem_open',array(1)),
+ array('listitem_open',array(1,Doku_Handler_List::NODE)),
array('listcontent_open',array()),
array('cdata',array("A")),
array('linebreak',array()),
@@ -355,7 +355,7 @@ Bar');
$calls = array (
array('document_start',array()),
array('listu_open',array()),
- array('listitem_open',array(1)),
+ array('listitem_open',array(1,Doku_Handler_List::NODE)),
array('listcontent_open',array()),
array('nest', array( array(
array('footnote_open',array()),
diff --git a/_test/tests/lib/exe/js_js_compress.test.php b/_test/tests/lib/exe/js_js_compress.test.php
index b1ae2a84f..648ede07e 100644
--- a/_test/tests/lib/exe/js_js_compress.test.php
+++ b/_test/tests/lib/exe/js_js_compress.test.php
@@ -58,6 +58,18 @@ class js_js_compress_test extends DokuWikiTest {
$this->assertEquals(js_compress($text), 'text.replace(/"/,"//")');
}
+ function test_regex_after_and_with_slashes_outside_string(){
+ $text = 'if ( peng == bla && /pattern\//.test(url)) request = new Something();';
+ $this->assertEquals(js_compress($text),
+ 'if(peng==bla&&/pattern\//.test(url))request=new Something();');
+ }
+
+ function test_regex_after_or_with_slashes_outside_string(){
+ $text = 'if ( peng == bla || /pattern\//.test(url)) request = new Something();';
+ $this->assertEquals(js_compress($text),
+ 'if(peng==bla||/pattern\//.test(url))request=new Something();');
+ }
+
function test_dquot1(){
$text = 'var foo="Now what \\" \'do we//get /*here*/ ?";';
$this->assertEquals(js_compress($text), $text);
@@ -145,6 +157,72 @@ EOF;
$this->assertEquals($out, js_compress($text));
}
+ function test_plusplus1(){
+ $text = 'a = 5 + ++b;';
+ $this->assertEquals('a=5+ ++b;',js_compress($text));
+ }
+
+ function test_plusplus2(){
+ $text = 'a = 5+ ++b;';
+ $this->assertEquals('a=5+ ++b;',js_compress($text));
+ }
+
+ function test_plusplus3(){
+ $text = 'a = 5++ + b;';
+ $this->assertEquals('a=5++ +b;',js_compress($text));
+ }
+
+ function test_plusplus4(){
+ $text = 'a = 5++ +b;';
+ $this->assertEquals('a=5++ +b;',js_compress($text));
+ }
+
+ function test_minusminus1(){
+ $text = 'a = 5 - --b;';
+ $this->assertEquals('a=5- --b;',js_compress($text));
+ }
+
+ function test_minusminus2(){
+ $text = 'a = 5- --b;';
+ $this->assertEquals('a=5- --b;',js_compress($text));
+ }
+
+ function test_minusminus3(){
+ $text = 'a = 5-- - b;';
+ $this->assertEquals('a=5-- -b;',js_compress($text));
+ }
+
+ function test_minusminus4(){
+ $text = 'a = 5-- -b;';
+ $this->assertEquals('a=5-- -b;',js_compress($text));
+ }
+
+ function test_minusplus1(){
+ $text = 'a = 5-- +b;';
+ $this->assertEquals('a=5--+b;',js_compress($text));
+ }
+
+ function test_minusplus2(){
+ $text = 'a = 5-- + b;';
+ $this->assertEquals('a=5--+b;',js_compress($text));
+ }
+
+ function test_plusminus1(){
+ $text = 'a = 5++ - b;';
+ $this->assertEquals('a=5++-b;',js_compress($text));
+ }
+
+ function test_plusminus2(){
+ $text = 'a = 5++ -b;';
+ $this->assertEquals('a=5++-b;',js_compress($text));
+ }
+
+ function test_unusual_signs(){
+ $text='var π = Math.PI, τ = 2 * π, halfπ = π / 2, ε = 1e-6, ε2 = ε * ε, radians = π / 180, degrees = 180 / π;';
+ $this->assertEquals(js_compress($text),
+ 'var π=Math.PI,τ=2*π,halfπ=π/2,ε=1e-6,ε2=ε*ε,radians=π/180,degrees=180/π;');
+ }
+
/**
* Test the files provided with the original JsStrip
*/
diff --git a/bin/striplangs.php b/bin/striplangs.php
index 6335bc84c..82d27d462 100755
--- a/bin/striplangs.php
+++ b/bin/striplangs.php
@@ -26,7 +26,8 @@ class StripLangsCLI extends DokuCLI {
$options->registerOption(
'keep',
'Comma separated list of languages to keep in addition to English.',
- 'k'
+ 'k',
+ 'langcodes'
);
$options->registerOption(
'english-only',
diff --git a/conf/mime.conf b/conf/mime.conf
index 2a50fab10..c2e03b775 100644
--- a/conf/mime.conf
+++ b/conf/mime.conf
@@ -9,7 +9,6 @@ gif image/gif
png image/png
ico image/vnd.microsoft.icon
-swf application/x-shockwave-flash
mp3 audio/mpeg
ogg audio/ogg
wav audio/wav
@@ -66,3 +65,7 @@ odt !application/vnd.oasis.opendocument.text
#xml text/xml
#csv text/csv
+# Also flash may be able to execute arbitrary scripts in the website's
+# context
+#swf application/x-shockwave-flash
+
diff --git a/doku.php b/doku.php
index da3643544..7cb92cffa 100644
--- a/doku.php
+++ b/doku.php
@@ -9,7 +9,7 @@
*/
// update message version
-$updateVersion = 45;
+$updateVersion = 47;
// xdebug_start_profiling();
@@ -34,6 +34,7 @@ $QUERY = trim($INPUT->str('id'));
$ID = getID();
$REV = $INPUT->int('rev');
+$DATE_AT = $INPUT->str('at');
$IDX = $INPUT->str('idx');
$DATE = $INPUT->int('date');
$RANGE = $INPUT->str('range');
@@ -47,7 +48,41 @@ $PRE = cleanText(substr($INPUT->post->str('prefix'), 0, -1));
$SUF = cleanText($INPUT->post->str('suffix'));
$SUM = $INPUT->post->str('summary');
-//make info about the selected page available
+
+//parse DATE_AT
+if($DATE_AT) {
+ $date_parse = strtotime($DATE_AT);
+ if($date_parse) {
+ $DATE_AT = $date_parse;
+ } else { // check for UNIX Timestamp
+ $date_parse = @date('Ymd',$DATE_AT);
+ if(!$date_parse || $date_parse === '19700101') {
+ msg(sprintf($lang['unable_to_parse_date'], $DATE_AT));
+ $DATE_AT = null;
+ }
+ }
+}
+
+//check for existing $REV related to $DATE_AT
+if($DATE_AT) {
+ $pagelog = new PageChangeLog($ID);
+ $rev_t = $pagelog->getLastRevisionAt($DATE_AT);
+ if($rev_t === '') { //current revision
+ $REV = null;
+ $DATE_AT = null;
+ } else if ($rev_t === false) { //page did not exist
+ $rev_n = $pagelog->getRelativeRevision($DATE_AT,+1);
+ msg(sprintf($lang['page_nonexist_rev'],
+ strftime($conf['dformat'],$DATE_AT),
+ wl($ID, array('rev' => $rev_n)),
+ strftime($conf['dformat'],$rev_n)));
+ $REV = $DATE_AT; //will result in a page not exists message
+ } else {
+ $REV = $rev_t;
+ }
+}
+
+//make infos about the selected page available
$INFO = pageinfo();
//export minimal info to JS, plugins can add more
diff --git a/inc/actions.php b/inc/actions.php
index 766c3cd0b..709c19ddd 100644
--- a/inc/actions.php
+++ b/inc/actions.php
@@ -676,7 +676,7 @@ function act_export($act){
$output = p_wiki_xhtml($ID,$REV,false);
break;
default:
- $output = p_cached_output(wikiFN($ID,$REV), $mode);
+ $output = p_cached_output(wikiFN($ID,$REV), $mode, $ID);
$headers = p_get_metadata($ID,"format $mode");
break;
}
diff --git a/inc/auth.php b/inc/auth.php
index 0342de7be..d51534e67 100644
--- a/inc/auth.php
+++ b/inc/auth.php
@@ -338,7 +338,6 @@ function auth_browseruid() {
$ip = clientIP(true);
$uid = '';
$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);
diff --git a/inc/cache.php b/inc/cache.php
index 191d54e45..edf394134 100644
--- a/inc/cache.php
+++ b/inc/cache.php
@@ -50,7 +50,7 @@ class cache {
$this->_addDependencies();
if ($this->_event) {
- return $this->_stats(trigger_event($this->_event,$this,array($this,'_useCache')));
+ return $this->_stats(trigger_event($this->_event, $this, array($this,'_useCache')));
} else {
return $this->_stats($this->_useCache());
}
diff --git a/inc/changelog.php b/inc/changelog.php
index e2826e4b3..cb3cd2aeb 100644
--- a/inc/changelog.php
+++ b/inc/changelog.php
@@ -847,6 +847,25 @@ abstract class ChangeLog {
public function isCurrentRevision($rev) {
return $rev == @filemtime($this->getFilename());
}
+
+ /**
+ * Return an existing revision for a specific date which is
+ * the current one or younger or equal then the date
+ *
+ * @param string $id
+ * @param number $date_at timestamp
+ * @return string revision ('' for current)
+ */
+ function getLastRevisionAt($date_at){
+ //requested date_at(timestamp) younger or equal then modified_time($this->id) => load current
+ if($date_at >= @filemtime($this->getFilename())) {
+ return '';
+ } else if ($rev = $this->getRelativeRevision($date_at+1, -1)) { //+1 to get also the requested date revision
+ return $rev;
+ } else {
+ return false;
+ }
+ }
/**
* Returns the next lines of the changelog of the chunck before head or after tail
@@ -1074,3 +1093,4 @@ function getRevisions($id, $first, $num, $chunk_size = 8192, $media = false) {
}
return $changelog->getRevisions($first, $num);
}
+
diff --git a/inc/common.php b/inc/common.php
index d628ab6b2..b5fdd1ea5 100644
--- a/inc/common.php
+++ b/inc/common.php
@@ -440,6 +440,8 @@ function idfilter($id, $ue = true) {
function wl($id = '', $urlParameters = '', $absolute = false, $separator = '&amp;') {
global $conf;
if(is_array($urlParameters)) {
+ if(isset($urlParameters['rev']) && !$urlParameters['rev']) unset($urlParameters['rev']);
+ if(isset($urlParameters['at']) && $conf['date_at_format']) $urlParameters['at'] = date($conf['date_at_format'],$urlParameters['at']);
$urlParameters = buildURLparams($urlParameters, $separator);
} else {
$urlParameters = str_replace(',', $separator, $urlParameters);
@@ -546,6 +548,7 @@ function ml($id = '', $more = '', $direct = true, $sep = '&amp;', $abs = false)
if(empty($more['w'])) unset($more['w']);
if(empty($more['h'])) unset($more['h']);
if(isset($more['id']) && $direct) unset($more['id']);
+ if(isset($more['rev']) && !$more['rev']) unset($more['rev']);
$more = buildURLparams($more, $sep);
} else {
$matches = array();
diff --git a/inc/compatibility.php b/inc/compatibility.php
index ae780e5ac..cb865a2d7 100644
--- a/inc/compatibility.php
+++ b/inc/compatibility.php
@@ -33,4 +33,50 @@ if(!function_exists('ctype_digit')) {
if(preg_match('/^\d+$/', $text)) return true;
return false;
}
+}
+
+if(!function_exists('gzopen') && function_exists('gzopen64')) {
+ /**
+ * work around for PHP compiled against certain zlib versions #865
+ *
+ * @link http://stackoverflow.com/questions/23417519/php-zlib-gzopen-not-exists
+ *
+ * @param string $filename
+ * @param string $mode
+ * @param int $use_include_path
+ * @return mixed
+ */
+ function gzopen($filename, $mode, $use_include_path = 0) {
+ return gzopen64($filename, $mode, $use_include_path);
+ }
+}
+
+if(!function_exists('gzseek') && function_exists('gzseek64')) {
+ /**
+ * work around for PHP compiled against certain zlib versions #865
+ *
+ * @link http://stackoverflow.com/questions/23417519/php-zlib-gzopen-not-exists
+ *
+ * @param resource $zp
+ * @param int $offset
+ * @param int $whence
+ * @return int
+ */
+ function gzseek($zp, $offset, $whence = SEEK_SET) {
+ return gzseek64($zp, $offset, $whence);
+ }
+}
+
+if(!function_exists('gztell') && function_exists('gztell64')) {
+ /**
+ * work around for PHP compiled against certain zlib versions #865
+ *
+ * @link http://stackoverflow.com/questions/23417519/php-zlib-gzopen-not-exists
+ *
+ * @param resource $zp
+ * @return int
+ */
+ function gztell($zp) {
+ return gztell64($zp);
+ }
} \ No newline at end of file
diff --git a/inc/config_cascade.php b/inc/config_cascade.php
index 2c4f1612b..1d9f67edb 100644
--- a/inc/config_cascade.php
+++ b/inc/config_cascade.php
@@ -8,71 +8,75 @@
$config_cascade = array_merge(
array(
'main' => array(
- 'default' => array(DOKU_CONF.'dokuwiki.php'),
- 'local' => array(DOKU_CONF.'local.php'),
- 'protected' => array(DOKU_CONF.'local.protected.php'),
- ),
- 'acronyms' => array(
- 'default' => array(DOKU_CONF.'acronyms.conf'),
- 'local' => array(DOKU_CONF.'acronyms.local.conf'),
- ),
- 'entities' => array(
- 'default' => array(DOKU_CONF.'entities.conf'),
- 'local' => array(DOKU_CONF.'entities.local.conf'),
- ),
+ 'default' => array(DOKU_CONF . 'dokuwiki.php'),
+ 'local' => array(DOKU_CONF . 'local.php'),
+ 'protected' => array(DOKU_CONF . 'local.protected.php'),
+ ),
+ 'acronyms' => array(
+ 'default' => array(DOKU_CONF . 'acronyms.conf'),
+ 'local' => array(DOKU_CONF . 'acronyms.local.conf'),
+ ),
+ 'entities' => array(
+ 'default' => array(DOKU_CONF . 'entities.conf'),
+ 'local' => array(DOKU_CONF . 'entities.local.conf'),
+ ),
'interwiki' => array(
- 'default' => array(DOKU_CONF.'interwiki.conf'),
- 'local' => array(DOKU_CONF.'interwiki.local.conf'),
- ),
+ 'default' => array(DOKU_CONF . 'interwiki.conf'),
+ 'local' => array(DOKU_CONF . 'interwiki.local.conf'),
+ ),
'license' => array(
- 'default' => array(DOKU_CONF.'license.php'),
- 'local' => array(DOKU_CONF.'license.local.php'),
- ),
+ 'default' => array(DOKU_CONF . 'license.php'),
+ 'local' => array(DOKU_CONF . 'license.local.php'),
+ ),
'mediameta' => array(
- 'default' => array(DOKU_CONF.'mediameta.php'),
- 'local' => array(DOKU_CONF.'mediameta.local.php'),
- ),
- 'mime' => array(
- 'default' => array(DOKU_CONF.'mime.conf'),
- 'local' => array(DOKU_CONF.'mime.local.conf'),
- ),
- 'scheme' => array(
- 'default' => array(DOKU_CONF.'scheme.conf'),
- 'local' => array(DOKU_CONF.'scheme.local.conf'),
- ),
- 'smileys' => array(
- 'default' => array(DOKU_CONF.'smileys.conf'),
- 'local' => array(DOKU_CONF.'smileys.local.conf'),
- ),
+ 'default' => array(DOKU_CONF . 'mediameta.php'),
+ 'local' => array(DOKU_CONF . 'mediameta.local.php'),
+ ),
+ 'mime' => array(
+ 'default' => array(DOKU_CONF . 'mime.conf'),
+ 'local' => array(DOKU_CONF . 'mime.local.conf'),
+ ),
+ 'scheme' => array(
+ 'default' => array(DOKU_CONF . 'scheme.conf'),
+ 'local' => array(DOKU_CONF . 'scheme.local.conf'),
+ ),
+ 'smileys' => array(
+ 'default' => array(DOKU_CONF . 'smileys.conf'),
+ 'local' => array(DOKU_CONF . 'smileys.local.conf'),
+ ),
'wordblock' => array(
- 'default' => array(DOKU_CONF.'wordblock.conf'),
- 'local' => array(DOKU_CONF.'wordblock.local.conf'),
- ),
+ 'default' => array(DOKU_CONF . 'wordblock.conf'),
+ 'local' => array(DOKU_CONF . 'wordblock.local.conf'),
+ ),
'userstyle' => array(
- 'screen' => DOKU_CONF.'userstyle.css',
- 'print' => DOKU_CONF.'userprint.css',
- 'feed' => DOKU_CONF.'userfeed.css',
- 'all' => DOKU_CONF.'userall.css',
- ),
+ 'screen' => DOKU_CONF . 'userstyle.css',
+ 'print' => DOKU_CONF . 'userprint.css',
+ 'feed' => DOKU_CONF . 'userfeed.css',
+ 'all' => DOKU_CONF . 'userall.css',
+ ),
'userscript' => array(
- 'default' => DOKU_CONF.'userscript.js'
- ),
- 'acl' => array(
- 'default' => DOKU_CONF.'acl.auth.php',
- ),
+ 'default' => DOKU_CONF . 'userscript.js'
+ ),
+ 'acl' => array(
+ 'default' => DOKU_CONF . 'acl.auth.php',
+ ),
'plainauth.users' => array(
- 'default' => DOKU_CONF.'users.auth.php',
- ),
-
+ 'default' => DOKU_CONF . 'users.auth.php',
+ ),
'plugins' => array(
- 'default' => array(DOKU_CONF.'plugins.php'),
- 'local' => array(DOKU_CONF.'plugins.local.php'),
+ 'default' => array(DOKU_CONF . 'plugins.php'),
+ 'local' => array(DOKU_CONF . 'plugins.local.php'),
'protected' => array(
- DOKU_CONF.'plugins.required.php',
- DOKU_CONF.'plugins.protected.php',
- ),
+ DOKU_CONF . 'plugins.required.php',
+ DOKU_CONF . 'plugins.protected.php',
),
),
- $config_cascade
+ 'lang' => array(
+ 'core' => array(DOKU_CONF . 'lang/'),
+ 'plugin' => array(DOKU_CONF . 'plugin_lang/'),
+ 'template' => array(DOKU_CONF . 'template_lang/')
+ )
+ ),
+ $config_cascade
);
diff --git a/inc/html.php b/inc/html.php
index 754e08edf..711cd8db6 100644
--- a/inc/html.php
+++ b/inc/html.php
@@ -245,6 +245,7 @@ function html_show($txt=null){
global $REV;
global $HIGH;
global $INFO;
+ global $DATE_AT;
//disable section editing for old revisions or in preview
if($txt || $REV){
$secedit = false;
@@ -264,8 +265,8 @@ function html_show($txt=null){
echo '</div></div>';
}else{
- if ($REV) print p_locale_xhtml('showrev');
- $html = p_wiki_xhtml($ID,$REV,true);
+ if ($REV||$DATE_AT) print p_locale_xhtml('showrev');
+ $html = p_wiki_xhtml($ID,$REV,true,$DATE_AT);
$html = html_secedit($html,$secedit);
if($INFO['prependTOC']) $html = tpl_toc(true).$html;
$html = html_hilight($html,$HIGH);
@@ -344,15 +345,17 @@ function html_hilight_callback($m) {
* @author Andreas Gohr <andi@splitbrain.org>
*/
function html_search(){
- global $QUERY;
+ global $QUERY, $ID;
global $lang;
$intro = p_locale_xhtml('searchpage');
// allow use of placeholder in search intro
+ $pagecreateinfo = (auth_quickaclcheck($ID) >= AUTH_CREATE) ? $lang['searchcreatepage'] : '';
$intro = str_replace(
- array('@QUERY@','@SEARCH@'),
- array(hsc(rawurlencode($QUERY)),hsc($QUERY)),
- $intro);
+ array('@QUERY@', '@SEARCH@', '@CREATEPAGEINFO@'),
+ array(hsc(rawurlencode($QUERY)), hsc($QUERY), $pagecreateinfo),
+ $intro
+ );
echo $intro;
flush();
diff --git a/inc/infoutils.php b/inc/infoutils.php
index 9c297a28d..399963176 100644
--- a/inc/infoutils.php
+++ b/inc/infoutils.php
@@ -20,27 +20,28 @@ function checkUpdateMessages(){
if(!$conf['updatecheck']) return;
if($conf['useacl'] && !$INFO['ismanager']) return;
- $cf = $conf['cachedir'].'/messages.txt';
+ $cf = getCacheName($updateVersion, '.updmsg');
$lm = @filemtime($cf);
// check if new messages needs to be fetched
if($lm < time()-(60*60*24) || $lm < @filemtime(DOKU_INC.DOKU_SCRIPT)){
@touch($cf);
- dbglog("checkUpdateMessages(): downloading messages.txt");
+ dbglog("checkUpdateMessages(): downloading messages to ".$cf);
$http = new DokuHTTPClient();
$http->timeout = 12;
- $data = $http->get(DOKU_MESSAGEURL.$updateVersion);
- if(substr(trim($data), -1) != '%') {
- // this doesn't look like one of our messages, maybe some WiFi login interferred
- $data = '';
- }else {
- io_saveFile($cf,$data);
+ $resp = $http->get(DOKU_MESSAGEURL.$updateVersion);
+ if(is_string($resp) && ($resp == "" || substr(trim($resp), -1) == '%')) {
+ // basic sanity check that this is either an empty string response (ie "no messages")
+ // or it looks like one of our messages, not WiFi login or other interposed response
+ io_saveFile($cf,$resp);
+ } else {
+ dbglog("checkUpdateMessages(): unexpected HTTP response received");
}
}else{
- dbglog("checkUpdateMessages(): messages.txt up to date");
- $data = io_readFile($cf);
+ dbglog("checkUpdateMessages(): messages up to date");
}
+ $data = io_readFile($cf);
// show messages through the usual message mechanism
$msgs = explode("\n%\n",$data);
foreach($msgs as $msg){
@@ -113,13 +114,13 @@ function check(){
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);
+ if(version_compare(phpversion(),'5.3.3','<')){
+ msg('Your PHP version is too old ('.phpversion().' vs. 5.3.3+ needed)',-1);
}else{
msg('PHP version '.phpversion(),1);
}
} else {
- if(version_compare(phpversion(),'5.2.0','<')){
+ if(version_compare(phpversion(),'5.3.3','<')){
msg('Your PHP version is too old',-1);
}
}
diff --git a/inc/init.php b/inc/init.php
index d825b5250..d0d9101e6 100644
--- a/inc/init.php
+++ b/inc/init.php
@@ -178,14 +178,6 @@ $_REQUEST = array_merge($_GET,$_POST);
// we don't want a purge URL to be digged
if(isset($_REQUEST['purge']) && !empty($_SERVER['HTTP_REFERER'])) unset($_REQUEST['purge']);
-// disable gzip if not available
-if($conf['compression'] == 'bz2' && !function_exists('bzopen')){
- $conf['compression'] = 'gz';
-}
-if($conf['compression'] == 'gz' && !function_exists('gzopen')){
- $conf['compression'] = 0;
-}
-
// precalculate file creation modes
init_creationmodes();
@@ -201,6 +193,14 @@ if (empty($plugin_controller_class)) $plugin_controller_class = 'Doku_Plugin_Con
// load libraries
require_once(DOKU_INC.'inc/load.php');
+// disable gzip if not available
+if($conf['compression'] == 'bz2' && !function_exists('bzopen')){
+ $conf['compression'] = 'gz';
+}
+if($conf['compression'] == 'gz' && !function_exists('gzopen')){
+ $conf['compression'] = 0;
+}
+
// input handle class
global $INPUT;
$INPUT = new Input();
@@ -259,17 +259,33 @@ function init_paths(){
$conf['media_changelog'] = $conf['metadir'].'/_media.changes';
}
+/**
+ * Load the language strings
+ *
+ * @param string $langCode language code, as passed by event handler
+ */
function init_lang($langCode) {
//prepare language array
- global $lang;
+ global $lang, $config_cascade;
$lang = array();
//load the language files
require(DOKU_INC.'inc/lang/en/lang.php');
+ foreach ($config_cascade['lang']['core'] as $config_file) {
+ if (@file_exists($config_file . 'en/lang.php')) {
+ include($config_file . 'en/lang.php');
+ }
+ }
+
if ($langCode && $langCode != 'en') {
if (file_exists(DOKU_INC."inc/lang/$langCode/lang.php")) {
require(DOKU_INC."inc/lang/$langCode/lang.php");
}
+ foreach ($config_cascade['lang']['core'] as $config_file) {
+ if (@file_exists($config_file . "$langCode/lang.php")) {
+ include($config_file . "$langCode/lang.php");
+ }
+ }
}
}
diff --git a/inc/lang/ar/lang.php b/inc/lang/ar/lang.php
index 9d192639b..50984e630 100644
--- a/inc/lang/ar/lang.php
+++ b/inc/lang/ar/lang.php
@@ -71,6 +71,7 @@ $lang['badpassconfirm'] = 'عذراً,كلمة السر غير صحيحة
$lang['minoredit'] = 'تعديلات طفيفة';
$lang['draftdate'] = 'حفظ المسودات آليا مفعّل';
$lang['nosecedit'] = 'غُيرت الصفحة في هذه الأثناء، معلومات الجزء اصبحت قديمة. حُمُلت كل الصفحة بدلا.';
+$lang['searchcreatepage'] = 'إن لم تجد ما تبحث عنه، يمكنك إنشاء صفحة جديدة بعنوان ما تبحث عنة بالضغط على زر "حرر هذه الصفحة".';
$lang['regmissing'] = 'عذرا، عليك ملء جميع الحقول.';
$lang['reguexists'] = 'عذرا، يوجد مشترك بنفس الاسم.';
$lang['regsuccess'] = 'أنشئ المستخدم و ارسلت كلمة السر بالبريد.';
diff --git a/inc/lang/ar/searchpage.txt b/inc/lang/ar/searchpage.txt
index 62c05f5e4..56355f85f 100644
--- a/inc/lang/ar/searchpage.txt
+++ b/inc/lang/ar/searchpage.txt
@@ -1,5 +1,5 @@
====== بحث ======
-نتائج البحث . إن لم تجد ما تبحث عنه، يمكنك إنشاء صفحة جديدة بعنوان ما تبحث عنة بالضغط على زر "حرر هذه الصفحة".
+نتائج البحث . @CREATEPAGEINFO@
===== نتائج البحث ===== \ No newline at end of file
diff --git a/inc/lang/az/lang.php b/inc/lang/az/lang.php
index 5edcfbe58..bcec31dae 100644
--- a/inc/lang/az/lang.php
+++ b/inc/lang/az/lang.php
@@ -58,6 +58,7 @@ $lang['badlogin'] = 'Təssüf ki istifadəçi adı və ya şifrə s
$lang['minoredit'] = 'Az dəyişiklər';
$lang['draftdate'] = 'Qaralama yadda saxlandı';
$lang['nosecedit'] = 'Bu vaxt ərzində səhifə dəyişilmişdir, və bölmə haqqında məlumat köhnəlmişdir. Səhifənin tam versiyası yüklənmişdir.';
+$lang['searchcreatepage'] = "Əgər Siz axtardığınızı tapa bilmədinizsə, onda Siz adı axtarışınız ilə uyğun düşən yeni səhifə yarada bilərsiniz. Bunu eləmək üçün, sadəcə ''Səhifəni yarat'' düyməsini sıxın.";
$lang['regmissing'] = 'Təssüf ki Siz bütün xanələri doldurmalısınız.';
$lang['reguexists'] = 'Təssüf ki bu ad ilə istifadəçi artıq mövcuddur.';
$lang['regsuccess'] = 'İstivadəci yaradıldı və şifrə sizin e-maila göndərildi.';
diff --git a/inc/lang/az/searchpage.txt b/inc/lang/az/searchpage.txt
index 4f8efe007..6b7fce754 100644
--- a/inc/lang/az/searchpage.txt
+++ b/inc/lang/az/searchpage.txt
@@ -1,5 +1,5 @@
====== Axtarış ======
-Qarşınızda - axtarışın nəticələridir. Əgər Siz axtardığınızı tapa bilmədinizsə, onda Siz adı axtarışınız ilə uyğun düşən yeni səhifə yarada bilərsiniz. Bunu eləmək üçün, sadəcə ''Səhifəni yarat'' düyməsini sıxın.
+Qarşınızda - axtarışın nəticələridir. @CREATEPAGEINFO@
===== Nəticələr =====
diff --git a/inc/lang/bg/lang.php b/inc/lang/bg/lang.php
index bfa8b2ad7..cfacd09aa 100644
--- a/inc/lang/bg/lang.php
+++ b/inc/lang/bg/lang.php
@@ -66,6 +66,7 @@ $lang['badpassconfirm'] = 'За съжаление паролата е г
$lang['minoredit'] = 'Промените са незначителни';
$lang['draftdate'] = 'Черновата е автоматично записана на';
$lang['nosecedit'] = 'Страницата бе междувременно променена, презареждане на страницата поради неактуална информация.';
+$lang['searchcreatepage'] = 'Ако не намирате каквото сте търсили, може да създадете или редактирате страница, кръстена на вашата заявка, чрез съответния бутон.';
$lang['regmissing'] = 'Моля, попълнете всички полета.';
$lang['reguexists'] = 'Вече съществува потребител с избраното име.';
$lang['regsuccess'] = 'Потребителят е създаден, а паролата е пратена по електронната поща.';
diff --git a/inc/lang/bg/searchpage.txt b/inc/lang/bg/searchpage.txt
index 48d47515a..a44c648ca 100644
--- a/inc/lang/bg/searchpage.txt
+++ b/inc/lang/bg/searchpage.txt
@@ -1,5 +1,5 @@
====== Търсене ======
-Резултата от търсенето ще намерите по-долу. Ако не намирате каквото сте търсили, може да създадете или редактирате страница, кръстена на вашата заявка, чрез съответния бутон.
+Резултата от търсенето ще намерите по-долу. @CREATEPAGEINFO@
===== Резултати =====
diff --git a/inc/lang/ca-valencia/lang.php b/inc/lang/ca-valencia/lang.php
index 98607d322..3a4e30923 100644
--- a/inc/lang/ca-valencia/lang.php
+++ b/inc/lang/ca-valencia/lang.php
@@ -59,6 +59,7 @@ $lang['badlogin'] = 'Disculpe, pero el nom d\'usuari o la contrasen
$lang['minoredit'] = 'Canvis menors';
$lang['draftdate'] = 'Borrador gravat el';
$lang['nosecedit'] = 'La pàgina ha canviat mentres tant, l\'informació de la secció no estava al dia, s\'ha carregat la pàgina sancera.';
+$lang['searchcreatepage'] = 'Si no ha trobat lo que buscava pot crear o editar una pàgina en el mateix nom que el text que ha buscat utilisant el botó corresponent.';
$lang['regmissing'] = 'Disculpe, pero deu omplir tots els camps.';
$lang['reguexists'] = 'Disculpe, pero ya existix un usuari en este nom.';
$lang['regsuccess'] = 'S\'ha creat l\'usuari i se li ha enviat la contrasenya per correu electrònic.';
diff --git a/inc/lang/ca-valencia/searchpage.txt b/inc/lang/ca-valencia/searchpage.txt
index 80f7e9119..7ed3cd2af 100644
--- a/inc/lang/ca-valencia/searchpage.txt
+++ b/inc/lang/ca-valencia/searchpage.txt
@@ -1,5 +1,5 @@
====== Buscar ======
-Pot vore els resultats de la busca ací avall. Si no ha trobat lo que buscava pot crear o editar una pàgina en el mateix nom que el text que ha buscat utilisant el botó corresponent.
+Pot vore els resultats de la busca ací avall. @CREATEPAGEINFO@
===== Resultats =====
diff --git a/inc/lang/ca/lang.php b/inc/lang/ca/lang.php
index 00d28083c..31c16ee23 100644
--- a/inc/lang/ca/lang.php
+++ b/inc/lang/ca/lang.php
@@ -62,6 +62,7 @@ $lang['badlogin'] = 'Nom d\'usuari o contrasenya incorrectes.';
$lang['minoredit'] = 'Canvis menors';
$lang['draftdate'] = 'L\'esborrany s\'ha desat automàticament';
$lang['nosecedit'] = 'Mentrestant la pàgina ha estat modificada. La informació de seccions estava obsoleta i ha calgut carregar la pàgina sencera.';
+$lang['searchcreatepage'] = "Si no trobeu allò que buscàveu, podeu crear una pàgina nova per mitjà del botó ''Edita aquesta pàgina''.";
$lang['regmissing'] = 'Heu d\'omplir tots els camps.';
$lang['reguexists'] = 'Ja existeix un altre usuari amb aquest nom.';
$lang['regsuccess'] = 'S\'ha creat l\'usuari. La contrasenya s\'ha enviat per correu.';
diff --git a/inc/lang/ca/searchpage.txt b/inc/lang/ca/searchpage.txt
index bf69aef15..27efcdabf 100644
--- a/inc/lang/ca/searchpage.txt
+++ b/inc/lang/ca/searchpage.txt
@@ -1,5 +1,5 @@
====== Cerca ======
-Heus ací els resultats de la cerca. Si no trobeu allò que buscàveu, podeu crear una pàgina nova per mitjà del botó ''Edita aquesta pàgina''.
+Heus ací els resultats de la cerca. @CREATEPAGEINFO@
===== Resultats ===== \ No newline at end of file
diff --git a/inc/lang/cs/lang.php b/inc/lang/cs/lang.php
index 4d084d479..ad889f858 100644
--- a/inc/lang/cs/lang.php
+++ b/inc/lang/cs/lang.php
@@ -80,6 +80,7 @@ $lang['badpassconfirm'] = 'Bohužel špatné heslo';
$lang['minoredit'] = 'Drobné změny';
$lang['draftdate'] = 'Koncept automaticky uložen v';
$lang['nosecedit'] = 'Stránka byla v mezičase změněna. Informace o sekci již nebylo platné, byla načtena celá stránka.';
+$lang['searchcreatepage'] = 'Pokud jste nenašli, co hledáte, zkuste požadovanou stránku sami vytvořit stisknutím tlačítka \'\'Vytvořit stránku\'\'.';
$lang['regmissing'] = 'Musíte vyplnit všechny údaje.';
$lang['reguexists'] = 'Uživatel se stejným jménem už je zaregistrován.';
$lang['regsuccess'] = 'Uživatelský účet byl vytvořen a heslo zasláno mailem.';
@@ -199,6 +200,8 @@ $lang['diff_side'] = 'Přidané';
$lang['diffprevrev'] = 'Předchozí verze';
$lang['diffnextrev'] = 'Následující verze';
$lang['difflastrev'] = 'Poslední revize';
+$lang['diffbothprevrev'] = 'Obě strany předchozí revize';
+$lang['diffbothnextrev'] = 'Obě strany příští revize';
$lang['line'] = 'Řádek';
$lang['breadcrumb'] = 'Historie:';
$lang['youarehere'] = 'Umístění:';
@@ -294,6 +297,7 @@ $lang['i_problems'] = 'Instalátor narazil na níže popsané problé
$lang['i_modified'] = 'Instalátor bude z bezpečnostních důvodů pracovat pouze s čistou a ještě neupravenou instalací DokuWiki. Buď znovu rozbalte soubory z instalačního balíčku, nebo zkuste prostudovat <a href="http://dokuwiki.org/install">instrukce pro instalaci DokuWiki</a>.';
$lang['i_funcna'] = 'PHP funkce <code>%s</code> není dostupná. Váš webhosting ji možná z nějakého důvodu vypnul.';
$lang['i_phpver'] = 'Verze vaší instalace PHP <code>%s</code> je nižší než požadovaná <code>%s</code>. Budete muset aktualizovat svou instalaci PHP.';
+$lang['i_mbfuncoverload'] = 'mbstring.func_overload musí být vypnut v php.ini pro běh DokuWiki.';
$lang['i_permfail'] = 'DokuWiki nemůže zapisovat do <code>%s</code>. Budete muset opravit práva k tomuto adresáři.';
$lang['i_confexists'] = '<code>%s</code> již existuje';
$lang['i_writeerr'] = 'Nelze vytvořit <code>%s</code>. Budete muset zkontrolovat práva k souborům či adresářům a vytvořit tento soubor ručně.';
@@ -347,3 +351,5 @@ $lang['currentns'] = 'Aktuální jmenný prostor';
$lang['searchresult'] = 'Výsledek hledání';
$lang['plainhtml'] = 'Čisté HTML';
$lang['wikimarkup'] = 'Wiki jazyk';
+$lang['page_nonexist_rev'] = 'Stránka neexistovala na %s. Byla vytvořena dodatečne na <a href="%s">%s</a>.';
+$lang['unable_to_parse_date'] = 'Nelze rozebrat parametr "%s".';
diff --git a/inc/lang/cs/searchpage.txt b/inc/lang/cs/searchpage.txt
index ac045e100..2f5e89ff6 100644
--- a/inc/lang/cs/searchpage.txt
+++ b/inc/lang/cs/searchpage.txt
@@ -1,5 +1,5 @@
====== Vyhledávání ======
-Výsledky hledání můžete vidět níže. Pokud jste nenašli, co hledáte, zkuste požadovanou stránku sami vytvořit stisknutím tlačítka ''Vytvořit stránku''.
+Výsledky hledání můžete vidět níže. @CREATEPAGEINFO@
===== Výsledky =====
diff --git a/inc/lang/da/lang.php b/inc/lang/da/lang.php
index 3f06bf758..d27f0aa39 100644
--- a/inc/lang/da/lang.php
+++ b/inc/lang/da/lang.php
@@ -76,6 +76,7 @@ $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.';
+$lang['searchcreatepage'] = "Hvis resultaterne ikke indeholder det du søgte efter kan du oprette et nyt dokument med samme navn som søgningen ved at trykke på knappen **''[Opret dette dokument]''**.";
$lang['regmissing'] = 'Du skal udfylde alle felter.';
$lang['reguexists'] = 'Dette brugernavn er allerede i brug.';
$lang['regsuccess'] = 'Du er nu oprettet som bruger. Dit adgangskode bliver sendt til dig i en e-mail.';
diff --git a/inc/lang/da/searchpage.txt b/inc/lang/da/searchpage.txt
index eca1b589c..9cefd419c 100644
--- a/inc/lang/da/searchpage.txt
+++ b/inc/lang/da/searchpage.txt
@@ -1,5 +1,5 @@
====== Søgning ======
-Du kan se resultaterne af din søgning nedenunder. Hvis resultaterne ikke indeholder det du søgte efter kan du oprette et nyt dokument med samme navn som søgningen ved at trykke på knappen **''[Opret dette dokument]''**.
+Du kan se resultaterne af din søgning nedenunder. @CREATEPAGEINFO@
===== Søgeresultater =====
diff --git a/inc/lang/de-informal/lang.php b/inc/lang/de-informal/lang.php
index c81109580..1a1491f6b 100644
--- a/inc/lang/de-informal/lang.php
+++ b/inc/lang/de-informal/lang.php
@@ -81,6 +81,7 @@ $lang['badpassconfirm'] = 'Das Passwort war falsch.';
$lang['minoredit'] = 'Kleine Änderung';
$lang['draftdate'] = 'Entwurf gespeichert am';
$lang['nosecedit'] = 'Diese Seite wurde in der Zwischenzeit geändert, da das Sektionsinfo veraltet ist. Die ganze Seite wird stattdessen geladen.';
+$lang['searchcreatepage'] = "Falls der gesuchte Begriff nicht gefunden wurde, kannst du direkt eine neue Seite für den Suchbegriff anlegen, indem du auf den Knopf **''[Seite anlegen]''** drückst.";
$lang['regmissing'] = 'Alle Felder müssen ausgefüllt werden';
$lang['reguexists'] = 'Der Benutzername existiert leider schon.';
$lang['regsuccess'] = 'Der neue Benutzer wurde angelegt und das Passwort per E-Mail versandt.';
diff --git a/inc/lang/de-informal/searchpage.txt b/inc/lang/de-informal/searchpage.txt
index 72c57b765..e78e4abdd 100644
--- a/inc/lang/de-informal/searchpage.txt
+++ b/inc/lang/de-informal/searchpage.txt
@@ -1,6 +1,6 @@
====== Suche ======
-Unten sind die Ergebnisse deiner Suche gelistet. Falls der gesuchte Begriff nicht gefunden wurde, kannst du direkt eine neue Seite für den Suchbegriff anlegen, indem du auf den Knopf **''[Seite anlegen]''** drückst.
+Unten sind die Ergebnisse deiner Suche gelistet. @CREATEPAGEINFO@
===== Ergebnisse =====
diff --git a/inc/lang/de/lang.php b/inc/lang/de/lang.php
index 183571681..2725c247a 100644
--- a/inc/lang/de/lang.php
+++ b/inc/lang/de/lang.php
@@ -27,6 +27,7 @@
* @author Simon <st103267@stud.uni-stuttgart.de>
* @author Hoisl <hoisl@gmx.at>
* @author Marcel Eickhoff <eickhoff.marcel@gmail.com>
+ * @author Pascal Schröder <Pascal1802@gmail.com>
*/
$lang['encoding'] = 'utf-8';
$lang['direction'] = 'ltr';
@@ -88,6 +89,7 @@ $lang['badpassconfirm'] = 'Das Passwort war falsch.';
$lang['minoredit'] = 'kleine Änderung';
$lang['draftdate'] = 'Entwurf gespeichert am';
$lang['nosecedit'] = 'Diese Seite wurde in der Zwischenzeit geändert, Sektionsinfo ist veraltet, lade stattdessen volle Seite.';
+$lang['searchcreatepage'] = 'Falls der gesuchte Begriff nicht gefunden wurde, können Sie direkt eine neue Seite für den Suchbegriff anlegen, indem Sie auf den **\'\'[Seite anlegen]\'\'** Knopf drücken.';
$lang['regmissing'] = 'Alle Felder müssen ausgefüllt werden.';
$lang['reguexists'] = 'Der Benutzername existiert leider schon.';
$lang['regsuccess'] = 'Der neue Benutzer wurde angelegt und das Passwort per E-Mail versandt.';
@@ -205,6 +207,8 @@ $lang['diff_side'] = 'Side by Side';
$lang['diffprevrev'] = 'Vorhergehende Überarbeitung';
$lang['diffnextrev'] = 'Nächste Überarbeitung';
$lang['difflastrev'] = 'Letzte Überarbeitung';
+$lang['diffbothprevrev'] = 'Beide Seiten der vorigen Revision';
+$lang['diffbothnextrev'] = 'Beide Seiten der Revision';
$lang['line'] = 'Zeile';
$lang['breadcrumb'] = 'Zuletzt angesehen:';
$lang['youarehere'] = 'Sie befinden sich hier:';
@@ -354,3 +358,5 @@ $lang['currentns'] = 'Aktueller Namensraum';
$lang['searchresult'] = 'Suchergebnisse';
$lang['plainhtml'] = 'HTML Klartext';
$lang['wikimarkup'] = 'Wiki Markup';
+$lang['page_nonexist_rev'] = 'DIe Seite exitiert nicht unter %s. Sie wurde aber unter <a herf="%s">%s</a>';
+$lang['unable_to_parse_date'] = 'Parameter "%s" kann nicht geparsed werden.';
diff --git a/inc/lang/de/searchpage.txt b/inc/lang/de/searchpage.txt
index 56104551b..6cd8006ac 100644
--- a/inc/lang/de/searchpage.txt
+++ b/inc/lang/de/searchpage.txt
@@ -1,6 +1,6 @@
====== Suche ======
-Unten sind die Ergebnisse Ihrer Suche gelistet. Falls der gesuchte Begriff nicht gefunden wurde, können Sie direkt eine neue Seite für den Suchbegriff anlegen, indem Sie auf den **''[Seite anlegen]''** Knopf drücken.
+Unten sind die Ergebnisse Ihrer Suche gelistet. @CREATEPAGEINFO@
===== Ergebnisse =====
diff --git a/inc/lang/el/searchpage.txt b/inc/lang/el/searchpage.txt
index b52162b60..c5bbbbfae 100644
--- a/inc/lang/el/searchpage.txt
+++ b/inc/lang/el/searchpage.txt
@@ -1,4 +1,4 @@
====== Αναζήτηση ======
-Τα αποτελέσματα της αναζήτησής σας:
+Τα αποτελέσματα της αναζήτησής σας. @CREATEPAGEINFO@
diff --git a/inc/lang/en/lang.php b/inc/lang/en/lang.php
index 9c1e5dacd..fb455f85f 100644
--- a/inc/lang/en/lang.php
+++ b/inc/lang/en/lang.php
@@ -70,6 +70,7 @@ $lang['badpassconfirm'] = 'Sorry, the password was wrong';
$lang['minoredit'] = 'Minor Changes';
$lang['draftdate'] = 'Draft autosaved on'; // full dformat date will be added
$lang['nosecedit'] = 'The page was changed in the meantime, section info was out of date loaded full page instead.';
+$lang['searchcreatepage'] = 'If you didn\'t find what you were looking for, you can create or edit the page named after your query with the appropriate tool.';
$lang['regmissing'] = 'Sorry, you must fill in all fields.';
$lang['reguexists'] = 'Sorry, a user with this login already exists.';
@@ -367,4 +368,6 @@ $lang['currentns'] = 'Current namespace';
$lang['searchresult'] = 'Search Result';
$lang['plainhtml'] = 'Plain HTML';
$lang['wikimarkup'] = 'Wiki Markup';
+$lang['page_nonexist_rev'] = 'Page did not exist at %s. It was subsequently created at <a href="%s">%s</a>.';
+$lang['unable_to_parse_date'] = 'Unable to parse at parameter "%s".';
//Setup VIM: ex: et ts=2 :
diff --git a/inc/lang/en/searchpage.txt b/inc/lang/en/searchpage.txt
index 50578db3f..ba0960aa6 100644
--- a/inc/lang/en/searchpage.txt
+++ b/inc/lang/en/searchpage.txt
@@ -1,5 +1,5 @@
====== Search ======
-You can find the results of your search below. If you didn't find what you were looking for, you can create or edit the page named after your query with the appropriate tool.
+You can find the results of your search below. @CREATEPAGEINFO@
===== Results =====
diff --git a/inc/lang/eo/lang.php b/inc/lang/eo/lang.php
index f81de7fa1..0cb84a2de 100644
--- a/inc/lang/eo/lang.php
+++ b/inc/lang/eo/lang.php
@@ -71,6 +71,7 @@ $lang['badpassconfirm'] = 'Pardonu, la pasvorto malĝustis';
$lang['minoredit'] = 'Etaj modifoj';
$lang['draftdate'] = 'Lasta konservo de la skizo:';
$lang['nosecedit'] = 'La paĝo ŝanĝiĝis intertempe, sekcio-informo estis malĝisdata, tial la tuta paĝo estas reŝargita.';
+$lang['searchcreatepage'] = 'Se vi ne trovis tion, kion vi serĉis, vi povas krei novan paĝon kun necesa nomo per la koresponda butono.';
$lang['regmissing'] = 'Pardonu, vi devas plenigi ĉiujn kampojn.';
$lang['reguexists'] = 'Pardonu, ĉi tiu uzanto-nomo jam ekzistas.';
$lang['regsuccess'] = 'La uzanto kreiĝis kaj la pasvorto sendiĝis per retpoŝto.';
diff --git a/inc/lang/eo/searchpage.txt b/inc/lang/eo/searchpage.txt
index a940c503d..bdefe7b59 100644
--- a/inc/lang/eo/searchpage.txt
+++ b/inc/lang/eo/searchpage.txt
@@ -1,5 +1,5 @@
====== Serĉo ======
-Sube estas rezultoj de serĉo en la retejo.\\ Se vi ne trovis tion, kion vi serĉis, vi povas krei novan paĝon kun necesa nomo per la koresponda butono.
+Sube estas rezultoj de serĉo en la retejo.\\ @CREATEPAGEINFO@
===== Rezultoj =====
diff --git a/inc/lang/es/lang.php b/inc/lang/es/lang.php
index 47bee3b6f..8f4cb2977 100644
--- a/inc/lang/es/lang.php
+++ b/inc/lang/es/lang.php
@@ -98,6 +98,7 @@ $lang['badpassconfirm'] = 'Lo siento, la contraseña es errónea';
$lang['minoredit'] = 'Cambios menores';
$lang['draftdate'] = 'Borrador guardado automáticamente:';
$lang['nosecedit'] = 'La página ha cambiado en el lapso, la información de sección estaba anticuada, en su lugar se cargó la página completa.';
+$lang['searchcreatepage'] = "Si no has encontrado lo que buscabas, puedes crear una nueva página con tu consulta utilizando el botón ''Crea esta página''.";
$lang['regmissing'] = 'Lo siento, tienes que completar todos los campos.';
$lang['reguexists'] = 'Lo siento, ya existe un usuario con este nombre.';
$lang['regsuccess'] = 'El usuario ha sido creado y la contraseña se ha enviado por correo.';
diff --git a/inc/lang/es/searchpage.txt b/inc/lang/es/searchpage.txt
index 47a1a90dd..819815b15 100644
--- a/inc/lang/es/searchpage.txt
+++ b/inc/lang/es/searchpage.txt
@@ -1,5 +1,5 @@
====== Búsqueda ======
-Puedes encontrar los resultados de tu búsqueda abajo. Si no has encontrado lo que buscabas, puedes crear una nueva página con tu consulta utilizando el botón ''Crea esta página''.
+Puedes encontrar los resultados de tu búsqueda abajo. @CREATEPAGEINFO@
===== Resultados ===== \ No newline at end of file
diff --git a/inc/lang/et/lang.php b/inc/lang/et/lang.php
index 9ae06d7d2..d3c510c43 100644
--- a/inc/lang/et/lang.php
+++ b/inc/lang/et/lang.php
@@ -69,6 +69,7 @@ $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['searchcreatepage'] = "Kui Sa otsitavat ei leidnud võid tekitada oma otsingu nimelise uue lehe kasutades ''Toimeta seda lehte'' nuppu.";
$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.';
diff --git a/inc/lang/et/searchpage.txt b/inc/lang/et/searchpage.txt
index bbc86b637..6ba57324a 100644
--- a/inc/lang/et/searchpage.txt
+++ b/inc/lang/et/searchpage.txt
@@ -1,5 +1,5 @@
====== Otsi ======
-Leiad vasted oma otsingule. Kui Sa otsitavat ei leidnud võid tekitada oma otsingu nimelise uue lehe kasutades ''Toimeta seda lehte'' nuppu.
+Leiad vasted oma otsingule. @CREATEPAGEINFO@
===== Vasted =====
diff --git a/inc/lang/eu/lang.php b/inc/lang/eu/lang.php
index 0c996feaf..fcf45b946 100644
--- a/inc/lang/eu/lang.php
+++ b/inc/lang/eu/lang.php
@@ -1,11 +1,12 @@
<?php
+
/**
- * Basque language file
- *
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
* @author Xabi Ezpeleta <xezpeleta@mendikute.com>
* @author Inko Illarramendi <inko.i.a@gmail.com>
* @author Zigor Astarbe <astarbe@gmail.com>
+ * @author Yadav Gowda <yadav.gowda@gmail.com>
*/
$lang['encoding'] = 'utf-8';
$lang['direction'] = 'ltr';
@@ -49,6 +50,9 @@ $lang['btn_revert'] = 'Berrezarri';
$lang['btn_register'] = 'Erregistratu';
$lang['btn_apply'] = 'Baieztatu';
$lang['btn_media'] = 'Media Kudeatzailea';
+$lang['btn_deleteuser'] = 'Nire kontua kendu';
+$lang['btn_img_backto'] = 'Atzera hona %s';
+$lang['btn_mediaManager'] = 'Media kudeatzailean ikusi';
$lang['loggedinas'] = 'Erabiltzailea:';
$lang['user'] = 'Erabiltzailea';
$lang['pass'] = 'Pasahitza';
@@ -63,6 +67,7 @@ $lang['badlogin'] = 'Barkatu, prozesuak huts egin du; saiatu berriz
$lang['minoredit'] = 'Aldaketa Txikiak';
$lang['draftdate'] = 'Zirriborroa automatikoki gorde da hemen:';
$lang['nosecedit'] = 'Orria aldatua izan da bitartean, info atala zaharkituta geratu da, orri osoa kargatu da horren ordez.';
+$lang['searchcreatepage'] = 'Bilatzen zabiltzana aurkitu ez baduzu, zuk zeuk sortu dezakezu orri berri bat bilaketa ostean \'\'Sortu orri hau\'\' erabiliz.';
$lang['regmissing'] = 'Barkatu, hutsune guztiak bete behar dituzu.';
$lang['reguexists'] = 'Barkatu, izen bereko erabiltzailea existitzen da.';
$lang['regsuccess'] = 'Erabiltzailea sortu da. Pasahitza mailez bidaliko zaizu.';
@@ -76,6 +81,7 @@ $lang['profna'] = 'Wiki honek ez du profilaren aldaketa ahalbidet
$lang['profnochange'] = 'Aldaketarik ez, ez dago egiteko ezer.';
$lang['profnoempty'] = 'Izen edota e-posta hutsa ez dago onartua.';
$lang['profchanged'] = 'Erabiltzaile profila arrakastaz eguneratua.';
+$lang['profdeleteuser'] = 'Kontua ezabatu';
$lang['pwdforget'] = 'Pasahitza ahaztu duzu? Eskuratu berri bat';
$lang['resendna'] = 'Wiki honek ez du pasahitz berbidalketa onartzen.';
$lang['resendpwd'] = '-entzat pasahitza berria ezarri';
@@ -227,7 +233,6 @@ $lang['admin_register'] = 'Erabiltzaile berria gehitu';
$lang['metaedit'] = 'Metadatua Aldatu';
$lang['metasaveerr'] = 'Metadatuaren idazketak huts egin du';
$lang['metasaveok'] = 'Metadatua gordea';
-$lang['btn_img_backto'] = 'Atzera hona %s';
$lang['img_title'] = 'Izenburua:';
$lang['img_caption'] = 'Epigrafea:';
$lang['img_date'] = 'Data:';
@@ -240,7 +245,6 @@ $lang['img_camera'] = 'Kamera:';
$lang['img_keywords'] = 'Hitz-gakoak:';
$lang['img_width'] = 'Zabalera:';
$lang['img_height'] = 'Altuera:';
-$lang['btn_mediaManager'] = 'Media kudeatzailean ikusi';
$lang['subscr_subscribe_success'] = '%s gehitua %s-ren harpidetza zerrendara';
$lang['subscr_subscribe_error'] = 'Errorea %s gehitzen %s-ren harpidetza zerrendara';
$lang['subscr_subscribe_noaddress'] = 'Ez dago helbiderik zure login-arekin lotuta, ezin zara harpidetza zerrendara gehitua izan.';
diff --git a/inc/lang/eu/searchpage.txt b/inc/lang/eu/searchpage.txt
index 2a487a3bb..c632305b9 100644
--- a/inc/lang/eu/searchpage.txt
+++ b/inc/lang/eu/searchpage.txt
@@ -1,5 +1,5 @@
====== Bilaketa ======
-Emaitzak ondorengo aurkiketan bilatu ditzakezu. Bilatzen zabiltzana aurkitu ez baduzu, zuk zeuk sortu dezakezu orri berri bat bilaketa ostean ''Sortu orri hau'' erabiliz.
+Emaitzak ondorengo aurkiketan bilatu ditzakezu. @CREATEPAGEINFO@
===== Bilaketa emaitzak: =====
diff --git a/inc/lang/fa/lang.php b/inc/lang/fa/lang.php
index 96ffcaf90..25de5c92e 100644
--- a/inc/lang/fa/lang.php
+++ b/inc/lang/fa/lang.php
@@ -13,6 +13,8 @@
* @author reza_khn <reza_khn@yahoo.com>
* @author Hamid <zarrabi@sharif.edu>
* @author Mohamad Mehdi Habibi <habibi.esf@gmail.com>
+ * @author Mohammad Sadegh <msdn2013@gmail.com>
+ * @author Omid Hezaveh <hezpublic@gmail.com>
*/
$lang['encoding'] = 'utf-8';
$lang['direction'] = 'rtl';
@@ -74,6 +76,7 @@ $lang['badpassconfirm'] = 'متاسفم ، رمز عبور اشتباه
$lang['minoredit'] = 'این ویرایش خُرد است';
$lang['draftdate'] = 'ذخیره خودکار پیش‌نویس';
$lang['nosecedit'] = 'این صفحه در این میان تغییر کرده است، اطلاعات بخش قدیمی شده است، در عوض محتوای کل نمایش داده می‌شود.';
+$lang['searchcreatepage'] = 'اگر به نتیجه‌ی مطلوبی نرسیده‌اید، می‌توانید صفحه‌ی مورد نظر را ایجاد کنید.';
$lang['regmissing'] = 'متاسفم، شما باید همه قسمت‌ها را پر کنید.';
$lang['reguexists'] = 'نام کاربری‌ای که وارد کردید قبلن استفاده شده است. خواهشمندیم یک نام دیگر انتخاب کنید.';
$lang['regsuccess'] = 'کاربر ساخته شد و گذرواژه به صورت ایمیل ارسال گردید.';
diff --git a/inc/lang/fa/searchpage.txt b/inc/lang/fa/searchpage.txt
index 3f0378ed3..f7f1a5309 100644
--- a/inc/lang/fa/searchpage.txt
+++ b/inc/lang/fa/searchpage.txt
@@ -1,5 +1,5 @@
====== جستجو ======
-نتایج جستجو در زیر آمده است. اگر به نتیجه‌ی مطلوبی نرسیده‌اید، می‌توانید صفحه‌ی مورد نظر را ایجاد کنید.
+نتایج جستجو در زیر آمده است. @CREATEPAGEINFO@
===== نتایج ===== \ No newline at end of file
diff --git a/inc/lang/fi/lang.php b/inc/lang/fi/lang.php
index 0f82c3b7a..4856efe33 100644
--- a/inc/lang/fi/lang.php
+++ b/inc/lang/fi/lang.php
@@ -68,6 +68,7 @@ $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.';
+$lang['searchcreatepage'] = "Jos et löytänyt etsimääsi voit luoda uuden sivun tiedustelusi pohjalta käyttämällä ''Muokkaa tätä sivua'' -napilla.";
$lang['regmissing'] = 'Kaikki kentät tulee täyttää.';
$lang['reguexists'] = 'Käyttäjä tällä käyttäjänimellä on jo olemassa.';
$lang['regsuccess'] = 'Käyttäjä luotiin ja salasana lähetettiin sähköpostilla.';
diff --git a/inc/lang/fi/searchpage.txt b/inc/lang/fi/searchpage.txt
index aa9fbf52f..b2ad8cc98 100644
--- a/inc/lang/fi/searchpage.txt
+++ b/inc/lang/fi/searchpage.txt
@@ -1,5 +1,5 @@
====== Etsi ======
-Löydät etsinnän tulokset alta. Jos et löytänyt etsimääsi voit luoda uuden sivun tiedustelusi pohjalta käyttämällä ''Muokkaa tätä sivua'' -napilla.
+Löydät etsinnän tulokset alta. @CREATEPAGEINFO@
===== Tulokset =====
diff --git a/inc/lang/fo/lang.php b/inc/lang/fo/lang.php
index b326d27ac..0aee76e01 100644
--- a/inc/lang/fo/lang.php
+++ b/inc/lang/fo/lang.php
@@ -59,6 +59,7 @@ $lang['badlogin'] = 'Skeivt brúkaranavn ella loyniorð.';
$lang['minoredit'] = 'Smærri broytingar';
$lang['draftdate'] = 'Goym kladdu sett frá';
$lang['nosecedit'] = 'Hendan síðan var broytt undir tilevnan, brotið var ikki rætt dagfest, heintaði fulla síðu í staðin';
+$lang['searchcreatepage'] = "Um úrslitini ikki innihalda tað sum tú leitaði eftir kanst tú upprætta eitt nýtt skjal við sama navni sum leitingin við at trýsta á **''[Upprætta hetta skjal]''** knappin.";
$lang['regmissing'] = 'Tú skalt fylla út øll øki.';
$lang['reguexists'] = 'Hetta brúkaranavn er upptiki.';
$lang['regsuccess'] = 'Tú ert nú stovnavur sum brúkari. Títt loyniorð verður sent til tín í einum T-posti.';
diff --git a/inc/lang/fo/searchpage.txt b/inc/lang/fo/searchpage.txt
index 6304a8901..33bcc3206 100644
--- a/inc/lang/fo/searchpage.txt
+++ b/inc/lang/fo/searchpage.txt
@@ -1,5 +1,5 @@
====== Leiting ======
-Tú kanst síggja úrslitini av tíni leiting niðanfyri. Um úrslitini ikki innihalda tað sum tú leitaði eftir kanst tú upprætta eitt nýtt skjal við sama navni sum leitingin við at trýsta á **''[Upprætta hetta skjal]''** knappin.
+Tú kanst síggja úrslitini av tíni leiting niðanfyri. @CREATEPAGEINFO@
===== Leitiúrslit =====
diff --git a/inc/lang/fr/lang.php b/inc/lang/fr/lang.php
index a7651e730..7a9b82158 100644
--- a/inc/lang/fr/lang.php
+++ b/inc/lang/fr/lang.php
@@ -35,6 +35,7 @@
* @author Caillot <remicaillot5@gmail.com>
* @author Schplurtz le Déboulonné <schplurtz@laposte.net>
* @author YoBoY <yoboy@ubuntu-fr.org>
+ * @author james <j.mccann@celcat.com>
*/
$lang['encoding'] = 'utf-8';
$lang['direction'] = 'ltr';
@@ -77,7 +78,7 @@ $lang['btn_draftdel'] = 'Effacer le brouillon';
$lang['btn_revert'] = 'Restaurer';
$lang['btn_register'] = 'Créer un compte';
$lang['btn_apply'] = 'Appliquer';
-$lang['btn_media'] = 'Gestionnaire de médias';
+$lang['btn_media'] = 'Gestionnaire Multimédia';
$lang['btn_deleteuser'] = 'Supprimer mon compte';
$lang['btn_img_backto'] = 'Retour vers %s';
$lang['btn_mediaManager'] = 'Voir dans le gestionnaire de médias';
@@ -96,6 +97,7 @@ $lang['badpassconfirm'] = 'Désolé, le mot de passe est erroné';
$lang['minoredit'] = 'Modification mineure';
$lang['draftdate'] = 'Brouillon enregistré automatiquement le';
$lang['nosecedit'] = 'La page a changé entre temps, les informations de la section sont obsolètes ; la page complète a été chargée à la place.';
+$lang['searchcreatepage'] = 'Si vous n\'avez pas trouvé ce que vous cherchiez, vous pouvez créer ou modifier la page correspondante à votre requête en cliquant sur le bouton approprié.';
$lang['regmissing'] = 'Désolé, vous devez remplir tous les champs.';
$lang['reguexists'] = 'Désolé, ce nom d\'utilisateur est déjà pris.';
$lang['regsuccess'] = 'L\'utilisateur a été créé. Le mot de passe a été expédié par courriel.';
diff --git a/inc/lang/fr/searchpage.txt b/inc/lang/fr/searchpage.txt
index a9bd91608..5577a3a2a 100644
--- a/inc/lang/fr/searchpage.txt
+++ b/inc/lang/fr/searchpage.txt
@@ -1,5 +1,5 @@
====== Recherche ======
-Voici les résultats de votre recherche. Si vous n'avez pas trouvé ce que vous cherchiez, vous pouvez créer ou modifier la page correspondante à votre requête en cliquant sur le bouton approprié.
+Voici les résultats de votre recherche. @CREATEPAGEINFO@
===== Résultats =====
diff --git a/inc/lang/gl/lang.php b/inc/lang/gl/lang.php
index aed225359..82cbbbfab 100644
--- a/inc/lang/gl/lang.php
+++ b/inc/lang/gl/lang.php
@@ -63,6 +63,7 @@ $lang['badlogin'] = 'Sentímolo, mais o nome de usuario ou o contra
$lang['minoredit'] = 'Trocos Menores';
$lang['draftdate'] = 'Borrador gardado automaticamente en';
$lang['nosecedit'] = 'A páxina mudou entrementres, a información da sección estaba desfasada polo que se cargou a páxina completa no seu lugar.';
+$lang['searchcreatepage'] = "Se non atopaches o que estabas a procurar, podes crear ou editar a páxina co nome relacionado coa túa procura empregando o botón axeitado.";
$lang['regmissing'] = 'Sentímolo, mais tes que cubrir todos os campos.';
$lang['reguexists'] = 'Sentímolo, mais xa existe un usuario con ese nome.';
$lang['regsuccess'] = 'O usuario foi creado e o contrasinal enviado por correo-e.';
diff --git a/inc/lang/gl/searchpage.txt b/inc/lang/gl/searchpage.txt
index 227ca5dbc..e37ec4642 100644
--- a/inc/lang/gl/searchpage.txt
+++ b/inc/lang/gl/searchpage.txt
@@ -1,5 +1,5 @@
====== Procura ======
-Podes atopar os resultados da túa procura a continuación. Se non atopaches o que estabas a procurar, podes crear ou editar a páxina co nome relacionado coa túa procura empregando o botón axeitado.
+Podes atopar os resultados da túa procura a continuación. @CREATEPAGEINFO@
===== Resultados =====
diff --git a/inc/lang/he/lang.php b/inc/lang/he/lang.php
index 101102b48..5e2ecbdff 100644
--- a/inc/lang/he/lang.php
+++ b/inc/lang/he/lang.php
@@ -72,6 +72,7 @@ $lang['badpassconfirm'] = 'מצטערים, הסיסמה שגויה';
$lang['minoredit'] = 'שינוים מזעריים';
$lang['draftdate'] = 'הטיוטה נשמרה אוטומטית ב־';
$lang['nosecedit'] = 'הדף השתנה בינתיים, הקטע שערכת אינו מעודכן - העמוד כולו נטען במקום זאת.';
+$lang['searchcreatepage'] = 'אם לא נמצאו דפים בחיפוש, לחיצה על הכפתור "עריכה" תיצור דף חדש על שם מילת החיפוש שהוזנה.';
$lang['regmissing'] = 'עליך למלא את כל השדות, עמך הסליחה.';
$lang['reguexists'] = 'משתמש בשם זה כבר נרשם, עמך הסליחה.';
$lang['regsuccess'] = 'ההרשמה הצליחה, המשתמש נרשם והודעה נשלחה בדוא״ל.';
diff --git a/inc/lang/he/searchpage.txt b/inc/lang/he/searchpage.txt
index aed23be24..78839c371 100644
--- a/inc/lang/he/searchpage.txt
+++ b/inc/lang/he/searchpage.txt
@@ -1,5 +1,5 @@
====== חיפוש ======
-ניתן לראות את תוצאות החיפוש למטה. אם לא נמצאו דפים בחיפוש, לחיצה על הכפתור "עריכה" תיצור דף חדש על שם מילת החיפוש שהוזנה.
+ניתן לראות את תוצאות החיפוש למטה. @CREATEPAGEINFO@
===== תוצאות ===== \ No newline at end of file
diff --git a/inc/lang/hr/lang.php b/inc/lang/hr/lang.php
index 69157015b..c3cf6d822 100644
--- a/inc/lang/hr/lang.php
+++ b/inc/lang/hr/lang.php
@@ -62,13 +62,14 @@ $lang['oldpass'] = 'Potvrdi trenutnu lozinku';
$lang['passchk'] = 'još jednom';
$lang['remember'] = 'Zapamti me';
$lang['fullname'] = 'Ime i prezime';
-$lang['email'] = 'Email';
+$lang['email'] = 'E-pošta';
$lang['profile'] = 'Korisnički profil';
$lang['badlogin'] = 'Ne ispravno korisničko ime ili lozinka.';
$lang['badpassconfirm'] = 'Nažalost, lozinka nije ispravna';
$lang['minoredit'] = 'Manje izmjene';
$lang['draftdate'] = 'Nacrt promjena automatski spremljen u';
$lang['nosecedit'] = 'Stranica se u međuvremenu promijenila. Informacija o odjeljku je ostarila pa je učitana kompletna stranica.';
+$lang['searchcreatepage'] = 'Ako ne možete naći što tražite, možete urediti ili stvoriti novu stranicu s odgovarajućim alatom.';
$lang['regmissing'] = 'Morate popuniti sva polja.';
$lang['reguexists'] = 'Korisnik s tim korisničkim imenom već postoji.';
$lang['regsuccess'] = 'Korisnik je uspješno stvoren i poslana je lozinka emailom.';
@@ -99,8 +100,8 @@ $lang['license'] = 'Osim na mjestima gdje je naznačeno drugačije
$lang['licenseok'] = 'Pažnja: promjenom ovog dokumenta pristajete licencirati sadržaj sljedećom licencom: ';
$lang['searchmedia'] = 'Traži naziv datoteke:';
$lang['searchmedia_in'] = 'Traži u %s';
-$lang['txt_upload'] = 'Odaberite datoteku za postavljanje:';
-$lang['txt_filename'] = 'Postaviti kao (nije obavezno):';
+$lang['txt_upload'] = 'Odaberite datoteku za učitavanje:';
+$lang['txt_filename'] = 'Učitaj kao (nije obavezno):';
$lang['txt_overwrt'] = 'Prepiši postojeću datoteku';
$lang['maxuploadsize'] = 'Moguće je učitati maks. %s po datoteci.';
$lang['lockedby'] = 'Trenutno zaključao:';
@@ -155,7 +156,7 @@ $lang['uploadsucc'] = 'Učitavanje uspješno';
$lang['uploadfail'] = 'Neuspješno učitavanje. Možda dozvole na poslužitelju nisu ispravne?';
$lang['uploadwrong'] = 'Učitavanje nije dopušteno. Nastavak datoteke je zabranjen!';
$lang['uploadexist'] = 'Datoteka već postoji.';
-$lang['uploadbadcontent'] = 'Postavljeni sadržaj ne odgovara ekstenziji %s datoteke.';
+$lang['uploadbadcontent'] = 'Učitani sadržaj ne odgovara ekstenziji %s datoteke.';
$lang['uploadspam'] = 'Učitavanje je spriječeno od spam crne liste.';
$lang['uploadxss'] = 'Učitavanje je spriječeno zbog mogućeg zlonamjernog sadržaja.';
$lang['uploadsize'] = 'Učitana datoteka je prevelika (max. %s)';
@@ -190,7 +191,7 @@ $lang['difflastrev'] = 'Zadnja izmjena';
$lang['diffbothprevrev'] = 'Starije izmjene na obje strane';
$lang['diffbothnextrev'] = 'Novije izmjene na obje strane';
$lang['line'] = 'Redak';
-$lang['breadcrumb'] = 'Putanja:';
+$lang['breadcrumb'] = 'Zadnje viđeno:';
$lang['youarehere'] = 'Vi ste ovdje:';
$lang['lastmod'] = 'Zadnja izmjena:';
$lang['by'] = 'od';
@@ -211,7 +212,7 @@ $lang['mail_newpage'] = 'stranica dodana:';
$lang['mail_changed'] = 'stranica izmjenjena:';
$lang['mail_subscribe_list'] = 'stranice promijenjene u imenskom prostoru:';
$lang['mail_new_user'] = 'novi korisnik:';
-$lang['mail_upload'] = 'datoteka postavljena:';
+$lang['mail_upload'] = 'datoteka učitana:';
$lang['changes_type'] = 'Vidi promjene od';
$lang['pages_changes'] = 'Stranice';
$lang['media_changes'] = 'Datoteke';
@@ -276,7 +277,7 @@ $lang['subscr_style_list'] = 'listu promijenjenih stranica od zadnje primlje
$lang['authtempfail'] = 'Autentifikacija korisnika je privremeno nedostupna. Molimo Vas da kontaktirate administratora.';
$lang['authpwdexpire'] = 'Vaša lozinka će isteći za %d dana, trebate ju promijeniti.';
$lang['i_chooselang'] = 'Izaberite vaš jezik';
-$lang['i_installer'] = 'DokuWiki instalacija';
+$lang['i_installer'] = 'DokuWiki postavljanje';
$lang['i_wikiname'] = 'Naziv Wikija';
$lang['i_enableacl'] = 'Omogući ACL (preporučeno)';
$lang['i_superuser'] = 'Superkorisnik';
@@ -339,3 +340,5 @@ $lang['currentns'] = 'Tekući imenički prostor';
$lang['searchresult'] = 'Rezultati pretraživanja';
$lang['plainhtml'] = 'Čisti HTML';
$lang['wikimarkup'] = 'Wiki kod';
+$lang['page_nonexist_rev'] = 'Stranica ne postoji na %s. Ona je naknadno napravljena na <a href="%s">%s</a>.';
+$lang['unable_to_parse_date'] = 'Ne mogu analizirati parametar "%s".';
diff --git a/inc/lang/hr/searchpage.txt b/inc/lang/hr/searchpage.txt
index 7a94f32d2..90d2ffdf4 100644
--- a/inc/lang/hr/searchpage.txt
+++ b/inc/lang/hr/searchpage.txt
@@ -1,5 +1,5 @@
====== Pretraživanja ======
-Možete naći rezultat vaše pretrage u nastavku. Ako ne možete naći što tražite, možete urediti ili stvoriti novu stranicu s odgovarajućim alatom.
+Možete naći rezultat vaše pretrage u nastavku. @CREATEPAGEINFO@
====== Rezultati ======
diff --git a/inc/lang/hu/lang.php b/inc/lang/hu/lang.php
index eb4b4601a..bdc78f68d 100644
--- a/inc/lang/hu/lang.php
+++ b/inc/lang/hu/lang.php
@@ -75,6 +75,7 @@ $lang['badpassconfirm'] = 'Hibás jelszó';
$lang['minoredit'] = 'Apróbb változások';
$lang['draftdate'] = 'Piszkozat elmentve:';
$lang['nosecedit'] = 'Időközben megváltozott az oldal, emiatt a szakasz nem friss. Töltsd újra az egész oldalt!';
+$lang['searchcreatepage'] = "Ha nem találtad meg amit kerestél, akkor létrehozhatsz egy új oldalt a keresésed alapján ''Az oldal szerkesztése'' gombbal.";
$lang['regmissing'] = 'Sajnáljuk, az összes mezőt ki kell töltened.';
$lang['reguexists'] = 'Sajnáljuk, ilyen azonosítójú felhasználónk már van.';
$lang['regsuccess'] = 'A felhasználói azonosítót létrehoztuk. A jelszót postáztuk.';
diff --git a/inc/lang/hu/searchpage.txt b/inc/lang/hu/searchpage.txt
index ffde87b66..7e186e5cb 100644
--- a/inc/lang/hu/searchpage.txt
+++ b/inc/lang/hu/searchpage.txt
@@ -1,5 +1,5 @@
====== Keresés ======
-A keresés eredményét lentebb láthatod. Ha nem találtad meg amit kerestél, akkor létrehozhatsz egy új oldalt a keresésed alapján ''Az oldal szerkesztése'' gombbal.
+A keresés eredményét lentebb láthatod. @CREATEPAGEINFO@
===== Eredmény(ek) ===== \ No newline at end of file
diff --git a/inc/lang/ia/lang.php b/inc/lang/ia/lang.php
index cabbbab93..a533883b6 100644
--- a/inc/lang/ia/lang.php
+++ b/inc/lang/ia/lang.php
@@ -64,6 +64,7 @@ $lang['badlogin'] = 'Le nomine de usator o le contrasigno es incorr
$lang['minoredit'] = 'Modificationes minor';
$lang['draftdate'] = 'Version provisori automaticamente salveguardate le';
$lang['nosecedit'] = 'Le pagina ha essite modificate intertanto. Le informationes del section es ora obsolete, dunque le pagina complete ha essite cargate in su loco.';
+$lang['searchcreatepage'] = 'Si tu non ha trovate lo que tu cerca, tu pote crear o modificar le pagina nominate secundo tu consulta con le button appropriate.';
$lang['regmissing'] = 'Es necessari completar tote le campos.';
$lang['reguexists'] = 'Regrettabilemente, un usator con iste nomine ja existe.';
$lang['regsuccess'] = 'Le conto ha essite create e le contrasigno ha essite inviate per e-mail.';
diff --git a/inc/lang/ia/searchpage.txt b/inc/lang/ia/searchpage.txt
index c53683371..a8f7fce51 100644
--- a/inc/lang/ia/searchpage.txt
+++ b/inc/lang/ia/searchpage.txt
@@ -1,5 +1,5 @@
====== Recerca ======
-Le resultatos de tu recerca se trova hic infra. Si tu non ha trovate lo que tu cerca, tu pote crear o modificar le pagina nominate secundo tu consulta con le button appropriate.
+Le resultatos de tu recerca se trova hic infra. @CREATEPAGEINFO@
===== Resultatos ===== \ No newline at end of file
diff --git a/inc/lang/id/lang.php b/inc/lang/id/lang.php
index ff77cf24d..dc4ca00e0 100644
--- a/inc/lang/id/lang.php
+++ b/inc/lang/id/lang.php
@@ -69,6 +69,7 @@ $lang['badlogin'] = 'Maaf, username atau password salah.';
$lang['badpassconfirm'] = 'Maaf, password salah';
$lang['minoredit'] = 'Perubahan Minor';
$lang['draftdate'] = 'Simpan draft secara otomatis';
+$lang['searchcreatepage'] = 'Jika Anda tidak menemukan apa yang diinginkan, Anda dapat membuat halaman baru, dengan nama sesuai "text pencarian" Anda. Gunakan tombol "Edit halaman ini".';
$lang['regmissing'] = 'Maaf, Anda harus mengisi semua field.';
$lang['reguexists'] = 'Maaf, user dengan user login ini telah ada.';
$lang['regsuccess'] = 'User telah didaftarkan dan password telah dikirim ke email Anda.';
diff --git a/inc/lang/id/searchpage.txt b/inc/lang/id/searchpage.txt
index c47bed7dc..b3fb56580 100644
--- a/inc/lang/id/searchpage.txt
+++ b/inc/lang/id/searchpage.txt
@@ -1,5 +1,5 @@
====== Pencarian ======
-Anda dapat menemukan hasil pencarian dibawah ini. Jika Anda tidak menemukan apa yang diinginkan, Anda dapat membuat halaman baru, dengan nama sesuai "text pencarian" Anda. Gunakan tombol "Edit halaman ini".
+Anda dapat menemukan hasil pencarian dibawah ini. @CREATEPAGEINFO@
===== Hasil Pencarian ===== \ No newline at end of file
diff --git a/inc/lang/it/lang.php b/inc/lang/it/lang.php
index f59a7b948..9cde9d28e 100644
--- a/inc/lang/it/lang.php
+++ b/inc/lang/it/lang.php
@@ -81,6 +81,7 @@ $lang['badpassconfirm'] = 'La password è errata';
$lang['minoredit'] = 'Modifiche minori';
$lang['draftdate'] = 'Bozza salvata in automatico il';
$lang['nosecedit'] = 'La pagina è stata modificata nel frattempo; è impossibile modificare solo la sezione scelta, quindi è stata caricata la pagina intera.';
+$lang['searchcreatepage'] = "Se non hai trovato quello che cercavi, puoi creare una nuova pagina con questo titolo usando il pulsante ''Crea questa pagina''.";
$lang['regmissing'] = 'Devi riempire tutti i campi.';
$lang['reguexists'] = 'Il nome utente inserito esiste già.';
$lang['regsuccess'] = 'L\'utente è stato creato. La password è stata spedita via email.';
diff --git a/inc/lang/it/searchpage.txt b/inc/lang/it/searchpage.txt
index 60a019c3e..6f269da01 100644
--- a/inc/lang/it/searchpage.txt
+++ b/inc/lang/it/searchpage.txt
@@ -1,5 +1,5 @@
====== Cerca ======
-Questi sono i risultati della ricerca. Se non hai trovato quello che cercavi, puoi creare una nuova pagina con questo titolo usando il pulsante ''Crea questa pagina''.
+Questi sono i risultati della ricerca. @CREATEPAGEINFO@
===== Risultati =====
diff --git a/inc/lang/ja/lang.php b/inc/lang/ja/lang.php
index 381863eb3..30068d782 100644
--- a/inc/lang/ja/lang.php
+++ b/inc/lang/ja/lang.php
@@ -73,6 +73,7 @@ $lang['badpassconfirm'] = 'パスワードが間違っています。';
$lang['minoredit'] = '小変更';
$lang['draftdate'] = 'ドラフト保存日時:';
$lang['nosecedit'] = 'ページ内容が変更されていますがセクション情報が古いため、代わりにページ全体をロードしました。';
+$lang['searchcreatepage'] = 'もし、探しているものが見つからない場合、 検索キーワードにちなんだ名前の文書を作成もしくは編集を行ってください。';
$lang['regmissing'] = '全ての項目を入力してください。';
$lang['reguexists'] = 'このユーザー名は既に存在しています。';
$lang['regsuccess'] = '新しいユーザーが作成されました。パスワードは登録したメールアドレス宛てに送付されます。';
diff --git a/inc/lang/ja/searchpage.txt b/inc/lang/ja/searchpage.txt
index af312728b..80b0950c6 100644
--- a/inc/lang/ja/searchpage.txt
+++ b/inc/lang/ja/searchpage.txt
@@ -1,5 +1,5 @@
====== 検索 ======
-以下に検索結果を表示します。もし、探しているものが見つからない場合、 検索キーワードにちなんだ名前の文書を作成もしくは編集を行ってください。
+以下に検索結果を表示します。@CREATEPAGEINFO@
===== 結果 =====
diff --git a/inc/lang/ko/lang.php b/inc/lang/ko/lang.php
index ff5e66d9b..61bb58350 100644
--- a/inc/lang/ko/lang.php
+++ b/inc/lang/ko/lang.php
@@ -74,6 +74,7 @@ $lang['badpassconfirm'] = '죄송하지만 비밀번호가 잘못되었
$lang['minoredit'] = '사소한 바뀜';
$lang['draftdate'] = '초안 자동 저장 시간';
$lang['nosecedit'] = '한 동안 문서가 바뀌었으며, 문단 정보가 오래되어 문서 전체를 대신 열었습니다.';
+$lang['searchcreatepage'] = '만약 원하는 문서를 찾지 못했다면, \'\'문서 만들기\'\'나 \'\'문서 편집\'\'을 사용해 검색어와 같은 이름의 문서를 만들거나 편집할 수 있습니다.';
$lang['regmissing'] = '죄송하지만 모든 필드를 채워야 합니다.';
$lang['reguexists'] = '죄송하지만 같은 이름을 사용하는 사용자가 있습니다.';
$lang['regsuccess'] = '사용자를 만들었으며 비밀번호는 이메일로 보냈습니다.';
@@ -343,3 +344,5 @@ $lang['currentns'] = '현재 이름공간';
$lang['searchresult'] = '검색 결과';
$lang['plainhtml'] = '일반 HTML';
$lang['wikimarkup'] = '위키 문법';
+$lang['page_nonexist_rev'] = '문서가 %s에 존재하지 않았습니다. 그 뒤로 <a href="%s">%s</a>에 만들어졌습니다.';
+$lang['unable_to_parse_date'] = '"%s" 변수에서 구문 분석할 수 없습니다.';
diff --git a/inc/lang/ko/searchpage.txt b/inc/lang/ko/searchpage.txt
index 53faa04c6..6aa1c89af 100644
--- a/inc/lang/ko/searchpage.txt
+++ b/inc/lang/ko/searchpage.txt
@@ -1,5 +1,5 @@
====== 검색 ======
-아래에서 검색 결과를 찾을 수 있습니다. 만약 원하는 문서를 찾지 못했다면, ''문서 만들기''나 ''문서 편집''을 사용해 검색어와 같은 이름의 문서를 만들거나 편집할 수 있습니다.
+아래에서 검색 결과를 찾을 수 있습니다. @CREATEPAGEINFO@
-===== 결과 ===== \ No newline at end of file
+===== 결과 =====
diff --git a/inc/lang/ku/lang.php b/inc/lang/ku/lang.php
index b1b733ec9..a3c91eee8 100644
--- a/inc/lang/ku/lang.php
+++ b/inc/lang/ku/lang.php
@@ -138,5 +138,6 @@ $lang['img_copyr'] = 'Copyright:';
$lang['img_format'] = 'Format:';
$lang['img_camera'] = 'Camera:';
$lang['img_keywords']= 'Keywords:';
+$lang['searchcreatepage'] = "Heke tiştek nehatibe dîtin, tu dikarî dest bi nivîsandina rûpelekê nû bikî. Ji bo vê, ''Vê rûpelê biguherîne'' bitikîne.";
//Setup VIM: ex: et ts=2 :
diff --git a/inc/lang/ku/searchpage.txt b/inc/lang/ku/searchpage.txt
index 6646228d5..f762b9873 100644
--- a/inc/lang/ku/searchpage.txt
+++ b/inc/lang/ku/searchpage.txt
@@ -1,5 +1,5 @@
====== Lêbigere ======
-Jêr encamên lêgerandina te tên nîşan dan. Heke tiştek nehatibe dîtin, tu dikarî dest bi nivîsandina rûpelekê nû bikî. Ji bo vê, ''Vê rûpelê biguherîne'' bitikîne.
+Jêr encamên lêgerandina te tên nîşan dan. @CREATEPAGEINFO@
===== Encam ===== \ No newline at end of file
diff --git a/inc/lang/la/searchpage.txt b/inc/lang/la/searchpage.txt
index 8e929110d..75fd7cd5b 100644
--- a/inc/lang/la/searchpage.txt
+++ b/inc/lang/la/searchpage.txt
@@ -1,5 +1,5 @@
====== Quaerere ======
-Responsiones in hac pagina uidere potes.
+Responsiones in hac pagina uidere potes. @CREATEPAGEINFO@
===== Responsiones ===== \ No newline at end of file
diff --git a/inc/lang/lb/lang.php b/inc/lang/lb/lang.php
index a1b6ccf84..1090878e2 100644
--- a/inc/lang/lb/lang.php
+++ b/inc/lang/lb/lang.php
@@ -55,6 +55,7 @@ $lang['badlogin'] = 'Entschëllegt, de Benotzernumm oder d\'Passwue
$lang['minoredit'] = 'Kleng Ännerungen';
$lang['draftdate'] = 'Entworf automatesch gespäichert den';
$lang['nosecedit'] = 'D\'Säit gouf an Zwëschenzäit g\'ännert, Sektiounsinfo veralt. Ganz Säit gouf aplaz gelueden.';
+$lang['searchcreatepage'] = 'Wanns de net fënns wats de gesicht hues kanns de eng nei Säit mam Numm vun denger Sich uleeën.';
$lang['regmissing'] = 'Du muss all d\'Felder ausfëllen.';
$lang['reguexists'] = 'Et get schonn e Benotzer mat deem Numm.';
$lang['regsuccess'] = 'De Benotzer gouf erstallt an d\'Passwuert via Email geschéckt.';
diff --git a/inc/lang/lb/searchpage.txt b/inc/lang/lb/searchpage.txt
index 5e15a2c60..9f4e5475e 100644
--- a/inc/lang/lb/searchpage.txt
+++ b/inc/lang/lb/searchpage.txt
@@ -1,5 +1,5 @@
======Sich======
-Hei ënnendrënner sinn d'Resultater vun der Sich. Wanns de net fënns wats de gesicht hues kanns de eng nei Säit mam Numm vun denger Sich uleeën.
+Hei ënnendrënner sinn d'Resultater vun der Sich. @CREATEPAGEINFO@
=====Resultater===== \ No newline at end of file
diff --git a/inc/lang/lt/lang.php b/inc/lang/lt/lang.php
index d6552d68c..d53a117f4 100644
--- a/inc/lang/lt/lang.php
+++ b/inc/lang/lt/lang.php
@@ -60,6 +60,7 @@ $lang['badlogin'] = 'Nurodėte blogą vartotojo vardą arba slapta
$lang['minoredit'] = 'Nedidelis pataisymas';
$lang['draftdate'] = 'Juodraštis automatiškai išsaugotas';
$lang['nosecedit'] = 'Puslapis buvo kažkieno pataisytas, teksto dalies informacija tapo pasenusi, todėl pakrautas visas puslapis.';
+$lang['searchcreatepage'] = 'Jeigu neradote to, ko ieškojote, galite sukurti naują puslapį šiuo pavadinimu paspausdami "Redaguoti šį puslapį".';
$lang['regmissing'] = 'Turite užpildyti visus laukus.';
$lang['reguexists'] = 'Vartotojas su pasirinktu prisijungimo vardu jau egzistuoja.';
$lang['regsuccess'] = 'Vartotojas sukurtas, slaptažodis išsiųstas el. paštu.';
diff --git a/inc/lang/lt/searchpage.txt b/inc/lang/lt/searchpage.txt
index a83a6a58a..f03f5f17b 100644
--- a/inc/lang/lt/searchpage.txt
+++ b/inc/lang/lt/searchpage.txt
@@ -1,5 +1,5 @@
====== Paieška ======
-Žemiau matote Jūsų atliktos paieškos rezultatus. Jeigu neradote to, ko ieškojote, galite sukurti naują puslapį šiuo pavadinimu paspausdami "Redaguoti šį puslapį".
+Žemiau matote Jūsų atliktos paieškos rezultatus. @CREATEPAGEINFO@
===== Rezultatai ===== \ No newline at end of file
diff --git a/inc/lang/lv/lang.php b/inc/lang/lv/lang.php
index 15994afe6..ddc97fa89 100644
--- a/inc/lang/lv/lang.php
+++ b/inc/lang/lv/lang.php
@@ -65,6 +65,7 @@ $lang['badpassconfirm'] = 'Atvaino, aplama parole';
$lang['minoredit'] = 'Sīki labojumi';
$lang['draftdate'] = 'Melnraksts automātiski saglabāts';
$lang['nosecedit'] = 'Lapa pa šo laiku ir mainījusies, sekcijas informācija novecojusi. Ielādēta lapas pilnās versija.';
+$lang['searchcreatepage'] = 'Ja neatradi meklēto, nospiežot pogu "Labot lapu", vari izveidot jaunu lapu ar tevis meklētajiem atslēgvārdiem nosaukumā.';
$lang['regmissing'] = 'Atvaino, jāaizpilda visas ailes.';
$lang['reguexists'] = 'Atvaino, tāds lietotājs jau ir.';
$lang['regsuccess'] = 'Lietotājs izveidots. Parole nosūtīta pa pastu.';
diff --git a/inc/lang/lv/searchpage.txt b/inc/lang/lv/searchpage.txt
index 22eb55f04..a67f9f166 100644
--- a/inc/lang/lv/searchpage.txt
+++ b/inc/lang/lv/searchpage.txt
@@ -1,4 +1,5 @@
====== Meklēšana ======
-Te vari redzēt meklēšanas rezultātus. Ja neatradi meklēto, nospiežot pogu "Labot lapu", vari izveidot jaunu lapu ar tevis meklētajiem atslēgvārdiem nosaukumā.
+Te vari redzēt meklēšanas rezultātus. @CREATEPAGEINFO@
+
===== Atrasts =====
diff --git a/inc/lang/mg/lang.php b/inc/lang/mg/lang.php
index 6239c01fe..b6e0cc6e0 100644
--- a/inc/lang/mg/lang.php
+++ b/inc/lang/mg/lang.php
@@ -117,5 +117,5 @@ $lang['qb_sig'] = 'Manisy sonia';
$lang['js']['del_confirm']= 'Hofafana ilay andalana?';
$lang['admin_register']= 'Ampio mpampiasa vaovao...';
-
+$lang['searchcreatepage'] = "Raha tsy nahita izay notadiavinao ianao, dia afaka mamorona pejy vaovao avy amin'ny teny nanaovanao fikarohana; Ampiasao ny bokotra ''Hanova ny pejy''.";
//Setup VIM: ex: et ts=2 :
diff --git a/inc/lang/mg/searchpage.txt b/inc/lang/mg/searchpage.txt
index 68c6271df..ef3ed8b19 100644
--- a/inc/lang/mg/searchpage.txt
+++ b/inc/lang/mg/searchpage.txt
@@ -2,6 +2,6 @@
Ireto ambany ireto ny valin'ny fikarohanao.
-Raha tsy nahita izay notadiavinao ianao, dia afaka mamorona pejy vaovao avy amin'ny teny nanaovanao fikarohana; Ampiasao ny bokotra ''Hanova ny pejy''.
+@CREATEPAGEINFO@
===== Vokatry ny fikarohana ===== \ No newline at end of file
diff --git a/inc/lang/mr/lang.php b/inc/lang/mr/lang.php
index 72779dd10..7ebb14b93 100644
--- a/inc/lang/mr/lang.php
+++ b/inc/lang/mr/lang.php
@@ -68,6 +68,7 @@ $lang['badlogin'] = 'माफ़ करा, वापरकर्
$lang['minoredit'] = 'छोटे बदल';
$lang['draftdate'] = 'प्रत आपोआप सुरक्षित केल्याची तारीख';
$lang['nosecedit'] = 'मध्यंतरीच्या काळात हे पृष्ठ बदलले आहे.विभागाची माहिती जुनी झाली होती. त्याऐवजी सबंध पृष्ठ परत लोड केले आहे.';
+$lang['searchcreatepage'] = 'जर तुमची शोधत असलेली गोष्ट तुम्हाला सापडली नाही, तर योग्य बटण वापरून तुम्ही शोधत असलेल्या गोष्टीविषयी तुम्ही एखादे पान निर्माण किंवा संपादित करू शकता.';
$lang['regmissing'] = 'कृपया सर्व रकाने भरा.';
$lang['reguexists'] = 'या नावाने सदस्याची नोंदणी झालेली आहे, कृपया दुसरे सदस्य नाव निवडा.';
$lang['regsuccess'] = 'सदस्याची नोंदणी झाली आहे आणि परवलीचा शब्द इमेल केला आहे.';
diff --git a/inc/lang/mr/searchpage.txt b/inc/lang/mr/searchpage.txt
index 23e10b1d3..d41954b4a 100644
--- a/inc/lang/mr/searchpage.txt
+++ b/inc/lang/mr/searchpage.txt
@@ -1,5 +1,5 @@
====== शोध ======
-तुम्हाला खाली तुमच्या शोधाचे फलित दिसतील. जर तुमची शोधत असलेली गोष्ट तुम्हाला सापडली नाही, तर योग्य बटण वापरून तुम्ही शोधत असलेल्या गोष्टीविषयी तुम्ही एखादे पान निर्माण किंवा संपादित करू शकता.
+तुम्हाला खाली तुमच्या शोधाचे फलित दिसतील. @CREATEPAGEINFO@
====== फलित ====== \ No newline at end of file
diff --git a/inc/lang/ne/lang.php b/inc/lang/ne/lang.php
index ddf031242..d4efc89bd 100644
--- a/inc/lang/ne/lang.php
+++ b/inc/lang/ne/lang.php
@@ -58,6 +58,7 @@ $lang['badlogin'] = 'माफ गर्नुहोस् , प्
$lang['minoredit'] = 'सामान्य परिवर्तन';
$lang['draftdate'] = 'ड्राफ्ट स्वचालित रुपमा वचत भएको';
$lang['nosecedit'] = 'यो पृष्ठ यसै बखतमा परिवर्तन भयो, खण्ड जानकारी अध्यावधिक हुन सकेन र पूरै पृष्ठ लोड भयो । ';
+$lang['searchcreatepage'] = 'यदि तपाईले आफुले खोजेको पाउनुभएन भने, तपाईलेको उपयुक्त बटन प्रयोग गरी खोज सँग सम्बन्धित शिर्षकहरु भएका पृष्ठ सृजना या सम्पादन गर्न सक्नुहुन्छ ।';
$lang['regmissing'] = 'माफ गर्नुहोला , सबै ठाउमा भर्नुपर्नेछ ।';
$lang['reguexists'] = 'यो नामको प्रयोगकर्ता पहिले देखि रहेको छ।';
$lang['regsuccess'] = 'यो प्रयोगकर्ता बनाइएको छ र प्रवेशशव्द इमेलमा पठइएको छ।';
diff --git a/inc/lang/ne/searchpage.txt b/inc/lang/ne/searchpage.txt
index a8139f0ab..021306b4b 100644
--- a/inc/lang/ne/searchpage.txt
+++ b/inc/lang/ne/searchpage.txt
@@ -1,3 +1,5 @@
====== खोज ======
-तपाईले आफ्नो खोजको निम्न नतिजा पाउन सक्नुहुन्छ। यदि तपाईले आफुले खोजेको पाउनुभएन भने, तपाईलेको उपयुक्त बटन प्रयोग गरी खोज सँग सम्बन्धित शिर्षकहरु भएका पृष्ठ सृजना या सम्पादन गर्न सक्नुहुन्छ ।
+
+तपाईले आफ्नो खोजको निम्न नतिजा पाउन सक्नुहुन्छ। @CREATEPAGEINFO@
+
===== नतिजा ===== \ No newline at end of file
diff --git a/inc/lang/nl/lang.php b/inc/lang/nl/lang.php
index a9058720c..aa0087718 100644
--- a/inc/lang/nl/lang.php
+++ b/inc/lang/nl/lang.php
@@ -85,6 +85,7 @@ $lang['badpassconfirm'] = 'Sorry, het wachtwoord was onjuist';
$lang['minoredit'] = 'Kleine wijziging';
$lang['draftdate'] = 'Concept automatisch opgeslagen op';
$lang['nosecedit'] = 'De pagina is tussentijds veranderd, sectie-informatie was verouderd, volledige pagina geladen.';
+$lang['searchcreatepage'] = "Niks gevonden? Maak een nieuwe pagina met als naam je zoekopdracht. Klik hiervoor op ''Maak deze pagina aan''.";
$lang['regmissing'] = 'Vul alle velden in';
$lang['reguexists'] = 'Er bestaat al een gebruiker met deze loginnaam.';
$lang['regsuccess'] = 'De gebruiker is aangemaakt. Het wachtwoord is per e-mail verzonden.';
diff --git a/inc/lang/nl/searchpage.txt b/inc/lang/nl/searchpage.txt
index 3ace704c8..e03679b2b 100644
--- a/inc/lang/nl/searchpage.txt
+++ b/inc/lang/nl/searchpage.txt
@@ -1,5 +1,5 @@
====== Zoeken ======
-Hieronder zijn de resultaten van de zoekopdracht. Niks gevonden? Maak een nieuwe pagina met als naam je zoekopdracht. Klik hiervoor op ''Pagina aanpassen''.
+Hieronder zijn de resultaten van de zoekopdracht. @CREATEPAGEINFO@
===== Resultaten =====
diff --git a/inc/lang/no/lang.php b/inc/lang/no/lang.php
index 6156fa34c..ecf10ff5b 100644
--- a/inc/lang/no/lang.php
+++ b/inc/lang/no/lang.php
@@ -21,6 +21,7 @@
* @author Thomas Juberg <Thomas.Juberg@Gmail.com>
* @author Boris <boris@newton-media.no>
* @author Christopher Schive <chschive@frisurf.no>
+ * @author Patrick <spill.p@hotmail.com>
*/
$lang['encoding'] = 'utf-8';
$lang['direction'] = 'ltr';
@@ -82,6 +83,7 @@ $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.';
+$lang['searchcreatepage'] = 'Hvis du ikke finner det du leter etter, så kan du skape en ny side med samme navn som ditt søk ved å klikke på \'\'**Lag denne siden**\'\'-knappen.';
$lang['regmissing'] = 'Vennligst fyll ut alle felt.';
$lang['reguexists'] = 'Det finnes allerede en konto med dette brukernavnet.';
$lang['regsuccess'] = 'Brukerkonto har blitt laget og passord har blitt sendt via e-post.';
@@ -115,7 +117,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['maxuploadsize'] = 'Opplast maks %s 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.';
@@ -355,3 +357,4 @@ $lang['currentns'] = 'gjeldende navnemellomrom';
$lang['searchresult'] = 'Søk i resultat';
$lang['plainhtml'] = 'Enkel HTML';
$lang['wikimarkup'] = 'wiki-format';
+$lang['page_nonexist_rev'] = 'Finnes ingen side på %s. Den er derfor laget på <a href="%s">%s</a>';
diff --git a/inc/lang/no/searchpage.txt b/inc/lang/no/searchpage.txt
index e94e7895b..2e7b0d887 100644
--- a/inc/lang/no/searchpage.txt
+++ b/inc/lang/no/searchpage.txt
@@ -1,5 +1,5 @@
====== Søk ======
-Du ser resultatet av dette søket nedenfor. Hvis du ikke finner det du leter etter, så kan du skape en ny side med samme navn som ditt søk ved å klikke på ''**Lag denne siden**''-knappen.
+Du ser resultatet av dette søket nedenfor. @CREATEPAGEINFO@
===== Resultat =====
diff --git a/inc/lang/pl/lang.php b/inc/lang/pl/lang.php
index c6ff4983e..baf3c28a9 100644
--- a/inc/lang/pl/lang.php
+++ b/inc/lang/pl/lang.php
@@ -78,6 +78,7 @@ $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ę.';
+$lang['searchcreatepage'] = 'Jeśli nie znaleziono szukanego hasła, możesz utworzyć nową stronę, której tytułem będzie poszukiwane hasło.';
$lang['regmissing'] = 'Wypełnij wszystkie pola.';
$lang['reguexists'] = 'Użytkownik o tej nazwie już istnieje.';
$lang['regsuccess'] = 'Utworzono użytkownika. Hasło zostało przesłane pocztą.';
diff --git a/inc/lang/pl/searchpage.txt b/inc/lang/pl/searchpage.txt
index 61b9ffbf9..442975fe1 100644
--- a/inc/lang/pl/searchpage.txt
+++ b/inc/lang/pl/searchpage.txt
@@ -1,5 +1,5 @@
====== Wyszukiwanie ======
-Wyniki wyszukiwania. Jeśli nie znaleziono szukanego hasła, możesz utworzyć nową stronę, której tytułem będzie poszukiwane hasło.
+Wyniki wyszukiwania. @CREATEPAGEINFO@
===== Wyniki =====
diff --git a/inc/lang/pt-br/lang.php b/inc/lang/pt-br/lang.php
index 31940f5be..be62af6fe 100644
--- a/inc/lang/pt-br/lang.php
+++ b/inc/lang/pt-br/lang.php
@@ -85,6 +85,7 @@ $lang['badpassconfirm'] = 'Desculpe, mas a senha está errada ';
$lang['minoredit'] = 'Alterações mínimas';
$lang['draftdate'] = 'O rascunho foi salvo automaticamente em';
$lang['nosecedit'] = 'A página foi modificada nesse intervalo de tempo. Como a informação da seção estava desatualizada, foi carregada a página inteira.';
+$lang['searchcreatepage'] = 'Se você não encontrou o que está procurando, pode criar ou editar a página com o nome que você especificou, usando o botão apropriado.';
$lang['regmissing'] = 'Desculpe, mas você precisa preencher todos os campos.';
$lang['reguexists'] = 'Desculpe, mas já existe um usuário com esse nome.';
$lang['regsuccess'] = 'O usuário foi criado e a senha enviada para seu e-mail.';
diff --git a/inc/lang/pt-br/searchpage.txt b/inc/lang/pt-br/searchpage.txt
index 2fba3afe9..636bfeb7a 100644
--- a/inc/lang/pt-br/searchpage.txt
+++ b/inc/lang/pt-br/searchpage.txt
@@ -1,5 +1,5 @@
====== Pesquisa ======
-Você pode encontrar os resultados da sua pesquisa abaixo. Se você não encontrou o que está procurando, pode criar ou editar a página com o nome que você especificou, usando o botão apropriado.
+Você pode encontrar os resultados da sua pesquisa abaixo. @CREATEPAGEINFO@
===== Resultados =====
diff --git a/inc/lang/pt/lang.php b/inc/lang/pt/lang.php
index ddc9b33ab..54f56f8e3 100644
--- a/inc/lang/pt/lang.php
+++ b/inc/lang/pt/lang.php
@@ -72,6 +72,7 @@ $lang['badpassconfirm'] = 'Infelizmente a palavra-passe não é a correct
$lang['minoredit'] = 'Alterações Menores';
$lang['draftdate'] = 'Rascunho automaticamente gravado em';
$lang['nosecedit'] = 'A página foi modificada entretanto. Como a informação da secção estava desactualizada, foi carregada a página inteira.';
+$lang['searchcreatepage'] = 'Se não encontrou o que procurava pode criar uma nova página com o nome da sua pesquisa, usando o botão apropriado.';
$lang['regmissing'] = 'Por favor, preencha todos os campos.';
$lang['reguexists'] = 'Este utilizador já está inscrito. Por favor escolha outro nome de utilizador.';
$lang['regsuccess'] = 'O utilizador foi criado e a senha foi enviada para o endereço de correio electrónico usado na inscrição.';
diff --git a/inc/lang/pt/searchpage.txt b/inc/lang/pt/searchpage.txt
index 2239330dd..563ce2834 100644
--- a/inc/lang/pt/searchpage.txt
+++ b/inc/lang/pt/searchpage.txt
@@ -1,5 +1,5 @@
====== Pesquisa ======
-Pode encontrar os resultados da sua pesquisa abaixo. Se não encontrou o que procurava pode criar uma nova página com o nome da sua pesquisa, usando o botão apropriado.
+Pode encontrar os resultados da sua pesquisa abaixo. @CREATEPAGEINFO@
===== Resultados =====
diff --git a/inc/lang/ro/lang.php b/inc/lang/ro/lang.php
index cd7d4fcc3..e8d8c4af2 100644
--- a/inc/lang/ro/lang.php
+++ b/inc/lang/ro/lang.php
@@ -67,6 +67,7 @@ $lang['badlogin'] = 'Ne pare rău, utilizatorul și/sau parola au f
$lang['minoredit'] = 'Modificare minoră';
$lang['draftdate'] = 'Schiță salvată automat la';
$lang['nosecedit'] = 'Pagina s-a modificat între timp, secțiunea info a expirat, s-a încărcat pagina întreagă în loc.';
+$lang['searchcreatepage'] = "Dacă nu ai găsit ce ai căutat, poți crea o pagină nouă prin folosirea butonului ''Editează această pagină''.";
$lang['regmissing'] = 'Ne pare rău, trebuie să completezi toate cîmpurile.';
$lang['reguexists'] = 'Ne pare rău, un utilizator cu acest nume este deja autentificat.';
$lang['regsuccess'] = 'Utilizatorul a fost creat. Parola a fost trimisă prin e-mail.';
diff --git a/inc/lang/ro/searchpage.txt b/inc/lang/ro/searchpage.txt
index 53e66adf0..d4e3df2ee 100644
--- a/inc/lang/ro/searchpage.txt
+++ b/inc/lang/ro/searchpage.txt
@@ -1,5 +1,5 @@
====== Căutare ======
-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ă''.
+Rezultatele căutării sunt afișate mai jos. @CREATEPAGEINFO@
===== Rezultate =====
diff --git a/inc/lang/ru/lang.php b/inc/lang/ru/lang.php
index e2f9b3d57..f491fcaa9 100644
--- a/inc/lang/ru/lang.php
+++ b/inc/lang/ru/lang.php
@@ -73,7 +73,7 @@ $lang['btn_media'] = 'Управление медиафайлами'
$lang['btn_deleteuser'] = 'Удалить мой аккаунт';
$lang['btn_img_backto'] = 'Вернуться к %s';
$lang['btn_mediaManager'] = 'Просмотр в «управлении медиафайлами»';
-$lang['loggedinas'] = 'Зашли как:';
+$lang['loggedinas'] = 'Зашли как';
$lang['user'] = 'Логин';
$lang['pass'] = 'Пароль';
$lang['newpass'] = 'Новый пароль';
@@ -88,6 +88,7 @@ $lang['badpassconfirm'] = 'Простите, пароль неверны
$lang['minoredit'] = 'Небольшие изменения';
$lang['draftdate'] = 'Черновик сохранён';
$lang['nosecedit'] = 'За это время страница была изменена и информация о секции устарела. Загружена полная версия страницы.';
+$lang['searchcreatepage'] = 'Если вы не нашли то, что искали, вы можете создать новую страницу с именем, совпадающим с запросом. Чтобы сделать это, просто нажмите на кнопку «Создать страницу».';
$lang['regmissing'] = 'Извините, вам следует заполнить все поля.';
$lang['reguexists'] = 'Извините, пользователь с таким логином уже существует.';
$lang['regsuccess'] = 'Пользователь создан; пароль выслан на адрес электронной почты.';
@@ -187,7 +188,7 @@ $lang['mediausage'] = 'Для ссылки на этот файл и
$lang['mediaview'] = 'Посмотреть исходный файл';
$lang['mediaroot'] = 'корень';
$lang['mediaupload'] = 'Здесь можно загрузить файл в текущий каталог («пространство имён»). Чтобы создать подкаталоги, добавьте их к началу имени файла («Загрузить как»). Имена подкаталогов разделяются двоеточиями. ';
-$lang['mediaextchange'] = 'Расширение изменилось: с .%s на .%s!';
+$lang['mediaextchange'] = 'Расширение изменилось с .%s на .%s!';
$lang['reference'] = 'Ссылки для';
$lang['ref_inuse'] = 'Этот файл не может быть удалён, так как он используется на следующих страницах:';
$lang['ref_hidden'] = 'Некоторые ссылки находятся на страницах, на чтение которых у вас нет прав доступа';
@@ -203,7 +204,7 @@ $lang['diff_type'] = 'Посмотреть отличия';
$lang['diff_inline'] = 'встроенный';
$lang['diff_side'] = 'бок о бок';
$lang['diffprevrev'] = 'Предыдущая версия';
-$lang['diffnextrev'] = 'Следущая версия';
+$lang['diffnextrev'] = 'Следующая версия';
$lang['difflastrev'] = 'Последняя версия';
$lang['line'] = 'Строка';
$lang['breadcrumb'] = 'Вы посетили:';
@@ -287,8 +288,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['subscr_style_digest'] = 'информационное электронное письмо со списком изменений для каждой страницы (каждые %.2f дн.)';
+$lang['subscr_style_list'] = 'список изменённых страниц со времени последнего отправленного электронного письма (каждые %.2f дн.)';
$lang['authtempfail'] = 'Аутентификация пользователей временно недоступна. Если проблема продолжается какое-то время, пожалуйста, сообщите об этом своему администратору вики.';
$lang['authpwdexpire'] = 'Действие вашего пароля истекает через %d дней. Вы должны изменить его как можно скорее';
$lang['i_chooselang'] = 'Выберите свой язык/Choose your language';
@@ -311,7 +312,7 @@ $lang['i_success'] = 'Конфигурация прошла успе
<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_pol0'] = 'Открытая вики (чтение, запись, загрузка файлов для всех)';
$lang['i_pol1'] = 'Общедоступная вики (чтение для всех, запись и загрузка файлов для зарегистрированных пользователей)';
$lang['i_pol2'] = 'Закрытая вики (чтение, запись и загрузка файлов только для зарегистрированных пользователей)';
$lang['i_allowreg'] = 'Разрешить пользователям самостоятельно регистрироваться';
@@ -322,10 +323,10 @@ $lang['i_pop_field'] = 'Пожалуйста, помогите нам
$lang['i_pop_label'] = 'Отправлять раз в месяц анонимную пользовательскую информацию разработчикам «Докувики»';
$lang['recent_global'] = 'Вы просматриваете изменения в пространстве имён <b>%s</b>. Вы можете также <a href="%s">просмотреть недавние изменения во всей вики</a>.';
$lang['years'] = '%d лет назад';
-$lang['months'] = '%d месяц(ев) назад';
+$lang['months'] = '%d месяц (-ев) назад';
$lang['weeks'] = '%d недель назад';
$lang['days'] = '%d дней назад';
-$lang['hours'] = '%d час(ов) назад';
+$lang['hours'] = '%d час (-ов) назад';
$lang['minutes'] = '%d минут назад';
$lang['seconds'] = '%d секунд назад';
$lang['wordblock'] = 'Ваши изменения не сохранены, поскольку они содержат блокируемые слова (спам).';
@@ -341,8 +342,8 @@ $lang['media_sort_name'] = 'Сортировка по имени';
$lang['media_sort_date'] = 'Сортировка по дате';
$lang['media_namespaces'] = 'Выберите каталог';
$lang['media_files'] = 'Файлы в %s';
-$lang['media_upload'] = 'Загрузка в пространство имён <strong>%s</strong>.';
-$lang['media_search'] = 'Поиск в пространстве имён <strong>%s</strong>.';
+$lang['media_upload'] = 'Загрузка в пространство имён %s';
+$lang['media_search'] = 'Поиск в пространстве имён %s';
$lang['media_view'] = '%s';
$lang['media_viewold'] = '%s в %s
';
diff --git a/inc/lang/ru/mailtext.txt b/inc/lang/ru/mailtext.txt
index 953daddf2..929174910 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/password.txt b/inc/lang/ru/password.txt
index fabdf2b68..360201bd9 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 954c75dfe..de31aa9a8 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 86ef11e8c..d55296558 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/revisions.txt b/inc/lang/ru/revisions.txt
index 55072cd8a..40fbedf0e 100644
--- a/inc/lang/ru/revisions.txt
+++ b/inc/lang/ru/revisions.txt
@@ -1,3 +1,3 @@
====== История страницы ======
-Перед вами — история правок текущего документа. Чтобы вернуться к одной из предыдущих версий, выберите нужную, нажмите «Править страницу» и сохраните.
+Перед вами история правок текущего документа. Чтобы вернуться к одной из предыдущих версий, выберите нужную, нажмите «Править страницу» и сохраните.
diff --git a/inc/lang/ru/searchpage.txt b/inc/lang/ru/searchpage.txt
index 04feb21cd..d12a848c6 100644
--- a/inc/lang/ru/searchpage.txt
+++ b/inc/lang/ru/searchpage.txt
@@ -1,5 +1,5 @@
====== Поиск ======
-Перед вами результаты поиска. Если вы не нашли то, что искали, вы можете создать новую страницу с именем, совпадающим с запросом. Чтобы сделать это, просто нажмите на кнопку «Создать страницу».
+Перед вами результаты поиска. @CREATEPAGEINFO@
===== Результаты ===== \ No newline at end of file
diff --git a/inc/lang/ru/uploadmail.txt b/inc/lang/ru/uploadmail.txt
index 84103b45a..1cc5c6a5a 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/lang.php b/inc/lang/sk/lang.php
index e501cb7fc..afbf79503 100644
--- a/inc/lang/sk/lang.php
+++ b/inc/lang/sk/lang.php
@@ -66,6 +66,7 @@ $lang['badpassconfirm'] = 'Ľutujem, heslo bolo nesprávne.';
$lang['minoredit'] = 'Menšie zmeny';
$lang['draftdate'] = 'Koncept automaticky uložený';
$lang['nosecedit'] = 'Stránka bola medzičasom zmenená, informácie o sekcii sú zastaralé a z tohto dôvodu bola nahraná celá stránka.';
+$lang['searchcreatepage'] = "Pokiaľ ste nenašli, čo hľadáte, skúste požadovanú stránku sami vytvoriť stlačením tlačidla ''Vytvoriť stránku''.";
$lang['regmissing'] = 'Musíte vyplniť všetky údaje.';
$lang['reguexists'] = 'Užívateľ s rovnakým menom je už zaregistrovaný.';
$lang['regsuccess'] = 'Užívateľský účet bol vytvorený a heslo zaslané emailom.';
diff --git a/inc/lang/sk/searchpage.txt b/inc/lang/sk/searchpage.txt
index 3fdf074b7..3684f1c6c 100644
--- a/inc/lang/sk/searchpage.txt
+++ b/inc/lang/sk/searchpage.txt
@@ -1,5 +1,5 @@
====== Vyhľadávanie ======
-Výsledky hľadania môžete vidieť nižšie. Pokiaľ ste nenašli, čo hľadáte, skúste požadovanú stránku sami vytvoriť stlačením tlačidla ''Vytvoriť stránku''.
+Výsledky hľadania môžete vidieť nižšie. @CREATEPAGEINFO@
===== Výsledky =====
diff --git a/inc/lang/sl/lang.php b/inc/lang/sl/lang.php
index f76dbb7d1..b649d08cb 100644
--- a/inc/lang/sl/lang.php
+++ b/inc/lang/sl/lang.php
@@ -72,6 +72,7 @@ $lang['badpassconfirm'] = 'Napaka! Geslo ni pravo.';
$lang['minoredit'] = 'Manjše spremembe';
$lang['draftdate'] = 'Samodejno shranjevanje osnutka je omogočeno';
$lang['nosecedit'] = 'Stran je bila v vmesnem času spremenjena. Podatki strani so bili zastareli, zato se je celotna vsebina naložila znova.';
+$lang['searchcreatepage'] = "V kolikor rezultati niso skladni z zahtevami iskanja, je mogoče ustvariti novo stran z nazivom vaše poizvedbe preko povezave ''Uredi stran''.";
$lang['regmissing'] = 'Izpolniti je treba vsa polja.';
$lang['reguexists'] = 'Uporabnik s tem imenom že obstaja.';
$lang['regsuccess'] = 'Uporabniški račun je uspešno ustvarjen. Geslo je bilo poslano na naveden elektronski naslov.';
diff --git a/inc/lang/sl/searchpage.txt b/inc/lang/sl/searchpage.txt
index 736a36182..6ccfa96a4 100644
--- a/inc/lang/sl/searchpage.txt
+++ b/inc/lang/sl/searchpage.txt
@@ -1,5 +1,5 @@
====== Iskanje ======
-Spodaj so izpisani rezultati iskanja. V kolikor rezultati niso skladni z zahtevami iskanja, je mogoče ustvariti novo stran z nazivom vaše poizvedbe preko povezave ''Uredi stran''.
+Spodaj so izpisani rezultati iskanja. @CREATEPAGEINFO@
===== Rezultati ===== \ No newline at end of file
diff --git a/inc/lang/sq/lang.php b/inc/lang/sq/lang.php
index 49984097c..4c61b6a70 100644
--- a/inc/lang/sq/lang.php
+++ b/inc/lang/sq/lang.php
@@ -63,6 +63,7 @@ $lang['badlogin'] = 'Na vjen keq, emri ose fjalëkalimi është gab
$lang['minoredit'] = 'Ndryshime të Vogla';
$lang['draftdate'] = 'Skica u ruajt automatikisht në';
$lang['nosecedit'] = 'Faqja u ndryshua ndëwrkohë, informacioni i kwtij seksioni ishte i vjetër, u ngarkua faqja e tërë në vend të saj.';
+$lang['searchcreatepage'] = 'Nëse nuk e gjetët atë që po kërkonit, mund të krijoni ose redaktoni një faqe pas pyetjes suaj me butonin përkatës.';
$lang['regmissing'] = 'Na vjen keq, duhet të plotësoni të gjitha fushat.';
$lang['reguexists'] = 'Na vjen keq, ekziston një përdorues tjetër me të njëjtin emër.';
$lang['regsuccess'] = 'Përdoruesi u regjistrua dhe fjalëkalimi u dërgua me email.';
diff --git a/inc/lang/sq/searchpage.txt b/inc/lang/sq/searchpage.txt
index 2f34cabb9..b0d6d1f31 100644
--- a/inc/lang/sq/searchpage.txt
+++ b/inc/lang/sq/searchpage.txt
@@ -1,5 +1,5 @@
====== Kërko ======
-Mund të gjeni rezultatet e kërkimit tuaj më poshtë. Nëse nuk e gjetët atë që po kërkonit, mund të krijoni ose redaktoni një faqe pas pyetjes suaj me butonin përkatës.
+Mund të gjeni rezultatet e kërkimit tuaj më poshtë. @CREATEPAGEINFO@
===== Rezultate ===== \ No newline at end of file
diff --git a/inc/lang/sr/lang.php b/inc/lang/sr/lang.php
index 22a500e76..37a36c82b 100644
--- a/inc/lang/sr/lang.php
+++ b/inc/lang/sr/lang.php
@@ -60,6 +60,7 @@ $lang['badlogin'] = 'Извините, није добро кори
$lang['minoredit'] = 'Мала измена';
$lang['draftdate'] = 'Нацрт је аутоматски сачуван';
$lang['nosecedit'] = 'Страна је у међувремену промењена, поглавље је застарело и поново се учитава цела страна.';
+$lang['searchcreatepage'] = "Ако нисте нашли то што сте тражили, можете да направите нову страницу названу по Вашем упиту користећи дугме ''Измени ову страницу''.";
$lang['regmissing'] = 'Извините, морате да попуните сва поља.';
$lang['reguexists'] = 'Извините, корисник са истим именом већ постоји.';
$lang['regsuccess'] = 'Корисник је направљен и лозинка је послата путем е-поште.';
diff --git a/inc/lang/sr/searchpage.txt b/inc/lang/sr/searchpage.txt
index 010966a7c..458c5b1fc 100644
--- a/inc/lang/sr/searchpage.txt
+++ b/inc/lang/sr/searchpage.txt
@@ -1,5 +1,5 @@
====== Претрага ======
-Испод можете да нађете резултате Ваше претраге. Ако нисте нашли то што сте тражили, можете да направите нову страницу названу по Вашем упиту користећи дугме ''Измени ову страницу''.
+Испод можете да нађете резултате Ваше претраге. @CREATEPAGEINFO@
===== Резултати =====
diff --git a/inc/lang/sv/lang.php b/inc/lang/sv/lang.php
index 1f129c621..f22491db1 100644
--- a/inc/lang/sv/lang.php
+++ b/inc/lang/sv/lang.php
@@ -82,6 +82,7 @@ $lang['badpassconfirm'] = 'Ledsen, lösenordet var felaktigt';
$lang['minoredit'] = 'Små ändringar';
$lang['draftdate'] = 'Utkast automatiskt sparat';
$lang['nosecedit'] = 'Sidan ändrades medan du skrev, sektionsinformationen var inte uppdaterad. Laddar hela sidan istället.';
+$lang['searchcreatepage'] = 'Om du inte hittar det du letar efter, så kan du skapa eller redigera sidan med någon av knapparna.';
$lang['regmissing'] = 'Du måste fylla i alla fälten.';
$lang['reguexists'] = 'Det finns redan en användare med det användarnamnet.';
$lang['regsuccess'] = 'Användarkontot skapat, lösenordet har skickats via e-post.';
diff --git a/inc/lang/sv/searchpage.txt b/inc/lang/sv/searchpage.txt
index bcc88cd95..7b2d3bca3 100644
--- a/inc/lang/sv/searchpage.txt
+++ b/inc/lang/sv/searchpage.txt
@@ -1,5 +1,5 @@
====== Sök ======
-Nedan ser du resultatet av sökningen. Om du inte hittar det du letar efter, så kan du skapa eller redigera sidan med någon av knapparna.
+Nedan ser du resultatet av sökningen. @CREATEPAGEINFO@
===== Resultat =====
diff --git a/inc/lang/th/lang.php b/inc/lang/th/lang.php
index 0e9f1d3bb..113431276 100644
--- a/inc/lang/th/lang.php
+++ b/inc/lang/th/lang.php
@@ -68,6 +68,7 @@ $lang['badpassconfirm'] = 'พาสเวิร์ดไม่ถูก
$lang['minoredit'] = 'เป็นการแก้ไขเล็กน้อย';
$lang['draftdate'] = 'บันทึกฉบับร่างเมื่อ';
$lang['nosecedit'] = 'ในช่วงเวลาที่ผ่านมานี้เพจถูกแก้ไขไปแล้ว, เนื้อหาในเซคชั่นนี้ไม่ทันสมัย กรุณาโหลดเพจใหม่ทั้งหน้าแทน';
+$lang['searchcreatepage'] = 'ถ้าคุณไม่พบสิ่งที่คนมองหา คุณสามารถเลือกที่จะสร้าง หรือแก้ไขชื่อเพจหลังจากดูผลสืบค้นแล้วด้วยปุ่มที่เหมาะสม';
$lang['regmissing'] = 'ขออภัย คุณต้องกรอกให้ครบทุกช่อง';
$lang['reguexists'] = 'ชื่อบัญชีที่ใส่นั้นมีผู้อื่นได้ใช้แล้ว กรุณาเลือกชื่อผู้ใช้อื่น';
$lang['regsuccess'] = 'ผู้ใช้ถูกสร้างแล้ว และรหัสผ่านได้ถูกส่งไปทางอีเมลแล้ว';
diff --git a/inc/lang/th/searchpage.txt b/inc/lang/th/searchpage.txt
index d6399a9e9..263c656ab 100644
--- a/inc/lang/th/searchpage.txt
+++ b/inc/lang/th/searchpage.txt
@@ -1,4 +1,5 @@
====== สืบค้น ======
-คุณสามารถพบผลลัพธ์การสืบค้นของคุณด้านล่าง ถ้าคุณไม่พบสิ่งที่คนมองหา คุณสามารถเลือกที่จะสร้าง หรือแก้ไขชื่อเพจหลังจากดูผลสืบค้นแล้วด้วยปุ่มที่เหมาะสม
+
+คุณสามารถพบผลลัพธ์การสืบค้นของคุณด้านล่าง @CREATEPAGEINFO@
====== ผลลัพธ์ ====== \ No newline at end of file
diff --git a/inc/lang/tr/lang.php b/inc/lang/tr/lang.php
index 90a7ea7ba..1676256a5 100644
--- a/inc/lang/tr/lang.php
+++ b/inc/lang/tr/lang.php
@@ -74,6 +74,7 @@ $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.';
+$lang['searchcreatepage'] = "Aradığınız şeyi bulamadıysanız, ''Sayfayı değiştir'' tuşuna tıklayarak girdiğiniz sorgu adıyla yeni bir sayfa oluşturabilirsiniz .";
$lang['regmissing'] = 'Üzgünüz, tüm alanları doldurmalısınız.';
$lang['reguexists'] = 'Üzgünüz, bu isime sahip bir kullanıcı zaten mevcut.';
$lang['regsuccess'] = 'Kullanıcı oluşturuldu ve şifre e-posta adresine gönderildi.';
diff --git a/inc/lang/tr/searchpage.txt b/inc/lang/tr/searchpage.txt
index ae6d50c77..bdb3ddf17 100644
--- a/inc/lang/tr/searchpage.txt
+++ b/inc/lang/tr/searchpage.txt
@@ -1,5 +1,5 @@
====== Arama ======
-Aşağıda aramanın sonuçları listelenmiştir. Aradığınız şeyi bulamadıysanız, ''Sayfayı değiştir'' tuşuna tıklayarak girdiğiniz sorgu adıyla yeni bir sayfa oluşturabilirsiniz .
+Aşağıda aramanın sonuçları listelenmiştir. @CREATEPAGEINFO@
===== Sonuçlar =====
diff --git a/inc/lang/uk/lang.php b/inc/lang/uk/lang.php
index 56f064c9f..a6b08c905 100644
--- a/inc/lang/uk/lang.php
+++ b/inc/lang/uk/lang.php
@@ -68,6 +68,7 @@ $lang['badpassconfirm'] = 'Вибачте, але пароль невір
$lang['minoredit'] = 'Незначні зміни';
$lang['draftdate'] = 'Чернетка збережена';
$lang['nosecedit'] = 'Сторінку змінено, дані розділу застарілі. Завантажено сторінку повністю.';
+$lang['searchcreatepage'] = 'Якщо ви не знайшли те, що ви шукали, ви можете створити або редагувати сторінку, що має таке ж ім’я, що і пошуковий запит за допомогою відповідної кнопки.';
$lang['regmissing'] = 'Необхідно заповнити всі поля.';
$lang['reguexists'] = 'Користувач з таким іменем вже існує.';
$lang['regsuccess'] = 'Користувача створено. Пароль відправлено на e-mail.';
diff --git a/inc/lang/uk/searchpage.txt b/inc/lang/uk/searchpage.txt
index 971c24814..3889a7618 100644
--- a/inc/lang/uk/searchpage.txt
+++ b/inc/lang/uk/searchpage.txt
@@ -1,5 +1,5 @@
====== Пошук ======
-Дивіться результати пошуку нижче. Якщо ви не знайшли те, що ви шукали, ви можете створити або редагувати сторінку, що має таке ж ім’я, що і пошуковий запит за допомогою відповідної кнопки.
+Дивіться результати пошуку нижче. @CREATEPAGEINFO@
===== Результати =====
diff --git a/inc/lang/vi/lang.php b/inc/lang/vi/lang.php
index b2349d0b0..41a7d590f 100644
--- a/inc/lang/vi/lang.php
+++ b/inc/lang/vi/lang.php
@@ -59,6 +59,7 @@ $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';
$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['searchcreatepage'] = "Nếu bạn không thấy được những gì bạn đang tìm, bạn có thể tạo một trang mới bằng cách bấm vào nút ''Biên soạn trang này'', khi đó bạn sẽ có 1 trang mới với tên trang chính là tuwfw khóa bạn đã tìm kiếm.";
$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.';
diff --git a/inc/lang/vi/searchpage.txt b/inc/lang/vi/searchpage.txt
index 7ded7a808..c0c748545 100644
--- a/inc/lang/vi/searchpage.txt
+++ b/inc/lang/vi/searchpage.txt
@@ -1,5 +1,5 @@
====== Tìm ======
-Sau đây là kết quả mà bạn đã tìm. Nếu bạn không thấy được những gì bạn đang tìm, bạn có thể tạo một trang mới bằng cách bấm vào nút ''Biên soạn trang này'', khi đó bạn sẽ có 1 trang mới với tên trang chính là tuwfw khóa bạn đã tìm kiếm.
+Sau đây là kết quả mà bạn đã tìm. @CREATEPAGEINFO@
===== Kết quả =====
diff --git a/inc/lang/zh-tw/lang.php b/inc/lang/zh-tw/lang.php
index bf7f89130..c5e7da000 100644
--- a/inc/lang/zh-tw/lang.php
+++ b/inc/lang/zh-tw/lang.php
@@ -15,6 +15,7 @@
* @author Danny Lin <danny0838@gmail.com>
* @author Stan <talktostan@gmail.com>
* @author June-Hao Hou <junehao@gmail.com>
+ * @author lioujheyu <lioujheyu@gmail.com>
*/
$lang['encoding'] = 'utf-8';
$lang['direction'] = 'ltr';
@@ -76,6 +77,7 @@ $lang['badpassconfirm'] = '抱歉,這密碼是錯的';
$lang['minoredit'] = '小修改';
$lang['draftdate'] = '草稿已自動存檔於';
$lang['nosecedit'] = '在您編輯期間,其他使用者修改過本頁面。區段資料已逾時,因此系統載入了全頁,以取代之。';
+$lang['searchcreatepage'] = '若沒找到您想要的,可按下按鈕建立或編輯和查詢關鍵字同名的頁面。';
$lang['regmissing'] = '很抱歉,所有欄位都要填寫。';
$lang['reguexists'] = '很抱歉,有人已使用了這個帳號。';
$lang['regsuccess'] = '使用者帳號已建立,密碼已寄發至該電郵。';
diff --git a/inc/lang/zh-tw/searchpage.txt b/inc/lang/zh-tw/searchpage.txt
index e0f04c433..96680019d 100644
--- a/inc/lang/zh-tw/searchpage.txt
+++ b/inc/lang/zh-tw/searchpage.txt
@@ -1,5 +1,5 @@
====== 搜尋精靈 ======
-提示:您可以在下面找到您的搜尋結果。若沒找到您想要的,可按下按鈕建立或編輯和查詢關鍵字同名的頁面。
+提示:您可以在下面找到您的搜尋結果。@CREATEPAGEINFO@
===== 搜尋結果 =====
diff --git a/inc/lang/zh/lang.php b/inc/lang/zh/lang.php
index 797a9b7a1..d960eb799 100644
--- a/inc/lang/zh/lang.php
+++ b/inc/lang/zh/lang.php
@@ -85,6 +85,7 @@ $lang['badpassconfirm'] = '对不起,密码错误';
$lang['minoredit'] = '细微修改';
$lang['draftdate'] = '草稿自动保存于';
$lang['nosecedit'] = '在您编辑期间本页刚被他人修改过,局部信息已过期,故载入全页。';
+$lang['searchcreatepage'] = '如果没有找到您想要的东西,您可以使用相应的按钮来创建或编辑该页面。';
$lang['regmissing'] = '对不起,您必须填写所有的字段。';
$lang['reguexists'] = '对不起,该用户名已经存在。';
$lang['regsuccess'] = '新用户已建立,密码将通过电子邮件发送给您。';
diff --git a/inc/lang/zh/searchpage.txt b/inc/lang/zh/searchpage.txt
index 8222e242c..be7ae7909 100644
--- a/inc/lang/zh/searchpage.txt
+++ b/inc/lang/zh/searchpage.txt
@@ -1,5 +1,5 @@
====== 搜索 ======
-下面将显示您的搜索结果。如果没有找到您想要的东西,您可以使用相应的按钮来创建或编辑该页面。
+下面将显示您的搜索结果。@CREATEPAGEINFO@
===== 搜索结果 ===== \ No newline at end of file
diff --git a/inc/mail.php b/inc/mail.php
index 9994ac63e..9f1b1f3d6 100644
--- a/inc/mail.php
+++ b/inc/mail.php
@@ -27,7 +27,7 @@ if(!defined('MAILHEADER_EOL')) define('MAILHEADER_EOL',"\n");
* Check if a given mail address is valid
*/
if (!defined('RFC2822_ATEXT')) define('RFC2822_ATEXT',"0-9a-zA-Z!#$%&'*+/=?^_`{|}~-");
-if (!defined('PREG_PATTERN_VALID_EMAIL')) define('PREG_PATTERN_VALID_EMAIL', '['.RFC2822_ATEXT.']+(?:\.['.RFC2822_ATEXT.']+)*@(?i:[0-9a-z][0-9a-z-]*\.)+(?i:[a-z]{2,4}|museum|travel)');
+if (!defined('PREG_PATTERN_VALID_EMAIL')) define('PREG_PATTERN_VALID_EMAIL', '['.RFC2822_ATEXT.']+(?:\.['.RFC2822_ATEXT.']+)*@(?i:[0-9a-z][0-9a-z-]*\.)+(?i:[a-z]{2,63})');
/**
* Prepare mailfrom replacement patterns
diff --git a/inc/media.php b/inc/media.php
index 4ad67369d..c77f3f952 100644
--- a/inc/media.php
+++ b/inc/media.php
@@ -636,11 +636,11 @@ function media_notify($id,$file,$mime,$old_rev=false){
/**
* List all files in a given Media namespace
*
- * @param string $ns
+ * @param string $ns namespace
* @param null|int $auth permission level
* @param string $jump id
* @param bool $fullscreenview
- * @param bool|string $sort sorting order
+ * @param bool|string $sort sorting order, false skips sorting
*/
function media_filelist($ns,$auth=null,$jump='',$fullscreenview=false,$sort=false){
global $conf;
diff --git a/inc/pageutils.php b/inc/pageutils.php
index b9c6418e2..2fbcbfd1f 100644
--- a/inc/pageutils.php
+++ b/inc/pageutils.php
@@ -256,7 +256,13 @@ function sectionID($title,&$check) {
* @param bool $clean flag indicating that $id should be cleaned (see wikiFN as well)
* @return bool exists?
*/
-function page_exists($id,$rev='',$clean=true) {
+function page_exists($id,$rev='',$clean=true, $date_at=false) {
+ if($rev !== '' && $date_at) {
+ $pagelog = new PageChangeLog($id);
+ $pagelog_rev = $pagelog->getLastRevisionAt($rev);
+ if($pagelog_rev !== false)
+ $rev = $pagelog_rev;
+ }
return @file_exists(wikiFN($id,$rev,$clean));
}
@@ -487,9 +493,17 @@ function resolve_id($ns,$id,$clean=true){
* @param string &$page (reference) relative media id, updated to resolved id
* @param bool &$exists (reference) updated with existance of media
*/
-function resolve_mediaid($ns,&$page,&$exists){
+function resolve_mediaid($ns,&$page,&$exists,$rev='',$date_at=false){
$page = resolve_id($ns,$page);
- $file = mediaFN($page);
+ if($rev !== '' && $date_at){
+ $medialog = new MediaChangeLog($page);
+ $medialog_rev = $medialog->getLastRevisionAt($rev);
+ if($medialog_rev !== false) {
+ $rev = $medialog_rev;
+ }
+ }
+
+ $file = mediaFN($page,$rev);
$exists = @file_exists($file);
}
@@ -502,7 +516,7 @@ function resolve_mediaid($ns,&$page,&$exists){
* @param string &$page (reference) relative page id, updated to resolved id
* @param bool &$exists (reference) updated with existance of media
*/
-function resolve_pageid($ns,&$page,&$exists){
+function resolve_pageid($ns,&$page,&$exists,$rev='',$date_at=false ){
global $conf;
global $ID;
$exists = false;
@@ -522,20 +536,26 @@ function resolve_pageid($ns,&$page,&$exists){
$page = resolve_id($ns,$page,false); // resolve but don't clean, yet
// get filename (calls clean itself)
- $file = wikiFN($page);
+ if($rev !== '' && $date_at) {
+ $pagelog = new PageChangeLog($page);
+ $pagelog_rev = $pagelog->getLastRevisionAt($rev);
+ if($pagelog_rev !== false)//something found
+ $rev = $pagelog_rev;
+ }
+ $file = wikiFN($page,$rev);
// if ends with colon or slash we have a namespace link
if(in_array(substr($page,-1), array(':', ';')) ||
($conf['useslash'] && substr($page,-1) == '/')){
- if(page_exists($page.$conf['start'])){
+ if(page_exists($page.$conf['start'],$rev,true,$date_at)){
// start page inside namespace
$page = $page.$conf['start'];
$exists = true;
- }elseif(page_exists($page.noNS(cleanID($page)))){
+ }elseif(page_exists($page.noNS(cleanID($page)),$rev,true,$date_at)){
// page named like the NS inside the NS
$page = $page.noNS(cleanID($page));
$exists = true;
- }elseif(page_exists($page)){
+ }elseif(page_exists($page,$rev,true,$date_at)){
// page like namespace exists
$page = $page;
$exists = true;
@@ -552,7 +572,7 @@ function resolve_pageid($ns,&$page,&$exists){
}else{
$try = $page.'s';
}
- if(page_exists($try)){
+ if(page_exists($try,$rev,true,$date_at)){
$page = $try;
$exists = true;
}
diff --git a/inc/parser/handler.php b/inc/parser/handler.php
index 0e7b294e5..d96a01a60 100644
--- a/inc/parser/handler.php
+++ b/inc/parser/handler.php
@@ -71,6 +71,7 @@ class Doku_Handler {
*/
function plugin($match, $state, $pos, $pluginname){
$data = array($match);
+ /** @var DokuWiki_Syntax_Plugin $plugin */
$plugin = plugin_load('syntax',$pluginname);
if($plugin != null){
$data = $plugin->handle($match, $state, $pos, $this);
@@ -808,6 +809,8 @@ class Doku_Handler_List {
var $listCalls = array();
var $listStack = array();
+ const NODE = 1;
+
function Doku_Handler_List(& $CallWriter) {
$this->CallWriter = & $CallWriter;
}
@@ -859,7 +862,8 @@ class Doku_Handler_List {
$depth = $this->interpretSyntax($call[1][0], $listType);
$this->initialDepth = $depth;
- $this->listStack[] = array($listType, $depth);
+ // array(list type, current depth, index of current listitem_open)
+ $this->listStack[] = array($listType, $depth, 1);
$this->listCalls[] = array('list'.$listType.'_open',array(),$call[2]);
$this->listCalls[] = array('listitem_open',array(1),$call[2]);
@@ -884,6 +888,7 @@ class Doku_Handler_List {
function listOpen($call) {
$depth = $this->interpretSyntax($call[1][0], $listType);
$end = end($this->listStack);
+ $key = key($this->listStack);
// Not allowed to be shallower than initialDepth
if ( $depth < $this->initialDepth ) {
@@ -900,6 +905,9 @@ class Doku_Handler_List {
$this->listCalls[] = array('listitem_open',array($depth-1),$call[2]);
$this->listCalls[] = array('listcontent_open',array(),$call[2]);
+ // new list item, update list stack's index into current listitem_open
+ $this->listStack[$key][2] = count($this->listCalls) - 2;
+
// Switched list type...
} else {
@@ -911,7 +919,7 @@ class Doku_Handler_List {
$this->listCalls[] = array('listcontent_open',array(),$call[2]);
array_pop($this->listStack);
- $this->listStack[] = array($listType, $depth);
+ $this->listStack[] = array($listType, $depth, count($this->listCalls) - 2);
}
//------------------------------------------------------------------------
@@ -923,7 +931,10 @@ class Doku_Handler_List {
$this->listCalls[] = array('listitem_open', array($depth-1), $call[2]);
$this->listCalls[] = array('listcontent_open',array(),$call[2]);
- $this->listStack[] = array($listType, $depth);
+ // set the node/leaf state of this item's parent listitem_open to NODE
+ $this->listCalls[$this->listStack[$key][2]][1][1] = self::NODE;
+
+ $this->listStack[] = array($listType, $depth, count($this->listCalls) - 2);
//------------------------------------------------------------------------
// Getting shallower ( $depth < $end[1] )
@@ -937,6 +948,7 @@ class Doku_Handler_List {
while (1) {
$end = end($this->listStack);
+ $key = key($this->listStack);
if ( $end[1] <= $depth ) {
@@ -949,6 +961,9 @@ class Doku_Handler_List {
$this->listCalls[] = array('listitem_open',array($depth-1),$call[2]);
$this->listCalls[] = array('listcontent_open',array(),$call[2]);
+ // new list item, update list stack's index into current listitem_open
+ $this->listStack[$key][2] = count($this->listCalls) - 2;
+
} else {
// Switching list type...
$this->listCalls[] = array('list'.$end[0].'_close', array(), $call[2]);
@@ -957,7 +972,7 @@ class Doku_Handler_List {
$this->listCalls[] = array('listcontent_open',array(),$call[2]);
array_pop($this->listStack);
- $this->listStack[] = array($listType, $depth);
+ $this->listStack[] = array($listType, $depth, count($this->listCalls) - 2);
}
break;
diff --git a/inc/parser/metadata.php b/inc/parser/metadata.php
index 3fc5d1c9a..ac8fd2130 100644
--- a/inc/parser/metadata.php
+++ b/inc/parser/metadata.php
@@ -251,8 +251,9 @@ class Doku_Renderer_metadata extends Doku_Renderer {
* Open a list item
*
* @param int $level the nesting level
+ * @param bool $node true when a node; false when a leaf
*/
- function listitem_open($level) {
+ function listitem_open($level,$node=false) {
$this->cdata(str_repeat(DOKU_TAB, $level).'* ');
}
diff --git a/inc/parser/renderer.php b/inc/parser/renderer.php
index 6c074e43e..e1d28267a 100644
--- a/inc/parser/renderer.php
+++ b/inc/parser/renderer.php
@@ -343,8 +343,9 @@ class Doku_Renderer extends DokuWiki_Plugin {
* Open a list item
*
* @param int $level the nesting level
+ * @param bool $node true when a node; false when a leaf
*/
- function listitem_open($level) {
+ function listitem_open($level,$node=false) {
}
/**
diff --git a/inc/parser/xhtml.php b/inc/parser/xhtml.php
index c17c984d6..f1703111e 100644
--- a/inc/parser/xhtml.php
+++ b/inc/parser/xhtml.php
@@ -28,6 +28,7 @@ class Doku_Renderer_xhtml extends Doku_Renderer {
/** @var array A stack of section edit data */
protected $sectionedits = array();
+ var $date_at = ''; // link pages and media against this revision
/** @var int last section edit id, used by startSectionEdit */
protected $lastsecid = 0;
@@ -456,9 +457,11 @@ class Doku_Renderer_xhtml extends Doku_Renderer {
* Open a list item
*
* @param int $level the nesting level
+ * @param bool $node true when a node; false when a leaf
*/
- function listitem_open($level) {
- $this->doc .= '<li class="level'.$level.'">';
+ function listitem_open($level, $node=false) {
+ $branching = $node ? ' node' : '';
+ $this->doc .= '<li class="level'.$level.$branching.'">';
}
/**
@@ -819,7 +822,7 @@ class Doku_Renderer_xhtml extends Doku_Renderer {
$default = $this->_simpleTitle($id);
// now first resolve and clean up the $id
- resolve_pageid(getNS($ID), $id, $exists);
+ resolve_pageid(getNS($ID), $id, $exists, $this->date_at, true);
$link = array();
$name = $this->_getLinkTitle($name, $default, $isImage, $id, $linktype);
@@ -848,11 +851,14 @@ class Doku_Renderer_xhtml extends Doku_Renderer {
$link['pre'] = '<span class="curid">';
$link['suf'] = '</span>';
}
- $link['more'] = '';
- $link['class'] = $class;
- $link['url'] = wl($id, $params);
- $link['name'] = $name;
- $link['title'] = $id;
+ $link['more'] = '';
+ $link['class'] = $class;
+ if($this->date_at) {
+ $params['at'] = $this->date_at;
+ }
+ $link['url'] = wl($id, $params);
+ $link['name'] = $name;
+ $link['title'] = $id;
//add search string
if($search) {
($conf['userewrite']) ? $link['url'] .= '?' : $link['url'] .= '&amp;';
@@ -999,6 +1005,7 @@ class Doku_Renderer_xhtml extends Doku_Renderer {
$link['title'] = $this->_xmlEntities($url);
$url = str_replace('\\', '/', $url);
+ $url = ltrim($url,'/');
$url = 'file:///'.$url;
$link['url'] = $url;
@@ -1066,7 +1073,7 @@ class Doku_Renderer_xhtml extends Doku_Renderer {
$height = null, $cache = null, $linking = null, $return = false) {
global $ID;
list($src, $hash) = explode('#', $src, 2);
- resolve_mediaid(getNS($ID), $src, $exists);
+ resolve_mediaid(getNS($ID), $src, $exists, $this->date_at, true);
$noLink = false;
$render = ($linking == 'linkonly') ? false : true;
@@ -1074,7 +1081,7 @@ class Doku_Renderer_xhtml extends Doku_Renderer {
list($ext, $mime) = mimetype($src, false);
if(substr($mime, 0, 5) == 'image' && $render) {
- $link['url'] = ml($src, array('id' => $ID, 'cache' => $cache), ($linking == 'direct'));
+ $link['url'] = ml($src, array('id' => $ID, 'cache' => $cache, 'rev'=>$this->_getLastMediaRevisionAt($src)), ($linking == 'direct'));
} elseif(($mime == 'application/x-shockwave-flash' || media_supportedav($mime)) && $render) {
// don't link movies
$noLink = true;
@@ -1082,7 +1089,7 @@ class Doku_Renderer_xhtml extends Doku_Renderer {
// add file icons
$class = preg_replace('/[^_\-a-z0-9]+/i', '_', $ext);
$link['class'] .= ' mediafile mf_'.$class;
- $link['url'] = ml($src, array('id' => $ID, 'cache' => $cache), true);
+ $link['url'] = ml($src, array('id' => $ID, 'cache' => $cache , 'rev'=>$this->_getLastMediaRevisionAt($src)), true);
if($exists) $link['title'] .= ' ('.filesize_h(filesize(mediaFN($src))).')';
}
@@ -1440,7 +1447,7 @@ class Doku_Renderer_xhtml extends Doku_Renderer {
return $title;
}
//add image tag
- $ret .= '<img src="'.ml($src, array('w' => $width, 'h' => $height, 'cache' => $cache)).'"';
+ $ret .= '<img src="'.ml($src, array('w' => $width, 'h' => $height, 'cache' => $cache, 'rev'=>$this->_getLastMediaRevisionAt($src))).'"';
$ret .= ' class="media'.$align.'"';
if($title) {
@@ -1585,7 +1592,7 @@ class Doku_Renderer_xhtml extends Doku_Renderer {
// see internalmedia() and externalmedia()
list($img['src']) = explode('#', $img['src'], 2);
if($img['type'] == 'internalmedia') {
- resolve_mediaid(getNS($ID), $img['src'], $exists);
+ resolve_mediaid(getNS($ID), $img['src'], $exists ,$this->date_at, true);
}
return $this->_media(
@@ -1744,6 +1751,21 @@ class Doku_Renderer_xhtml extends Doku_Renderer {
$out .= '</audio>'.NL;
return $out;
}
+
+ /**
+ * _getLastMediaRevisionAt is a helperfunction to internalmedia() and _media()
+ * which returns an existing media revision less or equal to rev or date_at
+ *
+ * @author lisps
+ * @param string $media_id
+ * @access protected
+ * @return string revision ('' for current)
+ */
+ function _getLastMediaRevisionAt($media_id){
+ if(!$this->date_at || media_isexternal($media_id)) return '';
+ $pagelog = new MediaChangeLog($media_id);
+ return $pagelog->getLastRevisionAt($this->date_at);
+ }
#endregion
}
diff --git a/inc/parserutils.php b/inc/parserutils.php
index 4371f1928..3ef8138a7 100644
--- a/inc/parserutils.php
+++ b/inc/parserutils.php
@@ -61,7 +61,7 @@ define('METADATA_RENDER_UNLIMITED', 4);
* @param bool $excuse
* @return null|string
*/
-function p_wiki_xhtml($id, $rev='', $excuse=true){
+function p_wiki_xhtml($id, $rev='', $excuse=true,$date_at=''){
$file = wikiFN($id,$rev);
$ret = '';
@@ -70,9 +70,9 @@ function p_wiki_xhtml($id, $rev='', $excuse=true){
$keep = $ID;
$ID = $id;
- if($rev){
+ if($rev || $date_at){
if(@file_exists($file)){
- $ret = p_render('xhtml',p_get_instructions(io_readWikiPage($file,$id,$rev)),$info); //no caching on old revisions
+ $ret = p_render('xhtml',p_get_instructions(io_readWikiPage($file,$id,$rev)),$info,$date_at); //no caching on old revisions
}elseif($excuse){
$ret = p_locale_xhtml('norev');
}
@@ -620,7 +620,7 @@ function p_sort_modes($a, $b){
* @param array $info returns render info like enabled toc and cache
* @return null|string rendered output
*/
-function p_render($mode,$instructions,&$info){
+function p_render($mode,$instructions,&$info,$date_at=''){
if(is_null($instructions)) return '';
if($instructions === false) return '';
@@ -629,6 +629,10 @@ function p_render($mode,$instructions,&$info){
$Renderer->reset();
+ if($date_at) {
+ $Renderer->date_at = $date_at;
+ }
+
$Renderer->smileys = getSmileys();
$Renderer->entities = getEntities();
$Renderer->acronyms = getAcronyms();
@@ -674,6 +678,7 @@ function p_get_renderer($mode) {
}
// not bundled, see if its an enabled renderer plugin & when $mode is 'xhtml', the renderer can supply that format.
+ /** @var Doku_Renderer $Renderer */
$Renderer = $plugin_controller->load('renderer',$rname);
if ($Renderer && is_a($Renderer, 'Doku_Renderer') && ($mode != 'xhtml' || $mode == $Renderer->getFormat())) {
return $Renderer;
diff --git a/inc/plugin.php b/inc/plugin.php
index 3bab560cb..9d9b2044c 100644
--- a/inc/plugin.php
+++ b/inc/plugin.php
@@ -30,7 +30,7 @@ class DokuWiki_Plugin {
* desc - Short description of the plugin (Text only)
* url - Website with more information on the plugin (eg. syntax description)
*/
- function getInfo() {
+ public function getInfo(){
$parts = explode('_', get_class($this));
$info = DOKU_PLUGIN . '/' . $parts[2] . '/plugin.info.txt';
if(@file_exists($info)) return confToHash($info);
@@ -51,7 +51,7 @@ class DokuWiki_Plugin {
/**
* @return string plugin type
*/
- function getPluginType() {
+ public function getPluginType() {
list($t) = explode('_', get_class($this), 2);
return $t;
}
@@ -59,7 +59,7 @@ class DokuWiki_Plugin {
/**
* @return string plugin name
*/
- function getPluginName() {
+ public function getPluginName() {
list(/* $t */, /* $p */, $n) = explode('_', get_class($this), 4);
return $n;
}
@@ -67,7 +67,7 @@ class DokuWiki_Plugin {
/**
* @return string component name
*/
- function getPluginComponent() {
+ public function getPluginComponent() {
list(/* $t */, /* $p */, /* $n */, $c) = explode('_', get_class($this), 4);
return (isset($c)?$c:'');
}
@@ -82,7 +82,7 @@ class DokuWiki_Plugin {
* @param string $id id of the string to be retrieved
* @return string string in appropriate language or english if not available
*/
- function getLang($id) {
+ public function getLang($id) {
if (!$this->localised) $this->setupLocale();
return (isset($this->lang[$id]) ? $this->lang[$id] : '');
@@ -97,7 +97,7 @@ class DokuWiki_Plugin {
* @param string $id id of language dependent wiki page
* @return string parsed contents of the wiki page in xhtml format
*/
- function locale_xhtml($id) {
+ public function locale_xhtml($id) {
return p_cached_output($this->localFN($id));
}
@@ -108,7 +108,7 @@ class DokuWiki_Plugin {
* @param string $id id of localization file
* @return string wiki text
*/
- function localFN($id) {
+ public function localFN($id) {
global $conf;
$plugin = $this->getPluginName();
$file = DOKU_CONF.'plugin_lang/'.$plugin.'/'.$conf['lang'].'/'.$id.'.txt';
@@ -127,16 +127,29 @@ class DokuWiki_Plugin {
* this function is automatically called by getLang()
*/
function setupLocale() {
- if ($this->localised) return;
+ if($this->localised) return;
- global $conf; // definitely don't invoke "global $lang"
- $path = DOKU_PLUGIN.$this->getPluginName().'/lang/';
+ global $conf, $config_cascade; // definitely don't invoke "global $lang"
+ $path = DOKU_PLUGIN . $this->getPluginName() . '/lang/';
$lang = array();
// don't include once, in case several plugin components require the same language file
- @include($path.'en/lang.php');
- if ($conf['lang'] != 'en') @include($path.$conf['lang'].'/lang.php');
+ @include($path . 'en/lang.php');
+ foreach($config_cascade['lang']['plugin'] as $config_file) {
+ if(@file_exists($config_file . $this->getPluginName() . '/en/lang.php')) {
+ include($config_file . $this->getPluginName() . '/en/lang.php');
+ }
+ }
+
+ if($conf['lang'] != 'en') {
+ @include($path . $conf['lang'] . '/lang.php');
+ foreach($config_cascade['lang']['plugin'] as $config_file) {
+ if(@file_exists($config_file . $this->getPluginName() . '/' . $conf['lang'] . '/lang.php')) {
+ include($config_file . $this->getPluginName() . '/' . $conf['lang'] . '/lang.php');
+ }
+ }
+ }
$this->lang = $lang;
$this->localised = true;
@@ -152,7 +165,7 @@ class DokuWiki_Plugin {
* @param mixed $notset what to return if the setting is not available
* @return mixed
*/
- function getConf($setting, $notset=false){
+ public function getConf($setting, $notset=false){
if (!$this->configloaded){ $this->loadConfig(); }
@@ -189,7 +202,7 @@ class DokuWiki_Plugin {
*
* @return array setting => value
*/
- function readDefaultSettings() {
+ protected function readDefaultSettings() {
$path = DOKU_PLUGIN.$this->getPluginName().'/conf/';
$conf = array();
@@ -210,7 +223,7 @@ class DokuWiki_Plugin {
* @param bool $msg if a message should be displayed in case the plugin is not available
* @return DokuWiki_Plugin|null helper plugin object
*/
- function loadHelper($name, $msg = true){
+ public function loadHelper($name, $msg = true){
$obj = plugin_load('helper',$name);
if (is_null($obj) && $msg) msg("Helper plugin $name is not available or invalid.",-1);
return $obj;
@@ -229,7 +242,7 @@ class DokuWiki_Plugin {
* @param string $more
* @return string html
*/
- function email($email, $name='', $class='', $more='') {
+ public function email($email, $name='', $class='', $more='') {
if (!$email) return $name;
$email = obfuscate($email);
if (!$name) $name = $email;
@@ -248,7 +261,7 @@ class DokuWiki_Plugin {
* @param string $more
* @return string
*/
- function external_link($link, $title='', $class='', $target='', $more='') {
+ public function external_link($link, $title='', $class='', $target='', $more='') {
global $conf;
$link = htmlentities($link);
@@ -276,7 +289,7 @@ class DokuWiki_Plugin {
* @param array $arguments
* @return null|string
*/
- function __call($name, $arguments) {
+ public function __call($name, $arguments) {
if($name == 'render'){
dbg_deprecated('render_text()');
if(!isset($arguments[1])) $arguments[1] = 'xhtml';
@@ -294,7 +307,7 @@ class DokuWiki_Plugin {
* @param string $format output format
* @return null|string
*/
- function render_text($text, $format='xhtml') {
+ public function render_text($text, $format='xhtml') {
return p_render($format, p_get_instructions($text),$info);
}
@@ -303,7 +316,7 @@ class DokuWiki_Plugin {
*
* @return bool false if the plugin has to be instantiated
*/
- function isSingleton() {
+ public function isSingleton() {
return true;
}
}
diff --git a/inc/plugincontroller.class.php b/inc/plugincontroller.class.php
index 21d227ee4..dfd4d0a29 100644
--- a/inc/plugincontroller.class.php
+++ b/inc/plugincontroller.class.php
@@ -178,8 +178,10 @@ class Doku_Plugin_Controller {
// to keep everything simple we just skip the plugin completely
continue;
} elseif (@file_exists(DOKU_PLUGIN.$plugin.'/disabled')) {
- // treat this as a default disabled plugin(over-rideable by the plugin manager)
- // deprecated 2011-09-10 (usage of disabled files)
+ /**
+ * treat this as a default disabled plugin(over-rideable by the plugin manager)
+ * @deprecated 2011-09-10 (usage of disabled files)
+ */
if (empty($this->plugin_cascade['local'][$plugin])) {
$all_plugins[$plugin] = 0;
} else {
diff --git a/inc/template.php b/inc/template.php
index 6bb6275f3..3bccb0bd8 100644
--- a/inc/template.php
+++ b/inc/template.php
@@ -171,8 +171,9 @@ function tpl_content_core() {
break;
default:
$evt = new Doku_Event('TPL_ACT_UNKNOWN', $ACT);
- if($evt->advise_before())
+ if($evt->advise_before()) {
msg("Failed to handle command: ".hsc($ACT), -1);
+ }
$evt->advise_after();
unset($evt);
return false;
@@ -467,8 +468,8 @@ function _tpl_metaheaders_action($data) {
* @param string $url
* @param string $name
* @param string $more
- * @param bool $return return html
- * @return bool|string html or true
+ * @param bool $return if true return the link html, otherwise print
+ * @return bool|string html of the link, or true if printed
*/
function tpl_link($url, $name, $more = '', $return = false) {
$out = '<a href="'.$url.'" ';
@@ -488,7 +489,7 @@ function tpl_link($url, $name, $more = '', $return = false) {
*
* @param string $id page id
* @param string|null $name the name of the link
- * @return bool
+ * @return bool true
*/
function tpl_pagelink($id, $name = null) {
print '<bdi>'.html_wikilink($id, $name).'</bdi>';
@@ -559,11 +560,11 @@ function tpl_button($type, $return = false) {
* @author Adrian Lang <mail@adrianlang.de>
* @see tpl_get_action
*
- * @param string $type action command
- * @param string $pre prefix of link
- * @param string $suf suffix of link
- * @param string $inner innerHML of link
- * @param bool $return
+ * @param string $type action command
+ * @param string $pre prefix of link
+ * @param string $suf suffix of link
+ * @param string $inner innerHML of link
+ * @param bool $return if true it returns html, otherwise prints
* @return bool|string html or false if no data, true if printed
*/
function tpl_actionlink($type, $pre = '', $suf = '', $inner = '', $return = false) {
@@ -1066,9 +1067,9 @@ function tpl_pagetitle($id = null, $ret = false) {
*
* @author Andreas Gohr <andi@splitbrain.org>
*
- * @param array|string $tags tags to try
+ * @param array|string $tags tag or array of tags to try
* @param string $alt alternative output if no data was found
- * @param null|string $src the image src, uses global $SRC if not given
+ * @param null|string $src the image src, uses global $SRC if not given
* @return string
*/
function tpl_img_getTag($tags, $alt = '', $src = null) {
@@ -1162,6 +1163,7 @@ function tpl_img($maxwidth = 0, $maxheight = 0, $link = true, $params = null) {
global $IMG;
/** @var Input $INPUT */
global $INPUT;
+ global $REV;
$w = tpl_img_getTag('File.Width');
$h = tpl_img_getTag('File.Height');
@@ -1186,8 +1188,8 @@ function tpl_img($maxwidth = 0, $maxheight = 0, $link = true, $params = null) {
}
//prepare URLs
- $url = ml($IMG, array('cache'=> $INPUT->str('cache')), true, '&');
- $src = ml($IMG, array('cache'=> $INPUT->str('cache'), 'w'=> $w, 'h'=> $h), true, '&');
+ $url = ml($IMG, array('cache'=> $INPUT->str('cache'),'rev'=>$REV), true, '&');
+ $src = ml($IMG, array('cache'=> $INPUT->str('cache'),'rev'=>$REV, 'w'=> $w, 'h'=> $h), true, '&');
//prepare attributes
$alt = tpl_img_getTag('Simple.Title');
@@ -1316,16 +1318,29 @@ function tpl_getLang($id) {
static $lang = array();
if(count($lang) === 0) {
- $path = tpl_incdir().'lang/';
+ global $conf, $config_cascade; // definitely don't invoke "global $lang"
+
+ $path = tpl_incdir() . 'lang/';
$lang = array();
- global $conf; // definitely don't invoke "global $lang"
// don't include once
- @include($path.'en/lang.php');
- if($conf['lang'] != 'en') @include($path.$conf['lang'].'/lang.php');
- }
+ @include($path . 'en/lang.php');
+ foreach($config_cascade['lang']['template'] as $config_file) {
+ if(@file_exists($config_file . $conf['template'] . '/en/lang.php')) {
+ include($config_file . $conf['template'] . '/en/lang.php');
+ }
+ }
+ if($conf['lang'] != 'en') {
+ @include($path . $conf['lang'] . '/lang.php');
+ foreach($config_cascade['lang']['template'] as $config_file) {
+ if(@file_exists($config_file . $conf['template'] . '/' . $conf['lang'] . '/lang.php')) {
+ include($config_file . $conf['template'] . '/' . $conf['lang'] . '/lang.php');
+ }
+ }
+ }
+ }
return $lang[$id];
}
@@ -1349,7 +1364,7 @@ function tpl_locale_xhtml($id) {
function tpl_localeFN($id) {
$path = tpl_incdir().'lang/';
global $conf;
- $file = DOKU_CONF.'/template_lang/'.$conf['template'].'/'.$conf['lang'].'/'.$id.'.txt';
+ $file = DOKU_CONF.'template_lang/'.$conf['template'].'/'.$conf['lang'].'/'.$id.'.txt';
if (!@file_exists($file)){
$file = $path.$conf['lang'].'/'.$id.'.txt';
if(!@file_exists($file)){
@@ -1372,7 +1387,7 @@ function tpl_localeFN($id) {
* @triggers MEDIAMANAGER_CONTENT_OUTPUT
* @param bool $fromajax - set true when calling this function via ajax
* @param string $sort
-
+ *
* @author Andreas Gohr <andi@splitbrain.org>
*/
function tpl_mediaContent($fromajax = false, $sort='natural') {
diff --git a/install.php b/install.php
index 71c2457dc..d031cb3d9 100644
--- a/install.php
+++ b/install.php
@@ -58,7 +58,6 @@ $dokuwiki_hash = array(
'2013-05-10' => '7b62b75245f57f122d3e0f8ed7989623',
'2013-12-08' => '263c76af309fbf083867c18a34ff5214',
'2014-05-05' => '263c76af309fbf083867c18a34ff5214',
- 'devel' => 'b3ddc3f793eac8c135176e535054c00a',
);
@@ -557,8 +556,8 @@ function check_functions(){
global $lang;
$ok = true;
- if(version_compare(phpversion(),'5.2.0','<')){
- $error[] = sprintf($lang['i_phpver'],phpversion(),'5.2.0');
+ if(version_compare(phpversion(),'5.3.3','<')){
+ $error[] = sprintf($lang['i_phpver'],phpversion(),'5.3.3');
$ok = false;
}
diff --git a/lib/exe/css.php b/lib/exe/css.php
index 2212656d2..77674d251 100644
--- a/lib/exe/css.php
+++ b/lib/exe/css.php
@@ -166,8 +166,11 @@ function css_out(){
* @return string
*/
function css_parseless($css) {
+ global $conf;
+
$less = new lessc();
$less->importDir[] = DOKU_INC;
+ $less->setPreserveComments(!$conf['compress']);
if (defined('DOKU_UNITTEST')){
$less->importDir[] = TMP_DIR;
@@ -431,7 +434,7 @@ class DokuCssFile {
protected $filepath; // file system path to the CSS/Less file
protected $location; // base url location of the CSS/Less file
- private $relative_path = null;
+ protected $relative_path = null;
public function __construct($file) {
$this->filepath = $file;
@@ -464,7 +467,7 @@ class DokuCssFile {
*
* @return string relative file system path
*/
- private function getRelativePath(){
+ protected function getRelativePath(){
if (is_null($this->relative_path)) {
$basedir = array(DOKU_INC);
diff --git a/lib/exe/detail.php b/lib/exe/detail.php
index cd3f362ad..cc29d5b87 100644
--- a/lib/exe/detail.php
+++ b/lib/exe/detail.php
@@ -5,6 +5,7 @@ require_once(DOKU_INC.'inc/init.php');
$IMG = getID('media');
$ID = cleanID($INPUT->str('id'));
+$REV = $INPUT->int('rev');
// this makes some general info available as well as the info about the
// "parent" page
@@ -35,7 +36,7 @@ $ERROR = false;
$AUTH = auth_quickaclcheck($IMG);
if($AUTH >= AUTH_READ){
// check if image exists
- $SRC = mediaFN($IMG);
+ $SRC = mediaFN($IMG,$REV);
if(!@file_exists($SRC)){
//doesn't exist!
http_status(404);
diff --git a/lib/exe/js.php b/lib/exe/js.php
index 97f2b52c3..ec236e98f 100644
--- a/lib/exe/js.php
+++ b/lib/exe/js.php
@@ -305,7 +305,11 @@ function js_compress($s){
// items that don't need spaces next to them
$chars = "^&|!+\-*\/%=\?:;,{}()<>% \t\n\r'\"[]";
- $regex_starters = array("(", "=", "[", "," , ":", "!");
+ // items which need a space if the sign before and after whitespace is equal.
+ // E.g. '+ ++' may not be compressed to '+++' --> syntax error.
+ $ops = "+-";
+
+ $regex_starters = array("(", "=", "[", "," , ":", "!", "&", "|");
$whitespaces_chars = array(" ", "\t", "\n", "\r", "\0", "\x0B");
@@ -405,19 +409,27 @@ function js_compress($s){
// whitespaces
if( $ch == ' ' || $ch == "\r" || $ch == "\n" || $ch == "\t" ){
- // leading spaces
- if($i+1 < $slen && (strpos($chars,$s[$i+1]) !== false)){
- $i = $i + 1;
- continue;
- }
- // trailing spaces
- // if this ch is space AND the last char processed
- // is special, then skip the space
$lch = substr($result,-1);
- if($lch && (strpos($chars,$lch) !== false)){
- $i = $i + 1;
- continue;
+
+ // Only consider deleting whitespace if the signs before and after
+ // are not equal and are not an operator which may not follow itself.
+ if ((!$lch || $s[$i+1] == ' ')
+ || $lch != $s[$i+1]
+ || strpos($ops,$s[$i+1]) === false) {
+ // leading spaces
+ if($i+1 < $slen && (strpos($chars,$s[$i+1]) !== false)){
+ $i = $i + 1;
+ continue;
+ }
+ // trailing spaces
+ // if this ch is space AND the last char processed
+ // is special, then skip the space
+ if($lch && (strpos($chars,$lch) !== false)){
+ $i = $i + 1;
+ continue;
+ }
}
+
// else after all of this convert the "whitespace" to
// a single space. It will get appended below
$ch = ' ';
diff --git a/lib/images/smileys/index.php b/lib/images/smileys/index.php
index 9a2905b33..4167eda5b 100644
--- a/lib/images/smileys/index.php
+++ b/lib/images/smileys/index.php
@@ -1,7 +1,7 @@
<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
- <title>simleys</title>
+ <title>smileys</title>
<style type="text/css">
body {
diff --git a/lib/plugins/acl/lang/eu/lang.php b/lib/plugins/acl/lang/eu/lang.php
index f051523d9..bb6ab964a 100644
--- a/lib/plugins/acl/lang/eu/lang.php
+++ b/lib/plugins/acl/lang/eu/lang.php
@@ -1,7 +1,8 @@
<?php
+
/**
- * Basque language file
- *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
* @author Inko Illarramendi <inko.i.a@gmail.com>
* @author Zigor Astarbe <astarbe@gmail.com>
*/
diff --git a/lib/plugins/auth.php b/lib/plugins/auth.php
index 021bc5d4b..4799b3a38 100644
--- a/lib/plugins/auth.php
+++ b/lib/plugins/auth.php
@@ -132,7 +132,7 @@ class DokuWiki_Auth_Plugin extends DokuWiki_Plugin {
$eventdata = array('type' => $type, 'params' => $params, 'modification_result' => null);
$evt = new Doku_Event('AUTH_USER_CHANGE', $eventdata);
if($evt->advise_before(true)) {
- $result = call_user_func_array(array($this, $validTypes[$type]), $params);
+ $result = call_user_func_array(array($this, $validTypes[$type]), $evt->data['params']);
$evt->data['modification_result'] = $result;
}
$evt->advise_after();
diff --git a/lib/plugins/authad/lang/fa/settings.php b/lib/plugins/authad/lang/fa/settings.php
new file mode 100644
index 000000000..161479afb
--- /dev/null
+++ b/lib/plugins/authad/lang/fa/settings.php
@@ -0,0 +1,10 @@
+<?php
+
+/**
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Omid Hezaveh <hezpublic@gmail.com>
+ */
+$lang['admin_password'] = 'رمز کاربر بالایی ';
+$lang['use_ssl'] = 'از اس‌اس‌ال استفاده می‌کنید؟ در این صورت تی‌ال‌اس را در پایین فعال نکنید. ';
+$lang['use_tls'] = 'از تی‌ال‌اس استفاده می‌کنید؟ در این صورت اس‌اس‌ال را در بالا فعال نکنید. ';
diff --git a/lib/plugins/authad/lang/no/lang.php b/lib/plugins/authad/lang/no/lang.php
new file mode 100644
index 000000000..a1c9c7e8a
--- /dev/null
+++ b/lib/plugins/authad/lang/no/lang.php
@@ -0,0 +1,8 @@
+<?php
+
+/**
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Patrick <spill.p@hotmail.com>
+ */
+$lang['domain'] = 'Loggpå-domene';
diff --git a/lib/plugins/authad/lang/no/settings.php b/lib/plugins/authad/lang/no/settings.php
index bab5ce67d..f309ead50 100644
--- a/lib/plugins/authad/lang/no/settings.php
+++ b/lib/plugins/authad/lang/no/settings.php
@@ -4,6 +4,8 @@
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
* @author Christopher Schive <chschive@frisurf.no>
+ * @author Patrick <spill.p@hotmail.com>
*/
+$lang['account_suffix'] = 'Ditt konto-suffiks F. Eks. <code>@my.domain.org</code>';
$lang['admin_password'] = 'Passordet til brukeren over.';
$lang['expirywarn'] = 'Antall dager på forhånd brukeren varsles om at passordet utgår. 0 for å deaktivere.';
diff --git a/lib/plugins/authad/lang/ru/settings.php b/lib/plugins/authad/lang/ru/settings.php
index c9c6d9f88..0212589d7 100644
--- a/lib/plugins/authad/lang/ru/settings.php
+++ b/lib/plugins/authad/lang/ru/settings.php
@@ -8,8 +8,9 @@
* @author Artur <ncuxxx@gmail.com>
* @author Erli Moen <evseev.jr@gmail.com>
* @author Владимир <id37736@yandex.ru>
+ * @author Aleksandr Selivanov <alexgearbox@yandex.ru>
*/
-$lang['account_suffix'] = 'Суффикс вашего аккаунта типа <code>@my.domain.org</code>';
+$lang['account_suffix'] = 'Суффикс вашего аккаунта. Например, <code>@my.domain.org</code>';
$lang['domain_controllers'] = 'Список DNS-серверов, разделенных запятой. Например:<code>srv1.domain.org,srv2.domain.org</code>';
$lang['admin_password'] = 'Пароль для указанного пользователя.';
$lang['sso'] = 'Использовать SSO (Single-Sign-On) через Kerberos или NTLM?';
diff --git a/lib/plugins/authldap/lang/fa/settings.php b/lib/plugins/authldap/lang/fa/settings.php
new file mode 100644
index 000000000..49d485afd
--- /dev/null
+++ b/lib/plugins/authldap/lang/fa/settings.php
@@ -0,0 +1,10 @@
+<?php
+
+/**
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Mohammad Sadegh <msdn2013@gmail.com>
+ * @author Omid Hezaveh <hezpublic@gmail.com>
+ */
+$lang['starttls'] = 'از تی‌ال‌اس (TLS) استفاده می‌کنید؟';
+$lang['bindpw'] = 'رمزعبور کاربر بالا';
diff --git a/lib/plugins/authldap/lang/no/settings.php b/lib/plugins/authldap/lang/no/settings.php
index 6bedb2991..61671ed46 100644
--- a/lib/plugins/authldap/lang/no/settings.php
+++ b/lib/plugins/authldap/lang/no/settings.php
@@ -4,6 +4,8 @@
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
* @author Christopher Schive <chschive@frisurf.no>
+ * @author Patrick <spill.p@hotmail.com>
*/
$lang['port'] = 'LDAP serverport dersom ingen full URL var gitt over.';
$lang['starttls'] = 'Bruke TLS-forbindelser?';
+$lang['bindpw'] = 'Passord til brukeren over';
diff --git a/lib/plugins/authmysql/lang/no/settings.php b/lib/plugins/authmysql/lang/no/settings.php
new file mode 100644
index 000000000..45ab09819
--- /dev/null
+++ b/lib/plugins/authmysql/lang/no/settings.php
@@ -0,0 +1,14 @@
+<?php
+
+/**
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Patrick <spill.p@hotmail.com>
+ */
+$lang['server'] = 'Din MySQL-server';
+$lang['user'] = 'Ditt MySQL-brukernavn';
+$lang['password'] = 'Passord til brukeren';
+$lang['database'] = 'Database som skal brukes';
+$lang['debug_o_0'] = 'ingen';
+$lang['debug_o_1'] = 'bare ved feil';
+$lang['debug_o_2'] = 'alle SQL-forespørsler';
diff --git a/lib/plugins/authpgsql/auth.php b/lib/plugins/authpgsql/auth.php
index 06590fedd..4cb280aae 100644
--- a/lib/plugins/authpgsql/auth.php
+++ b/lib/plugins/authpgsql/auth.php
@@ -159,9 +159,11 @@ class auth_plugin_authpgsql extends auth_plugin_authmysql {
if($first) $sql .= " OFFSET $first";
$result = $this->_queryDB($sql);
- foreach($result as $user)
- if(($info = $this->_getCachedUserInfo($user['user'])))
+ foreach($result as $user) {
+ if(($info = $this->_getUserInfo($user['user']))) {
$out[$user['user']] = $info;
+ }
+ }
$this->_unlockTables();
$this->_closeDB();
diff --git a/lib/plugins/authpgsql/lang/ru/settings.php b/lib/plugins/authpgsql/lang/ru/settings.php
index 65cbce8df..668ba4ef6 100644
--- a/lib/plugins/authpgsql/lang/ru/settings.php
+++ b/lib/plugins/authpgsql/lang/ru/settings.php
@@ -10,7 +10,7 @@
$lang['server'] = 'Ваш PostgreSQL-сервер';
$lang['port'] = 'Порт вашего PostgreSQL-сервера';
$lang['user'] = 'Имя пользователя PostgreSQL';
-$lang['password'] = 'Пароль для указанного пользователя.';
+$lang['password'] = 'Пароль для указанного пользователя';
$lang['database'] = 'Имя базы данных';
$lang['debug'] = 'Отображать дополнительную отладочную информацию';
$lang['checkPass'] = 'Выражение SQL, осуществляющее проверку пароля';
diff --git a/lib/plugins/authplain/_test/escaping.test.php b/lib/plugins/authplain/_test/escaping.test.php
index 5cf631508..9df96389a 100644
--- a/lib/plugins/authplain/_test/escaping.test.php
+++ b/lib/plugins/authplain/_test/escaping.test.php
@@ -13,13 +13,13 @@
*/
class helper_plugin_authplain_escaping_test extends DokuWikiTest {
- protected $pluginsEnabled = array('authplain');
- /** @var auth_plugin_authplain */
+ protected $pluginsEnabled = array('authplainharness');
+ /** @var auth_plugin_authplain|auth_plugin_authplainharness */
protected $auth;
protected function reloadUsers() {
/* auth caches data loaded from file, but recreated object forces reload */
- $this->auth = new auth_plugin_authplain();
+ $this->auth = new auth_plugin_authplainharness();
}
function setUp() {
@@ -77,7 +77,44 @@ class helper_plugin_authplain_escaping_test extends DokuWikiTest {
$this->assertEquals($saved['name'], $user['name']);
$this->assertTrue($this->auth->checkPass("testuser", $user['pass']));
}
+
+ // really only required for developers to ensure this plugin will
+ // work with systems running on PCRE 6.6 and lower.
+ public function testLineSplit(){
+ $this->auth->setPregsplit_safe(false);
+
+ $names = array(
+ 'plain',
+ 'ut-fठ8',
+ 'colon:',
+ 'backslash\\',
+ 'alltogether\\ठ:'
+ );
+ $userpass = 'user:password_hash:';
+ $other_user_data = ':email@address:group1,group2';
+
+ foreach ($names as $testname) {
+ $escaped = str_replace(array('\\',':'),array('\\\\','\\:'),$testname); // escape : & \
+ $test_line = $userpass.$escaped.$other_user_data;
+ $result = $this->auth->splitUserData($test_line);
+
+ $this->assertEquals($escaped, $result[2]);
+ }
+ }
}
-?> \ No newline at end of file
+class auth_plugin_authplainharness extends auth_plugin_authplain {
+
+ public function setPregsplit_safe($bool) {
+ $this->_pregsplit_safe = $bool;
+ }
+
+ public function getPregsplit_safe(){
+ return $this->_pregsplit_safe;
+ }
+
+ public function splitUserData($line){
+ return $this->_splitUserData($line);
+ }
+}
diff --git a/lib/plugins/authplain/auth.php b/lib/plugins/authplain/auth.php
index 1ea75b100..fd2d0b249 100644
--- a/lib/plugins/authplain/auth.php
+++ b/lib/plugins/authplain/auth.php
@@ -17,6 +17,9 @@ class auth_plugin_authplain extends DokuWiki_Auth_Plugin {
/** @var array filter pattern */
protected $_pattern = array();
+ /** @var bool safe version of preg_split */
+ protected $_pregsplit_safe = false;
+
/**
* Constructor
*
@@ -44,6 +47,8 @@ class auth_plugin_authplain extends DokuWiki_Auth_Plugin {
$this->cando['getUsers'] = true;
$this->cando['getUserCount'] = true;
}
+
+ $this->_pregsplit_safe = version_compare(PCRE_VERSION,'6.7','>=');
}
/**
@@ -329,7 +334,7 @@ class auth_plugin_authplain extends DokuWiki_Auth_Plugin {
if(empty($line)) continue;
/* NB: preg_split can be deprecated/replaced with str_getcsv once dokuwiki is min php 5.3 */
- $row = preg_split('/(?<![^\\\\]\\\\)\:/', $line, 5); // allow for : escaped as \:
+ $row = $this->_splitUserData($line);
$row = str_replace('\\:', ':', $row);
$row = str_replace('\\\\', '\\', $row);
@@ -342,6 +347,33 @@ class auth_plugin_authplain extends DokuWiki_Auth_Plugin {
}
}
+ protected function _splitUserData($line){
+ // due to a bug in PCRE 6.6, preg_split will fail with the regex we use here
+ // refer github issues 877 & 885
+ if ($this->_pregsplit_safe){
+ return preg_split('/(?<![^\\\\]\\\\)\:/', $line, 5); // allow for : escaped as \:
+ }
+
+ $row = array();
+ $piece = '';
+ $len = strlen($line);
+ for($i=0; $i<$len; $i++){
+ if ($line[$i]=='\\'){
+ $piece .= $line[$i];
+ $i++;
+ if ($i>=$len) break;
+ } else if ($line[$i]==':'){
+ $row[] = $piece;
+ $piece = '';
+ continue;
+ }
+ $piece .= $line[$i];
+ }
+ $row[] = $piece;
+
+ return $row;
+ }
+
/**
* return true if $user + $info match $filter criteria, false otherwise
*
diff --git a/lib/plugins/extension/helper/list.php b/lib/plugins/extension/helper/list.php
index 6fc8c63b1..872cccc8c 100644
--- a/lib/plugins/extension/helper/list.php
+++ b/lib/plugins/extension/helper/list.php
@@ -460,6 +460,7 @@ class helper_plugin_extension_list extends DokuWiki_Plugin {
* @return string The HTML code
*/
function make_actions(helper_plugin_extension_extension $extension) {
+ global $conf;
$return = '';
$errors = '';
@@ -491,6 +492,10 @@ class helper_plugin_extension_list extends DokuWiki_Plugin {
$errors .= '<p class="permerror">'.$this->getLang('git').'</p>';
}
+ if ($extension->isEnabled() && in_array('Auth', $extension->getTypes()) && $conf['auth'] != $extension->getID()) {
+ $errors .= '<p class="permerror">'.$this->getLang('auth').'</p>';
+ }
+
}else{
if (($canmod = $extension->canModify()) === true) {
if ($extension->getDownloadURL()) {
diff --git a/lib/plugins/extension/lang/cs/intro_templates.txt b/lib/plugins/extension/lang/cs/intro_templates.txt
new file mode 100644
index 000000000..45abe952c
--- /dev/null
+++ b/lib/plugins/extension/lang/cs/intro_templates.txt
@@ -0,0 +1 @@
+Toto jsou šablony, které jsou momentálně nainstalovány v této DokuWiki. Aktuálně používanu šablonu lze vybrat ve [[?do=admin&page=config|Správci rozšíření]]. \ No newline at end of file
diff --git a/lib/plugins/extension/lang/cs/lang.php b/lib/plugins/extension/lang/cs/lang.php
index 27b3a94a3..f6db2b153 100644
--- a/lib/plugins/extension/lang/cs/lang.php
+++ b/lib/plugins/extension/lang/cs/lang.php
@@ -15,6 +15,7 @@ $lang['notimplemented'] = 'Tato vychytávka není dosud implementována';
$lang['notinstalled'] = 'Toto rozšíření není instalováno';
$lang['alreadyenabled'] = 'Toto rozšíření je již povoleno';
$lang['alreadydisabled'] = 'Toto rozšíření je již vypnuto';
+$lang['pluginlistsaveerror'] = 'Došlo k chybě při ukládání seznamu zásuvných modulů';
$lang['unknownauthor'] = 'Neznámý autor';
$lang['unknownversion'] = 'Neznámá verze';
$lang['btn_info'] = 'Zobrazit více informací';
@@ -27,12 +28,15 @@ $lang['btn_reinstall'] = 'Přeinstalovat';
$lang['js']['reallydel'] = 'Opravdu odinstalovat toto rozšíření?';
$lang['search_for'] = 'Hledat rozšíření:';
$lang['search'] = 'Hledat';
+$lang['extensionby'] = '<strong>%s</strong> od %s';
+$lang['screenshot'] = 'Screenshot %s';
$lang['popularity'] = 'Popularita: %s%%';
$lang['homepage_link'] = 'Dokumenty';
$lang['bugs_features'] = 'Chyby';
$lang['tags'] = 'Štítky:';
$lang['author_hint'] = 'Vyhledat rozšíření podle tohoto autora';
$lang['installed'] = 'Nainstalováno:';
+$lang['downloadurl'] = 'URL stahování:';
$lang['repository'] = 'Repozitář:';
$lang['unknown'] = '<em>neznámý</em>';
$lang['installed_version'] = 'Nainstalovaná verze:';
@@ -41,6 +45,7 @@ $lang['available_version'] = 'Dostupná verze:';
$lang['compatible'] = 'Kompatibilní s:';
$lang['depends'] = 'Závisí na:';
$lang['similar'] = 'Podobný jako:';
+$lang['conflicts'] = 'Koliduje s:';
$lang['donate'] = 'Líbí se ti to?';
$lang['donate_action'] = 'Kup autorovi kávu!';
$lang['repo_retry'] = 'Opakovat';
@@ -54,4 +59,25 @@ $lang['status_disabled'] = 'zakázaný';
$lang['status_unmodifiable'] = 'neměnný';
$lang['status_plugin'] = 'zásuvný modul';
$lang['status_template'] = 'šablona';
+$lang['status_bundled'] = 'svázaný';
+$lang['msg_enabled'] = 'Zásuvný modul %s povolen';
+$lang['msg_disabled'] = 'Zásuvný modul %s zakázán';
$lang['msg_delete_success'] = 'Rozšíření odinstalováno';
+$lang['msg_template_install_success'] = 'Šablona %s úspěšně nainstalována';
+$lang['msg_template_update_success'] = 'Šablona %s úspěšně aktualizována';
+$lang['msg_plugin_install_success'] = 'Zásuvný modul %s úspěšně nainstalován.';
+$lang['msg_plugin_update_success'] = 'Zásuvný modul %s úspěšně aktualizován.';
+$lang['msg_upload_failed'] = 'Nahrávání souboru selhalo';
+$lang['missing_dependency'] = '<strong>Chybějící nebo zakázaná závislost:</strong> %s';
+$lang['security_issue'] = '<strong>Bezpečnostní problém:</strong> %s';
+$lang['security_warning'] = '<strong>Bezpečnostní varování:</strong> %s';
+$lang['update_available'] = '<strong>Aktualizace:</strong> Je dostupná nová verze %s.';
+$lang['wrong_folder'] = '<strong>Zásuvný modul nesprávně nainstalován:</strong> Přejmenujte adresár modulu "%s" na "%s".';
+$lang['error_badurl'] = 'Adresy URL by měly začínat s http nebo https';
+$lang['error_dircreate'] = 'Nelze vytvořit dočasný adresář pro přijetí stahování';
+$lang['error_download'] = 'Nelze stáhnout soubor: %s';
+$lang['error_findfolder'] = 'Nelze rozpoznat adresář pro rozšíření, je třeba stáhnout a instalovat ručně';
+$lang['noperms'] = 'Nelze zapisovat do adresáře pro rozšíření';
+$lang['notplperms'] = 'Nelze zapisovat do odkládacího adresáře';
+$lang['nopluginperms'] = 'Nelze zapisovat do adresáře se zásuvnými moduly';
+$lang['git'] = 'Toto rozšíření bylo nainstalováno přes git, nejspíš ho tady aktualizovat nechcete.';
diff --git a/lib/plugins/extension/lang/en/lang.php b/lib/plugins/extension/lang/en/lang.php
index 4da41a2fd..d7541b422 100644
--- a/lib/plugins/extension/lang/en/lang.php
+++ b/lib/plugins/extension/lang/en/lang.php
@@ -95,6 +95,7 @@ $lang['noperms'] = 'Extension directory is not writable';
$lang['notplperms'] = 'Template directory is not writable';
$lang['nopluginperms'] = 'Plugin directory is not writable';
$lang['git'] = 'This extension was installed via git, you may not want to update it here.';
+$lang['auth'] = 'This auth plugin is not enabled in configuration, consider disabling it.';
$lang['install_url'] = 'Install from URL:';
$lang['install_upload'] = 'Upload Extension:';
diff --git a/lib/plugins/extension/lang/hr/lang.php b/lib/plugins/extension/lang/hr/lang.php
index 4905fe864..f43defcb1 100644
--- a/lib/plugins/extension/lang/hr/lang.php
+++ b/lib/plugins/extension/lang/hr/lang.php
@@ -6,24 +6,24 @@
* @author Davor Turkalj <turki.bsc@gmail.com>
*/
$lang['menu'] = 'Upravitelj dodataka';
-$lang['tab_plugins'] = 'Instalirani dodatci';
-$lang['tab_templates'] = 'Instalirani predlošci';
-$lang['tab_search'] = 'Potraži i instaliraj';
-$lang['tab_install'] = 'Ručno instaliranje';
+$lang['tab_plugins'] = 'Ugrađeni dodatci';
+$lang['tab_templates'] = 'Ugrađeni predlošci';
+$lang['tab_search'] = 'Potraži i ugradi';
+$lang['tab_install'] = 'Ručna ugradnja';
$lang['notimplemented'] = 'Ova mogućnost još nije napravljena';
-$lang['notinstalled'] = 'Dodatak nije instaliran';
+$lang['notinstalled'] = 'Dodatak nije ugrađen';
$lang['alreadyenabled'] = 'Ovaj dodatak je već omogućen';
$lang['alreadydisabled'] = 'Ovaj dodatak je već onemogućen';
$lang['pluginlistsaveerror'] = 'Dogodila se greška pri snimanju liste dodataka';
$lang['unknownauthor'] = 'Nepoznat autor';
$lang['unknownversion'] = 'Nepoznata inačica';
$lang['btn_info'] = 'Prikaži više informacija';
-$lang['btn_update'] = 'Dopuni';
+$lang['btn_update'] = 'Dogradi';
$lang['btn_uninstall'] = 'Ukloni';
$lang['btn_enable'] = 'Omogući';
$lang['btn_disable'] = 'Onemogući';
-$lang['btn_install'] = 'Postavi';
-$lang['btn_reinstall'] = 'Ponovno postavi';
+$lang['btn_install'] = 'Ugradi';
+$lang['btn_reinstall'] = 'Ponovno ugradi';
$lang['js']['reallydel'] = 'Zaista ukloniti ovo proširenje?';
$lang['search_for'] = 'Pretraži proširenja';
$lang['search'] = 'Pretraži';
@@ -34,11 +34,11 @@ $lang['homepage_link'] = 'Upute';
$lang['bugs_features'] = 'Greške';
$lang['tags'] = 'Oznake:';
$lang['author_hint'] = 'Potraži dodatke od ovog autora';
-$lang['installed'] = 'Postavljeno:';
+$lang['installed'] = 'Ugrađeno:';
$lang['downloadurl'] = 'URL adresa preuzimanja:';
$lang['repository'] = 'Repozitorij:';
$lang['unknown'] = '<em>nepoznat</em>';
-$lang['installed_version'] = 'Postavljena inačica:';
+$lang['installed_version'] = 'Ugrađena inačica:';
$lang['install_date'] = 'Vaše zadnje osvježavanje:';
$lang['available_version'] = 'Dostupna inačica';
$lang['compatible'] = 'Kompatibilan s:';
diff --git a/lib/plugins/extension/lang/ru/lang.php b/lib/plugins/extension/lang/ru/lang.php
index fa1625f28..24e6fe224 100644
--- a/lib/plugins/extension/lang/ru/lang.php
+++ b/lib/plugins/extension/lang/ru/lang.php
@@ -25,8 +25,9 @@ $lang['js']['reallydel'] = 'Действительно удалить эт
$lang['search_for'] = 'Поиск дополнения:';
$lang['search'] = 'Найти';
$lang['extensionby'] = '<strong>%s</strong> — %s';
-$lang['popularity'] = 'Попоулярность: %s%%';
-$lang['bugs_features'] = 'Ошибки';
+$lang['popularity'] = 'Популярность: %s%%';
+$lang['homepage_link'] = 'Описание';
+$lang['bugs_features'] = 'Баг-трекер';
$lang['tags'] = 'Метки:';
$lang['author_hint'] = 'Найти дополнения этого автора';
$lang['installed'] = 'Установлено:';
@@ -43,26 +44,30 @@ $lang['conflicts'] = 'Конфликтует с:';
$lang['donate'] = 'Нравится?';
$lang['donate_action'] = 'Купить автору кофе!';
$lang['repo_retry'] = 'Повторить';
+$lang['provides'] = 'Предоставляет:';
+$lang['status'] = 'Статус:';
$lang['status_installed'] = 'установлено';
$lang['status_not_installed'] = 'не установлено';
$lang['status_protected'] = 'защищено';
-$lang['status_enabled'] = 'включен';
+$lang['status_enabled'] = 'включён';
$lang['status_disabled'] = 'отключено';
$lang['status_unmodifiable'] = 'неизменяемо';
$lang['status_plugin'] = 'плагин';
$lang['status_template'] = 'шаблон';
$lang['status_bundled'] = 'в комплекте';
-$lang['msg_enabled'] = 'Плагин %s включен';
-$lang['msg_disabled'] = 'Плагин %s отключен';
+$lang['msg_enabled'] = 'Плагин %s включён';
+$lang['msg_disabled'] = 'Плагин %s отключён';
$lang['msg_delete_success'] = 'Дополнение удалено';
$lang['msg_template_install_success'] = 'Шаблон %s успешно установлен';
$lang['msg_template_update_success'] = 'Шаблон %s успешно обновлён';
$lang['msg_plugin_install_success'] = 'Плагин %s успешно установлен';
$lang['msg_plugin_update_success'] = 'Плагин %s успешно обновлён';
-$lang['noperms'] = 'Папка для расширений не доступна на запись';
-$lang['notplperms'] = 'Папка для шаблонов не доступна на запись';
-$lang['nopluginperms'] = 'Папка плагинов не доступна на запись';
-$lang['git'] = 'Это расширение было установлено через git, Вы не можете обновить его тут.';
+$lang['update_available'] = '<strong>Обновление:</strong> доступна новая версия %s.';
+$lang['error_badurl'] = 'Ссылки должны начинаться с http или https';
+$lang['noperms'] = 'Папка для расширений недоступна для записи';
+$lang['notplperms'] = 'Папка для шаблонов недоступна для записи';
+$lang['nopluginperms'] = 'Папка плагинов недоступна для записи';
+$lang['git'] = 'Это расширение было установлено через git. Вы не можете обновить его тут.';
$lang['install_url'] = 'Установить с адреса URL:';
$lang['install_upload'] = 'Скачать расширение:';
-$lang['repo_error'] = 'Сайт с плагинами недоступен. Убедитесь, что у сайта есть доступ на www.dokuwiki.org и также проверьте настройки соединения прокси.';
+$lang['repo_error'] = 'Сайт с плагинами недоступен. Убедитесь, что у сайта есть доступ на www.dokuwiki.org, а также проверьте настройки соединения с Интернетом.';
diff --git a/lib/plugins/extension/lang/zh-tw/intro_plugins.txt b/lib/plugins/extension/lang/zh-tw/intro_plugins.txt
new file mode 100644
index 000000000..b5b77a267
--- /dev/null
+++ b/lib/plugins/extension/lang/zh-tw/intro_plugins.txt
@@ -0,0 +1 @@
+已經有一些外掛套件被安裝在你的DokuWiki之中。你可以在這裡啟用、禁用,甚至是完全移除它們。如外掛可更新也同時會顯示在這裡,請確保在更新前先閱讀過該套件之文件。 \ No newline at end of file
diff --git a/lib/plugins/extension/lang/zh-tw/lang.php b/lib/plugins/extension/lang/zh-tw/lang.php
index a86364d7a..79657ffeb 100644
--- a/lib/plugins/extension/lang/zh-tw/lang.php
+++ b/lib/plugins/extension/lang/zh-tw/lang.php
@@ -5,6 +5,7 @@
*
* @author Stan <talktostan@gmail.com>
* @author June-Hao Hou <junehao@gmail.com>
+ * @author lioujheyu <lioujheyu@gmail.com>
*/
$lang['menu'] = '延伸功能管理';
$lang['tab_plugins'] = '已安裝外掛';
@@ -28,20 +29,49 @@ $lang['btn_reinstall'] = '重新安裝';
$lang['js']['reallydel'] = '確定要移除此延伸功能?';
$lang['search_for'] = '搜尋延伸功能:';
$lang['search'] = '搜尋';
+$lang['homepage_link'] = '文件';
$lang['tags'] = '標籤:';
$lang['author_hint'] = '搜尋相同作者的延伸功能';
$lang['installed'] = '已安裝:';
$lang['downloadurl'] = '下載網址:';
+$lang['unknown'] = '<em>未知</em>';
$lang['installed_version'] = '已安裝版本:';
+$lang['install_date'] = '你最後一次更新: ';
$lang['available_version'] = '可用版本:';
$lang['compatible'] = '相容於:';
+$lang['depends'] = '依賴於: ';
+$lang['similar'] = '類似於: ';
+$lang['conflicts'] = '相衝突於: ';
+$lang['donate'] = '像這樣?';
+$lang['donate_action'] = '請作者一杯咖啡!';
$lang['repo_retry'] = '再試一次';
$lang['status'] = '狀態:';
$lang['status_installed'] = '已安裝';
$lang['status_not_installed'] = '未安裝';
+$lang['status_protected'] = '已保護';
$lang['status_enabled'] = '作用中';
$lang['status_disabled'] = '停用中';
+$lang['status_unmodifiable'] = '不可更動';
$lang['status_plugin'] = '外掛';
+$lang['status_template'] = '模板';
+$lang['status_bundled'] = '已綑綁內附';
+$lang['msg_enabled'] = '外掛 %s 已啟用';
+$lang['msg_disabled'] = '外掛 %s 已禁用';
+$lang['msg_delete_success'] = '附加元件已移除';
+$lang['msg_template_install_success'] = '模板 %s 以成功安裝';
+$lang['msg_template_update_success'] = '模板 %s 以成功更新';
+$lang['msg_plugin_install_success'] = '外掛 %s 以成功安裝';
+$lang['msg_plugin_update_success'] = '外掛 %s 以成功更新';
+$lang['msg_upload_failed'] = '上傳檔案失敗';
+$lang['missing_dependency'] = '<strong>遺失或禁用相依性套件:</strong> %s';
+$lang['security_issue'] = '<strong>安全性問題:</strong> %s';
+$lang['security_warning'] = '<strong>安全問題警告:</strong> %s';
+$lang['update_available'] = '<strong>更新:</strong> 已可取得 %s 的新版本';
+$lang['wrong_folder'] = '<strong>外掛安裝不正確:</strong> 將外掛資料夾從 "%s" 更名至 "%s"。';
+$lang['url_change'] = '<strong>網址已變更:</strong> 自從上次下載後下載網址已變更。在更新延伸功能前請先檢查新網址是否可用。<br />新: %s<br />舊: %s';
+$lang['error_download'] = '無法下載檔案:%s';
+$lang['error_decompress'] = '無法解壓縮檔案。這可能是下載品質不佳所致,在這個情況下你應該再試一次;也有可能是因為無法辨識的壓縮格式,在這個情況下你應該自行下載並手動安裝';
+$lang['error_findfolder'] = '無法辨認延伸功能資料夾,你必須自行下載並手動安裝';
$lang['noperms'] = '延伸功能資料夾無法寫入';
$lang['notplperms'] = '版型資料夾無法寫入';
$lang['nopluginperms'] = '外掛資料夾無法寫入';
diff --git a/lib/plugins/popularity/lang/eu/lang.php b/lib/plugins/popularity/lang/eu/lang.php
index b52ccaee1..b5b80357c 100644
--- a/lib/plugins/popularity/lang/eu/lang.php
+++ b/lib/plugins/popularity/lang/eu/lang.php
@@ -1,7 +1,8 @@
<?php
+
/**
- * Basque language file
- *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
* @author Inko Illarramendi <inko.i.a@gmail.com>
* @author Zigor Astarbe <astarbe@gmail.com>
*/
diff --git a/lib/plugins/revert/lang/eu/lang.php b/lib/plugins/revert/lang/eu/lang.php
index d3532c070..40be3e382 100644
--- a/lib/plugins/revert/lang/eu/lang.php
+++ b/lib/plugins/revert/lang/eu/lang.php
@@ -1,9 +1,11 @@
<?php
+
/**
- * Basque language file
- *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
* @author Inko Illarramendi <inko.i.a@gmail.com>
* @author Zigor Astarbe <astarbe@gmail.com>
+ * @author Yadav Gowda <yadav.gowda@gmail.com>
*/
$lang['menu'] = 'Berrezartze Kudeatzailea';
$lang['filter'] = 'Bilatu spam duten orriak';
diff --git a/lib/plugins/revert/lang/no/lang.php b/lib/plugins/revert/lang/no/lang.php
index 6806dcd93..76da8ca9c 100644
--- a/lib/plugins/revert/lang/no/lang.php
+++ b/lib/plugins/revert/lang/no/lang.php
@@ -19,6 +19,7 @@
* @author Thomas Juberg <Thomas.Juberg@Gmail.com>
* @author Boris <boris@newton-media.no>
* @author Christopher Schive <chschive@frisurf.no>
+ * @author Patrick <spill.p@hotmail.com>
*/
$lang['menu'] = 'Tilbakestillingsbehandler';
$lang['filter'] = 'Søk etter søppelmeldinger';
diff --git a/lib/plugins/syntax.php b/lib/plugins/syntax.php
index 7acf681e4..9e2913d78 100644
--- a/lib/plugins/syntax.php
+++ b/lib/plugins/syntax.php
@@ -71,7 +71,7 @@ class DokuWiki_Syntax_Plugin extends Doku_Parser_Mode_Plugin {
* @param int $state The lexer state for the match
* @param int $pos The character position of the matched text
* @param Doku_Handler $handler The Doku_Handler object
- * @return array Return an array with all data you want to use in render
+ * @return bool|array Return an array with all data you want to use in render, false don't add an instruction
*/
function handle($match, $state, $pos, Doku_Handler $handler){
trigger_error('handle() not implemented in '.get_class($this), E_USER_WARNING);
@@ -98,7 +98,7 @@ class DokuWiki_Syntax_Plugin extends Doku_Parser_Mode_Plugin {
* @param string $format output format being rendered
* @param Doku_Renderer $renderer the current renderer object
* @param array $data data created by handler()
- * @return boolean rendered correctly?
+ * @return boolean rendered correctly? (however, returned value is not used at the moment)
*/
function render($format, Doku_Renderer $renderer, $data) {
trigger_error('render() not implemented in '.get_class($this), E_USER_WARNING);
diff --git a/lib/plugins/usermanager/lang/cs/lang.php b/lib/plugins/usermanager/lang/cs/lang.php
index bbb560679..6fbfe8535 100644
--- a/lib/plugins/usermanager/lang/cs/lang.php
+++ b/lib/plugins/usermanager/lang/cs/lang.php
@@ -15,6 +15,7 @@
* @author Jakub A. Těšínský (j@kub.cz)
* @author mkucera66@seznam.cz
* @author Zbyněk Křivka <krivka@fit.vutbr.cz>
+ * @author Jaroslav Lichtblau <jlichtblau@seznam.cz>
*/
$lang['menu'] = 'Správa uživatelů';
$lang['noauth'] = '(autentizace uživatelů není k dispozici)';
@@ -62,6 +63,8 @@ $lang['add_ok'] = 'Uživatel úspěšně vytvořen';
$lang['add_fail'] = 'Vytvoření uživatele selhalo';
$lang['notify_ok'] = 'Odeslán mail s upozorněním';
$lang['notify_fail'] = 'Mail s upozorněním nebylo možno odeslat';
+$lang['import_userlistcsv'] = 'Seznam uživatelů (CSV):';
+$lang['import_header'] = 'Poslední selhání importu';
$lang['import_success_count'] = 'Import uživatelů: nalezeno %d uživatelů, %d úspěšně importováno.';
$lang['import_failure_count'] = 'Import uživatelů: %d selhalo. Seznam chybných je níže.';
$lang['import_error_fields'] = 'Nedostatek položek, nalezena/y %d, požadovány 4.';
diff --git a/lib/plugins/usermanager/lang/eu/lang.php b/lib/plugins/usermanager/lang/eu/lang.php
index 5d3a01fc7..1fbe13739 100644
--- a/lib/plugins/usermanager/lang/eu/lang.php
+++ b/lib/plugins/usermanager/lang/eu/lang.php
@@ -1,7 +1,8 @@
<?php
+
/**
- * Basque language file
- *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
* @author Inko Illarramendi <inko.i.a@gmail.com>
* @author Zigor Astarbe <astarbe@gmail.com>
*/
diff --git a/lib/plugins/usermanager/lang/hr/lang.php b/lib/plugins/usermanager/lang/hr/lang.php
index 80613ed6f..a71afb60a 100644
--- a/lib/plugins/usermanager/lang/hr/lang.php
+++ b/lib/plugins/usermanager/lang/hr/lang.php
@@ -33,7 +33,7 @@ $lang['line'] = 'Linija br.';
$lang['error'] = 'Poruka o grešci';
$lang['summary'] = 'Prikaz korisnika %1$d-%2$d od %3$d nađenih. Ukupno %4$d korisnika.';
$lang['nonefound'] = 'Nema korisnika koji odgovaraju filtru.Ukupno %d korisnika.';
-$lang['delete_ok'] = '%d korisnik obrisano';
+$lang['delete_ok'] = '%d korisnika obrisano';
$lang['delete_fail'] = '%d neuspjelih brisanja.';
$lang['update_ok'] = 'Korisnik uspješno izmijenjen';
$lang['update_fail'] = 'Neuspjela izmjena korisnika';
@@ -49,7 +49,7 @@ $lang['note_group'] = 'Novi korisnik biti će dodijeljen u podrazumij
$lang['note_pass'] = 'Lozinka će biti generirana ako se polje ostavi prazno i obavješćivanje korisnika je omogućeno.';
$lang['add_ok'] = 'Korisnik uspješno dodan';
$lang['add_fail'] = 'Neuspješno dodavanje korisnika';
-$lang['notify_ok'] = 'Obavijest korisniku poslana';
+$lang['notify_ok'] = 'Poslana obavijest korisniku';
$lang['notify_fail'] = 'Obavijest korisniku ne može biti poslana';
$lang['import_userlistcsv'] = 'Datoteka s popisom korisnika (CSV):';
$lang['import_header'] = 'Zadnje greške pri uvozu';
diff --git a/lib/plugins/usermanager/lang/ru/import.txt b/lib/plugins/usermanager/lang/ru/import.txt
index f2049dd0c..c92e47b4c 100644
--- a/lib/plugins/usermanager/lang/ru/import.txt
+++ b/lib/plugins/usermanager/lang/ru/import.txt
@@ -3,7 +3,6 @@
Потребуется список пользователей в файле формата CSV, состоящий из 4 столбцов.
Столбцы должны быть заполнены следующим образом: user-id, полное имя, эл. почта, группы.
Поля CSV должны быть отделены запятой (,), а строки должны быть заключены в кавычки (%%""%%). Обратный слэш используется как прерывание.
-В качестве примера можете взять список пользователей, экспортированный через «Экспорт пользователей».
-Повторяющиеся идентификаторы user-id будут игнорироваться.
+В качестве примера можете взять список пользователей, экспортированный через «Экспорт пользователей». Повторяющиеся идентификаторы user-id будут игнорироваться.
Пароль доступа будет сгенерирован и отправлен по почте удачно импортированному пользователю. \ No newline at end of file
diff --git a/lib/plugins/usermanager/lang/ru/lang.php b/lib/plugins/usermanager/lang/ru/lang.php
index 8bbfa639c..515de5186 100644
--- a/lib/plugins/usermanager/lang/ru/lang.php
+++ b/lib/plugins/usermanager/lang/ru/lang.php
@@ -68,6 +68,7 @@ $lang['add_ok'] = 'Пользователь успешно доб
$lang['add_fail'] = 'Не удалось добавить пользователя';
$lang['notify_ok'] = 'Письмо с уведомлением отправлено';
$lang['notify_fail'] = 'Не удалось отправить письмо с уведомлением';
+$lang['import_userlistcsv'] = 'Файл со списком пользователей (CSV):';
$lang['import_success_count'] = 'Импорт пользователей: %d пользователей найдено, %d импортировано успешно.';
$lang['import_failure_count'] = 'Импорт пользователей: %d не удалось. Список ошибок прочтите ниже.';
$lang['import_error_fields'] = 'Не все поля заполнены. Найдено %d, а нужно 4.';
@@ -78,4 +79,4 @@ $lang['import_error_upload'] = 'Импорт не удался. CSV-файл
$lang['import_error_readfail'] = 'Импорт не удался. Невозможно прочесть загруженный файл.';
$lang['import_error_create'] = 'Невозможно создать пользователя';
$lang['import_notify_fail'] = 'Оповещение не может быть отправлено импортированному пользователю %s по электронной почте %s.';
-$lang['import_downloadfailures'] = 'Скачать Ошибки в формате CSV для исправления';
+$lang['import_downloadfailures'] = 'Скачать ошибки в формате CSV для исправления';
diff --git a/lib/tpl/dokuwiki/detail.php b/lib/tpl/dokuwiki/detail.php
index 4d0e984b1..d4f9c39d1 100644
--- a/lib/tpl/dokuwiki/detail.php
+++ b/lib/tpl/dokuwiki/detail.php
@@ -49,7 +49,7 @@ header('X-UA-Compatible: IE=edge,chrome=1');
if($ERROR):
echo '<h1>'.$ERROR.'</h1>';
else: ?>
-
+ <?php if($REV) echo p_locale_xhtml('showrev');?>
<h1><?php echo nl2br(hsc(tpl_img_getTag('simple.title'))); ?></h1>
<?php tpl_img(900,700); /* parameters: maximum width, maximum height (and more) */ ?>