Merge branch 'master' into lesserphp

* master: (70 commits)
  Release preparation
  translation update
  do not disclose email or IP addresses of users through RSS
  small fix
  Make default encapsulation more readable and less duplicate.
  Replace htmlspecialchars to hsc in core
  Add the preview-bool for the cache file.
  Add htmlspecialchars when showing $DATE_AT
  #2021 broken links to W3C validators also dokuwiki and php are on https
  made bin/wantedpage.php more flexible
  doc abbreviation
  Fix PHP Notices: Reduce error log noise
  Create valid empty options
  translation update
  doc fix
  translation update
  using $options->getCmd to retrieve show-pages parameter
  added option to wantedpages.php to show or not show pages where broken links occur
  show pages where broken links occur: page_id => broken_link
  clean extension names. fixes #2042
  ...
This commit is contained in:
Andreas Gohr 2017-08-15 18:03:29 +02:00
commit 0ed9c2e284
425 changed files with 24938 additions and 6957 deletions

2
README
View File

@ -4,7 +4,7 @@ at http://www.dokuwiki.org/
For Installation Instructions see
http://www.dokuwiki.org/install
DokuWiki - 2004-2016 (c) Andreas Gohr <andi@splitbrain.org>
DokuWiki - 2004-2017 (c) Andreas Gohr <andi@splitbrain.org>
and the DokuWiki Community
See COPYING and file headers for license info

View File

