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
  ...
This commit is contained in:
Andreas Gohr 2019-07-14 20:50:16 +02:00
commit 2b9c4a056d
71 changed files with 844 additions and 180 deletions

View File

@ -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));
}
}

23
_test/tests/inc/mailer.test.php Normal file → Executable file
View File

@ -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 :

View File

@ -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

View File

@ -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

View File

@ -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);
}

View File

@ -323,14 +323,37 @@ class Mailer {
$this->headers['Subject'] = $subject;
}
/**
* 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) {

View File

@ -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();

View File

@ -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
case 'M':
$ret *= 1024;
/** @noinspection PhpMissingBreakStatementInspection */
// no-break
case 'K':
$ret *= 1024;
$ret = intval(substr($value, 0, -1)) * 1024 * 1024 * 1024;
break;
default:
$ret *= 10;
case 'M':
$ret = intval(substr($value, 0, -1)) * 1024 * 1024;
break;
case 'K':
$ret = intval(substr($value, 0, -1)) * 1024;
break;
default;
$ret = intval($value);
break;
}
return $ret;

View File

@ -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);
}
}

View File

@ -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>

View File

@ -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@';

View File

@ -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@

View File

@ -1,3 +1,3 @@
====== Derniers changements ======
Les pages suivantes ont été modifiées récemment :
Voici la liste des pages modifiées récemment :

View File

@ -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 :
--------------------------------------------------------

View File

@ -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@

View File

@ -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 :
--------------------------------------------------------

View File

@ -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>

View File

@ -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>

View File

@ -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.

View File

@ -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>

View File

@ -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.

View File

@ -128,20 +128,33 @@ $lang['profdeleted'] = 'Vòstre compte foguèt suprimit daqueste wi
$lang['proffail'] = 'Lo perfil de lutilizaire 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 denviar:';
$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 :';

View File

@ -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';

View File

@ -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.

View File

@ -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>

View File

@ -0,0 +1,3 @@
======= Данная страница более не существует ======
Вы перешли по ссылки на страницу, которая более не существует. Вы можете проверить список [[?do=revisions|old revisions]], чтобы увидеть когда и почему она была удалена, а также получить доступ к более ранним её версиям или восстановить её.

View File

@ -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

View File

