Merge branch 'master' into configmgr_improvements

This commit is contained in:
Christopher Smith 2013-08-03 00:40:34 +02:00
commit b8b64ed772
153 changed files with 13961 additions and 1398 deletions

View File

@ -1,6 +1,6 @@
====== DokuWiki Test Suite ======
This is the test suit to automatically test various parts of DokuWiki.
This is the test suite to automatically test various parts of DokuWiki.
===== Requirements =====
@ -9,22 +9,33 @@ This is the test suit to automatically test various parts of DokuWiki.
===== PHPUnit Installation ======
via PEAR:
==== via PEAR installer ====
pear config-set auto_discover 1
pear upgrade
pear install pear.phpunit.de/PHPUnit
on Windows:
==== via Composer ====
FIXME
Include a composer.json file in your project, which can be as minimal as:
<code>
{
"require-dev": {
"phpunit/phpunit": "3.7.*"
}
}
</code>
==== via PHP archive (PHAR) ====
Download http://pear.phpunit.de/get/phpunit.phar and make it executable on your system.
===== Running all Tests =====
===== Running all tests =====
Just change to the ''_test'' directory and run phpunit:
cd _testing/
cd _test/
phpunit
PHPUnit will fail on some systems with a //headers already sent// error.

View File

@ -0,0 +1,179 @@
<?php
class Mock_Auth_Plugin extends DokuWiki_Auth_Plugin {
public $loggedOff = false;
public function __construct($canDeleteUser = true) {
$this->cando['delUser'] = $canDeleteUser;
}
public function checkPass($user, $pass) {
return $pass == 'password';
}
public function deleteUsers($users) {
return in_array($_SERVER['REMOTE_USER'], $users);
}
public function logoff() {
$this->loggedOff = true;
}
}
class auth_deleteprofile_test extends DokuWikiTest {
/*
* Tests:
*
* 1. It works and the user is logged off
* 2. Password matches when config requires it
* 3,4. Auth plugin can prevent & wiki config can prevent
* 5. Any of invalid security token, missing/not set 'delete' flag, missing/unchecked 'confirm_delete'
*
*/
function test_success() {
global $ACT, $INPUT, $conf, $auth;
$ACT = 'profile_delete';
$conf['profileconfirm'] = false;
$_SERVER['REMOTE_USER'] = 'testuser';
$input = array(
'do' => $ACT,
'sectok' => getSecurityToken(),
'delete' => '1',
'confirm_delete' => '1',
);
$_POST = $input;
$_REQUEST = $input;
$INPUT = new Input();
$auth = new Mock_Auth_Plugin();
$this->assertTrue(auth_deleteprofile());
$this->assertTrue($auth->loggedOff);
}
function test_confirmation_required() {
global $ACT, $INPUT, $conf, $auth;
$ACT = 'profile_delete';
$conf['profileconfirm'] = true;
$_SERVER['REMOTE_USER'] = 'testuser';
$input = array(
'do' => $ACT,
'sectok' => getSecurityToken(),
'delete' => '1',
'confirm_delete' => '1',
'oldpass' => 'wrong',
);
$_POST = $input;
$_REQUEST = $input;
$INPUT = new Input();
$auth = new Mock_Auth_Plugin();
// password check required - it fails, so don't delete profile
$this->assertFalse(auth_deleteprofile());
// now it passes, we're good to go
$INPUT->set('oldpass','password');
$INPUT->post->set('oldpass','password');
$this->assertTrue(auth_deleteprofile());
}
function test_authconfig_prevents() {
global $ACT, $INPUT, $conf, $auth;
$ACT = 'profile_delete';
$conf['profileconfirm'] = false;
$_SERVER['REMOTE_USER'] = 'testuser';
$input = array(
'do' => $ACT,
'sectok' => getSecurityToken(),
'delete' => '1',
'confirm_delete' => '1',
);
$_POST = $input;
$_REQUEST = $input;
$INPUT = new Input();
$auth = new Mock_Auth_Plugin(false);
$conf['disableactions'] = '';
$this->assertFalse(auth_deleteprofile());
}
function test_wikiconfig_prevents() {
global $ACT, $INPUT, $conf, $auth;
$ACT = 'profile_delete';
$conf['profileconfirm'] = false;
$_SERVER['REMOTE_USER'] = 'testuser';
$input = array(
'do' => $ACT,
'sectok' => getSecurityToken(),
'delete' => '1',
'confirm_delete' => '1',
);
$_POST = $input;
$_REQUEST = $input;
$INPUT = new Input();
$auth = new Mock_Auth_Plugin();
$conf['disableactions'] = 'profile_delete';
$this->assertFalse(actionOK('profile_delete'));
$this->assertTrue($auth->canDo('delUser'));
$this->assertFalse(auth_deleteprofile());
}
function test_basic_parameters() {
global $ACT, $INPUT, $conf, $auth;
$ACT = 'profile_delete';
$conf['profileconfirm'] = true;
$_SERVER['REMOTE_USER'] = 'testuser';
$input = array(
'do' => $ACT,
'sectok' => getSecurityToken(),
'delete' => '1',
'confirm_delete' => '1',
'oldpass' => 'password',
);
$_POST = $input;
$_REQUEST = $input;
$input_foundation = new Input();
$auth = new Mock_Auth_Plugin();
$INPUT = clone $input_foundation;
$INPUT->remove('delete');
$this->assertFalse(auth_deleteprofile());
$INPUT = clone $input_foundation;
$INPUT->set('sectok','wrong');
$this->assertFalse(auth_deleteprofile());
$INPUT = clone $input_foundation;
$INPUT->remove('confirm_delete');
$this->assertFalse(auth_deleteprofile());
}
}

View File

@ -0,0 +1,12 @@
<?php
/**
* Tests the auth_decrypt and auth_encrypt-functions
*/
class auth_encryption_test extends DokuWikiTest {
function testDeEncrypt() {
$data = "OnA28asdfäakgß*+!\"+*";
$secret = "oeaf1öasdöflk§";
$this->assertEquals($data, auth_decrypt(auth_encrypt($data, $secret), $secret));
}
}

View File

@ -0,0 +1,20 @@
<?php
/**
* Tests the random generator functions
*/
class auth_random_test extends DokuWikiTest {
function testRandomRange() {
$rand = auth_random(300, 2000);
$this->assertTrue($rand <= 2000, 'The generated number was above the limit');
$this->assertTrue($rand >= 300, 'The generate number was too low');
}
function testLargeRandoms() {
$min = (1 << 30);
$max = $min + (1 << 33) + 17;
$rand = auth_random($min, $max);
$this->assertTrue($rand >= $min, 'The generated number was too low');
$this->assertTrue($rand <= $max, 'The generated number was too high');
}
}

View File

@ -0,0 +1,77 @@
<?php
// must be run within Dokuwiki
if (!defined('DOKU_INC')) die();
/**
* Test cases for the link index
*
* @author Michael Hamann <michael@content-space.de>
*/
class fultext_backlinks_test extends DokuWikiTest {
public function test_internallink() {
saveWikiText('test:internallinks', '[[internälLink]] [[..:internal link]]', 'Test initialization');
idx_addPage('test:internallinks');
$this->assertEquals(array('test:internallinks'), ft_backlinks('internal_link'));
$this->assertEquals(array('test:internallinks'), ft_backlinks('test:internaellink'));
}
public function test_links_in_footnotes() {
saveWikiText('test:link_footnotes', '(([[footnote]] [[:foÖtnotel]]))', 'Test initialization');
idx_addPage('test:link_footnotes');
$this->assertEquals(array('test:link_footnotes'), ft_backlinks('test:footnote'));
$this->assertEquals(array('test:link_footnotes'), ft_backlinks('fooetnotel'));
}
public function test_links_in_hidden_pages() {
global $conf;
$conf['hidepages'] = 'hidden:.*';
saveWikiText('hidden:links', '[[wiki:hiddenlink|linktitle]]', 'Test initialization');
idx_addPage('hidden:links');
saveWikiText('visible:links', '[[wiki:hiddenlink]]', 'Test initialization');
idx_addPage('visible:links');
$this->assertEquals(array('visible:links'), ft_backlinks('wiki:hiddenlink'));
$this->assertEquals(array('visible:links'), ft_backlinks('wiki:hiddenlink', false));
$this->assertEquals(array('hidden:links', 'visible:links'), ft_backlinks('wiki:hiddenlink', true));
}
public function test_links_in_protected_pages() {
global $conf;
global $AUTH_ACL;
$conf['superuser'] = 'alice';
$conf['useacl'] = 1;
$AUTH_ACL = array(
'* @ALL 8',
'secret:* @ALL 0',
);
$_SERVER['REMOTE_USER'] = 'eve';
saveWikiText('secret:links', '[[wiki:secretlink]]', 'Test initialization');
idx_addPage('secret:links');
saveWikiText('public:links', '[[wiki:secretlink]]', 'Test initialization');
idx_addPage('public:links');
$this->assertEquals(array('public:links'), ft_backlinks('wiki:secretlink'));
$this->assertEquals(array('public:links'), ft_backlinks('wiki:secretlink', false));
$this->assertEquals(array('public:links', 'secret:links'), ft_backlinks('wiki:secretlink', true));
}
public function test_links_in_deleted_pages() {
saveWikiText('test:internallinks', '[[internallink]] [[..:internal link]]', 'Test initialization');
idx_addPage('test:internallinks');
$this->assertEquals(array('test:internallinks'), ft_backlinks('test:internallink'));
$this->assertEquals(array('test:internallinks'), ft_backlinks('internal_link'));
saveWikiText('test:internallinks', '', 'Deleted');
$this->assertEquals(array(), ft_backlinks('test:internallink'));
$this->assertEquals(array(), ft_backlinks('internal_link'));
}
}

View File

@ -0,0 +1,77 @@
<?php
// must be run within Dokuwiki
if (!defined('DOKU_INC')) die();
/**
* Test cases for the media usage index
*
* @author Michael Hamann <michael@content-space.de>
*/
class fultext_mediause_test extends DokuWikiTest {
public function test_internalmedia() {
saveWikiText('test:internalmedia_usage', '{{internalmedia.png}} {{..:internal media.png}}', 'Test initialization');
idx_addPage('test:internalmedia_usage');
$this->assertEquals(array('test:internalmedia_usage'), ft_mediause('internal_media.png'));
$this->assertEquals(array('test:internalmedia_usage'), ft_mediause('test:internalmedia.png'));
}
public function test_media_in_links() {
saveWikiText('test:medialinks', '[[doku>wiki:dokuwiki|{{wiki:logo.png}}]] [[http://www.example.com|{{example.png?200x800}}]]', 'Test init');
idx_addPage('test:medialinks');
$this->assertEquals(array('test:medialinks'), ft_mediause('wiki:logo.png'));
$this->assertEquals(array('test:medialinks'), ft_mediause('test:example.png'));
}
public function test_media_in_footnotes() {
saveWikiText('test:media_footnotes', '(({{footnote.png?20x50}} [[foonote|{{:footlink.png}}]]))', 'Test initialization');
idx_addPage('test:media_footnotes');
$this->assertEquals(array('test:media_footnotes'), ft_mediause('test:footnote.png'));
$this->assertEquals(array('test:media_footnotes'), ft_mediause('footlink.png'));
}
public function test_media_in_hidden_pages() {
global $conf;
$conf['hidepages'] = 'hidden:.*';
saveWikiText('hidden:medias', '[[doku>wiki:dokuwiki|{{wiki:hiddenlogo.png}}]]', 'Test initialization');
idx_addPage('hidden:medias');
$this->assertEquals(array(), ft_mediause('wiki:hiddenlogo.png'));
$this->assertEquals(array(), ft_mediause('wiki:hiddenlogo.png', false));
$this->assertEquals(array('hidden:medias'), ft_mediause('wiki:hiddenlogo.png', true));
}
public function test_media_in_protected_pages() {
global $conf;
global $AUTH_ACL;
$conf['superuser'] = 'alice';
$conf['useacl'] = 1;
$AUTH_ACL = array(
'* @ALL 8',
'secret:* @ALL 0',
);
$_SERVER['REMOTE_USER'] = 'eve';
saveWikiText('secret:medias', '[[doku>wiki:dokuwiki|{{wiki:secretlogo.png}}]]', 'Test initialization');
idx_addPage('secret:medias');
$this->assertEquals(array(), ft_mediause('wiki:secretlogo.png'));
$this->assertEquals(array(), ft_mediause('wiki:secretlogo.png', false));
$this->assertEquals(array('secret:medias'), ft_mediause('wiki:secretlogo.png', true));
}
public function test_media_in_deleted_pages() {
saveWikiText('test:internalmedia_usage', '{{internalmedia.png}} {{..:internal media.png}}', 'Test initialization');
idx_addPage('test:internalmedia_usage');
saveWikiText('test:internalmedia_usage', '', 'Deleted');
$this->assertEquals(array(), ft_mediause('internal_media.png'));
$this->assertEquals(array(), ft_mediause('test:internalmedia.png'));
}
}

View File

@ -122,9 +122,14 @@ class httpclient_http_test extends DokuWikiTest {
function test_maxbody(){
$http = new HTTPClient();
$http->max_bodysize = 250;
// this should abort completely
$data = $http->get($this->server.'/stream/30');
$this->assertTrue($data === false, 'HTTP response');
// this should read just the needed bytes
$http->max_bodysize_abort = false;
$http->keep_alive = false;
$data = $http->get($this->server.'/stream/30');
$this->assertFalse($data === false, 'HTTP response');
/* should read no more than max_bodysize+1 */
@ -215,5 +220,55 @@ class httpclient_http_test extends DokuWikiTest {
$data = $http->get('http://www.wikimatrix.org/cfeed/dokuwiki/-/-');
$this->assertTrue($data !== false, $http->error);
}
function test_postencode(){
$http = new HTTPClient();
// check simple data
$data = array(
'öä?' => 'öä?',
'foo' => 'bang'
);
$this->assertEquals(
'%C3%B6%C3%A4%3F=%C3%B6%C3%A4%3F&foo=bang',
$http->_postEncode($data),
'simple'
);
// check first level numeric array
$data = array(
'foo' => 'bang',
'ärr' => array('ö', 'b', 'c')
);
$this->assertEquals(
'foo=bang&%C3%A4rr%5B0%5D=%C3%B6&%C3%A4rr%5B1%5D=b&%C3%A4rr%5B2%5D=c',
$http->_postEncode($data),
'onelevelnum'
);
// check first level associative array
$data = array(
'foo' => 'bang',
'ärr' => array('ö'=>'ä', 'b' => 'c')
);
$this->assertEquals(
'foo=bang&%C3%A4rr%5B%C3%B6%5D=%C3%A4&%C3%A4rr%5Bb%5D=c',
$http->_postEncode($data),
'onelevelassoc'
);
// check first level associative array
$data = array(
'foo' => 'bang',
'ärr' => array('ö'=>'ä', 'ä' => array('ö'=>'ä'))
);
$this->assertEquals(
'foo=bang&%C3%A4rr%5B%C3%B6%5D=%C3%A4&%C3%A4rr%5B%C3%A4%5D%5B%C3%B6%5D=%C3%A4',
$http->_postEncode($data),
'twolevelassoc'
);
}
}
//Setup VIM: ex: et ts=4 :

View File

@ -0,0 +1,72 @@
<?php
require_once 'parser.inc.php';
class TestOfDoku_Parser_Code extends TestOfDoku_Parser {
function setUp() {
parent::setUp();
$this->P->addMode('code',new Doku_Parser_Mode_Code());
}
function testCode() {
$this->P->parse('Foo <code>Test</code> Bar');
$calls = array (
array('document_start',array()),
array('p_open',array()),
array('cdata',array("\n".'Foo ')),
array('p_close',array()),
array('code',array('Test',null,null)),
array('p_open',array()),
array('cdata',array(' Bar')),
array('p_close',array()),
array('document_end',array()),
);
$this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls);
}
function testCodeBash() {
$this->P->parse('Foo <code bash>Test</code> Bar');
$calls = array (
array('document_start',array()),
array('p_open',array()),
array('cdata',array("\n".'Foo ')),
array('p_close',array()),
array('code',array('Test','bash',null)),
array('p_open',array()),
array('cdata',array(' Bar')),
array('p_close',array()),
array('document_end',array()),
);
$this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls);
}
function testCodeDownload() {
$this->P->parse('Foo <code bash script.sh>Test</code> Bar');
$calls = array (
array('document_start',array()),
array('p_open',array()),
array('cdata',array("\n".'Foo ')),
array('p_close',array()),
array('code',array('Test','bash','script.sh')),
array('p_open',array()),
array('cdata',array(' Bar')),
array('p_close',array()),
array('document_end',array()),
);
$this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls);
}
function testCodeToken() {
$this->P->parse('Foo <code2>Bar</code2><code>Test</code>');
$calls = array (
array('document_start',array()),
array('p_open',array()),
array('cdata',array("\n".'Foo <code2>Bar</code2>')),
array('p_close',array()),
array('code',array('Test',null,null)),
array('document_end',array()),
);
$this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls);
}
}

View File

@ -0,0 +1,56 @@
<?php
require_once 'parser.inc.php';
class TestOfDoku_Parser_File extends TestOfDoku_Parser {
function setUp() {
parent::setUp();
$this->P->addMode('file',new Doku_Parser_Mode_File());
}
function testFile() {
$this->P->parse('Foo <file>Test</file> Bar');
$calls = array (
array('document_start',array()),
array('p_open',array()),
array('cdata',array("\n".'Foo ')),
array('p_close',array()),
array('file',array('Test',null,null)),
array('p_open',array()),
array('cdata',array(' Bar')),
array('p_close',array()),
array('document_end',array()),
);
$this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls);
}
function testFileHighlightDownload() {
$this->P->parse('Foo <file txt test.txt>Test</file> Bar');
$calls = array (
array('document_start',array()),
array('p_open',array()),
array('cdata',array("\n".'Foo ')),
array('p_close',array()),
array('file',array('Test','txt','test.txt')),
array('p_open',array()),
array('cdata',array(' Bar')),
array('p_close',array()),
array('document_end',array()),
);
$this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls);
}
function testFileToken() {
$this->P->parse('Foo <file2>Test</file2> Bar');
$calls = array (
array('document_start',array()),
array('p_open',array()),
array('cdata',array("\n".'Foo <file2>Test</file2> Bar')),
array('p_close',array()),
array('document_end',array()),
);
$this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls);
}
}

View File