@ -2,102 +2,112 @@
class auth_password_test extends DokuWikiTest {
// hashes for the password foo$method, using abcdefgh12345678912345678912345678 as salt
protected $passes = array(
'smd5' => '$1$abcdefgh$SYbjm2AEvSoHG7Xapi8so.',
'apr1' => '$apr1$abcdefgh$C/GzYTF4kOVByYLEoD5X4.',
'md5' => '8fa22d62408e5351553acdd91c6b7003',
'sha1' => 'b456d3b0efd105d613744ffd549514ecafcfc7e1',
'ssha' => '{SSHA}QMHG+uC7bHNYKkmoLbNsNI38/dJhYmNk',
'lsmd5' => '{SMD5}HGbkPrkWgy9KgcRGWlrsUWFiY2RlZmdo',
'crypt' => 'ablvoGr1hvZ5k',
'mysql' => '4a1fa3780bd6fd55',
'my411' => '*E5929347E25F82E19E4EBE92F1DC6B6E7C2DBD29',
'kmd5' => 'a579299436d7969791189acadd86fcb716',
'djangomd5' => 'md5$abcde$d0fdddeda8cd92725d2b54148ac09158',
'djangosha1' => 'sha1$abcde$c8e65a7f0acc9158843048a53dcc5a6bc4d17678',
/**
* precomputed hashes
*
* for the password foo$method, using abcdefgh12345678912345678912345678 as salt
*
* @return array
*/
public function hashes() {
);
$passes = array(
array('smd5', '$1$abcdefgh$SYbjm2AEvSoHG7Xapi8so.'),
array('apr1', '$apr1$abcdefgh$C/GzYTF4kOVByYLEoD5X4.'),
array('md5', '8fa22d62408e5351553acdd91c6b7003'),
array('sha1', 'b456d3b0efd105d613744ffd549514ecafcfc7e1'),
array('ssha', '{SSHA}QMHG+uC7bHNYKkmoLbNsNI38/dJhYmNk'),
array('lsmd5', '{SMD5}HGbkPrkWgy9KgcRGWlrsUWFiY2RlZmdo'),
array('crypt', 'ablvoGr1hvZ5k'),
array('mysql', '4a1fa3780bd6fd55'),
array('my411', '*E5929347E25F82E19E4EBE92F1DC6B6E7C2DBD29'),
array('kmd5', 'a579299436d7969791189acadd86fcb716'),
array('djangomd5', 'md5$abcde$d0fdddeda8cd92725d2b54148ac09158'),
array('djangosha1', 'sha1$abcde$c8e65a7f0acc9158843048a53dcc5a6bc4d17678'),
);
function __construct() {
if(defined('CRYPT_SHA512') && CRYPT_SHA512 == 1) {
// Check SHA512 only if available in this PHP
$this->passes['sha512'] = '$6$abcdefgh12345678$J9.zOcgx0lotwZdcz0uulA3IVQMinZvFZVjA5vapRLVAAqtay23XD4xeeUxQ3B4JvDWYFBIxVWW1tOYlHX13k1';
$passes[] = array('sha512', '$6$abcdefgh12345678$J9.zOcgx0lotwZdcz0uulA3IVQMinZvFZVjA5vapRLVAAqtay23XD4xeeUxQ3B4JvDWYFBIxVWW1tOYlHX13k1');
}
if(function_exists('hash_pbkdf2')) {
if(in_array('sha256', hash_algos())) {
$this->passes['djangopbkdf2_sha256'] = 'pbkdf2_sha256$24000$abcdefgh1234$R23OyZJ0nGHLG6MvPNfEkV5AOz3jUY5zthByPXs2gn0=';
$passes[] = array('djangopbkdf2_sha256', 'pbkdf2_sha256$24000$abcdefgh1234$R23OyZJ0nGHLG6MvPNfEkV5AOz3jUY5zthByPXs2gn0=');
}
if(in_array('sha1', hash_algos())) {
$this->passes['djangopbkdf2_sha1'] = 'pbkdf2_sha1$24000$abcdefgh1234$pOliX4vV1hgOv7lFNURIHHx41HI=';
$passes[] = array('djangopbkdf2_sha1', 'pbkdf2_sha1$24000$abcdefgh1234$pOliX4vV1hgOv7lFNURIHHx41HI=');
}
}
return $passes;
}
function test_cryptPassword(){
foreach($this->passes as $method => $hash){
$info = "testing method $method";
$this->assertEquals(
$hash,
auth_cryptPassword('foo'.$method, $method,'abcdefgh12345678912345678912345678'),
$info);
}
/**
* @dataProvider hashes
* @param $method
* @param $hash
*/
function test_cryptPassword($method, $hash) {
$this->assertEquals(
$hash,
auth_cryptPassword('foo' . $method, $method, 'abcdefgh12345678912345678912345678')
);
}
function test_verifyPassword(){
foreach($this->passes as $method => $hash){
$info = "testing method $method";
$this->assertTrue(auth_verifyPassword('foo'.$method, $hash), $info);
$this->assertFalse(auth_verifyPassword('bar'.$method, $hash), $info);
}
/**
* @dataProvider hashes
* @param $method
* @param $hash
*/
function test_verifyPassword($method, $hash) {
$this->assertTrue(auth_verifyPassword('foo' . $method, $hash));
$this->assertFalse(auth_verifyPassword('bar' . $method, $hash));
}
function test_verifySelf(){
foreach($this->passes as $method => $hash){
$info = "testing method $method";
$hash = auth_cryptPassword('foo'.$method,$method);
$this->assertTrue(auth_verifyPassword('foo'.$method, $hash), $info);
}
/**
* @dataProvider hashes
* @param $method
* @param $hash
*/
function test_verifySelf($method, $hash) {
$hash = auth_cryptPassword('foo' . $method, $method);
$this->assertTrue(auth_verifyPassword('foo' . $method, $hash));
}
function test_bcrypt_self(){
$hash = auth_cryptPassword('foobcrypt','bcrypt');
$this->assertTrue(auth_verifyPassword('foobcrypt',$hash));
function test_bcrypt_self() {
$hash = auth_cryptPassword('foobcrypt', 'bcrypt');
$this->assertTrue(auth_verifyPassword('foobcrypt', $hash));
}
function test_verifyPassword_fixedbcrypt(){
$this->assertTrue(auth_verifyPassword('foobcrypt','$2a$12$uTWercxbq4sjp2xAzv3we.ZOxk51m5V/Bv5bp2H27oVFJl5neFQoC'));
function test_verifyPassword_fixedbcrypt() {
$this->assertTrue(auth_verifyPassword('foobcrypt', '$2a$12$uTWercxbq4sjp2xAzv3we.ZOxk51m5V/Bv5bp2H27oVFJl5neFQoC'));
}
function test_verifyPassword_nohash(){
$this->assertTrue(auth_verifyPassword('foo','$1$$n1rTiFE0nRifwV/43bVon/'));
function test_verifyPassword_nohash() {
$this->assertTrue(auth_verifyPassword('foo', '$1$$n1rTiFE0nRifwV/43bVon/'));
}
function test_verifyPassword_fixedpmd5(){
$this->assertTrue(auth_verifyPassword('test12345','$P$9IQRaTwmfeRo7ud9Fh4E2PdI0S3r.L0'));
$this->assertTrue(auth_verifyPassword('test12345','$H$9IQRaTwmfeRo7ud9Fh4E2PdI0S3r.L0'));
function test_verifyPassword_fixedpmd5() {
$this->assertTrue(auth_verifyPassword('test12345', '$P$9IQRaTwmfeRo7ud9Fh4E2PdI0S3r.L0'));
$this->assertTrue(auth_verifyPassword('test12345', '$H$9IQRaTwmfeRo7ud9Fh4E2PdI0S3r.L0'));
}
function test_veryPassword_mediawiki(){
function test_veryPassword_mediawiki() {
$this->assertTrue(auth_verifyPassword('password', ':B:838c83e1:e4ab7024509eef084cdabd03d8b2972c'));
}
/**
* pmd5 checking should throw an exception when a hash with a too high
* iteration count is passed
*/
function test_verifyPassword_pmd5Exception(){
function test_verifyPassword_pmd5Exception() {
$except = false;
try{
try {
auth_verifyPassword('foopmd5', '$H$abcdefgh1ZbJodHxmeXVAhEzTG7IAp.');
}catch (Exception $e){
} catch(Exception $e) {
$except = true;
}
$this->assertTrue($except);
}
}
//Setup VIM: ex: et ts=4 :

View File

@ -8,7 +8,9 @@ class io_readfile_test extends DokuWikiTest {
public function test_ext_zlib() {
if (!DOKU_HAS_GZIP) {
$this->markTestSkipped('skipping all zlib tests. Need zlib extension');
return;
}
$this->assertTrue(true);
}
/*
@ -17,7 +19,9 @@ class io_readfile_test extends DokuWikiTest {
public function test_ext_bz2() {
if (!DOKU_HAS_BZIP) {
$this->markTestSkipped('skipping all bzip2 tests. Need bz2 extension');
return;
}
$this->assertTrue(true);
}
function test_plain(){

View File

@ -10,7 +10,9 @@ class io_replaceinfile_test extends DokuWikiTest {
public function test_ext_zlib() {
if (!DOKU_HAS_GZIP) {
$this->markTestSkipped('skipping all zlib tests. Need zlib extension');
return;
}
$this->assertTrue(true);
}
/*
@ -19,7 +21,9 @@ class io_replaceinfile_test extends DokuWikiTest {
public function test_ext_bz2() {
if (!DOKU_HAS_BZIP) {
$this->markTestSkipped('skipping all bzip2 tests. Need bz2 extension');
return;
}
$this->assertTrue(true);
}
function _write($file){

View File

@ -8,7 +8,9 @@ class io_savefile_test extends DokuWikiTest {
public function test_ext_zlib() {
if (!DOKU_HAS_GZIP) {
$this->markTestSkipped('skipping all zlib tests. Need zlib extension');
return;
}
$this->assertTrue(true);
}
/*
@ -17,7 +19,9 @@ class io_savefile_test extends DokuWikiTest {
public function test_ext_bz2() {
if (!DOKU_HAS_BZIP) {
$this->markTestSkipped('skipping all bzip2 tests. Need bz2 extension');
return;
}
$this->assertTrue(true);
}
function _write($file){

View File

@ -1,80 +1,76 @@
<?php
class mail_isvalid extends DokuWikiTest {
class mail_isvalid_test extends DokuWikiTest {
public function provider() {
return array(
// our own tests
array('bugs@php.net', true),
array('~someone@somewhere.com', true),
array('no+body.here@somewhere.com.au', true),
array('username+tag@domain.com', true), // FS#1447
array("rfc2822+allthesechars_#*!'`/-={}are.legal@somewhere.com.au", true),
array('_foo@test.com', true), // FS#1049
array('bugs@php.net1', true), // new ICAN rulez seem to allow this
array('.bugs@php.net1', false),
array('bu..gs@php.net', false),
array('bugs@php..net', false),
array('bugs@.php.net', false),
array('bugs@php.net.', false),
array('bu(g)s@php.net1', false),
array('bu[g]s@php.net1', false),
array('somebody@somewhere.museum', true),
array('somebody@somewhere.travel', true),
array('root@[2010:fb:fdac::311:2101]', true),
array('test@example', true), // we allow local addresses
function test1(){
$tests = array();
// tests from http://code.google.com/p/php-email-address-validation/ below
// our own tests
$tests[] = array('bugs@php.net',true);
$tests[] = array('~someone@somewhere.com',true);
$tests[] = array('no+body.here@somewhere.com.au',true);
$tests[] = array('username+tag@domain.com',true); // FS#1447
$tests[] = array("rfc2822+allthesechars_#*!'`/-={}are.legal@somewhere.com.au",true);
$tests[] = array('_foo@test.com',true); // FS#1049
$tests[] = array('bugs@php.net1',true); // new ICAN rulez seem to allow this
$tests[] = array('.bugs@php.net1',false);
$tests[] = array('bu..gs@php.net',false);
$tests[] = array('bugs@php..net',false);
$tests[] = array('bugs@.php.net',false);
$tests[] = array('bugs@php.net.',false);
$tests[] = array('bu(g)s@php.net1',false);
$tests[] = array('bu[g]s@php.net1',false);
$tests[] = array('somebody@somewhere.museum',true);
$tests[] = array('somebody@somewhere.travel',true);
$tests[] = array('root@[2010:fb:fdac::311:2101]',true);
$tests[] = array('test@example', true); // we allow local addresses
array('test@example.com', true),
array('TEST@example.com', true),
array('1234567890@example.com', true),
array('test+test@example.com', true),
array('test-test@example.com', true),
array('t*est@example.com', true),
array('+1~1+@example.com', true),
array('{_test_}@example.com', true),
array('"[[ test ]]"@example.com', true),
array('test.test@example.com', true),
array('test."test"@example.com', true),
array('"test@test"@example.com', true),
array('test@123.123.123.123', true),
array('test@[123.123.123.123]', true),
array('test@example.example.com', true),
array('test@example.example.example.com', true),
// tests from http://code.google.com/p/php-email-address-validation/ below
$tests[] = array('test@example.com', true);
$tests[] = array('TEST@example.com', true);
$tests[] = array('1234567890@example.com', true);
$tests[] = array('test+test@example.com', true);
$tests[] = array('test-test@example.com', true);
$tests[] = array('t*est@example.com', true);
$tests[] = array('+1~1+@example.com', true);
$tests[] = array('{_test_}@example.com', true);
$tests[] = array('"[[ test ]]"@example.com', true);
$tests[] = array('test.test@example.com', true);
$tests[] = array('test."test"@example.com', true);
$tests[] = array('"test@test"@example.com', true);
$tests[] = array('test@123.123.123.123', true);
$tests[] = array('test@[123.123.123.123]', true);
$tests[] = array('test@example.example.com', true);
$tests[] = array('test@example.example.example.com', true);
$tests[] = array('test.example.com', false);
$tests[] = array('test.@example.com', false);
$tests[] = array('test..test@example.com', false);
$tests[] = array('.test@example.com', false);
$tests[] = array('test@test@example.com', false);
$tests[] = array('test@@example.com', false);
$tests[] = array('-- test --@example.com', false); // No spaces allowed in local part
$tests[] = array('[test]@example.com', false); // Square brackets only allowed within quotes
$tests[] = array('"test\test"@example.com', false); // Quotes cannot contain backslash
$tests[] = array('"test"test"@example.com', false); // Quotes cannot be nested
$tests[] = array('()[]\;:,<>@example.com', false); // Disallowed Characters
$tests[] = array('test@.', false);
$tests[] = array('test@example.', false);
$tests[] = array('test@.org', false);
$tests[] = array('12345678901234567890123456789012345678901234567890123456789012345@example.com', false); // 64 characters is maximum length for local part. This is 65.
$tests[] = array('test@123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012.com', false); // 255 characters is maximum length for domain. This is 256.
$tests[] = array('test@[123.123.123.123', false);
$tests[] = array('test@123.123.123.123]', false);
foreach($tests as $test){
$info = 'Testing '.$test[0];
if($test[1]){
$this->assertTrue((bool) mail_isvalid($test[0]), $info);
}else{
$this->assertFalse((bool) mail_isvalid($test[0]), $info);
}
}
array('test.example.com', false),
array('test.@example.com', false),
array('test..test@example.com', false),
array('.test@example.com', false),
array('test@test@example.com', false),
array('test@@example.com', false),
array('-- test --@example.com', false), // No spaces allowed in local part
array('[test]@example.com', false), // Square brackets only allowed within quotes
array('"test\test"@example.com', false), // Quotes cannot contain backslash
array('"test"test"@example.com', false), // Quotes cannot be nested
array('()[]\;:,<>@example.com', false), // Disallowed Characters
array('test@.', false),
array('test@example.', false),
array('test@.org', false),
array('12345678901234567890123456789012345678901234567890123456789012345@example.com', false), // 64 characters is maximum length for local part. This is 65.
array('test@123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012.com', false), // 255 characters is maximum length for domain. This is 256.
array('test@[123.123.123.123', false),
array('test@123.123.123.123]', false),
);
}
/**
* @dataProvider provider
* @param string $input
* @param bool $success
*/
function test1($input, $success) {
$result = mail_isvalid($input);
$this->assertSame($success, $result);
}
}
//Setup VIM: ex: et ts=4 :

View File

@ -4,6 +4,7 @@ require_once 'parser.inc.php';
/**
* Tests for the implementation of audio and video files
*
* @group parser_media
* @author Michael Große <grosse@cosmocode.de>
*/
class TestOfDoku_Parser_Media extends TestOfDoku_Parser {
@ -131,4 +132,64 @@ class TestOfDoku_Parser_Media extends TestOfDoku_Parser {
$substr_start = strlen($url) - strlen($rest);
$this->assertEquals($rest, substr($url, $substr_start));
}
function testSimpleLinkText() {
$file = 'wiki:dokuwiki-128.png';
$parser_response = p_get_instructions('{{' . $file . '|This is a simple text.}}');
$calls = array (
array('document_start',array()),
array('p_open',array()),
array('internalmedia',array($file,'This is a simple text.',null,null,null,'cache','details')),
array('cdata',array(null)),
array('p_close',array()),
array('document_end',array()),
);
$this->assertEquals(array_map('stripbyteindex',$parser_response),$calls);
}
function testLinkTextWithWavedBrackets_1() {
$file = 'wiki:dokuwiki-128.png';
$parser_response = p_get_instructions('{{' . $file . '|We got a { here.}}');
$calls = array (
array('document_start',array()),
array('p_open',array()),
array('internalmedia',array($file,'We got a { here.',null,null,null,'cache','details')),
array('cdata',array(null)),
array('p_close',array()),
array('document_end',array()),
);
$this->assertEquals(array_map('stripbyteindex',$parser_response),$calls);
}
function testLinkTextWithWavedBrackets_2() {
$file = 'wiki:dokuwiki-128.png';
$parser_response = p_get_instructions('{{' . $file . '|We got a } here.}}');
$calls = array (
array('document_start',array()),
array('p_open',array()),
array('internalmedia',array($file,'We got a } here.',null,null,null,'cache','details')),
array('cdata',array(null)),
array('p_close',array()),
array('document_end',array()),
);
$this->assertEquals(array_map('stripbyteindex',$parser_response),$calls);
}
function testLinkTextWithWavedBrackets_3() {
$file = 'wiki:dokuwiki-128.png';
$parser_response = p_get_instructions('{{' . $file . '|We got a { and a } here.}}');
$calls = array (
array('document_start',array()),
array('p_open',array()),
array('internalmedia',array($file,'We got a { and a } here.',null,null,null,'cache','details')),
array('cdata',array(null)),
array('p_close',array()),
array('document_end',array()),
);
$this->assertEquals(array_map('stripbyteindex',$parser_response),$calls);
}
}

View File

@ -1,8 +1,8 @@
#!/usr/bin/php
<?php
if(!defined('DOKU_INC')) define('DOKU_INC', realpath(dirname(__FILE__).'/../').'/');
if(!defined('DOKU_INC')) define('DOKU_INC', realpath(dirname(__FILE__) . '/../') . '/');
define('NOSESSION', 1);
require_once(DOKU_INC.'inc/init.php');
require_once(DOKU_INC . 'inc/init.php');
/**
* Find wanted pages
@ -10,8 +10,13 @@ require_once(DOKU_INC.'inc/init.php');
class WantedPagesCLI extends DokuCLI {
const DIR_CONTINUE = 1;
const DIR_NS = 2;
const DIR_PAGE = 3;
const DIR_NS = 2;
const DIR_PAGE = 3;
private $skip = false;
private $sort = 'wanted';
private $result = array();
/**
* Register options and arguments on the given $options object
@ -21,13 +26,27 @@ class WantedPagesCLI extends DokuCLI {
*/
protected function setup(DokuCLI_Options $options) {
$options->setHelp(
'Outputs a list of wanted pages (pages which have internal links but do not yet exist).'
'Outputs a list of wanted pages (pages that do not exist yet) and their origin pages ' .
' (the pages that are linkin to these missing pages).'
);
$options->registerArgument(
'namespace',
'The namespace to lookup. Defaults to root namespace',
false
);
$options->registerOption(
'sort',
'Sort by wanted or origin page',
's',
'(wanted|origin)'
);
$options->registerOption(
'skip',
'Do not show the second dimension',
'k'
);
}
/**
@ -41,23 +60,30 @@ class WantedPagesCLI extends DokuCLI {
protected function main(DokuCLI_Options $options) {
if($options->args) {
$startdir = dirname(wikiFN($options->args[0].':xxx'));
$startdir = dirname(wikiFN($options->args[0] . ':xxx'));
} else {
$startdir = dirname(wikiFN('xxx'));
}
$this->skip = $options->getOpt('skip');
$this->sort = $options->getOpt('sort');
$this->info("searching $startdir");
$wanted_pages = array();
foreach($this->get_pages($startdir) as $page) {
$wanted_pages = array_merge($wanted_pages, $this->internal_links($page));
$this->internal_links($page);
}
$wanted_pages = array_unique($wanted_pages);
sort($wanted_pages);
foreach($wanted_pages as $page) {
print $page."\n";
ksort($this->result);
foreach($this->result as $main => $subs) {
if($this->skip) {
print "$main\n";
} else {
$subs = array_unique($subs);
sort($subs);
foreach($subs as $sub) {
printf("%-40s %s\n", $main, $sub);
}
}
}
}
@ -72,7 +98,7 @@ class WantedPagesCLI extends DokuCLI {
if($entry == '.' || $entry == '..') {
return WantedPagesCLI::DIR_CONTINUE;
}
if(is_dir($basepath.'/'.$entry)) {
if(is_dir($basepath . '/' . $entry)) {
if(strpos($entry, '_') === 0) {
return WantedPagesCLI::DIR_CONTINUE;
}
@ -95,7 +121,7 @@ class WantedPagesCLI extends DokuCLI {
static $trunclen = null;
if(!$trunclen) {
global $conf;
$trunclen = strlen($conf['datadir'].':');
$trunclen = strlen($conf['datadir'] . ':');
}
if(!is_dir($dir)) {
@ -103,17 +129,17 @@ class WantedPagesCLI extends DokuCLI {
}
$pages = array();
$dh = opendir($dir);
$dh = opendir($dir);
while(false !== ($entry = readdir($dh))) {
$status = $this->dir_filter($entry, $dir);
if($status == WantedPagesCLI::DIR_CONTINUE) {
continue;
} else if($status == WantedPagesCLI::DIR_NS) {
$pages = array_merge($pages, $this->get_pages($dir.'/'.$entry));
$pages = array_merge($pages, $this->get_pages($dir . '/' . $entry));
} else {
$page = array(
'id' => pathID(substr($dir.'/'.$entry, $trunclen)),
'file' => $dir.'/'.$entry,
$page = array(
'id' => pathID(substr($dir . '/' . $entry, $trunclen)),
'file' => $dir . '/' . $entry,
);
$pages[] = $page;
}
@ -123,31 +149,34 @@ class WantedPagesCLI extends DokuCLI {
}
/**
* Parse instructions and returns the non-existing links
* Parse instructions and add the non-existing links to the result array
*
* @param array $page array with page id and file path
* @return array
*/
function internal_links($page) {
global $conf;
$instructions = p_get_instructions(file_get_contents($page['file']));
$links = array();
$cns = getNS($page['id']);
$exists = false;
$cns = getNS($page['id']);
$exists = false;
$pid = $page['id'];
foreach($instructions as $ins) {
if($ins[0] == 'internallink' || ($conf['camelcase'] && $ins[0] == 'camelcaselink')) {
$mid = $ins[1][0];
resolve_pageid($cns, $mid, $exists);
if(!$exists) {
list($mid) = explode('#', $mid); //record pages without hashs
$links[] = $mid;
list($mid) = explode('#', $mid); //record pages without hashes
if($this->sort == 'origin') {
$this->result[$pid][] = $mid;
} else {
$this->result[$mid][] = $pid;
}
}
}
}
return $links;
}
}
// Main
$cli = new WantedPagesCLI();
$cli->run();
$cli->run();

View File

@ -7,11 +7,13 @@
"require": {
"php": ">=5.6",
"splitbrain/php-archive": "~1.0",
"easybook/geshi": "~1.0",
"phpseclib/phpseclib": "~2.0",
"paragonie/random_compat": "^2.0",
"simplepie/simplepie": "^1.4",
"marcusschwarz/lesserphp": "0.5.*"
"geshi/geshi": "^1.0",
"openpsa/universalfeedcreator": "^1.8",
"aziraphale/email-address-validator": "^2",
"marcusschwarz/lesserphp": "^0.5.1"
},
"suggest": {
"squizlabs/php_codesniffer": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.",

143
composer.lock generated
View File

@ -1,56 +1,91 @@
{
"_readme": [
"This file locks the dependencies of your project to a known state",
"Read more about it at http://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
"This file is @generated automatically"
],
"hash": "8436e5bf38d0f0b964f9a68d6bdd2575",
"content-hash": "149ef96a4cadb6765aac9e7c6a2b5b17",
"packages": [
{
"name": "easybook/geshi",
"version": "v1.0.8.18",
"name": "aziraphale/email-address-validator",
"version": "2.0.1",
"source": {
"type": "git",
"url": "https://github.com/easybook/geshi.git",
"reference": "4b06bfe8c6fbedd6aad0a0700d650f591386e287"
"url": "https://github.com/aziraphale/email-address-validator.git",
"reference": "fa25bc22c1c0b6491657c91473fae3e40719a650"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/easybook/geshi/zipball/4b06bfe8c6fbedd6aad0a0700d650f591386e287",
"reference": "4b06bfe8c6fbedd6aad0a0700d650f591386e287",
"url": "https://api.github.com/repos/aziraphale/email-address-validator/zipball/fa25bc22c1c0b6491657c91473fae3e40719a650",
"reference": "fa25bc22c1c0b6491657c91473fae3e40719a650",
"shasum": ""
},
"require": {
"php": ">4.3.0"
"require-dev": {
"phpunit/phpunit": "^5.7"
},
"type": "library",
"autoload": {
"psr-0": {
"EmailAddressValidator": ""
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Dave Child",
"email": "dave@addedbytes.com"
},
{
"name": "Andrew Gillard",
"email": "andrew@lorddeath.net"
}
],
"description": "Fork of AddedBytes' PHP EmailAddressValidator script, now with Composer support!",
"homepage": "https://github.com/aziraphale/email-address-validator",
"time": "2017-05-22T14:05:57+00:00"
},
{
"name": "geshi/geshi",
"version": "v1.0.9.0",
"source": {
"type": "git",
"url": "https://github.com/GeSHi/geshi-1.0.git",
"reference": "5a7b461338d322d941986a656d4d1651452e73dd"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/GeSHi/geshi-1.0/zipball/5a7b461338d322d941986a656d4d1651452e73dd",
"reference": "5a7b461338d322d941986a656d4d1651452e73dd",
"shasum": ""
},
"require-dev": {
"phpunit/phpunit": "^5.7"
},
"type": "library",
"autoload": {
"classmap": [
"./"
"src/geshi/",
"src/geshi.php"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"GPL-2.0"
"GPL-2.0+"
],
"authors": [
{
"name": "Nigel McNie",
"email": "nigel@geshi.org"
},
{
"name": "Benny Baumann",
"email": "BenBE@geshi.org"
"email": "BenBE@geshi.org",
"homepage": "http://blog.benny-baumann.de/",
"role": "Developer"
}
],
"description": "GeSHi - Generic Syntax Highlighter. This is an unmodified port of GeSHi project code found on SourceForge.",
"homepage": "http://qbnz.com/highlighter",
"keywords": [
"highlight",
"highlighter",
"syntax"
],
"time": "2016-10-05 07:15:42"
"description": "Generic Syntax Highlighter",
"homepage": "http://qbnz.com/highlighter/",
"time": "2017-05-05T05:51:25+00:00"
},
{
"name": "marcusschwarz/lesserphp",
@ -102,7 +137,55 @@
],
"description": "lesserphp is a compiler for LESS written in PHP based on leafo's lessphp.",
"homepage": "http://leafo.net/lessphp/",
"time": "2016-09-30 11:13:18"
"time": "2016-09-30T11:13:18+00:00"
},
{
"name": "openpsa/universalfeedcreator",
"version": "v1.8.3",
"source": {
"type": "git",
"url": "https://github.com/flack/UniversalFeedCreator.git",
"reference": "6261e130446d8f787bbfd229a602fb11e6816a4e"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/flack/UniversalFeedCreator/zipball/6261e130446d8f787bbfd229a602fb11e6816a4e",
"reference": "6261e130446d8f787bbfd229a602fb11e6816a4e",
"shasum": ""
},
"require": {
"php": ">=5.0"
},
"require-dev": {
"phpunit/phpunit": "*"
},
"type": "library",
"autoload": {
"classmap": [
"lib"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"LGPL"
],
"authors": [
{
"name": "Andreas Flack",
"email": "flack@contentcontrol-berlin.de",
"homepage": "http://www.contentcontrol-berlin.de/"
}
],
"description": "RSS and Atom feed generator by Kai Blankenhorn",
"keywords": [
"atom",
"georss",
"gpx",
"opml",
"pie",
"rss"
],
"time": "2017-05-18T08:28:48+00:00"
},
{
"name": "paragonie/random_compat",
@ -150,7 +233,7 @@
"pseudorandom",
"random"
],
"time": "2017-03-13 16:27:32"
"time": "2017-03-13T16:27:32+00:00"
},
{
"name": "phpseclib/phpseclib",
@ -242,7 +325,7 @@
"x.509",
"x509"
],
"time": "2016-10-04 00:57:04"
"time": "2016-10-04T00:57:04+00:00"
},
{
"name": "simplepie/simplepie",
@ -302,7 +385,7 @@
"feeds",
"rss"
],
"time": "2016-11-27 01:39:18"
"time": "2016-11-27T01:39:18+00:00"
},
{
"name": "splitbrain/php-archive",
@ -353,7 +436,7 @@
"unzip",
"zip"
],
"time": "2017-03-19 09:10:53"
"time": "2017-03-19T09:10:53+00:00"
}
],
"packages-dev": [],

View File

@ -6,5 +6,5 @@
#
# Format:
#
# login:passwordhash:Real Name:email:groups,comma,seperated
# login:passwordhash:Real Name:email:groups,comma,separated

View File

@ -416,7 +416,7 @@ class HelloWorldApp {
}
</code>
The following language strings are currently recognized: //4cs, 6502acme, 6502kickass, 6502tasm, 68000devpac, abap, actionscript-french, actionscript, actionscript3, ada, algol68, apache, applescript, asm, asp, autoconf, autohotkey, autoit, avisynth, awk, bascomavr, bash, basic4gl, bf, bibtex, blitzbasic, bnf, boo, c, c_loadrunner, c_mac, caddcl, cadlisp, cfdg, cfm, chaiscript, cil, clojure, cmake, cobol, coffeescript, cpp, cpp-qt, csharp, css, cuesheet, d, dcs, delphi, diff, div, dos, dot, e, epc, ecmascript, eiffel, email, erlang, euphoria, f1, falcon, fo, fortran, freebasic, fsharp, gambas, genero, genie, gdb, glsl, gml, gnuplot, go, groovy, gettext, gwbasic, haskell, hicest, hq9plus, html, html5, icon, idl, ini, inno, intercal, io, j, java5, java, javascript, jquery, kixtart, klonec, klonecpp, latex, lb, lisp, llvm, locobasic, logtalk, lolcode, lotusformulas, lotusscript, lscript, lsl2, lua, m68k, magiksf, make, mapbasic, matlab, mirc, modula2, modula3, mmix, mpasm, mxml, mysql, newlisp, nsis, oberon2, objc, objeck, ocaml-brief, ocaml, oobas, oracle8, oracle11, oxygene, oz, pascal, pcre, perl, perl6, per, pf, php-brief, php, pike, pic16, pixelbender, pli, plsql, postgresql, povray, powerbuilder, powershell, proftpd, progress, prolog, properties, providex, purebasic, pycon, python, q, qbasic, rails, rebol, reg, robots, rpmspec, rsplus, ruby, sas, scala, scheme, scilab, sdlbasic, smalltalk, smarty, sql, systemverilog, tcl, teraterm, text, thinbasic, tsql, typoscript, unicon, uscript, vala, vbnet, vb, verilog, vhdl, vim, visualfoxpro, visualprolog, whitespace, winbatch, whois, xbasic, xml, xorg_conf, xpp, yaml, z80, zxbasic//
The following language strings are currently recognized: //4cs 6502acme 6502kickass 6502tasm 68000devpac abap actionscript3 actionscript ada aimms algol68 apache applescript apt_sources arm asm asp asymptote autoconf autohotkey autoit avisynth awk bascomavr bash basic4gl batch bf biblatex bibtex blitzbasic bnf boo caddcl cadlisp ceylon cfdg cfm chaiscript chapel cil c_loadrunner clojure c_mac cmake cobol coffeescript c cpp cpp-qt cpp-winapi csharp css cuesheet c_winapi dart dcl dcpu16 dcs delphi diff div dos dot d ecmascript eiffel email epc e erlang euphoria ezt f1 falcon fo fortran freebasic freeswitch fsharp gambas gdb genero genie gettext glsl gml gnuplot go groovy gwbasic haskell haxe hicest hq9plus html html4strict html5 icon idl ini inno intercal io ispfpanel java5 java javascript jcl j jquery julia kixtart klonec klonecpp kotlin latex lb ldif lisp llvm locobasic logtalk lolcode lotusformulas lotusscript lscript lsl2 lua m68k magiksf make mapbasic mathematica matlab mercury metapost mirc mk-61 mmix modula2 modula3 mpasm mxml mysql nagios netrexx newlisp nginx nimrod nsis oberon2 objc objeck ocaml-brief ocaml octave oobas oorexx oracle11 oracle8 oxygene oz parasail parigp pascal pcre perl6 perl per pf phix php-brief php pic16 pike pixelbender pli plsql postgresql postscript povray powerbuilder powershell proftpd progress prolog properties providex purebasic pycon pys60 python qbasic qml q racket rails rbs rebol reg rexx robots rpmspec rsplus ruby rust sas sass scala scheme scilab scl sdlbasic smalltalk smarty spark sparql sql standardml stonescript swift systemverilog tclegg tcl teraterm texgraph text thinbasic tsql twig typoscript unicon upc urbi uscript vala vbnet vb vbscript vedit verilog vhdl vim visualfoxpro visualprolog whitespace whois winbatch xbasic xml xojo xorg_conf xpp yaml z80 zxbasic//
==== Downloadable Code Blocks ====

View File

@ -9,7 +9,7 @@
*/
// update message version - always use a string to avoid localized floats!
$updateVersion = "49.2";
$updateVersion = "50";
// xdebug_start_profiling();
@ -62,7 +62,7 @@ if($DATE_AT) {
} else { // check for UNIX Timestamp
$date_parse = @date('Ymd',$DATE_AT);
if(!$date_parse || $date_parse === '19700101') {
msg(sprintf($lang['unable_to_parse_date'], $DATE_AT));
msg(sprintf($lang['unable_to_parse_date'], hsc($DATE_AT)));
$DATE_AT = null;
}
}

View File

@ -51,7 +51,7 @@ if($cache->useCache($depends)) {
}
// create new feed
$rss = new DokuWikiFeedCreator();
$rss = new UniversalFeedCreator();
$rss->title = $conf['title'].(($opt['namespace']) ? ' '.$opt['namespace'] : '');
$rss->link = DOKU_URL;
$rss->syndicationURL = DOKU_URL.'feed.php';
@ -85,7 +85,7 @@ if(isset($modes[$opt['feed_mode']])) {
}
rss_buildItems($rss, $data, $opt);
$feed = $rss->createFeed($opt['feed_type'], 'utf-8');
$feed = $rss->createFeed($opt['feed_type']);
// save cachefile
$cache->storeCache($feed);
@ -402,34 +402,30 @@ function rss_buildItems(&$rss, &$data, $opt) {
// add user
# FIXME should the user be pulled from metadata as well?
$user = @$ditem['user']; // the @ spares time repeating lookup
$item->author = '';
if($user && $conf['useacl'] && $auth) {
$userInfo = $auth->getUserData($user);
if($userInfo) {
switch($conf['showuseras']) {
case 'username':
case 'username_link':
$item->author = $userInfo['name'];
break;
default:
$item->author = $user;
break;
}
} else {
$item->author = $user;
}
if($userInfo && !$opt['guardmail']) {
$item->authorEmail = $userInfo['mail'];
} else {
//cannot obfuscate because some RSS readers may check validity
$item->authorEmail = $user.'@'.$ditem['ip'];
}
} elseif($user) {
// this happens when no ACL but some Apache auth is used
$item->author = $user;
$item->authorEmail = $user.'@'.$ditem['ip'];
if(blank($user)) {
$item->author = 'Anonymous';
$item->authorEmail = 'anonymous@undisclosed.example.com';
} else {
$item->authorEmail = 'anonymous@'.$ditem['ip'];
$item->author = $user;
$item->authorEmail = $user . '@undisclosed.example.com';
// get real user name if configured
if($conf['useacl'] && $auth) {
$userInfo = $auth->getUserData($user);
if($userInfo) {
switch($conf['showuseras']) {
case 'username':
case 'username_link':
$item->author = $userInfo['name'];
break;
default:
$item->author = $user;
break;
}
} else {
$item->author = $user;
}
}
}
// add category

View File

@ -2037,8 +2037,7 @@ class JpegMeta {
$ifdEntries = array();
$entryCount = 0;
reset($EXIFNames);
while (list($tag, $name) = each($EXIFNames)) {
foreach($EXIFNames as $tag => $name) {
$type = $EXIFTypeInfo[$tag][0];
$count = $EXIFTypeInfo[$tag][1];
$value = null;
@ -2578,9 +2577,7 @@ class JpegMeta {
$IPTCNames =& $this->_iptcNameTags();
reset($this->_info['iptc']);
while (list($label) = each($this->_info['iptc'])) {
foreach($this->_info['iptc'] as $label => $value) {
$value =& $this->_info['iptc'][$label];
$type = -1;
@ -2969,8 +2966,8 @@ class JpegMeta {
/*************************************************************/
function _names2Tags($tags2Names) {
$names2Tags = array();
reset($tags2Names);
while (list($tag, $name) = each($tags2Names)) {
foreach($tags2Names as $tag => $name) {
$names2Tags[$name] = $tag;
}

View File

@ -28,8 +28,6 @@ class Mailer {
protected $partid = '';
protected $sendparam = null;
/** @var EmailAddressValidator */
protected $validator = null;
protected $allowhtml = true;
protected $replacements = array('text'=> array(), 'html' => array());
@ -185,7 +183,7 @@ class Mailer {
*
* @param string $text plain text body
* @param array $textrep replacements to apply on the text part
* @param array $htmlrep replacements to apply on the HTML part, leave null to use $textrep
* @param array $htmlrep replacements to apply on the HTML part, null to use $textrep (with urls wrapped in <a> tags)
* @param string $html the HTML body, leave null to create it from $text
* @param bool $wrap wrap the HTML in the default header/Footer
*/
@ -359,16 +357,12 @@ class Mailer {
// FIXME: is there a way to encode the localpart of a emailaddress?
if(!utf8_isASCII($addr)) {
msg(htmlspecialchars("E-Mail address <$addr> is not ASCII"), -1);
msg(hsc("E-Mail address <$addr> is not ASCII"), -1);
continue;
}
if(is_null($this->validator)) {
$this->validator = new EmailAddressValidator();
$this->validator->allowLocalAddresses = true;
}
if(!$this->validator->check_email_address($addr)) {
msg(htmlspecialchars("E-Mail address <$addr> is not valid"), -1);
if(!mail_isvalid($addr)) {
msg(hsc("E-Mail address <$addr> is not valid"), -1);
continue;
}

View File

@ -253,7 +253,7 @@ function act_validate($act) {
// check if action is disabled
if(!actionOK($act)){
msg('Command disabled: '.htmlspecialchars($act),-1);
msg('Command disabled: '.hsc($act),-1);
return 'show';
}
@ -261,7 +261,7 @@ function act_validate($act) {
if(!$conf['useacl'] && in_array($act,array('login','logout','register','admin',
'subscribe','unsubscribe','profile','revert',
'resendpwd','profile_delete'))){
msg('Command unavailable: '.htmlspecialchars($act),-1);
msg('Command unavailable: '.hsc($act),-1);
return 'show';
}
@ -273,7 +273,7 @@ function act_validate($act) {
'diff','recent','backlink','admin','subscribe','revert',
'unsubscribe','profile','profile_delete','resendpwd','recover',
'draftdel','sitemap','media')) && substr($act,0,7) != 'export_' ) {
msg('Command unknown: '.htmlspecialchars($act),-1);
msg('Command unknown: '.hsc($act),-1);
return 'show';
}
return $act;

View File

@ -132,7 +132,7 @@ class Doku_Event {
*
* @return bool
*/
public function mayPropgate() {
public function mayPropagate() {
return $this->_continue;
}
@ -229,7 +229,7 @@ class Doku_Event_Handler {
$obj->$method($event, $param);
}
if (!$event->mayPropgate()) return;
if (!$event->mayPropagate()) return;
}
}
}

File diff suppressed because it is too large Load Diff

View File

@ -28,17 +28,17 @@ if(!defined('DOKU_INC')) die('meh.');
class Doku_Form {
// Form id attribute
protected $params = array();
public $params = array();
// Draw a border around form fields.
// Adds <fieldset></fieldset> around the elements
protected $_infieldset = false;
public $_infieldset = false;
// Hidden form fields.
protected $_hidden = array();
public $_hidden = array();
// Array of pseudo-tags
protected $_content = array();
public $_content = array();
/**
* Constructor

View File

@ -208,17 +208,16 @@ function html_btn($name, $id, $akey, $params, $method='get', $tooltip='', $label
$ret .= '<form class="button btn_'.$name.'" method="'.$method.'" action="'.$script.'"><div class="no">';
if(is_array($params)){
reset($params);
while (list($key, $val) = each($params)) {
foreach($params as $key => $val) {
$ret .= '<input type="hidden" name="'.$key.'" ';
$ret .= 'value="'.htmlspecialchars($val).'" />';
$ret .= 'value="'.hsc($val).'" />';
}
}
if ($tooltip!='') {
$tip = htmlspecialchars($tooltip);
$tip = hsc($tooltip);
}else{
$tip = htmlspecialchars($label);
$tip = hsc($label);
}
$ret .= '<button type="submit" ';
@ -408,6 +407,7 @@ function html_search(){
flush();
//do fulltext search
$regex = array();
$data = ft_pageSearch($QUERY,$regex);
if(count($data)){
print '<dl class="search_results">';
@ -582,7 +582,7 @@ function html_revisions($first=0, $media_id = false){
if($summary) {
$form->addElement(form_makeOpenTag('span', array('class' => 'sum')));
if(!$media_id) $form->addElement(' ');
$form->addElement('<bdi>' . htmlspecialchars($summary) . '</bdi>');
$form->addElement('<bdi>' . hsc($summary) . '</bdi>');
$form->addElement(form_makeCloseTag('span'));
}
@ -665,7 +665,7 @@ function html_revisions($first=0, $media_id = false){
if ($info['sum']) {
$form->addElement(form_makeOpenTag('span', array('class' => 'sum')));
if(!$media_id) $form->addElement(' ');
$form->addElement('<bdi>'.htmlspecialchars($info['sum']).'</bdi>');
$form->addElement('<bdi>'.hsc($info['sum']).'</bdi>');
$form->addElement(form_makeCloseTag('span'));
}
@ -876,7 +876,7 @@ function html_recent($first = 0, $show_changes = 'both') {
$form->addElement(html_wikilink(':' . $recent['id'], useHeading('navigation') ? null : $recent['id']));
}
$form->addElement(form_makeOpenTag('span', array('class' => 'sum')));
$form->addElement(' ' . htmlspecialchars($recent['sum']));
$form->addElement(' ' . hsc($recent['sum']));
$form->addElement(form_makeCloseTag('span'));
$form->addElement(form_makeOpenTag('span', array('class' => 'user')));

View File

@ -339,7 +339,8 @@ function io_replaceInFile($file, $oldline, $newline, $regex=false, $maxlines=0)
if ($maxlines > 0) {
$count = 0;
$matched = 0;
while (($count < $maxlines) && (list($i,$line) = each($lines))) {
foreach($lines as $i => $line) {
if($count >= $maxlines) break;
// $matched will be set to 0|1 depending on whether pattern is matched and line replaced
$lines[$i] = preg_replace($pattern, $replace, $line, -1, $matched);
if ($matched) $count++;

View File

@ -24,6 +24,7 @@
* @author Janosch <janosch@moinzen.de>
* @author rnck <dokuwiki@rnck.de>
* @author Felix <j.felix@mueller-donath.de>
* @author Felix Müller-Donath <j.felix@mueller-donath.de>
*/
$lang['encoding'] = 'utf-8';
$lang['direction'] = 'ltr';

View File

@ -7,6 +7,7 @@
* @author Inko Illarramendi <inko.i.a@gmail.com>
* @author Zigor Astarbe <astarbe@gmail.com>
* @author Yadav Gowda <yadav.gowda@gmail.com>
* @author Osoitz <oelkoro@gmail.com>
*/
$lang['encoding'] = 'utf-8';
$lang['direction'] = 'ltr';
@ -63,6 +64,7 @@ $lang['fullname'] = 'Izen Deiturak';
$lang['email'] = 'E-Maila';
$lang['profile'] = 'Erabiltzaile Profila';
$lang['badlogin'] = 'Barkatu, prozesuak huts egin du; saiatu berriz';
$lang['badpassconfirm'] = 'Pasahitz okerra';
$lang['minoredit'] = 'Aldaketa Txikiak';
$lang['draftdate'] = 'Zirriborroa automatikoki gorde da hemen:';
$lang['nosecedit'] = 'Orria aldatua izan da bitartean, info atala zaharkituta geratu da, orri osoa kargatu da horren ordez.';
@ -71,6 +73,7 @@ $lang['regmissing'] = 'Barkatu, hutsune guztiak bete behar dituzu.';
$lang['reguexists'] = 'Barkatu, izen bereko erabiltzailea existitzen da.';
$lang['regsuccess'] = 'Erabiltzailea sortu da. Pasahitza mailez bidaliko zaizu.';
$lang['regsuccess2'] = 'Erabiltzailea sortua izan da.';
$lang['regfail'] = 'Ezin izan da erabiltzailea sortu';
$lang['regmailfail'] = 'Badirudi arazoren bat egon dela pasahitza mailez bidaltzeko orduan. Administratzailearekin harremanetan jarri!';
$lang['regbadmail'] = 'Emandako helbidea ez da zuzena - jarri harremanetan administratzailearekin hau akats bat dela uste baduzu';
$lang['regbadpass'] = 'Idatzitako bi pasahitzak ez dira berdinak, berriz saiatu.';
@ -80,7 +83,12 @@ $lang['profna'] = 'Wiki honek ez du profilaren aldaketa ahalbidet
$lang['profnochange'] = 'Aldaketarik ez, ez dago egiteko ezer.';
$lang['profnoempty'] = 'Izen edota e-posta hutsa ez dago onartua.';
$lang['profchanged'] = 'Erabiltzaile profila arrakastaz eguneratua.';
$lang['profnodelete'] = 'Wiki honek ez du erabiltzaileak ezabatzea onartzen';
$lang['profdeleteuser'] = 'Kontua ezabatu';
$lang['profdeleted'] = 'Zure erabiltzaile kontua wiki honetatik ezabatu da';
$lang['profconfdelete'] = 'Nire kontua kendu nahi dut wiki honetatik. <br/>Ekintza hau ezin da desegin.';
$lang['profconfdeletemissing'] = 'Ez da egiaztaketa-kutxa markatu';
$lang['proffail'] = 'Erabiltzailearen perfila ez da eguneratu';
$lang['pwdforget'] = 'Pasahitza ahaztu duzu? Eskuratu berri bat';
$lang['resendna'] = 'Wiki honek ez du pasahitz berbidalketa onartzen.';
$lang['resendpwd'] = '-entzat pasahitza berria ezarri';
@ -96,6 +104,7 @@ $lang['searchmedia_in'] = 'Bilatu %s-n';
$lang['txt_upload'] = 'Ireki nahi den fitxategia aukeratu:';
$lang['txt_filename'] = 'Idatzi wikiname-a (aukerazkoa):';
$lang['txt_overwrt'] = 'Oraingo fitxategiaren gainean idatzi';
$lang['maxuploadsize'] = 'Igo gehienez %s fitxategiko';
$lang['lockedby'] = 'Momentu honetan blokeatzen:';
$lang['lockexpire'] = 'Blokeaketa iraungitzen da:';
$lang['js']['willexpire'] = 'Zure blokeaketa orri hau aldatzeko minutu batean iraungitzen da.\nGatazkak saihesteko, aurreikusi botoia erabili blokeaketa denboragailua berrabiarazteko.';
@ -133,6 +142,7 @@ $lang['js']['del_confirm'] = 'Benetan ezabatu aukeratutako fitxategia(k)?';
$lang['js']['restore_confirm'] = 'Benetan bertsio hau berrezarri?';
$lang['js']['media_diff'] = 'Diferentziak ikusi:';
$lang['js']['media_diff_both'] = 'Ondoz ondo';
$lang['js']['media_diff_portions'] = 'Pasatu hatza';
$lang['js']['media_select'] = 'Fitxategiak hautatu';
$lang['js']['media_upload_btn'] = 'Igo';
$lang['js']['media_done_btn'] = 'Egina';
@ -175,6 +185,11 @@ $lang['difflink'] = 'Estekatu konparaketa bista honetara';
$lang['diff_type'] = 'Ikusi diferentziak:';
$lang['diff_inline'] = 'Lerro tartean';
$lang['diff_side'] = 'Ondoz ondo';
$lang['diffprevrev'] = 'Aurreko errebisioa';
$lang['diffnextrev'] = 'Hurrengo errebisioa';
$lang['difflastrev'] = 'Azken errebisioa';
$lang['diffbothprevrev'] = 'Alde biak aurreko errebisioa';
$lang['diffbothnextrev'] = 'Alde biak hurrengo errebisioa';
$lang['line'] = 'Marra';
$lang['breadcrumb'] = 'Traza:';
$lang['youarehere'] = 'Hemen zaude:';
@ -279,8 +294,12 @@ $lang['i_policy'] = 'Hasierako ACL politika';
$lang['i_pol0'] = 'Wiki Irekia (irakurri, idatzi, fitxategiak igo edonorentzat)';
$lang['i_pol1'] = 'Wiki Publikoa (irakurri edonorentzat, idatzi eta fitxategiak igo erregistratutako erabiltzaileentzat)';
$lang['i_pol2'] = 'Wiki Itxia (irakurri, idatzi, fitxategiak igo erregistratutako erabiltzaileentzat soilik)';
$lang['i_allowreg'] = 'Baimendu erabiltzaileei bere burua erregistratzea';
$lang['i_retry'] = 'Berriz saiatu';
$lang['i_license'] = 'Mesedez, aukeratu zein lizentzipean ezarri nahi duzun zure edukia:';
$lang['i_license_none'] = 'Ez erakutsi lizentzia informaziorik';
$lang['i_pop_field'] = 'Lagundu gaitzazu Dokuwiki esperientzia hobetzen:';
$lang['i_pop_label'] = 'Hilean behin bidali erabilera datu anonimoak Dokuwiki garatzaileei';
$lang['recent_global'] = 'Une honetan <b>%s</b> izen-espazioaren barneko aldaketak ikusten ari zara.<a href="%s"> Wiki osoaren azken aldaketak</a> ere ikusi ditzakezu.';
$lang['years'] = 'duela %d urte';
$lang['months'] = 'duela %d hilabete';
@ -296,6 +315,8 @@ $lang['media_file'] = 'Fitxategia';
$lang['media_viewtab'] = 'Begiratu';
$lang['media_edittab'] = 'Editatu';
$lang['media_historytab'] = 'Historia';
$lang['media_list_thumbs'] = 'Iruditxoak';
$lang['media_list_rows'] = 'Errenkadak';
$lang['media_sort_name'] = 'Izena';
$lang['media_sort_date'] = 'Data';
$lang['media_files'] = '%s -n fitxategiak';
@ -304,7 +325,16 @@ $lang['media_search'] = 'Bilatu %s -n';
$lang['media_view'] = '%s';
$lang['media_viewold'] = '%s -n %s';
$lang['media_edit'] = '%s editatu';
$lang['media_history'] = '%s(a)ren historiala';
$lang['media_meta_edited'] = 'metadatuak editatua';
$lang['media_perm_read'] = 'Ez duzu fitxategiak irakurtzeko behar beste baimen.';
$lang['media_perm_upload'] = 'Ez duzu fitxategiak igotzeko behar beste baimen.';
$lang['media_update'] = 'Bertsio berria igo';
$lang['media_restore'] = 'Bertsio hau berrezarri';
$lang['email_signature_text'] = 'Email hau DokuWiki erabiliz sortu da
$lang['media_acl_warning'] = 'Hau agian ez dago osorik SCL murrizketak eta ezkutuko orriak direla eta.';
$lang['searchresult'] = 'Bilaketaren emaitza';
$lang['plainhtml'] = 'HTML hutsa';
$lang['wikimarkup'] = 'Wiki kodea';
$lang['page_nonexist_rev'] = 'Ez zegoen %s izeneko orririk. Sortu egin da <a href="%s">%s</a> helbidean.';
$lang['email_signature_text'] = 'Email hau DokuWiki erabiliz sortu da
@DOKUWIKIURL@';

View File

@ -15,6 +15,7 @@
* @author Young gon Cha <garmede@gmail.com>
* @author hyeonsoft <hyeonsoft@live.co.kr>
* @author Erial <erial2@gmail.com>
* @author S.H. Lee <tuders@naver.com>
*/
$lang['encoding'] = 'utf-8';
$lang['direction'] = 'ltr';

View File

@ -15,6 +15,7 @@
* @author Romulo Pereira <romuloccomp@gmail.com>
* @author Paulo Carmino <contato@paulocarmino.com>
* @author Alfredo Silva <alfredo.silva@sky.com>
* @author Guilherme <guilherme.sa@hotmail.com>
*/
$lang['encoding'] = 'utf-8';
$lang['direction'] = 'ltr';
@ -346,5 +347,5 @@ $lang['plainhtml'] = 'HTML simples';
$lang['wikimarkup'] = 'Markup de Wiki';
$lang['page_nonexist_rev'] = 'Página não existia no %s. Posteriormente, foi criado em <a href="%s">%s</a>.';
$lang['unable_to_parse_date'] = 'Não é possível analisar o parâmetro "%s".';
$lang['email_signature_text'] = 'Este email foi gerado por DokuWiki em
$lang['email_signature_text'] = 'Este email foi gerado por DokuWiki em
@DOKUWIKIURL@';

View File

@ -176,8 +176,10 @@ $lang['mail_changed'] = 'страница измењена:';
$lang['mail_subscribe_list'] = 'Странице промењене у именском простору:';
$lang['mail_new_user'] = 'нови корисник:';
$lang['mail_upload'] = 'послата датотека:';
$lang['changes_type'] = 'Прикажи измене';
$lang['pages_changes'] = 'Странице';
$lang['both_changes'] = 'И странице и датотеке';
$lang['media_changes'] = 'датотека';
$lang['both_changes'] = 'И страница и датотека';
$lang['qb_bold'] = 'Мастан текст';
$lang['qb_italic'] = 'Курзивни текст';
$lang['qb_underl'] = 'Подвучени текст';

View File

@ -21,6 +21,7 @@
* @author Tor Härnqvist <tor.harnqvist@gmail.com>
* @author Hans Iwan Bratt <hibratt@gmail.com>
* @author Mikael Bergström <krank23@gmail.com>
* @author Tor Härnqvist <tor@harnqvist.se>
*/
$lang['encoding'] = 'utf-8';
$lang['direction'] = 'ltr';
@ -86,6 +87,7 @@ $lang['regmissing'] = 'Du måste fylla i alla fälten.';
$lang['reguexists'] = 'Det finns redan en användare med det användarnamnet.';
$lang['regsuccess'] = 'Användarkontot skapat, lösenordet har skickats via e-post.';
$lang['regsuccess2'] = 'Användarkontot skapat.';
$lang['regfail'] = 'Användaren kunde inte skapas.';
$lang['regmailfail'] = 'Ett fel uppstod när ditt lösenord skulle skickas via e-post. Var god kontakta administratören!';
$lang['regbadmail'] = 'Den angivna e-postadressen verkar vara ogiltig - om du anser detta felaktigt, var god kontakta administratören';
$lang['regbadpass'] = 'De två angivna lösenorden är inte identiska. Försök igen.';
@ -100,6 +102,7 @@ $lang['profdeleteuser'] = 'Radera kontot';
$lang['profdeleted'] = 'Ditt användarkonto har raderats från den här wiki:n';
$lang['profconfdelete'] = 'Jag vill ta bort mitt konto/inlogg på den här wiki:n <br/> Denna åtgärd går ej att ångra.';
$lang['profconfdeletemissing'] = 'Bekräftelse-kryssrutan är ej markerad';
$lang['proffail'] = 'Användarprofilen uppdaterades ej.';
$lang['pwdforget'] = 'Glömt ditt lösenord? Ordna ett nytt';
$lang['resendna'] = 'Den här wikin stödjer inte utskick av lösenord.';
$lang['resendpwd'] = 'Sätt lösenord för';
@ -195,6 +198,9 @@ $lang['diff2'] = 'Visa skillnader mellan valda versioner';
$lang['difflink'] = 'Länk till den här jämförelsesidan';
$lang['diff_type'] = 'Visa skillnader:';
$lang['diff_side'] = 'Sida vid sida';
$lang['diffprevrev'] = 'Föregående version.';
$lang['diffnextrev'] = 'Nästa version.';
$lang['difflastrev'] = 'Senaste version.';
$lang['line'] = 'Rad';
$lang['breadcrumb'] = 'Spår:';
$lang['youarehere'] = 'Här är du:';
@ -263,6 +269,7 @@ $lang['img_keywords'] = 'Nyckelord:';
$lang['img_width'] = 'Bredd:';
$lang['img_height'] = 'Höjd:';
$lang['subscr_subscribe_success'] = 'La till %s till prenumerationslista %s';
$lang['subscr_subscribe_error'] = 'Error att lägga till %s till prenumerationslista för %s';
$lang['subscr_subscribe_noaddress'] = 'Det finns ingen adress associerad med din inloggning, du kan inte bli tillagd i prenumerationslistan';
$lang['subscr_unsubscribe_success'] = '%s borttagen från prenumerationslistan för %s';
$lang['subscr_unsubscribe_error'] = 'Fel vid borttagning av %s från prenumerationslista %s';
@ -275,6 +282,7 @@ $lang['subscr_m_unsubscribe'] = 'Avsluta prenumeration';
$lang['subscr_m_subscribe'] = 'Prenumerera';
$lang['subscr_m_receive'] = 'Ta emot';
$lang['subscr_style_every'] = 'skicka epost vid varje ändring';
$lang['subscr_style_digest'] = 'Samlings-e-brev av ändringar för varje sida (var %.2f dag)';
$lang['subscr_style_list'] = 'lista över ändrade sidor sedan senaste e-post (varje %.2f dag)';
$lang['authtempfail'] = 'Tillfälligt fel på användarautentisering. Om felet kvarstår, var vänlig meddela wikiadministratören.';
$lang['i_chooselang'] = 'Välj språk';
@ -339,7 +347,10 @@ $lang['media_perm_read'] = 'Du har tyvärr inte tillräckliga behörighete
$lang['media_perm_upload'] = 'Du har tyvärr inte tillräckliga behörigheter för att ladda upp filer.';
$lang['media_update'] = 'Ladda upp ny version';
$lang['media_restore'] = 'Återställ denna version';
$lang['media_acl_warning'] = 'Listan kanske inte är ';
$lang['currentns'] = 'Nuvarande namnrymd.';
$lang['searchresult'] = 'Sökresultat';
$lang['plainhtml'] = 'Ren HTML';
$lang['email_signature_text'] = 'Detta meddelande har skapats av DokuWiki
$lang['page_nonexist_rev'] = 'Sidan fanns inte på %s. Den blev sedermera skapad på <a href="%s">%s</a>.';
$lang['email_signature_text'] = 'Detta meddelande har skapats av DokuWiki
@DOKUWIKIURL@';

View File

@ -0,0 +1,9 @@
Hej!
Sidorna i namnrymden @PAGE@ för wikin @TITLE@ har ändrats. Följande sidor har ändrats:
--------------------------------------------------------
@DIFF@
--------------------------------------------------------
För att inaktivera sidnotifieringar, logga in på wikin (@DOKUWIKIURL@), gå till @SUBSCRIBE@ och avanmäl dig från sid-och/eller namnrymd-ändringar.

View File

@ -13,6 +13,7 @@
* @author Max Lyashuk <m_lyashuk@ukr.net>
* @author Pavel <pavelholovko@yandex.ru>
* @author Maksim <nikropol@yandex.ru>
* @author Nina Zolotova <nina-z@i.ua>
*/
$lang['encoding'] = 'utf-8';
$lang['direction'] = 'ltr';
@ -88,8 +89,10 @@ $lang['profna'] = 'Ця Вікі не підтримує змін
$lang['profnochange'] = 'Немає змін, немає що робити.';
$lang['profnoempty'] = 'Ім’я або e-mail не можуть бути пустими.';
$lang['profchanged'] = 'Профіль успішно змінено.';
$lang['profnodelete'] = 'Ця вікі не підтримує видалення користувачів.';
$lang['profdeleteuser'] = 'Видалити аккаунт';
$lang['profdeleted'] = 'Ваш профіль користувача буде видалено з цієї wiki.';
$lang['profconfdelete'] = 'Я хочу видалити мій акаунт з цієї вікі.';
$lang['proffail'] = 'Профіль користувача не вдалося поновити.';
$lang['pwdforget'] = 'Забули пароль? Отримайте новий';
$lang['resendna'] = 'Ця Вікі не підтримує повторне відправлення пароля.';
@ -192,7 +195,7 @@ $lang['difflastrev'] = 'Остання ревізія';
$lang['line'] = 'Рядок';
$lang['breadcrumb'] = 'Відвідано:';
$lang['youarehere'] = 'Ви тут:';
$lang['lastmod'] = 'В останнє змінено:';
$lang['lastmod'] = 'Востаннє змінено:';
$lang['deleted'] = 'знищено';
$lang['created'] = 'створено';
$lang['restored'] = 'відновлено стару ревізію (%s)';
@ -213,6 +216,7 @@ $lang['mail_upload'] = 'завантажено файл:';
$lang['changes_type'] = 'Переглянути зміни ';
$lang['pages_changes'] = 'Сторінок';
$lang['media_changes'] = 'Медіа-файли';
$lang['both_changes'] = 'Сторінки та медіа-файли';
$lang['qb_bold'] = 'Напівжирний текст';
$lang['qb_italic'] = 'Курсив';
$lang['qb_underl'] = 'Підкреслений текст';
@ -280,6 +284,7 @@ $lang['i_modified'] = 'З причин безпеки цей скри
Вам слід або ще раз розпакувати файли із завантаженого пакету, або звернутися до повної <a href="http://dokuwiki.org/install">інструкції з установки ДокуВікі</a>';
$lang['i_funcna'] = 'Функція PHP <code>%s</code> не доступна. Можливо, хостинг-провайдер відключив її з якихось причин?';
$lang['i_phpver'] = 'Версія PHP <code>%s</code> менша, ніж необхідно - <code>%s</code>. Необхідно оновити PHP.';
$lang['i_mbfuncoverload'] = 'mbstring.func_overload має бути вимкнена у php.ini щоб запустити DokuWiki.';
$lang['i_permfail'] = 'ДокуВікі не має прав на запис <code>%s</code>. Необхідно змінити права доступа для цієї папки!';
$lang['i_confexists'] = '<code>%s</code> вже існує';
$lang['i_writeerr'] = 'Неможливо створити <code>%s</code>. Необхідно перевірити права доступа для файлу/папки та створити файл вручну.';
@ -293,9 +298,11 @@ $lang['i_policy'] = 'Початкова політика ACL';
$lang['i_pol0'] = 'Відкрита Вікі (читання, запис та завантаження файлів для всіх)';
$lang['i_pol1'] = 'Публічна Вікі (читання для всіх, запис та завантаження для зареєстрованих користувачів)';
$lang['i_pol2'] = 'Закрита Вікі (читання, запис та завантаження тільки для зареєстрованих користувачів)';
$lang['i_allowreg'] = 'Дозволити користувачам реєструватися самостійно.';
$lang['i_retry'] = 'Повторити';
$lang['i_license'] = 'Будь ласка, виберіть тип ліцензії, під якою Ві бажаєте опублікувати матеріал:';
$lang['i_license_none'] = 'Не показувати жодної інформації про ліцензії.';
$lang['i_pop_label'] = 'Одного разу на місяць надсилати дані про використання розробникам DokuWiki.';
$lang['recent_global'] = 'Ви переглядаєте зміни в межах простору імен <b>%s</b>. Також можна <a href="%s">переглянути зміни в межах усієї Вікі</a>.';
$lang['years'] = '%d років тому';
$lang['months'] = '%d місяців тому';
@ -305,8 +312,7 @@ $lang['hours'] = '%d годин тому';
$lang['minutes'] = '%d хвилин тому';
$lang['seconds'] = '%d секунд тому';
$lang['wordblock'] = 'Ваші зміни не збережено, тому що вони розпізнані як такі, що містять заблокований текст(спам).';
$lang['email_signature_text'] = 'Це повідомлення було створене ДокуВікі з
@DOKUWIKIURL@';
$lang['media_uploadtab'] = 'Завантажити';
$lang['media_searchtab'] = 'Пошук';
$lang['media_file'] = 'Файл';
$lang['media_viewtab'] = 'Огляд';
@ -314,11 +320,20 @@ $lang['media_edittab'] = 'Редагувати';
$lang['media_historytab'] = 'Історія';
$lang['media_sort_name'] = 'Ім’я';
$lang['media_sort_date'] = 'Дата';
$lang['media_files'] = 'Файли у %s';
$lang['media_upload'] = 'Завантажити до %s';
$lang['media_search'] = 'Шукати у %s';
$lang['media_view'] = '%s';
$lang['media_edit'] = 'Редагувати %s';
$lang['media_history'] = 'Історія %s';
$lang['media_meta_edited'] = 'метаданні відредаговано';
$lang['media_perm_read'] = 'Вибачте, у вас не достатньо прав для читання цього файлу.';
$lang['media_perm_upload'] = 'Вибачте, у вас недостатньо прав, щоб завантажувати файли.';
$lang['media_update'] = 'Завантажити нову версію';
$lang['media_restore'] = 'Відновити цю версію';
$lang['currentns'] = 'Поточний діапазон імен';
$lang['searchresult'] = 'Результати пошуку';
$lang['plainhtml'] = 'Простий HTML';
$lang['wikimarkup'] = 'Wiki розмітка';
$lang['email_signature_text'] = 'Це повідомлення було створене ДокуВікі з
@DOKUWIKIURL@';

View File

@ -64,7 +64,6 @@ function load_autoload($name){
'cache_renderer' => DOKU_INC.'inc/cache.php',
'Doku_Event' => DOKU_INC.'inc/events.php',
'Doku_Event_Handler' => DOKU_INC.'inc/events.php',
'EmailAddressValidator' => DOKU_INC.'inc/EmailAddressValidator.php',
'Input' => DOKU_INC.'inc/Input.class.php',
'JpegMeta' => DOKU_INC.'inc/JpegMeta.php',
'SimplePie' => DOKU_INC.'inc/SimplePie.php',
@ -76,7 +75,6 @@ function load_autoload($name){
'Doku_Plugin_Controller'=> DOKU_INC.'inc/plugincontroller.class.php',
'Tar' => DOKU_INC.'inc/Tar.class.php',
'ZipLib' => DOKU_INC.'inc/ZipLib.class.php',
'DokuWikiFeedCreator' => DOKU_INC.'inc/feedcreator.class.php',
'Doku_Parser_Mode' => DOKU_INC.'inc/parser/parser.php',
'Doku_Parser_Mode_Plugin' => DOKU_INC.'inc/parser/parser.php',
'SafeFN' => DOKU_INC.'inc/SafeFN.class.php',

View File

@ -210,12 +210,12 @@ function mail_encode_address($string,$header='',$names=true){
// FIXME: is there a way to encode the localpart of a emailaddress?
if(!utf8_isASCII($addr)){
msg(htmlspecialchars("E-Mail address <$addr> is not ASCII"),-1);
msg(hsc("E-Mail address <$addr> is not ASCII"),-1);
continue;
}
if(!mail_isvalid($addr)){
msg(htmlspecialchars("E-Mail address <$addr> is not valid"),-1);
msg(hsc("E-Mail address <$addr> is not valid"),-1);
continue;
}
@ -267,10 +267,8 @@ function mail_encode_address($string,$header='',$names=true){
* @param string $email the address to check
* @return bool true if address is valid
*/
function mail_isvalid($email){
$validator = new EmailAddressValidator;
$validator->allowLocalAddresses = true;
return $validator->check_email_address($email);
function mail_isvalid($email) {
return EmailAddressValidator::checkEmailAddress($email, true);
}
/**

View File

@ -1734,9 +1734,9 @@ function media_printimgdetail($item, $fullscreen=false){
// print EXIF/IPTC data
if($t || $d || $k ){
echo '<p>';
if($t) echo '<strong>'.htmlspecialchars($t).'</strong><br />';
if($d) echo htmlspecialchars($d).'<br />';
if($t) echo '<em>'.htmlspecialchars($k).'</em>';
if($t) echo '<strong>'.hsc($t).'</strong><br />';
if($d) echo hsc($d).'<br />';
if($t) echo '<em>'.hsc($k).'</em>';
echo '</p>';
}
echo '</div>';

View File

@ -57,10 +57,16 @@ class Doku_Handler {
array_push($this->calls,array('document_end',array(),$last_call[2]));
}
/**
* fetch the current call and advance the pointer to the next one
*
* @return bool|mixed
*/
function fetch() {
$call = each($this->calls);
if ( $call ) {
return $call['value'];
$call = current($this->calls);
if($call !== false) {
next($this->calls); //advance the pointer
return $call;
}
return false;
}

View File

@ -916,7 +916,7 @@ class Doku_Parser_Mode_media extends Doku_Parser_Mode {
function connectTo($mode) {
// Word boundaries?
$this->Lexer->addSpecialPattern("\{\{[^\}]+\}\}",$mode,'media');
$this->Lexer->addSpecialPattern("\{\{(?:[^\}]|(?:\}[^\}]))+\}\}",$mode,'media');
}
function getSort() {

View File

@ -839,12 +839,18 @@ class Doku_Renderer extends DokuWiki_Plugin {
return rawurlencode($match[0]);
}, $reference), $url);
$parsed = parse_url($reference);
if(!$parsed['port']) $parsed['port'] = 80;
$url = str_replace('{SCHEME}', $parsed['scheme'], $url);
$url = str_replace('{HOST}', $parsed['host'], $url);
$url = str_replace('{PORT}', $parsed['port'], $url);
$url = str_replace('{PATH}', $parsed['path'], $url);
$url = str_replace('{QUERY}', $parsed['query'], $url);
if (empty($parsed['scheme'])) $parsed['scheme'] = '';
if (empty($parsed['host'])) $parsed['host'] = '';
if (empty($parsed['port'])) $parsed['port'] = 80;
if (empty($parsed['path'])) $parsed['path'] = '';
if (empty($parsed['query'])) $parsed['query'] = '';
$url = strtr($url,[
'{SCHEME}' => $parsed['scheme'],
'{HOST}' => $parsed['host'],
'{PORT}' => $parsed['port'],
'{PATH}' => $parsed['path'],
'{QUERY}' => $parsed['query'] ,
]);
} else {
//default
$url = $url.rawurlencode($reference);

View File

@ -1133,7 +1133,9 @@ class Doku_Renderer_xhtml extends Doku_Renderer {
function internalmedia($src, $title = null, $align = null, $width = null,
$height = null, $cache = null, $linking = null, $return = false) {
global $ID;
list($src, $hash) = explode('#', $src, 2);
if (strpos($src, '#') !== false) {
list($src, $hash) = explode('#', $src, 2);
}
resolve_mediaid(getNS($ID), $src, $exists, $this->date_at, true);
$noLink = false;
@ -1154,7 +1156,7 @@ class Doku_Renderer_xhtml extends Doku_Renderer {
if($exists) $link['title'] .= ' ('.filesize_h(filesize(mediaFN($src))).')';
}
if($hash) $link['url'] .= '#'.$hash;
if (!empty($hash)) $link['url'] .= '#'.$hash;
//markup non existing files
if(!$exists) {

View File

@ -333,14 +333,14 @@ function search_allpages(&$data,$base,$file,$type,$lvl,$opts){
$item = array();
$item['id'] = pathID($file);
if(!$opts['skipacl'] && auth_quickaclcheck($item['id']) < AUTH_READ){
if(isset($opts['skipacl']) && !$opts['skipacl'] && auth_quickaclcheck($item['id']) < AUTH_READ){
return false;
}
$item['rev'] = filemtime($base.'/'.$file);
$item['mtime'] = $item['rev'];
$item['size'] = filesize($base.'/'.$file);
if($opts['hash']){
if(!empty($opts['hash'])){
$item['hash'] = md5(trim(rawWiki($item['id'])));
}

View File

@ -366,7 +366,7 @@ function tpl_metaheaders($alt = true) {
if(($ACT == 'show' || $ACT == 'export_xhtml') && !$REV) {
if($INFO['exists']) {
//delay indexing:
if((time() - $INFO['lastmod']) >= $conf['indexdelay']) {
if(!isHiddenPage($ID) && (time() - $INFO['lastmod']) >= $conf['indexdelay']) {
$head['meta'][] = array('name'=> 'robots', 'content'=> 'index,follow');
} else {
$head['meta'][] = array('name'=> 'robots', 'content'=> 'noindex,nofollow');
@ -449,6 +449,7 @@ function _tpl_metaheaders_action($data) {
echo "<!--[if gte IE 9]><!-->\n"; // no scripts for old IE
}
foreach($inst as $attr) {
if ( empty($attr) ) { continue; }
echo '<', $tag, ' ', buildAttributes($attr);
if(isset($attr['_data']) || $tag == 'script') {
if($tag == 'script' && $attr['_data'])
@ -865,7 +866,7 @@ function tpl_searchform($ajax = true, $autocomplete = true) {
print '<form action="'.wl().'" accept-charset="utf-8" class="search" id="dw__search" method="get" role="search"><div class="no">';
print '<input type="hidden" name="do" value="search" />';
print '<input type="text" ';
if($ACT == 'search') print 'value="'.htmlspecialchars($QUERY).'" ';
if($ACT == 'search') print 'value="'.hsc($QUERY).'" ';
print 'placeholder="'.$lang['btn_search'].'" ';
if(!$autocomplete) print 'autocomplete="off" ';
print 'id="qsearch__in" accesskey="f" name="id" class="edit" title="[F]" />';
@ -1644,7 +1645,7 @@ function tpl_mediaTree() {
* @param string $empty empty option label
* @param string $button submit button label
*/
function tpl_actiondropdown($empty = '', $button = '&gt;') {
function tpl_actiondropdown($empty = '&nbsp;', $button = '&gt;') {
global $ID;
global $REV;
global $lang;

View File

@ -161,7 +161,7 @@ function print_form($d){
include(DOKU_CONF.'license.php');
if(!is_array($d)) $d = array();
$d = array_map('htmlspecialchars',$d);
$d = array_map('hsc',$d);
if(!isset($d['acl'])) $d['acl']=1;
if(!isset($d['pop'])) $d['pop']=1;
@ -216,9 +216,9 @@ function print_form($d){
if(empty($d['license'])) $d['license'] = 'cc-by-sa';
foreach($license as $key => $lic){
echo '<label for="lic_'.$key.'">';
echo '<input type="radio" name="d[license]" value="'.htmlspecialchars($key).'" id="lic_'.$key.'"'.
echo '<input type="radio" name="d[license]" value="'.hsc($key).'" id="lic_'.$key.'"'.
(($d['license'] === $key)?' checked="checked"':'').'>';
echo htmlspecialchars($lic['name']);
echo hsc($lic['name']);
if($lic['url']) echo ' <a href="'.$lic['url'].'" target="_blank"><sup>[?]</sup></a>';
echo '</label>';
}

View File

@ -14,11 +14,9 @@ session_write_close();
header('Content-Type: text/html; charset=utf-8');
//call the requested function
if($INPUT->post->has('call')){
$call = $INPUT->post->str('call');
}else if($INPUT->get->has('call')){
$call = $INPUT->get->str('call');
}else{
if($INPUT->has('call')) {
$call = $INPUT->filter('utf8_stripspecials')->str('call');
} else {
exit;
}
$callfn = 'ajax_'.$call;
@ -28,7 +26,7 @@ if(function_exists($callfn)){
}else{
$evt = new Doku_Event('AJAX_CALL_UNKNOWN', $call);
if ($evt->advise_before()) {
print "AJAX call '".htmlspecialchars($call)."' unknown!\n";
print "AJAX call '".hsc($call)."' unknown!\n";
exit;
}
$evt->advise_after();
@ -424,13 +422,13 @@ function ajax_linkwiz(){
if($item['type'] == 'u'){
$name = $lang['upperns'];
}else{
$name = htmlspecialchars($item['id']);
$name = hsc($item['id']);
}
echo '<a href="'.$link.'" title="'.htmlspecialchars($item['id']).'" class="wikilink1">'.$name.'</a>';
echo '<a href="'.$link.'" title="'.hsc($item['id']).'" class="wikilink1">'.$name.'</a>';
if(!blank($item['title'])){
echo '<span>'.htmlspecialchars($item['title']).'</span>';
echo '<span>'.hsc($item['title']).'</span>';
}
echo '</div>';
}

View File

@ -36,7 +36,7 @@ function css_out(){
$mediatypes = array('feed');
$type = 'feed';
} else {
$mediatypes = array('screen', 'all', 'print');
$mediatypes = array('screen', 'all', 'print', 'speech');
$type = '';
}
@ -44,9 +44,6 @@ function css_out(){
$tpl = trim(preg_replace('/[^\w-]+/','',$INPUT->str('t')));
if(!$tpl) $tpl = $conf['template'];
// The generated script depends on some dynamic options
$cache = new cache('styles'.$_SERVER['HTTP_HOST'].$_SERVER['SERVER_PORT'].$INPUT->int('preview').DOKU_BASE.$tpl.$type,'.css');
// load styl.ini
$styleini = css_styleini($tpl, $INPUT->bool('preview'));
@ -60,72 +57,92 @@ function css_out(){
// Array of needed files and their web locations, the latter ones
// are needed to fix relative paths in the stylesheets
$files = array();
$media_files = array();
foreach($mediatypes as $mediatype) {
$files[$mediatype] = array();
$files = array();
// load core styles
$files[$mediatype][DOKU_INC.'lib/styles/'.$mediatype.'.css'] = DOKU_BASE.'lib/styles/';
$files[DOKU_INC.'lib/styles/'.$mediatype.'.css'] = DOKU_BASE.'lib/styles/';
// load jQuery-UI theme
if ($mediatype == 'screen') {
$files[$mediatype][DOKU_INC.'lib/scripts/jquery/jquery-ui-theme/smoothness.css'] = DOKU_BASE.'lib/scripts/jquery/jquery-ui-theme/';
$files[DOKU_INC.'lib/scripts/jquery/jquery-ui-theme/smoothness.css'] = DOKU_BASE.'lib/scripts/jquery/jquery-ui-theme/';
}
// load plugin styles
$files[$mediatype] = array_merge($files[$mediatype], css_pluginstyles($mediatype));
$files = array_merge($files, css_pluginstyles($mediatype));
// load template styles
if (isset($styleini['stylesheets'][$mediatype])) {
$files[$mediatype] = array_merge($files[$mediatype], $styleini['stylesheets'][$mediatype]);
$files = array_merge($files, $styleini['stylesheets'][$mediatype]);
}
// load user styles
if(!empty($config_cascade['userstyle'][$mediatype])) {
foreach($config_cascade['userstyle'][$mediatype] as $userstyle) {
$files[$mediatype][$userstyle] = DOKU_BASE;
$files[$userstyle] = DOKU_BASE;
}
}
$cache_files = array_merge($cache_files, array_keys($files[$mediatype]));
// Let plugins decide to either put more styles here or to remove some
$media_files[$mediatype] = css_filewrapper($mediatype, $files);
$CSSEvt = new Doku_Event('CSS_STYLES_INCLUDED', $media_files[$mediatype]);
// Make it preventable.
if ( $CSSEvt->advise_before() ) {
$cache_files = array_merge($cache_files, array_keys($media_files[$mediatype]['files']));
} else {
// unset if prevented. Nothing will be printed for this mediatype.
unset($media_files[$mediatype]);
}
// finish event.
$CSSEvt->advise_after();
}
// The generated script depends on some dynamic options
$cache = new cache('styles'.$_SERVER['HTTP_HOST'].$_SERVER['SERVER_PORT'].$INPUT->bool('preview').DOKU_BASE.$tpl.$type,'.css');
$cache->_event = 'CSS_CACHE_USE';
// check cache age & handle conditional request
// This may exit if a cache can be used
http_cached($cache->cache,
$cache->useCache(array('files' => $cache_files)));
$cache_ok = $cache->useCache(array('files' => $cache_files));
http_cached($cache->cache, $cache_ok);
// start output buffering
ob_start();
// Fire CSS_STYLES_INCLUDED for one last time to let the
// plugins decide whether to include the DW default styles.
// This can be done by preventing the Default.
$media_files['DW_DEFAULT'] = css_filewrapper('DW_DEFAULT');
trigger_event('CSS_STYLES_INCLUDED', $media_files['DW_DEFAULT'], 'css_defaultstyles');
// build the stylesheet
foreach ($mediatypes as $mediatype) {
// print the default classes for interwiki links and file downloads
if ($mediatype == 'screen') {
print '@media screen {';
css_interwiki();
css_filetypes();
print '}';
// Check if there is a wrapper set for this type.
if ( !isset($media_files[$mediatype]) ) {
continue;
}
$cssData = $media_files[$mediatype];
// Print the styles.
print NL;
if ( $cssData['encapsulate'] === true ) print $cssData['encapsulationPrefix'] . ' {';
print '/* START '.$cssData['mediatype'].' styles */'.NL;
// load files
$css_content = '';
foreach($files[$mediatype] as $file => $location){
foreach($cssData['files'] as $file => $location){
$display = str_replace(fullpath(DOKU_INC), '', fullpath($file));
$css_content .= "\n/* XXXXXXXXX $display XXXXXXXXX */\n";
$css_content .= css_loadfile($file, $location);
}
switch ($mediatype) {
case 'screen':
print NL.'@media screen { /* START screen styles */'.NL.$css_content.NL.'} /* /@media END screen styles */'.NL;
break;
case 'print':
print NL.'@media print { /* START print styles */'.NL.$css_content.NL.'} /* /@media END print styles */'.NL;
break;
case 'all':
case 'feed':
default:
print NL.'/* START rest styles */ '.NL.$css_content.NL.'/* END rest styles */'.NL;
break;
print "\n/* XXXXXXXXX $display XXXXXXXXX */\n";
print css_loadfile($file, $location);
}
print NL;
if ( $cssData['encapsulate'] === true ) print '} /* /@media ';
else print '/*';
print ' END '.$cssData['mediatype'].' styles */'.NL;
}
// end output buffering and get contents
$css = ob_get_contents();
ob_end_clean();
@ -336,6 +353,41 @@ function css_fixreplacementurls($replacements, $location) {
return $replacements;
}
/**
* Wrapper for the files, content and mediatype for the event CSS_STYLES_INCLUDED
*
* @author Gerry Weißbach <gerry.w@gammaproduction.de>
*
* @param string $mediatype type ofthe current media files/content set
* @param array $files set of files that define the current mediatype
* @return array
*/
function css_filewrapper($mediatype, $files=array()){
return array(
'files' => $files,
'mediatype' => $mediatype,
'encapsulate' => $mediatype != 'all',
'encapsulationPrefix' => '@media '.$mediatype
);
}
/**
* Prints the @media encapsulated default styles of DokuWiki
*
* @author Gerry Weißbach <gerry.w@gammaproduction.de>
*
* This function is being called by a CSS_STYLES_INCLUDED event
* The event can be distinguished by the mediatype which is:
* DW_DEFAULT
*/
function css_defaultstyles(){
// print the default classes for interwiki links and file downloads
print '@media screen {';
css_interwiki();
css_filetypes();
print '}';
}
/**
* Prints classes for interwikilinks
*
@ -530,7 +582,7 @@ function css_datauri($match){
if($size && $size < $conf['cssdatauri']){
$data = base64_encode(file_get_contents($local));
}
if($data){
if (!empty($data)){
$url = 'data:image/'.$ext.';base64,'.$data;
}else{
$url = $base.$url;

View File

@ -28,7 +28,7 @@ if(file_exists(DOKU_INC.'favicon.ico')){
header('Content-Type: application/opensearchdescription+xml; charset=utf-8');
echo '<?xml version="1.0"?>'.NL;
echo '<OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/">'.NL;
echo ' <ShortName>'.htmlspecialchars($conf['title']).'</ShortName>'.NL;
echo ' <ShortName>'.hsc($conf['title']).'</ShortName>'.NL;
echo ' <Image width="16" height="16" type="image/x-icon">'.$ico.'</Image>'.NL;
echo ' <Url type="text/html" template="'.DOKU_URL.DOKU_SCRIPT.'?do=search&amp;id={searchTerms}" />'.NL;
echo ' <Url type="application/x-suggestions+json" template="'.

View File

@ -2,7 +2,7 @@
/**
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
*
* @author Inko Illarramendi <inko.i.a@gmail.com>
* @author Zigor Astarbe <astarbe@gmail.com>
*/

View File

@ -2,7 +2,7 @@
/**
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
*
* @author José Carlos Monteiro <jose.c.monteiro@netcabo.pt>
* @author José Monteiro <Jose.Monteiro@DoWeDo-IT.com>
* @author Enrico Nicoletto <liverig@gmail.com>

View File

@ -2,7 +2,7 @@
/**
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
*
* @author Per Foreby <per@foreby.se>
* @author Nicklas Henriksson <nicklas[at]nihe.se>
* @author Håkan Sandell <hakan.sandell@home.se>

View File

@ -2,7 +2,7 @@
/**
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
*
* @author Oleksiy Voronin <ovoronin@gmail.com>
* @author serg_stetsuk@ukr.net
* @author okunia@gmail.com

View File

@ -2,7 +2,9 @@
/**
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
*
* @author Zigor Astarbe <astarbe@gmail.com>
* @author Osoitz <oelkoro@gmail.com>
*/
$lang['authpwdexpire'] = 'Zure pasahitza %d egun barru iraungiko da, laster aldatu beharko zenuke.';
$lang['connectfail'] = 'Huts egin du Active Directory zerbitzarira konektatzean';

View File

@ -0,0 +1,13 @@
<?php
/**
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
* @author Osoitz <oelkoro@gmail.com>
*/
$lang['account_suffix'] = 'Zure kontuaren atzizkia. Esaterako <code>@niredomeinua.eus</code>';
$lang['admin_password'] = 'Goiko erabiltzailearen pasahitza';
$lang['use_ssl'] = 'SSL konexioa darabilzu? Hala bada, ez gaitu TLS behean.';
$lang['use_tls'] = 'Erabili TLS konexioa? Erabiltzekotan, ez gaitu SSL goian.';
$lang['expirywarn'] = 'Pasahitza iraungitzear dagoela abisatzeko aurretia egunetan. 0 desgaitzeko.';
$lang['update_mail'] = 'Baimendu erabiltzaileei bere email helbidea eguneratzea?';

View File

@ -2,7 +2,7 @@
/**
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
*
* @author Paulo Silva <paulotsilva@yahoo.com>
* @author André Neves <drakferion@gmail.com>
* @author Paulo Carmino <contato@paulocarmino.com>

View File

@ -2,11 +2,12 @@
/**
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
*
* @author André Neves <drakferion@gmail.com>
* @author Murilo <muriloricci@hotmail.com>
* @author Paulo Silva <paulotsilva@yahoo.com>
* @author Guido Salatino <guidorafael23@gmail.com>
* @author Guilherme <guilherme.sa@hotmail.com>
*/
$lang['account_suffix'] = 'O sufixo da sua conta. Por exemplo, <code>@my.domain.org</code>';
$lang['base_dn'] = 'Sua base DN. Eg. <code> DC=meu, DC=dominio, DC=org </code>';
@ -21,3 +22,4 @@ $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_mail'] = 'Permitir que usuários atualizem seus endereços de e-mail?';

View File

@ -2,7 +2,11 @@
/**
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
*
* @author Smorkster Andersson smorkster@gmail.com
* @author Tor Härnqvist <tor@harnqvist.se>
*/
$lang['authpwdexpire'] = 'Ditt lösenord kommer att bli ogiltigt om %d dagar, du bör ändra det snart.';
$lang['passchangefail'] = 'Kunde inte ändra lösenord. Kanske var inte lösenordspolicyn uppfylld?';
$lang['userchangefail'] = 'Kunde inte ändra användaregenskaper. Kanske har ditt konto inte behörighet att göra ändringar?';
$lang['connectfail'] = 'Kunde inte ansluta till Active Directory-server.';

View File

@ -2,11 +2,14 @@
/**
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
*
* @author Smorkster Andersson smorkster@gmail.com
* @author Tor Härnqvist <tor@harnqvist.se>
*/
$lang['account_suffix'] = 'Ditt konto suffix. T.ex. <code>min.domän.org</code>';
$lang['domain_controllers'] = 'En kommaseparerad lista av Domain controllers. T ex <code>srv1.domain.org,srv2.domain.org</code>';
$lang['admin_password'] = 'Lösenord för användare ovan.';
$lang['sso'] = 'Ska Single-Sign-On via Kerberos eller NTLM användas?';
$lang['use_ssl'] = 'Använda SSL anslutning? Om använd, möjliggör inte TLS nedan.';
$lang['use_tls'] = 'Använda TLS anslutning? Om använd, möjliggör inte SSL ovan.';
$lang['expirywarn'] = 'Antakl dagar i förväg att varna användare om utgående lösenord. 0 för att inaktivera.';

View File

@ -0,0 +1,9 @@
<?php
/**
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
* @author Nina Zolotova <nina-z@i.ua>
*/
$lang['userchangefail'] = 'Не вийшло змінити атрибути користувача. Можливо, у вашого акаунту немає дозволу на внесення змін?';
$lang['connectfail'] = 'Не вийшло з\'єднатися с сервером Active Directory.';

View File

@ -0,0 +1,11 @@
<?php
/**
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
* @author Nina Zolotova <nina-z@i.ua>
*/
$lang['use_ssl'] = 'Використовуєте SSL-з\'єднання? Якщо так, не вмикайте TLS нижче.';
$lang['use_tls'] = 'Використовуєте TLS-з\'єднання? Якщо так, не вмикайте SSL нижче.';
$lang['update_name'] = 'Дозволити користувачам оновлювати ім\'я AD, яке відображається?';
$lang['update_mail'] = 'Дозволити користувачам оновлювати їх адреси електронної пошлти?';

View File

@ -0,0 +1,8 @@
<?php
/**
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
* @author Osoitz <oelkoro@gmail.com>
*/
$lang['connectfail'] = 'LDAP ezin da konektaku: %s';

View File

@ -0,0 +1,11 @@
<?php
/**
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
* @author Osoitz <oelkoro@gmail.com>
*/
$lang['version'] = 'Erabiltzen duzun proitokoloaren bertsioa. <code>3</code> gisa jarri behar zenezake';
$lang['starttls'] = 'Erabili TLS konexioak?';
$lang['bindpw'] = 'Goiko erabiltzailearen pasahitza';
$lang['referrals_o_-1'] = 'erabili lehenetsitakoa';

View File

@ -2,7 +2,7 @@
/**
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
*
* @author Paulo Carmino <contato@paulocarmino.com>
*/
$lang['connectfail'] = 'Não foi possível conectar o LDAP: %s';

View File

@ -2,7 +2,7 @@
/**
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
*
* @author André Neves <drakferion@gmail.com>
* @author Guido Salatino <guidorafael23@gmail.com>
* @author Romulo Pereira <romuloccomp@gmail.com>

View File

@ -2,7 +2,7 @@
/**
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
*
* @author Smorkster Andersson smorkster@gmail.com
* @author Tor Härnqvist <tor.harnqvist@gmail.com>
*/

View File

@ -0,0 +1,8 @@
<?php
/**
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
* @author Nina Zolotova <nina-z@i.ua>
*/
$lang['connectfail'] = 'LDAP не може встановити з\'єднання: %s';

View File

@ -0,0 +1,9 @@
<?php
/**
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
* @author Nina Zolotova <nina-z@i.ua>
*/
$lang['starttls'] = 'Використовуєте TLS з\'єднання?';
$lang['referrals_o_-1'] = 'Використовувати за замовчуванням';

View File

@ -0,0 +1,10 @@
<?php
/**
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
* @author Osoitz <oelkoro@gmail.com>
*/
$lang['connectfail'] = 'Datu-basera konektatzeak huts egin du';
$lang['userexists'] = 'Badago izen hori duen erabiltzaile bat.';
$lang['usernotexists'] = 'Ez dago izen hori duen erabiltzailerik.';

View File

@ -0,0 +1,14 @@
<?php
/**
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
* @author Osoitz <oelkoro@gmail.com>
*/
$lang['server'] = 'Zure MYSQL zerbitzaria';
$lang['user'] = 'MYSQL erabiltzaile-izena';
$lang['password'] = 'Goiko erabiltzailearen pasahitza';
$lang['database'] = 'Erabili beharreko datu-basea';
$lang['charset'] = 'Datu-basean erabilitako karaktere kodeketa';
$lang['forwardClearPass'] = 'Pasatu erabiltzaileen pasahitza testu argian beheko SQL esaldiei, passcrypt aukera erabili ordez';
$lang['debug_o_0'] = 'bat ere ez';

View File

@ -2,9 +2,11 @@
/**
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
*
* @author Paulo Carmino <contato@paulocarmino.com>
* @author Guilherme <guilherme.sa@hotmail.com>
*/
$lang['connectfail'] = 'Falha ao conectar com o banco de dados.';
$lang['userexists'] = 'Desculpe, esse login já está sendo usado.';
$lang['usernotexists'] = 'Desculpe, esse login não existe.';
$lang['writefail'] = 'Incapaz de modificar dados do usuário. Favor informar ao Wiki-Admin.';

View File

@ -2,7 +2,7 @@
/**
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
*
* @author André Neves <drakferion@gmail.com>
* @author Guido Salatino <guidorafael23@gmail.com>
*/

View File

@ -2,7 +2,7 @@
/**
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
*
* @author Smorkster Andersson smorkster@gmail.com
*/
$lang['server'] = 'Din MySQL server';

View File

@ -0,0 +1,10 @@
<?php
/**
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
* @author Nina Zolotova <nina-z@i.ua>
*/
$lang['connectfail'] = 'Не вдалося з\'єднатися з базою даних.';
$lang['userexists'] = 'Вибачте, користувач з таким логіном вже існує.';
$lang['usernotexists'] = 'Вибачте, такого користувача не існує.';

View File

@ -2,7 +2,7 @@
/**
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
*
* @author André Neves <drakferion@gmail.com>
* @author Guido Salatino <guidorafael23@gmail.com>
*/

View File

@ -2,7 +2,7 @@
/**
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
*
* @author Smorkster Andersson smorkster@gmail.com
*/
$lang['server'] = 'Din PostgreSQL server';

View File

@ -0,0 +1,8 @@
<?php
/**
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
* @author Nina Zolotova <nina-z@i.ua>
*/
$lang['database'] = 'Використовувати базу даних';

View File

@ -1,6 +1,7 @@
<?php
/**
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
*/
$lang['userexists'] = 'Barkatu, izen bereko erabiltzailea existitzen da.';
$lang['userexists'] = 'Barkatu, izen bereko erabiltzailea existitzen da.';

View File

@ -2,8 +2,10 @@
/**
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
*
* @author Paulo Carmino <contato@paulocarmino.com>
* @author Guilherme <guilherme.sa@hotmail.com>
*/
$lang['userexists'] = 'Este utilizador já está inscrito. Por favor escolha outro nome de utilizador.';
$lang['usernotexists'] = 'Desculpe, esse login não existe.';
$lang['writefail'] = 'Incapaz de modificar dados do usuário. Favor informar ao Wiki-Admin.';

View File

@ -1,6 +1,7 @@
<?php
/**
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
*/
$lang['userexists'] = 'Det finns redan en användare med det användarnamnet.';
$lang['userexists'] = 'Det finns redan en användare med det användarnamnet.';

View File

@ -2,6 +2,8 @@
/**
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
*
* @author Nina Zolotova <nina-z@i.ua>
*/
$lang['userexists'] = 'Користувач з таким іменем вже існує.';
$lang['usernotexists'] = 'Вибачте, такого користувача не існує.';

View File

@ -15,6 +15,8 @@ class plugin_config_configuration_test extends DokuWikiTest {
* Load config files
*/
function __construct() {
parent::__construct();
$this->config = dirname(__FILE__).'/data/config.php';
$this->meta = dirname(__FILE__).'/data/metadata.php';
require_once(dirname(__FILE__).'/../settings/config.class.php');

View File

@ -24,23 +24,23 @@ require_once(PLUGIN_SELF.'settings/extra.class.php'); // settings classes spec
*/
class admin_plugin_config extends DokuWiki_Admin_Plugin {
var $_file = PLUGIN_METADATA;
var $_config = null;
var $_input = null;
var $_changed = false; // set to true if configuration has altered
var $_error = false;
var $_session_started = false;
var $_localised_prompts = false;
protected $_file = PLUGIN_METADATA;
protected $_config = null;
protected $_input = null;
protected $_changed = false; // set to true if configuration has altered
protected $_error = false;
protected $_session_started = false;
protected $_localised_prompts = false;
/**
* @return int
*/
function getMenuSort() { return 100; }
public function getMenuSort() { return 100; }
/**
* handle user request
*/
function handle() {
public function handle() {
global $ID, $INPUT;
if(!$this->_restore_session() || $INPUT->int('save') != 1 || !checkSecurityToken()) {
@ -86,7 +86,7 @@ class admin_plugin_config extends DokuWiki_Admin_Plugin {
/**
* output appropriate html
*/
function html() {
public function html() {
$allow_debug = $GLOBALS['conf']['allowdebug']; // avoid global $conf; here.
global $lang;
global $ID;
@ -225,7 +225,7 @@ class admin_plugin_config extends DokuWiki_Admin_Plugin {
/**
* @return boolean true - proceed with handle, false - don't proceed
*/
function _restore_session() {
protected function _restore_session() {
// dokuwiki closes the session before act_dispatch. $_SESSION variables are all set,
// however they can't be changed without starting the session again
@ -251,14 +251,14 @@ class admin_plugin_config extends DokuWiki_Admin_Plugin {
return true;
}
function _close_session() {
protected function _close_session() {
if ($this->_session_started) session_write_close();
}
/**
* @param bool $prompts
*/
function setupLocale($prompts=false) {
public function setupLocale($prompts=false) {
parent::setupLocale();
if (!$prompts || $this->_localised_prompts) return;
@ -271,7 +271,7 @@ class admin_plugin_config extends DokuWiki_Admin_Plugin {
/**
* @return bool
*/
function _setup_localised_plugin_prompts() {
protected function _setup_localised_plugin_prompts() {
global $conf;
$langfile = '/lang/'.$conf['lang'].'/settings.php';
@ -328,7 +328,7 @@ class admin_plugin_config extends DokuWiki_Admin_Plugin {
*
* @return array
*/
function getTOC() {
public function getTOC() {
if (is_null($this->_config)) { $this->_config = new configuration($this->_file); }
$this->setupLocale(true);
@ -387,9 +387,18 @@ class admin_plugin_config extends DokuWiki_Admin_Plugin {
* @param string $id
* @param string $text
*/
function _print_h1($id, $text) {
protected function _print_h1($id, $text) {
ptln('<h1 id="'.$id.'">'.$text.'</h1>');
}
/**
* Adds a translation to this plugin's language array
*
* @param string $key
* @param string $value
*/
public function addLang($key, $value) {
if (!$this->localised) $this->setupLocale();
$this->lang[$key] = $value;
}
}

View File

@ -1,9 +1,11 @@
<?php
/**
* Basque language file
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
* @author Inko Illarramendi <inko.i.a@gmail.com>
* @author Zigor Astarbe <astarbe@gmail.com>
* @author Osoitz <oelkoro@gmail.com>
*/
$lang['menu'] = 'Konfigurazio Ezarpenak';
$lang['error'] = 'Ezarpenak ez dira eguneratu balio oker bat dela eta, mesedez errepasatu aldaketak eta berriz bidali. <br />Balio okerra(k) ertz gorriz inguratuak erakutsiko dira. ';

View File

@ -124,7 +124,7 @@ $lang['target____media'] = 'Cible pour liens média';
$lang['target____windows'] = 'Cible pour liens vers partages Windows';
$lang['mediarevisions'] = 'Activer les révisions (gestion de versions) des médias';
$lang['refcheck'] = 'Vérifier si un média est toujours utilisé avant de le supprimer';
$lang['gdlib'] = 'Version de la librairie GD';
$lang['gdlib'] = 'Version de la bibliothèque GD';
$lang['im_convert'] = 'Chemin vers l\'outil de conversion ImageMagick';
$lang['jpg_quality'] = 'Qualité de la compression JPEG (0-100)';
$lang['fetchsize'] = 'Taille maximale (en octets) que fetch.php peut télécharger depuis une URL tierce (par exemple pour conserver en cache et redimensionner une image tierce)';
@ -187,7 +187,7 @@ $lang['userewrite_o_2'] = 'Interne à DokuWiki';
$lang['deaccent_o_0'] = 'off';
$lang['deaccent_o_1'] = 'supprimer les accents';
$lang['deaccent_o_2'] = 'convertir en caractères latins';
$lang['gdlib_o_0'] = 'Librairie GD non disponible';
$lang['gdlib_o_0'] = 'Bibliothèque GD non disponible';
$lang['gdlib_o_1'] = 'version 1.x';
$lang['gdlib_o_2'] = 'auto-détectée';
$lang['rss_type_o_rss'] = 'RSS 0.91';

View File

@ -139,6 +139,10 @@ $lang['renderer_xhtml'] = 'Mehanizam koji se koristi za slaganje osnovnog
$lang['renderer__core'] = '%s (dokuwiki jezgra)';
$lang['renderer__plugin'] = '%s (dodatak)';
$lang['dnslookups'] = 'Da li da DokuWiki potraži ime računala za udaljenu IP adresu korisnik koji je izmijenio stranicu. Ako imate spor ili neispravan DNS server, nemojte koristiti ovu funkcionalnost, onemogućite ovu opciju';
$lang['jquerycdn'] = 'Da li da se jQuery i jQuery UI script datoteke učitavaju sa CDN? To proizvodi dodatne HTTP zahtjeve, ali datoteke se mogu brže učitati i korisnici ih već mogu imati učitane u od ranije.';
$lang['jquerycdn_o_0'] = 'Bez CDN, samo lokalna dostava';
$lang['jquerycdn_o_jquery'] = 'CDN na code.jquery.com';
$lang['jquerycdn_o_cdnjs'] = 'CDN na cdnjs.com';
$lang['proxy____host'] = 'Proxy poslužitelj - adresa';
$lang['proxy____port'] = 'Proxy poslužitelj - port';
$lang['proxy____user'] = 'Proxy poslužitelj - korisničko ime';

View File

@ -10,6 +10,7 @@
* @author erial2@gmail.com
* @author Myeongjin <aranet100@gmail.com>
* @author Erial <erial2@gmail.com>
* @author S.H. Lee <tuders@naver.com>
*/
$lang['menu'] = '환경 설정';
$lang['error'] = '잘못된 때문에 설정을 바꿀 없습니다, 바뀜을 검토하고 다시 제출하세요.
@ -145,6 +146,10 @@ $lang['renderer_xhtml'] = '주요 (xhtml) 위키 출력에 사용할 렌
$lang['renderer__core'] = '%s (도쿠위키 코어)';
$lang['renderer__plugin'] = '%s (플러그인)';
$lang['dnslookups'] = '도쿠위키가 문서를 편집하는 사용자의 원격 IP 주소에 대한 호스트 이름을 조회합니다. 서버가 느리거나 DNS 서버를 작동하지 않거나 이 기능을 원하지 않으면, 이 옵션을 비활성화하세요';
$lang['jquerycdn'] = '제이쿼리(jQuery)와 제이쿼리UI 스크립트 파일을 컨텐츠전송네트워크(CDN)에서 불러와야만 합니까? 이것은 추가적인 HTTP요청을 합니다. 하지만 파일이 빨리 불러지고 캐쉬에 저장되게 할 수 있습니다.';
$lang['jquerycdn_o_0'] = '컨텐츠전송네트워크(CDN) 사용 안 함. 로컬 전송만 함';
$lang['jquerycdn_o_jquery'] = '\'code.jquery.com\' 의 컨텐츠전송네트워크(CDN) 사용';
$lang['jquerycdn_o_cdnjs'] = '\'cdnjs.com\' 의 컨텐츠전송네트워크(CDN) 사용';
$lang['proxy____host'] = '프록시 서버 이름';
$lang['proxy____port'] = '프록시 포트';
$lang['proxy____user'] = '프록시 사용자 이름';

View File

@ -10,6 +10,7 @@
* @author José Campos zecarlosdecampos@gmail.com
* @author Paulo Carmino <contato@paulocarmino.com>
* @author Alfredo Silva <alfredo.silva@sky.com>
* @author Guilherme <guilherme.sa@hotmail.com>
*/
$lang['menu'] = 'Configuração';
$lang['error'] = 'Parâmetros de Configuração não actualizados devido a valores inválidos. Por favor, reveja as modificações que pretende efectuar antes de re-submetê-las.<br /> Os valores incorrectos serão mostrados dentro de uma "moldura" vermelha.';

View File

@ -1,8 +1,8 @@
<?php
/**
* swedish language file
*
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
* @author Per Foreby <per@foreby.se>
* @author Nicklas Henriksson <nicklas[at]nihe.se>
* @author Håkan Sandell <hakan.sandell[at]mydata.se>
@ -17,6 +17,7 @@
* @author Håkan Sandell <hakan.sandell@home.se>
* @author mikael@mallander.net
* @author Smorkster Andersson smorkster@gmail.com
* @author Tor Härnqvist <tor@harnqvist.se>
*/
$lang['menu'] = 'Hantera inställningar';
$lang['error'] = 'Inställningarna uppdaterades inte grund av ett felaktigt värde. Titta igenom dina ändringar och försök sedan spara igen.

View File

@ -2,7 +2,7 @@
/**
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
*
* @author Oleksiy Voronin <ovoronin@gmail.com>
* @author serg_stetsuk@ukr.net
* @author okunia@gmail.com
@ -11,6 +11,7 @@
* @author Ulrikhe Lukoie <lukoie@gmail>.com
* @author Kate Arzamastseva pshns@ukr.net
* @author Maksim <nikropol@yandex.ru>
* @author Nina Zolotova <nina-z@i.ua>
*/
$lang['menu'] = 'Налаштування Вікі';
$lang['error'] = 'Параметри не збережено через помилкові значення. Будь ласка, перегляньте ваші зміни та спробуйте ще раз

View File

@ -513,11 +513,11 @@ if (!class_exists('setting')) {
/**
* Build html for label and input of setting
*
* @param DokuWiki_Plugin $plugin object of config plugin
* @param bool $echo true: show inputted value, when error occurred, otherwise the stored setting
* @param admin_plugin_config $plugin object of config plugin
* @param bool $echo true: show inputted value, when error occurred, otherwise the stored setting
* @return string[] with content array(string $label_html, string $input_html)
*/
public function html(&$plugin, $echo=false) {
public function html(admin_plugin_config $plugin, $echo=false) {
$disable = '';
if ($this->is_protected()) {
@ -565,10 +565,10 @@ if (!class_exists('setting')) {
/**
* Returns the localized prompt
*
* @param DokuWiki_Plugin $plugin object of config plugin
* @param admin_plugin_config $plugin object of config plugin
* @return string text
*/
public function prompt(&$plugin) {
public function prompt(admin_plugin_config $plugin) {
$prompt = $plugin->getLang($this->_key);
if (!$prompt) $prompt = htmlspecialchars(str_replace(array('____','_'),' ',$this->_key));
return $prompt;
@ -738,11 +738,11 @@ if (!class_exists('setting_array')) {
/**
* Build html for label and input of setting
*
* @param DokuWiki_Plugin $plugin object of config plugin
* @param admin_plugin_config $plugin object of config plugin
* @param bool $echo true: show inputted value, when error occurred, otherwise the stored setting
* @return string[] with content array(string $label_html, string $input_html)
*/
function html(&$plugin, $echo=false) {
function html(admin_plugin_config $plugin, $echo=false) {
$disable = '';
if ($this->is_protected()) {
@ -774,11 +774,11 @@ if (!class_exists('setting_string')) {
/**
* Build html for label and input of setting
*
* @param DokuWiki_Plugin $plugin object of config plugin
* @param admin_plugin_config $plugin object of config plugin
* @param bool $echo true: show inputted value, when error occurred, otherwise the stored setting
* @return string[] with content array(string $label_html, string $input_html)
*/
function html(&$plugin, $echo=false) {
function html(admin_plugin_config $plugin, $echo=false) {
$disable = '';
if ($this->is_protected()) {
@ -835,11 +835,11 @@ if (!class_exists('setting_password')) {
/**
* Build html for label and input of setting
*
* @param DokuWiki_Plugin $plugin object of config plugin
* @param admin_plugin_config $plugin object of config plugin
* @param bool $echo true: show inputted value, when error occurred, otherwise the stored setting
* @return string[] with content array(string $label_html, string $input_html)
*/
function html(&$plugin, $echo=false) {
function html(admin_plugin_config $plugin, $echo=false) {
$disable = $this->is_protected() ? 'disabled="disabled"' : '';
@ -993,11 +993,11 @@ if (!class_exists('setting_onoff')) {
/**
* Build html for label and input of setting
*
* @param DokuWiki_Plugin $plugin object of config plugin
* @param admin_plugin_config $plugin object of config plugin
* @param bool $echo true: show inputted value, when error occurred, otherwise the stored setting
* @return string[] with content array(string $label_html, string $input_html)
*/
function html(&$plugin, $echo = false) {
function html(admin_plugin_config $plugin, $echo = false) {
$disable = '';
if ($this->is_protected()) {
@ -1047,11 +1047,11 @@ if (!class_exists('setting_multichoice')) {
/**
* Build html for label and input of setting
*
* @param DokuWiki_Plugin $plugin object of config plugin
* @param admin_plugin_config $plugin object of config plugin
* @param bool $echo true: show inputted value, when error occurred, otherwise the stored setting
* @return string[] with content array(string $label_html, string $input_html)
*/
function html(&$plugin, $echo = false) {
function html(admin_plugin_config $plugin, $echo = false) {
$disable = '';
$nochoice = '';
@ -1247,11 +1247,11 @@ if (!class_exists('setting_multicheckbox')) {
/**
* Build html for label and input of setting
*
* @param DokuWiki_Plugin $plugin object of config plugin
* @param admin_plugin_config $plugin object of config plugin
* @param bool $echo true: show input value, when error occurred, otherwise the stored setting
* @return string[] with content array(string $label_html, string $input_html)
*/
function html(&$plugin, $echo=false) {
function html(admin_plugin_config $plugin, $echo=false) {
$disable = '';

View File

@ -172,20 +172,19 @@ if (!class_exists('setting_disableactions')) {
/**
* Build html for label and input of setting
*
* @param DokuWiki_Plugin $plugin object of config plugin
* @param admin_plugin_config $plugin object of config plugin
* @param bool $echo true: show inputted value, when error occurred, otherwise the stored setting
* @return array with content array(string $label_html, string $input_html)
*/
function html(&$plugin, $echo=false) {
function html(admin_plugin_config $plugin, $echo=false) {
global $lang;
// make some language adjustments (there must be a better way)
// transfer some DokuWiki language strings to the plugin
if (!$plugin->localised) $plugin->setupLocale();
$plugin->lang[$this->_key.'_revisions'] = $lang['btn_revs'];
foreach ($this->_choices as $choice)
if (isset($lang['btn_'.$choice])) $plugin->lang[$this->_key.'_'.$choice] = $lang['btn_'.$choice];
$plugin->addLang($this->_key.'_revisions', $lang['btn_revs']);
foreach ($this->_choices as $choice) {
if (isset($lang['btn_'.$choice])) $plugin->addLang($this->_key.'_'.$choice, $lang['btn_'.$choice]);
}
return parent::html($plugin, $echo);
}
@ -281,22 +280,26 @@ if (!class_exists('setting_renderer')) {
/**
* Build html for label and input of setting
*
* @param DokuWiki_Plugin $plugin object of config plugin
* @param admin_plugin_config $plugin object of config plugin
* @param bool $echo true: show inputted value, when error occurred, otherwise the stored setting
* @return array with content array(string $label_html, string $input_html)
*/
function html(&$plugin, $echo=false) {
function html(admin_plugin_config $plugin, $echo=false) {
// make some language adjustments (there must be a better way)
// transfer some plugin names to the config plugin
if (!$plugin->localised) $plugin->setupLocale();
foreach ($this->_choices as $choice) {
if (!isset($plugin->lang[$this->_key.'_o_'.$choice])) {
if (!isset($this->_prompts[$choice])) {
$plugin->lang[$this->_key.'_o_'.$choice] = sprintf($plugin->lang['renderer__core'],$choice);
foreach($this->_choices as $choice) {
if(!$plugin->getLang($this->_key . '_o_' . $choice)) {
if(!isset($this->_prompts[$choice])) {
$plugin->addLang(
$this->_key . '_o_' . $choice,
sprintf($plugin->getLang('renderer__core'), $choice)
);
} else {
$plugin->lang[$this->_key.'_o_'.$choice] = sprintf($plugin->lang['renderer__plugin'],$this->_prompts[$choice]);
$plugin->addLang(
$this->_key . '_o_' . $choice,
sprintf($plugin->getLang('renderer__plugin'), $this->_prompts[$choice])
);
}
}
}

View File

@ -51,6 +51,7 @@ class helper_plugin_extension_extension extends DokuWiki_Plugin {
* @return bool If some (local or remote) data was found
*/
public function setExtension($id) {
$id = cleanID($id);
$this->id = $id;
$this->base = $id;

View File

@ -4,6 +4,7 @@
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
* @author Felix <j.felix@mueller-donath.de>
* @author Felix Müller-Donath <j.felix@mueller-donath.de>
*/
$lang['menu'] = 'Erweiterungen verwalten';
$lang['tab_plugins'] = 'Installierte Plugins';
@ -30,3 +31,14 @@ $lang['js']['display_enabled'] = 'aktiviert';
$lang['js']['display_disabled'] = 'deaktiviert';
$lang['js']['display_updatable'] = 'Update verfügbar';
$lang['search_for'] = 'Suche Erweiterung:';
$lang['search'] = 'Suche';
$lang['screenshot'] = 'Screenshot von %s';
$lang['popularity'] = 'Popularität: %s%%';
$lang['author_hint'] = 'Suche Erweiterungen dieses Autors';
$lang['installed'] = 'Installiert:';
$lang['installed_version'] = 'Installierte Version:';
$lang['install_date'] = 'Dein letztes Update:';
$lang['available_version'] = 'Verfügbare Version:';
$lang['compatible'] = 'Kompatibel mit:';
$lang['depends'] = 'Abhängig von:';
$lang['similar'] = 'Ähnlich wie:';

View File

@ -2,11 +2,12 @@
/**
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
*
* @author Guido Salatino <guidorafael23@gmail.com>
* @author Romulo Pereira <romuloccomp@gmail.com>
* @author Paulo Carmino <contato@paulocarmino.com>
* @author Alfredo Silva <alfredo.silva@sky.com>
* @author Guilherme <guilherme.sa@hotmail.com>
*/
$lang['menu'] = 'Gerenciador de Extensões';
$lang['tab_plugins'] = 'Plugins Instalados';

View File

@ -2,7 +2,7 @@
/**
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
*
* @author Inko Illarramendi <inko.i.a@gmail.com>
* @author Zigor Astarbe <astarbe@gmail.com>
*/

View File

@ -2,7 +2,7 @@
/**
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
*
* @author Enrico Nicoletto <liverig@gmail.com>
* @author Fil <fil@meteopt.com>
* @author André Neves <drakferion@gmail.com>

View File

@ -2,7 +2,7 @@
/**
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
*
* @author Håkan Sandell <hakan.sandell@home.se>
* @author Dennis Karlsson
* @author Tormod Otter Johansson <tormod@latast.se>

View File

@ -2,7 +2,7 @@
/**
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
*
* @author serg_stetsuk@ukr.net
* @author okunia@gmail.com
* @author Oleksandr Kunytsia <okunia@gmail.com>

View File

@ -2,10 +2,11 @@
/**
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
*
* @author Inko Illarramendi <inko.i.a@gmail.com>
* @author Zigor Astarbe <astarbe@gmail.com>
* @author Yadav Gowda <yadav.gowda@gmail.com>
* @author Osoitz <oelkoro@gmail.com>
*/
$lang['menu'] = 'Berrezartze Kudeatzailea';
$lang['filter'] = 'Bilatu spam duten orriak';

View File

@ -10,6 +10,7 @@
* @author erial2@gmail.com
* @author Myeongjin <aranet100@gmail.com>
* @author Erial <erial2@gmail.com>
* @author S.H. Lee <tuders@naver.com>
*/
$lang['menu'] = '되돌리기 관리자';
$lang['filter'] = '스팸 문서 검색';

View File

@ -2,7 +2,7 @@
/**
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
*
* @author José Monteiro <Jose.Monteiro@DoWeDo-IT.com>
* @author Enrico Nicoletto <liverig@gmail.com>
* @author Fil <fil@meteopt.com>

View File

@ -2,7 +2,7 @@
/**
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
*
* @author Per Foreby <per@foreby.se>
* @author Nicklas Henriksson <nicklas[at]nihe.se>
* @author Håkan Sandell <hakan.sandell@home.se>
@ -20,6 +20,7 @@
* @author Tor Härnqvist <tor.harnqvist@gmail.com>
* @author Hans Iwan Bratt <hibratt@gmail.com>
* @author Mikael Bergström <krank23@gmail.com>
* @author Tor Härnqvist <tor@harnqvist.se>
*/
$lang['menu'] = 'Hantera återställningar';
$lang['filter'] = 'Sök efter spamsidor';

View File

@ -2,7 +2,7 @@
/**
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
*
* @author serg_stetsuk@ukr.net
* @author okunia@gmail.com
* @author Oleksandr Kunytsia <okunia@gmail.com>

View File

@ -0,0 +1,8 @@
<?php
/**
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
* @author Felix Müller-Donath <j.felix@mueller-donath.de>
*/
$lang['__highlight__'] = 'Hervorhebungsfarbe (v.a. für Suchergebnisse)';

View File

@ -2,12 +2,18 @@
/**
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
*
* @author Alfredo Silva <alfredo.silva@sky.com>
* @author Guilherme <guilherme.sa@hotmail.com>
*/
$lang['menu'] = 'Configurações de Estilo do Modelo';
$lang['js']['popup'] = 'Abrir como uma janela extra';
$lang['error'] = 'Desculpe, este modelo não suporta esta funcionalidade.';
$lang['btn_preview'] = 'Pré-visualizar alterações';
$lang['btn_save'] = 'Guardar alterações';
$lang['btn_reset'] = 'Reiniciar alterações atuais';
$lang['__text__'] = 'Cor do texto principal';
$lang['__background__'] = 'Cor principal do fundo';
$lang['__text_alt__'] = 'Cor alternativa de texto';
$lang['__background_alt__'] = 'Cor alternativa de fundo';
$lang['__text_neu__'] = 'Cor neutra de texto';

Some files were not shown because too many files have changed in this diff Show More