aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorAndreas Gohr <andi@splitbrain.org>2019-07-14 20:50:16 +0200
committerAndreas Gohr <andi@splitbrain.org>2019-07-14 20:50:16 +0200
commit2b9c4a056d6957ab3952515cfc795f8dd01cf5e6 (patch)
treee17a9cf8a473e7e21a04cffe477464547b4230bd
parent27f63a230ac7def28270ac72832681ef70e10853 (diff)
parent8902b37d8e5bd11eeb34c7cc6879533fd1a8702c (diff)
downloaddokuwiki-2b9c4a056d6957ab3952515cfc795f8dd01cf5e6.tar.gz
dokuwiki-2b9c4a056d6957ab3952515cfc795f8dd01cf5e6.zip
Merge branch 'master' into psr2
* master: (34 commits) fix color for noninstalled extensions show disabled extensions in gray warn about inaccessible repo api bugfix: access check was never cached First go on a CLI component for the extension manager use strict type comparison translation update translation update fix #dokuwiki__sitetools current item not in highlight due to Greebo change authplain: Add tests for group retrieval authplain: Add a simple method for retrieving user groups translation update Negative string offsets are allowed in PHP 7.1+ only improve memory check output fix and test php_to_byte() related to #2756 #2556 translation update translation update translation update translation update translation update ...
-rw-r--r--_test/tests/inc/common_php_to_byte.test.php34
-rwxr-xr-x[-rw-r--r--]_test/tests/inc/mailer.test.php23
-rw-r--r--conf/acronyms.conf1
-rw-r--r--conf/interwiki.conf1
-rw-r--r--inc/Action/Search.php4
-rw-r--r--inc/Mailer.class.php31
-rw-r--r--inc/auth.php2
-rw-r--r--inc/common.php48
-rw-r--r--inc/infoutils.php31
-rw-r--r--inc/lang/es/lang.php1
-rw-r--r--inc/lang/fr/lang.php8
-rw-r--r--inc/lang/fr/mailtext.txt2
-rw-r--r--inc/lang/fr/recent.txt2
-rw-r--r--inc/lang/fr/subscr_digest.txt2
-rw-r--r--inc/lang/fr/subscr_list.txt2
-rw-r--r--inc/lang/fr/subscr_single.txt2
-rw-r--r--inc/lang/it/lang.php1
-rw-r--r--inc/lang/nl/lang.php2
-rw-r--r--inc/lang/nl/onceexisted.txt3
-rw-r--r--inc/lang/no/lang.php1
-rw-r--r--inc/lang/no/login.txt2
-rw-r--r--inc/lang/oc/lang.php13
-rw-r--r--inc/lang/pt/lang.php2
-rw-r--r--inc/lang/pt/onceexisted.txt3
-rw-r--r--inc/lang/ru/lang.php1
-rw-r--r--inc/lang/ru/onceexisted.txt3
-rw-r--r--inc/lang/sk/lang.php40
-rw-r--r--inc/lang/sr/lang.php94
-rw-r--r--inc/lang/sr/onceexisted.txt3
-rw-r--r--inc/lang/zh/lang.php1
-rw-r--r--lib/plugins/acl/lang/sr/lang.php3
-rw-r--r--lib/plugins/authad/lang/es/settings.php2
-rw-r--r--lib/plugins/authad/lang/fr/settings.php5
-rw-r--r--lib/plugins/authad/lang/it/settings.php2
-rw-r--r--lib/plugins/authad/lang/nl/settings.php3
-rw-r--r--lib/plugins/authad/lang/pt-br/settings.php3
-rw-r--r--lib/plugins/authad/lang/pt/lang.php2
-rw-r--r--lib/plugins/authad/lang/pt/settings.php3
-rw-r--r--lib/plugins/authad/lang/ru/settings.php2
-rw-r--r--lib/plugins/authad/lang/sr/settings.php5
-rw-r--r--lib/plugins/authad/lang/zh/settings.php2
-rw-r--r--lib/plugins/authldap/lang/pt/settings.php2
-rw-r--r--lib/plugins/authldap/lang/sr/settings.php9
-rw-r--r--lib/plugins/authpdo/lang/nl/settings.php10
-rw-r--r--lib/plugins/authpdo/lang/pt/lang.php2
-rw-r--r--lib/plugins/authpdo/lang/pt/settings.php13
-rw-r--r--lib/plugins/authpdo/lang/sk/settings.php25
-rw-r--r--lib/plugins/authplain/_test/conf/auth.users.php16
-rw-r--r--lib/plugins/authplain/_test/userdata.test.php64
-rw-r--r--lib/plugins/authplain/auth.php24
-rw-r--r--lib/plugins/config/lang/it/lang.php1
-rw-r--r--lib/plugins/config/lang/nl/lang.php3
-rw-r--r--lib/plugins/config/lang/no/lang.php1
-rw-r--r--lib/plugins/config/lang/pt/lang.php7
-rw-r--r--lib/plugins/config/lang/sk/lang.php7
-rw-r--r--lib/plugins/config/lang/sr/lang.php3
-rw-r--r--lib/plugins/config/lang/zh/lang.php1
-rw-r--r--lib/plugins/extension/admin.php2
-rw-r--r--lib/plugins/extension/cli.php357
-rw-r--r--lib/plugins/extension/helper/repository.php6
-rw-r--r--lib/plugins/extension/lang/pt/lang.php1
-rw-r--r--lib/plugins/extension/lang/sk/lang.php21
-rw-r--r--lib/plugins/popularity/lang/sr/lang.php3
-rw-r--r--lib/plugins/revert/lang/no/lang.php1
-rw-r--r--lib/plugins/revert/lang/sr/lang.php3
-rw-r--r--lib/plugins/usermanager/lang/pt/lang.php1
-rw-r--r--lib/plugins/usermanager/lang/sr/lang.php3
-rw-r--r--lib/tpl/dokuwiki/css/design.less20
-rw-r--r--lib/tpl/dokuwiki/css/pagetools.less4
-rw-r--r--lib/tpl/dokuwiki/lang/sk/lang.php4
-rw-r--r--lib/tpl/dokuwiki/script.js5
71 files changed, 839 insertions, 175 deletions
diff --git a/_test/tests/inc/common_php_to_byte.test.php b/_test/tests/inc/common_php_to_byte.test.php
new file mode 100644
index 000000000..8ab446405
--- /dev/null
+++ b/_test/tests/inc/common_php_to_byte.test.php
@@ -0,0 +1,34 @@
+<?php
+
+class common_php_to_byte_test extends DokuWikiTest {
+
+
+ public function data() {
+ $data = [
+ ['1G', 1073741824],
+ ['8M', 8388608],
+ ['8K', 8192],
+ ['800', 800],
+ ['8', 8],
+ ['0', 0],
+ ['-1', -1]
+ ];
+
+ // larger sizes only work on 64bit platforms
+ if(PHP_INT_SIZE == 8) {
+ $data[] = ['8G', 8589934592];
+ }
+
+ return $data;
+ }
+
+ /**
+ * @dataProvider data
+ * @param string $value
+ * @param int $bytes
+ */
+ public function test_undefined($value, $bytes) {
+ $this->assertSame($bytes, php_to_byte($value));
+ }
+
+}
diff --git a/_test/tests/inc/mailer.test.php b/_test/tests/inc/mailer.test.php
index 9f15cf36d..2c8f142d1 100644..100755
--- a/_test/tests/inc/mailer.test.php
+++ b/_test/tests/inc/mailer.test.php
@@ -24,6 +24,9 @@ class TestMailer extends Mailer {
}
+/**
+ * @group mailer_class
+ */
class mailer_test extends DokuWikiTest {
@@ -96,11 +99,21 @@ class mailer_test extends DokuWikiTest {
$headers = $mail->prop('headers');
$this->assertEquals('Andreas Gohr <andi@splitbrain.org>', $headers['To']);
+ $mail->to('"Andreas Gohr" <andi@splitbrain.org>');
+ $mail->cleanHeaders();
+ $headers = $mail->prop('headers');
+ $this->assertEquals('"Andreas Gohr" <andi@splitbrain.org>', $headers['To']);
+
$mail->to('Andreas Gohr <andi@splitbrain.org> , foo <foo@example.com>');
$mail->cleanHeaders();
$headers = $mail->prop('headers');
$this->assertEquals('Andreas Gohr <andi@splitbrain.org>, foo <foo@example.com>', $headers['To']);
+ $mail->to('"Foo, Dr." <foo@example.com> , foo <foo@example.com>');
+ $mail->cleanHeaders();
+ $headers = $mail->prop('headers');
+ $this->assertEquals('=?UTF-8?B?IkZvbywgRHIuIg==?= <foo@example.com>, foo <foo@example.com>', $headers['To']);
+
$mail->to('Möp <moep@example.com> , foo <foo@example.com>');
$mail->cleanHeaders();
$headers = $mail->prop('headers');
@@ -336,5 +349,15 @@ A test mail in <strong>html</strong>
$this->assertRegexp('/' . preg_quote($expected_mail_body, '/') . '/', $dump);
}
+
+ function test_getCleanName() {
+ $mail = new TestMailer();
+ $name = $mail->getCleanName('Foo Bar');
+ $this->assertEquals('Foo Bar', $name);
+ $name = $mail->getCleanName('Foo, Bar');
+ $this->assertEquals('"Foo, Bar"', $name);
+ $name = $mail->getCleanName('Foo" Bar');
+ $this->assertEquals('"Foo\" Bar"', $name);
+ }
}
//Setup VIM: ex: et ts=4 :
diff --git a/conf/acronyms.conf b/conf/acronyms.conf
index 9363f947e..2ecdeda52 100644
--- a/conf/acronyms.conf
+++ b/conf/acronyms.conf
@@ -20,6 +20,7 @@ FTP File Transfer Protocol
FOSS Free & Open-Source Software
FLOSS Free/Libre and Open Source Software
FUD Fear, Uncertainty, and Doubt
+FYI For your information
GB Gigabyte
GHz Gigahertz
GPL GNU General Public License
diff --git a/conf/interwiki.conf b/conf/interwiki.conf
index 2432f111d..58bc517b8 100644
--- a/conf/interwiki.conf
+++ b/conf/interwiki.conf
@@ -22,6 +22,7 @@ wpde https://de.wikipedia.org/wiki/{NAME}
wpes https://es.wikipedia.org/wiki/{NAME}
wppl https://pl.wikipedia.org/wiki/{NAME}
wpjp https://ja.wikipedia.org/wiki/{NAME}
+wpru https://ru.wikipedia.org/wiki/{NAME}
wpmeta https://meta.wikipedia.org/wiki/{NAME}
doku https://www.dokuwiki.org/
rfc https://tools.ietf.org/html/rfc
diff --git a/inc/Action/Search.php b/inc/Action/Search.php
index 382fc47e6..88bd0baa3 100644
--- a/inc/Action/Search.php
+++ b/inc/Action/Search.php
@@ -39,8 +39,8 @@ class Search extends AbstractAction {
if ($ID !== $conf['start'] && !$INPUT->has('q')) {
parse_str($INPUT->server->str('QUERY_STRING'), $urlParts);
$urlParts['q'] = $urlParts['id'];
- $urlParts['id'] = $conf['start'];
- $url = DOKU_URL . DOKU_SCRIPT . '?' . http_build_query($urlParts, null, '&');
+ unset($urlParts['id']);
+ $url = wl($ID, $urlParts, true, '&');
send_redirect($url);
}
diff --git a/inc/Mailer.class.php b/inc/Mailer.class.php
index 048890106..405e8101f 100644
--- a/inc/Mailer.class.php
+++ b/inc/Mailer.class.php
@@ -324,13 +324,36 @@ class Mailer {
}
/**
+ * Return a clean name which can be safely used in mail address
+ * fields. That means the name will be enclosed in '"' if it includes
+ * a '"' or a ','. Also a '"' will be escaped as '\"'.
+ *
+ * @param string $name the name to clean-up
+ * @see cleanAddress
+ */
+ public function getCleanName($name) {
+ $name = trim($name, ' \t"');
+ $name = str_replace('"', '\"', $name, $count);
+ if ($count > 0 || strpos($name, ',') !== false) {
+ $name = '"'.$name.'"';
+ }
+ return $name;
+ }
+
+ /**
* Sets an email address header with correct encoding
*
* Unicode characters will be deaccented and encoded base64
* for headers. Addresses may not contain Non-ASCII data!
*
+ * If @$addresses is a string then it will be split into multiple
+ * addresses. Addresses must be separated by a comma. If the display
+ * name includes a comma then it MUST be properly enclosed by '"' to
+ * prevent spliting at the wrong point.
+ *
* Example:
* cc("föö <foo@bar.com>, me@somewhere.com","TBcc");
+ * to("foo, Dr." <foo@bar.com>, me@somewhere.com");
*
* @param string|string[] $addresses Multiple adresses separated by commas or as array
* @return false|string the prepared header (can contain multiple lines)
@@ -338,7 +361,13 @@ class Mailer {
public function cleanAddress($addresses) {
$headers = '';
if(!is_array($addresses)){
- $addresses = explode(',', $addresses);
+ $count = preg_match_all('/\s*(?:("[^"]*"[^,]+),*)|([^,]+)\s*,*/', $addresses, $matches, PREG_SET_ORDER);
+ $addresses = array();
+ if ($count !== false && is_array($matches)) {
+ foreach ($matches as $match) {
+ array_push($addresses, $match[0]);
+ }
+ }
}
foreach($addresses as $part) {
diff --git a/inc/auth.php b/inc/auth.php
index 103a2f72f..93c95d44f 100644
--- a/inc/auth.php
+++ b/inc/auth.php
@@ -831,7 +831,7 @@ function auth_sendPassword($user, $password) {
);
$mail = new Mailer();
- $mail->to($userinfo['name'].' <'.$userinfo['mail'].'>');
+ $mail->to($mail->getCleanName($userinfo['name']).' <'.$userinfo['mail'].'>');
$mail->subject($lang['regpwmail']);
$mail->setBody($text, $trep);
return $mail->send();
diff --git a/inc/common.php b/inc/common.php
index 6ac03b03a..c4f3995a7 100644
--- a/inc/common.php
+++ b/inc/common.php
@@ -1150,6 +1150,9 @@ function parsePageTemplate(&$data) {
'@ID@',
'@NS@',
'@CURNS@',
+ '@!CURNS@',
+ '@!!CURNS@',
+ '@!CURNS!@',
'@FILE@',
'@!FILE@',
'@!FILE!@',
@@ -1166,6 +1169,9 @@ function parsePageTemplate(&$data) {
$id,
getNS($id),
curNS($id),
+ utf8_ucfirst(curNS($id)),
+ utf8_ucwords(curNS($id)),
+ utf8_strtoupper(curNS($id)),
$file,
utf8_ucfirst($file),
utf8_strtoupper($file),
@@ -1683,39 +1689,27 @@ function unslash($string, $char = "'") {
/**
* Convert php.ini shorthands to byte
*
- * @author <gilthans dot NO dot SPAM at gmail dot com>
- * @link http://php.net/manual/en/ini.core.php#79564
+ * On 32 bit systems values >= 2GB will fail!
*
- * @param string $v shorthands
- * @return int|string
+ * -1 (infinite size) will be reported as -1
+ *
+ * @link https://www.php.net/manual/en/faq.using.php#faq.using.shorthandbytes
+ * @param string $value PHP size shorthand
+ * @return int
*/
-function php_to_byte($v) {
- $l = substr($v, -1);
- $ret = substr($v, 0, -1);
- switch(strtoupper($l)) {
- /** @noinspection PhpMissingBreakStatementInspection */
- // no-break
- case 'P':
- $ret *= 1024;
- /** @noinspection PhpMissingBreakStatementInspection */
- // no-break
- case 'T':
- $ret *= 1024;
- /** @noinspection PhpMissingBreakStatementInspection */
- // no-break
+function php_to_byte($value) {
+ switch (strtoupper(substr($value,-1))) {
case 'G':
- $ret *= 1024;
- /** @noinspection PhpMissingBreakStatementInspection */
- // no-break
+ $ret = intval(substr($value, 0, -1)) * 1024 * 1024 * 1024;
+ break;
case 'M':
- $ret *= 1024;
- /** @noinspection PhpMissingBreakStatementInspection */
- // no-break
+ $ret = intval(substr($value, 0, -1)) * 1024 * 1024;
+ break;
case 'K':
- $ret *= 1024;
+ $ret = intval(substr($value, 0, -1)) * 1024;
break;
- default:
- $ret *= 10;
+ default;
+ $ret = intval($value);
break;
}
return $ret;
diff --git a/inc/infoutils.php b/inc/infoutils.php
index ba137c1ac..69d8afbec 100644
--- a/inc/infoutils.php
+++ b/inc/infoutils.php
@@ -133,25 +133,22 @@ function check(){
msg('Your PHP version is too old',-1);
}
}
- $limit = ini_get('memory_limit');
- if($limit == -1) {
- $mem = -1; // unlimited
- } else {
- $mem = (int) php_to_byte($limit);
- }
+
+ $mem = (int) php_to_byte(ini_get('memory_limit'));
if($mem){
- if($mem == -1) {
+ if ($mem === -1) {
msg('PHP memory is unlimited', 1);
- } else if($mem < 16777216){
- msg('PHP is limited to less than 16MB RAM ('.$mem.' bytes). Increase memory_limit in php.ini',-1);
- }else if($mem < 20971520){
- msg('PHP is limited to less than 20MB RAM ('.$mem.' bytes),
- you might encounter problems with bigger pages. Increase memory_limit in php.ini',-1);
- }else if($mem < 33554432){
- msg('PHP is limited to less than 32MB RAM ('.$mem.' bytes),
- but that should be enough in most cases. If not, increase memory_limit in php.ini',0);
- }else{
- msg('More than 32MB RAM ('.$mem.' bytes) available.',1);
+ } else if ($mem < 16777216) {
+ msg('PHP is limited to less than 16MB RAM (' . filesize_h($mem) . ').
+ Increase memory_limit in php.ini', -1);
+ } else if ($mem < 20971520) {
+ msg('PHP is limited to less than 20MB RAM (' . filesize_h($mem) . '),
+ you might encounter problems with bigger pages. Increase memory_limit in php.ini', -1);
+ } else if ($mem < 33554432) {
+ msg('PHP is limited to less than 32MB RAM (' . filesize_h($mem) . '),
+ but that should be enough in most cases. If not, increase memory_limit in php.ini', 0);
+ } else {
+ msg('More than 32MB RAM (' . filesize_h($mem) . ') available.', 1);
}
}
diff --git a/inc/lang/es/lang.php b/inc/lang/es/lang.php
index e670ea4f1..7924a7da7 100644
--- a/inc/lang/es/lang.php
+++ b/inc/lang/es/lang.php
@@ -3,6 +3,7 @@
/**
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
+ * @author Liliana <lilianasaidon@gmail.com>
* @author Alex Cachinero <anarres@protonmail.com>
* @author WIRESLINKEA <wireslinkea@gmail.com>
* @author Domingo Redal <docxml@gmail.com>
diff --git a/inc/lang/fr/lang.php b/inc/lang/fr/lang.php
index 82a0f620e..9ae631df8 100644
--- a/inc/lang/fr/lang.php
+++ b/inc/lang/fr/lang.php
@@ -183,7 +183,7 @@ $lang['resendpwd'] = 'Définir un nouveau mot de passe pour';
$lang['resendpwdmissing'] = 'Désolé, vous devez remplir tous les champs.';
$lang['resendpwdnouser'] = 'Désolé, cet utilisateur n\'existe pas dans notre base de données.';
$lang['resendpwdbadauth'] = 'Désolé, ce code d\'authentification est invalide. Assurez-vous d\'avoir utilisé le lien de confirmation intégral.';
-$lang['resendpwdconfirm'] = 'Un lien de confirmation vous a été expédié par courriel.';
+$lang['resendpwdconfirm'] = 'Un lien de confirmation a été expédié par courriel.';
$lang['resendpwdsuccess'] = 'Votre nouveau mot de passe vous a été expédié par courriel.';
$lang['license'] = 'Sauf mention contraire, le contenu de ce wiki est placé sous les termes de la licence suivante :';
$lang['licenseok'] = 'Note : En modifiant cette page, vous acceptez que le contenu soit placé sous les termes de la licence suivante :';
@@ -201,7 +201,7 @@ $lang['mediaselect'] = 'Sélection de fichiers';
$lang['uploadsucc'] = 'Envoi réussi';
$lang['uploadfail'] = 'L\'envoi a échoué. Les autorisations sont-elles correctes ?';
$lang['uploadwrong'] = 'Envoi refusé. Cette extension de fichier est interdite !';
-$lang['uploadexist'] = 'Le fichier existe déjà. L\'envoi a été annulé.';
+$lang['uploadexist'] = 'Le fichier existe déjà. L\'envoi est ignoré.';
$lang['uploadbadcontent'] = 'Le contenu envoyé ne correspond pas à l\'extension du fichier (%s).';
$lang['uploadspam'] = 'L\'envoi a été bloqué par la liste noire de l\'anti-spam.';
$lang['uploadxss'] = 'L\'envoi a été bloqué car son contenu est peut-être malveillant.';
@@ -240,7 +240,7 @@ $lang['line'] = 'Ligne';
$lang['breadcrumb'] = 'Piste:';
$lang['youarehere'] = 'Vous êtes ici:';
$lang['lastmod'] = 'Dernière modification:';
-$lang['by'] = 'par';
+$lang['by'] = 'de';
$lang['deleted'] = 'supprimée';
$lang['created'] = 'créée';
$lang['restored'] = 'ancienne révision (%s) restaurée';
@@ -386,5 +386,5 @@ $lang['plainhtml'] = 'HTML brut';
$lang['wikimarkup'] = 'Wiki balise';
$lang['page_nonexist_rev'] = 'La page n\'existait pas le %s. Elle a été créée le <a href="%s">%s</a>.';
$lang['unable_to_parse_date'] = 'Ne peut analyser le paramètre date "%s".';
-$lang['email_signature_text'] = 'Ce courriel a été généré par DokuWiki depuis
+$lang['email_signature_text'] = 'Courriel envoyé par DokuWiki depuis
@DOKUWIKIURL@';
diff --git a/inc/lang/fr/mailtext.txt b/inc/lang/fr/mailtext.txt
index d93eb1e8a..a4aa8d8b0 100644
--- a/inc/lang/fr/mailtext.txt
+++ b/inc/lang/fr/mailtext.txt
@@ -1,4 +1,4 @@
-Une page dans votre wiki a été ajoutée ou modifiée. Voici les
+Une page dans votre wiki a changé ou été modifiée. Voici les
détails :
Date : @DATE@
diff --git a/inc/lang/fr/recent.txt b/inc/lang/fr/recent.txt
index f24996d83..77ec119d1 100644
--- a/inc/lang/fr/recent.txt
+++ b/inc/lang/fr/recent.txt
@@ -1,3 +1,3 @@
====== Derniers changements ======
-Les pages suivantes ont été modifiées récemment :
+Voici la liste des pages modifiées récemment :
diff --git a/inc/lang/fr/subscr_digest.txt b/inc/lang/fr/subscr_digest.txt
index 6744a1933..fa64b2262 100644
--- a/inc/lang/fr/subscr_digest.txt
+++ b/inc/lang/fr/subscr_digest.txt
@@ -1,6 +1,6 @@
Bonjour,
-La page « @PAGE@ » dans le wiki « @TITLE@ » a été modifiée.
+La page « @PAGE@ » dans le wiki « @TITLE@ » a changé.
Voici les modifications :
--------------------------------------------------------
diff --git a/inc/lang/fr/subscr_list.txt b/inc/lang/fr/subscr_list.txt
index 7dd83f1d4..f34fa52e0 100644
--- a/inc/lang/fr/subscr_list.txt
+++ b/inc/lang/fr/subscr_list.txt
@@ -1,7 +1,7 @@
Bonjour,
Des pages de la catégorie « @PAGE@ » du wiki « @TITLE@ » ont
-été modifiées. Voici les modifications :
+changé. Voici les modifications :
--------------------------------------------------------
@DIFF@
diff --git a/inc/lang/fr/subscr_single.txt b/inc/lang/fr/subscr_single.txt
index 458848a24..d101fabd9 100644
--- a/inc/lang/fr/subscr_single.txt
+++ b/inc/lang/fr/subscr_single.txt
@@ -1,6 +1,6 @@
Bonjour,
-La page « @PAGE@ » dans le wiki « @TITLE@ » a été modifiée.
+La page « @PAGE@ » dans le wiki « @TITLE@ » a changé.
Voici les modifications :
--------------------------------------------------------
diff --git a/inc/lang/it/lang.php b/inc/lang/it/lang.php
index 58091efd8..9d9c1edd4 100644
--- a/inc/lang/it/lang.php
+++ b/inc/lang/it/lang.php
@@ -3,6 +3,7 @@
/**
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
+ * @author Roberto Bellingeri <bellingeri@netguru.it>
* @author Eddy <eddy@mail.it>
* @author Riccardo <riccardo.furlato@gmail.com>
* @author Stefano <stefano.stefano@gmail.com>
diff --git a/inc/lang/nl/lang.php b/inc/lang/nl/lang.php
index b6a97a4cb..2cd368639 100644
--- a/inc/lang/nl/lang.php
+++ b/inc/lang/nl/lang.php
@@ -3,6 +3,7 @@
/**
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
+ * @author Gerrit Uitslag <klapinklapin@gmail.com>
* @author Andy <astolker@icloud.com>
* @author Harriet Neitz <harrietneitz@gmail.com>
* @author mark prins <mprins@users.sf.net>
@@ -19,7 +20,6 @@
* @author Timon Van Overveldt <timonvo@gmail.com>
* @author Jeroen
* @author Ricardo Guijt <ricardoguijt@gmail.com>
- * @author Gerrit <klapinklapin@gmail.com>
* @author Remon <no@email.local>
* @author gicalle <gicalle@hotmail.com>
* @author Rene <wllywlnt@yahoo.com>
diff --git a/inc/lang/nl/onceexisted.txt b/inc/lang/nl/onceexisted.txt
new file mode 100644
index 000000000..4669563e0
--- /dev/null
+++ b/inc/lang/nl/onceexisted.txt
@@ -0,0 +1,3 @@
+======= Deze pagina bestaat niet meer ======
+
+Je hebt een link gevolgd naar een pagina die niet meer bestaat. Je kunt de lijst met [[?do=revisions|Oude revisies]] bekijken om te zien wanneer en waarom de pagina was verwijderd, oude versies te bekijken en om deze te herstellen. \ No newline at end of file
diff --git a/inc/lang/no/lang.php b/inc/lang/no/lang.php
index 9ca3b3f38..2cb6839fa 100644
--- a/inc/lang/no/lang.php
+++ b/inc/lang/no/lang.php
@@ -3,6 +3,7 @@
/**
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
+ * @author Rut Kristin Aanestad <dark@met.no>
* @author Torgeir Blesvik <bletor@banenor.no>
* @author ThorPrestboen <thor.erling.prestboen@gmail.com>
* @author Christian McKenna <mckchr@banenor.no>
diff --git a/inc/lang/no/login.txt b/inc/lang/no/login.txt
index 247c93087..0c67c7520 100644
--- a/inc/lang/no/login.txt
+++ b/inc/lang/no/login.txt
@@ -1,3 +1,3 @@
====== Logg inn ======
-Du er ikke innlogget! Angi ditt brukernavn og passord nedenfor for å logge inn. Støtte for informasjonskapsler (cockies) må være aktivert i din nettleser for at du skal kunne logge inn.
+Du er ikke innlogget! Angi ditt brukernavn og passord nedenfor for å logge inn. Støtte for informasjonskapsler (cookies) må være aktivert i din nettleser for at du skal kunne logge inn.
diff --git a/inc/lang/oc/lang.php b/inc/lang/oc/lang.php
index 572bdddeb..6c10ccdd0 100644
--- a/inc/lang/oc/lang.php
+++ b/inc/lang/oc/lang.php
@@ -128,20 +128,33 @@ $lang['profdeleted'] = 'Vòstre compte foguèt suprimit d’aqueste wi
$lang['proffail'] = 'Lo perfil de l’utilizaire es pas estat actualizat.';
$lang['pwdforget'] = 'Avètz oblidat lo senhal ? Demandatz-ne un nòu';
$lang['resendpwd'] = 'Definir un nòu senhal per';
+$lang['resendpwdconfirm'] = 'Avèm enviat un ligam de confirmacion per corrièl.';
+$lang['resendpwdsuccess'] = 'Avèm enviat lo senhal per corrièl.';
$lang['searchmedia'] = 'Cercar un nom de fichièr :';
$lang['searchmedia_in'] = 'Cercar dins %s';
+$lang['txt_upload'] = 'Selecionnatz lo fichièr d’enviar :';
+$lang['txt_filename'] = 'Enviar coma (opcional) :';
+$lang['txt_overwrt'] = 'Remplaçar lo fichièr existent';
$lang['nothingfound'] = 'Pas res es estat trobat.';
$lang['mediaselect'] = 'Fichièrs mèdias';
$lang['uploadsucc'] = 'Corrèctament enviat';
+$lang['uploadexist'] = 'Lo fichièr existís ja. Pas res fach.';
+$lang['deletesucc'] = 'Lo fichièr « %s » es estat suprimit.';
+$lang['deletefail'] = 'Supression impossibla del fichièr « %s » - verificatz las autorizacions.';
+$lang['mediainuse'] = 'Lo fichièr « %s » es pas estat suprimit - es encara utilizat.';
$lang['mediafiles'] = 'Fichièrs disponibles dins';
$lang['accessdenied'] = 'Sètz pas autorizatz a veire aquesta pagina.';
$lang['mediaview'] = 'Veire lo fichièr d\'origina';
+$lang['mediaroot'] = 'root';
$lang['reference'] = 'Referéncia per';
$lang['toc'] = 'Ensenhador';
$lang['current'] = 'actuala';
$lang['yours'] = 'Vòstra version';
$lang['diff'] = 'Mostrar las diferéncias amb la version actuala';
$lang['diff_type'] = 'Veire las diferéncias :';
+$lang['diffprevrev'] = 'Revision precedenta';
+$lang['diffnextrev'] = 'Revision seguenta';
+$lang['difflastrev'] = 'Darrièra revision';
$lang['line'] = 'Linha';
$lang['youarehere'] = 'Sètz aquí :';
$lang['lastmod'] = 'Darrièra modification :';
diff --git a/inc/lang/pt/lang.php b/inc/lang/pt/lang.php
index 8bc1e69b3..de6c5500d 100644
--- a/inc/lang/pt/lang.php
+++ b/inc/lang/pt/lang.php
@@ -3,6 +3,7 @@
/**
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
+ * @author Maykon Oliveira <maykonoliveira850@gmail.com>
* @author José Vieira <jmsv63@gmail.com>
* @author José Carlos Monteiro <jose.c.monteiro@netcabo.pt>
* @author José Monteiro <Jose.Monteiro@DoWeDo-IT.com>
@@ -356,6 +357,7 @@ $lang['media_perm_read'] = 'Perdão, não tem permissão para ler ficheiro
$lang['media_perm_upload'] = 'Perdão, não tem permissão para enviar ficheiros.';
$lang['media_update'] = 'enviar nova versão';
$lang['media_restore'] = 'Restaurar esta versão';
+$lang['media_acl_warning'] = 'Essa lista pode não estar completa devido a restrições de ACL e páginas ocultas.';
$lang['currentns'] = 'Namespace actual';
$lang['searchresult'] = 'Resultado da pesquisa';
$lang['plainhtml'] = 'HTML simples';
diff --git a/inc/lang/pt/onceexisted.txt b/inc/lang/pt/onceexisted.txt
new file mode 100644
index 000000000..f9fc10cce
--- /dev/null
+++ b/inc/lang/pt/onceexisted.txt
@@ -0,0 +1,3 @@
+======= Esta página não existe mais ======
+
+Você seguiu um link para uma página que não existe mais. Você pode verificar a lista de [[?Do=revisions|old revisions]] para ver quando e por que foi excluída, acessar revisões antigas ou restaurá-la. \ No newline at end of file
diff --git a/inc/lang/ru/lang.php b/inc/lang/ru/lang.php
index 4f3f5900a..752f736ff 100644
--- a/inc/lang/ru/lang.php
+++ b/inc/lang/ru/lang.php
@@ -3,6 +3,7 @@
/**
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
+ * @author Alexander Kh. <001.arx@gmail.com>
* @author Aleksandr Selivanov <alexgearbox@yandex.ru>
* @author Vyacheslav Strenadko <vyacheslav.strenadko@gmail.com>
* @author Wolterhon <hotmottot.1@gmail.com>
diff --git a/inc/lang/ru/onceexisted.txt b/inc/lang/ru/onceexisted.txt
new file mode 100644
index 000000000..2fed69f57
--- /dev/null
+++ b/inc/lang/ru/onceexisted.txt
@@ -0,0 +1,3 @@
+======= Данная страница более не существует ======
+
+Вы перешли по ссылки на страницу, которая более не существует. Вы можете проверить список [[?do=revisions|old revisions]], чтобы увидеть когда и почему она была удалена, а также получить доступ к более ранним её версиям или восстановить её. \ No newline at end of file
diff --git a/inc/lang/sk/lang.php b/inc/lang/sk/lang.php
index 649f200e7..b15b94133 100644
--- a/inc/lang/sk/lang.php
+++ b/inc/lang/sk/lang.php
@@ -1,9 +1,13 @@
<?php
+
/**
* slovak language file
*
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
+ * auth.class language support
+ * installer strings
+ *
* @author Martin Michalek <michalek.dev@gmail.com>
* @author Ondrej Vegh <ov@vsieti.sk> with help of the scholars from Zdruzena stredna skola polygraficka in Bratislava
* @author Michal Mesko <michal.mesko@gmail.com>
@@ -12,12 +16,11 @@
*/
$lang['encoding'] = 'utf-8';
$lang['direction'] = 'ltr';
-$lang['doublequoteopening'] = '“'; //&ldquo;
-$lang['doublequoteclosing'] = '”'; //&rdquo;
-$lang['singlequoteopening'] = '‘'; //&lsquo;
-$lang['singlequoteclosing'] = '’'; //&rsquo;
-$lang['apostrophe'] = '’'; //&rsquo;
-
+$lang['doublequoteopening'] = '“';
+$lang['doublequoteclosing'] = '”';
+$lang['singlequoteopening'] = '‘';
+$lang['singlequoteclosing'] = '’';
+$lang['apostrophe'] = '’';
$lang['btn_edit'] = 'Upraviť stránku';
$lang['btn_source'] = 'Zobraziť zdroj stránky';
$lang['btn_show'] = 'Zobraziť stránku';
@@ -55,7 +58,6 @@ $lang['btn_media'] = 'Správa médií';
$lang['btn_deleteuser'] = 'Zrušiť môj účet';
$lang['btn_img_backto'] = 'Späť na %s';
$lang['btn_mediaManager'] = 'Prezrieť v správcovi médií';
-
$lang['loggedinas'] = 'Prihlásený(á) ako:';
$lang['user'] = 'Používateľské meno';
$lang['pass'] = 'Heslo';
@@ -69,10 +71,9 @@ $lang['profile'] = 'Používateľský profil';
$lang['badlogin'] = 'Zadané používateľské meno a heslo nie je správne.';
$lang['badpassconfirm'] = 'Ľutujem, heslo bolo nesprávne.';
$lang['minoredit'] = 'Menšie zmeny';
-$lang['draftdate'] = 'Koncept automaticky uložený'; // full dformat date will be added
+$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'] = 'Ak ste nenašli, čo ste hľadali, môžete vytvoriť alebo upraviť stránku %s, ktorá bola nazvaná podľa vášho dopytu.';
-
$lang['search_fullresults'] = 'Fulltextové výsledky';
$lang['js']['search_toggle_tools'] = 'Zobraziť/Skryť vyhľadávacie nástroje';
$lang['js']['willexpire'] = 'Váš zámok pre editáciu za chvíľu stratí platnosť.\nAby ste predišli konfliktom, stlačte tlačítko Náhľad a zámok sa predĺži.';
@@ -117,7 +118,6 @@ $lang['js']['media_done_btn'] = 'Hotovo';
$lang['js']['media_drop'] = 'Pridajte súbory potiahnutím myšou';
$lang['js']['media_cancel'] = 'odstrániť';
$lang['js']['media_overwrt'] = 'Prepísať existujúce súbory';
-
$lang['search_exact_match'] = 'Presná zhoda';
$lang['search_starts_with'] = 'Začín na';
$lang['search_ends_with'] = 'Končí na';
@@ -170,7 +170,6 @@ $lang['lockedby'] = 'Práve zamknuté:';
$lang['lockexpire'] = 'Zámok stratí platnosť:';
$lang['rssfailed'] = 'Nastala chyba pri vytváraní tohto RSS: ';
$lang['nothingfound'] = 'Nič nenájdené.';
-
$lang['mediaselect'] = 'Výber súboru';
$lang['uploadsucc'] = 'Prenos prebehol v poriadku';
$lang['uploadfail'] = 'Chyba pri nahrávaní. Možno kvôli zle nastaveným právam?';
@@ -194,7 +193,6 @@ $lang['mediaextchange'] = 'Prípona súboru bola zmenená z .%s na .%s!';
$lang['reference'] = 'Referencie pre';
$lang['ref_inuse'] = 'Súbor nemôže byť zmazaný, pretože je stále používaný nasledujúcimi stránkami:';
$lang['ref_hidden'] = 'Niektoré referencie sú na stránky, pre ktoré nemáte právo na čítanie';
-
$lang['hits'] = '- počet výskytov';
$lang['quickhits'] = 'Zodpovedajúce stránky';
$lang['toc'] = 'Obsah';
@@ -229,18 +227,15 @@ $lang['site_tools'] = 'Nástoje správy stránok';
$lang['page_tools'] = 'Nástoje stránky';
$lang['skip_to_content'] = 'skok na obsah';
$lang['sidebar'] = 'Bočný panel';
-
$lang['mail_newpage'] = 'stránka pridaná:';
$lang['mail_changed'] = 'stránka zmenená:';
$lang['mail_subscribe_list'] = 'stránky zmenené v mennom priestore:';
$lang['mail_new_user'] = 'nový používateľ:';
$lang['mail_upload'] = 'nahraný súbor:';
-
$lang['changes_type'] = 'Prehľad zmien';
$lang['pages_changes'] = 'Stránok';
$lang['media_changes'] = 'Súbory';
$lang['both_changes'] = 'Stránok spolu s média súbormi';
-
$lang['qb_bold'] = 'Tučné';
$lang['qb_italic'] = 'Kurzíva';
$lang['qb_underl'] = 'Podčiarknutie';
@@ -265,9 +260,7 @@ $lang['qb_media'] = 'Vložiť obrázky alebo iné súbory';
$lang['qb_sig'] = 'Vložiť podpis';
$lang['qb_smileys'] = 'Smajlíky';
$lang['qb_chars'] = 'Špeciálne znaky';
-
$lang['upperns'] = 'návrat do nadradeného menného priestoru';
-
$lang['metaedit'] = 'Upraviť metainformácie';
$lang['metasaveerr'] = 'Zápis metainformácií zlyhal';
$lang['metasaveok'] = 'Metainformácie uložené';
@@ -283,14 +276,13 @@ $lang['img_camera'] = 'Fotoaparát:';
$lang['img_keywords'] = 'Kľúčové slová:';
$lang['img_width'] = 'Šírka:';
$lang['img_height'] = 'Výška:';
-
$lang['subscr_subscribe_success'] = 'Používateľ %s bol pridaný do zoznamu hlásení o zmenách %s';
$lang['subscr_subscribe_error'] = 'Chyba pri pridaní používateľa %s do zoznamu hlásení o zmenách %s';
$lang['subscr_subscribe_noaddress'] = 'Vaše prihlasovacie meno nemá priradenú žiadnu email adresu, nemôžete byť pridaný do zoznamu hlásení o zmenách';
$lang['subscr_unsubscribe_success'] = 'Používateľ %s bol odstránený zo zoznamu hlásení o zmenách %s';
$lang['subscr_unsubscribe_error'] = 'Chyba pri odstránení používateľa %s zo zoznamu hlásení o zmenách %s';
$lang['subscr_already_subscribed'] = 'Používateľ %s už je v zozname hlásení o zmenách %s';
-$lang['subscr_not_subscribed'] = 'Používateľ %s nie je v zozname hlásení o zmenách %s'; // Manage page for subscriptions
+$lang['subscr_not_subscribed'] = 'Používateľ %s nie je v zozname hlásení o zmenách %s';
$lang['subscr_m_not_subscribed'] = 'Momentálne nesledujete zmeny aktuálnej stránky alebo menného priestoru.';
$lang['subscr_m_new_header'] = 'Pridať sledovanie zmien';
$lang['subscr_m_current_header'] = 'Aktuálne sledované zmeny';
@@ -300,11 +292,7 @@ $lang['subscr_m_receive'] = 'Dostávať';
$lang['subscr_style_every'] = 'email pri každej zmene';
$lang['subscr_style_digest'] = 'email so zhrnutím zmien pre každú stránku (perióda %.2f dňa)';
$lang['subscr_style_list'] = 'zoznam zmenených stránok od posledného emailu (perióda %.2f dňa)';
-
-/* auth.class language support */
$lang['authtempfail'] = 'Používateľská autentifikácia je dočasne nedostupná. Ak táto situácia pretrváva, prosím informujte správcu systému.';
-
-/* installer strings */
$lang['i_chooselang'] = 'Zvoľte váš jazyk';
$lang['i_installer'] = 'DokuWiki inštalátor';
$lang['i_wikiname'] = 'Názov Wiki';
@@ -332,7 +320,6 @@ $lang['i_license'] = 'Vyberte licenciu, pod ktorou chcete uložiť v
$lang['i_license_none'] = 'Nezobrazovať žiadne licenčné informácie';
$lang['i_pop_field'] = 'Prosím pomôžte nám zlepšiť prácu s DokuWiki:';
$lang['i_pop_label'] = 'Raz mesačne zaslať anonymné údaje vývojárom DokuWiki';
-
$lang['recent_global'] = 'Práve prehliadate zmeny v mennom priestore <b>%s</b>. Môžete si tiež pozrieť <a href="%s">aktuálne zmeny celej wiki</a>.';
$lang['years'] = 'pred %d rokmi';
$lang['months'] = 'pred %d mesiacmi';
@@ -341,9 +328,7 @@ $lang['days'] = 'pred %d dňami';
$lang['hours'] = 'pred %d hodinami';
$lang['minutes'] = 'pred %d minútami';
$lang['seconds'] = 'pred %d sekundami';
-
$lang['wordblock'] = 'Vaše zmeny neboli uložené, pretože obsahovali nepovolený text (spam).';
-
$lang['media_uploadtab'] = 'Nahrať';
$lang['media_searchtab'] = 'Hľadať';
$lang['media_file'] = 'Súbor';
@@ -368,7 +353,6 @@ $lang['media_perm_upload'] = 'Prepáčte, ale nemáte dostatočné oprávnen
$lang['media_update'] = 'Nahrať novú verziu';
$lang['media_restore'] = 'Obnoviť túto verziu';
$lang['media_acl_warning'] = 'Tento zoznam nemusí byť úplný z dôvodu ACL obmedzení alebo skratých stránok.';
-
$lang['currentns'] = 'Aktuálny menný priestor';
$lang['searchresult'] = 'Výsledky hľadania';
$lang['plainhtml'] = 'Jednoduché HTML';
@@ -377,5 +361,3 @@ $lang['page_nonexist_rev'] = 'Stránka %s neexistovala. Bola vytvorená doda
$lang['unable_to_parse_date'] = 'Nie je možné spracovať parameter "%s".';
$lang['email_signature_text'] = 'Táto správa bola zaslaná DokuWiki
@DOKUWIKIURL@';
-#$lang['email_signature_html'] = ''; # the empty default will copy the text signature, you can override it in a local lang file
-
diff --git a/inc/lang/sr/lang.php b/inc/lang/sr/lang.php
index 9182c1b7f..ff1c37146 100644
--- a/inc/lang/sr/lang.php
+++ b/inc/lang/sr/lang.php
@@ -3,6 +3,7 @@
/**
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
+ * @author Milan Oparnica <milan.opa@gmail.com>
* @author Filip Brcic <brcha@users.sourceforge.net>
* @author Иван Петровић (Ivan Petrovic) <petrovicivan@ubuntusrbija.org>
* @author Miroslav Šolti <solti.miroslav@gmail.com>
@@ -68,44 +69,9 @@ $lang['badpassconfirm'] = 'Нажалост, лозинка је била
$lang['minoredit'] = 'Мала измена';
$lang['draftdate'] = 'Нацрт је аутоматски сачуван';
$lang['nosecedit'] = 'Страна је у међувремену промењена, поглавље је застарело и поново се учитава цела страна.';
-$lang['regmissing'] = 'Извините, морате да попуните сва поља.';
-$lang['reguexists'] = 'Извините, корисник са истим именом већ постоји.';
-$lang['regsuccess'] = 'Корисник је направљен и лозинка је послата путем е-поште.';
-$lang['regsuccess2'] = 'Корисник је направљен.';
-$lang['regfail'] = 'Нисам могао да направим корисника.';
-$lang['regmailfail'] = 'Изгледа да је дошло до грешке приликом слања лозинке е-поштом. Контактирајте администратора!';
-$lang['regbadmail'] = 'Дата е-адреса није у реду - ако мислите да је ово грешка, контактирајте администратора';
-$lang['regbadpass'] = 'Две унете лозинке нису исте. Пробајте поново.';
-$lang['regpwmail'] = 'Ваша DokuWiki лозинка';
-$lang['reghere'] = 'Још увек немате налог? Само направите један';
-$lang['profna'] = 'Овај вики не дозвољава измену профила';
-$lang['profnochange'] = 'Нема промена.';
-$lang['profnoempty'] = 'Није дозвољено оставити празно поље имена или е-адресе.';
-$lang['profchanged'] = 'Кориснички профил је ажуриран.';
-$lang['profnodelete'] = 'Овај вики не подржава брисање корисника';
-$lang['profdeleteuser'] = 'Избриши налог';
-$lang['profdeleted'] = 'Ваш кориснички налог је избрисан са овог викија';
-$lang['profconfdelete'] = 'Желим да уклоним свој налог са овог викија. <br/> Ова радња се не може опозвати.';
-$lang['profconfdeletemissing'] = 'Није штиклирано поље за потврду';
-$lang['proffail'] = 'Кориснички профил није ажуриран.';
-$lang['pwdforget'] = 'Заборавили сте лозинку? Направите нову';
-$lang['resendna'] = 'Овај вики не дозвољава слање лозинки.';
-$lang['resendpwd'] = 'Поставите нову лозинку за';
-$lang['resendpwdmissing'] = 'Жао ми је, сва поља морају бити попуњена.';
-$lang['resendpwdnouser'] = 'Жао ми је, овај корисник не постоји у нашој бази.';
-$lang['resendpwdbadauth'] = 'Жао ми је, потврдни код није исправан. Проверите да ли сте користили комплетан потврдни линк.';
-$lang['resendpwdconfirm'] = 'Потврдни линк је постат као е-порука.';
-$lang['resendpwdsuccess'] = 'Ваша нова лозинка је послата као е-порука.';
-$lang['license'] = 'Осим где је другачије назначено, материјал на овом викију је под следећом лиценцом:';
-$lang['licenseok'] = 'Напомена: Изменом ове стране слажете се да ће ваше измене бити под следећом лиценцом:';
-$lang['searchmedia'] = 'Претражи по имену фајла';
-$lang['searchmedia_in'] = 'Претражи у %s';
-$lang['txt_upload'] = 'Изаберите датотеку за слање:';
-$lang['txt_filename'] = 'Унесите вики-име (опционо):';
-$lang['txt_overwrt'] = 'Препишите тренутни фајл';
-$lang['maxuploadsize'] = 'Отпреми највише %s по датотеци.';
-$lang['lockedby'] = 'Тренутно закључано од стране:';
-$lang['lockexpire'] = 'Закључавање истиче:';
+$lang['searchcreatepage'] = 'Ako niste pronašli to što tražite, možete napraviti ili urediti stranicu %s, imenovanu prema zadatom upitu.';
+$lang['search_fullresults'] = 'Tekstualni rezultati';
+$lang['js']['search_toggle_tools'] = 'Uključi/isključi Alate Pretrage';
$lang['js']['willexpire'] = 'Ваше закључавање за измену ове странице ће да истекне за један минут.\nДа би сте избегли конфликте, искористите дугме за преглед како би сте ресетовали тајмер закључавања.';
$lang['js']['notsavedyet'] = 'Несачуване измене ће бити изгубљене.
Да ли стварно желите да наставите?';
@@ -141,12 +107,64 @@ $lang['js']['del_confirm'] = 'Обриши овај унос?';
$lang['js']['restore_confirm'] = 'Заиста желите да вратите ово издање?';
$lang['js']['media_diff'] = 'Погледај разлике:';
$lang['js']['media_diff_both'] = 'Једно до другог';
+$lang['js']['media_diff_opacity'] = 'Prosvetl';
+$lang['js']['media_diff_portions'] = 'Prevuci';
$lang['js']['media_select'] = 'Изабери датотеке…';
$lang['js']['media_upload_btn'] = 'Отпреми';
$lang['js']['media_done_btn'] = 'Готово';
$lang['js']['media_drop'] = 'Превуците датотеке овде да бисте их отпремили';
$lang['js']['media_cancel'] = 'уклони';
$lang['js']['media_overwrt'] = 'Препиши постојеће датотеке';
+$lang['search_exact_match'] = 'Potpuno podudaranje';
+$lang['search_starts_with'] = 'Počinje sa';
+$lang['search_ends_with'] = 'Završava se sa';
+$lang['search_contains'] = 'Sadrži';
+$lang['search_custom_match'] = 'Prilagođen';
+$lang['search_any_ns'] = 'Svako imenovanje ';
+$lang['search_any_time'] = 'Svako vreme';
+$lang['search_past_7_days'] = 'Prošla nedelja';
+$lang['search_past_month'] = 'Prošli mesec';
+$lang['search_past_year'] = 'Prošla godina';
+$lang['search_sort_by_hits'] = 'Poređaj po pogodcima';
+$lang['search_sort_by_mtime'] = 'Poređaj po vremenu izmene';
+$lang['regmissing'] = 'Извините, морате да попуните сва поља.';
+$lang['reguexists'] = 'Извините, корисник са истим именом већ постоји.';
+$lang['regsuccess'] = 'Корисник је направљен и лозинка је послата путем е-поште.';
+$lang['regsuccess2'] = 'Корисник је направљен.';
+$lang['regfail'] = 'Нисам могао да направим корисника.';
+$lang['regmailfail'] = 'Изгледа да је дошло до грешке приликом слања лозинке е-поштом. Контактирајте администратора!';
+$lang['regbadmail'] = 'Дата е-адреса није у реду - ако мислите да је ово грешка, контактирајте администратора';
+$lang['regbadpass'] = 'Две унете лозинке нису исте. Пробајте поново.';
+$lang['regpwmail'] = 'Ваша DokuWiki лозинка';
+$lang['reghere'] = 'Још увек немате налог? Само направите један';
+$lang['profna'] = 'Овај вики не дозвољава измену профила';
+$lang['profnochange'] = 'Нема промена.';
+$lang['profnoempty'] = 'Није дозвољено оставити празно поље имена или е-адресе.';
+$lang['profchanged'] = 'Кориснички профил је ажуриран.';
+$lang['profnodelete'] = 'Овај вики не подржава брисање корисника';
+$lang['profdeleteuser'] = 'Избриши налог';
+$lang['profdeleted'] = 'Ваш кориснички налог је избрисан са овог викија';
+$lang['profconfdelete'] = 'Желим да уклоним свој налог са овог викија. <br/> Ова радња се не може опозвати.';
+$lang['profconfdeletemissing'] = 'Није штиклирано поље за потврду';
+$lang['proffail'] = 'Кориснички профил није ажуриран.';
+$lang['pwdforget'] = 'Заборавили сте лозинку? Направите нову';
+$lang['resendna'] = 'Овај вики не дозвољава слање лозинки.';
+$lang['resendpwd'] = 'Поставите нову лозинку за';
+$lang['resendpwdmissing'] = 'Жао ми је, сва поља морају бити попуњена.';
+$lang['resendpwdnouser'] = 'Жао ми је, овај корисник не постоји у нашој бази.';
+$lang['resendpwdbadauth'] = 'Жао ми је, потврдни код није исправан. Проверите да ли сте користили комплетан потврдни линк.';
+$lang['resendpwdconfirm'] = 'Потврдни линк је постат као е-порука.';
+$lang['resendpwdsuccess'] = 'Ваша нова лозинка је послата као е-порука.';
+$lang['license'] = 'Осим где је другачије назначено, материјал на овом викију је под следећом лиценцом:';
+$lang['licenseok'] = 'Напомена: Изменом ове стране слажете се да ће ваше измене бити под следећом лиценцом:';
+$lang['searchmedia'] = 'Претражи по имену фајла';
+$lang['searchmedia_in'] = 'Претражи у %s';
+$lang['txt_upload'] = 'Изаберите датотеку за слање:';
+$lang['txt_filename'] = 'Унесите вики-име (опционо):';
+$lang['txt_overwrt'] = 'Препишите тренутни фајл';
+$lang['maxuploadsize'] = 'Отпреми највише %s по датотеци.';
+$lang['lockedby'] = 'Тренутно закључано од стране:';
+$lang['lockexpire'] = 'Закључавање истиче:';
$lang['rssfailed'] = 'Дошло је до грешке приликом преузимања овог довода: ';
$lang['nothingfound'] = 'Ништа није нађено.';
$lang['mediaselect'] = 'Избор медијске датотеке';
diff --git a/inc/lang/sr/onceexisted.txt b/inc/lang/sr/onceexisted.txt
new file mode 100644
index 000000000..ce9c28fc3
--- /dev/null
+++ b/inc/lang/sr/onceexisted.txt
@@ -0,0 +1,3 @@
+======= Ova stranica više ne postoji ======
+
+Pratili ste sled do stranice koja više ne postoji. U dnevniku [[?do=revisions|old revisions]] možete pronaći kada i zašto je stranica obrisana, otvoriti njenu staru verziju i povratiti je. \ No newline at end of file
diff --git a/inc/lang/zh/lang.php b/inc/lang/zh/lang.php
index 2da9d6e14..a9fe2cf98 100644
--- a/inc/lang/zh/lang.php
+++ b/inc/lang/zh/lang.php
@@ -3,6 +3,7 @@
/**
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
+ * @author HaoNan <haonan@zhuoming.info>
* @author Phy <dokuwiki@phy25.com>
* @author Aaron Zhou <iradio@163.com>
* @author lempel <riverlempel@hotmail.com>
diff --git a/lib/plugins/acl/lang/sr/lang.php b/lib/plugins/acl/lang/sr/lang.php
index 0ba322a5e..f2c95484d 100644
--- a/lib/plugins/acl/lang/sr/lang.php
+++ b/lib/plugins/acl/lang/sr/lang.php
@@ -4,8 +4,7 @@
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
* @author Filip Brcic <brcha@users.sourceforge.net>
- * @author Иван Петровић petrovicivan@ubuntusrbija.org
- * @author Ivan Petrovic <petrovicivan@ubuntusrbija.org>
+ * @author Иван Петровић <petrovicivan@ubuntusrbija.org>
* @author Miroslav Šolti <solti.miroslav@gmail.com>
*/
$lang['admin_acl'] = 'Управљање листом контроле приступа';
diff --git a/lib/plugins/authad/lang/es/settings.php b/lib/plugins/authad/lang/es/settings.php
index 789222236..c329c8e7f 100644
--- a/lib/plugins/authad/lang/es/settings.php
+++ b/lib/plugins/authad/lang/es/settings.php
@@ -3,6 +3,7 @@
/**
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
+ * @author Liliana <lilianasaidon@gmail.com>
* @author monica <may.dorado@gmail.com>
* @author Antonio Bueno <atnbueno@gmail.com>
* @author Juan De La Cruz <juann.dlc@gmail.com>
@@ -24,3 +25,4 @@ $lang['expirywarn'] = 'Días por adelantado para avisar al usuario de
$lang['additional'] = 'Una lista separada por comas de atributos AD adicionales a obtener de los datos de usuario. Usado por algunos plugins.';
$lang['update_name'] = '¿Permitir a los usuarios actualizar su nombre de AD?';
$lang['update_mail'] = '¿Permitir a los usuarios actualizar su email?';
+$lang['recursive_groups'] = 'Restituir los grupos anidados a sus respectivos miembros (más lento)';
diff --git a/lib/plugins/authad/lang/fr/settings.php b/lib/plugins/authad/lang/fr/settings.php
index f747c08ae..f0717c7a8 100644
--- a/lib/plugins/authad/lang/fr/settings.php
+++ b/lib/plugins/authad/lang/fr/settings.php
@@ -3,16 +3,16 @@
/**
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
+ * @author Schplurtz le Déboulonné <schplurtz@laposte.net>
* @author Bruno Veilleux <bruno.vey@gmail.com>
* @author Momo50 <c.brothelande@gmail.com>
- * @author Schplurtz le Déboulonné <Schplurtz@laposte.net>
*/
$lang['account_suffix'] = 'Le suffixe de votre compte. Ex.: <code>@mon.domaine.org</code>';
$lang['base_dn'] = 'Votre nom de domaine de base. <code>DC=mon,DC=domaine,DC=org</code>';
$lang['domain_controllers'] = 'Une liste de contrôleurs de domaine séparés par des virgules. Ex.: <code>srv1.domaine.org,srv2.domaine.org</code>';
$lang['admin_username'] = 'Un utilisateur Active Directory avec accès aux données de tous les autres utilisateurs. Facultatif, mais nécessaire pour certaines actions telles que l\'envoi de courriels d\'abonnement.';
$lang['admin_password'] = 'Le mot de passe de l\'utilisateur ci-dessus.';
-$lang['sso'] = 'Est-ce que la connexion unique (Single-Sign-On) par Kerberos ou NTLM doit être utilisée?';
+$lang['sso'] = 'Est-ce que l\'authentification unique (Single-Sign-On) par Kerberos ou NTLM doit être utilisée?';
$lang['sso_charset'] = 'Le jeu de caractères de votre serveur web va passer le nom d\'utilisateur Kerberos ou NTLM. Vide pour UTF-8 ou latin-1. Nécessite l\'extension iconv.';
$lang['real_primarygroup'] = 'Est-ce que le véritable groupe principal doit être résolu au lieu de présumer "Domain Users" (plus lent)?';
$lang['use_ssl'] = 'Utiliser une connexion SSL? Si utilisée, n\'activez pas TLS ci-dessous.';
@@ -22,3 +22,4 @@ $lang['expirywarn'] = 'Jours d\'avance pour l\'avertissement envoyé
$lang['additional'] = 'Une liste séparée par des virgules d\'attributs AD supplémentaires à récupérer dans les données utilisateur. Utilisée par certains modules.';
$lang['update_name'] = 'Autoriser les utilisateurs à modifier leur nom affiché de l\'AD ?';
$lang['update_mail'] = 'Autoriser les utilisateurs à modifier leur adresse de courriel ?';
+$lang['recursive_groups'] = 'Résoudre les groupes imbriqués à leur membres respectifs (plus lent).';
diff --git a/lib/plugins/authad/lang/it/settings.php b/lib/plugins/authad/lang/it/settings.php
index 9fd82352a..8d641720b 100644
--- a/lib/plugins/authad/lang/it/settings.php
+++ b/lib/plugins/authad/lang/it/settings.php
@@ -3,6 +3,7 @@
/**
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
+ * @author Roberto Bellingeri <bellingeri@netguru.it>
* @author Edmondo Di Tucci <snarchio@gmail.com>
* @author Torpedo <dgtorpedo@gmail.com>
*/
@@ -21,3 +22,4 @@ $lang['expirywarn'] = 'Giorni di preavviso per la scadenza della pass
$lang['additional'] = 'Valori separati da virgola di attributi AD addizionali da caricare dai dati utente. Usato da alcuni plugin.';
$lang['update_name'] = 'Permettere agli utenti di aggiornare il loro nome AD visualizzato? ';
$lang['update_mail'] = 'Permettere agli utenti di aggiornare il loro indirizzo e-mail?';
+$lang['recursive_groups'] = 'Risolvi i gruppi nidificati ai rispettivi membri (più lento).';
diff --git a/lib/plugins/authad/lang/nl/settings.php b/lib/plugins/authad/lang/nl/settings.php
index c0be12e79..b8b58a1bb 100644
--- a/lib/plugins/authad/lang/nl/settings.php
+++ b/lib/plugins/authad/lang/nl/settings.php
@@ -3,8 +3,8 @@
/**
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
- * @author Remon <no@email.local>
* @author Gerrit Uitslag <klapinklapin@gmail.com>
+ * @author Remon <no@email.local>
* @author Sjoerd <sjoerd@sjomar.eu>
*/
$lang['account_suffix'] = 'Je account domeinnaam. Bijv <code>@mijn.domein.org</code>';
@@ -22,3 +22,4 @@ $lang['expirywarn'] = 'Waarschuwingstermijn voor vervallen wachtwoord
$lang['additional'] = 'Een kommagescheiden lijst van extra AD attributen van de gebruiker. Wordt gebruikt door sommige plugins.';
$lang['update_name'] = 'Sta gebruikers toe om hun getoonde AD naam bij te werken';
$lang['update_mail'] = 'Sta gebruikers toe hun email adres bij te werken';
+$lang['recursive_groups'] = 'Zoek voor de geneste groepen hun respectievelijke leden op (langzamer).';
diff --git a/lib/plugins/authad/lang/pt-br/settings.php b/lib/plugins/authad/lang/pt-br/settings.php
index 1231077da..d606682aa 100644
--- a/lib/plugins/authad/lang/pt-br/settings.php
+++ b/lib/plugins/authad/lang/pt-br/settings.php
@@ -3,8 +3,8 @@
/**
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
+ * @author Frederico Gonçalves Guimarães <frederico@teia.bio.br>
* @author Victor Westmann <victor.westmann@gmail.com>
- * @author Frederico Guimarães <frederico@teia.bio.br>
* @author Juliano Marconi Lanigra <juliano.marconi@gmail.com>
* @author Viliam Dias <viliamjr@gmail.com>
*/
@@ -23,3 +23,4 @@ $lang['expirywarn'] = 'Dias com antecedência para avisar o usuário
$lang['additional'] = 'Uma lista separada de vírgulas de atributos adicionais AD para pegar dados de usuários. Usados por alguns plugins.';
$lang['update_name'] = 'Permitir aos usuários que atualizem seus nomes de exibição AD?';
$lang['update_mail'] = 'Permitir aos usuários que atualizem seu endereço de e-mail?';
+$lang['recursive_groups'] = 'Resolver grupos aninhados para seus respectivos membros (mais lento).';
diff --git a/lib/plugins/authad/lang/pt/lang.php b/lib/plugins/authad/lang/pt/lang.php
index 4f8266b5b..5f767fa35 100644
--- a/lib/plugins/authad/lang/pt/lang.php
+++ b/lib/plugins/authad/lang/pt/lang.php
@@ -3,6 +3,7 @@
/**
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
+ * @author Maykon Oliveira <maykonoliveira850@gmail.com>
* @author Paulo Silva <paulotsilva@yahoo.com>
* @author André Neves <drakferion@gmail.com>
* @author Paulo Carmino <contato@paulocarmino.com>
@@ -10,4 +11,5 @@
$lang['domain'] = 'Domínio de Início de Sessão';
$lang['authpwdexpire'] = 'A sua senha expirará dentro de %d dias, deve mudá-la em breve.';
$lang['passchangefail'] = 'Falha ao alterar a senha. Tente prosseguir com uma senha mais segura.';
+$lang['userchangefail'] = 'Não foi possível alterar os atributos do usuário. Talvez sua conta não tenha permissões para fazer alterações?';
$lang['connectfail'] = 'Falha ao conectar com o servidor Active Directory.';
diff --git a/lib/plugins/authad/lang/pt/settings.php b/lib/plugins/authad/lang/pt/settings.php
index b734c4800..36668229a 100644
--- a/lib/plugins/authad/lang/pt/settings.php
+++ b/lib/plugins/authad/lang/pt/settings.php
@@ -3,6 +3,7 @@
/**
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
+ * @author Maykon Oliveira <maykonoliveira850@gmail.com>
* @author André Neves <drakferion@gmail.com>
* @author Murilo <muriloricci@hotmail.com>
* @author Paulo Silva <paulotsilva@yahoo.com>
@@ -22,4 +23,6 @@ $lang['use_tls'] = 'Usar ligação TLS? Se usada, não ative SSL a
$lang['debug'] = 'Deve-se mostrar saída adicional de depuração de erros?';
$lang['expirywarn'] = 'Número de dias de avanço para avisar o utilizador da expiração da senha. 0 para desativar.';
$lang['additional'] = 'Uma lista separada por vírgula de atributos adicionais de AD para buscar a partir de dados do usuário. Usado por alguns plugins.';
+$lang['update_name'] = 'Permitir que os usuários atualizem seu nome de exibição do AD?';
$lang['update_mail'] = 'Permitir que usuários atualizem seus endereços de e-mail?';
+$lang['recursive_groups'] = 'Resolve grupos aninhados para seus respectivos membros (mais lentos).';
diff --git a/lib/plugins/authad/lang/ru/settings.php b/lib/plugins/authad/lang/ru/settings.php
index d6bc8fc8a..81b3296bd 100644
--- a/lib/plugins/authad/lang/ru/settings.php
+++ b/lib/plugins/authad/lang/ru/settings.php
@@ -3,6 +3,7 @@
/**
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
+ * @author Alexander Kh. <001.arx@gmail.com>
* @author Yuriy Skalko <yuriy.skalko@gmail.com>
* @author Ivan I. Udovichenko (sendtome@mymailbox.pp.ua)
* @author Aleksandr Selivanov <alexgearbox@gmail.com>
@@ -28,3 +29,4 @@ $lang['expirywarn'] = 'За сколько дней нужно пре
$lang['additional'] = 'Дополнительные AD-атрибуты, разделённые запятой, для выборки из данных пользователя. Используется некоторыми плагинами.';
$lang['update_name'] = 'Разрешить пользователям редактировать свое AD-имя?';
$lang['update_mail'] = 'Разрешить пользователям редактировать свой электронный адрес?';
+$lang['recursive_groups'] = 'Разрешить вложенные группы их соответствующим членам.';
diff --git a/lib/plugins/authad/lang/sr/settings.php b/lib/plugins/authad/lang/sr/settings.php
index 5e4409cc3..41e3fa48c 100644
--- a/lib/plugins/authad/lang/sr/settings.php
+++ b/lib/plugins/authad/lang/sr/settings.php
@@ -3,6 +3,7 @@
/**
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
+ * @author Milan Oparnica <milan.opa@gmail.com>
* @author Марко М. Костић <marko.m.kostic@gmail.com>
*/
$lang['account_suffix'] = 'Суфикс на вашем налогу. Нпр.: <code>@moj.domen.rs</code>';
@@ -11,9 +12,13 @@ $lang['domain_controllers'] = 'Списак доменских контрол
$lang['admin_username'] = 'Повлашћени Active Directory корисник са приступом подацима свих корисника. Изборно али је потребно за одређене радње као што је слање мејлова о претплаћивању.';
$lang['admin_password'] = 'Лозинка за корисника изнад.';
$lang['sso'] = 'Да ли треба да се користи Single-Sign-On преко Кербероса или NTLM-а?';
+$lang['sso_charset'] = 'Znakovni kod u kom će vaš webserver proslediti Kerberos ili NTLM serveru vaše ime. Ostavite prazno za UTF-8 ili latin-1. Zahteva iconv ekstenziju.';
+$lang['real_primarygroup'] = 'Da li treba razrešiti pravu primarnu grupu ili pretpostaviti grupu "Domain Users" (sporije)';
$lang['use_ssl'] = 'Користити SSL везу? Ако се користи, не омогућујте TLS испод.';
$lang['use_tls'] = 'Користити TLS везу? Ако се користи, не омогућујте SSL испод.';
$lang['debug'] = 'Приказати додатан излаз за поправљање грешака код настанка грешака?';
$lang['expirywarn'] = 'Дана унапред за које треба упозорити корисника на истицање лозинке. 0 за искључивање.';
+$lang['additional'] = 'Spisak dodatni AD atributa, razdvojen zarezima, koje treba preuzeti iz korisničkih podataka. Koristi se u nekim dodacima (plugin).';
$lang['update_name'] = 'Дозволити корисницима да ажурирају њихово AD приказно име?';
$lang['update_mail'] = 'Дозволити корисницима да ажурирају њихове мејл адрсе?';
+$lang['recursive_groups'] = 'Razrešenje ugnježdenih grupa do nivoa pripadajućih članova (sporije)';
diff --git a/lib/plugins/authad/lang/zh/settings.php b/lib/plugins/authad/lang/zh/settings.php
index 1ccadd318..7a0d39b64 100644
--- a/lib/plugins/authad/lang/zh/settings.php
+++ b/lib/plugins/authad/lang/zh/settings.php
@@ -3,6 +3,7 @@
/**
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
+ * @author HaoNan <haonan@zhuoming.info>
* @author lainme <lainme993@gmail.com>
* @author oott123 <ip.192.168.1.1@qq.com>
* @author JellyChen <451453325@qq.com>
@@ -23,3 +24,4 @@ $lang['expirywarn'] = '提前多少天警告用户密码即将到期
$lang['additional'] = '需要从用户数据中获取的额外 AD 属性的列表,以逗号分隔。用于某些插件。';
$lang['update_name'] = '允许用户更新其AD显示名称?';
$lang['update_mail'] = '是否允许用户更新他们的电子邮件地址?';
+$lang['recursive_groups'] = '将嵌套组拆分为各自的成员(较慢)';
diff --git a/lib/plugins/authldap/lang/pt/settings.php b/lib/plugins/authldap/lang/pt/settings.php
index ff308c68e..ba565ae3d 100644
--- a/lib/plugins/authldap/lang/pt/settings.php
+++ b/lib/plugins/authldap/lang/pt/settings.php
@@ -3,6 +3,7 @@
/**
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
+ * @author Maykon Oliveira <maykonoliveira850@gmail.com>
* @author André Neves <drakferion@gmail.com>
* @author Guido Salatino <guidorafael23@gmail.com>
* @author Romulo Pereira <romuloccomp@gmail.com>
@@ -22,6 +23,7 @@ $lang['binddn'] = 'DN de um usuário de ligação opcional, quand
$lang['bindpw'] = 'Senha do utilizador acima';
$lang['userscope'] = 'Escopo de pesquisa Limite para pesquisa de usuário';
$lang['groupscope'] = 'Escopo de pesquisa Limite para pesquisa de grupo';
+$lang['userkey'] = 'Atributo denotando o nome de usuário; deve ser consistente com o filtro do usuário.';
$lang['groupkey'] = 'A participação no grupo a partir de qualquer atributo de usuário (em vez de AD padrão de grupos) exemplo: grupo de departamento ou número de telefone';
$lang['modPass'] = 'Sua senha LDAP pode ser alterada via dokuwiki?';
$lang['debug'] = 'Mostrar informação adicional de debug aquando de erros';
diff --git a/lib/plugins/authldap/lang/sr/settings.php b/lib/plugins/authldap/lang/sr/settings.php
index 3aec5c38a..6f99a532a 100644
--- a/lib/plugins/authldap/lang/sr/settings.php
+++ b/lib/plugins/authldap/lang/sr/settings.php
@@ -3,10 +3,19 @@
/**
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
+ * @author Milan Oparnica <milan.opa@gmail.com>
* @author Марко М. Костић <marko.m.kostic@gmail.com>
*/
+$lang['server'] = 'Vaš LDAP server. Bilo po nazivu (<code>localhost</code>) ili po punoj URL putanju (<code>ldap://server.tld:389</code>)';
+$lang['port'] = 'Port LDAP servera ako nije zadat u više unetoj punoj URL putanji.';
+$lang['usertree'] = 'Mesto za potragu za korisničkim nalozima. Npr. <code>ou=People, dc=server, dc=tld</code>';
+$lang['grouptree'] = 'Mesto za potragu za korisničkim grupama. Npr. <code>ou=Group, dc=server, dc=tld</code>';
+$lang['userfilter'] = 'LDAP filter za pretragu za korisničkim nalozima. Npr. <code>(&amp;(uid=%{user})(objectClass=posixAccount))</code>';
+$lang['groupfilter'] = 'LDAP filter za pretragu za korisničkim grupama. Npr. <code>(&amp;(objectClass=posixGroup)(|(gidNumber=%{gid})(memberUID=%{user})))</code>';
+$lang['version'] = 'Verzija protokola. Može biti neophodno da ovo postavite na vrednost <code>3</code>';
$lang['starttls'] = 'Користити TLS везе?';
$lang['referrals'] = 'Да ли треба пратити реферале?';
+$lang['deref'] = 'Kako razrešiti pseudonime?';
$lang['bindpw'] = 'Лозинка корисника изнад';
$lang['userscope'] = 'Ограничи опсег претраживања за корисничке претраге';
$lang['groupscope'] = 'Ограничи опсег претраживања за групне претраге';
diff --git a/lib/plugins/authpdo/lang/nl/settings.php b/lib/plugins/authpdo/lang/nl/settings.php
index 039ed6dc2..4929e9178 100644
--- a/lib/plugins/authpdo/lang/nl/settings.php
+++ b/lib/plugins/authpdo/lang/nl/settings.php
@@ -3,6 +3,7 @@
/**
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
+ * @author Gerrit Uitslag <klapinklapin@gmail.com>
* @author Andy <astolker@icloud.com>
*/
$lang['debug'] = 'Geef gedetailleerde foutmeldingen weer. Dit zou uitgeschakeld moeten zijn na de installatie.';
@@ -14,3 +15,12 @@ $lang['select-user-groups'] = 'SQL Statement om alle groepen van één gebrui
$lang['select-groups'] = 'SQL Statement om alle beschikbare groepen te selecteren';
$lang['insert-user'] = 'SQL Statement om een nieuwe gebruiker in de database in te voeren';
$lang['delete-user'] = 'SQL Statement om één gebruiker uit de database te verwijderen';
+$lang['list-users'] = 'SQL-instructie om gebruikers weer te geven die overeenkomen met een filter';
+$lang['count-users'] = 'SQL-instructie om gebruikers te tellen die overeenkomen met een filter';
+$lang['update-user-info'] = 'SQL-instructie om de volledige naam en e-mailadres van een enkele gebruiker bij te werken';
+$lang['update-user-login'] = 'SQL-instructie om de inlognaam van een enkele gebruiker bij te werken';
+$lang['update-user-pass'] = 'SQL-instructie om het wachtwoord van een enkele gebruiker bij te werken';
+$lang['insert-group'] = 'SQL-instructie om een nieuwe groep aan de database toe te voegen';
+$lang['join-group'] = 'SQL-instructie om een gebruiker aan een bestaande groep toe te voegen';
+$lang['leave-group'] = 'SQL-instructie om een gebruiker uit een groep te verwijderen';
+$lang['check-pass'] = 'SQL-instructie om het wachtwoord van een gebruiker te controleren. Kan leeg gelaten worden als de wachtwoordinformatie wordt opgehaald in select-user';
diff --git a/lib/plugins/authpdo/lang/pt/lang.php b/lib/plugins/authpdo/lang/pt/lang.php
index fcf3ae01b..ec1ca7a6f 100644
--- a/lib/plugins/authpdo/lang/pt/lang.php
+++ b/lib/plugins/authpdo/lang/pt/lang.php
@@ -3,7 +3,9 @@
/**
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
+ * @author Maykon Oliveira <maykonoliveira850@gmail.com>
* @author Paulo Carmino <contato@paulocarmino.com>
*/
$lang['connectfail'] = 'Falha ao conectar com o banco de dados.';
$lang['userexists'] = 'Desculpe, esse login já está sendo usado.';
+$lang['writefail'] = 'Não é possível modificar os dados do usuário. Por favor, informe o Wiki-Admin';
diff --git a/lib/plugins/authpdo/lang/pt/settings.php b/lib/plugins/authpdo/lang/pt/settings.php
new file mode 100644
index 000000000..beb39fbea
--- /dev/null
+++ b/lib/plugins/authpdo/lang/pt/settings.php
@@ -0,0 +1,13 @@
+<?php
+
+/**
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Maykon Oliveira <maykonoliveira850@gmail.com>
+ */
+$lang['debug'] = 'Imprima mensagens de erro detalhadas. Deve ser desativado após a configuração.';
+$lang['dsn'] = 'O DSN para se conectar ao banco de dados.';
+$lang['user'] = 'O usuário para a conexão de banco de dados acima (vazio para sqlite)';
+$lang['pass'] = 'A senha para a conexão de banco de dados acima (vazia para sqlite)';
+$lang['select-user'] = 'Instrução SQL para selecionar os dados de um único usuário';
+$lang['select-user-groups'] = 'Instrução SQL para selecionar todos os grupos de um único usuário';
diff --git a/lib/plugins/authpdo/lang/sk/settings.php b/lib/plugins/authpdo/lang/sk/settings.php
new file mode 100644
index 000000000..0fdbfa4e3
--- /dev/null
+++ b/lib/plugins/authpdo/lang/sk/settings.php
@@ -0,0 +1,25 @@
+<?php
+
+/**
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Martin Michalek <michalek.dev@gmail.com>
+ */
+$lang['debug'] = 'Výpis podrobných chybových hlásení. Po nastavení by sa malo vypnúť.';
+$lang['dsn'] = 'DSN pre pripojenie k databáze.';
+$lang['user'] = 'Používateľ uvedeného databázového pripojenia (prázdne pre sqllite)';
+$lang['pass'] = 'Heslo uvedeného databázového pripojenia (prázdne pre sqllite)';
+$lang['select-user'] = 'SQL príkaz pre výber údajov používateľa';
+$lang['select-user-groups'] = 'SQL príkaz pre výber všetkých skupín používateľa';
+$lang['select-groups'] = 'SQL príkaz pre výber dostupných skupín';
+$lang['insert-user'] = 'SQL príkaz pre vloženie údajov používateľa do databázy';
+$lang['delete-user'] = 'SQL príkaz pre odstránenie používateľa z databázy';
+$lang['list-users'] = 'SQL príkaz pre výpis používateľov podľa filtra';
+$lang['count-users'] = 'SQL príkaz pre spočítanie používateľov podľa filtra';
+$lang['update-user-info'] = 'SQL príkaz pre aktualizáciu mena a emailu používateľa';
+$lang['update-user-login'] = 'SQL príkaz pre aktualizáciu prihlasovacieho mena používateľa';
+$lang['update-user-pass'] = 'SQL príkaz pre aktualizáciu hesla používateľa';
+$lang['insert-group'] = 'SQL príkaz pre vloženie údajov skupiny do databázy';
+$lang['join-group'] = 'SQL príkaz pre pridanie používateľa do existujúcej skupiny';
+$lang['leave-group'] = 'SQL príkaz pre odstránenie používateľa zo skupiny';
+$lang['check-pass'] = 'SQL príkaz pre kontrolu hesla používateľa. Môže zostať prázdny, ak je informácia o hesle pripojená k výberu údajov používateľa.';
diff --git a/lib/plugins/authplain/_test/conf/auth.users.php b/lib/plugins/authplain/_test/conf/auth.users.php
new file mode 100644
index 000000000..87f54fedb
--- /dev/null
+++ b/lib/plugins/authplain/_test/conf/auth.users.php
@@ -0,0 +1,16 @@
+# users.auth.php
+# <?php exit()?>
+# Don't modify the lines above
+#
+# Userfile
+#
+# Format:
+#
+# login:passwordhash:Real Name:email:groups,comma,separated
+
+
+user_1:$1$tGu7CW5z$VpsMjRIx5tbyOJaQ2SP23.:Admin:admin@example.com:user,first_group
+user_2:$1$2uJ5C3ib$edo0EDEb/yLAFHme7RK851:User 2:user2@example.com:user,second_group,third_group
+user_3:$1$yqnlDqgZ$Sste968uKhuxH6wIQt6/D/:User 3:user3@example.com:user,fourth_group,first_group,third_group
+user_4:$1$tXjajS9s$peoGPBQep.P245H1Lfloj0:User 4:user4@example.com:user,third_group
+user_5:$1$IWrqdhol$xXOmufjZ2hW1aAVp7zDP.1:User 5:user5@example.com:user,second_group,fifth_group
diff --git a/lib/plugins/authplain/_test/userdata.test.php b/lib/plugins/authplain/_test/userdata.test.php
new file mode 100644
index 000000000..b80b39349
--- /dev/null
+++ b/lib/plugins/authplain/_test/userdata.test.php
@@ -0,0 +1,64 @@
+<?php
+
+/**
+ * Class userdata_test
+ *
+ * Test group retrieval
+ *
+ * @group plugins
+ */
+class userdata_test extends DokuWikiTest
+{
+ /** @var auth_plugin_authplain */
+ protected $auth;
+
+ /**
+ * Load auth with test conf
+ * @throws Exception
+ */
+ public function setUp()
+ {
+ parent::setUp();
+ global $config_cascade;
+ $config_cascade['plainauth.users']['default'] = __DIR__ . '/conf/auth.users.php';
+ $this->auth = new auth_plugin_authplain();
+ }
+
+ /**
+ * Test that all groups are retrieved in the correct order, without duplicates
+ */
+ public function test_retrieve_groups()
+ {
+ $expected = ['user', 'first_group', 'second_group', 'third_group', 'fourth_group', 'fifth_group'];
+ $actual = $this->auth->retrieveGroups();
+ $this->assertEquals($expected, $actual);
+ }
+
+ /**
+ * Test with small and large limits
+ */
+ public function test_retrieve_groups_limit()
+ {
+ $expected = ['user', 'first_group'];
+ $actual = $this->auth->retrieveGroups(0, 2);
+ $this->assertEquals($expected, $actual);
+
+ $expected = ['user', 'first_group', 'second_group', 'third_group', 'fourth_group', 'fifth_group'];
+ $actual = $this->auth->retrieveGroups(0, 20);
+ $this->assertEquals($expected, $actual);
+ }
+
+ /**
+ * Test with small and large offsets
+ */
+ public function test_retrieve_groups_offset()
+ {
+ $expected = ['third_group', 'fourth_group', 'fifth_group'];
+ $actual = $this->auth->retrieveGroups(3,10);
+ $this->assertEquals($expected, $actual);
+
+ $expected = [];
+ $actual = $this->auth->retrieveGroups(10,3);
+ $this->assertEquals($expected, $actual);
+ }
+}
diff --git a/lib/plugins/authplain/auth.php b/lib/plugins/authplain/auth.php
index 374e7179c..d95c86de2 100644
--- a/lib/plugins/authplain/auth.php
+++ b/lib/plugins/authplain/auth.php
@@ -46,6 +46,7 @@ class auth_plugin_authplain extends DokuWiki_Auth_Plugin
}
$this->cando['getUsers'] = true;
$this->cando['getUserCount'] = true;
+ $this->cando['getGroups'] = true;
}
$this->pregsplit_safe = version_compare(PCRE_VERSION, '6.7', '>=');
@@ -319,6 +320,29 @@ class auth_plugin_authplain extends DokuWiki_Auth_Plugin
}
/**
+ * Retrieves groups.
+ * Loads complete user data into memory before searching for groups.
+ *
+ * @param int $start index of first group to be returned
+ * @param int $limit max number of groups to be returned
+ * @return array
+ */
+ public function retrieveGroups($start = 0, $limit = 0)
+ {
+ $groups = [];
+
+ if ($this->users === null) $this->_loadUserData();
+ foreach($this->users as $user => $info) {
+ $groups = array_merge($groups, array_diff($info['grps'], $groups));
+ }
+
+ if($limit > 0) {
+ return array_splice($groups, $start, $limit);
+ }
+ return array_splice($groups, $start);
+ }
+
+ /**
* Only valid pageid's (no namespaces) for usernames
*
* @param string $user
diff --git a/lib/plugins/config/lang/it/lang.php b/lib/plugins/config/lang/it/lang.php
index 629fd12df..801ec6218 100644
--- a/lib/plugins/config/lang/it/lang.php
+++ b/lib/plugins/config/lang/it/lang.php
@@ -3,6 +3,7 @@
/**
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
+ * @author Roberto Bellingeri <bellingeri@netguru.it>
* @author Eddy <eddy@mail.it>
* @author Riccardo <riccardo.furlato@gmail.com>
* @author Stefano <stefano.stefano@gmail.com>
diff --git a/lib/plugins/config/lang/nl/lang.php b/lib/plugins/config/lang/nl/lang.php
index dee15d707..d7c799026 100644
--- a/lib/plugins/config/lang/nl/lang.php
+++ b/lib/plugins/config/lang/nl/lang.php
@@ -3,6 +3,7 @@
/**
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
+ * @author Gerrit Uitslag <klapinklapin@gmail.com>
* @author Harriet Neitz <harrietneitz@gmail.com>
* @author mark prins <mprins@users.sf.net>
* @author Pieter van der Meulen <pieter@vdmeulen.net>
@@ -14,7 +15,6 @@
* @author Marijn Hofstra <hofstra.m@gmail.com>
* @author Timon Van Overveldt <timonvo@gmail.com>
* @author Ricardo Guijt <ricardoguijt@gmail.com>
- * @author Gerrit <klapinklapin@gmail.com>
* @author Hugo Smet <hugo.smet@scarlet.be>
*/
$lang['menu'] = 'Configuratie-instellingen';
@@ -153,6 +153,7 @@ $lang['renderer_xhtml'] = 'Weergavesysteem voor de standaard (xhtml) wiki
$lang['renderer__core'] = '%s (dokuwiki core)';
$lang['renderer__plugin'] = '%s (plugin)';
$lang['search_nslimit'] = 'Beperk het zoeken tot de huidige X namespaces. Wanneer het zoeken wordt uitgevoerd vanaf een pagina binnen een diepere namespace, worden de eerste X aantal namespaces toegevoegd als filter';
+$lang['search_fragment'] = 'Specifeer het standaard zoekgedrag voor fragmenten';
$lang['search_fragment_o_exact'] = 'exact';
$lang['search_fragment_o_starts_with'] = 'begint met';
$lang['search_fragment_o_ends_with'] = 'eindigt op';
diff --git a/lib/plugins/config/lang/no/lang.php b/lib/plugins/config/lang/no/lang.php
index 587194517..093af8016 100644
--- a/lib/plugins/config/lang/no/lang.php
+++ b/lib/plugins/config/lang/no/lang.php
@@ -3,6 +3,7 @@
/**
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
+ * @author Rut Kristin Aanestad <dark@met.no>
* @author Torgeir Blesvik <bletor@banenor.no>
* @author ThorPrestboen <thor.erling.prestboen@gmail.com>
* @author Christian McKenna <mckchr@banenor.no>
diff --git a/lib/plugins/config/lang/pt/lang.php b/lib/plugins/config/lang/pt/lang.php
index df965bbce..139081bd9 100644
--- a/lib/plugins/config/lang/pt/lang.php
+++ b/lib/plugins/config/lang/pt/lang.php
@@ -3,6 +3,7 @@
/**
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
+ * @author Maykon Oliveira <maykonoliveira850@gmail.com>
* @author José Vieira <jmsv63@gmail.com>
* @author José Monteiro <Jose.Monteiro@DoWeDo-IT.com>
* @author Enrico Nicoletto <liverig@gmail.com>
@@ -121,6 +122,7 @@ $lang['rss_linkto'] = 'Links de feed XML ara';
$lang['rss_content'] = 'O que deve ser exibido nos itens do alimentador XML?';
$lang['rss_update'] = 'Intervalo de actualização do alimentador XML (seg)';
$lang['rss_show_summary'] = 'Resumo de exibição do alimentador XML no título';
+$lang['rss_media_o_media'] = 'midia';
$lang['updatecheck'] = 'Verificar por actualizações e avisos de segurança? O DokuWiki precisa contactar o "splitbrain.org" para efectuar esta verificação.';
$lang['userewrite'] = 'Usar URLs SEO';
$lang['useslash'] = 'Usar a barra como separador de espaços de nomes nas URLs';
@@ -138,6 +140,11 @@ $lang['xsendfile'] = 'Usar o cabeçalho "X-Sendfile" para permitir o
$lang['renderer_xhtml'] = 'Renderizador a ser utilizado para a saída principal do wiki (xhtml)';
$lang['renderer__core'] = '%s (núcleo dokuwiki)';
$lang['renderer__plugin'] = '%s (plugin)';
+$lang['search_nslimit'] = 'Limite a pesquisa aos namespaces X atuais. Quando uma pesquisa é executada a partir de uma página em um namespace mais profundo, os primeiros namespaces X serão adicionados como filtro';
+$lang['search_fragment_o_exact'] = 'exato';
+$lang['search_fragment_o_starts_with'] = 'começa com';
+$lang['search_fragment_o_ends_with'] = 'termina com';
+$lang['search_fragment_o_contains'] = 'contém';
$lang['proxy____host'] = 'Nome do servidor proxy';
$lang['proxy____port'] = 'Porta de Proxy';
$lang['proxy____user'] = 'Nome de utilizador Proxy';
diff --git a/lib/plugins/config/lang/sk/lang.php b/lib/plugins/config/lang/sk/lang.php
index ade62060b..bbfa97a25 100644
--- a/lib/plugins/config/lang/sk/lang.php
+++ b/lib/plugins/config/lang/sk/lang.php
@@ -3,8 +3,8 @@
/**
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
- * @author Tibor Repček <tiborepcek@gmail.com>
* @author Martin Michalek <michalek.dev@gmail.com>
+ * @author Tibor Repček <tiborepcek@gmail.com>
* @author Michal Mesko <michal.mesko@gmail.com>
* @author exusik <exusik@gmail.com>
*/
@@ -81,6 +81,7 @@ $lang['disableactions'] = 'Zakázať DokuWiki akcie';
$lang['disableactions_check'] = 'Skontrolovať';
$lang['disableactions_subscription'] = 'Povoliť/Zrušiť informovanie o zmenách stránky';
$lang['disableactions_wikicode'] = 'Pozrieť zdroj/Exportovať zdroj';
+$lang['disableactions_profile_delete'] = 'Zrušenie vlastného účtu';
$lang['disableactions_other'] = 'Iné akcie (oddelené čiarkou)';
$lang['auth_security_timeout'] = 'Časový limit pri prihlasovaní (v sekundách)';
$lang['securecookie'] = 'Mal by prehliadač posielať cookies nastavené cez HTTPS posielať iba cez HTTPS (bezpečné) pripojenie? Vypnite túto voľbu iba v prípade, ak je prihlasovanie do Vašej wiki zabezpečené SSL, ale prezeranie wiki je nezabezpečené.';
@@ -138,6 +139,10 @@ $lang['xsendfile'] = 'Používať X-Sendfile hlavičku pre doručeni
$lang['renderer_xhtml'] = 'Používané vykresľovacie jadro pre hlavný (xhtml) wiki výstup';
$lang['renderer__core'] = '%s (dokuwiki jadro)';
$lang['renderer__plugin'] = '%s (plugin)';
+$lang['search_fragment_o_exact'] = 'presne';
+$lang['search_fragment_o_starts_with'] = 'začína s';
+$lang['search_fragment_o_ends_with'] = 'končí na';
+$lang['search_fragment_o_contains'] = 'obsahuje';
$lang['dnslookups'] = 'DokuWiki hľadá mená vzdialených IP adries používateľov editujúcich stránky. Ak máte pomalý alebo nefunkčný DNS server alebo nechcete túto možnosť, deaktivujte túto voľbu';
$lang['jquerycdn'] = 'Mali by byť jQuery a jQuery UI skripty načítané z CDN? Voľba zvýši počet dodatočných HTTP požiadaviek, ale súbory sa môžu načítať rýchlejšie a používatelia ich už môžu mať vo vyrovnávacej pamäti.';
$lang['jquerycdn_o_0'] = 'Nepoužívať CDN, iba lokálne súbory';
diff --git a/lib/plugins/config/lang/sr/lang.php b/lib/plugins/config/lang/sr/lang.php
index df23668ce..4e5e94871 100644
--- a/lib/plugins/config/lang/sr/lang.php
+++ b/lib/plugins/config/lang/sr/lang.php
@@ -3,8 +3,7 @@
/**
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
- * @author Иван Петровић petrovicivan@ubuntusrbija.org
- * @author Ivan Petrovic <petrovicivan@ubuntusrbija.org>
+ * @author Иван Петровић <petrovicivan@ubuntusrbija.org>
* @author Miroslav Šolti <solti.miroslav@gmail.com>
* @author Марко М. Костић <marko.m.kostic@gmail.com>
*/
diff --git a/lib/plugins/config/lang/zh/lang.php b/lib/plugins/config/lang/zh/lang.php
index 18368038b..f8ea0279e 100644
--- a/lib/plugins/config/lang/zh/lang.php
+++ b/lib/plugins/config/lang/zh/lang.php
@@ -3,6 +3,7 @@
/**
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
+ * @author HaoNan <haonan@zhuoming.info>
* @author Phy <dokuwiki@phy25.com>
* @author Aaron Zhou <iradio@163.com>
* @author lempel <riverlempel@hotmail.com>
diff --git a/lib/plugins/extension/admin.php b/lib/plugins/extension/admin.php
index eb2009b4c..421b7138f 100644
--- a/lib/plugins/extension/admin.php
+++ b/lib/plugins/extension/admin.php
@@ -51,7 +51,7 @@ class admin_plugin_extension extends DokuWiki_Admin_Plugin
/* @var helper_plugin_extension_repository $repository */
$repository = $this->loadHelper('extension_repository');
- if (!$repository->hasAccess()) {
+ if(!$repository->hasAccess(!$INPUT->bool('purge'))) {
$url = $this->gui->tabURL('', array('purge' => 1));
msg($this->getLang('repo_error').' [<a href="'.$url.'">'.$this->getLang('repo_retry').'</a>]', -1);
}
diff --git a/lib/plugins/extension/cli.php b/lib/plugins/extension/cli.php
new file mode 100644
index 000000000..83e9c2fc8
--- /dev/null
+++ b/lib/plugins/extension/cli.php
@@ -0,0 +1,357 @@
+<?php
+
+use splitbrain\phpcli\Colors;
+
+/**
+ * Class cli_plugin_extension
+ *
+ * Command Line component for the extension manager
+ *
+ * @license GPL2
+ * @author Andreas Gohr <andi@splitbrain.org>
+ */
+class cli_plugin_extension extends DokuWiki_CLI_Plugin
+{
+ /** @inheritdoc */
+ protected function setup(\splitbrain\phpcli\Options $options)
+ {
+ // general setup
+ $options->setHelp('Manage plugins and templates for this DokuWiki instance');
+
+ // search
+ $options->registerCommand('search', 'Search for an extension');
+ $options->registerOption('max', 'Maximum number of results (default 10)', 'm', 'number', 'search');
+ $options->registerOption('verbose', 'Show detailed extension information', 'v', false, 'search');
+ $options->registerArgument('query', 'The keyword(s) to search for', true, 'search');
+
+ // list
+ $options->registerCommand('list', 'List installed extensions');
+ $options->registerOption('verbose', 'Show detailed extension information', 'v', false, 'list');
+
+ // upgrade
+ $options->registerCommand('upgrade', 'Update all installed extensions to their latest versions');
+
+ // install
+ $options->registerCommand('install', 'Install or upgrade extensions');
+ $options->registerArgument('extensions...', 'One or more extensions to install', true, 'install');
+
+ // uninstall
+ $options->registerCommand('uninstall', 'Uninstall a new extension');
+ $options->registerArgument('extensions...', 'One or more extensions to install', true, 'uninstall');
+
+ // enable
+ $options->registerCommand('enable', 'Enable installed extensions');
+ $options->registerArgument('extensions...', 'One or more extensions to enable', true, 'enable');
+
+ // disable
+ $options->registerCommand('disable', 'Disable installed extensions');
+ $options->registerArgument('extensions...', 'One or more extensions to disable', true, 'disable');
+
+
+ }
+
+ /** @inheritdoc */
+ protected function main(\splitbrain\phpcli\Options $options)
+ {
+ /** @var helper_plugin_extension_repository $repo */
+ $repo = plugin_load('helper', 'extension_repository');
+ if(!$repo->hasAccess(false)) {
+ $this->warning('Extension Repository API is not accessible, no remote info available!');
+ }
+
+ switch ($options->getCmd()) {
+ case 'list':
+ $ret = $this->cmdList($options->getOpt('verbose'));
+ break;
+ case 'search':
+ $ret = $this->cmdSearch(
+ implode(' ', $options->getArgs()),
+ $options->getOpt('verbose'),
+ (int)$options->getOpt('max', 10)
+ );
+ break;
+ case 'install':
+ $ret = $this->cmdInstall($options->getArgs());
+ break;
+ case 'uninstall':
+ $ret = $this->cmdUnInstall($options->getArgs());
+ break;
+ case 'enable':
+ $ret = $this->cmdEnable(true, $options->getArgs());
+ break;
+ case 'disable':
+ $ret = $this->cmdEnable(false, $options->getArgs());
+ break;
+ case 'upgrade':
+ $ret = $this->cmdUpgrade();
+ break;
+ default:
+ echo $options->help();
+ $ret = 0;
+ }
+
+ exit($ret);
+ }
+
+ /**
+ * Upgrade all extensions
+ *
+ * @return int
+ */
+ protected function cmdUpgrade()
+ {
+ /* @var helper_plugin_extension_extension $ext */
+ $ext = $this->loadHelper('extension_extension');
+ $list = $this->getInstalledExtensions();
+
+ $ok = 0;
+ foreach ($list as $extname) {
+ $ext->setExtension($extname);
+ $date = $ext->getInstalledVersion();
+ $avail = $ext->getLastUpdate();
+ if ($avail && $avail > $date) {
+ $ok += $this->cmdInstall([$extname]);
+ }
+ }
+
+ return $ok;
+ }
+
+ /**
+ * Enable or disable one or more extensions
+ *
+ * @param bool $set
+ * @param string[] $extensions
+ * @return int
+ */
+ protected function cmdEnable($set, $extensions)
+ {
+ /* @var helper_plugin_extension_extension $ext */
+ $ext = $this->loadHelper('extension_extension');
+
+ $ok = 0;
+ foreach ($extensions as $extname) {
+ $ext->setExtension($extname);
+ if (!$ext->isInstalled()) {
+ $this->error(sprintf('Extension %s is not installed', $ext->getID()));
+ $ok += 1;
+ continue;
+ }
+
+ if ($set) {
+ $status = $ext->enable();
+ $msg = 'msg_enabled';
+ } else {
+ $status = $ext->disable();
+ $msg = 'msg_disabled';
+ }
+
+ if ($status !== true) {
+ $this->error($status);
+ $ok += 1;
+ continue;
+ } else {
+ $this->success(sprintf($this->getLang($msg), $ext->getID()));
+ }
+ }
+
+ return $ok;
+ }
+
+ /**
+ * Uninstall one or more extensions
+ *
+ * @param string[] $extensions
+ * @return int
+ */
+ protected function cmdUnInstall($extensions)
+ {
+ /* @var helper_plugin_extension_extension $ext */
+ $ext = $this->loadHelper('extension_extension');
+
+ $ok = 0;
+ foreach ($extensions as $extname) {
+ $ext->setExtension($extname);
+ if (!$ext->isInstalled()) {
+ $this->error(sprintf('Extension %s is not installed', $ext->getID()));
+ $ok += 1;
+ continue;
+ }
+
+ $status = $ext->uninstall();
+ if ($status) {
+ $this->success(sprintf($this->getLang('msg_delete_success'), $ext->getID()));
+ } else {
+ $this->error(sprintf($this->getLang('msg_delete_failed'), hsc($ext->getID())));
+ $ok = 1;
+ }
+ }
+
+ return $ok;
+ }
+
+ /**
+ * Install one or more extensions
+ *
+ * @param string[] $extensions
+ * @return int
+ */
+ protected function cmdInstall($extensions)
+ {
+ /* @var helper_plugin_extension_extension $ext */
+ $ext = $this->loadHelper('extension_extension');
+
+ $ok = 0;
+ foreach ($extensions as $extname) {
+ $ext->setExtension($extname);
+
+ if (!$ext->getDownloadURL()) {
+ $ok += 1;
+ $this->error(
+ sprintf('Could not find download for %s', $ext->getID())
+ );
+ continue;
+ }
+
+ try {
+ $installed = $ext->installOrUpdate();
+ foreach ($installed as $ext => $info) {
+ $this->success(sprintf(
+ $this->getLang('msg_' . $info['type'] . '_' . $info['action'] . '_success'),
+ $info['base'])
+ );
+ }
+ } catch (Exception $e) {
+ $this->error($e->getMessage());
+ $ok += 1;
+ }
+ }
+ return $ok;
+ }
+
+ /**
+ * Search for an extension
+ *
+ * @param string $query
+ * @param bool $showdetails
+ * @param int $max
+ * @return int
+ * @throws \splitbrain\phpcli\Exception
+ */
+ protected function cmdSearch($query, $showdetails, $max)
+ {
+ /** @var helper_plugin_extension_repository $repository */
+ $repository = $this->loadHelper('extension_repository');
+ $result = $repository->search($query);
+ if ($max) {
+ $result = array_slice($result, 0, $max);
+ }
+
+ $this->listExtensions($result, $showdetails);
+ return 0;
+ }
+
+ /**
+ * @param bool $showdetails
+ * @return int
+ * @throws \splitbrain\phpcli\Exception
+ */
+ protected function cmdList($showdetails)
+ {
+ $list = $this->getInstalledExtensions();
+ $this->listExtensions($list, $showdetails);
+
+ return 0;
+ }
+
+ /**
+ * Get all installed extensions
+ *
+ * @return array
+ */
+ protected function getInstalledExtensions()
+ {
+ /** @var Doku_Plugin_Controller $plugin_controller */
+ global $plugin_controller;
+ $pluginlist = $plugin_controller->getList('', true);
+ $tpllist = glob(DOKU_INC . 'lib/tpl/*', GLOB_ONLYDIR);
+ $tpllist = array_map(function ($path) {
+ return 'template:' . basename($path);
+ }, $tpllist);
+ $list = array_merge($pluginlist, $tpllist);
+ sort($list);
+ return $list;
+ }
+
+ /**
+ * List the given extensions
+ *
+ * @param string[] $list
+ * @param bool $details display details
+ * @throws \splitbrain\phpcli\Exception
+ */
+ protected function listExtensions($list, $details)
+ {
+ /** @var helper_plugin_extension_extension $ext */
+ $ext = $this->loadHelper('extension_extension');
+ $tr = new \splitbrain\phpcli\TableFormatter($this->colors);
+
+
+ foreach ($list as $name) {
+ $ext->setExtension($name);
+
+ $status = '';
+ if ($ext->isInstalled()) {
+ $date = $ext->getInstalledVersion();
+ $avail = $ext->getLastUpdate();
+ $status = 'i';
+ if ($avail && $avail > $date) {
+ $vcolor = Colors::C_RED;
+ } else {
+ $vcolor = Colors::C_GREEN;
+ }
+ if ($ext->isGitControlled()) $status = 'g';
+ if ($ext->isBundled()) $status = 'b';
+ if ($ext->isEnabled()) {
+ $ecolor = Colors::C_BROWN;
+ } else {
+ $ecolor = Colors::C_DARKGRAY;
+ $status .= 'd';
+ }
+ } else {
+ $ecolor = null;
+ $date = $ext->getLastUpdate();
+ $vcolor = null;
+ }
+
+
+ echo $tr->format(
+ [20, 3, 12, '*'],
+ [
+ $ext->getID(),
+ $status,
+ $date,
+ strip_tags(sprintf(
+ $this->getLang('extensionby'),
+ $ext->getDisplayName(),
+ $this->colors->wrap($ext->getAuthor(), Colors::C_PURPLE))
+ )
+ ],
+ [
+ $ecolor,
+ Colors::C_YELLOW,
+ $vcolor,
+ null,
+ ]
+ );
+
+ if (!$details) continue;
+
+ echo $tr->format(
+ [5, '*'],
+ ['', $ext->getDescription()],
+ [null, Colors::C_CYAN]
+ );
+ }
+ }
+}
diff --git a/lib/plugins/extension/helper/repository.php b/lib/plugins/extension/helper/repository.php
index 5aad61e75..712baa05c 100644
--- a/lib/plugins/extension/helper/repository.php
+++ b/lib/plugins/extension/helper/repository.php
@@ -64,14 +64,14 @@ class helper_plugin_extension_repository extends DokuWiki_Plugin
/**
* If repository access is available
*
+ * @param bool $usecache use cached result if still valid
* @return bool If repository access is available
*/
- public function hasAccess()
- {
+ public function hasAccess($usecache = true) {
if ($this->has_access === null) {
$cache = new Cache('##extension_manager###hasAccess', '.repo');
- if (!$cache->useCache(array('age' => 3600 * 24, 'purge'=>1))) {
+ if (!$cache->useCache(array('age' => 60*10, 'purge' => !$usecache))) {
$httpclient = new DokuHTTPClient();
$httpclient->timeout = 5;
$data = $httpclient->get(self::EXTENSION_REPOSITORY_API.'?cmd=ping');
diff --git a/lib/plugins/extension/lang/pt/lang.php b/lib/plugins/extension/lang/pt/lang.php
index 498207291..7471d3f32 100644
--- a/lib/plugins/extension/lang/pt/lang.php
+++ b/lib/plugins/extension/lang/pt/lang.php
@@ -3,6 +3,7 @@
/**
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
+ * @author Maykon Oliveira <maykonoliveira850@gmail.com>
* @author José Vieira <jmsv63@gmail.com>
* @author Guido Salatino <guidorafael23@gmail.com>
* @author Romulo Pereira <romuloccomp@gmail.com>
diff --git a/lib/plugins/extension/lang/sk/lang.php b/lib/plugins/extension/lang/sk/lang.php
index c9f368cd0..32f3239dc 100644
--- a/lib/plugins/extension/lang/sk/lang.php
+++ b/lib/plugins/extension/lang/sk/lang.php
@@ -9,12 +9,10 @@
* @author Tibor Repček <tiborepcek@gmail.com>
*/
$lang['menu'] = 'Správca rozšírení';
-
$lang['tab_plugins'] = 'Inštalované rozšírenia';
$lang['tab_templates'] = 'Inštalované šablóny';
$lang['tab_search'] = 'Hľadanie a inštalácia';
$lang['tab_install'] = 'Manuálna inštalácia';
-
$lang['notimplemented'] = 'Táto vlastnosť ešte nebola implementovaná';
$lang['notinstalled'] = 'Toto rozšírenie nie je nainštalované';
$lang['alreadyenabled'] = 'Toto rozšírenie už bolo povolené';
@@ -22,7 +20,6 @@ $lang['alreadydisabled'] = 'Toto rozšírenie už bolo zakázané';
$lang['pluginlistsaveerror'] = 'Pri ukladaní zoznamu rozšírení sa vyskytla chyba';
$lang['unknownauthor'] = 'Neznámy autor';
$lang['unknownversion'] = 'Neznáma verzia';
-
$lang['btn_info'] = 'Viac informácií';
$lang['btn_update'] = 'Aktualizácia';
$lang['btn_uninstall'] = 'Odinštalovanie';
@@ -30,12 +27,13 @@ $lang['btn_enable'] = 'Povolenie';
$lang['btn_disable'] = 'Zablokovanie';
$lang['btn_install'] = 'Inštalácia';
$lang['btn_reinstall'] = 'Re-Inštalácia';
-
$lang['js']['reallydel'] = 'Naozaj chcete toto rozšírenie odinštalovať?';
-
+$lang['js']['display_viewoptions'] = 'Zobraziť možnosti:';
+$lang['js']['display_enabled'] = 'povolené';
+$lang['js']['display_disabled'] = 'zakázané';
+$lang['js']['display_updatable'] = 'aktualizovateľné';
$lang['search_for'] = 'Hľadať rozšírenie:';
$lang['search'] = 'Vyhľadávanie';
-
$lang['extensionby'] = '<strong>%s</strong> od %s';
$lang['screenshot'] = 'Obrázok od %s';
$lang['popularity'] = 'Popularita: %s%%';
@@ -68,7 +66,6 @@ $lang['status_unmodifiable'] = 'nezmeniteľný';
$lang['status_plugin'] = 'plugin';
$lang['status_template'] = 'šablóna';
$lang['status_bundled'] = 'vstavaný';
-
$lang['msg_enabled'] = 'Plugin %s povolený';
$lang['msg_disabled'] = 'Plugin %s nepovolený';
$lang['msg_delete_success'] = 'Rozšírenie %s odinštalované';
@@ -78,34 +75,24 @@ $lang['msg_template_update_success'] = 'Šablóna %s úspešne aktualizovaná';
$lang['msg_plugin_install_success'] = 'Plugin %s úspešne nainštalovaný';
$lang['msg_plugin_update_success'] = 'Plugin %s úspešne aktualizovaný';
$lang['msg_upload_failed'] = 'Nahrávanie súboru zlyhalo';
-
$lang['missing_dependency'] = '<strong>Chýbajúca alebo nepovolená závislosť:</strong> %s';
$lang['security_issue'] = '<strong>Bezpečnostný problém:</strong> %s';
$lang['security_warning'] = '<strong>Bezpečnostné upozornenie:</strong> %s';
$lang['update_available'] = '<strong>Aktualizácia:</strong> Nová verzia %s.';
$lang['wrong_folder'] = '<strong>Plugin nesprávne nainštalovaný:</strong> Premenujte adresár s pluginom "%s" na "%s".';
$lang['url_change'] = '<strong>URL sa zmenila:</strong> URL na stiahnutie sa od posledného sťahovania zmenila. Pred aktualizáciou rozšírenia skontrolujte, či je nová URL správna. <br />Nová: %s<br />Stará: %s';
-
$lang['error_badurl'] = 'URL by mali mať na začiatku http alebo https';
$lang['error_dircreate'] = 'Nie je možné vytvoriť dočasný adresár pre uloženie sťahovaného súboru';
$lang['error_download'] = 'Nie je možné stiahnuť súbor: %s';
$lang['error_decompress'] = 'Nie je možné dekomprimovať stiahnutý súbor. Môže to byť dôvodom chyby sťahovania (v tom prípade to skúste znova) alebo neznámym kompresným formátom (v tom prípade musíte stiahnuť a inštalovať manuálne).';
$lang['error_findfolder'] = 'Nepodarilo sa identifikovať cestu rozšírenia. Rozšírenie musíte stiahnuť a inštalovať manuálne.';
$lang['error_copy'] = 'Chyba kopírovania pri inštalácii do adresára <em>%s</em>: disk môže byť plný alebo nemáte potrebné prístupové oprávnenie. Dôsledkom može byť čiastočne inštalovaný plugin a nestabilná wiki inštalácia.';
-
$lang['noperms'] = 'Do priečinka rozšírenia sa nedá zapisovať.';
$lang['notplperms'] = 'Do priečinka s témou sa nedá zapisovať.';
$lang['nopluginperms'] = 'Do priečinka s pluginom sa nedá zapisovať.';
$lang['git'] = 'Toto rozšírenie bolo nainštalované cez git. Nemali by ste ho tu aktualizovať.';
$lang['auth'] = 'Toto rozšírenie nie je povolené v nastaveniach. Zvážte jeho zakázanie.';
-
$lang['install_url'] = 'Inštalácia z URL:';
$lang['install_upload'] = 'Nahrať rozšírenie:';
-
$lang['repo_error'] = 'Nepodarilo sa kontaktovať repozitár rozšírenia. Uistite sa, že váš server má povolené kontaktovať www.dokuwiki.org a skontrolujte nastavenia proxy.';
$lang['nossl'] = 'Vaše PHP zrejme nepodporuje SSL. Sťahovanie nebude funkčné pre mnohé rozšírenia.';
-
-$lang['js']['display_viewoptions'] = 'Zobraziť možnosti:';
-$lang['js']['display_enabled'] = 'povolené';
-$lang['js']['display_disabled'] = 'zakázané';
-$lang['js']['display_updatable'] = 'aktualizovateľné';
diff --git a/lib/plugins/popularity/lang/sr/lang.php b/lib/plugins/popularity/lang/sr/lang.php
index b67aaa8ef..fe768f370 100644
--- a/lib/plugins/popularity/lang/sr/lang.php
+++ b/lib/plugins/popularity/lang/sr/lang.php
@@ -3,8 +3,7 @@
/**
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
- * @author Иван Петровић petrovicivan@ubuntusrbija.org
- * @author Ivan Petrovic <petrovicivan@ubuntusrbija.org>
+ * @author Иван Петровић <petrovicivan@ubuntusrbija.org>
* @author Miroslav Šolti <solti.miroslav@gmail.com>
*/
$lang['name'] = 'Мерење популарности (може потрајати док се не учита)';
diff --git a/lib/plugins/revert/lang/no/lang.php b/lib/plugins/revert/lang/no/lang.php
index bca34eee8..942d54a94 100644
--- a/lib/plugins/revert/lang/no/lang.php
+++ b/lib/plugins/revert/lang/no/lang.php
@@ -3,6 +3,7 @@
/**
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
+ * @author Rut Kristin Aanestad <dark@met.no>
* @author Torgeir Blesvik <bletor@banenor.no>
* @author ThorPrestboen <thor.erling.prestboen@gmail.com>
* @author Christian McKenna <mckchr@banenor.no>
diff --git a/lib/plugins/revert/lang/sr/lang.php b/lib/plugins/revert/lang/sr/lang.php
index e0ac43971..2a3d9432d 100644
--- a/lib/plugins/revert/lang/sr/lang.php
+++ b/lib/plugins/revert/lang/sr/lang.php
@@ -3,8 +3,7 @@
/**
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
- * @author Иван Петровић petrovicivan@ubuntusrbija.org
- * @author Ivan Petrovic <petrovicivan@ubuntusrbija.org>
+ * @author Иван Петровић <petrovicivan@ubuntusrbija.org>
* @author Miroslav Šolti <solti.miroslav@gmail.com>
*/
$lang['menu'] = 'Управљач за враћање';
diff --git a/lib/plugins/usermanager/lang/pt/lang.php b/lib/plugins/usermanager/lang/pt/lang.php
index 2db85ae86..5c680c712 100644
--- a/lib/plugins/usermanager/lang/pt/lang.php
+++ b/lib/plugins/usermanager/lang/pt/lang.php
@@ -3,6 +3,7 @@
/**
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
+ * @author Maykon Oliveira <maykonoliveira850@gmail.com>
* @author José Vieira <jmsv63@gmail.com>
* @author José Monteiro <Jose.Monteiro@DoWeDo-IT.com>
* @author Enrico Nicoletto <liverig@gmail.com>
diff --git a/lib/plugins/usermanager/lang/sr/lang.php b/lib/plugins/usermanager/lang/sr/lang.php
index 858a2139b..5339e4ac1 100644
--- a/lib/plugins/usermanager/lang/sr/lang.php
+++ b/lib/plugins/usermanager/lang/sr/lang.php
@@ -3,8 +3,7 @@
/**
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
- * @author Иван Петровић petrovicivan@ubuntusrbija.org
- * @author Ivan Petrovic <petrovicivan@ubuntusrbija.org>
+ * @author Иван Петровић <petrovicivan@ubuntusrbija.org>
* @author Miroslav Šolti <solti.miroslav@gmail.com>
*/
$lang['menu'] = 'Управљач корисницима';
diff --git a/lib/tpl/dokuwiki/css/design.less b/lib/tpl/dokuwiki/css/design.less
index 89f671b7c..86315d211 100644
--- a/lib/tpl/dokuwiki/css/design.less
+++ b/lib/tpl/dokuwiki/css/design.less
@@ -66,16 +66,16 @@
********************************************************************/
/* highlight selected tool */
-.mode_admin a.action.admin,
-.mode_login a.action.login,
-.mode_register a.action.register,
-.mode_profile a.action.profile,
-.mode_recent a.action.recent,
-.mode_index a.action.index,
-.mode_media a.action.media,
-.mode_revisions a.action.revs,
-.mode_backlink a.action.backlink,
-.mode_subscribe a.action.subscribe {
+.mode_admin .action.admin a,
+.mode_login .action.login a,
+.mode_register .action.register a,
+.mode_profile .action.profile a,
+.mode_recent .action.recent a,
+.mode_index .action.index a,
+.mode_media .action.media a,
+.mode_revisions .action.revs a,
+.mode_backlink .action.backlink a,
+.mode_subscribe .action.subscribe a {
font-weight: bold;
}
diff --git a/lib/tpl/dokuwiki/css/pagetools.less b/lib/tpl/dokuwiki/css/pagetools.less
index 2aaf0b978..5473594d8 100644
--- a/lib/tpl/dokuwiki/css/pagetools.less
+++ b/lib/tpl/dokuwiki/css/pagetools.less
@@ -109,8 +109,8 @@
}
}
-// on hover show all items
-#dokuwiki__pagetools:hover {
+// on hover or focus show all items
+#dokuwiki__pagetools:hover, #dokuwiki__pagetools:focus-within {
div.tools ul {
background-color: @ini_background;
border-color: @ini_border;
diff --git a/lib/tpl/dokuwiki/lang/sk/lang.php b/lib/tpl/dokuwiki/lang/sk/lang.php
index ad200d351..72a070544 100644
--- a/lib/tpl/dokuwiki/lang/sk/lang.php
+++ b/lib/tpl/dokuwiki/lang/sk/lang.php
@@ -9,3 +9,7 @@ $lang['__background_site__'] = 'Farba základného pozadia (za oknom s obsahom
$lang['__link__'] = 'Všeobecná farba odkazu';
$lang['__existing__'] = 'Farba odkazov na existujúce stránky';
$lang['__missing__'] = 'Farba odkazov na neexistujúce stránky';
+$lang['__site_width__'] = 'Šírka stránky (môže byť ľubovoľná jednotka dĺžky: %, px, em, ...}';
+$lang['__sidebar_width__'] = 'Šírka bočného panela (môže byť ľubovoľná jednotka dĺžky: %, px, em, ...}';
+$lang['__tablet_width__'] = 'Nižšia šírka stránky prepne zobrazenie do režimu tabletu';
+$lang['__phone_width__'] = 'Nižšia šírka stránky prepne zobrazenie do režimu telefónu';
diff --git a/lib/tpl/dokuwiki/script.js b/lib/tpl/dokuwiki/script.js
index b4e6ced6d..5a68e8b9c 100644
--- a/lib/tpl/dokuwiki/script.js
+++ b/lib/tpl/dokuwiki/script.js
@@ -76,4 +76,9 @@ jQuery(function(){
var $content = jQuery('#dokuwiki__content div.page');
$content.css('min-height', $sidebar.height());
}
+
+ // blur when clicked
+ jQuery('#dokuwiki__pagetools div.tools>ul>li>a').on('click', function(){
+ this.blur();
+ });
});