@ -11,7 +11,8 @@ class Tar_TestCase extends DokuWikiTest {
public function test_createdynamic() {
$tar = new Tar();
$dir = dirname(__FILE__).'/tar';
$dir = dirname(__FILE__).'/tar';
$tdir = ltrim($dir,'/');
$tar->create();
$tar->AddFile("$dir/testdata1.txt");
@ -24,11 +25,17 @@ class Tar_TestCase extends DokuWikiTest {
$this->assertTrue(strpos($data, 'testcontent2') !== false, 'Content in TAR');
$this->assertTrue(strpos($data, 'testcontent3') !== false, 'Content in TAR');
$this->assertTrue(strpos($data, "$dir/testdata1.txt") !== false, 'Path in TAR');
// fullpath might be too long to be stored as full path FS#2802
$this->assertTrue(strpos($data, "$tdir") !== false, 'Path in TAR');
$this->assertTrue(strpos($data, "testdata1.txt") !== false, 'File in TAR');
$this->assertTrue(strpos($data, 'noway/testdata2.txt') !== false, 'Path in TAR');
$this->assertTrue(strpos($data, 'another/testdata3.txt') !== false, 'Path in TAR');
$this->assertTrue(strpos($data, "$dir/foobar/testdata2.txt") === false, 'Path not in TAR');
// fullpath might be too long to be stored as full path FS#2802
$this->assertTrue(strpos($data, "$tdir/foobar") === false, 'Path not in TAR');
$this->assertTrue(strpos($data, "foobar.txt") === false, 'File not in TAR');
$this->assertTrue(strpos($data, "foobar") === false, 'Path not in TAR');
}
@ -42,6 +49,7 @@ class Tar_TestCase extends DokuWikiTest {
$tar = new Tar();
$dir = dirname(__FILE__).'/tar';
$tdir = ltrim($dir,'/');
$tmp = tempnam(sys_get_temp_dir(), 'dwtartest');
$tar->create($tmp, Tar::COMPRESS_NONE);
@ -57,11 +65,17 @@ class Tar_TestCase extends DokuWikiTest {
$this->assertTrue(strpos($data, 'testcontent2') !== false, 'Content in TAR');
$this->assertTrue(strpos($data, 'testcontent3') !== false, 'Content in TAR');
$this->assertTrue(strpos($data, "$dir/testdata1.txt") !== false, 'Path in TAR');
// fullpath might be too long to be stored as full path FS#2802
$this->assertTrue(strpos($data, "$tdir") !== false, 'Path in TAR');
$this->assertTrue(strpos($data, "testdata1.txt") !== false, 'File in TAR');
$this->assertTrue(strpos($data, 'noway/testdata2.txt') !== false, 'Path in TAR');
$this->assertTrue(strpos($data, 'another/testdata3.txt') !== false, 'Path in TAR');
$this->assertTrue(strpos($data, "$dir/foobar/testdata2.txt") === false, 'Path not in TAR');
// fullpath might be too long to be stored as full path FS#2802
$this->assertTrue(strpos($data, "$tdir/foobar") === false, 'Path not in TAR');
$this->assertTrue(strpos($data, "foobar.txt") === false, 'File not in TAR');
$this->assertTrue(strpos($data, "foobar") === false, 'Path not in TAR');
@unlink($tmp);
@ -248,6 +262,28 @@ class Tar_TestCase extends DokuWikiTest {
}
}
// FS#1442
public function test_createlongfile() {
$tar = new Tar();
$tmp = tempnam(sys_get_temp_dir(), 'dwtartest');
$path = '0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789.txt';
$tar->create($tmp, Tar::COMPRESS_NONE);
$tar->addData($path, 'testcontent1');
$tar->close();
$this->assertTrue(filesize($tmp) > 30); //arbitrary non-zero number
$data = file_get_contents($tmp);
// We should find the complete path and a longlink entry
$this->assertTrue(strpos($data, 'testcontent1') !== false, 'content in TAR');
$this->assertTrue(strpos($data, $path) !== false, 'path in TAR');
$this->assertTrue(strpos($data, '@LongLink') !== false, '@LongLink in TAR');
@unlink($tmp);
}
public function test_createlongpathustar() {
$tar = new Tar();
$tmp = tempnam(sys_get_temp_dir(), 'dwtartest');
@ -360,4 +396,4 @@ class Tar_TestCase extends DokuWikiTest {
$this->assertEquals(512*4, strlen($file)); // 1 header block + data block + 2 footer blocks
}
}
}

View File

@ -96,7 +96,6 @@ $conf['target']['windows'] = '';
/* Media Settings */
$conf['mediarevisions'] = 1; //enable/disable media revisions
$conf['refcheck'] = 1; //check for references before deleting media files
$conf['refshow'] = 0; //how many references should be shown, 5 is a good value
$conf['gdlib'] = 2; //the GDlib version (0, 1 or 2) 2 tries to autodetect
$conf['im_convert'] = ''; //path to ImageMagicks convert (will be used instead of GD)
$conf['jpg_quality'] = '70'; //quality of compression when scaling jpg images (0-100)

View File

@ -1,6 +1,6 @@
====== DokuWiki ======
[[doku>wiki:dokuwiki|{{wiki:dokuwiki-128.png }}]] DokuWiki is a standards compliant, simple to use [[wp>Wiki]], mainly aimed at creating documentation of any kind. It is targeted at developer teams, workgroups and small companies. It has a simple but powerful [[wiki:syntax]] which makes sure the datafiles remain readable outside the Wiki and eases the creation of structured texts. All data is stored in plain text files -- no database is required.
[[doku>wiki:dokuwiki|{{wiki:dokuwiki-128.png }}]] DokuWiki is a simple to use and highly versatile Open Source [[wp>wiki]] software that doesn't require a database. It is loved by users for its clean and readable [[wiki:syntax]]. The ease of maintenance, backup and integration makes it an administrator's favorite. Built in [[doku>acl|access controls]] and [[doku>auth|authentication connectors]] make DokuWiki especially useful in the enterprise context and the large number of [[doku>plugins]] contributed by its vibrant community allow for a broad range of use cases beyond a traditional wiki.
Read the [[doku>manual|DokuWiki Manual]] to unleash the full power of DokuWiki.

View File

@ -463,6 +463,8 @@ class HTTPClient {
}
$r_body = $this->_readData($socket, $length, 'response (content-length limited)', true);
}elseif( !isset($this->resp_headers['transfer-encoding']) && $this->max_bodysize && !$this->keep_alive){
$r_body = $this->_readData($socket, $this->max_bodysize, 'response (content-length limited)', true);
}else{
// read entire socket
$r_size = 0;
@ -806,12 +808,7 @@ class HTTPClient {
* @author Andreas Gohr <andi@splitbrain.org>
*/
function _postEncode($data){
$url = '';
foreach($data as $key => $val){
if($url) $url .= '&';
$url .= urlencode($key).'='.urlencode($val);
}
return $url;
return http_build_query($data,'','&');
}
/**

View File

@ -98,7 +98,7 @@ class PassHash {
$salt = '';
$chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
for($i = 0; $i < $len; $i++) {
$salt .= $chars[mt_rand(0, 61)];
$salt .= $chars[auth_random(0, 61)];
}
return $salt;
}

View File

@ -92,14 +92,26 @@ function act_dispatch(){
$ACT = 'login';
}
//update user profile
if ($ACT == 'profile') {
// user profile changes
if (in_array($ACT, array('profile','profile_delete'))) {
if(!$_SERVER['REMOTE_USER']) {
$ACT = 'login';
} else {
if(updateprofile()) {
msg($lang['profchanged'],1);
$ACT = 'show';
switch ($ACT) {
case 'profile' :
if(updateprofile()) {
msg($lang['profchanged'],1);
$ACT = 'show';
}
break;
case 'profile_delete' :
if(auth_deleteprofile()){
msg($lang['profdeleted'],1);
$ACT = 'show';
} else {
$ACT = 'profile';
}
break;
}
}
}
@ -247,7 +259,7 @@ function act_validate($act) {
//disable all acl related commands if ACL is disabled
if(!$conf['useacl'] && in_array($act,array('login','logout','register','admin',
'subscribe','unsubscribe','profile','revert',
'resendpwd'))){
'resendpwd','profile_delete'))){
msg('Command unavailable: '.htmlspecialchars($act),-1);
return 'show';
}
@ -258,7 +270,7 @@ function act_validate($act) {
if(!in_array($act,array('login','logout','register','save','cancel','edit','draft',
'preview','search','show','check','index','revisions',
'diff','recent','backlink','admin','subscribe','revert',
'unsubscribe','profile','resendpwd','recover',
'unsubscribe','profile','profile_delete','resendpwd','recover',
'draftdel','sitemap','media')) && substr($act,0,7) != 'export_' ) {
msg('Command unknown: '.htmlspecialchars($act),-1);
return 'show';
@ -287,7 +299,7 @@ function act_permcheck($act){
}else{
$permneed = AUTH_CREATE;
}
}elseif(in_array($act,array('login','search','recent','profile','index', 'sitemap'))){
}elseif(in_array($act,array('login','search','recent','profile','profile_delete','index', 'sitemap'))){
$permneed = AUTH_NONE;
}elseif($act == 'revert'){
$permneed = AUTH_ADMIN;

View File

@ -40,7 +40,7 @@ function auth_setup() {
global $INPUT;
global $AUTH_ACL;
global $lang;
global $config_cascade;
/* @var Doku_Plugin_Controller $plugin_controller */
global $plugin_controller;
$AUTH_ACL = array();
@ -207,7 +207,7 @@ function auth_login($user, $pass, $sticky = false, $silent = false) {
global $USERINFO;
global $conf;
global $lang;
/* @var auth_basic $auth */
/* @var DokuWiki_Auth_Plugin $auth */
global $auth;
$sticky ? $sticky = true : $sticky = false; //sanity check
@ -219,8 +219,8 @@ function auth_login($user, $pass, $sticky = false, $silent = false) {
if($auth->checkPass($user, $pass)) {
// make logininfo globally available
$_SERVER['REMOTE_USER'] = $user;
$secret = auth_cookiesalt(!$sticky); //bind non-sticky to session
auth_setCookie($user, PMA_blowfish_encrypt($pass, $secret), $sticky);
$secret = auth_cookiesalt(!$sticky, true); //bind non-sticky to session
auth_setCookie($user, auth_encrypt($pass, $secret), $sticky);
return true;
} else {
//invalid credentials - log off
@ -250,8 +250,8 @@ function auth_login($user, $pass, $sticky = false, $silent = false) {
return true;
}
// no we don't trust it yet - recheck pass but silent
$secret = auth_cookiesalt(!$sticky); //bind non-sticky to session
$pass = PMA_blowfish_decrypt($pass, $secret);
$secret = auth_cookiesalt(!$sticky, true); //bind non-sticky to session
$pass = auth_decrypt($pass, $secret);
return auth_login($user, $pass, $sticky, true);
}
}
@ -294,7 +294,7 @@ function auth_validateToken($token) {
* @return string The auth token
*/
function auth_createToken() {
$token = md5(mt_rand());
$token = md5(auth_randombytes(16));
@session_start(); // reopen the session if needed
$_SESSION[DOKU_COOKIE]['auth']['token'] = $token;
session_write_close();
@ -333,14 +333,18 @@ function auth_browseruid() {
*
* @author Andreas Gohr <andi@splitbrain.org>
* @param bool $addsession if true, the sessionid is added to the salt
* @param bool $secure if security is more important than keeping the old value
* @return string
*/
function auth_cookiesalt($addsession = false) {
function auth_cookiesalt($addsession = false, $secure = false) {
global $conf;
$file = $conf['metadir'].'/_htcookiesalt';
if ($secure || !file_exists($file)) {
$file = $conf['metadir'].'/_htcookiesalt2';
}
$salt = io_readFile($file);
if(empty($salt)) {
$salt = uniqid(rand(), true);
$salt = bin2hex(auth_randombytes(64));
io_saveFile($file, $salt);
}
if($addsession) {
@ -349,6 +353,143 @@ function auth_cookiesalt($addsession = false) {
return $salt;
}
/**
* Return truly (pseudo) random bytes if available, otherwise fall back to mt_rand
*
* @author Mark Seecof
* @author Michael Hamann <michael@content-space.de>
* @link http://www.php.net/manual/de/function.mt-rand.php#83655
* @param int $length number of bytes to get
* @return string binary random strings
*/
function auth_randombytes($length) {
$strong = false;
$rbytes = false;
if (function_exists('openssl_random_pseudo_bytes')
&& (version_compare(PHP_VERSION, '5.3.4') >= 0
|| strtoupper(substr(PHP_OS, 0, 3)) !== 'WIN')
) {
$rbytes = openssl_random_pseudo_bytes($length, $strong);
}
if (!$strong && function_exists('mcrypt_create_iv')
&& (version_compare(PHP_VERSION, '5.3.7') >= 0
|| strtoupper(substr(PHP_OS, 0, 3)) !== 'WIN')
) {
$rbytes = mcrypt_create_iv($length, MCRYPT_DEV_URANDOM);
if ($rbytes !== false && strlen($rbytes) === $length) {
$strong = true;
}
}
// If no strong randoms available, try OS the specific ways
if(!$strong) {
// Unix/Linux platform
$fp = @fopen('/dev/urandom', 'rb');
if($fp !== false) {
$rbytes = fread($fp, $length);
fclose($fp);
}
// MS-Windows platform
if(class_exists('COM')) {
// http://msdn.microsoft.com/en-us/library/aa388176(VS.85).aspx
try {
$CAPI_Util = new COM('CAPICOM.Utilities.1');
$rbytes = $CAPI_Util->GetRandom($length, 0);
// if we ask for binary data PHP munges it, so we
// request base64 return value.
if($rbytes) $rbytes = base64_decode($rbytes);
} catch(Exception $ex) {
// fail
}
}
}
if(strlen($rbytes) < $length) $rbytes = false;
// still no random bytes available - fall back to mt_rand()
if($rbytes === false) {
$rbytes = '';
for ($i = 0; $i < $length; ++$i) {
$rbytes .= chr(mt_rand(0, 255));
}
}
return $rbytes;
}
/**
* Random number generator using the best available source
*
* @author Michael Samuel
* @author Michael Hamann <michael@content-space.de>
* @param int $min
* @param int $max
* @return int
*/
function auth_random($min, $max) {
$abs_max = $max - $min;
$nbits = 0;
for ($n = $abs_max; $n > 0; $n >>= 1) {
++$nbits;
}
$mask = (1 << $nbits) - 1;
do {
$bytes = auth_randombytes(PHP_INT_SIZE);
$integers = unpack('Inum', $bytes);
$integer = $integers["num"] & $mask;
} while ($integer > $abs_max);
return $min + $integer;
}
/**
* Encrypt data using the given secret using AES
*
* The mode is CBC with a random initialization vector, the key is derived
* using pbkdf2.
*
* @param string $data The data that shall be encrypted
* @param string $secret The secret/password that shall be used
* @return string The ciphertext
*/
function auth_encrypt($data, $secret) {
$iv = auth_randombytes(16);
$cipher = new Crypt_AES();
$cipher->setPassword($secret);
/*
this uses the encrypted IV as IV as suggested in
http://csrc.nist.gov/publications/nistpubs/800-38a/sp800-38a.pdf, Appendix C
for unique but necessarily random IVs. The resulting ciphertext is
compatible to ciphertext that was created using a "normal" IV.
*/
return $cipher->encrypt($iv.$data);
}
/**
* Decrypt the given AES ciphertext
*
* The mode is CBC, the key is derived using pbkdf2
*
* @param string $ciphertext The encrypted data
* @param string $secret The secret/password that shall be used
* @return string The decrypted data
*/
function auth_decrypt($ciphertext, $secret) {
$iv = substr($ciphertext, 0, 16);
$cipher = new Crypt_AES();
$cipher->setPassword($secret);
$cipher->setIV($iv);
return $cipher->decrypt(substr($ciphertext, 16));
}
/**
* Log out the current user
*
@ -361,7 +502,7 @@ function auth_cookiesalt($addsession = false) {
function auth_logoff($keepbc = false) {
global $conf;
global $USERINFO;
/* @var auth_basic $auth */
/* @var DokuWiki_Auth_Plugin $auth */
global $auth;
// make sure the session is writable (it usually is)
@ -407,7 +548,7 @@ function auth_logoff($keepbc = false) {
function auth_ismanager($user = null, $groups = null, $adminonly = false) {
global $conf;
global $USERINFO;
/* @var auth_basic $auth */
/* @var DokuWiki_Auth_Plugin $auth */
global $auth;
if(!$auth) return false;
@ -460,7 +601,7 @@ function auth_isadmin($user = null, $groups = null) {
* @return bool true for membership acknowledged
*/
function auth_isMember($memberlist, $user, array $groups) {
/* @var auth_basic $auth */
/* @var DokuWiki_Auth_Plugin $auth */
global $auth;
if(!$auth) return false;
@ -526,7 +667,7 @@ function auth_quickaclcheck($id) {
function auth_aclcheck($id, $user, $groups) {
global $conf;
global $AUTH_ACL;
/* @var auth_basic $auth */
/* @var DokuWiki_Auth_Plugin $auth */
global $auth;
// if no ACL is used always return upload rights
@ -703,12 +844,12 @@ function auth_pwgen($foruser = '') {
//use thre syllables...
for($i = 0; $i < 3; $i++) {
$data['password'] .= $c[mt_rand(0, strlen($c) - 1)];
$data['password'] .= $v[mt_rand(0, strlen($v) - 1)];
$data['password'] .= $a[mt_rand(0, strlen($a) - 1)];
$data['password'] .= $c[auth_random(0, strlen($c) - 1)];
$data['password'] .= $v[auth_random(0, strlen($v) - 1)];
$data['password'] .= $a[auth_random(0, strlen($a) - 1)];
}
//... and add a nice number and special
$data['password'] .= mt_rand(10, 99).$s[mt_rand(0, strlen($s) - 1)];
$data['password'] .= auth_random(10, 99).$s[auth_random(0, strlen($s) - 1)];
}
$evt->advise_after();
@ -725,7 +866,7 @@ function auth_pwgen($foruser = '') {
*/
function auth_sendPassword($user, $password) {
global $lang;
/* @var auth_basic $auth */
/* @var DokuWiki_Auth_Plugin $auth */
global $auth;
if(!$auth) return false;
@ -759,7 +900,7 @@ function auth_sendPassword($user, $password) {
function register() {
global $lang;
global $conf;
/* @var auth_basic $auth */
/* @var DokuWiki_Auth_Plugin $auth */
global $auth;
global $INPUT;
@ -828,7 +969,7 @@ function register() {
function updateprofile() {
global $conf;
global $lang;
/* @var auth_basic $auth */
/* @var DokuWiki_Auth_Plugin $auth */
global $auth;
/* @var Input $INPUT */
global $INPUT;
@ -883,7 +1024,7 @@ function updateprofile() {
if($conf['profileconfirm']) {
if(!$auth->checkPass($_SERVER['REMOTE_USER'], $INPUT->post->str('oldpass'))) {
msg($lang['badlogin'], -1);
msg($lang['badpassconfirm'], -1);
return false;
}
}
@ -892,7 +1033,7 @@ function updateprofile() {
// update cookie and session with the changed data
if($changes['pass']) {
list( /*user*/, $sticky, /*pass*/) = auth_getCookie();
$pass = PMA_blowfish_encrypt($changes['pass'], auth_cookiesalt(!$sticky));
$pass = auth_encrypt($changes['pass'], auth_cookiesalt(!$sticky, true));
auth_setCookie($_SERVER['REMOTE_USER'], $pass, (bool) $sticky);
}
return true;
@ -901,6 +1042,45 @@ function updateprofile() {
return false;
}
function auth_deleteprofile(){
global $conf;
global $lang;
/* @var DokuWiki_Auth_Plugin $auth */
global $auth;
/* @var Input $INPUT */
global $INPUT;
if(!$INPUT->post->bool('delete')) return false;
if(!checkSecurityToken()) return false;
// action prevented or auth module disallows
if(!actionOK('profile_delete') || !$auth->canDo('delUser')) {
msg($lang['profnodelete'], -1);
return false;
}
if(!$INPUT->post->bool('confirm_delete')){
msg($lang['profconfdeletemissing'], -1);
return false;
}
if($conf['profileconfirm']) {
if(!$auth->checkPass($_SERVER['REMOTE_USER'], $INPUT->post->str('oldpass'))) {
msg($lang['badpassconfirm'], -1);
return false;
}
}
$deleted[] = $_SERVER['REMOTE_USER'];
if($auth->triggerUserMod('delete', array($deleted))) {
// force and immediate logout including removing the sticky cookie
auth_logoff();
return true;
}
return false;
}
/**
* Send a new password
*
@ -918,7 +1098,7 @@ function updateprofile() {
function act_resendpwd() {
global $lang;
global $conf;
/* @var auth_basic $auth */
/* @var DokuWiki_Auth_Plugin $auth */
global $auth;
/* @var Input $INPUT */
global $INPUT;
@ -1007,7 +1187,7 @@ function act_resendpwd() {
}
// generate auth token
$token = md5(uniqid(mt_rand(), true)); // random secret
$token = md5(auth_randombytes(16)); // random secret
$tfile = $conf['cachedir'].'/'.$token{0}.'/'.$token.'.pwauth';
$url = wl('', array('do'=> 'resendpwd', 'pwauth'=> $token), true, '&');
@ -1084,7 +1264,7 @@ function auth_verifyPassword($clear, $crypt) {
*/
function auth_setCookie($user, $pass, $sticky) {
global $conf;
/* @var auth_basic $auth */
/* @var DokuWiki_Auth_Plugin $auth */
global $auth;
global $USERINFO;

View File

@ -1130,7 +1130,7 @@ function saveWikiText($id, $text, $summary, $minor = false) {
// if useheading is enabled, purge the cache of all linking pages
if(useHeading('content')) {
$pages = ft_backlinks($id);
$pages = ft_backlinks($id, true);
foreach($pages as $page) {
$cache = new cache_renderer($page, wikiFN($page), 'xhtml');
$cache->removeCache();

View File

@ -241,7 +241,7 @@ function getConfigFiles($type) {
*/
function actionOK($action){
static $disabled = null;
if(is_null($disabled)){
if(is_null($disabled) || defined('SIMPLE_TEST')){
global $conf;
/** @var auth_basic $auth */
global $auth;
@ -261,6 +261,9 @@ function actionOK($action){
if (is_null($auth) || !$auth->canDo('Profile')) {
$disabled[] = 'profile';
}
if (is_null($auth) || !$auth->canDo('delUser')) {
$disabled[] = 'profile_delete';
}
if (is_null($auth)) {
$disabled[] = 'login';
}

View File

@ -125,17 +125,21 @@ function _ft_pageSearch(&$data) {
* Returns the backlinks for a given page
*
* Uses the metadata index.
*
* @param string $id The id for which links shall be returned
* @param bool $ignore_perms Ignore the fact that pages are hidden or read-protected
* @return array The pages that contain links to the given page
*/
function ft_backlinks($id){
$result = array();
function ft_backlinks($id, $ignore_perms = false){
$result = idx_get_indexer()->lookupKey('relation_references', $id);
if(!count($result)) return $result;
// check ACL permissions
foreach(array_keys($result) as $idx){
if(isHiddenPage($result[$idx]) || auth_quickaclcheck($result[$idx]) < AUTH_READ || !page_exists($result[$idx], '', false)){
if(($ignore_perms !== true && (
isHiddenPage($result[$idx]) || auth_quickaclcheck($result[$idx]) < AUTH_READ
)) || !page_exists($result[$idx], '', false)){
unset($result[$idx]);
}
}
@ -147,42 +151,28 @@ function ft_backlinks($id){
/**
* Returns the pages that use a given media file
*
* Does a quick lookup with the fulltext index, then
* evaluates the instructions of the found pages
* Uses the relation media metadata property and the metadata index.
*
* Aborts after $max found results
* Note that before 2013-07-31 the second parameter was the maximum number of results and
* permissions were ignored. That's why the parameter is now checked to be explicitely set
* to true (with type bool) in order to be compatible with older uses of the function.
*
* @param string $id The media id to look for
* @param bool $ignore_perms Ignore hidden pages and acls (optional, default: false)
* @return array A list of pages that use the given media file
*/
function ft_mediause($id,$max){
if(!$max) $max = 1; // need to find at least one
function ft_mediause($id, $ignore_perms = false){
$result = idx_get_indexer()->lookupKey('relation_media', $id);
$result = array();
if(!count($result)) return $result;
// quick lookup of the mediafile
// FIXME use metadata key lookup
$media = noNS($id);
$matches = idx_lookup(idx_tokenizer($media));
$docs = array_keys(ft_resultCombine(array_values($matches)));
if(!count($docs)) return $result;
// go through all found pages
$found = 0;
$pcre = preg_quote($media,'/');
foreach($docs as $doc){
$ns = getNS($doc);
preg_match_all('/\{\{([^|}]*'.$pcre.'[^|}]*)(|[^}]+)?\}\}/i',rawWiki($doc),$matches);
foreach($matches[1] as $img){
$img = trim($img);
if(media_isexternal($img)) continue; // skip external images
list($img) = explode('?',$img); // remove any parameters
resolve_mediaid($ns,$img,$exists); // resolve the possibly relative img
if($img == $id){ // we have a match
$result[] = $doc;
$found++;
break;
}
// check ACL permissions
foreach(array_keys($result) as $idx){
if(($ignore_perms !== true && (
isHiddenPage($result[$idx]) || auth_quickaclcheck($result[$idx]) < AUTH_READ
)) || !page_exists($result[$idx], '', false)){
unset($result[$idx]);
}
if($found >= $max) break;
}
sort($result);

View File

@ -575,18 +575,18 @@ 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(htmlspecialchars($info['sum']));
$form->addElement('<bdi>'.htmlspecialchars($info['sum']).'</bdi>');
$form->addElement(form_makeCloseTag('span'));
}
$form->addElement(form_makeOpenTag('span', array('class' => 'user')));
if($info['user']){
$form->addElement(editorinfo($info['user']));
$form->addElement('<bdi>'.editorinfo($info['user']).'</bdi>');
if(auth_ismanager()){
$form->addElement(' ('.$info['ip'].')');
$form->addElement(' <bdo dir="ltr">('.$info['ip'].')</bdo>');
}
}else{
$form->addElement($info['ip']);
$form->addElement('<bdo dir="ltr">'.$info['ip'].'</bdo>');
}
$form->addElement(form_makeCloseTag('span'));
@ -774,12 +774,12 @@ function html_recent($first=0, $show_changes='both'){
$form->addElement(form_makeOpenTag('span', array('class' => 'user')));
if($recent['user']){
$form->addElement(editorinfo($recent['user']));
$form->addElement('<bdi>'.editorinfo($recent['user']).'</bdi>');
if(auth_ismanager()){
$form->addElement(' ('.$recent['ip'].')');
$form->addElement(' <bdo dir="ltr">('.$recent['ip'].')</bdo>');
}
}else{
$form->addElement($recent['ip']);
$form->addElement('<bdo dir="ltr">'.$recent['ip'].'</bdo>');
}
$form->addElement(form_makeCloseTag('span'));
@ -854,12 +854,17 @@ function html_index($ns){
* @author Andreas Gohr <andi@splitbrain.org>
*/
function html_list_index($item){
global $ID;
global $ID, $conf;
// prevent searchbots needlessly following links
$nofollow = ($ID != $conf['start'] || $conf['sitemap']) ? ' rel="nofollow"' : '';
$ret = '';
$base = ':'.$item['id'];
$base = substr($base,strrpos($base,':')+1);
if($item['type']=='d'){
$ret .= '<a href="'.wl($ID,'idx='.rawurlencode($item['id'])).'" title="' . $item['id'] . '" class="idx_dir"><strong>';
// FS#2766, no need for search bots to follow namespace links in the index
$ret .= '<a href="'.wl($ID,'idx='.rawurlencode($item['id'])).'" title="' . $item['id'] . '" class="idx_dir"' . $nofollow . '><strong>';
$ret .= $base;
$ret .= '</strong></a>';
}else{
@ -1022,52 +1027,52 @@ function html_diff_head($l_rev, $r_rev, $id = null, $media = false, $inline = fa
}else{
$l_info = getRevisionInfo($id,$l_rev,true, $media);
if($l_info['user']){
$l_user = editorinfo($l_info['user']);
if(auth_ismanager()) $l_user .= ' ('.$l_info['ip'].')';
$l_user = '<bdi>'.editorinfo($l_info['user']).'</bdi>';
if(auth_ismanager()) $l_user .= ' <bdo dir="ltr">('.$l_info['ip'].')</bdo>';
} else {
$l_user = $l_info['ip'];
$l_user = '<bdo dir="ltr">'.$l_info['ip'].'</bdo>';
}
$l_user = '<span class="user">'.$l_user.'</span>';
$l_sum = ($l_info['sum']) ? '<span class="sum">'.hsc($l_info['sum']).'</span>' : '';
$l_sum = ($l_info['sum']) ? '<span class="sum"><bdi>'.hsc($l_info['sum']).'</bdi></span>' : '';
if ($l_info['type']===DOKU_CHANGE_TYPE_MINOR_EDIT) $l_minor = 'class="minor"';
$l_head_title = ($media) ? dformat($l_rev) : $id.' ['.dformat($l_rev).']';
$l_head = '<a class="wikilink1" href="'.$ml_or_wl($id,"rev=$l_rev").'">'.
$l_head_title.'</a>'.
$l_head = '<bdi><a class="wikilink1" href="'.$ml_or_wl($id,"rev=$l_rev").'">'.
$l_head_title.'</a></bdi>'.
$head_separator.$l_user.' '.$l_sum;
}
if($r_rev){
$r_info = getRevisionInfo($id,$r_rev,true, $media);
if($r_info['user']){
$r_user = editorinfo($r_info['user']);
if(auth_ismanager()) $r_user .= ' ('.$r_info['ip'].')';
$r_user = '<bdi>'.editorinfo($r_info['user']).'</bdi>';
if(auth_ismanager()) $r_user .= ' <bdo dir="ltr">('.$r_info['ip'].')</bdo>';
} else {
$r_user = $r_info['ip'];
$r_user = '<bdo dir="ltr">'.$r_info['ip'].'</bdo>';
}
$r_user = '<span class="user">'.$r_user.'</span>';
$r_sum = ($r_info['sum']) ? '<span class="sum">'.hsc($r_info['sum']).'</span>' : '';
$r_sum = ($r_info['sum']) ? '<span class="sum"><bdi>'.hsc($r_info['sum']).'</bdi></span>' : '';
if ($r_info['type']===DOKU_CHANGE_TYPE_MINOR_EDIT) $r_minor = 'class="minor"';
$r_head_title = ($media) ? dformat($r_rev) : $id.' ['.dformat($r_rev).']';
$r_head = '<a class="wikilink1" href="'.$ml_or_wl($id,"rev=$r_rev").'">'.
$r_head_title.'</a>'.
$r_head = '<bdi><a class="wikilink1" href="'.$ml_or_wl($id,"rev=$r_rev").'">'.
$r_head_title.'</a></bdi>'.
$head_separator.$r_user.' '.$r_sum;
}elseif($_rev = @filemtime($media_or_wikiFN($id))){
$_info = getRevisionInfo($id,$_rev,true, $media);
if($_info['user']){
$_user = editorinfo($_info['user']);
if(auth_ismanager()) $_user .= ' ('.$_info['ip'].')';
$_user = '<bdi>'.editorinfo($_info['user']).'</bdi>';
if(auth_ismanager()) $_user .= ' <bdo dir="ltr">('.$_info['ip'].')</bdo>';
} else {
$_user = $_info['ip'];
$_user = '<bdo dir="ltr">'.$_info['ip'].'</bdo>';
}
$_user = '<span class="user">'.$_user.'</span>';
$_sum = ($_info['sum']) ? '<span class="sum">'.hsc($_info['sum']).'</span>' : '';
$_sum = ($_info['sum']) ? '<span class="sum"><bdi>'.hsc($_info['sum']).'</span></bdi>' : '';
if ($_info['type']===DOKU_CHANGE_TYPE_MINOR_EDIT) $r_minor = 'class="minor"';
$r_head_title = ($media) ? dformat($_rev) : $id.' ['.dformat($_rev).']';
$r_head = '<a class="wikilink1" href="'.$ml_or_wl($id).'">'.
$r_head_title.'</a> '.
$r_head = '<bdi><a class="wikilink1" href="'.$ml_or_wl($id).'">'.
$r_head_title.'</a></bdi> '.
'('.$lang['current'].')'.
$head_separator.$_user.' '.$_sum;
}else{
@ -1318,19 +1323,22 @@ function html_register(){
global $conf;
global $INPUT;
$base_attrs = array('size'=>50,'required'=>'required');
$email_attrs = $base_attrs + array('type'=>'email','class'=>'edit');
print p_locale_xhtml('register');
print '<div class="centeralign">'.NL;
$form = new Doku_Form(array('id' => 'dw__register'));
$form->startFieldset($lang['btn_register']);
$form->addHidden('do', 'register');
$form->addHidden('save', '1');
$form->addElement(form_makeTextField('login', $INPUT->post->str('login'), $lang['user'], '', 'block', array('size'=>'50')));
$form->addElement(form_makeTextField('login', $INPUT->post->str('login'), $lang['user'], '', 'block', $base_attrs));
if (!$conf['autopasswd']) {
$form->addElement(form_makePasswordField('pass', $lang['pass'], '', 'block', array('size'=>'50')));
$form->addElement(form_makePasswordField('passchk', $lang['passchk'], '', 'block', array('size'=>'50')));
$form->addElement(form_makePasswordField('pass', $lang['pass'], '', 'block', $base_attrs));
$form->addElement(form_makePasswordField('passchk', $lang['passchk'], '', 'block', $base_attrs));
}
$form->addElement(form_makeTextField('fullname', $INPUT->post->str('fullname'), $lang['fullname'], '', 'block', array('size'=>'50')));
$form->addElement(form_makeTextField('email', $INPUT->post->str('email'), $lang['email'], '', 'block', array('size'=>'50')));
$form->addElement(form_makeTextField('fullname', $INPUT->post->str('fullname'), $lang['fullname'], '', 'block', $base_attrs));
$form->addElement(form_makeField('email','email', $INPUT->post->str('email'), $lang['email'], '', 'block', $email_attrs));
$form->addElement(form_makeButton('submit', '', $lang['btn_register']));
$form->endFieldset();
html_form('register', $form);
@ -1353,10 +1361,10 @@ function html_updateprofile(){
global $auth;
print p_locale_xhtml('updateprofile');
print '<div class="centeralign">'.NL;
$fullname = $INPUT->post->str('fullname', $INFO['userinfo']['name'], true);
$email = $INPUT->post->str('email', $INFO['userinfo']['mail'], true);
print '<div class="centeralign">'.NL;
$form = new Doku_Form(array('id' => 'dw__register'));
$form->startFieldset($lang['profile']);
$form->addHidden('do', 'profile');
@ -1365,9 +1373,9 @@ function html_updateprofile(){
$attr = array('size'=>'50');
if (!$auth->canDo('modName')) $attr['disabled'] = 'disabled';
$form->addElement(form_makeTextField('fullname', $fullname, $lang['fullname'], '', 'block', $attr));
$attr = array('size'=>'50');
$attr = array('size'=>'50', 'class'=>'edit');
if (!$auth->canDo('modMail')) $attr['disabled'] = 'disabled';
$form->addElement(form_makeTextField('email', $email, $lang['email'], '', 'block', $attr));
$form->addElement(form_makeField('email','email', $email, $lang['email'], '', 'block', $attr));
$form->addElement(form_makeTag('br'));
if ($auth->canDo('modPass')) {
$form->addElement(form_makePasswordField('newpass', $lang['newpass'], '', 'block', array('size'=>'50')));
@ -1375,12 +1383,30 @@ function html_updateprofile(){
}
if ($conf['profileconfirm']) {
$form->addElement(form_makeTag('br'));
$form->addElement(form_makePasswordField('oldpass', $lang['oldpass'], '', 'block', array('size'=>'50')));
$form->addElement(form_makePasswordField('oldpass', $lang['oldpass'], '', 'block', array('size'=>'50', 'required' => 'required')));
}
$form->addElement(form_makeButton('submit', '', $lang['btn_save']));
$form->addElement(form_makeButton('reset', '', $lang['btn_reset']));
$form->endFieldset();
html_form('updateprofile', $form);
if ($auth->canDo('delUser') && actionOK('profile_delete')) {
$form_profiledelete = new Doku_Form(array('id' => 'dw__profiledelete'));
$form_profiledelete->startFieldset($lang['profdeleteuser']);
$form_profiledelete->addHidden('do', 'profile_delete');
$form_profiledelete->addHidden('delete', '1');
$form_profiledelete->addElement(form_makeCheckboxField('confirm_delete', '1', $lang['profconfdelete'],'dw__confirmdelete','', array('required' => 'required')));
if ($conf['profileconfirm']) {
$form_profiledelete->addElement(form_makeTag('br'));
$form_profiledelete->addElement(form_makePasswordField('oldpass', $lang['oldpass'], '', 'block', array('size'=>'50', 'required' => 'required')));
}
$form_profiledelete->addElement(form_makeButton('submit', '', $lang['btn_deleteuser']));
$form_profiledelete->endFieldset();
html_form('profiledelete', $form_profiledelete);
}
print '</div>'.NL;
}
@ -1488,7 +1514,7 @@ function html_edit(){
echo 'textChanged = ' . ($mod ? 'true' : 'false');
echo '/*!]]>*/</script>' . NL;
} ?>
<div class="editBox">
<div class="editBox" role="application">
<div class="toolbar group">
<div id="draft__status"><?php if(!empty($INFO['draft'])) echo $lang['draftdate'].' '.dformat();?></div>

View File

@ -10,7 +10,7 @@
if(!defined('DOKU_INC')) die('meh.');
// Version tag used to force rebuild on upgrade
define('INDEXER_VERSION', 5);
define('INDEXER_VERSION', 6);
// set the minimum token length to use in the index (note, this doesn't apply to numeric tokens)
if (!defined('IDX_MINWORDLENGTH')) define('IDX_MINWORDLENGTH',2);
@ -1365,6 +1365,12 @@ function idx_addPage($page, $verbose=false, $force=false) {
$metadata['relation_references'] = array_keys($references);
else
$metadata['relation_references'] = array();
if (($media = p_get_metadata($page, 'relation media', METADATA_RENDER_UNLIMITED)) !== null)
$metadata['relation_media'] = array_keys($media);
else
$metadata['relation_media'] = array();
$data = compact('page', 'body', 'metadata', 'pid');
$evt = new Doku_Event('INDEXER_PAGE_ADD', $data);
if ($evt->advise_before()) $data['body'] = $data['body'] . " " . rawWiki($page);

View File

@ -15,11 +15,11 @@ hostest, über FTP oder ein entsprechendes Werkzeug (z.B. cPanel) durchführen.<
(<abbr title="access control list">ACL</abbr>) von DokuWiki, welcher eine
Administratoranmeldung und damit Zugang zum Administrationsmenü ermöglicht.
Dort kannst du dann weitere Tätigkeiten wie das Installieren von Plugins, dass
Verwalten von Nutzern und das Ändern von Konfigurationseinstellungen durchführen.
Das Nutzen der Zugangskontrolle ist nicht zwingend erforderlich, es erleichtert aber
Verwalten von Benutzern und das Ändern von Konfigurationseinstellungen durchführen.
Das Benutzen der Zugangskontrolle ist nicht zwingend erforderlich, es erleichtert aber
die Administration von DokuWiki.</p>
<p>Erfahrene Anwender oder Nutzer mit speziellen Konfigurationsbedürfnissen sollten
<p>Erfahrene Anwender oder Benutzer mit speziellen Konfigurationsbedürfnissen sollten
die folgenden Links nutzen, um sich über
<a href="http://dokuwiki.org/install">Installation</a>
und <a href="http://dokuwiki.org/config">Konfiguration</a> zu

View File

@ -64,6 +64,7 @@ $lang['btn_revert'] = 'Wiederherstellen';
$lang['btn_register'] = 'Registrieren';
$lang['btn_apply'] = 'Übernehmen';
$lang['btn_media'] = 'Medien-Manager';
$lang['btn_deleteuser'] = 'Benutzerprofil löschen';
$lang['loggedinas'] = 'Angemeldet als';
$lang['user'] = 'Benutzername';
$lang['pass'] = 'Passwort';
@ -74,14 +75,15 @@ $lang['remember'] = 'Angemeldet bleiben';
$lang['fullname'] = 'Voller Name';
$lang['email'] = 'E-Mail';
$lang['profile'] = 'Benutzerprofil';
$lang['badlogin'] = 'Nutzername oder Passwort sind falsch.';
$lang['badlogin'] = 'Benutzername oder Passwort sind falsch.';
$lang['badpassconfirm'] = 'Das Passwort war falsch.';
$lang['minoredit'] = 'Kleine Änderung';
$lang['draftdate'] = 'Entwurf gespeichert am';
$lang['nosecedit'] = 'Diese Seite wurde in der Zwischenzeit geändert, da das Sektionsinfo veraltet ist. Die ganze Seite wird stattdessen geladen.';
$lang['regmissing'] = 'Alle Felder müssen ausgefüllt werden';
$lang['reguexists'] = 'Der Nutzername existiert leider schon.';
$lang['regsuccess'] = 'Der neue Nutzer wurde angelegt und das Passwort per E-Mail versandt.';
$lang['regsuccess2'] = 'Der neue Nutzer wurde angelegt.';
$lang['reguexists'] = 'Der Benutzername existiert leider schon.';
$lang['regsuccess'] = 'Der neue Benutzer wurde angelegt und das Passwort per E-Mail versandt.';
$lang['regsuccess2'] = 'Der neue Benutzer wurde angelegt.';
$lang['regmailfail'] = 'Offenbar ist ein Fehler beim Versenden der Passwortmail aufgetreten. Bitte wende dich an den Wiki-Admin.';
$lang['regbadmail'] = 'Die angegebene Mail-Adresse scheint ungültig zu sein. Falls dies ein Fehler ist, wende dich bitte an den Wiki-Admin.';
$lang['regbadpass'] = 'Die beiden eingegeben Passwörter stimmen nicht überein. Bitte versuche es noch einmal.';
@ -91,6 +93,11 @@ $lang['profna'] = 'Änderung des Benutzerprofils in diesem Wiki n
$lang['profnochange'] = 'Keine Änderungen, nichts zu tun.';
$lang['profnoempty'] = 'Es muss ein Name oder eine E-Mail Adresse angegeben werden.';
$lang['profchanged'] = 'Benutzerprofil erfolgreich geändert.';
$lang['profnodelete'] = 'Dieses Wiki unterstützt nicht das Löschen von Benutzern.';
$lang['profdeleteuser'] = 'Benutzerprofil löschen';
$lang['profdeleted'] = 'Dein Benutzerprofil wurde im Wiki gelöscht.';
$lang['profconfdelete'] = 'Ich möchte mein Benutzerprofil löschen.<br/> Diese Aktion ist nicht umkehrbar.';
$lang['profconfdeletemissing'] = 'Bestätigungs-Checkbox wurde nicht angehakt.';
$lang['pwdforget'] = 'Passwort vergessen? Fordere ein neues an';
$lang['resendna'] = 'Passwörter versenden ist in diesem Wiki nicht möglich.';
$lang['resendpwd'] = 'Neues Passwort setzen für';
@ -147,7 +154,7 @@ $lang['js']['media_diff_portions'] = 'Übergang';
$lang['js']['media_select'] = 'Dateien auswählen…';
$lang['js']['media_upload_btn'] = 'Hochladen';
$lang['js']['media_done_btn'] = 'Fertig';
$lang['js']['media_drop'] = 'Dateien hier draufziehen um sie hochzuladen';
$lang['js']['media_drop'] = 'Dateien hier hinziehen um sie hochzuladen';
$lang['js']['media_cancel'] = 'Entfernen';
$lang['js']['media_overwrt'] = 'Existierende Dateien überschreiben';
$lang['rssfailed'] = 'Es ist ein Fehler beim Laden des Feeds aufgetreten: ';
@ -293,9 +300,9 @@ $lang['i_badval'] = '<code>%s</code> - unerlaubter oder leerer Wert
$lang['i_success'] = 'Die Konfiguration wurde erfolgreich abgeschlossen. Du kannst jetzt die install.php löschen. Dein <a href="doku.php?id=wiki:welcome">neues DokuWiki</a> ist jetzt für dich bereit.';
$lang['i_failure'] = 'Es sind Fehler beim Schreiben der Konfigurationsdateien aufgetreten. Du musst diese von Hand beheben, bevor du dein <a href="doku.php?id=wiki:welcome">neues DokuWiki</a> nutzen kannst.';
$lang['i_policy'] = 'Anfangseinstellungen der Zugangskontrolle (ACL)';
$lang['i_pol0'] = 'Offenes Wiki (lesen, schreiben und hochladen für alle Nutzer)';
$lang['i_pol1'] = 'Öffentliches Wiki (Lesen für alle, Schreiben und Hochladen nur für registrierte Nutzer)';
$lang['i_pol2'] = 'Geschlossenes Wiki (Lesen, Schreiben und Hochladen nur für registrierte Nutzer)';
$lang['i_pol0'] = 'Offenes Wiki (lesen, schreiben und hochladen für alle Benutzer)';
$lang['i_pol1'] = 'Öffentliches Wiki (Lesen für alle, Schreiben und Hochladen nur für registrierte Benutzer)';
$lang['i_pol2'] = 'Geschlossenes Wiki (Lesen, Schreiben und Hochladen nur für registrierte Benutzer)';
$lang['i_retry'] = 'Wiederholen';
$lang['i_license'] = 'Bitte wähle die Lizenz aus unter der die Wiki-Inhalte veröffentlicht werden sollen:';
$lang['i_license_none'] = 'Keine Lizenzinformationen anzeigen';

View File

@ -1,4 +1,4 @@
====== Seite gesperrt ======
Diese Seite ist momentan von einem anderen Nutzer gesperrt. Warte, bis dieser mit dem Bearbeiten fertig ist oder die Sperre abläuft.
Diese Seite ist momentan von einem anderen Benutzer gesperrt. Warte, bis dieser mit dem Bearbeiten fertig ist oder die Sperre abläuft.

View File

@ -1,6 +1,6 @@
Hallo @FULLNAME@!
Hier sind deine Nutzerdaten für @TITLE@ auf @DOKUWIKIURL@
Hier sind deine Benutzerdaten für @TITLE@ auf @DOKUWIKIURL@
Benutzername: @LOGIN@
Passwort : @PASSWORD@

View File

@ -1,4 +1,4 @@
====== Als neuer Nutzer registrieren ======
====== Als neuer Benutzer registrieren ======
Bitte fülle alle Felder aus, um einen neuen Nutzer-Account in diesem Wiki anzulegen. Stelle sicher, dass eine **gültige E-Mail-Adresse** angegeben wird - das Passwort wird an diese Adresse gesendet. Der Nutzername sollte aus einem Wort ohne Umlaute, Leer- oder Sonderzeichen bestehen.
Bitte fülle alle Felder aus, um einen neuen Benutzer-Account in diesem Wiki anzulegen. Stelle sicher, dass eine **gültige E-Mail-Adresse** angegeben wird - das Passwort wird an diese Adresse gesendet. Der Benutzername sollte aus einem Wort ohne Umlaute, Leer- oder Sonderzeichen bestehen.

View File

@ -15,11 +15,11 @@ hosten, über FTP oder ein entsprechendes Werkzeug (z.B. cPanel) durchführen.</
(<abbr title="access control list">ACL</abbr>) von DokuWiki, welcher eine
Administratoranmeldung und damit Zugang zum Administrationsmenu ermöglicht.
Dort können Sie dann weitere Tätigkeiten wie das Installieren von Plugins, dass
Verwalten von Nutzern und das Ändern von Konfigurationseinstellungen durchführen.
Verwalten von Benutzern und das Ändern von Konfigurationseinstellungen durchführen.
Das Nutzen der Zugangskontrolle ist nicht zwingend erforderlich, es erleichtert aber
die Administration von DokuWiki.</p>
<p>Erfahrene Anwender oder Nutzer mit speziellen Konfigurationsbedürfnissen sollten
<p>Erfahrene Anwender oder Benutzer mit speziellen Konfigurationsbedürfnissen sollten
die folgenden Links nutzen, um sich über
<a href="http://dokuwiki.org/install">Installation</a>
und <a href="http://dokuwiki.org/config">Konfiguration</a> zu

View File

@ -65,6 +65,7 @@ $lang['btn_revert'] = 'Wiederherstellen';
$lang['btn_register'] = 'Registrieren';
$lang['btn_apply'] = 'Übernehmen';
$lang['btn_media'] = 'Medien-Manager';
$lang['btn_deleteuser'] = 'Benutzerprofil löschen';
$lang['loggedinas'] = 'Angemeldet als';
$lang['user'] = 'Benutzername';
$lang['pass'] = 'Passwort';
@ -75,14 +76,15 @@ $lang['remember'] = 'Angemeldet bleiben';
$lang['fullname'] = 'Voller Name';
$lang['email'] = 'E-Mail';
$lang['profile'] = 'Benutzerprofil';
$lang['badlogin'] = 'Nutzername oder Passwort sind falsch.';
$lang['badlogin'] = 'Benutzername oder Passwort sind falsch.';
$lang['badpassconfirm'] = 'Das Passwort war falsch.';
$lang['minoredit'] = 'kleine Änderung';
$lang['draftdate'] = 'Entwurf gespeichert am';
$lang['nosecedit'] = 'Diese Seite wurde in der Zwischenzeit geändert, Sektionsinfo ist veraltet, lade stattdessen volle Seite.';
$lang['regmissing'] = 'Alle Felder müssen ausgefüllt werden.';
$lang['reguexists'] = 'Der Nutzername existiert leider schon.';
$lang['regsuccess'] = 'Der neue Nutzer wurde angelegt und das Passwort per E-Mail versandt.';
$lang['regsuccess2'] = 'Der neue Nutzer wurde angelegt.';
$lang['reguexists'] = 'Der Benutzername existiert leider schon.';
$lang['regsuccess'] = 'Der neue Benutzer wurde angelegt und das Passwort per E-Mail versandt.';
$lang['regsuccess2'] = 'Der neue Benutzer wurde angelegt.';
$lang['regmailfail'] = 'Offenbar ist ein Fehler beim Versenden der Passwort-E-Mail aufgetreten. Bitte wenden Sie sich an den Wiki-Admin.';
$lang['regbadmail'] = 'Die angegebene E-Mail-Adresse scheint ungültig zu sein. Falls dies ein Fehler ist, wenden Sie sich bitte an den Wiki-Admin.';
$lang['regbadpass'] = 'Die beiden eingegeben Passwörter stimmen nicht überein. Bitte versuchen Sie es noch einmal.';
@ -92,6 +94,11 @@ $lang['profna'] = 'Änderung des Benutzerprofils in diesem Wiki n
$lang['profnochange'] = 'Keine Änderungen, nichts zu tun.';
$lang['profnoempty'] = 'Es muss ein Name und eine E-Mail-Adresse angegeben werden.';
$lang['profchanged'] = 'Benutzerprofil erfolgreich geändert.';
$lang['profnodelete'] = 'Dieses Wiki unterstützt nicht das Löschen von Benutzern.';
$lang['profdeleteuser'] = 'Benutzerprofil löschen';
$lang['profdeleted'] = 'Ihr Benutzerprofil wurde im Wiki gelöscht.';
$lang['profconfdelete'] = 'Ich möchte mein Benutzerprofil löschen.<br/> Diese Aktion ist nicht umkehrbar.';
$lang['profconfdeletemissing'] = 'Bestätigungs-Checkbox wurde nicht angehakt.';
$lang['pwdforget'] = 'Passwort vergessen? Fordere ein neues an';
$lang['resendna'] = 'Passwörter versenden ist in diesem Wiki nicht möglich.';
$lang['resendpwd'] = 'Neues Passwort setzen für';
@ -148,7 +155,7 @@ $lang['js']['media_diff_portions'] = 'Übergang';
$lang['js']['media_select'] = 'Dateien auswählen…';
$lang['js']['media_upload_btn'] = 'Hochladen';
$lang['js']['media_done_btn'] = 'Fertig';
$lang['js']['media_drop'] = 'Dateien hier draufziehen um sie hochzuladen';
$lang['js']['media_drop'] = 'Dateien hier hinziehen um sie hochzuladen';
$lang['js']['media_cancel'] = 'Entfernen';
$lang['js']['media_overwrt'] = 'Existierende Dateien überschreiben';
$lang['rssfailed'] = 'Es ist ein Fehler beim Laden des Feeds aufgetreten: ';
@ -235,7 +242,7 @@ $lang['qb_extlink'] = 'Externer Link';
$lang['qb_hr'] = 'Horizontale Linie';
$lang['qb_ol'] = 'Nummerierter Listenpunkt';
$lang['qb_ul'] = 'Listenpunkt';
$lang['qb_media'] = 'Bilder und andere Dateien hinzufügen';
$lang['qb_media'] = 'Bilder und andere Dateien hinzufügen (öffnet sich in einem neuen Fenster)';
$lang['qb_sig'] = 'Unterschrift einfügen';
$lang['qb_smileys'] = 'Smileys';
$lang['qb_chars'] = 'Sonderzeichen';
@ -294,9 +301,9 @@ $lang['i_badval'] = '<code>%s</code> - unerlaubter oder leerer Wert
$lang['i_success'] = 'Die Konfiguration wurde erfolgreich abgeschlossen. Sie können jetzt die install.php löschen. Ihr <a href="doku.php?id=wiki:welcome">neues DokuWiki</a> ist jetzt für Sie bereit.';
$lang['i_failure'] = 'Es sind Fehler beim Schreiben der Konfigurationsdateien aufgetreten. Sie müssen diese von Hand beheben, bevor Sie Ihr <a href="doku.php?id=wiki:welcome">neues DokuWiki</a> nutzen können.';
$lang['i_policy'] = 'Anfangseinstellungen der Zugangskontrolle (ACL)';
$lang['i_pol0'] = 'Offenes Wiki (lesen, schreiben und hochladen für alle Nutzer)';
$lang['i_pol1'] = 'Öffentliches Wiki (Lesen für alle, Schreiben und Hochladen nur für registrierte Nutzer)';
$lang['i_pol2'] = 'Geschlossenes Wiki (Lesen, Schreiben und Hochladen nur für registrierte Nutzer)';
$lang['i_pol0'] = 'Offenes Wiki (lesen, schreiben und hochladen für alle Benutzer)';
$lang['i_pol1'] = 'Öffentliches Wiki (Lesen für alle, Schreiben und Hochladen nur für registrierte Benutzer)';
$lang['i_pol2'] = 'Geschlossenes Wiki (Lesen, Schreiben und Hochladen nur für registrierte Benutzer)';
$lang['i_retry'] = 'Wiederholen';
$lang['i_license'] = 'Bitte wählen Sie die Lizenz, unter die Sie Ihre Inhalte stellen möchten:';
$lang['i_license_none'] = 'Lizensierungsinformation nicht anzeigen';

View File

@ -1,4 +1,4 @@
====== Seite gesperrt ======
Diese Seite ist momentan von einem anderen Nutzer gesperrt. Warten Sie, bis dieser mit dem Bearbeiten fertig ist oder die Sperre abläuft.
Diese Seite ist momentan von einem anderen Benutzer gesperrt. Warten Sie, bis dieser mit dem Bearbeiten fertig ist oder die Sperre abläuft.

View File

@ -1,6 +1,6 @@
Hallo @FULLNAME@!
Hier sind Ihre Nutzerdaten für @TITLE@ auf @DOKUWIKIURL@
Hier sind Ihre Benutzerdaten für @TITLE@ auf @DOKUWIKIURL@
Benutzername: @LOGIN@
Passwort : @PASSWORD@

View File

@ -1,4 +1,4 @@
====== Als neuer Nutzer registrieren ======
====== Als neuer Benutzer registrieren ======
Bitte füllen Sie alle Felder aus, um einen neuen Nutzer-Account in diesem Wiki anzulegen. Stellen Sie sicher, dass eine **gültige E-Mail-Adresse** angegeben wird - das Passwort wird an diese Adresse gesendet. Der Nutzername sollte aus einem Wort ohne Umlaute, Leer- oder Sonderzeichen bestehen.
Bitte füllen Sie alle Felder aus, um einen neuen Benutzer-Account in diesem Wiki anzulegen. Stellen Sie sicher, dass eine **gültige E-Mail-Adresse** angegeben wird - das Passwort wird an diese Adresse gesendet. Der Benutzername sollte aus einem Wort ohne Umlaute, Leer- oder Sonderzeichen bestehen.

View File

@ -51,6 +51,7 @@ $lang['btn_revert'] = 'Restore';
$lang['btn_register'] = 'Register';
$lang['btn_apply'] = 'Apply';
$lang['btn_media'] = 'Media Manager';
$lang['btn_deleteuser'] = 'Remove My Account';
$lang['loggedinas'] = 'Logged in as';
$lang['user'] = 'Username';
@ -63,6 +64,7 @@ $lang['fullname'] = 'Real name';
$lang['email'] = 'E-Mail';
$lang['profile'] = 'User Profile';
$lang['badlogin'] = 'Sorry, username or password was wrong.';
$lang['badpassconfirm'] = 'Sorry, the password was wrong';
$lang['minoredit'] = 'Minor Changes';
$lang['draftdate'] = 'Draft autosaved on'; // full dformat date will be added
$lang['nosecedit'] = 'The page was changed in the meantime, section info was out of date loaded full page instead.';
@ -81,6 +83,11 @@ $lang['profna'] = 'This wiki does not support profile modificatio
$lang['profnochange'] = 'No changes, nothing to do.';
$lang['profnoempty'] = 'An empty name or email address is not allowed.';
$lang['profchanged'] = 'User profile successfully updated.';
$lang['profnodelete'] = 'This wiki does not support deleting users';
$lang['profdeleteuser'] = 'Delete Account';
$lang['profdeleted'] = 'Your user account has been deleted from this wiki';
$lang['profconfdelete'] = 'I wish to remove my account from this wiki. <br/> This action can not be undone.';
$lang['profconfdeletemissing'] = 'Confirmation check box not ticked';
$lang['pwdforget'] = 'Forgotten your password? Get a new one';
$lang['resendna'] = 'This wiki does not support password resending.';
@ -234,7 +241,7 @@ $lang['qb_extlink'] = 'External Link';
$lang['qb_hr'] = 'Horizontal Rule';
$lang['qb_ol'] = 'Ordered List Item';
$lang['qb_ul'] = 'Unordered List Item';
$lang['qb_media'] = 'Add Images and other files';
$lang['qb_media'] = 'Add Images and other files (opens in a new window)';
$lang['qb_sig'] = 'Insert Signature';
$lang['qb_smileys'] = 'Smileys';
$lang['qb_chars'] = 'Special Chars';

3481
inc/lessc.inc.php Normal file

File diff suppressed because it is too large Load Diff

View File

@ -82,12 +82,17 @@ function load_autoload($name){
'RemoteAPI' => DOKU_INC.'inc/remote.php',
'RemoteAPICore' => DOKU_INC.'inc/RemoteAPICore.php',
'Subscription' => DOKU_INC.'inc/subscription.php',
'Crypt_Base' => DOKU_INC.'inc/phpseclib/Crypt_Base.php',
'Crypt_Rijndael' => DOKU_INC.'inc/phpseclib/Crypt_Rijndael.php',
'Crypt_AES' => DOKU_INC.'inc/phpseclib/Crypt_AES.php',
'Crypt_Hash' => DOKU_INC.'inc/phpseclib/Crypt_Hash.php',
'lessc' => DOKU_INC.'inc/lessc.inc.php',
'DokuWiki_Action_Plugin' => DOKU_PLUGIN.'action.php',
'DokuWiki_Admin_Plugin' => DOKU_PLUGIN.'admin.php',
'DokuWiki_Syntax_Plugin' => DOKU_PLUGIN.'syntax.php',
'DokuWiki_Remote_Plugin' => DOKU_PLUGIN.'remote.php',
'DokuWiki_Auth_Plugin' => DOKU_PLUGIN.'auth.php',
'DokuWiki_Auth_Plugin' => DOKU_PLUGIN.'auth.php',
);

View File

@ -178,7 +178,7 @@ function media_inuse($id) {
global $conf;
$mediareferences = array();
if($conf['refcheck']){
$mediareferences = ft_mediause($id,$conf['refshow']);
$mediareferences = ft_mediause($id,true);
if(!count($mediareferences)) {
return false;
} else {

View File

@ -282,8 +282,10 @@ class Doku_Renderer_metadata extends Doku_Renderer {
function internallink($id, $name = NULL){
global $ID;
if(is_array($name))
if(is_array($name)) {
$this->_firstimage($name['src']);
if ($name['type'] == 'internalmedia') $this->_recordMediaUsage($name['src']);
}
$default = $this->_simpleTitle($id);
@ -304,8 +306,10 @@ class Doku_Renderer_metadata extends Doku_Renderer {
}
function externallink($url, $name = NULL){
if(is_array($name))
if(is_array($name)) {
$this->_firstimage($name['src']);
if ($name['type'] == 'internalmedia') $this->_recordMediaUsage($name['src']);
}
if ($this->capture){
$this->doc .= $this->_getLinkTitle($name, '<' . $url . '>');
@ -313,8 +317,10 @@ class Doku_Renderer_metadata extends Doku_Renderer {
}
function interwikilink($match, $name = NULL, $wikiName, $wikiUri){
if(is_array($name))
if(is_array($name)) {
$this->_firstimage($name['src']);
if ($name['type'] == 'internalmedia') $this->_recordMediaUsage($name['src']);
}
if ($this->capture){
list($wikiUri, $hash) = explode('#', $wikiUri, 2);
@ -324,8 +330,10 @@ class Doku_Renderer_metadata extends Doku_Renderer {
}
function windowssharelink($url, $name = NULL){
if(is_array($name))
if(is_array($name)) {
$this->_firstimage($name['src']);
if ($name['type'] == 'internalmedia') $this->_recordMediaUsage($name['src']);
}
if ($this->capture){
if ($name) $this->doc .= $name;
@ -334,8 +342,10 @@ class Doku_Renderer_metadata extends Doku_Renderer {
}
function emaillink($address, $name = NULL){
if(is_array($name))
if(is_array($name)) {
$this->_firstimage($name['src']);
if ($name['type'] == 'internalmedia') $this->_recordMediaUsage($name['src']);
}
if ($this->capture){
if ($name) $this->doc .= $name;
@ -347,6 +357,7 @@ class Doku_Renderer_metadata extends Doku_Renderer {
$height=NULL, $cache=NULL, $linking=NULL){
if ($this->capture && $title) $this->doc .= '['.$title.']';
$this->_firstimage($src);
$this->_recordMediaUsage($src);
}
function externalmedia($src, $title=NULL, $align=NULL, $width=NULL,
@ -439,6 +450,15 @@ class Doku_Renderer_metadata extends Doku_Renderer {
$this->firstimage = $src;
}
}
function _recordMediaUsage($src) {
global $ID;
list ($src, $hash) = explode('#', $src, 2);
if (media_isexternal($src)) return;
resolve_mediaid(getNS($ID), $src, $exists);
$this->meta['relation']['media'][$src] = $exists;
}
}
//Setup VIM: ex: et ts=4 :

View File

@ -454,8 +454,8 @@ class Doku_Parser_Mode_table extends Doku_Parser_Mode {
}
function connectTo($mode) {
$this->Lexer->addEntryPattern('\n\^',$mode,'table');
$this->Lexer->addEntryPattern('\n\|',$mode,'table');
$this->Lexer->addEntryPattern('\s*\n\^',$mode,'table');
$this->Lexer->addEntryPattern('\s*\n\|',$mode,'table');
}
function postConnect() {
@ -555,7 +555,7 @@ class Doku_Parser_Mode_preformatted extends Doku_Parser_Mode {
class Doku_Parser_Mode_code extends Doku_Parser_Mode {
function connectTo($mode) {
$this->Lexer->addEntryPattern('<code(?=.*</code>)',$mode,'code');
$this->Lexer->addEntryPattern('<code\b(?=.*</code>)',$mode,'code');
}
function postConnect() {
@ -571,7 +571,7 @@ class Doku_Parser_Mode_code extends Doku_Parser_Mode {
class Doku_Parser_Mode_file extends Doku_Parser_Mode {
function connectTo($mode) {
$this->Lexer->addEntryPattern('<file(?=.*</file>)',$mode,'file');
$this->Lexer->addEntryPattern('<file\b(?=.*</file>)',$mode,'file');
}
function postConnect() {

188
inc/phpseclib/Crypt_AES.php Normal file
View File

@ -0,0 +1,188 @@
<?php
/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
/**
* Pure-PHP implementation of AES.
*
* Uses mcrypt, if available/possible, and an internal implementation, otherwise.
*
* PHP versions 4 and 5
*
* If {@link Crypt_AES::setKeyLength() setKeyLength()} isn't called, it'll be calculated from
* {@link Crypt_AES::setKey() setKey()}. ie. if the key is 128-bits, the key length will be 128-bits. If it's 136-bits
* it'll be null-padded to 192-bits and 192 bits will be the key length until {@link Crypt_AES::setKey() setKey()}
* is called, again, at which point, it'll be recalculated.
*
* Since Crypt_AES extends Crypt_Rijndael, some functions are available to be called that, in the context of AES, don't
* make a whole lot of sense. {@link Crypt_AES::setBlockLength() setBlockLength()}, for instance. Calling that function,
* however possible, won't do anything (AES has a fixed block length whereas Rijndael has a variable one).
*
* Here's a short example of how to use this library:
* <code>
* <?php
* include('Crypt/AES.php');
*
* $aes = new Crypt_AES();
*
* $aes->setKey('abcdefghijklmnop');
*
* $size = 10 * 1024;
* $plaintext = '';
* for ($i = 0; $i < $size; $i++) {
* $plaintext.= 'a';
* }
*
* echo $aes->decrypt($aes->encrypt($plaintext));
* ?>
* </code>
*
* LICENSE: Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*
* @category Crypt
* @package Crypt_AES
* @author Jim Wigginton <terrafrost@php.net>
* @copyright MMVIII Jim Wigginton
* @license http://www.opensource.org/licenses/mit-license.html MIT License
* @link http://phpseclib.sourceforge.net
*/
/**
* Include Crypt_Rijndael
*/
if (!class_exists('Crypt_Rijndael')) {
require_once('Rijndael.php');
}
/**#@+
* @access public
* @see Crypt_AES::encrypt()
* @see Crypt_AES::decrypt()
*/
/**
* Encrypt / decrypt using the Counter mode.
*
* Set to -1 since that's what Crypt/Random.php uses to index the CTR mode.
*
* @link http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation#Counter_.28CTR.29
*/
define('CRYPT_AES_MODE_CTR', CRYPT_MODE_CTR);
/**
* Encrypt / decrypt using the Electronic Code Book mode.
*
* @link http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation#Electronic_codebook_.28ECB.29
*/
define('CRYPT_AES_MODE_ECB', CRYPT_MODE_ECB);
/**
* Encrypt / decrypt using the Code Book Chaining mode.
*
* @link http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation#Cipher-block_chaining_.28CBC.29
*/
define('CRYPT_AES_MODE_CBC', CRYPT_MODE_CBC);
/**
* Encrypt / decrypt using the Cipher Feedback mode.
*
* @link http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation#Cipher_feedback_.28CFB.29
*/
define('CRYPT_AES_MODE_CFB', CRYPT_MODE_CFB);
/**
* Encrypt / decrypt using the Cipher Feedback mode.
*
* @link http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation#Output_feedback_.28OFB.29
*/
define('CRYPT_AES_MODE_OFB', CRYPT_MODE_OFB);
/**#@-*/
/**#@+
* @access private
* @see Crypt_AES::Crypt_AES()
*/
/**
* Toggles the internal implementation
*/
define('CRYPT_AES_MODE_INTERNAL', CRYPT_MODE_INTERNAL);
/**
* Toggles the mcrypt implementation
*/
define('CRYPT_AES_MODE_MCRYPT', CRYPT_MODE_MCRYPT);
/**#@-*/
/**
* Pure-PHP implementation of AES.
*
* @author Jim Wigginton <terrafrost@php.net>
* @version 0.1.0
* @access public
* @package Crypt_AES
*/
class Crypt_AES extends Crypt_Rijndael {
/**
* The namespace used by the cipher for its constants.
*
* @see Crypt_Base::const_namespace
* @var String
* @access private
*/
var $const_namespace = 'AES';
/**
* Default Constructor.
*
* Determines whether or not the mcrypt extension should be used.
*
* $mode could be:
*
* - CRYPT_AES_MODE_ECB
*
* - CRYPT_AES_MODE_CBC
*
* - CRYPT_AES_MODE_CTR
*
* - CRYPT_AES_MODE_CFB
*
* - CRYPT_AES_MODE_OFB
*
* If not explictly set, CRYPT_AES_MODE_CBC will be used.
*
* @see Crypt_Rijndael::Crypt_Rijndael()
* @see Crypt_Base::Crypt_Base()
* @param optional Integer $mode
* @access public
*/
function Crypt_AES($mode = CRYPT_AES_MODE_CBC)
{
parent::Crypt_Rijndael($mode);
}
/**
* Dummy function
*
* Since Crypt_AES extends Crypt_Rijndael, this function is, technically, available, but it doesn't do anything.
*
* @see Crypt_Rijndael::setBlockLength()
* @access public
* @param Integer $length
*/
function setBlockLength($length)
{
return;
}
}
// vim: ts=4:sw=4:et:
// vim6: fdl=1:

1989
inc/phpseclib/Crypt_Base.php Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,823 @@
<?php
/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
/**
* Pure-PHP implementations of keyed-hash message authentication codes (HMACs) and various cryptographic hashing functions.
*
* Uses hash() or mhash() if available and an internal implementation, otherwise. Currently supports the following:
*
* md2, md5, md5-96, sha1, sha1-96, sha256, sha384, and sha512
*
* If {@link Crypt_Hash::setKey() setKey()} is called, {@link Crypt_Hash::hash() hash()} will return the HMAC as opposed to
* the hash. If no valid algorithm is provided, sha1 will be used.
*
* PHP versions 4 and 5
*
* {@internal The variable names are the same as those in
* {@link http://tools.ietf.org/html/rfc2104#section-2 RFC2104}.}}
*
* Here's a short example of how to use this library:
* <code>
* <?php
* include('Crypt/Hash.php');
*
* $hash = new Crypt_Hash('sha1');
*
* $hash->setKey('abcdefg');
*
* echo base64_encode($hash->hash('abcdefg'));
* ?>
* </code>
*
* LICENSE: Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*
* @category Crypt
* @package Crypt_Hash
* @author Jim Wigginton <terrafrost@php.net>
* @copyright MMVII Jim Wigginton
* @license http://www.opensource.org/licenses/mit-license.html MIT License
* @link http://phpseclib.sourceforge.net
*/
/**#@+
* @access private
* @see Crypt_Hash::Crypt_Hash()
*/
/**
* Toggles the internal implementation
*/
define('CRYPT_HASH_MODE_INTERNAL', 1);
/**
* Toggles the mhash() implementation, which has been deprecated on PHP 5.3.0+.
*/
define('CRYPT_HASH_MODE_MHASH', 2);
/**
* Toggles the hash() implementation, which works on PHP 5.1.2+.
*/
define('CRYPT_HASH_MODE_HASH', 3);
/**#@-*/
/**
* Pure-PHP implementations of keyed-hash message authentication codes (HMACs) and various cryptographic hashing functions.
*
* @author Jim Wigginton <terrafrost@php.net>
* @version 0.1.0
* @access public
* @package Crypt_Hash
*/
class Crypt_Hash {
/**
* Byte-length of compression blocks / key (Internal HMAC)
*
* @see Crypt_Hash::setAlgorithm()
* @var Integer
* @access private
*/
var $b;
/**
* Byte-length of hash output (Internal HMAC)
*
* @see Crypt_Hash::setHash()
* @var Integer
* @access private
*/
var $l = false;
/**
* Hash Algorithm
*
* @see Crypt_Hash::setHash()
* @var String
* @access private
*/
var $hash;
/**
* Key
*
* @see Crypt_Hash::setKey()
* @var String
* @access private
*/
var $key = false;
/**
* Outer XOR (Internal HMAC)
*
* @see Crypt_Hash::setKey()
* @var String
* @access private
*/
var $opad;
/**
* Inner XOR (Internal HMAC)
*
* @see Crypt_Hash::setKey()
* @var String
* @access private
*/
var $ipad;
/**
* Default Constructor.
*
* @param optional String $hash
* @return Crypt_Hash
* @access public
*/
function Crypt_Hash($hash = 'sha1')
{
if ( !defined('CRYPT_HASH_MODE') ) {
switch (true) {
case extension_loaded('hash'):
define('CRYPT_HASH_MODE', CRYPT_HASH_MODE_HASH);
break;
case extension_loaded('mhash'):
define('CRYPT_HASH_MODE', CRYPT_HASH_MODE_MHASH);
break;
default:
define('CRYPT_HASH_MODE', CRYPT_HASH_MODE_INTERNAL);
}
}
$this->setHash($hash);
}
/**
* Sets the key for HMACs
*
* Keys can be of any length.
*
* @access public
* @param optional String $key
*/
function setKey($key = false)
{
$this->key = $key;
}
/**
* Sets the hash function.
*
* @access public
* @param String $hash
*/
function setHash($hash)
{
$hash = strtolower($hash);
switch ($hash) {
case 'md5-96':
case 'sha1-96':
$this->l = 12; // 96 / 8 = 12
break;
case 'md2':
case 'md5':
$this->l = 16;
break;
case 'sha1':
$this->l = 20;
break;
case 'sha256':
$this->l = 32;
break;
case 'sha384':
$this->l = 48;
break;
case 'sha512':
$this->l = 64;
}
switch ($hash) {
case 'md2':
$mode = CRYPT_HASH_MODE == CRYPT_HASH_MODE_HASH && in_array('md2', hash_algos()) ?
CRYPT_HASH_MODE_HASH : CRYPT_HASH_MODE_INTERNAL;
break;
case 'sha384':
case 'sha512':
$mode = CRYPT_HASH_MODE == CRYPT_HASH_MODE_MHASH ? CRYPT_HASH_MODE_INTERNAL : CRYPT_HASH_MODE;
break;
default:
$mode = CRYPT_HASH_MODE;
}
switch ( $mode ) {
case CRYPT_HASH_MODE_MHASH:
switch ($hash) {
case 'md5':
case 'md5-96':
$this->hash = MHASH_MD5;
break;
case 'sha256':
$this->hash = MHASH_SHA256;
break;
case 'sha1':
case 'sha1-96':
default:
$this->hash = MHASH_SHA1;
}
return;
case CRYPT_HASH_MODE_HASH:
switch ($hash) {
case 'md5':
case 'md5-96':
$this->hash = 'md5';
return;
case 'md2':
case 'sha256':
case 'sha384':
case 'sha512':
$this->hash = $hash;
return;
case 'sha1':
case 'sha1-96':
default:
$this->hash = 'sha1';
}
return;
}
switch ($hash) {
case 'md2':
$this->b = 16;
$this->hash = array($this, '_md2');
break;
case 'md5':
case 'md5-96':
$this->b = 64;
$this->hash = array($this, '_md5');
break;
case 'sha256':
$this->b = 64;
$this->hash = array($this, '_sha256');
break;
case 'sha384':
case 'sha512':
$this->b = 128;
$this->hash = array($this, '_sha512');
break;
case 'sha1':
case 'sha1-96':
default:
$this->b = 64;
$this->hash = array($this, '_sha1');
}
$this->ipad = str_repeat(chr(0x36), $this->b);
$this->opad = str_repeat(chr(0x5C), $this->b);
}
/**
* Compute the HMAC.
*
* @access public
* @param String $text
* @return String
*/
function hash($text)
{
$mode = is_array($this->hash) ? CRYPT_HASH_MODE_INTERNAL : CRYPT_HASH_MODE;
if (!empty($this->key) || is_string($this->key)) {
switch ( $mode ) {
case CRYPT_HASH_MODE_MHASH:
$output = mhash($this->hash, $text, $this->key);
break;
case CRYPT_HASH_MODE_HASH:
$output = hash_hmac($this->hash, $text, $this->key, true);
break;
case CRYPT_HASH_MODE_INTERNAL:
/* "Applications that use keys longer than B bytes will first hash the key using H and then use the
resultant L byte string as the actual key to HMAC."
-- http://tools.ietf.org/html/rfc2104#section-2 */
$key = strlen($this->key) > $this->b ? call_user_func($this->hash, $this->key) : $this->key;
$key = str_pad($key, $this->b, chr(0)); // step 1
$temp = $this->ipad ^ $key; // step 2
$temp .= $text; // step 3
$temp = call_user_func($this->hash, $temp); // step 4
$output = $this->opad ^ $key; // step 5
$output.= $temp; // step 6
$output = call_user_func($this->hash, $output); // step 7
}
} else {
switch ( $mode ) {
case CRYPT_HASH_MODE_MHASH:
$output = mhash($this->hash, $text);
break;
case CRYPT_HASH_MODE_HASH:
$output = hash($this->hash, $text, true);
break;
case CRYPT_HASH_MODE_INTERNAL:
$output = call_user_func($this->hash, $text);
}
}
return substr($output, 0, $this->l);
}
/**
* Returns the hash length (in bytes)
*
* @access public
* @return Integer
*/
function getLength()
{
return $this->l;
}
/**
* Wrapper for MD5
*
* @access private
* @param String $m
*/
function _md5($m)
{
return pack('H*', md5($m));
}
/**
* Wrapper for SHA1
*
* @access private
* @param String $m
*/
function _sha1($m)
{
return pack('H*', sha1($m));
}
/**
* Pure-PHP implementation of MD2
*
* See {@link http://tools.ietf.org/html/rfc1319 RFC1319}.
*
* @access private
* @param String $m
*/
function _md2($m)
{
static $s = array(
41, 46, 67, 201, 162, 216, 124, 1, 61, 54, 84, 161, 236, 240, 6,
19, 98, 167, 5, 243, 192, 199, 115, 140, 152, 147, 43, 217, 188,
76, 130, 202, 30, 155, 87, 60, 253, 212, 224, 22, 103, 66, 111, 24,
138, 23, 229, 18, 190, 78, 196, 214, 218, 158, 222, 73, 160, 251,
245, 142, 187, 47, 238, 122, 169, 104, 121, 145, 21, 178, 7, 63,
148, 194, 16, 137, 11, 34, 95, 33, 128, 127, 93, 154, 90, 144, 50,
39, 53, 62, 204, 231, 191, 247, 151, 3, 255, 25, 48, 179, 72, 165,
181, 209, 215, 94, 146, 42, 172, 86, 170, 198, 79, 184, 56, 210,
150, 164, 125, 182, 118, 252, 107, 226, 156, 116, 4, 241, 69, 157,
112, 89, 100, 113, 135, 32, 134, 91, 207, 101, 230, 45, 168, 2, 27,
96, 37, 173, 174, 176, 185, 246, 28, 70, 97, 105, 52, 64, 126, 15,
85, 71, 163, 35, 221, 81, 175, 58, 195, 92, 249, 206, 186, 197,
234, 38, 44, 83, 13, 110, 133, 40, 132, 9, 211, 223, 205, 244, 65,
129, 77, 82, 106, 220, 55, 200, 108, 193, 171, 250, 36, 225, 123,
8, 12, 189, 177, 74, 120, 136, 149, 139, 227, 99, 232, 109, 233,
203, 213, 254, 59, 0, 29, 57, 242, 239, 183, 14, 102, 88, 208, 228,
166, 119, 114, 248, 235, 117, 75, 10, 49, 68, 80, 180, 143, 237,
31, 26, 219, 153, 141, 51, 159, 17, 131, 20
);
// Step 1. Append Padding Bytes
$pad = 16 - (strlen($m) & 0xF);
$m.= str_repeat(chr($pad), $pad);
$length = strlen($m);
// Step 2. Append Checksum
$c = str_repeat(chr(0), 16);
$l = chr(0);
for ($i = 0; $i < $length; $i+= 16) {
for ($j = 0; $j < 16; $j++) {
// RFC1319 incorrectly states that C[j] should be set to S[c xor L]
//$c[$j] = chr($s[ord($m[$i + $j] ^ $l)]);
// per <http://www.rfc-editor.org/errata_search.php?rfc=1319>, however, C[j] should be set to S[c xor L] xor C[j]
$c[$j] = chr($s[ord($m[$i + $j] ^ $l)] ^ ord($c[$j]));
$l = $c[$j];
}
}
$m.= $c;
$length+= 16;
// Step 3. Initialize MD Buffer
$x = str_repeat(chr(0), 48);
// Step 4. Process Message in 16-Byte Blocks
for ($i = 0; $i < $length; $i+= 16) {
for ($j = 0; $j < 16; $j++) {
$x[$j + 16] = $m[$i + $j];
$x[$j + 32] = $x[$j + 16] ^ $x[$j];
}
$t = chr(0);
for ($j = 0; $j < 18; $j++) {
for ($k = 0; $k < 48; $k++) {
$x[$k] = $t = $x[$k] ^ chr($s[ord($t)]);
//$t = $x[$k] = $x[$k] ^ chr($s[ord($t)]);
}
$t = chr(ord($t) + $j);
}
}
// Step 5. Output
return substr($x, 0, 16);
}
/**
* Pure-PHP implementation of SHA256
*
* See {@link http://en.wikipedia.org/wiki/SHA_hash_functions#SHA-256_.28a_SHA-2_variant.29_pseudocode SHA-256 (a SHA-2 variant) pseudocode - Wikipedia}.
*
* @access private
* @param String $m
*/
function _sha256($m)
{
if (extension_loaded('suhosin')) {
return pack('H*', sha256($m));
}
// Initialize variables
$hash = array(
0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a, 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19
);
// Initialize table of round constants
// (first 32 bits of the fractional parts of the cube roots of the first 64 primes 2..311)
static $k = array(
0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,
0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,
0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,
0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,
0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,
0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,
0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,
0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2
);
// Pre-processing
$length = strlen($m);
// to round to nearest 56 mod 64, we'll add 64 - (length + (64 - 56)) % 64
$m.= str_repeat(chr(0), 64 - (($length + 8) & 0x3F));
$m[$length] = chr(0x80);
// we don't support hashing strings 512MB long
$m.= pack('N2', 0, $length << 3);
// Process the message in successive 512-bit chunks
$chunks = str_split($m, 64);
foreach ($chunks as $chunk) {
$w = array();
for ($i = 0; $i < 16; $i++) {
extract(unpack('Ntemp', $this->_string_shift($chunk, 4)));
$w[] = $temp;
}
// Extend the sixteen 32-bit words into sixty-four 32-bit words
for ($i = 16; $i < 64; $i++) {
$s0 = $this->_rightRotate($w[$i - 15], 7) ^
$this->_rightRotate($w[$i - 15], 18) ^
$this->_rightShift( $w[$i - 15], 3);
$s1 = $this->_rightRotate($w[$i - 2], 17) ^
$this->_rightRotate($w[$i - 2], 19) ^
$this->_rightShift( $w[$i - 2], 10);
$w[$i] = $this->_add($w[$i - 16], $s0, $w[$i - 7], $s1);
}
// Initialize hash value for this chunk
list($a, $b, $c, $d, $e, $f, $g, $h) = $hash;
// Main loop
for ($i = 0; $i < 64; $i++) {
$s0 = $this->_rightRotate($a, 2) ^
$this->_rightRotate($a, 13) ^
$this->_rightRotate($a, 22);
$maj = ($a & $b) ^
($a & $c) ^
($b & $c);
$t2 = $this->_add($s0, $maj);
$s1 = $this->_rightRotate($e, 6) ^
$this->_rightRotate($e, 11) ^
$this->_rightRotate($e, 25);
$ch = ($e & $f) ^
($this->_not($e) & $g);
$t1 = $this->_add($h, $s1, $ch, $k[$i], $w[$i]);
$h = $g;
$g = $f;
$f = $e;
$e = $this->_add($d, $t1);
$d = $c;
$c = $b;
$b = $a;
$a = $this->_add($t1, $t2);
}
// Add this chunk's hash to result so far
$hash = array(
$this->_add($hash[0], $a),
$this->_add($hash[1], $b),
$this->_add($hash[2], $c),
$this->_add($hash[3], $d),
$this->_add($hash[4], $e),
$this->_add($hash[5], $f),
$this->_add($hash[6], $g),
$this->_add($hash[7], $h)
);
}
// Produce the final hash value (big-endian)
return pack('N8', $hash[0], $hash[1], $hash[2], $hash[3], $hash[4], $hash[5], $hash[6], $hash[7]);
}
/**
* Pure-PHP implementation of SHA384 and SHA512
*
* @access private
* @param String $m
*/
function _sha512($m)
{
if (!class_exists('Math_BigInteger')) {
require_once('Math/BigInteger.php');
}
static $init384, $init512, $k;
if (!isset($k)) {
// Initialize variables
$init384 = array( // initial values for SHA384
'cbbb9d5dc1059ed8', '629a292a367cd507', '9159015a3070dd17', '152fecd8f70e5939',
'67332667ffc00b31', '8eb44a8768581511', 'db0c2e0d64f98fa7', '47b5481dbefa4fa4'
);
$init512 = array( // initial values for SHA512
'6a09e667f3bcc908', 'bb67ae8584caa73b', '3c6ef372fe94f82b', 'a54ff53a5f1d36f1',
'510e527fade682d1', '9b05688c2b3e6c1f', '1f83d9abfb41bd6b', '5be0cd19137e2179'
);
for ($i = 0; $i < 8; $i++) {
$init384[$i] = new Math_BigInteger($init384[$i], 16);
$init384[$i]->setPrecision(64);
$init512[$i] = new Math_BigInteger($init512[$i], 16);
$init512[$i]->setPrecision(64);
}
// Initialize table of round constants
// (first 64 bits of the fractional parts of the cube roots of the first 80 primes 2..409)
$k = array(
'428a2f98d728ae22', '7137449123ef65cd', 'b5c0fbcfec4d3b2f', 'e9b5dba58189dbbc',
'3956c25bf348b538', '59f111f1b605d019', '923f82a4af194f9b', 'ab1c5ed5da6d8118',
'd807aa98a3030242', '12835b0145706fbe', '243185be4ee4b28c', '550c7dc3d5ffb4e2',
'72be5d74f27b896f', '80deb1fe3b1696b1', '9bdc06a725c71235', 'c19bf174cf692694',
'e49b69c19ef14ad2', 'efbe4786384f25e3', '0fc19dc68b8cd5b5', '240ca1cc77ac9c65',
'2de92c6f592b0275', '4a7484aa6ea6e483', '5cb0a9dcbd41fbd4', '76f988da831153b5',
'983e5152ee66dfab', 'a831c66d2db43210', 'b00327c898fb213f', 'bf597fc7beef0ee4',
'c6e00bf33da88fc2', 'd5a79147930aa725', '06ca6351e003826f', '142929670a0e6e70',
'27b70a8546d22ffc', '2e1b21385c26c926', '4d2c6dfc5ac42aed', '53380d139d95b3df',
'650a73548baf63de', '766a0abb3c77b2a8', '81c2c92e47edaee6', '92722c851482353b',
'a2bfe8a14cf10364', 'a81a664bbc423001', 'c24b8b70d0f89791', 'c76c51a30654be30',
'd192e819d6ef5218', 'd69906245565a910', 'f40e35855771202a', '106aa07032bbd1b8',
'19a4c116b8d2d0c8', '1e376c085141ab53', '2748774cdf8eeb99', '34b0bcb5e19b48a8',
'391c0cb3c5c95a63', '4ed8aa4ae3418acb', '5b9cca4f7763e373', '682e6ff3d6b2b8a3',
'748f82ee5defb2fc', '78a5636f43172f60', '84c87814a1f0ab72', '8cc702081a6439ec',
'90befffa23631e28', 'a4506cebde82bde9', 'bef9a3f7b2c67915', 'c67178f2e372532b',
'ca273eceea26619c', 'd186b8c721c0c207', 'eada7dd6cde0eb1e', 'f57d4f7fee6ed178',
'06f067aa72176fba', '0a637dc5a2c898a6', '113f9804bef90dae', '1b710b35131c471b',
'28db77f523047d84', '32caab7b40c72493', '3c9ebe0a15c9bebc', '431d67c49c100d4c',
'4cc5d4becb3e42b6', '597f299cfc657e2a', '5fcb6fab3ad6faec', '6c44198c4a475817'
);
for ($i = 0; $i < 80; $i++) {
$k[$i] = new Math_BigInteger($k[$i], 16);
}
}
$hash = $this->l == 48 ? $init384 : $init512;
// Pre-processing
$length = strlen($m);
// to round to nearest 112 mod 128, we'll add 128 - (length + (128 - 112)) % 128
$m.= str_repeat(chr(0), 128 - (($length + 16) & 0x7F));
$m[$length] = chr(0x80);
// we don't support hashing strings 512MB long
$m.= pack('N4', 0, 0, 0, $length << 3);
// Process the message in successive 1024-bit chunks
$chunks = str_split($m, 128);
foreach ($chunks as $chunk) {
$w = array();
for ($i = 0; $i < 16; $i++) {
$temp = new Math_BigInteger($this->_string_shift($chunk, 8), 256);
$temp->setPrecision(64);
$w[] = $temp;
}
// Extend the sixteen 32-bit words into eighty 32-bit words
for ($i = 16; $i < 80; $i++) {
$temp = array(
$w[$i - 15]->bitwise_rightRotate(1),
$w[$i - 15]->bitwise_rightRotate(8),
$w[$i - 15]->bitwise_rightShift(7)
);
$s0 = $temp[0]->bitwise_xor($temp[1]);
$s0 = $s0->bitwise_xor($temp[2]);
$temp = array(
$w[$i - 2]->bitwise_rightRotate(19),
$w[$i - 2]->bitwise_rightRotate(61),
$w[$i - 2]->bitwise_rightShift(6)
);
$s1 = $temp[0]->bitwise_xor($temp[1]);
$s1 = $s1->bitwise_xor($temp[2]);
$w[$i] = $w[$i - 16]->copy();
$w[$i] = $w[$i]->add($s0);
$w[$i] = $w[$i]->add($w[$i - 7]);
$w[$i] = $w[$i]->add($s1);
}
// Initialize hash value for this chunk
$a = $hash[0]->copy();
$b = $hash[1]->copy();
$c = $hash[2]->copy();
$d = $hash[3]->copy();
$e = $hash[4]->copy();
$f = $hash[5]->copy();
$g = $hash[6]->copy();
$h = $hash[7]->copy();
// Main loop
for ($i = 0; $i < 80; $i++) {
$temp = array(
$a->bitwise_rightRotate(28),
$a->bitwise_rightRotate(34),
$a->bitwise_rightRotate(39)
);
$s0 = $temp[0]->bitwise_xor($temp[1]);
$s0 = $s0->bitwise_xor($temp[2]);
$temp = array(
$a->bitwise_and($b),
$a->bitwise_and($c),
$b->bitwise_and($c)
);
$maj = $temp[0]->bitwise_xor($temp[1]);
$maj = $maj->bitwise_xor($temp[2]);
$t2 = $s0->add($maj);
$temp = array(
$e->bitwise_rightRotate(14),
$e->bitwise_rightRotate(18),
$e->bitwise_rightRotate(41)
);
$s1 = $temp[0]->bitwise_xor($temp[1]);
$s1 = $s1->bitwise_xor($temp[2]);
$temp = array(
$e->bitwise_and($f),
$g->bitwise_and($e->bitwise_not())
);
$ch = $temp[0]->bitwise_xor($temp[1]);
$t1 = $h->add($s1);
$t1 = $t1->add($ch);
$t1 = $t1->add($k[$i]);
$t1 = $t1->add($w[$i]);
$h = $g->copy();
$g = $f->copy();
$f = $e->copy();
$e = $d->add($t1);
$d = $c->copy();
$c = $b->copy();
$b = $a->copy();
$a = $t1->add($t2);
}
// Add this chunk's hash to result so far
$hash = array(
$hash[0]->add($a),
$hash[1]->add($b),
$hash[2]->add($c),
$hash[3]->add($d),
$hash[4]->add($e),
$hash[5]->add($f),
$hash[6]->add($g),
$hash[7]->add($h)
);
}
// Produce the final hash value (big-endian)
// (Crypt_Hash::hash() trims the output for hashes but not for HMACs. as such, we trim the output here)
$temp = $hash[0]->toBytes() . $hash[1]->toBytes() . $hash[2]->toBytes() . $hash[3]->toBytes() .
$hash[4]->toBytes() . $hash[5]->toBytes();
if ($this->l != 48) {
$temp.= $hash[6]->toBytes() . $hash[7]->toBytes();
}
return $temp;
}
/**
* Right Rotate
*
* @access private
* @param Integer $int
* @param Integer $amt
* @see _sha256()
* @return Integer
*/
function _rightRotate($int, $amt)
{
$invamt = 32 - $amt;
$mask = (1 << $invamt) - 1;
return (($int << $invamt) & 0xFFFFFFFF) | (($int >> $amt) & $mask);
}
/**
* Right Shift
*
* @access private
* @param Integer $int
* @param Integer $amt
* @see _sha256()
* @return Integer
*/
function _rightShift($int, $amt)
{
$mask = (1 << (32 - $amt)) - 1;
return ($int >> $amt) & $mask;
}
/**
* Not
*
* @access private
* @param Integer $int
* @see _sha256()
* @return Integer
*/
function _not($int)
{
return ~$int & 0xFFFFFFFF;
}
/**
* Add
*
* _sha256() adds multiple unsigned 32-bit integers. Since PHP doesn't support unsigned integers and since the
* possibility of overflow exists, care has to be taken. Math_BigInteger() could be used but this should be faster.
*
* @param Integer $...
* @return Integer
* @see _sha256()
* @access private
*/
function _add()
{
static $mod;
if (!isset($mod)) {
$mod = pow(2, 32);
}
$result = 0;
$arguments = func_get_args();
foreach ($arguments as $argument) {
$result+= $argument < 0 ? ($argument & 0x7FFFFFFF) + 0x80000000 : $argument;
}
return fmod($result, $mod);
}
/**
* String Shift
*
* Inspired by array_shift
*
* @param String $string
* @param optional Integer $index
* @return String
* @access private
*/
function _string_shift(&$string, $index = 1)
{
$substr = substr($string, 0, $index);
$string = substr($string, $index);
return $substr;
}
}

File diff suppressed because it is too large Load Diff

21
inc/phpseclib/LICENSE Normal file
View File

@ -0,0 +1,21 @@
Copyright 2007-2012 TerraFrost and other contributors
http://phpseclib.sourceforge.net/
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

File diff suppressed because it is too large Load Diff

8
inc/phpseclib/update.sh Executable file
View File

@ -0,0 +1,8 @@
#!/bin/sh
wget -nv https://raw.github.com/phpseclib/phpseclib/master/LICENSE -O LICENSE
wget -nv https://raw.github.com/phpseclib/phpseclib/master/phpseclib/Math/BigInteger.php -O Math_BigInteger.php
wget -nv https://raw.github.com/phpseclib/phpseclib/master/phpseclib/Crypt/AES.php -O Crypt_AES.php
wget -nv https://raw.github.com/phpseclib/phpseclib/master/phpseclib/Crypt/Rijndael.php -O Crypt_Rijndael.php
wget -nv https://raw.github.com/phpseclib/phpseclib/master/phpseclib/Crypt/Base.php -O Crypt_Base.php
wget -nv https://raw.github.com/phpseclib/phpseclib/master/phpseclib/Crypt/Hash.php -O Crypt_Hash.php

View File

@ -199,11 +199,7 @@ class DokuWiki_Plugin {
* @return object helper plugin object
*/
function loadHelper($name, $msg = true){
if (!plugin_isdisabled($name)){
$obj = plugin_load('helper',$name);
}else{
$obj = null;
}
$obj = plugin_load('helper',$name);
if (is_null($obj) && $msg) msg("Helper plugin $name is not available or invalid.",-1);
return $obj;
}

View File

@ -273,45 +273,6 @@ function search_allpages(&$data,$base,$file,$type,$lvl,$opts){
return true;
}
/**
* Reference search
* This fuction searches for existing references to a given media file
* and returns an array with the found pages. It doesn't pay any
* attention to ACL permissions to find every reference. The caller
* must check if the user has the appropriate rights to see the found
* page and eventually have to prevent the result from displaying.
*
* @param array $data Reference to the result data structure
* @param string $base Base usually $conf['datadir']
* @param string $file current file or directory relative to $base
* @param char $type Type either 'd' for directory or 'f' for file
* @param int $lvl Current recursion depht
* @param mixed $opts option array as given to search()
*
* $opts['query'] is the demanded media file name
*
* @author Andreas Gohr <andi@splitbrain.org>
* @author Matthias Grimm <matthiasgrimm@users.sourceforge.net>
*/
function search_reference(&$data,$base,$file,$type,$lvl,$opts){
global $conf;
//we do nothing with directories
if($type == 'd') return true;
//only search txt files
if(substr($file,-4) != '.txt') return true;
//we finish after 'cnt' references found. The return value
//'false' will skip subdirectories to speed search up.
$cnt = $conf['refshow'] > 0 ? $conf['refshow'] : 1;
if(count($data) >= $cnt) return false;
$reg = '\{\{ *\:?'.$opts['query'].' *(\|.*)?\}\}';
search_regex($data,$base,$file,$reg,array($opts['query']));
return true;
}
/* ------------- helper functions below -------------- */
/**

View File

@ -291,12 +291,10 @@ function tpl_metaheaders($alt = true) {
$head = array();
// prepare seed for js and css
$tseed = 0;
$tseed = $updateVersion;
$depends = getConfigFiles('main');
foreach($depends as $f) {
$time = @filemtime($f);
if($time > $tseed) $tseed = $time;
}
foreach($depends as $f) $tseed .= @filemtime($f);
$tseed = md5($tseed);
// the usual stuff
$head['meta'][] = array('name'=> 'generator', 'content'=> 'DokuWiki');
@ -470,7 +468,7 @@ function tpl_link($url, $name, $more = '', $return = false) {
* @author Andreas Gohr <andi@splitbrain.org>
*/
function tpl_pagelink($id, $name = null) {
print html_wikilink($id, $name);
print '<bdi>'.html_wikilink($id, $name).'</bdi>';
return true;
}
@ -543,6 +541,7 @@ function tpl_actionlink($type, $pre = '', $suf = '', $inner = '', $return = fals
* @var string $accesskey
* @var string $id
* @var string $method
* @var bool $nofollow
* @var array $params
*/
extract($data);
@ -557,10 +556,11 @@ function tpl_actionlink($type, $pre = '', $suf = '', $inner = '', $return = fals
$akey = 'accesskey="'.$accesskey.'" ';
$addTitle = ' ['.strtoupper($accesskey).']';
}
$rel = $nofollow ? 'rel="nofollow" ' : '';
$out = tpl_link(
$linktarget, $pre.(($inner) ? $inner : $caption).$suf,
'class="action '.$type.'" '.
$akey.'rel="nofollow" '.
$akey.$rel.
'title="'.hsc($caption).$addTitle.'"', 1
);
}
@ -597,6 +597,7 @@ function tpl_get_action($type) {
global $INFO;
global $REV;
global $ACT;
global $conf;
// check disabled actions and fix the badly named ones
if($type == 'history') $type = 'revisions';
@ -606,6 +607,7 @@ function tpl_get_action($type) {
$id = $ID;
$method = 'get';
$params = array('do' => $type);
$nofollow = true;
switch($type) {
case 'edit':
// most complicated type - we need to decide on current action
@ -643,6 +645,10 @@ function tpl_get_action($type) {
break;
case 'index':
$accesskey = 'x';
// allow searchbots to get to the sitemap from the homepage (when dokuwiki isn't providing a sitemap.xml)
if ($conf['start'] == $ID && !$conf['sitemap']) {
$nofollow = false;
}
break;
case 'top':
$accesskey = 't';
@ -713,7 +719,7 @@ function tpl_get_action($type) {
return '[unknown %s type]';
break;
}
return compact('accesskey', 'type', 'id', 'method', 'params');
return compact('accesskey', 'type', 'id', 'method', 'params', 'nofollow');
}
/**
@ -766,7 +772,7 @@ function tpl_searchform($ajax = true, $autocomplete = true) {
// don't print the search form if search action has been disabled
if(!actionOK('search')) return false;
print '<form action="'.wl().'" accept-charset="utf-8" class="search" id="dw__search" method="get"><div class="no">';
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).'" ';
@ -794,13 +800,7 @@ function tpl_breadcrumbs($sep = '•') {
$crumbs = breadcrumbs(); //setup crumb trace
//reverse crumborder in right-to-left mode, add RLM character to fix heb/eng display mixups
if($lang['direction'] == 'rtl') {
$crumbs = array_reverse($crumbs, true);
$crumbs_sep = ' &#8207;<span class="bcsep">'.$sep.'</span>&#8207; ';
} else {
$crumbs_sep = ' <span class="bcsep">'.$sep.'</span> ';
}
$crumbs_sep = ' <span class="bcsep">'.$sep.'</span> ';
//render crumbs, highlight the last one
print '<span class="bchead">'.$lang['breadcrumb'].':</span>';
@ -810,7 +810,9 @@ function tpl_breadcrumbs($sep = '•') {
$i++;
echo $crumbs_sep;
if($i == $last) print '<span class="curid">';
print '<bdi>';
tpl_link(wl($id), hsc($name), 'class="breadcrumbs" title="'.$id.'"');
print '</bdi>';
if($i == $last) print '</span>';
}
return true;
@ -883,7 +885,7 @@ function tpl_userinfo() {
global $lang;
global $INFO;
if(isset($_SERVER['REMOTE_USER'])) {
print $lang['loggedinas'].': '.hsc($INFO['userinfo']['name']).' ('.hsc($_SERVER['REMOTE_USER']).')';
print $lang['loggedinas'].': <bdi>'.hsc($INFO['userinfo']['name']).'</bdi> (<bdi>'.hsc($_SERVER['REMOTE_USER']).'</bdi>)';
return true;
}
return false;
@ -922,14 +924,14 @@ function tpl_pageinfo($ret = false) {
// print it
if($INFO['exists']) {
$out = '';
$out .= $fn;
$out .= '<bdi>'.$fn.'</bdi>';
$out .= ' · ';
$out .= $lang['lastmod'];
$out .= ': ';
$out .= $date;
if($INFO['editor']) {
$out .= ' '.$lang['by'].' ';
$out .= editorinfo($INFO['editor']);
$out .= '<bdi>'.editorinfo($INFO['editor']).'</bdi>';
} else {
$out .= ' ('.$lang['external_edit'].')';
}
@ -937,7 +939,7 @@ function tpl_pageinfo($ret = false) {
$out .= ' · ';
$out .= $lang['lockedby'];
$out .= ': ';
$out .= editorinfo($INFO['locked']);
$out .= '<bdi>'.editorinfo($INFO['locked']).'</bdi>';
}
if($ret) {
return $out;
@ -1186,6 +1188,34 @@ function tpl_getLang($id) {
return $lang[$id];
}
/**
* Retrieve a language dependent file and pass to xhtml renderer for display
* template equivalent of p_locale_xhtml()
*
* @param string $id id of language dependent wiki page
* @return string parsed contents of the wiki page in xhtml format
*/
function tpl_locale_xhtml($id) {
return p_cached_output(tpl_localeFN($id));
}
/**
* Prepends appropriate path for a language dependent filename
*/
function tpl_localeFN($id) {
$path = tpl_incdir().'lang/';
global $conf;
$file = DOKU_CONF.'/template_lang/'.$conf['template'].'/'.$conf['lang'].'/'.$id.'.txt';
if (!@file_exists($file)){
$file = $path.$conf['lang'].'/'.$id.'.txt';
if(!@file_exists($file)){
//fall back to english
$file = $path.'en/'.$id.'.txt';
}
}
return $file;
}
/**
* prints the "main content" in the mediamanger popup
*
@ -1463,8 +1493,8 @@ function tpl_license($img = 'badge', $imgonly = false, $return = false, $wrap =
}
if(!$imgonly) {
$out .= $lang['license'].' ';
$out .= '<a href="'.$lic['url'].'" rel="license" class="urlextern"'.$target;
$out .= '>'.$lic['name'].'</a>';
$out .= '<bdi><a href="'.$lic['url'].'" rel="license" class="urlextern"'.$target;
$out .= '>'.$lic['name'].'</a></bdi>';
}
if($wrap) $out .= '</div>';
@ -1748,5 +1778,23 @@ function tpl_media() {
echo '</div>'.NL;
}
/**
* Return useful layout classes
*
* @author Anika Henke <anika@selfthinker.org>
*/
function tpl_classes() {
global $ACT, $conf, $ID, $INFO;
$classes = array(
'dokuwiki',
'mode_'.$ACT,
'tpl_'.$conf['template'],
$_SERVER['REMOTE_USER'] ? 'loggedIn' : '',
$INFO['exists'] ? '' : 'notFound',
($ID == $conf['start']) ? 'home' : '',
);
return join(' ', $classes);
}
//Setup VIM: ex: et ts=4 :

View File

@ -131,6 +131,8 @@ function css_out(){
// load files
$css_content = '';
foreach($files[$mediatype] 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) {
@ -154,7 +156,10 @@ function css_out(){
// apply style replacements
$css = css_applystyle($css,$tplinc);
// place all @import statements at the top of the file
// parse less
$css = css_parseless($css);
// place all remaining @import statements at the top of the file
$css = css_moveimports($css);
// compress whitespace and comments
@ -171,17 +176,88 @@ function css_out(){
http_cached_finish($cache->cache, $css);
}
/**
* Uses phpless to parse LESS in our CSS
*
* most of this function is error handling to show a nice useful error when
* LESS compilation fails
*
* @param $css
* @return string
*/
function css_parseless($css) {
$less = new lessc();
try {
return $less->compile($css);
} catch(Exception $e) {
// get exception message
$msg = str_replace(array("\n", "\r", "'"), array(), $e->getMessage());
// try to use line number to find affected file
if(preg_match('/line: (\d+)$/', $msg, $m)){
$msg = substr($msg, 0, -1* strlen($m[0])); //remove useless linenumber
$lno = $m[1];
// walk upwards to last include
$lines = explode("\n", $css);
$count = count($lines);
for($i=$lno-1; $i>=0; $i--){
if(preg_match('/\/(\* XXXXXXXXX )(.*?)( XXXXXXXXX \*)\//', $lines[$i], $m)){
// we found it, add info to message
$msg .= ' in '.$m[2].' at line '.($lno-$i);
break;
}
}
}
// something went wrong
$error = 'A fatal error occured during compilation of the CSS files. '.
'If you recently installed a new plugin or template it '.
'might be broken and you should try disabling it again. ['.$msg.']';
echo ".dokuwiki:before {
content: '$error';
background-color: red;
display: block;
background-color: #fcc;
border-color: #ebb;
color: #000;
padding: 0.5em;
}";
exit;
}
}
/**
* Does placeholder replacements in the style according to
* the ones defined in a templates style.ini file
*
* This also adds the ini defined placeholders as less variables
* (sans the surrounding __ and with a ini_ prefix)
*
* @author Andreas Gohr <andi@splitbrain.org>
*/
function css_applystyle($css,$tplinc){
$styleini = css_styleini($tplinc);
if($styleini){
$css = strtr($css,$styleini['replacements']);
// we convert ini replacements to LESS variable names
// and build a list of variable: value; pairs
$less = '';
foreach($styleini['replacements'] as $key => $value){
$lkey = trim($key, '_');
$lkey = '@ini_'.$lkey;
$less .= "$lkey: $value;\n";
$styleini['replacements'][$key] = $lkey;
}
// we now replace all old ini replacements with LESS variables
$css = strtr($css, $styleini['replacements']);
// now prepend the list of LESS variables as the very first thing
$css = $less.$css;
}
return $css;
}
@ -314,7 +390,7 @@ function css_datauri($match){
$data = base64_encode(file_get_contents($local));
}
if($data){
$url = 'data:image/'.$ext.';base64,'.$data;
$url = '\'data:image/'.$ext.';base64,'.$data.'\'';
}else{
$url = $base.$url;
}
@ -333,9 +409,11 @@ function css_pluginstyles($mediatype='screen'){
$plugins = plugin_list();
foreach ($plugins as $p){
$list[DOKU_PLUGIN."$p/$mediatype.css"] = DOKU_BASE."lib/plugins/$p/";
$list[DOKU_PLUGIN."$p/$mediatype.less"] = DOKU_BASE."lib/plugins/$p/";
// alternative for screen.css
if ($mediatype=='screen') {
$list[DOKU_PLUGIN."$p/style.css"] = DOKU_BASE."lib/plugins/$p/";
$list[DOKU_PLUGIN."$p/style.less"] = DOKU_BASE."lib/plugins/$p/";
}
// @deprecated 2012-04-09: rtl will cease to be a mode of its own,
// please use "[dir=rtl]" in any css file in all, screen or print mode instead

View File

@ -96,6 +96,10 @@ function js_out(){
// load JS specific translations
$json = new JSON();
$lang['js']['plugins'] = js_pluginstrings();
$templatestrings = js_templatestrings();
if(!empty($templatestrings)) {
$lang['js']['template'] = $templatestrings;
}
echo 'LANG = '.$json->encode($lang['js']).";\n";
// load toolbar
@ -104,10 +108,13 @@ function js_out(){
// load files
foreach($files as $file){
$ismin = (substr($file,-7) == '.min.js');
$debugjs = ($conf['allowdebug'] && strpos($file, DOKU_INC.'lib/scripts/') !== 0);
echo "\n\n/* XXXXXXXXXX begin of ".str_replace(DOKU_INC, '', $file) ." XXXXXXXXXX */\n\n";
if($ismin) echo "\n/* BEGIN NOCOMPRESS */\n";
if ($debugjs) echo "\ntry {\n";
js_load($file);
if ($debugjs) echo "\n} catch (e) {\n logError(e, '".str_replace(DOKU_INC, '', $file)."');\n}\n";
if($ismin) echo "\n/* END NOCOMPRESS */\n";
echo "\n\n/* XXXXXXXXXX end of " . str_replace(DOKU_INC, '', $file) . " XXXXXXXXXX */\n\n";
}
@ -207,6 +214,21 @@ function js_pluginstrings()
return $pluginstrings;
}
function js_templatestrings() {
global $conf;
$templatestrings = array();
if (@file_exists(tpl_incdir()."lang/en/lang.php")) {
include tpl_incdir()."lang/en/lang.php";
}
if (isset($conf['lang']) && $conf['lang']!='en' && @file_exists(tpl_incdir()."lang/".$conf['lang']."/lang.php")) {
include tpl_incdir()."lang/".$conf['lang']."/lang.php";
}
if (isset($lang['js'])) {
$templatestrings[$conf['template']] = $lang['js'];
}
return $templatestrings;
}
/**
* Escapes a String to be embedded in a JavaScript call, keeps \n
* as newline

View File

@ -22,8 +22,8 @@ $lang['p_user_id'] = 'Benutzer <b class="acluser">%s</b> hat im Mome
$lang['p_user_ns'] = 'Benutzer <b class="acluser">%s</b> hat momentan die folgenden Rechte im Namensraum <b class="aclns">%s</b>: <i>%s</i>.';
$lang['p_group_id'] = 'Die Gruppenmitglieder <b class="aclgroup">%s</b> haben momentan die folgenden Rechte auf der Seite <b class="aclpage">%s</b>: <i>%s</i>.';
$lang['p_group_ns'] = 'Die Mitglieder der Gruppe <b class="aclgroup">%s</b> haben gerade Zugriff in folgenden Namensräumen <b class="aclns">%s</b>: <i>%s</i>.';
$lang['p_choose_id'] = 'Bitte <b>gib einen Nutzer oder eine Gruppe</b> in das Formular ein, um die Berechtigungen der Seite <b class="aclpage">%s</b> anzusehen oder zu bearbeiten.';
$lang['p_choose_ns'] = 'Bitte <b>gib einen Nutzer oder eine Gruppe</b> in das Formular ein, um die Berechtigungen des Namenraumes <b class="aclpage">%s</b> anzusehen oder zu bearbeiten.';
$lang['p_choose_id'] = 'Bitte <b>gib einen Benutzer oder eine Gruppe</b> in das Formular ein, um die Berechtigungen der Seite <b class="aclpage">%s</b> anzusehen oder zu bearbeiten.';
$lang['p_choose_ns'] = 'Bitte <b>gib einen Benutzer oder eine Gruppe</b> in das Formular ein, um die Berechtigungen des Namenraumes <b class="aclpage">%s</b> anzusehen oder zu bearbeiten.';
$lang['p_inherited'] = 'Hinweis: Diese Rechte wurden nicht explizit gesetzt, sondern von anderen Gruppen oder übergeordneten Namensräumen geerbt.';
$lang['p_isadmin'] = 'Hinweis: Die gewählte Gruppe oder der Benutzer haben immer die vollen Rechte, weil sie als Superuser konfiguriert sind.';
$lang['p_include'] = 'Höhere Rechte schließen kleinere mit ein. Hochlade- und Löschrechte sind nur für Namensräume, nicht für Seiten.';

View File

@ -4,7 +4,7 @@ Auf dieser Seite können sie Zugriffsberechtigungen für Seiten und Namensräume
Die Liste links zeigt alle verfügbaren Namensräume und Seiten.
Das Formular oben erlaubt Anzeige, Ändern und Hinzufügen von Zugriffsregeln für einen ausgewählten Nutzer oder eine Gruppe.
Das Formular oben erlaubt Anzeige, Ändern und Hinzufügen von Zugriffsregeln für einen ausgewählten Benutzer oder eine Gruppe.
In der Tabelle unten werden alle bestehenden Regeln aufgeführt und können dort modifiziert oder gelöscht werden.

View File

@ -33,10 +33,10 @@ $lang['p_user_id'] = 'Nutzer <b class="acluser">%s</b> hat momentan
$lang['p_user_ns'] = 'Nutzer <b class="acluser">%s</b> hat momentan folgende Berechtigungen im Namensraum <b class="aclns">%s</b>: <i>%s</i>.';
$lang['p_group_id'] = 'Mitglieder der Gruppe <b class="aclgroup">%s</b> haben momentan folgende Berechtigungen für die Seite <b class="aclpage">%s</b>: <i>%s</i>.';
$lang['p_group_ns'] = 'Mitglieder der Gruppe <b class="aclgroup">%s</b> haben momentan folgende Berechtigungen für den Namensraum <b class="aclns">%s</b>: <i>%s</i>.';
$lang['p_choose_id'] = 'Bitte geben Sie in obigem Formular eine <b>einen Nutzer oder eine Gruppe</b> an, um die Berechtigungen für die Seite <b class="aclpage">%s</b> zu sehen oder zu ändern.';
$lang['p_choose_ns'] = 'Bitte geben Sie in obigem Formular eine <b>einen Nutzer oder eine Gruppe</b> an, um die Berechtigungen für den Namensraum <b class="aclns">%s</b> zu sehen oder zu ändern.';
$lang['p_choose_id'] = 'Bitte geben Sie in obigem Formular eine <b>einen Benutzer oder eine Gruppe</b> an, um die Berechtigungen für die Seite <b class="aclpage">%s</b> zu sehen oder zu ändern.';
$lang['p_choose_ns'] = 'Bitte geben Sie in obigem Formular eine <b>einen Benutzer oder eine Gruppe</b> an, um die Berechtigungen für den Namensraum <b class="aclns">%s</b> zu sehen oder zu ändern.';
$lang['p_inherited'] = 'Hinweis: Diese Berechtigungen wurden nicht explizit gesetzt, sondern von anderen Gruppen oder höher liegenden Namensräumen geerbt.';
$lang['p_isadmin'] = 'Hinweis: Die ausgewählte Gruppe oder Nutzer haben immer alle Berechtigungen das sie als Superuser konfiguriert wurden.';
$lang['p_isadmin'] = 'Hinweis: Die ausgewählte Gruppe oder Benutzer haben immer alle Berechtigungen das sie als Superuser konfiguriert wurden.';
$lang['p_include'] = 'Höhere Berechtigungen schließen niedrigere mit ein. Anlegen, Hochladen und Entfernen gilt nur für Namensräume, nicht für einzelne Seiten';
$lang['current'] = 'Momentane Zugriffsregeln';
$lang['where'] = 'Seite/Namensraum';

View File

@ -0,0 +1,30 @@
<?php
class remote_plugin_acl extends DokuWiki_Remote_Plugin {
function _getMethods() {
return array(
'addAcl' => array(
'args' => array('string','string','int'),
'return' => 'int',
'name' => 'addAcl',
'doc' => 'Adds a new ACL rule.'
), 'delAcl' => array(
'args' => array('string','string'),
'return' => 'int',
'name' => 'delAcl',
'doc' => 'Delete an existing ACL rule.'
),
);
}
function addAcl($scope, $user, $level){
$apa = plugin_load('admin', 'acl');
return $apa->_acl_add($scope, $user, $level);
}
function delAcl($scope, $user){
$apa = plugin_load('admin', 'acl');
return $apa->_acl_del($scope, $user);
}
}

View File

@ -61,6 +61,7 @@ var dw_acl = {
*/
loadinfo: function () {
jQuery('#acl__info')
.attr('role', 'alert')
.html('<img src="'+DOKU_BASE+'lib/images/throbber.gif" alt="..." />')
.load(
DOKU_BASE + 'lib/plugins/acl/ajax.php',

View File

@ -3,14 +3,15 @@
* Brazilian Portuguese language file
*
* @author Victor Westmann <victor.westmann@gmail.com>
* @author Frederico Guimarães <frederico@teia.bio.br>
*/
$lang['account_suffix'] = 'Sufixo de sua conta. Eg. <code>@meu.domínio.org</code>';
$lang['base_dn'] = 'Sua base DN. Eg. <code>DC=meu,DC=domínio,DC=org</code>';
$lang['domain_controllers'] = 'Uma lista de controles de domínios separada por vírgulas. Eg. <code>srv1.domínio.org,srv2.domínio.org</code>';
$lang['admin_username'] = 'Um usuário com privilégios do Active Directory com acesso a todos os dados dos outros usuários. Opcional, mas necessário para certas ações como enviar emails de inscrição.';
$lang['admin_username'] = 'Um usuário do Active Directory com privilégios para acessar os dados de todos os outros usuários. Opcional, mas necessário para realizar certas ações, tais como enviar mensagens de assinatura.';
$lang['admin_password'] = 'A senha do usuário acima.';
$lang['sso'] = 'Usar Single-Sign-On através do Kerberos ou NTLM?';
$lang['real_primarygroup'] = 'Deverá o grupo real primário ser resolvido ao invés de assumir "Usuários de domínio" (mais lento) ';
$lang['real_primarygroup'] = 'O grupo primário real deve ser resolvido ao invés de assumirmos como "Usuários do Domínio" (mais lento)';
$lang['use_ssl'] = 'Usar conexão SSL? Se usar, não habilitar TLS abaixo.';
$lang['use_tls'] = 'Usar conexão TLS? se usar, não habilitar SSL acima.';
$lang['debug'] = 'Mostrar saída adicional de depuração em mensagens de erros?';

View File

@ -3,17 +3,18 @@
* Brazilian Portuguese language file
*
* @author Victor Westmann <victor.westmann@gmail.com>
* @author Frederico Guimarães <frederico@teia.bio.br>
*/
$lang['server'] = 'Seu servidor LDAP. Ou hostname (<code>localhost</code>) ou uma URL completa (<code>ldap://server.tld:389</code>)';
$lang['port'] = 'Porta LDAP do servidor se nenhuma URL completa tiver sido fornecida acima';
$lang['usertree'] = 'Onde encontrar as contas de usuários. Eg. <code>ou=Pessoas, dc=servidor, dc=tld</code>';
$lang['grouptree'] = 'Onde encontrar os grupos de usuários. Eg. <code>ou=Pessoas, dc=servidor, dc=tld</code>';
$lang['userfilter'] = 'Filtro do LDAP para procurar por contas de usuários. Eg. <code>(&amp;(uid=%{user})(objectClass=posixAccount))</code>';
$lang['groupfilter'] = 'Filtro do LDAP 0ara procurar por grupos. Eg. <code>(&amp;(objectClass=posixGroup)(|(gidNumber=%{gid})(memberUID=%{user})))</code>';
$lang['userfilter'] = 'Filtro LDAP para pesquisar por contas de usuários. Ex. <code>(&amp;(uid=%{user})(objectClass=posixAccount))</code>';
$lang['groupfilter'] = 'Filtro LDAP para pesquisar por grupos. Ex. <code>(&amp;(objectClass=posixGroup)(|(gidNumber=%{gid})(memberUID=%{user})))</code>';
$lang['version'] = 'A versão do protocolo para usar. Você talvez deva definir isto para <code>3</code>';
$lang['starttls'] = 'Usar conexões TLS?';
$lang['referrals'] = 'Permitir referências serem seguidas?';
$lang['deref'] = 'Como respeitar aliases ?';
$lang['referrals'] = 'Permitir que as referências sejam seguidas?';
$lang['deref'] = 'Como dereferenciar os aliases?';
$lang['binddn'] = 'DN de um vínculo opcional de usuário se vínculo anônimo não for suficiente. Eg. <code>cn=admin, dc=my, dc=home</code>';
$lang['bindpw'] = 'Senha do usuário acima';
$lang['userscope'] = 'Limitar escopo da busca para busca de usuário';

View File

@ -3,6 +3,7 @@
* Brazilian Portuguese language file
*
* @author Victor Westmann <victor.westmann@gmail.com>
* @author Frederico Guimarães <frederico@teia.bio.br>
*/
$lang['server'] = 'Seu servidor MySQL';
$lang['user'] = 'usuário MySQL';

View File

@ -3,6 +3,7 @@
* Brazilian Portuguese language file
*
* @author Victor Westmann <victor.westmann@gmail.com>
* @author Frederico Guimarães <frederico@teia.bio.br>
*/
$lang['server'] = 'Seu servidor PostgreSQL';
$lang['port'] = 'Sua porta do servidor PostgreSQL';

View File

@ -268,7 +268,7 @@ class admin_plugin_config extends DokuWiki_Admin_Plugin {
// fill in the plugin name if missing (should exist for plugins with settings)
if (!isset($this->lang['plugin'.CM_KEYMARKER.$plugin.CM_KEYMARKER.'plugin_settings_name'])) {
$this->lang['plugin'.CM_KEYMARKER.$plugin.CM_KEYMARKER.'plugin_settings_name'] =
ucwords(str_replace('_', ' ', $plugin)).' '.$this->getLang('_plugin_sufix');
ucwords(str_replace('_', ' ', $plugin));
}
}
closedir($dh);
@ -289,7 +289,7 @@ class admin_plugin_config extends DokuWiki_Admin_Plugin {
// fill in the template name if missing (should exist for templates with settings)
if (!isset($this->lang['tpl'.CM_KEYMARKER.$tpl.CM_KEYMARKER.'template_settings_name'])) {
$this->lang['tpl'.CM_KEYMARKER.$tpl.CM_KEYMARKER.'template_settings_name'] =
ucwords(str_replace('_', ' ', $tpl)).' '.$this->getLang('_template_sufix');
ucwords(str_replace('_', ' ', $tpl));
}
return true;

View File

@ -31,8 +31,6 @@ $lang['_media'] = 'اعدادات الوسائط';
$lang['_notifications'] = 'اعدادات التنبيه';
$lang['_advanced'] = 'اعدادات متقدمة';
$lang['_network'] = 'اعدادات الشبكة';
$lang['_plugin_sufix'] = 'اعدادات الملحقات';
$lang['_template_sufix'] = 'اعدادات القوالب';
$lang['_msg_setting_undefined'] = 'لا بيانات إعدادات.';
$lang['_msg_setting_no_class'] = 'لا صنف إعدادات.';
$lang['_msg_setting_no_default'] = 'لا قيمة افتراضية.';
@ -104,7 +102,6 @@ $lang['target____media'] = 'النافذة الهدف لروابط الو
$lang['target____windows'] = 'النافذة الهدف لروابط النوافذ';
$lang['mediarevisions'] = 'تفعيل إصدارات الوسائط؟';
$lang['refcheck'] = 'التحقق من مرجع الوسائط';
$lang['refshow'] = 'عدد مراجع الوسائط لتعرض';
$lang['gdlib'] = 'اصدار مكتبة GD';
$lang['im_convert'] = 'المسار إلى اداة تحويل ImageMagick';
$lang['jpg_quality'] = 'دقة ضغط JPG (0-100)';

View File

@ -42,12 +42,6 @@ $lang['_notifications'] = 'Настройки за известяване';
$lang['_syndication'] = 'Настройки на RSS емисиите';
$lang['_advanced'] = 'Допълнителни настройки';
$lang['_network'] = 'Мрежови настройки';
// The settings group name for plugins and templates can be set with
// plugin_settings_name and template_settings_name respectively. If one
// of these lang properties is not set, the group name will be generated
// from the plugin or template name and the localized suffix.
$lang['_plugin_sufix'] = ' (приставка)';
$lang['_template_sufix'] = ' (шаблон)';
/* --- Undefined Setting Messages --- */
$lang['_msg_setting_undefined'] = 'Няма метаданни за настройките.';
@ -136,7 +130,6 @@ $lang['target____windows'] = 'Прозорец за препратки към
/* Media Settings */
$lang['mediarevisions'] = 'Да се пазят ли стари версии на качените файлове (Mediarevisions)?';
$lang['refcheck'] = 'Проверка за препратка към медия, преди да бъде изтрита';
$lang['refshow'] = 'Брой на показваните медийни препратки';
$lang['gdlib'] = 'Версия на GD Lib';
$lang['im_convert'] = 'Път до инструмента за трансформация на ImageMagick';
$lang['jpg_quality'] = 'Качество на JPG компресията (0-100)';

View File

@ -30,8 +30,6 @@ $lang['_links'] = 'Ajusts de vínculs';
$lang['_media'] = 'Ajusts de mijos';
$lang['_advanced'] = 'Ajusts alvançats';
$lang['_network'] = 'Ajusts de ret';
$lang['_plugin_sufix'] = 'Ajusts de plúgins';
$lang['_template_sufix'] = '(ajusts de la plantilla)';
$lang['_msg_setting_undefined'] = 'Ajust sense informació.';
$lang['_msg_setting_no_class'] = 'Ajust sense classe.';
$lang['_msg_setting_no_default'] = 'Sense valor predeterminat.';
@ -62,7 +60,6 @@ $lang['camelcase'] = 'Utilisar CamelCase per als vínculs';
$lang['deaccent'] = 'Depurar els noms de pàgines';
$lang['useheading'] = 'Utilisar el primer titular per al nom de pàgina';
$lang['refcheck'] = 'Comprovar referències a mijos';
$lang['refshow'] = 'Número de referències a mijos a mostrar';
$lang['allowdebug'] = 'Permetre depurar (<b>¡desactivar quan no es necessite!</b>)';
$lang['usewordblock'] = 'Bloquejar spam basant-se en una llista de paraules';
$lang['indexdelay'] = 'Retart abans d\'indexar (seg.)';

View File

@ -33,8 +33,6 @@ $lang['_notifications'] = 'Paràmetres de notificació';
$lang['_syndication'] = 'Paràmetres de sindicació';
$lang['_advanced'] = 'Paràmetres avançats';
$lang['_network'] = 'Paràmetres de xarxa';
$lang['_plugin_sufix'] = 'Paràmetres de connectors';
$lang['_template_sufix'] = 'Paràmetres de plantilla';
$lang['_msg_setting_undefined'] = 'Falten metadades de paràmetre.';
$lang['_msg_setting_no_class'] = 'Falta classe de paràmetre.';
$lang['_msg_setting_no_default'] = 'No hi ha valor per defecte.';
@ -102,7 +100,6 @@ $lang['target____extern'] = 'Finestra de destinació en enllaços externs';
$lang['target____media'] = 'Finestra de destinació en enllaços de mitjans';
$lang['target____windows'] = 'Finestra de destinació en enllaços de Windows';
$lang['refcheck'] = 'Comprova la referència en els fitxers de mitjans';
$lang['refshow'] = 'Nombre de referències de mitjans per mostrar';
$lang['gdlib'] = 'Versió GD Lib';
$lang['im_convert'] = 'Camí de la utilitat convert d\'ImageMagick';
$lang['jpg_quality'] = 'Qualitat de compressió JPEG (0-100)';

View File

@ -42,8 +42,6 @@ $lang['_notifications'] = 'Nastavení upozornění';
$lang['_syndication'] = 'Nastavení syndikace';
$lang['_advanced'] = 'Pokročilá nastavení';
$lang['_network'] = 'Nastavení sítě';
$lang['_plugin_sufix'] = 'Nastavení pluginů ';
$lang['_template_sufix'] = 'Nastavení šablon';
$lang['_msg_setting_undefined'] = 'Chybí metadata položky.';
$lang['_msg_setting_no_class'] = 'Chybí třída položky.';
$lang['_msg_setting_no_default'] = 'Chybí výchozí hodnota položky.';
@ -119,7 +117,6 @@ $lang['target____media'] = 'Cílové okno pro odkazy na média';
$lang['target____windows'] = 'Cílové okno pro odkazy na windows sdílení';
$lang['mediarevisions'] = 'Aktivovat revize souborů';
$lang['refcheck'] = 'Kontrolovat odkazy na média (před vymazáním)';
$lang['refshow'] = 'Počet zobrazených odkazů na média';
$lang['gdlib'] = 'Verze GD knihovny';
$lang['im_convert'] = 'Cesta k nástroji convert z balíku ImageMagick';
$lang['jpg_quality'] = 'Kvalita komprese JPEG (0-100)';

View File

@ -38,8 +38,6 @@ $lang['_media'] = 'Medieindstillinger';
$lang['_notifications'] = 'Notificeringsindstillinger';
$lang['_advanced'] = 'Avancerede indstillinger';
$lang['_network'] = 'Netværksindstillinger';
$lang['_plugin_sufix'] = 'Udvidelsesindstillinger';
$lang['_template_sufix'] = 'Skabelonindstillinger';
$lang['_msg_setting_undefined'] = 'Ingen indstillingsmetadata.';
$lang['_msg_setting_no_class'] = 'Ingen indstillingsklasse.';
$lang['_msg_setting_no_default'] = 'Ingen standardværdi.';
@ -110,7 +108,6 @@ $lang['target____media'] = 'Målvindue for mediehenvisninger';
$lang['target____windows'] = 'Målvindue til Windows-henvisninger';
$lang['mediarevisions'] = 'Akvtivér media udgaver?';
$lang['refcheck'] = 'Mediehenvisningerkontrol';
$lang['refshow'] = 'Antal viste mediehenvisninger';
$lang['gdlib'] = 'Udgave af GD Lib';
$lang['im_convert'] = 'Sti til ImageMagick\'s omdannerværktøj';
$lang['jpg_quality'] = 'JPG komprimeringskvalitet (0-100)';

View File

@ -11,6 +11,7 @@
* @author Frank Loizzi <contact@software.bacal.de>
* @author Mateng Schimmerlos <mateng@firemail.de>
* @author Volker Bödker <volker@boedker.de>
* @author Matthias Schulte <dokuwiki@lupo49.de>
*/
$lang['menu'] = 'Konfiguration';
$lang['error'] = 'Konfiguration wurde nicht aktualisiert auf Grund eines ungültigen Wertes. Bitte überprüfe deine Änderungen und versuche es erneut.<br />Die/der ungültige(n) Wert(e) werden durch eine rote Umrandung hervorgehoben.';
@ -20,24 +21,22 @@ $lang['locked'] = 'Die Konfigurationsdatei kann nicht aktualisier
$lang['danger'] = '**Achtung**: Eine Änderung dieser Einstellung kann dein Wiki und das Einstellungsmenü unerreichbar machen.';
$lang['warning'] = 'Achtung: Eine Änderungen dieser Option kann zu unbeabsichtigtem Verhalten führen.';
$lang['security'] = 'Sicherheitswarnung: Eine Änderungen dieser Option können ein Sicherheitsrisiko bedeuten.';
$lang['_configuration_manager'] = 'Konfiguration';
$lang['_header_dokuwiki'] = 'DokuWiki-Konfiguration';
$lang['_header_plugin'] = 'Plugin-Konfiguration';
$lang['_header_template'] = 'Template-Konfiguration';
$lang['_configuration_manager'] = 'Konfigurations-Manager';
$lang['_header_dokuwiki'] = 'DokuWiki';
$lang['_header_plugin'] = 'Plugin';
$lang['_header_template'] = 'Template';
$lang['_header_undefined'] = 'Unbekannte Werte';
$lang['_basic'] = 'Grund-Konfiguration';
$lang['_display'] = 'Darstellungs-Konfiguration';
$lang['_authentication'] = 'Authentifizierung-Konfiguration';
$lang['_anti_spam'] = 'Anti-Spam-Konfiguration';
$lang['_editing'] = 'Bearbeitungs-Konfiguration';
$lang['_links'] = 'Links-Konfiguration';
$lang['_media'] = 'Medien-Konfiguration';
$lang['_notifications'] = 'Benachrichtigungs-Konfiguration';
$lang['_syndication'] = 'Syndication-Konfiguration (RSS)';
$lang['_advanced'] = 'Erweiterte Konfiguration';
$lang['_network'] = 'Netzwerk-Konfiguration';
$lang['_plugin_sufix'] = 'Plugin-Konfiguration';
$lang['_template_sufix'] = 'Template-Konfiguration';
$lang['_basic'] = 'Basis';
$lang['_display'] = 'Darstellung';
$lang['_authentication'] = 'Authentifizierung';
$lang['_anti_spam'] = 'Anti-Spam';
$lang['_editing'] = 'Bearbeitung';
$lang['_links'] = 'Links';
$lang['_media'] = 'Medien';
$lang['_notifications'] = 'Benachrichtigung';
$lang['_syndication'] = 'Syndication (RSS)';
$lang['_advanced'] = 'Erweitert';
$lang['_network'] = 'Netzwerk';
$lang['_msg_setting_undefined'] = 'Keine Konfigurationsmetadaten.';
$lang['_msg_setting_no_class'] = 'Keine Konfigurationsklasse.';
$lang['_msg_setting_no_default'] = 'Kein Standardwert.';
@ -46,7 +45,7 @@ $lang['start'] = 'Name der Startseite';
$lang['lang'] = 'Sprache';
$lang['template'] = 'Vorlage';
$lang['tagline'] = 'Tag-Linie (nur, wenn vom Template unterstützt)';
$lang['sidebar'] = 'Name der Sidebar-Seite (nur, wenn vom Template unterstützt)), ein leeres Feld deaktiviert die Sidebar';
$lang['sidebar'] = 'Name der Sidebar-Seite (nur, wenn vom Template unterstützt), ein leeres Feld deaktiviert die Sidebar';
$lang['license'] = 'Unter welcher Lizenz sollte Ihr Inhalt veröffentlicht werden?';
$lang['savedir'] = 'Ordner zum Speichern von Daten';
$lang['basedir'] = 'Installationsverzeichnis';
@ -66,7 +65,7 @@ $lang['signature'] = 'Signatur';
$lang['showuseras'] = 'Was angezeigt werden soll, wenn der Benutzer, der zuletzt eine Seite bearbeitet hat, angezeigt wird';
$lang['toptoclevel'] = 'Inhaltsverzeichnis bei dieser Überschriftengröße beginnen';
$lang['tocminheads'] = 'Mindestanzahl der Überschriften die entscheidet, ob ein Inhaltsverzeichnis erscheinen soll';
$lang['maxtoclevel'] = 'Maximale Überschriftsgröße für Inhaltsverzeichnis';
$lang['maxtoclevel'] = 'Maximale Überschriftengröße für Inhaltsverzeichnis';
$lang['maxseclevel'] = 'Abschnitte bis zu dieser Stufe einzeln editierbar machen';
$lang['camelcase'] = 'CamelCase-Verlinkungen verwenden';
$lang['deaccent'] = 'Seitennamen bereinigen';
@ -78,14 +77,15 @@ $lang['autopasswd'] = 'Automatisch erzeugte Passwörter';
$lang['authtype'] = 'Authentifizierungsmethode';
$lang['passcrypt'] = 'Passwortverschlüsselungsmethode';
$lang['defaultgroup'] = 'Standardgruppe';
$lang['superuser'] = 'Administrator - Eine Gruppe oder Nutzer mit vollem Zugriff auf alle Seiten und Administrationswerkzeuge.';
$lang['manager'] = 'Manager - Eine Gruppe oder Nutzer mit Zugriff auf einige Administrationswerkzeuge.';
$lang['superuser'] = 'Administrator - Eine Gruppe oder Benutzer mit vollem Zugriff auf alle Seiten und Administrationswerkzeuge.';
$lang['manager'] = 'Manager - Eine Gruppe oder Benutzer mit Zugriff auf einige Administrationswerkzeuge.';
$lang['profileconfirm'] = 'Änderungen am Benutzerprofil mit Passwort bestätigen';
$lang['rememberme'] = 'Permanente Login-Cookies erlauben (Auf diesem Computer eingeloggt bleiben)';
$lang['disableactions'] = 'Deaktiviere DokuWiki\'s Zugriffe';
$lang['disableactions_check'] = 'Check';
$lang['disableactions_subscription'] = 'Bestellen/Abbestellen';
$lang['disableactions_wikicode'] = 'Zeige Quelle/Exportiere Rohdaten';
$lang['disableactions_profile_delete'] = 'Eigenes Benutzerprofil löschen';
$lang['disableactions_other'] = 'Weitere Aktionen (durch Komma getrennt)';
$lang['auth_security_timeout'] = 'Zeitüberschreitung bei der Authentifizierung (Sekunden)';
$lang['securecookie'] = 'Sollen Cookies, die via HTTPS gesetzt wurden nur per HTTPS versendet werden? Deaktiviere diese Option, wenn nur der Login deines Wikis mit SSL gesichert ist, aber das Betrachten des Wikis ungesichert geschieht.';
@ -191,7 +191,7 @@ $lang['xsendfile_o_1'] = 'Proprietärer lighttpd-Header (vor Release 1.5
$lang['xsendfile_o_2'] = 'Standard X-Sendfile-Header';
$lang['xsendfile_o_3'] = 'Proprietärer Nginx X-Accel-Redirect-Header';
$lang['showuseras_o_loginname'] = 'Login-Name';
$lang['showuseras_o_username'] = 'Voller Name des Nutzers';
$lang['showuseras_o_username'] = 'Voller Name des Benutzers';
$lang['showuseras_o_email'] = 'E-Mail-Adresse des Benutzers (je nach Mailguard-Einstellung verschleiert)';
$lang['showuseras_o_email_link'] = 'E-Mail-Adresse des Benutzers als mailto:-Link';
$lang['useheading_o_0'] = 'Niemals';

View File

@ -27,24 +27,22 @@ $lang['locked'] = 'Die Konfigurationsdatei kann nicht geändert w
$lang['danger'] = 'Vorsicht: Die Änderung dieser Option könnte Ihr Wiki und das Konfigurationsmenü unzugänglich machen.';
$lang['warning'] = 'Hinweis: Die Änderung dieser Option könnte unbeabsichtigtes Verhalten hervorrufen.';
$lang['security'] = 'Sicherheitswarnung: Die Änderung dieser Option könnte ein Sicherheitsrisiko darstellen.';
$lang['_configuration_manager'] = 'Konfiguration';
$lang['_header_dokuwiki'] = 'DokuWiki-Konfiguration';
$lang['_header_plugin'] = 'Plugin-Konfiguration';
$lang['_header_template'] = 'Template-Konfiguration';
$lang['_configuration_manager'] = 'Konfigurations-Manager';
$lang['_header_dokuwiki'] = 'DokuWiki';
$lang['_header_plugin'] = 'Plugin';
$lang['_header_template'] = 'Template';
$lang['_header_undefined'] = 'Unbekannte Werte';
$lang['_basic'] = 'Grund-Konfiguration';
$lang['_display'] = 'Darstellungs-Konfiguration';
$lang['_authentication'] = 'Authentifizierungs-Konfiguration';
$lang['_anti_spam'] = 'Anti-Spam-Konfiguration';
$lang['_editing'] = 'Bearbeitungs-Konfiguration';
$lang['_links'] = 'Links-Konfiguration';
$lang['_media'] = 'Medien-Konfiguration';
$lang['_notifications'] = 'Benachrichtigungs-Konfiguration';
$lang['_syndication'] = 'Syndication-Konfiguration (RSS)';
$lang['_advanced'] = 'Erweiterte Konfiguration';
$lang['_network'] = 'Netzwerk-Konfiguration';
$lang['_plugin_sufix'] = 'Plugin-Konfiguration';
$lang['_template_sufix'] = 'Template-Konfiguration';
$lang['_basic'] = 'Basis';
$lang['_display'] = 'Darstellung';
$lang['_authentication'] = 'Authentifizierung';
$lang['_anti_spam'] = 'Anti-Spam';
$lang['_editing'] = 'Bearbeitung';
$lang['_links'] = 'Links';
$lang['_media'] = 'Medien';
$lang['_notifications'] = 'Benachrichtigung';
$lang['_syndication'] = 'Syndication (RSS)';
$lang['_advanced'] = 'Erweitertet';
$lang['_network'] = 'Netzwerk';
$lang['_msg_setting_undefined'] = 'Keine Konfigurationsmetadaten.';
$lang['_msg_setting_no_class'] = 'Keine Konfigurationsklasse.';
$lang['_msg_setting_no_default'] = 'Kein Standardwert.';
@ -59,7 +57,7 @@ $lang['start'] = 'Startseitenname';
$lang['title'] = 'Titel des Wikis';
$lang['template'] = 'Designvorlage (Template)';
$lang['tagline'] = 'Tag-Linie (nur, wenn vom Template unterstützt)';
$lang['sidebar'] = 'Name der Sidebar-Seite (nur, wenn vom Template unterstützt)), ein leeres Feld deaktiviert die Sidebar';
$lang['sidebar'] = 'Name der Sidebar-Seite (nur, wenn vom Template unterstützt), ein leeres Feld deaktiviert die Sidebar';
$lang['license'] = 'Unter welcher Lizenz sollen Ihre Inhalte veröffentlicht werden?';
$lang['fullpath'] = 'Den kompletten Dateipfad im Footer anzeigen';
$lang['recent'] = 'Anzahl der Einträge in der Änderungsliste';
@ -72,13 +70,13 @@ $lang['dformat'] = 'Datumsformat (Siehe PHP <a href="http://www.ph
$lang['signature'] = 'Signatur';
$lang['toptoclevel'] = 'Inhaltsverzeichnis bei dieser Überschriftengröße beginnen';
$lang['tocminheads'] = 'Mindestanzahl der Überschriften die entscheidet, ob ein Inhaltsverzeichnis erscheinen soll';
$lang['maxtoclevel'] = 'Maximale Überschriftsgröße für Inhaltsverzeichnis';
$lang['maxtoclevel'] = 'Maximale Überschriftengröße für Inhaltsverzeichnis';
$lang['maxseclevel'] = 'Abschnitte bis zu dieser Stufe einzeln editierbar machen';
$lang['camelcase'] = 'CamelCase-Verlinkungen verwenden';
$lang['deaccent'] = 'Seitennamen bereinigen';
$lang['useheading'] = 'Erste Überschrift als Seitennamen verwenden';
$lang['refcheck'] = 'Auf Verwendung beim Löschen von Media-Dateien testen';
$lang['refshow'] = 'Wiev iele Verwendungsorte der Media-Datei zeigen';
$lang['refshow'] = 'Wie viele Verwendungsorte der Media-Datei zeigen';
$lang['allowdebug'] = 'Debug-Ausgaben erlauben <b>Abschalten wenn nicht benötigt!</b>';
$lang['mediarevisions'] = 'Media-Revisionen (ältere Versionen) aktivieren?';
$lang['usewordblock'] = 'Spam-Blocking benutzen';
@ -92,18 +90,19 @@ $lang['autopasswd'] = 'Passwort automatisch generieren';
$lang['authtype'] = 'Authentifizierungsmechanismus';
$lang['passcrypt'] = 'Verschlüsselungsmechanismus';
$lang['defaultgroup'] = 'Standardgruppe';
$lang['superuser'] = 'Administrator - Eine Gruppe oder Nutzer mit vollem Zugriff auf alle Seiten und Administrationswerkzeuge.';
$lang['manager'] = 'Manager - Eine Gruppe oder Nutzer mit Zugriff auf einige Administrationswerkzeuge.';
$lang['superuser'] = 'Administrator - Eine Gruppe oder Benutzer mit vollem Zugriff auf alle Seiten und Administrationswerkzeuge.';
$lang['manager'] = 'Manager - Eine Gruppe oder Benutzer mit Zugriff auf einige Administrationswerkzeuge.';
$lang['profileconfirm'] = 'Profiländerung nur nach Passwortbestätigung';
$lang['disableactions'] = 'DokuWiki-Aktionen deaktivieren';
$lang['disableactions_check'] = 'Check';
$lang['disableactions_subscription'] = 'Seiten-Abonnements';
$lang['disableactions_wikicode'] = 'Quelltext betrachten/exportieren';
$lang['disableactions_profile_delete'] = 'Eigenes Benutzerprofil löschen';
$lang['disableactions_other'] = 'Andere Aktionen (durch Komma getrennt)';
$lang['sneaky_index'] = 'Standardmäßig zeigt DokuWiki alle Namensräume in der Übersicht. Wenn diese Option aktiviert wird, werden alle Namensräume, für die der Benutzer keine Lese-Rechte hat, nicht angezeigt. Dies kann unter Umständen dazu führen, das lesbare Unter-Namensräume nicht angezeigt werden und macht die Übersicht evtl. unbrauchbar in Kombination mit bestimmten ACL Einstellungen.';
$lang['auth_security_timeout'] = 'Authentifikations-Timeout (Sekunden)';
$lang['securecookie'] = 'Sollen Cookies, die via HTTPS gesetzt wurden nur per HTTPS versendet werden? Deaktivieren Sie diese Option, wenn nur der Login Ihres Wikis mit SSL gesichert ist, aber das Betrachten des Wikis ungesichert geschieht.';
$lang['remote'] = 'Aktiviert den externen API-Zugang. Diese Option erlaubt es externen Anwendungen von außen auf die XML-RPC-Schnittstelle oder anderweitigen Schnittstellen zuzugreifen.';
$lang['remote'] = 'Aktiviert den externen API-Zugang. Diese Option erlaubt es externen Anwendungen von außen auf die XML-RPC-Schnittstelle oder anderweitigen Schnittstellen zu zugreifen.';
$lang['remoteuser'] = 'Zugriff auf die externen Schnittstellen durch kommaseparierte Angabe von Benutzern oder Gruppen einschränken. Ein leeres Feld erlaubt Zugriff für jeden.';
$lang['updatecheck'] = 'Automatisch auf Updates und Sicherheitswarnungen prüfen? DokuWiki muss sich dafür mit update.dokuwiki.org verbinden.';
$lang['userewrite'] = 'URL rewriting';
@ -118,18 +117,18 @@ $lang['cachetime'] = 'Maximale Cachespeicherung (Sekunden)';
$lang['locktime'] = 'Maximales Alter für Seitensperren (Sekunden)';
$lang['fetchsize'] = 'Maximale Größe (in Bytes), die fetch.php von extern herunterladen darf';
$lang['notify'] = 'Änderungsmitteilungen an diese E-Mail-Adresse versenden';
$lang['registernotify'] = 'Information über neu registrierte Nutzer an diese E-Mail-Adresse senden';
$lang['registernotify'] = 'Information über neu registrierte Benutzer an diese E-Mail-Adresse senden';
$lang['mailfrom'] = 'Absender-E-Mail-Adresse für automatische Mails';
$lang['mailprefix'] = 'Präfix für E-Mail-Betreff beim automatischen Versand von Benachrichtigungen';
$lang['htmlmail'] = 'Versendet optisch angenehmere, aber größere E-Mails im HTML-Format (multipart). Deaktivieren, um Text-Mails zu versenden.';
$lang['gzip_output'] = 'Seiten mit gzip komprimiert ausliefern';
$lang['gdlib'] = 'GD Lib Version';
$lang['im_convert'] = 'Pfad zu ImageMagicks-Konvertierwerkzeug';
$lang['im_convert'] = 'Pfad zum ImageMagicks-Konvertierwerkzeug';
$lang['jpg_quality'] = 'JPEG Kompressionsqualität (0-100)';
$lang['subscribers'] = 'E-Mail-Abos zulassen';
$lang['subscribe_time'] = 'Zeit nach der Zusammenfassungs- und Änderungslisten-E-Mails verschickt werden; Dieser Wert sollte kleiner als die in recent_days konfigurierte Zeit sein.';
$lang['compress'] = 'JavaScript und Stylesheets komprimieren';
$lang['cssdatauri'] = 'Größe in Bytes, bis zu der Bilder in css-Dateien referenziert werden können, um HTTP-Anfragen zu minimieren. Diese Technik funktioniert nicht im IE 7 und älter! Empfohlene Einstellung: <code>400</code> to <code>600</code> Bytes. Setzen Sie die Einstellung auf <code>0</code> um die Funktion zu deaktivieren.';
$lang['cssdatauri'] = 'Größe in Bytes, bis zu der Bilder in CSS-Dateien referenziert werden können, um HTTP-Anfragen zu minimieren. Diese Technik funktioniert nicht im IE 7 und älter! Empfohlene Einstellung: <code>400</code> to <code>600</code> Bytes. Setzen Sie die Einstellung auf <code>0</code> um die Funktion zu deaktivieren.';
$lang['hidepages'] = 'Seiten verstecken (Regulärer Ausdruck)';
$lang['send404'] = 'Bei nicht vorhandenen Seiten mit 404 Fehlercode antworten';
$lang['sitemap'] = 'Google Sitemap erzeugen (Tage)';
@ -143,7 +142,7 @@ $lang['rss_type'] = 'XML-Feed-Format';
$lang['rss_linkto'] = 'XML-Feed verlinken auf';
$lang['rss_content'] = 'Welche Inhalte sollen im XML-Feed dargestellt werden?';
$lang['rss_update'] = 'XML-Feed Aktualisierungsintervall (Sekunden)';
$lang['recent_days'] = 'Wieviele letzte Änderungen sollen einsehbar bleiben? (Tage)';
$lang['recent_days'] = 'Wie viele letzte Änderungen sollen einsehbar bleiben? (Tage)';
$lang['rss_show_summary'] = 'Bearbeitungs-Zusammenfassung im XML-Feed anzeigen';
$lang['rss_media'] = 'Welche Änderungen sollen im XML-Feed angezeigt werden?';
$lang['target____wiki'] = 'Zielfenster für interne Links (target Attribut)';
@ -151,17 +150,17 @@ $lang['target____interwiki'] = 'Zielfenster für InterWiki-Links (target Attri
$lang['target____extern'] = 'Zielfenster für Externe Links (target Attribut)';
$lang['target____media'] = 'Zielfenster für (Bild-)Dateien (target Attribut)';
$lang['target____windows'] = 'Zielfenster für Windows Freigaben (target Attribut)';
$lang['dnslookups'] = 'DokuWiki löst die IP-Adressen von Benutzern zu deren Hostnamen auf. Wenn du einen langsamen, unbrauchbaren DNS-Server verwendest oder die Funktion nicht benötigst, dann sollte diese Option deaktivert sein.';
$lang['dnslookups'] = 'DokuWiki löst die IP-Adressen von Benutzern zu deren Hostnamen auf. Wenn du einen langsamen, unbrauchbaren DNS-Server verwendest oder die Funktion nicht benötigst, dann sollte diese Option deaktiviert sein.';
$lang['proxy____host'] = 'Proxy-Server';
$lang['proxy____port'] = 'Proxy-Port';
$lang['proxy____user'] = 'Proxy Nutzername';
$lang['proxy____user'] = 'Proxy Benutzername';
$lang['proxy____pass'] = 'Proxy Passwort';
$lang['proxy____ssl'] = 'SSL bei Verbindung zum Proxy verwenden';
$lang['proxy____except'] = 'Regulärer Ausdruck um Adressen zu beschreiben, für die kein Proxy verwendet werden soll';
$lang['safemodehack'] = 'Safemodehack verwenden';
$lang['ftp____host'] = 'FTP-Host für Safemodehack';
$lang['ftp____port'] = 'FTP-Port für Safemodehack';
$lang['ftp____user'] = 'FTP Nutzername für Safemodehack';
$lang['ftp____user'] = 'FTP Benutzername für Safemodehack';
$lang['ftp____pass'] = 'FTP Passwort für Safemodehack';
$lang['ftp____root'] = 'FTP Wurzelverzeichnis für Safemodehack';
$lang['license_o_'] = 'Keine gewählt';

View File

@ -39,8 +39,6 @@ $lang['_notifications'] = 'Ρυθμίσεις ενημερώσεων';
$lang['_syndication'] = 'Ρυθμίσεις σύνδεσης';
$lang['_advanced'] = 'Ρυθμίσεις για Προχωρημένους';
$lang['_network'] = 'Ρυθμίσεις Δικτύου';
$lang['_plugin_sufix'] = 'Ρυθμίσεις Επεκτάσεων';
$lang['_template_sufix'] = 'Ρυθμίσεις Προτύπων παρουσίασης';
$lang['_msg_setting_undefined'] = 'Δεν έχουν οριστεί metadata.';
$lang['_msg_setting_no_class'] = 'Δεν έχει οριστεί κλάση.';
$lang['_msg_setting_no_default'] = 'Δεν υπάρχει τιμή εξ ορισμού.';
@ -111,7 +109,6 @@ $lang['target____media'] = 'Παράθυρο-στόχος για συνδ
$lang['target____windows'] = 'Παράθυρο-στόχος για συνδέσμους σε Windows shares';
$lang['mediarevisions'] = 'Ενεργοποίηση Mediarevisions;';
$lang['refcheck'] = 'Πριν τη διαγραφή ενός αρχείου να ελέγχεται η ύπαρξη σελίδων που το χρησιμοποιούν';
$lang['refshow'] = 'Εμφανιζόμενος αριθμός σελίδων που χρησιμοποιούν ένα αρχείο';
$lang['gdlib'] = 'Έκδοση βιβλιοθήκης GD';
$lang['im_convert'] = 'Διαδρομή προς το εργαλείο μετατροπής εικόνων του ImageMagick';
$lang['jpg_quality'] = 'Ποιότητα συμπίεσης JPG (0-100)';

View File

@ -4,6 +4,7 @@
*
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
* @author Christopher Smith <chris@jalakai.co.uk>
* @author Matthias Schulte <dokuwiki@lupo49.de>
*/
// for admin plugins, the menu prompt to be displayed in the admin menu
@ -23,29 +24,23 @@ $lang['security'] = 'Security Warning: Changing this option could present a se
/* --- Config Setting Headers --- */
$lang['_configuration_manager'] = 'Configuration Manager'; //same as heading in intro.txt
$lang['_header_dokuwiki'] = 'DokuWiki Settings';
$lang['_header_plugin'] = 'Plugin Settings';
$lang['_header_template'] = 'Template Settings';
$lang['_header_dokuwiki'] = 'DokuWiki';
$lang['_header_plugin'] = 'Plugin';
$lang['_header_template'] = 'Template';
$lang['_header_undefined'] = 'Undefined Settings';
/* --- Config Setting Groups --- */
$lang['_basic'] = 'Basic Settings';
$lang['_display'] = 'Display Settings';
$lang['_authentication'] = 'Authentication Settings';
$lang['_anti_spam'] = 'Anti-Spam Settings';
$lang['_editing'] = 'Editing Settings';
$lang['_links'] = 'Link Settings';
$lang['_media'] = 'Media Settings';
$lang['_notifications'] = 'Notification Settings';
$lang['_syndication'] = 'Syndication Settings';
$lang['_advanced'] = 'Advanced Settings';
$lang['_network'] = 'Network Settings';
// The settings group name for plugins and templates can be set with
// plugin_settings_name and template_settings_name respectively. If one
// of these lang properties is not set, the group name will be generated
// from the plugin or template name and the localized suffix.
$lang['_plugin_sufix'] = 'Plugin Settings';
$lang['_template_sufix'] = 'Template Settings';
$lang['_basic'] = 'Basic';
$lang['_display'] = 'Display';
$lang['_authentication'] = 'Authentication';
$lang['_anti_spam'] = 'Anti-Spam';
$lang['_editing'] = 'Editing';
$lang['_links'] = 'Links';
$lang['_media'] = 'Media';
$lang['_notifications'] = 'Notification';
$lang['_syndication'] = 'Syndication (RSS)';
$lang['_advanced'] = 'Advanced';
$lang['_network'] = 'Network';
/* --- Undefined Setting Messages --- */
$lang['_msg_setting_undefined'] = 'No setting metadata.';
@ -104,6 +99,7 @@ $lang['disableactions'] = 'Disable DokuWiki actions';
$lang['disableactions_check'] = 'Check';
$lang['disableactions_subscription'] = 'Subscribe/Unsubscribe';
$lang['disableactions_wikicode'] = 'View source/Export Raw';
$lang['disableactions_profile_delete'] = 'Delete Own Account';
$lang['disableactions_other'] = 'Other actions (comma separated)';
$lang['auth_security_timeout'] = 'Authentication Security Timeout (seconds)';
$lang['securecookie'] = 'Should cookies set via HTTPS only be sent via HTTPS by the browser? Disable this option when only the login of your wiki is secured with SSL but browsing the wiki is done unsecured.';
@ -134,7 +130,6 @@ $lang['target____windows'] = 'Target window for windows links';
/* Media Settings */
$lang['mediarevisions'] = 'Enable Mediarevisions?';
$lang['refcheck'] = 'Check if a media file is still in use before deleting it';
$lang['refshow'] = 'Number of media references to show when the above setting is enabled';
$lang['gdlib'] = 'GD Lib version';
$lang['im_convert'] = 'Path to ImageMagick\'s convert tool';
$lang['jpg_quality'] = 'JPG compression quality (0-100)';

View File

@ -36,8 +36,6 @@ $lang['_notifications'] = 'Sciigaj agordoj';
$lang['_syndication'] = 'Kunhavigaj agordoj';
$lang['_advanced'] = 'Fakaj difinoj';
$lang['_network'] = 'Difinoj por reto';
$lang['_plugin_sufix'] = 'Difinoj por kromaĵoj';
$lang['_template_sufix'] = 'Difinoj por ŝablonoj';
$lang['_msg_setting_undefined'] = 'Neniu difinanta metadatumaro.';
$lang['_msg_setting_no_class'] = 'Neniu difinanta klaso.';
$lang['_msg_setting_no_default'] = 'Neniu apriora valoro.';
@ -108,7 +106,6 @@ $lang['target____media'] = 'Parametro "target" (celo) por aŭdvidaĵaj lig
$lang['target____windows'] = 'Parametro "target" (celo) por Vindozaj ligiloj';
$lang['mediarevisions'] = 'Ĉu ebligi reviziadon de aŭdvidaĵoj?';
$lang['refcheck'] = 'Kontrolo por referencoj al aŭdvidaĵoj';
$lang['refshow'] = 'Nombro da referencoj al aŭdvidaĵoj por montri';
$lang['gdlib'] = 'Versio de GD-Lib';
$lang['im_convert'] = 'Pado al la konvertilo de ImageMagick';
$lang['jpg_quality'] = 'Kompaktiga kvalito de JPG (0-100)';

View File

@ -49,8 +49,6 @@ $lang['_notifications'] = 'Configuración de notificaciones';
$lang['_syndication'] = 'Configuración de sindicación';
$lang['_advanced'] = 'Parámetros Avanzados';
$lang['_network'] = 'Parámetros de Red';
$lang['_plugin_sufix'] = 'Parámetros de Plugins';
$lang['_template_sufix'] = 'Parámetros de Plantillas';
$lang['_msg_setting_undefined'] = 'Sin parámetros de metadata.';
$lang['_msg_setting_no_class'] = 'Sin clase establecida.';
$lang['_msg_setting_no_default'] = 'Sin valor por defecto.';
@ -121,7 +119,6 @@ $lang['target____media'] = 'Ventana para enlaces a medios';
$lang['target____windows'] = 'Ventana para enlaces a ventanas';
$lang['mediarevisions'] = '¿Habilitar Mediarevisions?';
$lang['refcheck'] = 'Control de referencia a medios';
$lang['refshow'] = 'Número de referencias a medios a mostrar';
$lang['gdlib'] = 'Versión de GD Lib';
$lang['im_convert'] = 'Ruta a la herramienta de conversión de ImageMagick';
$lang['jpg_quality'] = 'Calidad de compresión de JPG (0-100)';

View File

@ -16,8 +16,6 @@ $lang['_links'] = 'Lingi seaded';
$lang['_media'] = 'Meedia seaded';
$lang['_advanced'] = 'Laiendatud seaded';
$lang['_network'] = 'Võrgu seaded';
$lang['_plugin_sufix'] = 'Plugina seaded';
$lang['_template_sufix'] = 'Kujunduse seaded';
$lang['title'] = 'Wiki pealkiri';
$lang['template'] = 'Kujundus';
$lang['recent'] = 'Viimased muudatused';

View File

@ -30,8 +30,6 @@ $lang['_notifications'] = 'Abisuen ezarpenak';
$lang['_syndication'] = 'Sindikazio ezarpenak';
$lang['_advanced'] = 'Ezarpen Aurreratuak';
$lang['_network'] = 'Sare Ezarpenak';
$lang['_plugin_sufix'] = 'Plugin Ezarpenak';
$lang['_template_sufix'] = 'Txantiloi Ezarpenak';
$lang['_msg_setting_undefined'] = 'Ezarpen metadaturik ez.';
$lang['_msg_setting_no_class'] = 'Ezarpen klaserik ez.';
$lang['_msg_setting_no_default'] = 'Balio lehenetsirik ez.';
@ -97,7 +95,6 @@ $lang['target____media'] = 'Multimedia estekentzat helburu leihoa';
$lang['target____windows'] = 'Leihoen estekentzat helburu leihoa';
$lang['mediarevisions'] = 'Media rebisioak gaitu?';
$lang['refcheck'] = 'Multimedia erreferentzia kontrolatu';
$lang['refshow'] = 'Erakusteko multimedia erreferentzia kopurua';
$lang['gdlib'] = 'GD Lib bertsioa';
$lang['im_convert'] = 'ImageMagick-en aldaketa tresnara bidea';
$lang['jpg_quality'] = 'JPG konprimitze kalitatea (0-100)';

View File

@ -34,8 +34,6 @@ $lang['_notifications'] = 'تنظیمات آگاه سازی';
$lang['_syndication'] = 'تنظیمات پیوند';
$lang['_advanced'] = 'تنظیمات پیشرفته';
$lang['_network'] = 'تنظیمات شبکه';
$lang['_plugin_sufix'] = 'تنظیمات افزونه';
$lang['_template_sufix'] = 'تنظیمات قالب';
$lang['_msg_setting_undefined'] = 'داده‌نمایی برای تنظیمات وجود ندارد';
$lang['_msg_setting_no_class'] = 'هیچ دسته‌ای برای تنظیمات وجود ندارد.';
$lang['_msg_setting_no_default'] = 'بدون مقدار پیش‌فرض';
@ -106,7 +104,6 @@ $lang['target____media'] = 'پنجره‌ی هدف در پیوند‌ها
$lang['target____windows'] = 'پنجره‌ی هدف در پیوند‌های پنجره‌ای';
$lang['mediarevisions'] = 'تجدید نظر رسانه ، فعال؟';
$lang['refcheck'] = 'بررسی کردن مرجع رسانه‌ها';
$lang['refshow'] = 'تعداد مراجعی که برای یک رسانه نمایش داده شود';
$lang['gdlib'] = 'نگارش کتاب‌خانه‌ی GD';
$lang['im_convert'] = 'مسیر ابزار convert از برنامه‌ی ImageMagick';
$lang['jpg_quality'] = 'کیفیت فشرده سازی JPEG (از 0 تا 100)';

View File

@ -33,8 +33,6 @@ $lang['_notifications'] = 'Ilmoitus-asetukset';
$lang['_syndication'] = 'Syöteasetukset';
$lang['_advanced'] = 'Lisäasetukset';
$lang['_network'] = 'Verkkoasetukset';
$lang['_plugin_sufix'] = 'liitännäisen asetukset';
$lang['_template_sufix'] = 'Sivumallin asetukset';
$lang['_msg_setting_undefined'] = 'Ei asetusten metadataa.';
$lang['_msg_setting_no_class'] = 'Ei asetusluokkaa.';
$lang['_msg_setting_no_default'] = 'Ei oletusarvoa';
@ -105,7 +103,6 @@ $lang['target____media'] = 'Kohdeikkuna media-linkeissä';
$lang['target____windows'] = 'Kohdeikkuna Windows-linkeissä';
$lang['mediarevisions'] = 'Otetaan käyttään Media-versiointi';
$lang['refcheck'] = 'Mediaviitteen tarkistus';
$lang['refshow'] = 'Montako mediaviitettä näytetään';
$lang['gdlib'] = 'GD Lib versio';
$lang['im_convert'] = 'ImageMagick-muunnostyökalun polku';
$lang['jpg_quality'] = 'JPG pakkauslaatu (0-100)';

View File

@ -46,8 +46,6 @@ $lang['_notifications'] = 'Paramètres de notification';
$lang['_syndication'] = 'Paramètres de syndication';
$lang['_advanced'] = 'Paramètres avancés';
$lang['_network'] = 'Paramètres réseaux';
$lang['_plugin_sufix'] = 'Paramètres d\'extension';
$lang['_template_sufix'] = 'Paramètres de modèle';
$lang['_msg_setting_undefined'] = 'Pas de définition de métadonnées';
$lang['_msg_setting_no_class'] = 'Pas de définition de paramètres.';
$lang['_msg_setting_no_default'] = 'Pas de valeur par défaut.';
@ -118,7 +116,6 @@ $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['refshow'] = 'Nombre de références de média à montrer lorsque le paramètre précédent est actif';
$lang['gdlib'] = 'Version de la librairie GD';
$lang['im_convert'] = 'Chemin vers l\'outil de conversion ImageMagick';
$lang['jpg_quality'] = 'Qualité de la compression JPEG (0-100)';

View File

@ -32,8 +32,6 @@ $lang['_notifications'] = 'Opcións de Notificación';
$lang['_syndication'] = 'Opcións de Sindicación';
$lang['_advanced'] = 'Configuración Avanzada';
$lang['_network'] = 'Configuración de Rede';
$lang['_plugin_sufix'] = 'Configuración de Extensións';
$lang['_template_sufix'] = 'Configuración de Sobreplanta';
$lang['_msg_setting_undefined'] = 'Non hai configuración de metadatos.';
$lang['_msg_setting_no_class'] = 'Non hai configuración de clase.';
$lang['_msg_setting_no_default'] = 'Non hai valor predeterminado.';
@ -104,7 +102,6 @@ $lang['target____media'] = 'Fiestra de destino para as ligazóns de media'
$lang['target____windows'] = 'Fiestra de destino para as ligazóns de fiestras';
$lang['mediarevisions'] = 'Habilitar revisións dos arquivos-media?';
$lang['refcheck'] = 'Comprobar a referencia media';
$lang['refshow'] = 'Número de referencias media a amosar';
$lang['gdlib'] = 'Versión da Libraría GD';
$lang['im_convert'] = 'Ruta deica a ferramenta de conversión ImageMagick';
$lang['jpg_quality'] = 'Calidade de compresión dos JPG (0-100)';

View File

@ -30,8 +30,6 @@ $lang['_links'] = 'הגדרות קישורים';
$lang['_media'] = 'הגדרות מדיה';
$lang['_advanced'] = 'הגדרות מתקדמות';
$lang['_network'] = 'הגדרות רשת';
$lang['_plugin_sufix'] = 'הגדרות תוסף';
$lang['_template_sufix'] = 'הגדרות תבנית';
$lang['_msg_setting_undefined'] = 'אין מידע-על להגדרה.';
$lang['_msg_setting_no_class'] = 'אין קבוצה להגדרה.';
$lang['_msg_setting_no_default'] = 'אין ערך ברירת מחדל.';
@ -60,7 +58,6 @@ $lang['camelcase'] = 'השתמש בראשיות גדולות לקי
$lang['deaccent'] = 'נקה שמות דפים';
$lang['useheading'] = 'השתמש בכותרת הראשונה לשם הדף';
$lang['refcheck'] = 'בדוק שיוך מדיה';
$lang['refshow'] = 'מספר שיוכי המדיה שיוצגו';
$lang['allowdebug'] = 'אפשר דיבוג <b>יש לבטל אם אין צורך!</b>';
$lang['usewordblock'] = 'חסימת דואר זבל לפי רשימת מילים';
$lang['indexdelay'] = 'השהיה בטרם הכנסה לאינדקס (שניות)';

View File

@ -36,8 +36,6 @@ $lang['_notifications'] = 'Értesítési beállítások';
$lang['_syndication'] = 'Hírfolyam beállítások';
$lang['_advanced'] = 'Haladó beállítások';
$lang['_network'] = 'Hálózati beállítások';
$lang['_plugin_sufix'] = 'Bővítmények beállításai';
$lang['_template_sufix'] = 'Sablon beállítások';
$lang['_msg_setting_undefined'] = 'Nincs beállított metaadat.';
$lang['_msg_setting_no_class'] = 'Nincs beállított osztály.';
$lang['_msg_setting_no_default'] = 'Nincs alapértelmezett érték.';
@ -108,7 +106,6 @@ $lang['target____media'] = 'Cél-ablak média-fájl hivatkozásokhoz';
$lang['target____windows'] = 'Cél-ablak Windows hivatkozásokhoz';
$lang['mediarevisions'] = 'Médiafájlok verziókövetésének engedélyezése';
$lang['refcheck'] = 'Médiafájlok hivatkozásainak ellenőrzése';
$lang['refshow'] = 'Médiafájlok hivatkozásainak maximálisan mutatott szintje';
$lang['gdlib'] = 'GD Lib verzió';
$lang['im_convert'] = 'Útvonal az ImageMagick csomag convert parancsához';
$lang['jpg_quality'] = 'JPG tömörítés minősége (0-100)';

View File

@ -27,8 +27,6 @@ $lang['_links'] = 'Configurationes de ligamines';
$lang['_media'] = 'Configurationes de multimedia';
$lang['_advanced'] = 'Configurationes avantiate';
$lang['_network'] = 'Configurationes de rete';
$lang['_plugin_sufix'] = 'Configurationes de plug-ins';
$lang['_template_sufix'] = 'Configurationes de patronos';
$lang['_msg_setting_undefined'] = 'Nulle metadatos de configuration.';
$lang['_msg_setting_no_class'] = 'Nulle classe de configuration.';
$lang['_msg_setting_no_default'] = 'Nulle valor predefinite.';
@ -59,7 +57,6 @@ $lang['camelcase'] = 'Usar CamelCase pro ligamines';
$lang['deaccent'] = 'Nomines nette de paginas';
$lang['useheading'] = 'Usar le prime titulo como nomine de pagina';
$lang['refcheck'] = 'Verification de referentias multimedia';
$lang['refshow'] = 'Numero de referentias multimedia a monstrar';
$lang['allowdebug'] = 'Permitter debugging <b>disactiva si non necessari!</b>';
$lang['usewordblock'] = 'Blocar spam a base de lista de parolas';
$lang['indexdelay'] = 'Retardo ante generation de indice (secundas)';

View File

@ -13,7 +13,6 @@ $lang['nochoice'] = '(engir aðrir valmöguleikar fyrir hendi)';
$lang['_display'] = 'Skjástillingar';
$lang['_anti_spam'] = 'Stillingar gegn ruslpósti';
$lang['_editing'] = 'Útgáfastillingar';
$lang['_plugin_sufix'] = 'Viðbótstillingar';
$lang['lang'] = 'Tungumál';
$lang['title'] = 'Heiti wikis';
$lang['template'] = 'Mát';

View File

@ -42,8 +42,6 @@ $lang['_notifications'] = 'Impostazioni di notifica';
$lang['_syndication'] = 'Impostazioni di collaborazione';
$lang['_advanced'] = 'Impostazioni Avanzate';
$lang['_network'] = 'Impostazioni Rete';
$lang['_plugin_sufix'] = 'Impostazioni Plugin';
$lang['_template_sufix'] = 'Impostazioni Modello';
$lang['_msg_setting_undefined'] = 'Nessun metadato definito.';
$lang['_msg_setting_no_class'] = 'Nessuna classe definita.';
$lang['_msg_setting_no_default'] = 'Nessun valore predefinito.';
@ -114,7 +112,6 @@ $lang['target____media'] = 'Finestra di destinazione per i collegamenti ai
$lang['target____windows'] = 'Finestra di destinazione per i collegamenti alle risorse condivise';
$lang['mediarevisions'] = 'Abilita Mediarevisions?';
$lang['refcheck'] = 'Controlla i riferimenti ai file';
$lang['refshow'] = 'Numero di riferimenti da visualizzare';
$lang['gdlib'] = 'Versione GD Lib ';
$lang['im_convert'] = 'Percorso per il convertitore di ImageMagick';
$lang['jpg_quality'] = 'Qualità di compressione JPG (0-100)';

View File

@ -37,8 +37,6 @@ $lang['_notifications'] = '通知設定';
$lang['_syndication'] = 'RSS配信設定';
$lang['_advanced'] = '高度な設定';
$lang['_network'] = 'ネットワーク';
$lang['_plugin_sufix'] = 'プラグイン設定';
$lang['_template_sufix'] = 'テンプレート設定';
$lang['_msg_setting_undefined'] = '設定のためのメタデータがありません。';
$lang['_msg_setting_no_class'] = '設定クラスがありません。';
$lang['_msg_setting_no_default'] = '初期値が設定されていません。';
@ -109,7 +107,6 @@ $lang['target____media'] = 'メディアリンクの表示先';
$lang['target____windows'] = 'Windowsリンクの表示先';
$lang['mediarevisions'] = 'メディアファイルの履歴を有効にしますか?';
$lang['refcheck'] = 'メディア参照元チェック';
$lang['refshow'] = 'メディア参照元表示数';
$lang['gdlib'] = 'GDlibバージョン';
$lang['im_convert'] = 'ImageMagick変換ツールへのパス';
$lang['jpg_quality'] = 'JPG圧縮品質0-100';

View File

@ -36,8 +36,6 @@ $lang['_notifications'] = '알림 설정';
$lang['_syndication'] = '신디케이션 설정';
$lang['_advanced'] = '고급 설정';
$lang['_network'] = '네트워크 설정';
$lang['_plugin_sufix'] = '플러그인 설정';
$lang['_template_sufix'] = '템플릿 설정';
$lang['_msg_setting_undefined'] = '설정된 메타데이터가 없습니다.';
$lang['_msg_setting_no_class'] = '설정된 클래스가 없습니다.';
$lang['_msg_setting_no_default'] = '기본값이 없습니다.';
@ -109,7 +107,6 @@ $lang['target____media'] = '미디어 링크에 대한 타겟 창';
$lang['target____windows'] = '창 링크에 대한 타겟 창';
$lang['mediarevisions'] = '미디어 판 관리를 사용하겠습니까?';
$lang['refcheck'] = '미디어 파일을 삭제하기 전에 사용하고 있는지 검사';
$lang['refshow'] = '위의 설정이 활성화되었을 때 보여줄 미디어 참고 수';
$lang['gdlib'] = 'GD 라이브러리 버전';
$lang['im_convert'] = 'ImageMagick 변환 도구 위치';
$lang['jpg_quality'] = 'JPG 압축 품질 (0-100)';

View File

@ -26,8 +26,6 @@ $lang['_links'] = 'Nexi Optiones';
$lang['_media'] = 'Visiuorum Optiones';
$lang['_advanced'] = 'Maiores Optiones';
$lang['_network'] = 'Interretis Optiones';
$lang['_plugin_sufix'] = 'Addendorum Optiones';
$lang['_template_sufix'] = 'Vicis Formae Optiones';
$lang['_msg_setting_undefined'] = 'Res codicum sine optionibus.';
$lang['_msg_setting_no_class'] = 'Classes sine optionibus';
$lang['_msg_setting_no_default'] = 'Nihil';
@ -58,7 +56,6 @@ $lang['camelcase'] = 'SignaContinua nexis apta facere';
$lang['deaccent'] = 'Titulus paginarum abrogare';
$lang['useheading'] = 'Capite primo ut titulo paginae uti';
$lang['refcheck'] = 'Documenta uisiua inspicere';
$lang['refshow'] = 'Numerus documentorum ostendorum';
$lang['allowdebug'] = '<b>ineptum facias si non necessarium!</b> aptum facere';
$lang['usewordblock'] = 'Malum interretiale ob uerba delere';
$lang['indexdelay'] = 'Tempus transitum in ordinando (sec)';

View File

@ -29,8 +29,6 @@ $lang['_media'] = 'Mēdiju iestatījumi';
$lang['_notifications'] = 'Brīdinājumu iestatījumi';
$lang['_advanced'] = 'Smalkāka iestatīšana';
$lang['_network'] = 'Tīkla iestatījumi';
$lang['_plugin_sufix'] = 'moduļa iestatījumi';
$lang['_template_sufix'] = 'šablona iestatījumi';
$lang['_msg_setting_undefined'] = 'Nav atrodami iestatījumu metadati';
$lang['_msg_setting_no_class'] = 'Nav iestatījumu klases';
$lang['_msg_setting_no_default'] = 'Nav noklusētās vērtības';
@ -95,7 +93,6 @@ $lang['target____extern'] = 'Kur atvērt ārējās saites';
$lang['target____media'] = 'Kur atvērt mēdiju saites';
$lang['target____windows'] = 'Kur atvērt saites uz tīkla mapēm';
$lang['refcheck'] = 'Pārbaudīt saites uz mēdiju failiem';
$lang['refshow'] = 'Cik saites uz mēdiju failiem rādīt';
$lang['gdlib'] = 'GD Lib versija';
$lang['im_convert'] = 'Ceļš uz ImageMagick convert rīku';
$lang['jpg_quality'] = 'JPG saspiešanas kvalitāte';

View File

@ -30,8 +30,6 @@ $lang['_links'] = 'लिंक सेटिंग';
$lang['_media'] = 'दृक्श्राव्य माध्यम सेटिंग';
$lang['_advanced'] = 'सविस्तर सेटिंग';
$lang['_network'] = 'नेटवर्क सेटिंग';
$lang['_plugin_sufix'] = 'प्लगिन सेटिंग';
$lang['_template_sufix'] = 'टेम्पलेट ( नमुना ) सेटिंग';
$lang['_msg_setting_undefined'] = 'सेटिंगविषयी उप-डेटा उपलब्ध नाही.';
$lang['_msg_setting_no_class'] = 'सेटिंगचा क्लास उपलब्ध नाही';
$lang['_msg_setting_no_default'] = 'आपोआप किम्मत नाही';
@ -62,7 +60,6 @@ $lang['camelcase'] = 'लिंकसाठी कॅमलकेस
$lang['deaccent'] = 'सरळ्सोट पृष्ठ नाम';
$lang['useheading'] = 'पहिलं शीर्षक पृष्ठ नाम म्हणुन वापरा';
$lang['refcheck'] = 'दृक्श्राव्य माध्यमाचा संदर्भ तपासा';
$lang['refshow'] = 'दृक्श्राव्य माध्यामाचे संदर्भ दाखवण्याची संख्या';
$lang['allowdebug'] = 'डिबगची परवानगी <b> गरज नसल्यास बंद ठेवा !</b>';
$lang['usewordblock'] = 'भंकस मजकूर थोपवण्यासाठी शब्दसमुह वापरा';
$lang['indexdelay'] = 'सूचीकरणापूर्वीचा अवकाश ( सेकंदात )';

View File

@ -21,8 +21,6 @@ $lang['_links'] = 'लिङ्क सेटिंङ्ग';
$lang['_media'] = 'मिडिया सेटिंङ्ग';
$lang['_advanced'] = 'विशिष्ठ सेटिंङ्ग';
$lang['_network'] = 'सञ्जाल सेटिंङ्ग';
$lang['_plugin_sufix'] = 'प्लगइन सेटिंङ्ग';
$lang['_template_sufix'] = 'टेम्प्लेट सेटिंङ्ग';
$lang['_msg_setting_undefined'] = 'सेटिंङ्ग मेटाडाटा नभएको';
$lang['_msg_setting_no_class'] = 'सेटिंङ्ग वर्ग नभएको';
$lang['_msg_setting_no_default'] = 'कुनै पूर्व निर्धारित मान छैन ।';

View File

@ -41,8 +41,6 @@ $lang['_notifications'] = 'Meldingsinstellingen';
$lang['_syndication'] = 'Syndication-instellingen';
$lang['_advanced'] = 'Geavanceerde instellingen';
$lang['_network'] = 'Netwerkinstellingen';
$lang['_plugin_sufix'] = 'Plugin-instellingen';
$lang['_template_sufix'] = 'Sjabloon-instellingen';
$lang['_msg_setting_undefined'] = 'Geen metadata voor deze instelling.';
$lang['_msg_setting_no_class'] = 'Geen class voor deze instelling.';
$lang['_msg_setting_no_default'] = 'Geen standaard waarde.';
@ -113,7 +111,6 @@ $lang['target____media'] = 'Doelvenster voor medialinks';
$lang['target____windows'] = 'Doelvenster voor windows links';
$lang['mediarevisions'] = 'Mediarevisies activeren?';
$lang['refcheck'] = 'Controleer of er verwijzingen bestaan naar een mediabestand voor het wijderen';
$lang['refshow'] = 'Aantal te tonen mediaverwijzingen';
$lang['gdlib'] = 'Versie GD Lib ';
$lang['im_convert'] = 'Path naar ImageMagick\'s convert tool';
$lang['jpg_quality'] = 'JPG compressiekwaliteit (0-100)';

View File

@ -43,8 +43,6 @@ $lang['_links'] = 'Innstillinger for lenker';
$lang['_media'] = 'Innstillinger for mediafiler';
$lang['_advanced'] = 'Avanserte innstillinger';
$lang['_network'] = 'Nettverksinnstillinger';
$lang['_plugin_sufix'] = ' innstillinger for tillegg';
$lang['_template_sufix'] = ' innstillinger for mal';
$lang['_msg_setting_undefined'] = 'Ingen innstillingsmetadata';
$lang['_msg_setting_no_class'] = 'Ingen innstillingsklasse';
$lang['_msg_setting_no_default'] = 'Ingen standard verdi';
@ -76,7 +74,6 @@ $lang['camelcase'] = 'Gjør KamelKasse til lenke automatisk';
$lang['deaccent'] = 'Rensk sidenavn';
$lang['useheading'] = 'Bruk første overskrift som tittel';
$lang['refcheck'] = 'Sjekk referanser før mediafiler slettes';
$lang['refshow'] = 'Antall viste referanser til mediafiler';
$lang['allowdebug'] = 'Tillat feilsøking <b>skru av om det ikke behøves!</b>';
$lang['mediarevisions'] = 'Slå på mediaversjonering?';
$lang['usewordblock'] = 'Blokker søppel basert på ordliste';

View File

@ -40,8 +40,6 @@ $lang['_notifications'] = 'Ustawienia powiadomień';
$lang['_syndication'] = 'Ustawienia RSS';
$lang['_advanced'] = 'Zaawansowane';
$lang['_network'] = 'Sieć';
$lang['_plugin_sufix'] = 'Wtyczki';
$lang['_template_sufix'] = 'Motywy';
$lang['_msg_setting_undefined'] = 'Brak danych o ustawieniu.';
$lang['_msg_setting_no_class'] = 'Brak kategorii ustawień.';
$lang['_msg_setting_no_default'] = 'Brak wartości domyślnej.';
@ -112,7 +110,6 @@ $lang['target____media'] = 'Okno docelowe odnośników do plików';
$lang['target____windows'] = 'Okno docelowe odnośników zasobów Windows';
$lang['mediarevisions'] = 'Włączyć wersjonowanie multimediów?';
$lang['refcheck'] = 'Sprawdzanie odwołań przed usunięciem pliku';
$lang['refshow'] = 'Ilość pokazywanych odwołań do pliku';
$lang['gdlib'] = 'Wersja biblioteki GDLib';
$lang['im_convert'] = 'Ścieżka do programu imagemagick';
$lang['jpg_quality'] = 'Jakość kompresji JPG (0-100)';

View File

@ -44,8 +44,6 @@ $lang['_notifications'] = 'Configurações de notificação';
$lang['_syndication'] = 'Configurações de sindicância';
$lang['_advanced'] = 'Configurações avançadas';
$lang['_network'] = 'Configurações de rede';
$lang['_plugin_sufix'] = 'Configurações de plug-ins';
$lang['_template_sufix'] = 'Configurações do modelo';
$lang['_msg_setting_undefined'] = 'Nenhum metadado configurado.';
$lang['_msg_setting_no_class'] = 'Nenhuma classe definida.';
$lang['_msg_setting_no_default'] = 'Nenhum valor padrão.';

View File

@ -31,8 +31,6 @@ $lang['_links'] = 'Configuração de Ligações';
$lang['_media'] = 'Configuração de Media';
$lang['_advanced'] = 'Configurações Avançadas';
$lang['_network'] = 'Configuração de Rede';
$lang['_plugin_sufix'] = 'Configuração dos Plugins';
$lang['_template_sufix'] = 'Configuração das Templates';
$lang['_msg_setting_undefined'] = 'Nenhum metadado configurado.';
$lang['_msg_setting_no_class'] = 'Nenhuma classe definida.';
$lang['_msg_setting_no_default'] = 'Sem valor por omissão.';
@ -63,7 +61,6 @@ $lang['camelcase'] = 'Usar CamelCase';
$lang['deaccent'] = 'Nomes das páginas sem acentos';
$lang['useheading'] = 'Usar o primeiro cabeçalho para o nome da página';
$lang['refcheck'] = 'Verificação de referência da media';
$lang['refshow'] = 'Número de referências de media a exibir';
$lang['allowdebug'] = 'Permitir depuração <b>desabilite se não for necessário!</b>';
$lang['usewordblock'] = 'Bloquear spam baseado em lista de palavras (wordlist)';
$lang['indexdelay'] = 'Tempo de espera antes da indexação (seg)';

View File

@ -34,8 +34,6 @@ $lang['_links'] = 'Setări Legături';
$lang['_media'] = 'Setări Media';
$lang['_advanced'] = 'Setări Avansate';
$lang['_network'] = 'Setări Reţea';
$lang['_plugin_sufix'] = 'Setări Plugin-uri';
$lang['_template_sufix'] = 'Setări Şabloane';
$lang['_msg_setting_undefined'] = 'Nesetat metadata';
$lang['_msg_setting_no_class'] = 'Nesetat class';
$lang['_msg_setting_no_default'] = 'Nici o valoare implicită';
@ -69,7 +67,6 @@ $lang['camelcase'] = 'Foloseşte CamelCase pentru legături';
$lang['deaccent'] = 'numedepagină curate';
$lang['useheading'] = 'Foloseşte primul titlu pentru numele paginii';
$lang['refcheck'] = 'Verificare referinţă media';
$lang['refshow'] = 'Numărul de referinţe media de arătat';
$lang['allowdebug'] = 'Permite depanarea <b>dezactivaţi dacă cu e necesar!</b>';
$lang['mediarevisions'] = 'Activare Revizii Media?';
$lang['usewordblock'] = 'Blochează spam-ul pe baza listei de cuvinte';

View File

@ -43,8 +43,6 @@ $lang['_notifications'] = 'Параметры уведомлений';
$lang['_syndication'] = 'Настройки синдикаций';
$lang['_advanced'] = 'Тонкая настройка';
$lang['_network'] = 'Параметры сети';
$lang['_plugin_sufix'] = 'Параметры плагина';
$lang['_template_sufix'] = 'Параметры шаблона';
$lang['_msg_setting_undefined'] = 'Не найдены метаданные настроек.';
$lang['_msg_setting_no_class'] = 'Не найден класс настроек.';
$lang['_msg_setting_no_default'] = 'Не задано значение по умолчанию.';
@ -115,7 +113,6 @@ $lang['target____media'] = 'target для ссылок на медиафа
$lang['target____windows'] = 'target для ссылок на сетевые каталоги';
$lang['mediarevisions'] = 'Включение версий медиафайлов';
$lang['refcheck'] = 'Проверять ссылки на медиафайлы';
$lang['refshow'] = 'Показывать ссылок на медиафайлы';
$lang['gdlib'] = 'Версия LibGD';
$lang['im_convert'] = 'Путь к ImageMagick';
$lang['jpg_quality'] = 'Качество сжатия JPG (0100). Значение по умолчанию — 70.';

View File

@ -31,8 +31,6 @@ $lang['_notifications'] = 'Nastavenie upozornení';
$lang['_syndication'] = 'Nastavenie poskytovania obsahu';
$lang['_advanced'] = 'Rozšírené nastavenia';
$lang['_network'] = 'Nastavenia siete';
$lang['_plugin_sufix'] = 'Nastavenia plug-inu';
$lang['_template_sufix'] = 'Nastavenia šablóny';
$lang['_msg_setting_undefined'] = 'Nenastavené metadata.';
$lang['_msg_setting_no_class'] = 'Nenastavená trieda.';
$lang['_msg_setting_no_default'] = 'Žiadna predvolená hodnota.';
@ -103,7 +101,6 @@ $lang['target____media'] = 'Cieľové okno (target) pre media odkazy';
$lang['target____windows'] = 'Cieľové okno (target) pre windows odkazy';
$lang['mediarevisions'] = 'Povoliť verzie súborov?';
$lang['refcheck'] = 'Kontrolovať odkazy na médiá (pred vymazaním)';
$lang['refshow'] = 'Počet zobrazených odkazov na médiá';
$lang['gdlib'] = 'Verzia GD Lib';
$lang['im_convert'] = 'Cesta k ImageMagick convert tool';
$lang['jpg_quality'] = 'Kvalita JPG kompresie (0-100)';

View File

@ -29,8 +29,6 @@ $lang['_links'] = 'Nastavitve povezav';
$lang['_media'] = 'Predstavne nastavitve';
$lang['_advanced'] = 'Napredne nastavitve';
$lang['_network'] = 'Omrežne nastavitve';
$lang['_plugin_sufix'] = 'nastavitve';
$lang['_template_sufix'] = 'nastavitve';
$lang['_msg_setting_undefined'] = 'Ni nastavitvenih metapodatkov.';
$lang['_msg_setting_no_class'] = 'Ni nastavitvenega razreda.';
$lang['_msg_setting_no_default'] = 'Ni privzete vrednosti.';
@ -64,7 +62,6 @@ $lang['camelcase'] = 'Uporabi EnoBesedni zapisa za povezave';
$lang['deaccent'] = 'Počisti imena strani';
$lang['useheading'] = 'Uporabi prvi naslov za ime strani';
$lang['refcheck'] = 'Preverjanje sklica predstavnih datotek';
$lang['refshow'] = 'Število predstavih sklicev za prikaz';
$lang['allowdebug'] = 'Dovoli razhroščevanje (po potrebi!)';
$lang['mediarevisions'] = 'Ali naj se omogočijo objave predstavnih vsebin?';
$lang['usewordblock'] = 'Zaustavi neželeno besedilo glede na seznam besed';

View File

@ -27,8 +27,6 @@ $lang['_links'] = 'Kuadrot e Link-eve';
$lang['_media'] = 'Kuadrot e Medias';
$lang['_advanced'] = 'Kuadro të Avancuara';
$lang['_network'] = 'Kuadrot e Rrjetit';
$lang['_plugin_sufix'] = 'Kuadrot e Plugin-eve';
$lang['_template_sufix'] = 'Kuadrot e Template-eve';
$lang['_msg_setting_undefined'] = 'Metadata pa kuadro.';
$lang['_msg_setting_no_class'] = 'Klasë pa kuadro.';
$lang['_msg_setting_no_default'] = 'Asnjë vlerë default.';
@ -59,7 +57,6 @@ $lang['camelcase'] = 'Përdor CamelCase (shkronja e parë e çdo fja
$lang['deaccent'] = 'Emra faqesh të pastër';
$lang['useheading'] = 'Përdor titra të nivelit të parë për faqet e emrave';
$lang['refcheck'] = 'Kontroll për referim mediash';
$lang['refshow'] = 'Numri i referimeve të medias që duhet të tregohet';
$lang['allowdebug'] = 'Lejo debug <b>çaktivizoje nëse nuk nevojitet!</b>';
$lang['usewordblock'] = 'Blloko spam-in duke u bazuar mbi listë fjalësh';
$lang['indexdelay'] = 'Vonesa në kohë para index-imit (sekonda)';

View File

@ -28,8 +28,6 @@ $lang['_links'] = 'Подешавања линковања';
$lang['_media'] = 'Подешавања медија';
$lang['_advanced'] = 'Напредна подешавања';
$lang['_network'] = 'Подешавања мреже';
$lang['_plugin_sufix'] = 'Подешавања за додатке';
$lang['_template_sufix'] = 'Подешавања за шаблоне';
$lang['_msg_setting_undefined'] = 'Нема метаподатака подешавања';
$lang['_msg_setting_no_class'] = 'Нема класе подешавања';
$lang['_msg_setting_no_default'] = 'Нема подразумеване вредности';
@ -60,7 +58,6 @@ $lang['camelcase'] = 'Користи CamelCase за линкове';
$lang['deaccent'] = 'Чисти имена страница';
$lang['useheading'] = 'Преузми наслов првог нивоа за назив странице';
$lang['refcheck'] = 'Провери референце медијских датотека';
$lang['refshow'] = 'Број референци које се приказују за медијске датотеке';
$lang['allowdebug'] = 'Укључи дебаговање <b>искључи ако није потребно!</b>';
$lang['usewordblock'] = 'Блокирај спам на основу листе речи';
$lang['indexdelay'] = 'Одлагање индексирања (секунде)';

View File

@ -44,8 +44,6 @@ $lang['_notifications'] = 'Noterings inställningar';
$lang['_syndication'] = 'Syndikats inställningar';
$lang['_advanced'] = 'Avancerade inställningar';
$lang['_network'] = 'Nätverksinställningar';
$lang['_plugin_sufix'] = '(inställningar för insticksmodul)';
$lang['_template_sufix'] = '(inställningar för mall)';
$lang['_msg_setting_undefined'] = 'Ingen inställningsmetadata.';
$lang['_msg_setting_no_class'] = 'Ingen inställningsklass.';
$lang['_msg_setting_no_default'] = 'Inget standardvärde.';
@ -111,7 +109,6 @@ $lang['target____extern'] = 'Målfönster för externa länkar';
$lang['target____media'] = 'Målfönster för medialänkar';
$lang['target____windows'] = 'Målfönster för windowslänkar';
$lang['refcheck'] = 'Kontrollera referenser till mediafiler';
$lang['refshow'] = 'Antal mediareferenser som ska visas';
$lang['gdlib'] = 'Version av GD-biblioteket';
$lang['im_convert'] = 'Sökväg till ImageMagicks konverteringsverktyg';
$lang['jpg_quality'] = 'Kvalitet för JPG-komprimering (0-100)';

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