@ -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,6 +69,64 @@ $lang['badpassconfirm'] = 'Нажалост, лозинка је била
$lang['minoredit'] = 'Мала измена';
$lang['draftdate'] = 'Нацрт је аутоматски сачуван';
$lang['nosecedit'] = 'Страна је у међувремену промењена, поглавље је застарело и поново се учитава цела страна.';
$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'] = 'Несачуване измене ће бити изгубљене.
Да ли стварно желите да наставите?';
$lang['js']['searchmedia'] = 'Потражи фајлове';
$lang['js']['keepopen'] = 'Задржи отворен прозор након одабира';
$lang['js']['hidedetails'] = 'Сакриј детаље';
$lang['js']['mediatitle'] = 'Подешаванја везе';
$lang['js']['mediadisplay'] = 'Тип везе';
$lang['js']['mediaalign'] = 'Поравнање';
$lang['js']['mediasize'] = 'Величина слике';
$lang['js']['mediatarget'] = 'веза води ка:';
$lang['js']['mediaclose'] = 'Затвори';
$lang['js']['mediainsert'] = 'Убаци';
$lang['js']['mediadisplayimg'] = 'Покажи слику';
$lang['js']['mediadisplaylnk'] = 'Покажи само везу';
$lang['js']['mediasmall'] = 'Мала верзија';
$lang['js']['mediamedium'] = 'Средња верзија';
$lang['js']['medialarge'] = 'Велика верзија';
$lang['js']['mediaoriginal'] = 'Оригинална верзија';
$lang['js']['medialnk'] = 'Веза ка страници са детаљима';
$lang['js']['mediadirect'] = 'Директна веза ка оригиналу';
$lang['js']['medianolnk'] = 'Без везе';
$lang['js']['medianolink'] = 'Не постављај слику као везу';
$lang['js']['medialeft'] = 'Поравнај слику на лево';
$lang['js']['mediaright'] = 'Поравнај слику на десно';
$lang['js']['mediacenter'] = 'Поравнај слику по средини';
$lang['js']['medianoalign'] = 'Без поравнања';
$lang['js']['nosmblinks'] = 'Повезивање са Windows дељеним фолдерима ради само у Мајкрософтовом Интернет Претраживачу.
Ипак, можете да ископирате и залепите везу.';
$lang['js']['linkwiz'] = 'Чаробњак за стварање везе';
$lang['js']['linkto'] = 'Повежи ка:';
$lang['js']['del_confirm'] = 'Обриши овај унос?';
$lang['js']['restore_confirm'] = 'Заиста желите да вратите ово издање?';
$lang['js']['media_diff'] = 'Погледај разлике:';
$lang['js']['media_diff_both'] = 'Једно до другог';
$lang['js']['media_diff_opacity'] = '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'] = 'Корисник је направљен и лозинка је послата путем е-поште.';
@ -106,47 +165,6 @@ $lang['txt_overwrt'] = 'Препишите тренутни фајл';
$lang['maxuploadsize'] = 'Отпреми највише %s по датотеци.';
$lang['lockedby'] = 'Тренутно закључано од стране:';
$lang['lockexpire'] = 'Закључавање истиче:';
$lang['js']['willexpire'] = 'Ваше закључавање за измену ове странице ће да истекне за један минут.\nДа би сте избегли конфликте, искористите дугме за преглед како би сте ресетовали тајмер закључавања.';
$lang['js']['notsavedyet'] = 'Несачуване измене ће бити изгубљене.
Да ли стварно желите да наставите?';
$lang['js']['searchmedia'] = 'Потражи фајлове';
$lang['js']['keepopen'] = 'Задржи отворен прозор након одабира';
$lang['js']['hidedetails'] = 'Сакриј детаље';
$lang['js']['mediatitle'] = 'Подешаванја везе';
$lang['js']['mediadisplay'] = 'Тип везе';
$lang['js']['mediaalign'] = 'Поравнање';
$lang['js']['mediasize'] = 'Величина слике';
$lang['js']['mediatarget'] = 'веза води ка:';
$lang['js']['mediaclose'] = 'Затвори';
$lang['js']['mediainsert'] = 'Убаци';
$lang['js']['mediadisplayimg'] = 'Покажи слику';
$lang['js']['mediadisplaylnk'] = 'Покажи само везу';
$lang['js']['mediasmall'] = 'Мала верзија';
$lang['js']['mediamedium'] = 'Средња верзија';
$lang['js']['medialarge'] = 'Велика верзија';
$lang['js']['mediaoriginal'] = 'Оригинална верзија';
$lang['js']['medialnk'] = 'Веза ка страници са детаљима';
$lang['js']['mediadirect'] = 'Директна веза ка оригиналу';
$lang['js']['medianolnk'] = 'Без везе';
$lang['js']['medianolink'] = 'Не постављај слику као везу';
$lang['js']['medialeft'] = 'Поравнај слику на лево';
$lang['js']['mediaright'] = 'Поравнај слику на десно';
$lang['js']['mediacenter'] = 'Поравнај слику по средини';
$lang['js']['medianoalign'] = 'Без поравнања';
$lang['js']['nosmblinks'] = 'Повезивање са Windows дељеним фолдерима ради само у Мајкрософтовом Интернет Претраживачу.
Ипак, можете да ископирате и залепите везу.';
$lang['js']['linkwiz'] = 'Чаробњак за стварање везе';
$lang['js']['linkto'] = 'Повежи ка:';
$lang['js']['del_confirm'] = 'Обриши овај унос?';
$lang['js']['restore_confirm'] = 'Заиста желите да вратите ово издање?';
$lang['js']['media_diff'] = 'Погледај разлике:';
$lang['js']['media_diff_both'] = 'Једно до другог';
$lang['js']['media_select'] = 'Изабери датотеке…';
$lang['js']['media_upload_btn'] = 'Отпреми';
$lang['js']['media_done_btn'] = 'Готово';
$lang['js']['media_drop'] = 'Превуците датотеке овде да бисте их отпремили';
$lang['js']['media_cancel'] = 'уклони';
$lang['js']['media_overwrt'] = 'Препиши постојеће датотеке';
$lang['rssfailed'] = 'Дошло је до грешке приликом преузимања овог довода: ';
$lang['nothingfound'] = 'Ништа није нађено.';
$lang['mediaselect'] = 'Избор медијске датотеке';

View File

@ -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.

View File

@ -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>

View File

@ -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'] = 'Управљање листом контроле приступа';

View File

@ -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)';

View File

@ -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).';

View File

@ -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).';

View File

@ -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).';

View File

@ -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).';

View File

@ -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.';

View File

@ -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).';

View File

@ -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'] = 'Разрешить вложенные группы их соответствующим членам.';

View File

@ -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)';

View File

@ -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'] = '将嵌套组拆分为各自的成员(较慢)';

View File

@ -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';

View File

@ -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'] = 'Ограничи опсег претраживања за групне претраге';

View File

@ -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';

View File

@ -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';

View File

@ -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';

View File

@ -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.';

View File

@ -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

View File

@ -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);
}
}

View File

@ -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', '>=');
@ -318,6 +319,29 @@ class auth_plugin_authplain extends DokuWiki_Auth_Plugin
return $out;
}
/**
* 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
*

View File

@ -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>

View File

@ -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';

View File

@ -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>

View File

@ -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';

View File

@ -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';

View File

@ -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>
*/

View File

@ -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>

View File

@ -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);
}

View File

@ -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]
);
}
}
}

View File

@ -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');

View File

@ -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>

View File

@ -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é';

View File

@ -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'] = 'Мерење популарности (може потрајати док се не учита)';

View File

@ -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>

View File

@ -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'] = 'Управљач за враћање';

View File

@ -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>

View File

@ -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'] = 'Управљач корисницима';

View File

@ -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;
}

View File

@ -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;

View File

@ -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';

View File

@ -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();
});
});