Merge branch 'master' into indexer_improvements
Conflicts: inc/fulltext.php inc/indexer.php lib/exe/indexer.php
This commit is contained in:
commit
fc756e0d4d
261 changed files with 10383 additions and 4596 deletions
2
.gitignore
vendored
2
.gitignore
vendored
|
@ -6,6 +6,8 @@
|
|||
/conf/user*.css
|
||||
/conf/user*.js
|
||||
/conf/words.aspell
|
||||
/conf/lang/*
|
||||
/conf/plugin_lang/*
|
||||
.htaccess
|
||||
*.swp
|
||||
*.bak
|
||||
|
|
|
@ -136,4 +136,4 @@ class ixr_library_ixr_message_test extends UnitTestCase {
|
|||
}
|
||||
|
||||
}
|
||||
//Setup VIM: ex: et ts=4 enc=utf-8 :
|
||||
//Setup VIM: ex: et ts=4 :
|
||||
|
|
|
@ -31,4 +31,4 @@ class ixr_library_date_test extends UnitTestCase {
|
|||
}
|
||||
|
||||
}
|
||||
//Setup VIM: ex: et ts=4 enc=utf-8 :
|
||||
//Setup VIM: ex: et ts=4 :
|
||||
|
|
|
@ -228,4 +228,4 @@ class auth_acl_test extends UnitTestCase {
|
|||
|
||||
}
|
||||
|
||||
//Setup VIM: ex: et ts=4 enc=utf-8 :
|
||||
//Setup VIM: ex: et ts=4 :
|
||||
|
|
|
@ -3,20 +3,47 @@
|
|||
require_once DOKU_INC.'inc/init.php';
|
||||
require_once DOKU_INC.'inc/auth.php';
|
||||
|
||||
class auth_admin_test_AuthInSensitive extends auth_basic {
|
||||
function isCaseSensitive(){
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
class auth_admin_test extends UnitTestCase {
|
||||
|
||||
private $oldauth;
|
||||
|
||||
function setup() {
|
||||
global $auth;
|
||||
$this->oldauth = $auth;
|
||||
parent::setup();
|
||||
}
|
||||
|
||||
function setSensitive() {
|
||||
global $auth;
|
||||
$auth = new auth_basic;
|
||||
}
|
||||
|
||||
function setInSensitive() {
|
||||
global $auth;
|
||||
$auth = new auth_admin_test_AuthInSensitive;
|
||||
}
|
||||
|
||||
function teardown() {
|
||||
global $auth;
|
||||
global $conf;
|
||||
global $AUTH_ACL;
|
||||
unset($conf);
|
||||
unset($AUTH_ACL);
|
||||
|
||||
$auth = $this->oldauth;
|
||||
parent::teardown();
|
||||
}
|
||||
|
||||
function test_ismanager(){
|
||||
function test_ismanager_insensitive(){
|
||||
$this->setInSensitive();
|
||||
global $conf;
|
||||
$conf['superuser'] = 'john,@admin';
|
||||
$conf['manager'] = 'john,@managers,doe';
|
||||
$conf['superuser'] = 'john,@admin,@Mötly Görls, Dörte';
|
||||
$conf['manager'] = 'john,@managers,doe, @Mötly Böys, Dänny';
|
||||
|
||||
// anonymous user
|
||||
$this->assertEqual(auth_ismanager('jill', null,false), false);
|
||||
|
@ -25,12 +52,19 @@ class auth_admin_test extends UnitTestCase {
|
|||
$this->assertEqual(auth_ismanager('john', null,false), true);
|
||||
$this->assertEqual(auth_ismanager('doe', null,false), true);
|
||||
|
||||
$this->assertEqual(auth_ismanager('dörte', null,false), true);
|
||||
$this->assertEqual(auth_ismanager('dänny', null,false), true);
|
||||
|
||||
// admin or manager groups
|
||||
$this->assertEqual(auth_ismanager('jill', array('admin'),false), true);
|
||||
$this->assertEqual(auth_ismanager('jill', array('managers'),false), true);
|
||||
|
||||
$this->assertEqual(auth_ismanager('jill', array('mötly görls'),false), true);
|
||||
$this->assertEqual(auth_ismanager('jill', array('mötly böys'),false), true);
|
||||
}
|
||||
|
||||
function test_isadmin(){
|
||||
function test_isadmin_insensitive(){
|
||||
$this->setInSensitive();
|
||||
global $conf;
|
||||
$conf['superuser'] = 'john,@admin,doe,@roots';
|
||||
|
||||
|
@ -48,6 +82,50 @@ class auth_admin_test extends UnitTestCase {
|
|||
$this->assertEqual(auth_ismanager('doe', array('admin'),true), true);
|
||||
}
|
||||
|
||||
function test_ismanager_sensitive(){
|
||||
$this->setSensitive();
|
||||
global $conf;
|
||||
$conf['superuser'] = 'john,@admin,@Mötly Görls, Dörte';
|
||||
$conf['manager'] = 'john,@managers,doe, @Mötly Böys, Dänny';
|
||||
|
||||
// anonymous user
|
||||
$this->assertEqual(auth_ismanager('jill', null,false), false);
|
||||
|
||||
// admin or manager users
|
||||
$this->assertEqual(auth_ismanager('john', null,false), true);
|
||||
$this->assertEqual(auth_ismanager('doe', null,false), true);
|
||||
|
||||
$this->assertEqual(auth_ismanager('dörte', null,false), false);
|
||||
$this->assertEqual(auth_ismanager('dänny', null,false), false);
|
||||
|
||||
// admin or manager groups
|
||||
$this->assertEqual(auth_ismanager('jill', array('admin'),false), true);
|
||||
$this->assertEqual(auth_ismanager('jill', array('managers'),false), true);
|
||||
|
||||
$this->assertEqual(auth_ismanager('jill', array('mötly görls'),false), false);
|
||||
$this->assertEqual(auth_ismanager('jill', array('mötly böys'),false), false);
|
||||
}
|
||||
|
||||
function test_isadmin_sensitive(){
|
||||
$this->setSensitive();
|
||||
global $conf;
|
||||
$conf['superuser'] = 'john,@admin,doe,@roots';
|
||||
|
||||
// anonymous user
|
||||
$this->assertEqual(auth_ismanager('jill', null,true), false);
|
||||
|
||||
// admin user
|
||||
$this->assertEqual(auth_ismanager('john', null,true), true);
|
||||
$this->assertEqual(auth_ismanager('Doe', null,true), false);
|
||||
|
||||
// admin groups
|
||||
$this->assertEqual(auth_ismanager('jill', array('admin'),true), true);
|
||||
$this->assertEqual(auth_ismanager('jill', array('roots'),true), true);
|
||||
$this->assertEqual(auth_ismanager('john', array('admin'),true), true);
|
||||
$this->assertEqual(auth_ismanager('doe', array('admin'),true), true);
|
||||
$this->assertEqual(auth_ismanager('Doe', array('admin'),true), true);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
//Setup VIM: ex: et ts=4 enc=utf-8 :
|
||||
//Setup VIM: ex: et ts=4 :
|
||||
|
|
|
@ -47,4 +47,4 @@ class auth_nameencode_test extends UnitTestCase {
|
|||
}
|
||||
}
|
||||
|
||||
//Setup VIM: ex: et ts=4 enc=utf-8 :
|
||||
//Setup VIM: ex: et ts=4 :
|
||||
|
|
|
@ -15,6 +15,9 @@ class auth_password_test extends UnitTestCase {
|
|||
'crypt' => 'ablvoGr1hvZ5k',
|
||||
'mysql' => '4a1fa3780bd6fd55',
|
||||
'my411' => '*e5929347e25f82e19e4ebe92f1dc6b6e7c2dbd29',
|
||||
'kmd5' => 'a579299436d7969791189acadd86fcb716',
|
||||
'pmd5' => '$P$abcdefgh1RC6Fd32heUzl7EYCG9uGw.',
|
||||
'hmd5' => '$H$abcdefgh1ZbJodHxmeXVAhEzTG7IAp.',
|
||||
);
|
||||
|
||||
|
||||
|
@ -22,7 +25,7 @@ class auth_password_test extends UnitTestCase {
|
|||
foreach($this->passes as $method => $hash){
|
||||
$info = "testing method $method";
|
||||
$this->signal('failinfo',$info);
|
||||
$this->assertEqual(auth_cryptPassword('foo'.$method,$method,'abcdefgh'),$hash);
|
||||
$this->assertEqual(auth_cryptPassword('foo'.$method,$method,'abcdefgh12345678912345678912345678'),$hash);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -38,6 +41,11 @@ class auth_password_test extends UnitTestCase {
|
|||
$this->assertTrue(auth_verifyPassword('foo','$1$$n1rTiFE0nRifwV/43bVon/'));
|
||||
}
|
||||
|
||||
function test_verifyPassword_fixedpmd5(){
|
||||
$this->assertTrue(auth_verifyPassword('test12345','$P$9IQRaTwmfeRo7ud9Fh4E2PdI0S3r.L0'));
|
||||
$this->assertTrue(auth_verifyPassword('test12345','$H$9IQRaTwmfeRo7ud9Fh4E2PdI0S3r.L0'));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
//Setup VIM: ex: et ts=4 enc=utf-8 :
|
||||
//Setup VIM: ex: et ts=4 :
|
||||
|
|
|
@ -152,4 +152,4 @@ class common_clientIP_test extends UnitTestCase {
|
|||
|
||||
}
|
||||
|
||||
//Setup VIM: ex: et ts=4 enc=utf-8 :
|
||||
//Setup VIM: ex: et ts=4 :
|
||||
|
|
|
@ -25,4 +25,4 @@ class common_obfuscate_test extends UnitTestCase {
|
|||
|
||||
|
||||
}
|
||||
//Setup VIM: ex: et ts=4 enc=utf-8 :
|
||||
//Setup VIM: ex: et ts=4 :
|
||||
|
|
|
@ -16,4 +16,4 @@ class common_pagetemplate_test extends UnitTestCase {
|
|||
error_reporting($old);
|
||||
}
|
||||
}
|
||||
//Setup VIM: ex: et ts=4 enc=utf-8 :
|
||||
//Setup VIM: ex: et ts=4 :
|
||||
|
|
|
@ -57,4 +57,4 @@ class indexer_idx_indexlengths_test extends UnitTestCase {
|
|||
}
|
||||
|
||||
|
||||
//Setup VIM: ex: et ts=4 enc=utf-8 :
|
||||
//Setup VIM: ex: et ts=4 :
|
||||
|
|
|
@ -86,4 +86,4 @@ class init_fullpath_test extends UnitTestCase {
|
|||
}
|
||||
|
||||
}
|
||||
//Setup VIM: ex: et ts=4 enc=utf-8 :
|
||||
//Setup VIM: ex: et ts=4 :
|
||||
|
|
|
@ -275,6 +275,31 @@ class init_getBaseURL_test extends UnitTestCase {
|
|||
$this->assertEqual(getBaseURL(true),$correct_result);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Absolute URL with IPv6 domain name.
|
||||
* lighttpd, fastcgi
|
||||
*
|
||||
* data provided by Michael Hamann <michael@content-space.de>
|
||||
*/
|
||||
function test12() {
|
||||
global $conf;
|
||||
$conf['basedir'] = '';
|
||||
$conf['baseurl'] = '';
|
||||
$conf['canonical'] = 0;
|
||||
|
||||
$_SERVER['DOCUMENT_ROOT'] = '/srv/http/';
|
||||
$_SERVER['HTTP_HOST'] = '[fd00::6592:39ed:a2ed:2c78]';
|
||||
$_SERVER['SCRIPT_FILENAME'] = '/srv/http/~michitux/dokuwiki/doku.php';
|
||||
$_SERVER['REQUEST_URI'] = '/~michitux/dokuwiki/doku.php?do=debug';
|
||||
$_SERVER['SCRIPT_NAME'] = '/~michitux/dokuwiki/doku.php';
|
||||
$_SERVER['PATH_INFO'] = null;
|
||||
$_SERVER['PATH_TRANSLATED'] = null;
|
||||
$_SERVER['PHP_SELF'] = '/~michitux/dokuwiki/doku.php';
|
||||
$_SERVER['SERVER_PORT'] = '80';
|
||||
$_SERVER['SERVER_NAME'] = '[fd00';
|
||||
$this->assertEqual(getBaseURL(true), 'http://[fd00::6592:39ed:a2ed:2c78]/~michitux/dokuwiki/');
|
||||
}
|
||||
}
|
||||
|
||||
//Setup VIM: ex: et ts=2 enc=utf-8 :
|
||||
//Setup VIM: ex: et ts=2 :
|
||||
|
|
|
@ -80,4 +80,4 @@ class mail_isvalid extends UnitTestCase {
|
|||
}
|
||||
|
||||
}
|
||||
//Setup VIM: ex: et ts=4 enc=utf-8 :
|
||||
//Setup VIM: ex: et ts=4 :
|
||||
|
|
|
@ -41,4 +41,4 @@ class mail_quotedprintable_encode extends UnitTestCase {
|
|||
}
|
||||
}
|
||||
|
||||
//Setup VIM: ex: et ts=4 enc=utf-8 :
|
||||
//Setup VIM: ex: et ts=4 :
|
||||
|
|
|
@ -46,4 +46,4 @@ class mail_send extends UnitTestCase {
|
|||
}
|
||||
|
||||
}
|
||||
//Setup VIM: ex: et ts=4 enc=utf-8 :
|
||||
//Setup VIM: ex: et ts=4 :
|
||||
|
|
|
@ -144,4 +144,4 @@ class init_clean_id_test extends UnitTestCase {
|
|||
}
|
||||
|
||||
}
|
||||
//Setup VIM: ex: et ts=4 enc=utf-8 :
|
||||
//Setup VIM: ex: et ts=4 :
|
||||
|
|
|
@ -103,4 +103,4 @@ class init_getID_test extends UnitTestCase {
|
|||
}
|
||||
|
||||
}
|
||||
//Setup VIM: ex: et ts=4 enc=utf-8 :
|
||||
//Setup VIM: ex: et ts=4 :
|
||||
|
|
|
@ -42,4 +42,4 @@ class init_resolve_id_test extends UnitTestCase {
|
|||
}
|
||||
|
||||
}
|
||||
//Setup VIM: ex: et ts=4 enc=utf-8 :
|
||||
//Setup VIM: ex: et ts=4 :
|
||||
|
|
|
@ -60,4 +60,4 @@ class init_resolve_pageid_test extends UnitTestCase {
|
|||
}
|
||||
|
||||
}
|
||||
//Setup VIM: ex: et ts=4 enc=utf-8 :
|
||||
//Setup VIM: ex: et ts=4 :
|
||||
|
|
|
@ -12,7 +12,7 @@ class xhtml_links_test extends UnitTestCase {
|
|||
$p = new Doku_Renderer_xhtml();
|
||||
$p->emaillink('foo@example.com','<script>alert(\'"alert"\');</script>');
|
||||
|
||||
$expect = '<a href="mailto:foo%20%5Bat%5D%20example%20%5Bdot%5D%20com" class="mail JSnocheck" title="foo [at] example [dot] com"><script>alert('"alert"');</script></a>';
|
||||
$expect = '<a href="mailto:foo%20%5Bat%5D%20example%20%5Bdot%5D%20com" class="mail" title="foo [at] example [dot] com"><script>alert('"alert"');</script></a>';
|
||||
|
||||
$this->assertEqual($p->doc,$expect);
|
||||
}
|
||||
|
@ -36,7 +36,7 @@ class xhtml_links_test extends UnitTestCase {
|
|||
$p = new Doku_Renderer_xhtml();
|
||||
$p->emaillink('foo@example.com',$image);
|
||||
|
||||
$expect = '<a href="mailto:foo%20%5Bat%5D%20example%20%5Bdot%5D%20com" class="media JSnocheck" title="foo [at] example [dot] com"><img src="'.DOKU_BASE.'lib/exe/fetch.php/img.gif?w=10&h=20&cache=nocache" class="media" title="Some Image" alt="Some Image" width="10" height="20" /></a>';
|
||||
$expect = '<a href="mailto:foo%20%5Bat%5D%20example%20%5Bdot%5D%20com" class="media" title="foo [at] example [dot] com"><img src="'.DOKU_BASE.'lib/exe/fetch.php/img.gif?w=10&h=20&cache=nocache" class="media" title="Some Image" alt="Some Image" width="10" height="20" /></a>';
|
||||
|
||||
$this->assertEqual($p->doc,$expect);
|
||||
}
|
||||
|
|
|
@ -32,4 +32,4 @@ class safeFN_test extends UnitTestCase {
|
|||
}
|
||||
|
||||
}
|
||||
//Setup VIM: ex: et ts=4 enc=utf-8 :
|
||||
//Setup VIM: ex: et ts=4 :
|
||||
|
|
|
@ -75,4 +75,4 @@ class utf8_correctidx_test extends UnitTestCase {
|
|||
}
|
||||
|
||||
}
|
||||
//Setup VIM: ex: et ts=4 enc=utf-8 :
|
||||
//Setup VIM: ex: et ts=4 :
|
||||
|
|
|
@ -69,4 +69,4 @@ class utf8_html_test extends UnitTestCase {
|
|||
|
||||
}
|
||||
|
||||
//Setup VIM: ex: et ts=4 enc=utf-8 :
|
||||
//Setup VIM: ex: et ts=4 :
|
||||
|
|
|
@ -33,4 +33,4 @@ class utf8_romanize_test extends UnitTestCase {
|
|||
$this->assertEqual("a A a A a o O",utf8_romanize("å Å ä Ä ä ö Ö"));
|
||||
}
|
||||
}
|
||||
//Setup VIM: ex: et ts=4 enc=utf-8 :
|
||||
//Setup VIM: ex: et ts=4 :
|
||||
|
|
|
@ -24,4 +24,4 @@ class utf8_stripspecials extends UnitTestCase {
|
|||
}
|
||||
|
||||
}
|
||||
//Setup VIM: ex: et ts=4 enc=utf-8 :
|
||||
//Setup VIM: ex: et ts=4 :
|
||||
|
|
|
@ -40,4 +40,4 @@ class utf8_substr_test extends UnitTestCase {
|
|||
}
|
||||
|
||||
}
|
||||
//Setup VIM: ex: et ts=4 enc=utf-8 :
|
||||
//Setup VIM: ex: et ts=4 :
|
||||
|
|
|
@ -57,4 +57,4 @@ class utf8_unicode_test extends UnitTestCase {
|
|||
|
||||
}
|
||||
|
||||
//Setup VIM: ex: et ts=4 enc=utf-8 :
|
||||
//Setup VIM: ex: et ts=4 :
|
||||
|
|
|
@ -25,4 +25,4 @@ class utf8_utf16be_test extends UnitTestCase {
|
|||
}
|
||||
}
|
||||
|
||||
//Setup VIM: ex: et ts=2 enc=utf-8 :
|
||||
//Setup VIM: ex: et ts=2 :
|
||||
|
|
|
@ -65,4 +65,4 @@ class css_css_compress_test extends UnitTestCase {
|
|||
|
||||
}
|
||||
|
||||
//Setup VIM: ex: et ts=4 enc=utf-8 :
|
||||
//Setup VIM: ex: et ts=4 :
|
||||
|
|
57
_test/cases/lib/exe/css_css_loadfile.test.php
Normal file
57
_test/cases/lib/exe/css_css_loadfile.test.php
Normal file
|
@ -0,0 +1,57 @@
|
|||
<?php
|
||||
|
||||
require_once DOKU_INC.'lib/exe/css.php';
|
||||
|
||||
class css_css_loadfile_test extends UnitTestCase {
|
||||
public function setUp() {
|
||||
$this->file = tempnam('/tmp', 'css');
|
||||
parent::setUp();
|
||||
}
|
||||
|
||||
private function csstest($input, $output = null, $location = 'http://www.example.com/') {
|
||||
io_saveFile($this->file, $input);
|
||||
$this->assertEqual(css_loadfile($this->file, $location), (is_null($output) ? $input : $output));
|
||||
}
|
||||
|
||||
public function test_url_relative() {
|
||||
$this->csstest('#test { background: url("test/test.png"); }', '#test { background: url("http://www.example.com/test/test.png"); }');
|
||||
$this->csstest('#test { background: url(\'test/test.png\'); }', '#test { background: url(\'http://www.example.com/test/test.png\'); }');
|
||||
}
|
||||
|
||||
public function test_url_absolute() {
|
||||
$this->csstest('#test { background: url("/test/test.png"); }');
|
||||
$this->csstest('#test { background: url(\'/test/test.png\'); }');
|
||||
}
|
||||
|
||||
public function test_url_with_protocol() {
|
||||
$this->csstest('#test { background: url("http://www.test.com/test/test.png"); }');
|
||||
$this->csstest('#test { background: url("https://www.test.com/test/test.png"); }');
|
||||
$this->csstest('#test { background: url(\'http://www.test.com/test/test.png\'); }');
|
||||
$this->csstest('#test { background: url(\'https://www.test.com/test/test.png\'); }');
|
||||
}
|
||||
|
||||
public function test_import_relative() {
|
||||
$this->csstest('@import "test/test.png";', '@import "http://www.example.com/test/test.png";');
|
||||
$this->csstest('@import \'test/test.png\';', '@import \'http://www.example.com/test/test.png\';');
|
||||
}
|
||||
|
||||
public function test_import_absolute() {
|
||||
$this->csstest('@import "/test/test.png";');
|
||||
$this->csstest('@import \'/test/test.png\';');
|
||||
}
|
||||
|
||||
public function test_import_with_protocol() {
|
||||
$this->csstest('@import "http://www.test.com/test/test.png";');
|
||||
$this->csstest('@import "https://www.test.com/test/test.png";');
|
||||
$this->csstest('@import \'http://www.test.com/test/test.png\';');
|
||||
$this->csstest('@import \'https://www.test.com/test/test.png\';');
|
||||
}
|
||||
|
||||
public function tearDown() {
|
||||
unlink($this->file);
|
||||
unset($this->file);
|
||||
parent::tearDown();
|
||||
}
|
||||
}
|
||||
|
||||
//Setup VIM: ex: et ts=4 sw=4 :
|
|
@ -120,4 +120,4 @@ class js_js_compress_test extends UnitTestCase {
|
|||
}
|
||||
}
|
||||
|
||||
//Setup VIM: ex: et ts=4 enc=utf-8 :
|
||||
//Setup VIM: ex: et ts=4 :
|
||||
|
|
|
@ -186,4 +186,4 @@ function _quietecho($msg) {
|
|||
if(!$QUIET) echo $msg;
|
||||
}
|
||||
|
||||
//Setup VIM: ex: et ts=2 enc=utf-8 :
|
||||
//Setup VIM: ex: et ts=2 :
|
||||
|
|
148
bin/striplangs.php
Normal file
148
bin/striplangs.php
Normal file
|
@ -0,0 +1,148 @@
|
|||
#!/usr/bin/php
|
||||
<?php
|
||||
/**
|
||||
* Strip unwanted languages from the DokuWiki install
|
||||
*
|
||||
* @author Martin 'E.T.' Misuth <et.github@ethome.sk>
|
||||
*/
|
||||
if ('cli' != php_sapi_name()) die();
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
if(!defined('DOKU_INC')) define('DOKU_INC',realpath(dirname(__FILE__).'/../').'/');
|
||||
require_once DOKU_INC.'inc/cliopts.php';
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
function usage($show_examples = false) {
|
||||
print "Usage: striplangs.php [-h [-x]] [-e] [-k lang1[,lang2]..[,langN]]
|
||||
|
||||
Removes all languages from the instalation, besides the ones
|
||||
after the -k option. English language is never removed!
|
||||
|
||||
OPTIONS
|
||||
-h, --help get this help
|
||||
-x, --examples get also usage examples
|
||||
-k, --keep comma separated list of languages, -e is always implied
|
||||
-e, --english keeps english, dummy to use without -k";
|
||||
if ( $show_examples ) {
|
||||
print "\n
|
||||
EXAMPLES
|
||||
Strips all languages, but keeps 'en' and 'de':
|
||||
striplangs -k de
|
||||
|
||||
Strips all but 'en','ca-valencia','cs','de','is','sk':
|
||||
striplangs --keep ca-valencia,cs,de,is,sk
|
||||
|
||||
Strips all but 'en':
|
||||
striplangs -e
|
||||
|
||||
No option specified, prints usage and throws error:
|
||||
striplangs\n";
|
||||
}
|
||||
}
|
||||
|
||||
function getSuppliedArgument($OPTS, $short, $long) {
|
||||
$arg = $OPTS->get($short);
|
||||
if ( is_null($arg) ) {
|
||||
$arg = $OPTS->get($long);
|
||||
}
|
||||
return $arg;
|
||||
}
|
||||
|
||||
function processPlugins($path, $keep_langs) {
|
||||
if (is_dir($path)) {
|
||||
$entries = scandir($path);
|
||||
|
||||
foreach ($entries as $entry) {
|
||||
if ($entry != "." && $entry != "..") {
|
||||
if ( is_dir($path.'/'.$entry) ) {
|
||||
|
||||
$plugin_langs = $path.'/'.$entry.'/lang';
|
||||
|
||||
if ( is_dir( $plugin_langs ) ) {
|
||||
stripDirLangs($plugin_langs, $keep_langs);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function stripDirLangs($path, $keep_langs) {
|
||||
$dir = dir($path);
|
||||
|
||||
while(($cur_dir = $dir->read()) !== false) {
|
||||
if( $cur_dir != '.' and $cur_dir != '..' and is_dir($path.'/'.$cur_dir)) {
|
||||
|
||||
if ( !in_array($cur_dir, $keep_langs, true ) ) {
|
||||
killDir($path.'/'.$cur_dir);
|
||||
}
|
||||
}
|
||||
}
|
||||
$dir->close();
|
||||
}
|
||||
|
||||
function killDir($dir) {
|
||||
if (is_dir($dir)) {
|
||||
$entries = scandir($dir);
|
||||
|
||||
foreach ($entries as $entry) {
|
||||
if ($entry != "." && $entry != "..") {
|
||||
if ( is_dir($dir.'/'.$entry) ) {
|
||||
killDir($dir.'/'.$entry);
|
||||
} else {
|
||||
unlink($dir.'/'.$entry);
|
||||
}
|
||||
}
|
||||
}
|
||||
reset($entries);
|
||||
rmdir($dir);
|
||||
}
|
||||
}
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
// handle options
|
||||
$short_opts = 'hxk:e';
|
||||
$long_opts = array('help', 'examples', 'keep=','english');
|
||||
|
||||
$OPTS = Doku_Cli_Opts::getOptions(__FILE__, $short_opts, $long_opts);
|
||||
|
||||
if ( $OPTS->isError() ) {
|
||||
fwrite( STDERR, $OPTS->getMessage() . "\n");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
// handle '--examples' option
|
||||
$show_examples = ( $OPTS->has('x') or $OPTS->has('examples') ) ? true : false;
|
||||
|
||||
// handle '--help' option
|
||||
if ( $OPTS->has('h') or $OPTS->has('help') ) {
|
||||
usage($show_examples);
|
||||
exit(0);
|
||||
}
|
||||
|
||||
// handle both '--keep' and '--english' options
|
||||
if ( $OPTS->has('k') or $OPTS->has('keep') ) {
|
||||
$preserved_langs = getSuppliedArgument($OPTS,'k','keep');
|
||||
$langs = explode(',', $preserved_langs);
|
||||
|
||||
// ! always enforce 'en' lang when using '--keep' (DW relies on it)
|
||||
if ( !isset($langs['en']) ) {
|
||||
$langs[]='en';
|
||||
}
|
||||
} elseif ( $OPTS->has('e') or $OPTS->has('english') ) {
|
||||
// '--english' was specified strip everything besides 'en'
|
||||
$langs = array ('en');
|
||||
} else {
|
||||
// no option was specified, print usage but don't do anything as
|
||||
// this run might not be intented
|
||||
usage();
|
||||
print "\n
|
||||
ERROR
|
||||
No option specified, use either -h -x to get more info,
|
||||
or -e to strip every language besides english.\n";
|
||||
exit(1);
|
||||
}
|
||||
|
||||
// Kill all language directories in /inc/lang and /lib/plugins besides those in $langs array
|
||||
stripDirLangs(realpath(dirname(__FILE__).'/../inc/lang'), $langs);
|
||||
processPlugins(realpath(dirname(__FILE__).'/../lib/plugins'), $langs);
|
|
@ -71,8 +71,8 @@ MHz Megahertz
|
|||
MIME Multipurpose Internet Mail Extension
|
||||
MIT Massachusetts Institute of Technology
|
||||
MML Mathematical Markup Language
|
||||
MP3 Motion Picture Experts Group Layer 3
|
||||
MPEG Motion Picture Experts Group
|
||||
MP3 Moving Picture Experts Group Layer 3
|
||||
MPEG Moving Picture Experts Group
|
||||
MSDN Microsoft Developer Network
|
||||
MS Microsoft
|
||||
MSIE Microsoft Internet Explorer
|
||||
|
@ -101,6 +101,7 @@ POP Post Office Protocol
|
|||
QoS Quality of Service
|
||||
RAID Redundant Array of Inexpensive Disks
|
||||
RDF Resource Description Framework
|
||||
RFC Request for Comments
|
||||
ROTFL Rolling on the floor laughing
|
||||
RPC Remote Procedure Call
|
||||
RSS Rich Site Summary
|
||||
|
|
|
@ -99,6 +99,7 @@ $conf['fetchsize'] = 0; //maximum size (bytes) fetch.php may do
|
|||
$conf['notify'] = ''; //send change info to this email (leave blank for nobody)
|
||||
$conf['registernotify'] = ''; //send info about newly registered users to this email (leave blank for nobody)
|
||||
$conf['mailfrom'] = ''; //use this email when sending mails
|
||||
$conf['mailprefix'] = ''; //use this as prefix of outgoing mails
|
||||
$conf['gzip_output'] = 0; //use gzip content encodeing for the output xhtml (if allowed by browser)
|
||||
$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)
|
||||
|
@ -121,7 +122,7 @@ $conf['rss_linkto'] = 'diff'; //what page RSS entries link to:
|
|||
// 'page' - the revised page itself
|
||||
// 'rev' - page showing all revisions
|
||||
// 'current' - most recent revision of page
|
||||
$conf['rss_content'] = 'abstract'; // what to put in the items by deafult?
|
||||
$conf['rss_content'] = 'abstract'; // what to put in the items by default?
|
||||
// 'abstract' - plain text, first paragraph or so
|
||||
// 'diff' - plain text unified diff wrapped in <pre> tags
|
||||
// 'htmldiff' - diff as HTML table
|
||||
|
|
|
@ -21,6 +21,7 @@ man http://man.cx/
|
|||
amazon http://www.amazon.com/exec/obidos/ASIN/{URL}/splitbrain-20/
|
||||
amazon.de http://www.amazon.de/exec/obidos/ASIN/{URL}/splitbrain-21/
|
||||
amazon.uk http://www.amazon.co.uk/exec/obidos/ASIN/
|
||||
paypal https://www.paypal.com/cgi-bin/webscr?cmd=_xclick&business=
|
||||
phpfn http://www.php.net/{NAME}
|
||||
coral http://{HOST}.{PORT}.nyud.net:8090/{PATH}?{QUERY}
|
||||
freecache http://freecache.org/{NAME}
|
||||
|
|
5
doku.php
5
doku.php
|
@ -7,7 +7,7 @@
|
|||
*/
|
||||
|
||||
// update message version
|
||||
$updateVersion = 29;
|
||||
$updateVersion = 30;
|
||||
|
||||
// xdebug_start_profiling();
|
||||
|
||||
|
@ -29,7 +29,10 @@ require_once(DOKU_INC.'inc/init.php');
|
|||
//import variables
|
||||
$QUERY = trim($_REQUEST['id']);
|
||||
$ID = getID();
|
||||
|
||||
// deprecated 2011-01-14
|
||||
$NS = getNS($ID);
|
||||
|
||||
$REV = $_REQUEST['rev'];
|
||||
$IDX = $_REQUEST['idx'];
|
||||
$DATE = $_REQUEST['date'];
|
||||
|
|
72
feed.php
72
feed.php
|
@ -24,7 +24,7 @@ $cache = new cache($key, '.feed');
|
|||
// prepare cache depends
|
||||
$depends['files'] = getConfigFiles('main');
|
||||
$depends['age'] = $conf['rss_update'];
|
||||
$depends['purge'] = ($_REQUEST['purge']) ? true : false;
|
||||
$depends['purge'] = isset($_REQUEST['purge']);
|
||||
|
||||
// check cacheage and deliver if nothing has changed since last
|
||||
// time or the update interval has not passed, also handles conditional requests
|
||||
|
@ -55,18 +55,20 @@ $image->link = DOKU_URL;
|
|||
$rss->image = $image;
|
||||
|
||||
$data = null;
|
||||
if($opt['feed_mode'] == 'list'){
|
||||
$data = rssListNamespace($opt);
|
||||
}elseif($opt['feed_mode'] == 'search'){
|
||||
$data = rssSearch($opt);
|
||||
}else{
|
||||
$modes = array('list' => 'rssListNamespace',
|
||||
'search' => 'rssSearch',
|
||||
'recent' => 'rssRecentChanges');
|
||||
if (isset($modes[$opt['feed_mode']])) {
|
||||
$data = $modes[$opt['feed_mode']]($opt);
|
||||
} else {
|
||||
$eventData = array(
|
||||
'opt' => &$opt,
|
||||
'data' => &$data,
|
||||
);
|
||||
$event = new Doku_Event('FEED_MODE_UNKNOWN', $eventData);
|
||||
if ($event->advise_before(true)) {
|
||||
$data = rssRecentChanges($opt);
|
||||
echo sprintf('<error>Unknown feed mode %s</error>', hsc($opt['feed_mode']));
|
||||
exit;
|
||||
}
|
||||
$event->advise_after();
|
||||
}
|
||||
|
@ -83,29 +85,53 @@ print $feed;
|
|||
// ---------------------------------------------------------------- //
|
||||
|
||||
/**
|
||||
* Get URL parameters and config options and return a initialized option array
|
||||
* Get URL parameters and config options and return an initialized option array
|
||||
*
|
||||
* @author Andreas Gohr <andi@splitbrain.org>
|
||||
*/
|
||||
function rss_parseOptions(){
|
||||
global $conf;
|
||||
|
||||
$opt['items'] = (int) $_REQUEST['num'];
|
||||
$opt['feed_type'] = $_REQUEST['type'];
|
||||
$opt['feed_mode'] = $_REQUEST['mode'];
|
||||
$opt['show_minor'] = $_REQUEST['minor'];
|
||||
$opt['namespace'] = $_REQUEST['ns'];
|
||||
$opt['link_to'] = $_REQUEST['linkto'];
|
||||
$opt['item_content'] = $_REQUEST['content'];
|
||||
$opt['search_query'] = $_REQUEST['q'];
|
||||
$opt = array();
|
||||
|
||||
foreach(array(
|
||||
// Basic feed properties
|
||||
// Plugins may probably want to add new values to these
|
||||
// properties for implementing own feeds
|
||||
|
||||
// One of: list, search, recent
|
||||
'feed_mode' => array('mode', 'recent'),
|
||||
// One of: diff, page, rev, current
|
||||
'link_to' => array('linkto', $conf['rss_linkto']),
|
||||
// One of: abstract, diff, htmldiff, html
|
||||
'item_content' => array('content', $conf['rss_content']),
|
||||
|
||||
// Special feed properties
|
||||
// These are only used by certain feed_modes
|
||||
|
||||
// String, used for feed title, in list and rc mode
|
||||
'namespace' => array('ns', null),
|
||||
// Positive integer, only used in rc mode
|
||||
'items' => array('num', $conf['recent']),
|
||||
// Boolean, only used in rc mode
|
||||
'show_minor' => array('minor', false),
|
||||
// String, only used in search mode
|
||||
'search_query' => array('q', null),
|
||||
|
||||
) as $name => $val) {
|
||||
$opt[$name] = (isset($_REQUEST[$val[0]]) && !empty($_REQUEST[$val[0]]))
|
||||
? $_REQUEST[$val[0]] : $val[1];
|
||||
}
|
||||
|
||||
$opt['items'] = max(0, (int) $opt['items']);
|
||||
$opt['show_minor'] = (bool) $opt['show_minor'];
|
||||
|
||||
if(!$opt['feed_type']) $opt['feed_type'] = $conf['rss_type'];
|
||||
if(!$opt['item_content']) $opt['item_content'] = $conf['rss_content'];
|
||||
if(!$opt['link_to']) $opt['link_to'] = $conf['rss_linkto'];
|
||||
if(!$opt['items']) $opt['items'] = $conf['recent'];
|
||||
$opt['guardmail'] = ($conf['mailguard'] != '' && $conf['mailguard'] != 'none');
|
||||
|
||||
switch ($opt['feed_type']){
|
||||
$type = valid_input_set('type', array('rss','rss2','atom','atom1','rss1',
|
||||
'default' => $conf['rss_type']),
|
||||
$_REQUEST);
|
||||
switch ($type){
|
||||
case 'rss':
|
||||
$opt['feed_type'] = 'RSS0.91';
|
||||
$opt['mime_type'] = 'text/xml';
|
||||
|
@ -279,7 +305,7 @@ function rss_buildItems(&$rss,&$data,$opt){
|
|||
}
|
||||
|
||||
// add category
|
||||
if($meta['subject']){
|
||||
if(isset($meta['subject'])) {
|
||||
$item->category = $meta['subject'];
|
||||
}else{
|
||||
$cat = getNS($id);
|
||||
|
@ -349,4 +375,4 @@ function rssSearch($opt){
|
|||
return $data;
|
||||
}
|
||||
|
||||
//Setup VIM: ex: et ts=4 enc=utf-8 :
|
||||
//Setup VIM: ex: et ts=4 :
|
||||
|
|
|
@ -30,7 +30,7 @@ class _DiffOp {
|
|||
class _DiffOp_Copy extends _DiffOp {
|
||||
var $type = 'copy';
|
||||
|
||||
function _DiffOp_Copy ($orig, $closing = false) {
|
||||
function _DiffOp_Copy($orig, $closing = false) {
|
||||
if (!is_array($closing))
|
||||
$closing = $orig;
|
||||
$this->orig = $orig;
|
||||
|
@ -45,7 +45,7 @@ class _DiffOp_Copy extends _DiffOp {
|
|||
class _DiffOp_Delete extends _DiffOp {
|
||||
var $type = 'delete';
|
||||
|
||||
function _DiffOp_Delete ($lines) {
|
||||
function _DiffOp_Delete($lines) {
|
||||
$this->orig = $lines;
|
||||
$this->closing = false;
|
||||
}
|
||||
|
@ -58,7 +58,7 @@ class _DiffOp_Delete extends _DiffOp {
|
|||
class _DiffOp_Add extends _DiffOp {
|
||||
var $type = 'add';
|
||||
|
||||
function _DiffOp_Add ($lines) {
|
||||
function _DiffOp_Add($lines) {
|
||||
$this->closing = $lines;
|
||||
$this->orig = false;
|
||||
}
|
||||
|
@ -71,7 +71,7 @@ class _DiffOp_Add extends _DiffOp {
|
|||
class _DiffOp_Change extends _DiffOp {
|
||||
var $type = 'change';
|
||||
|
||||
function _DiffOp_Change ($orig, $closing) {
|
||||
function _DiffOp_Change($orig, $closing) {
|
||||
$this->orig = $orig;
|
||||
$this->closing = $closing;
|
||||
}
|
||||
|
@ -104,7 +104,7 @@ class _DiffOp_Change extends _DiffOp {
|
|||
*/
|
||||
class _DiffEngine {
|
||||
|
||||
function diff ($from_lines, $to_lines) {
|
||||
function diff($from_lines, $to_lines) {
|
||||
$n_from = count($from_lines);
|
||||
$n_to = count($to_lines);
|
||||
|
||||
|
@ -135,7 +135,7 @@ class _DiffEngine {
|
|||
$xhash[$from_lines[$xi]] = 1;
|
||||
for ($yi = $skip; $yi < $n_to - $endskip; $yi++) {
|
||||
$line = $to_lines[$yi];
|
||||
if ( ($this->ychanged[$yi] = empty($xhash[$line])) )
|
||||
if (($this->ychanged[$yi] = empty($xhash[$line])))
|
||||
continue;
|
||||
$yhash[$line] = 1;
|
||||
$this->yv[] = $line;
|
||||
|
@ -143,7 +143,7 @@ class _DiffEngine {
|
|||
}
|
||||
for ($xi = $skip; $xi < $n_from - $endskip; $xi++) {
|
||||
$line = $from_lines[$xi];
|
||||
if ( ($this->xchanged[$xi] = empty($yhash[$line])) )
|
||||
if (($this->xchanged[$xi] = empty($yhash[$line])))
|
||||
continue;
|
||||
$this->xv[] = $line;
|
||||
$this->xind[] = $xi;
|
||||
|
@ -165,8 +165,7 @@ class _DiffEngine {
|
|||
|
||||
// Skip matching "snake".
|
||||
$copy = array();
|
||||
while ( $xi < $n_from && $yi < $n_to
|
||||
&& !$this->xchanged[$xi] && !$this->ychanged[$yi]) {
|
||||
while ($xi < $n_from && $yi < $n_to && !$this->xchanged[$xi] && !$this->ychanged[$yi]) {
|
||||
$copy[] = $from_lines[$xi++];
|
||||
++$yi;
|
||||
}
|
||||
|
@ -210,15 +209,14 @@ class _DiffEngine {
|
|||
* match. The caller must trim matching lines from the beginning and end
|
||||
* of the portions it is going to specify.
|
||||
*/
|
||||
function _diag ($xoff, $xlim, $yoff, $ylim, $nchunks) {
|
||||
function _diag($xoff, $xlim, $yoff, $ylim, $nchunks) {
|
||||
$flip = false;
|
||||
|
||||
if ($xlim - $xoff > $ylim - $yoff) {
|
||||
// Things seems faster (I'm not sure I understand why)
|
||||
// when the shortest sequence in X.
|
||||
$flip = true;
|
||||
list ($xoff, $xlim, $yoff, $ylim)
|
||||
= array( $yoff, $ylim, $xoff, $xlim);
|
||||
list ($xoff, $xlim, $yoff, $ylim) = array($yoff, $ylim, $xoff, $xlim);
|
||||
}
|
||||
|
||||
if ($flip)
|
||||
|
@ -284,7 +282,7 @@ class _DiffEngine {
|
|||
return array($this->lcs, $seps);
|
||||
}
|
||||
|
||||
function _lcs_pos ($ypos) {
|
||||
function _lcs_pos($ypos) {
|
||||
$end = $this->lcs;
|
||||
if ($end == 0 || $ypos > $this->seq[$end]) {
|
||||
$this->seq[++$this->lcs] = $ypos;
|
||||
|
@ -295,7 +293,7 @@ class _DiffEngine {
|
|||
$beg = 1;
|
||||
while ($beg < $end) {
|
||||
$mid = (int)(($beg + $end) / 2);
|
||||
if ( $ypos > $this->seq[$mid] )
|
||||
if ($ypos > $this->seq[$mid])
|
||||
$beg = $mid + 1;
|
||||
else
|
||||
$end = $mid;
|
||||
|
@ -321,17 +319,15 @@ class _DiffEngine {
|
|||
* Note that XLIM, YLIM are exclusive bounds.
|
||||
* All line numbers are origin-0 and discarded lines are not counted.
|
||||
*/
|
||||
function _compareseq ($xoff, $xlim, $yoff, $ylim) {
|
||||
function _compareseq($xoff, $xlim, $yoff, $ylim) {
|
||||
// Slide down the bottom initial diagonal.
|
||||
while ($xoff < $xlim && $yoff < $ylim
|
||||
&& $this->xv[$xoff] == $this->yv[$yoff]) {
|
||||
while ($xoff < $xlim && $yoff < $ylim && $this->xv[$xoff] == $this->yv[$yoff]) {
|
||||
++$xoff;
|
||||
++$yoff;
|
||||
}
|
||||
|
||||
// Slide up the top initial diagonal.
|
||||
while ($xlim > $xoff && $ylim > $yoff
|
||||
&& $this->xv[$xlim - 1] == $this->yv[$ylim - 1]) {
|
||||
while ($xlim > $xoff && $ylim > $yoff && $this->xv[$xlim - 1] == $this->yv[$ylim - 1]) {
|
||||
--$xlim;
|
||||
--$ylim;
|
||||
}
|
||||
|
@ -379,7 +375,7 @@ class _DiffEngine {
|
|||
*
|
||||
* This is extracted verbatim from analyze.c (GNU diffutils-2.7).
|
||||
*/
|
||||
function _shift_boundaries ($lines, &$changed, $other_changed) {
|
||||
function _shift_boundaries($lines, &$changed, $other_changed) {
|
||||
$i = 0;
|
||||
$j = 0;
|
||||
|
||||
|
@ -519,7 +515,7 @@ class Diff {
|
|||
* @return object A Diff object representing the inverse of the
|
||||
* original diff.
|
||||
*/
|
||||
function reverse () {
|
||||
function reverse() {
|
||||
$rev = $this;
|
||||
$rev->edits = array();
|
||||
foreach ($this->edits as $edit) {
|
||||
|
@ -533,7 +529,7 @@ class Diff {
|
|||
*
|
||||
* @return bool True iff two sequences were identical.
|
||||
*/
|
||||
function isEmpty () {
|
||||
function isEmpty() {
|
||||
foreach ($this->edits as $edit) {
|
||||
if ($edit->type != 'copy')
|
||||
return false;
|
||||
|
@ -548,7 +544,7 @@ class Diff {
|
|||
*
|
||||
* @return int The length of the LCS.
|
||||
*/
|
||||
function lcs () {
|
||||
function lcs() {
|
||||
$lcs = 0;
|
||||
foreach ($this->edits as $edit) {
|
||||
if ($edit->type == 'copy')
|
||||
|
@ -598,7 +594,7 @@ class Diff {
|
|||
*
|
||||
* This is here only for debugging purposes.
|
||||
*/
|
||||
function _check ($from_lines, $to_lines) {
|
||||
function _check($from_lines, $to_lines) {
|
||||
if (serialize($from_lines) != serialize($this->orig()))
|
||||
trigger_error("Reconstructed original doesn't match", E_USER_ERROR);
|
||||
if (serialize($to_lines) != serialize($this->closing()))
|
||||
|
@ -612,7 +608,7 @@ class Diff {
|
|||
|
||||
$prevtype = 'none';
|
||||
foreach ($this->edits as $edit) {
|
||||
if ( $prevtype == $edit->type )
|
||||
if ($prevtype == $edit->type)
|
||||
trigger_error("Edit sequence is non-optimal", E_USER_ERROR);
|
||||
$prevtype = $edit->type;
|
||||
}
|
||||
|
@ -649,8 +645,7 @@ class MappedDiff extends Diff {
|
|||
* @param $mapped_to_lines array This array should
|
||||
* have the same number of elements as $to_lines.
|
||||
*/
|
||||
function MappedDiff($from_lines, $to_lines,
|
||||
$mapped_from_lines, $mapped_to_lines) {
|
||||
function MappedDiff($from_lines, $to_lines, $mapped_from_lines, $mapped_to_lines) {
|
||||
|
||||
assert(count($from_lines) == count($mapped_from_lines));
|
||||
assert(count($to_lines) == count($mapped_to_lines));
|
||||
|
@ -727,9 +722,7 @@ class DiffFormatter {
|
|||
$context = array_slice($edit->orig, 0, $ntrail);
|
||||
$block[] = new _DiffOp_Copy($context);
|
||||
}
|
||||
$this->_block($x0, $ntrail + $xi - $x0,
|
||||
$y0, $ntrail + $yi - $y0,
|
||||
$block);
|
||||
$this->_block($x0, $ntrail + $xi - $x0, $y0, $ntrail + $yi - $y0, $block);
|
||||
$block = false;
|
||||
}
|
||||
}
|
||||
|
@ -754,9 +747,7 @@ class DiffFormatter {
|
|||
}
|
||||
|
||||
if (is_array($block))
|
||||
$this->_block($x0, $xi - $x0,
|
||||
$y0, $yi - $y0,
|
||||
$block);
|
||||
$this->_block($x0, $xi - $x0, $y0, $yi - $y0, $block);
|
||||
|
||||
return $this->_end_diff();
|
||||
}
|
||||
|
@ -836,17 +827,21 @@ class DiffFormatter {
|
|||
define('NBSP', "\xC2\xA0"); // utf-8 non-breaking space.
|
||||
|
||||
class _HWLDF_WordAccumulator {
|
||||
function _HWLDF_WordAccumulator () {
|
||||
function _HWLDF_WordAccumulator() {
|
||||
$this->_lines = array();
|
||||
$this->_line = '';
|
||||
$this->_group = '';
|
||||
$this->_tag = '';
|
||||
}
|
||||
|
||||
function _flushGroup ($new_tag) {
|
||||
function _flushGroup($new_tag) {
|
||||
if ($this->_group !== '') {
|
||||
if ($this->_tag == 'mark')
|
||||
$this->_line .= '<strong>'.$this->_group.'</strong>';
|
||||
elseif ($this->_tag == 'add')
|
||||
$this->_line .= '<span class="diff-addedline">'.$this->_group.'</span>';
|
||||
elseif ($this->_tag == 'del')
|
||||
$this->_line .= '<span class="diff-deletedline"><del>'.$this->_group.'</del></span>';
|
||||
else
|
||||
$this->_line .= $this->_group;
|
||||
}
|
||||
|
@ -854,14 +849,14 @@ class _HWLDF_WordAccumulator {
|
|||
$this->_tag = $new_tag;
|
||||
}
|
||||
|
||||
function _flushLine ($new_tag) {
|
||||
function _flushLine($new_tag) {
|
||||
$this->_flushGroup($new_tag);
|
||||
if ($this->_line != '')
|
||||
$this->_lines[] = $this->_line;
|
||||
$this->_line = '';
|
||||
}
|
||||
|
||||
function addWords ($words, $tag = '') {
|
||||
function addWords($words, $tag = '') {
|
||||
if ($tag != $this->_tag)
|
||||
$this->_flushGroup($tag);
|
||||
|
||||
|
@ -887,46 +882,80 @@ class _HWLDF_WordAccumulator {
|
|||
|
||||
class WordLevelDiff extends MappedDiff {
|
||||
|
||||
function WordLevelDiff ($orig_lines, $closing_lines) {
|
||||
function WordLevelDiff($orig_lines, $closing_lines) {
|
||||
list ($orig_words, $orig_stripped) = $this->_split($orig_lines);
|
||||
list ($closing_words, $closing_stripped) = $this->_split($closing_lines);
|
||||
|
||||
$this->MappedDiff($orig_words, $closing_words,
|
||||
$orig_stripped, $closing_stripped);
|
||||
$this->MappedDiff($orig_words, $closing_words, $orig_stripped, $closing_stripped);
|
||||
}
|
||||
|
||||
function _split($lines) {
|
||||
if (!preg_match_all('/ ( [^\S\n]+ | [0-9_A-Za-z\x80-\xff]+ | . ) (?: (?!< \n) [^\S\n])? /xs',
|
||||
implode("\n", $lines),
|
||||
$m)) {
|
||||
if (!preg_match_all('/ ( [^\S\n]+ | [0-9_A-Za-z\x80-\xff]+ | . ) (?: (?!< \n) [^\S\n])? /xsu',
|
||||
implode("\n", $lines), $m)) {
|
||||
return array(array(''), array(''));
|
||||
}
|
||||
return array($m[0], $m[1]);
|
||||
}
|
||||
}
|
||||
return array($m[0], $m[1]);
|
||||
}
|
||||
|
||||
function orig () {
|
||||
$orig = new _HWLDF_WordAccumulator;
|
||||
function orig() {
|
||||
$orig = new _HWLDF_WordAccumulator;
|
||||
|
||||
foreach ($this->edits as $edit) {
|
||||
foreach ($this->edits as $edit) {
|
||||
if ($edit->type == 'copy')
|
||||
$orig->addWords($edit->orig);
|
||||
$orig->addWords($edit->orig);
|
||||
elseif ($edit->orig)
|
||||
$orig->addWords($edit->orig, 'mark');
|
||||
}
|
||||
return $orig->getLines();
|
||||
}
|
||||
$orig->addWords($edit->orig, 'mark');
|
||||
}
|
||||
return $orig->getLines();
|
||||
}
|
||||
|
||||
function closing () {
|
||||
$closing = new _HWLDF_WordAccumulator;
|
||||
function closing() {
|
||||
$closing = new _HWLDF_WordAccumulator;
|
||||
|
||||
foreach ($this->edits as $edit) {
|
||||
if ($edit->type == 'copy')
|
||||
$closing->addWords($edit->closing);
|
||||
elseif ($edit->closing)
|
||||
$closing->addWords($edit->closing, 'mark');
|
||||
}
|
||||
return $closing->getLines();
|
||||
}
|
||||
foreach ($this->edits as $edit) {
|
||||
if ($edit->type == 'copy')
|
||||
$closing->addWords($edit->closing);
|
||||
elseif ($edit->closing)
|
||||
$closing->addWords($edit->closing, 'mark');
|
||||
}
|
||||
return $closing->getLines();
|
||||
}
|
||||
}
|
||||
|
||||
class InlineWordLevelDiff extends MappedDiff {
|
||||
|
||||
function InlineWordLevelDiff($orig_lines, $closing_lines) {
|
||||
list ($orig_words, $orig_stripped) = $this->_split($orig_lines);
|
||||
list ($closing_words, $closing_stripped) = $this->_split($closing_lines);
|
||||
|
||||
$this->MappedDiff($orig_words, $closing_words, $orig_stripped, $closing_stripped);
|
||||
}
|
||||
|
||||
function _split($lines) {
|
||||
if (!preg_match_all('/ ( [^\S\n]+ | [0-9_A-Za-z\x80-\xff]+ | . ) (?: (?!< \n) [^\S\n])? /xs',
|
||||
implode("\n", $lines), $m)) {
|
||||
return array(array(''), array(''));
|
||||
}
|
||||
return array($m[0], $m[1]);
|
||||
}
|
||||
|
||||
function inline() {
|
||||
$orig = new _HWLDF_WordAccumulator;
|
||||
foreach ($this->edits as $edit) {
|
||||
if ($edit->type == 'copy')
|
||||
$orig->addWords($edit->orig);
|
||||
elseif ($edit->type == 'change'){
|
||||
$orig->addWords($edit->orig, 'del');
|
||||
$orig->addWords($edit->closing, 'add');
|
||||
} elseif ($edit->type == 'delete')
|
||||
$orig->addWords($edit->orig, 'del');
|
||||
elseif ($edit->type == 'add')
|
||||
$orig->addWords($edit->closing, 'add');
|
||||
elseif ($edit->orig)
|
||||
$orig->addWords($edit->orig, 'del');
|
||||
}
|
||||
return $orig->getLines();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -986,78 +1015,147 @@ class TableDiffFormatter extends DiffFormatter {
|
|||
return $text;
|
||||
}
|
||||
|
||||
function _block_header( $xbeg, $xlen, $ybeg, $ylen ) {
|
||||
function _block_header($xbeg, $xlen, $ybeg, $ylen) {
|
||||
global $lang;
|
||||
$l1 = $lang['line'].' '.$xbeg;
|
||||
$l2 = $lang['line'].' '.$ybeg;
|
||||
$r = '<tr><td class="diff-blockheader" colspan="2">'.$l1.":</td>\n" .
|
||||
'<td class="diff-blockheader" colspan="2">'.$l2.":</td></tr>\n";
|
||||
$r = '<tr><td class="diff-blockheader" colspan="2">'.$l1.":</td>\n".
|
||||
' <td class="diff-blockheader" colspan="2">'.$l2.":</td>\n".
|
||||
"</tr>\n";
|
||||
return $r;
|
||||
}
|
||||
|
||||
function _start_block( $header ) {
|
||||
print( $header );
|
||||
function _start_block($header) {
|
||||
print($header);
|
||||
}
|
||||
|
||||
function _end_block() {
|
||||
}
|
||||
|
||||
function _lines( $lines, $prefix=' ', $color="white" ) {
|
||||
function _lines($lines, $prefix=' ', $color="white") {
|
||||
}
|
||||
|
||||
function addedLine( $line ) {
|
||||
return '<td>+</td><td class="diff-addedline">' .
|
||||
$line.'</td>';
|
||||
|
||||
function addedLine($line) {
|
||||
return '<td>+</td><td class="diff-addedline">' . $line.'</td>';
|
||||
}
|
||||
|
||||
function deletedLine( $line ) {
|
||||
return '<td>-</td><td class="diff-deletedline">' .
|
||||
$line.'</td>';
|
||||
function deletedLine($line) {
|
||||
return '<td>-</td><td class="diff-deletedline">' . $line.'</td>';
|
||||
}
|
||||
|
||||
function emptyLine() {
|
||||
return '<td colspan="2"> </td>';
|
||||
}
|
||||
|
||||
function contextLine( $line ) {
|
||||
function contextLine($line) {
|
||||
return '<td> </td><td class="diff-context">'.$line.'</td>';
|
||||
}
|
||||
|
||||
function _added($lines) {
|
||||
foreach ($lines as $line) {
|
||||
print( '<tr>' . $this->emptyLine() .
|
||||
$this->addedLine( $line ) . "</tr>\n" );
|
||||
print('<tr>' . $this->emptyLine() . $this->addedLine($line) . "</tr>\n");
|
||||
}
|
||||
}
|
||||
|
||||
function _deleted($lines) {
|
||||
foreach ($lines as $line) {
|
||||
print( '<tr>' . $this->deletedLine( $line ) .
|
||||
$this->emptyLine() . "</tr>\n" );
|
||||
print('<tr>' . $this->deletedLine($line) . $this->emptyLine() . "</tr>\n");
|
||||
}
|
||||
}
|
||||
|
||||
function _context( $lines ) {
|
||||
function _context($lines) {
|
||||
foreach ($lines as $line) {
|
||||
print( '<tr>' . $this->contextLine( $line ) .
|
||||
$this->contextLine( $line ) . "</tr>\n" );
|
||||
print('<tr>' . $this->contextLine($line) . $this->contextLine($line) . "</tr>\n");
|
||||
}
|
||||
}
|
||||
|
||||
function _changed( $orig, $closing ) {
|
||||
$diff = new WordLevelDiff( $orig, $closing );
|
||||
function _changed($orig, $closing) {
|
||||
$diff = new WordLevelDiff($orig, $closing);
|
||||
$del = $diff->orig();
|
||||
$add = $diff->closing();
|
||||
|
||||
while ( $line = array_shift( $del ) ) {
|
||||
$aline = array_shift( $add );
|
||||
print( '<tr>' . $this->deletedLine( $line ) .
|
||||
$this->addedLine( $aline ) . "</tr>\n" );
|
||||
while ($line = array_shift($del)) {
|
||||
$aline = array_shift($add);
|
||||
print('<tr>' . $this->deletedLine($line) . $this->addedLine($aline) . "</tr>\n");
|
||||
}
|
||||
$this->_added( $add ); # If any leftovers
|
||||
$this->_added($add); # If any leftovers
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Inline style diff formatter.
|
||||
*
|
||||
*/
|
||||
class InlineDiffFormatter extends DiffFormatter {
|
||||
|
||||
function InlineDiffFormatter() {
|
||||
$this->leading_context_lines = 2;
|
||||
$this->trailing_context_lines = 2;
|
||||
}
|
||||
|
||||
function format($diff) {
|
||||
// Preserve whitespaces by converting some to non-breaking spaces.
|
||||
// Do not convert all of them to allow word-wrap.
|
||||
$val = parent::format($diff);
|
||||
$val = str_replace(' ',' ', $val);
|
||||
$val = preg_replace('/ (?=<)|(?<=[ >]) /', ' ', $val);
|
||||
return $val;
|
||||
}
|
||||
|
||||
function _pre($text){
|
||||
$text = htmlspecialchars($text);
|
||||
return $text;
|
||||
}
|
||||
|
||||
function _block_header($xbeg, $xlen, $ybeg, $ylen) {
|
||||
global $lang;
|
||||
if ($xlen != 1)
|
||||
$xbeg .= "," . $xlen;
|
||||
if ($ylen != 1)
|
||||
$ybeg .= "," . $ylen;
|
||||
$r = '<tr><td class="diff-blockheader">@@ '.$lang['line']." -$xbeg +$ybeg @@";
|
||||
$r .= ' <span class="diff-deletedline"><del>'.$lang['deleted'].'</del></span>';
|
||||
$r .= ' <span class="diff-addedline">'.$lang['created'].'</span>';
|
||||
$r .= "</td></tr>\n";
|
||||
return $r;
|
||||
}
|
||||
|
||||
function _start_block($header) {
|
||||
print($header."\n");
|
||||
}
|
||||
|
||||
function _end_block() {
|
||||
}
|
||||
|
||||
function _lines($lines, $prefix=' ', $color="white") {
|
||||
}
|
||||
|
||||
function _added($lines) {
|
||||
foreach ($lines as $line) {
|
||||
print('<tr><td class="diff-addedline">'. $line . "</td></tr>\n");
|
||||
}
|
||||
}
|
||||
|
||||
function _deleted($lines) {
|
||||
foreach ($lines as $line) {
|
||||
print('<tr><td class="diff-deletedline"><del>' . $line . "</del></td></tr>\n");
|
||||
}
|
||||
}
|
||||
|
||||
function _context($lines) {
|
||||
foreach ($lines as $line) {
|
||||
print('<tr><td class="diff-context">'.$line."</td></tr>\n");
|
||||
}
|
||||
}
|
||||
|
||||
function _changed($orig, $closing) {
|
||||
$diff = new InlineWordLevelDiff($orig, $closing);
|
||||
$add = $diff->inline();
|
||||
|
||||
foreach ($add as $line)
|
||||
print('<tr><td>'.$line."</td></tr>\n");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//Setup VIM: ex: et ts=4 enc=utf-8 :
|
||||
//Setup VIM: ex: et ts=4 :
|
||||
|
|
|
@ -5,21 +5,38 @@
|
|||
* @author Dave Child <dave@addedbytes.com>
|
||||
* @link http://code.google.com/p/php-email-address-validation/
|
||||
* @license http://www.opensource.org/licenses/bsd-license.php
|
||||
* @version SVN r10 + Issue 15 fix
|
||||
*/
|
||||
class EmailAddressValidator {
|
||||
/**
|
||||
* Set true to allow addresses like me@localhost
|
||||
*/
|
||||
public $allowLocalAddresses = false;
|
||||
|
||||
/**
|
||||
* Check email address validity
|
||||
* @param strEmailAddress Email address to be checked
|
||||
* @return True if email is valid, false if not
|
||||
*/
|
||||
function check_email_address($strEmailAddress) {
|
||||
public function check_email_address($strEmailAddress) {
|
||||
|
||||
// If magic quotes is "on", email addresses with quote marks will
|
||||
// fail validation because of added escape characters. Uncommenting
|
||||
// the next three lines will allow for this issue.
|
||||
//if (get_magic_quotes_gpc()) {
|
||||
// $strEmailAddress = stripslashes($strEmailAddress);
|
||||
//}
|
||||
|
||||
// Control characters are not allowed
|
||||
if (preg_match('/[\x00-\x1F\x7F-\xFF]/', $strEmailAddress)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// Check email length - min 3 (a@a), max 256
|
||||
if (!$this->check_text_length($strEmailAddress, 3, 256)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// Split it into sections using last instance of "@"
|
||||
$intAtSymbol = strrpos($strEmailAddress, '@');
|
||||
if ($intAtSymbol === false) {
|
||||
|
@ -31,10 +48,15 @@ class EmailAddressValidator {
|
|||
|
||||
// Count the "@" symbols. Only one is allowed, except where
|
||||
// contained in quote marks in the local part. Quickest way to
|
||||
// check this is to remove anything in quotes.
|
||||
$arrTempAddress[0] = preg_replace('/"[^"]+"/'
|
||||
// check this is to remove anything in quotes. We also remove
|
||||
// characters escaped with backslash, and the backslash
|
||||
// character.
|
||||
$arrTempAddress[0] = preg_replace('/\./'
|
||||
,''
|
||||
,$arrEmailAddress[0]);
|
||||
$arrTempAddress[0] = preg_replace('/"[^"]+"/'
|
||||
,''
|
||||
,$arrTempAddress[0]);
|
||||
$arrTempAddress[1] = $arrEmailAddress[1];
|
||||
$strTempAddress = $arrTempAddress[0] . $arrTempAddress[1];
|
||||
// Then check - should be no "@" symbols.
|
||||
|
@ -63,7 +85,7 @@ class EmailAddressValidator {
|
|||
* @param strLocalPortion Text to be checked
|
||||
* @return True if local portion is valid, false if not
|
||||
*/
|
||||
function check_local_portion($strLocalPortion) {
|
||||
protected function check_local_portion($strLocalPortion) {
|
||||
// Local portion can only be from 1 to 64 characters, inclusive.
|
||||
// Please note that servers are encouraged to accept longer local
|
||||
// parts than 64 characters.
|
||||
|
@ -94,7 +116,7 @@ class EmailAddressValidator {
|
|||
* @param strDomainPortion Text to be checked
|
||||
* @return True if domain portion is valid, false if not
|
||||
*/
|
||||
function check_domain_portion($strDomainPortion) {
|
||||
protected function check_domain_portion($strDomainPortion) {
|
||||
// Total domain can only be from 1 to 255 characters, inclusive
|
||||
if (!$this->check_text_length($strDomainPortion, 1, 255)) {
|
||||
return false;
|
||||
|
@ -109,7 +131,7 @@ class EmailAddressValidator {
|
|||
return true;
|
||||
} else {
|
||||
$arrDomainPortion = explode('.', $strDomainPortion);
|
||||
if (sizeof($arrDomainPortion) < 2) {
|
||||
if (!$this->allowLocalAddresses && sizeof($arrDomainPortion) < 2) {
|
||||
return false; // Not enough parts to domain
|
||||
}
|
||||
for ($i = 0, $max = sizeof($arrDomainPortion); $i < $max; $i++) {
|
||||
|
@ -121,6 +143,11 @@ class EmailAddressValidator {
|
|||
.'([A-Za-z0-9]+))$/', $arrDomainPortion[$i])) {
|
||||
return false;
|
||||
}
|
||||
if ($i == $max - 1) { // TLD cannot be only numbers
|
||||
if (strlen(preg_replace('/[0-9]/', '', $arrDomainPortion[$i])) <= 0) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return true;
|
||||
|
@ -133,7 +160,7 @@ class EmailAddressValidator {
|
|||
* @param intMaximum Maximum acceptable length
|
||||
* @return True if string is within bounds (inclusive), false if not
|
||||
*/
|
||||
function check_text_length($strText, $intMinimum, $intMaximum) {
|
||||
protected function check_text_length($strText, $intMinimum, $intMaximum) {
|
||||
// Minimum and maximum are both inclusive
|
||||
$intTextLength = strlen($strText);
|
||||
if (($intTextLength < $intMinimum) || ($intTextLength > $intMaximum)) {
|
||||
|
@ -142,5 +169,6 @@ class EmailAddressValidator {
|
|||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -49,6 +49,7 @@ class FeedParser_File extends SimplePie_File {
|
|||
*/
|
||||
function FeedParser_File($url, $timeout=10, $redirects=5,
|
||||
$headers=null, $useragent=null, $force_fsockopen=false) {
|
||||
parent::__construct();
|
||||
$this->http = new DokuHTTPClient();
|
||||
$this->success = $this->http->sendRequest($url);
|
||||
|
||||
|
|
|
@ -71,6 +71,7 @@ class DokuHTTPClient extends HTTPClient {
|
|||
* @link http://www.splitbrain.org/go/videodb
|
||||
* @author Andreas Goetz <cpuidle@gmx.de>
|
||||
* @author Andreas Gohr <andi@splitbrain.org>
|
||||
* @author Tobias Sarnowski <sarnowski@new-thoughts.org>
|
||||
*/
|
||||
class HTTPClient {
|
||||
//set these if you like
|
||||
|
@ -86,13 +87,14 @@ class HTTPClient {
|
|||
var $headers;
|
||||
var $debug;
|
||||
var $start = 0; // for timings
|
||||
var $keep_alive = true; // keep alive rocks
|
||||
|
||||
// don't set these, read on error
|
||||
var $error;
|
||||
var $redirect_count;
|
||||
|
||||
// read these after a successful request
|
||||
var $resp_status;
|
||||
var $status;
|
||||
var $resp_body;
|
||||
var $resp_headers;
|
||||
|
||||
|
@ -108,6 +110,9 @@ class HTTPClient {
|
|||
var $proxy_ssl; //boolean set to true if your proxy needs SSL
|
||||
var $proxy_except; // regexp of URLs to exclude from proxy
|
||||
|
||||
// list of kept alive connections
|
||||
static $connections = array();
|
||||
|
||||
// what we use as boundary on multipart/form-data posts
|
||||
var $boundary = '---DokuWikiHTTPClient--4523452351';
|
||||
|
||||
|
@ -222,7 +227,7 @@ class HTTPClient {
|
|||
$path = $uri['path'];
|
||||
if(empty($path)) $path = '/';
|
||||
if(!empty($uri['query'])) $path .= '?'.$uri['query'];
|
||||
$port = $uri['port'];
|
||||
if(isset($uri['port']) && !empty($uri['port'])) $port = $uri['port'];
|
||||
if(isset($uri['user'])) $this->user = $uri['user'];
|
||||
if(isset($uri['pass'])) $this->pass = $uri['pass'];
|
||||
|
||||
|
@ -235,7 +240,7 @@ class HTTPClient {
|
|||
}else{
|
||||
$request_url = $path;
|
||||
$server = $server;
|
||||
if (empty($port)) $port = ($uri['scheme'] == 'https') ? 443 : 80;
|
||||
if (!isset($port)) $port = ($uri['scheme'] == 'https') ? 443 : 80;
|
||||
}
|
||||
|
||||
// add SSL stream prefix if needed - needs SSL support in PHP
|
||||
|
@ -247,7 +252,11 @@ class HTTPClient {
|
|||
if($uri['port']) $headers['Host'].= ':'.$uri['port'];
|
||||
$headers['User-Agent'] = $this->agent;
|
||||
$headers['Referer'] = $this->referer;
|
||||
$headers['Connection'] = 'Close';
|
||||
if ($this->keep_alive) {
|
||||
$headers['Connection'] = 'Keep-Alive';
|
||||
} else {
|
||||
$headers['Connection'] = 'Close';
|
||||
}
|
||||
if($method == 'POST'){
|
||||
if(is_array($data)){
|
||||
if($headers['Content-Type'] == 'multipart/form-data'){
|
||||
|
@ -273,15 +282,33 @@ class HTTPClient {
|
|||
// stop time
|
||||
$start = time();
|
||||
|
||||
// open socket
|
||||
$socket = @fsockopen($server,$port,$errno, $errstr, $this->timeout);
|
||||
if (!$socket){
|
||||
$this->status = -100;
|
||||
$this->error = "Could not connect to $server:$port\n$errstr ($errno)";
|
||||
return false;
|
||||
// already connected?
|
||||
$connectionId = $this->_uniqueConnectionId($server,$port);
|
||||
$this->_debug('connection pool', $this->connections);
|
||||
$socket = null;
|
||||
if (isset($this->connections[$connectionId])) {
|
||||
$this->_debug('reusing connection', $connectionId);
|
||||
$socket = $this->connections[$connectionId];
|
||||
}
|
||||
if (is_null($socket) || feof($socket)) {
|
||||
$this->_debug('opening connection', $connectionId);
|
||||
// open socket
|
||||
$socket = @fsockopen($server,$port,$errno, $errstr, $this->timeout);
|
||||
if (!$socket){
|
||||
$this->status = -100;
|
||||
$this->error = "Could not connect to $server:$port\n$errstr ($errno)";
|
||||
return false;
|
||||
}
|
||||
//set non blocking
|
||||
stream_set_blocking($socket,0);
|
||||
|
||||
// keep alive?
|
||||
if ($this->keep_alive) {
|
||||
$this->connections[$connectionId] = $socket;
|
||||
} else {
|
||||
unset($this->connections[$connectionId]);
|
||||
}
|
||||
}
|
||||
//set non blocking
|
||||
stream_set_blocking($socket,0);
|
||||
|
||||
// build request
|
||||
$request = "$method $request_url HTTP/".$this->http.HTTP_NL;
|
||||
|
@ -300,6 +327,7 @@ class HTTPClient {
|
|||
if($ret === false){
|
||||
$this->status = -100;
|
||||
$this->error = 'Failed writing to socket';
|
||||
unset($this->connections[$connectionId]);
|
||||
return false;
|
||||
}
|
||||
$written += $ret;
|
||||
|
@ -311,10 +339,12 @@ class HTTPClient {
|
|||
if(time()-$start > $this->timeout){
|
||||
$this->status = -100;
|
||||
$this->error = sprintf('Timeout while reading headers (%.3fs)',$this->_time() - $this->start);
|
||||
unset($this->connections[$connectionId]);
|
||||
return false;
|
||||
}
|
||||
if(feof($socket)){
|
||||
$this->error = 'Premature End of File (socket)';
|
||||
unset($this->connections[$connectionId]);
|
||||
return false;
|
||||
}
|
||||
$r_headers .= fgets($socket,1024);
|
||||
|
@ -327,6 +357,7 @@ class HTTPClient {
|
|||
if($match[1] > $this->max_bodysize){
|
||||
$this->error = 'Reported content length exceeds allowed response size';
|
||||
if ($this->max_bodysize_abort)
|
||||
unset($this->connections[$connectionId]);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
@ -334,6 +365,7 @@ class HTTPClient {
|
|||
// get Status
|
||||
if (!preg_match('/^HTTP\/(\d\.\d)\s*(\d+).*?\n/', $r_headers, $m)) {
|
||||
$this->error = 'Server returned bad answer';
|
||||
unset($this->connections[$connectionId]);
|
||||
return false;
|
||||
}
|
||||
$this->status = $m[2];
|
||||
|
@ -359,6 +391,11 @@ class HTTPClient {
|
|||
|
||||
// check server status code to follow redirect
|
||||
if($this->status == 301 || $this->status == 302 ){
|
||||
// close the connection because we don't handle content retrieval here
|
||||
// that's the easiest way to clean up the connection
|
||||
fclose($socket);
|
||||
unset($this->connections[$connectionId]);
|
||||
|
||||
if (empty($this->resp_headers['location'])){
|
||||
$this->error = 'Redirect but no Location Header found';
|
||||
return false;
|
||||
|
@ -386,6 +423,7 @@ class HTTPClient {
|
|||
// check if headers are as expected
|
||||
if($this->header_regexp && !preg_match($this->header_regexp,$r_headers)){
|
||||
$this->error = 'The received headers did not match the given regexp';
|
||||
unset($this->connections[$connectionId]);
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@ -397,11 +435,13 @@ class HTTPClient {
|
|||
do {
|
||||
if(feof($socket)){
|
||||
$this->error = 'Premature End of File (socket)';
|
||||
unset($this->connections[$connectionId]);
|
||||
return false;
|
||||
}
|
||||
if(time()-$start > $this->timeout){
|
||||
$this->status = -100;
|
||||
$this->error = sprintf('Timeout while reading chunk (%.3fs)',$this->_time() - $this->start);
|
||||
unset($this->connections[$connectionId]);
|
||||
return false;
|
||||
}
|
||||
$byte = fread($socket,1);
|
||||
|
@ -418,10 +458,12 @@ class HTTPClient {
|
|||
|
||||
if($this->max_bodysize && strlen($r_body) > $this->max_bodysize){
|
||||
$this->error = 'Allowed response size exceeded';
|
||||
if ($this->max_bodysize_abort)
|
||||
if ($this->max_bodysize_abort){
|
||||
unset($this->connections[$connectionId]);
|
||||
return false;
|
||||
else
|
||||
} else {
|
||||
break;
|
||||
}
|
||||
}
|
||||
} while ($chunk_size);
|
||||
}else{
|
||||
|
@ -430,16 +472,19 @@ class HTTPClient {
|
|||
if(time()-$start > $this->timeout){
|
||||
$this->status = -100;
|
||||
$this->error = sprintf('Timeout while reading response (%.3fs)',$this->_time() - $this->start);
|
||||
unset($this->connections[$connectionId]);
|
||||
return false;
|
||||
}
|
||||
$r_body .= fread($socket,4096);
|
||||
$r_size = strlen($r_body);
|
||||
if($this->max_bodysize && $r_size > $this->max_bodysize){
|
||||
$this->error = 'Allowed response size exceeded';
|
||||
if ($this->max_bodysize_abort)
|
||||
if ($this->max_bodysize_abort) {
|
||||
unset($this->connections[$connectionId]);
|
||||
return false;
|
||||
else
|
||||
} else {
|
||||
break;
|
||||
}
|
||||
}
|
||||
if(isset($this->resp_headers['content-length']) &&
|
||||
!isset($this->resp_headers['transfer-encoding']) &&
|
||||
|
@ -450,9 +495,13 @@ class HTTPClient {
|
|||
}
|
||||
}
|
||||
|
||||
// close socket
|
||||
$status = socket_get_status($socket);
|
||||
fclose($socket);
|
||||
if (!$this->keep_alive ||
|
||||
(isset($this->resp_headers['connection']) && $this->resp_headers['connection'] == 'Close')) {
|
||||
// close socket
|
||||
$status = socket_get_status($socket);
|
||||
fclose($socket);
|
||||
unset($this->connections[$connectionId]);
|
||||
}
|
||||
|
||||
// decode gzip if needed
|
||||
if(isset($this->resp_headers['content-encoding']) &&
|
||||
|
@ -506,12 +555,13 @@ class HTTPClient {
|
|||
*/
|
||||
function _parseHeaders($string){
|
||||
$headers = array();
|
||||
$lines = explode("\n",$string);
|
||||
foreach($lines as $line){
|
||||
list($key,$val) = explode(':',$line,2);
|
||||
$key = strtolower(trim($key));
|
||||
$val = trim($val);
|
||||
if(empty($val)) continue;
|
||||
if (!preg_match_all('/^\s*([\w-]+)\s*:\s*([\S \t]+)\s*$/m', $string,
|
||||
$matches, PREG_SET_ORDER)) {
|
||||
return $headers;
|
||||
}
|
||||
foreach($matches as $match){
|
||||
list(, $key, $val) = $match;
|
||||
$key = strtolower($key);
|
||||
if(isset($headers[$key])){
|
||||
if(is_array($headers[$key])){
|
||||
$headers[$key][] = $val;
|
||||
|
@ -598,6 +648,14 @@ class HTTPClient {
|
|||
return $out;
|
||||
}
|
||||
|
||||
/**
|
||||
* Generates a unique identifier for a connection.
|
||||
*
|
||||
* @return string unique identifier
|
||||
*/
|
||||
function _uniqueConnectionId($server, $port) {
|
||||
return "$server:$port";
|
||||
}
|
||||
}
|
||||
|
||||
//Setup VIM: ex: et ts=4 enc=utf-8 :
|
||||
//Setup VIM: ex: et ts=4 :
|
||||
|
|
|
@ -395,13 +395,8 @@ EOD;
|
|||
$this->output($error->getXml());
|
||||
}
|
||||
function output($xml) {
|
||||
$xml = '<?xml version="1.0"?>'."\n".$xml;
|
||||
$length = strlen($xml);
|
||||
header('Connection: close');
|
||||
header('Content-Length: '.$length);
|
||||
header('Content-Type: text/xml');
|
||||
header('Date: '.date('r'));
|
||||
echo $xml;
|
||||
header('Content-Type: text/xml; charset=utf-8');
|
||||
echo '<?xml version="1.0"?>', "\n", $xml;
|
||||
exit;
|
||||
}
|
||||
function hasMethod($method) {
|
||||
|
|
15
inc/JSON.php
15
inc/JSON.php
|
@ -112,6 +112,16 @@ define('JSON_STRICT_TYPE', 11);
|
|||
* @deprecated
|
||||
*/
|
||||
class JSON {
|
||||
|
||||
/**
|
||||
* Disables the use of PHP5's native json_decode()
|
||||
*
|
||||
* You shouldn't change this usually because the native function is much
|
||||
* faster. However, this non-native will also parse slightly broken JSON
|
||||
* which might be handy when talking to a non-conform endpoint
|
||||
*/
|
||||
public $skipnative = false;
|
||||
|
||||
/**
|
||||
* constructs a new JSON instance
|
||||
*
|
||||
|
@ -366,7 +376,10 @@ class JSON {
|
|||
* @access public
|
||||
*/
|
||||
function decode($str) {
|
||||
if (function_exists('json_decode')) return json_decode($str);
|
||||
if (!$this->skipnative && function_exists('json_decode')){
|
||||
return json_decode($str,($this->use == JSON_LOOSE_TYPE));
|
||||
}
|
||||
|
||||
$str = $this->reduce_string($str);
|
||||
|
||||
switch (strtolower($str)) {
|
||||
|
|
10404
inc/SimplePie.php
10404
inc/SimplePie.php
File diff suppressed because one or more lines are too long
|
@ -7,7 +7,7 @@
|
|||
*
|
||||
* Modified for Dokuwiki
|
||||
*
|
||||
* @license GPL
|
||||
* @license LGPL-2.1
|
||||
* @link http://docs.maxg.info
|
||||
* @author Bouchon <tarlib@bouchon.org> (Maxg)
|
||||
* @author Christopher Smith <chris@jalakai.co.uk>
|
||||
|
|
|
@ -20,6 +20,7 @@ function act_dispatch(){
|
|||
global $ID;
|
||||
global $QUERY;
|
||||
global $lang;
|
||||
global $conf;
|
||||
|
||||
$preact = $ACT;
|
||||
|
||||
|
@ -50,6 +51,12 @@ function act_dispatch(){
|
|||
}
|
||||
}
|
||||
|
||||
//display some infos
|
||||
if($ACT == 'check'){
|
||||
check();
|
||||
$ACT = 'show';
|
||||
}
|
||||
|
||||
//check permissions
|
||||
$ACT = act_permcheck($ACT);
|
||||
|
||||
|
@ -120,12 +127,6 @@ function act_dispatch(){
|
|||
if(substr($ACT,0,7) == 'export_')
|
||||
$ACT = act_export($ACT);
|
||||
|
||||
//display some infos
|
||||
if($ACT == 'check'){
|
||||
check();
|
||||
$ACT = 'show';
|
||||
}
|
||||
|
||||
//handle admin tasks
|
||||
if($ACT == 'admin'){
|
||||
// retrieve admin plugin name from $_REQUEST['page']
|
||||
|
@ -143,6 +144,10 @@ function act_dispatch(){
|
|||
$ACT = act_permcheck($ACT);
|
||||
} // end event ACTION_ACT_PREPROCESS default action
|
||||
$evt->advise_after();
|
||||
// Make sure plugs can handle 'denied'
|
||||
if($conf['send404'] && $ACT == 'denied') {
|
||||
header('HTTP/1.0 403 Forbidden');
|
||||
}
|
||||
unset($evt);
|
||||
|
||||
// when action 'show', the intial not 'show' and POST, do a redirect
|
||||
|
@ -287,10 +292,10 @@ function act_draftsave($act){
|
|||
global $conf;
|
||||
if($conf['usedraft'] && $_POST['wikitext']){
|
||||
$draft = array('id' => $ID,
|
||||
'prefix' => $_POST['prefix'],
|
||||
'prefix' => substr($_POST['prefix'], 0, -1),
|
||||
'text' => $_POST['wikitext'],
|
||||
'suffix' => $_POST['suffix'],
|
||||
'date' => $_POST['date'],
|
||||
'date' => (int) $_POST['date'],
|
||||
'client' => $INFO['client'],
|
||||
);
|
||||
$cname = getCacheName($draft['client'].$ID,'.draft');
|
||||
|
@ -621,6 +626,7 @@ function act_sitemap($act) {
|
|||
if (is_readable($sitemap)) {
|
||||
// Send headers
|
||||
header('Content-Type: '.$mime);
|
||||
header('Content-Disposition: attachment; filename='.basename($sitemap));
|
||||
|
||||
http_conditionalRequest(filemtime($sitemap));
|
||||
|
||||
|
@ -738,4 +744,4 @@ function subscription_handle_post(&$params) {
|
|||
$params = compact('target', 'style', 'data', 'action');
|
||||
}
|
||||
|
||||
//Setup VIM: ex: et ts=2 enc=utf-8 :
|
||||
//Setup VIM: ex: et ts=2 :
|
||||
|
|
120
inc/adLDAP.php
120
inc/adLDAP.php
|
@ -1,7 +1,7 @@
|
|||
<?php
|
||||
/**
|
||||
* PHP LDAP CLASS FOR MANIPULATING ACTIVE DIRECTORY
|
||||
* Version 3.3.1
|
||||
* Version 3.3.2
|
||||
*
|
||||
* PHP Version 5 with SSL and LDAP support
|
||||
*
|
||||
|
@ -9,7 +9,7 @@
|
|||
* email: scott@wiggumworld.com, adldap@richardhyland.com
|
||||
* http://adldap.sourceforge.net/
|
||||
*
|
||||
* Copyright (c) 2006-2009 Scott Barnett, Richard Hyland
|
||||
* Copyright (c) 2006-2010 Scott Barnett, Richard Hyland
|
||||
*
|
||||
* We'd appreciate any improvements or additions to be submitted back
|
||||
* to benefit the entire community :)
|
||||
|
@ -27,10 +27,10 @@
|
|||
* @category ToolsAndUtilities
|
||||
* @package adLDAP
|
||||
* @author Scott Barnett, Richard Hyland
|
||||
* @copyright (c) 2006-2009 Scott Barnett, Richard Hyland
|
||||
* @copyright (c) 2006-2010 Scott Barnett, Richard Hyland
|
||||
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html LGPLv2.1
|
||||
* @revision $Revision: 67 $
|
||||
* @version 3.3.1
|
||||
* @revision $Revision: 91 $
|
||||
* @version 3.3.2
|
||||
* @link http://adldap.sourceforge.net/
|
||||
*/
|
||||
|
||||
|
@ -409,25 +409,26 @@ class adLDAP {
|
|||
* @param bool optional $prevent_rebind
|
||||
* @return bool
|
||||
*/
|
||||
public function authenticate($username,$password,$prevent_rebind=false){
|
||||
public function authenticate($username, $password, $prevent_rebind = false) {
|
||||
// Prevent null binding
|
||||
if ($username===NULL || $password===NULL){ return (false); }
|
||||
if (empty($username) || empty($password)){ return (false); }
|
||||
if ($username === NULL || $password === NULL) { return false; }
|
||||
if (empty($username) || empty($password)) { return false; }
|
||||
|
||||
// Bind as the user
|
||||
$this->_bind = @ldap_bind($this->_conn,$username.$this->_account_suffix,$password);
|
||||
if (!$this->_bind){ return (false); }
|
||||
$ret = true;
|
||||
$this->_bind = @ldap_bind($this->_conn, $username . $this->_account_suffix, $password);
|
||||
if (!$this->_bind){ $ret = false; }
|
||||
|
||||
// Cnce we've checked their details, kick back into admin mode if we have it
|
||||
if ($this->_ad_username!=NULL && !$prevent_rebind){
|
||||
$this->_bind = @ldap_bind($this->_conn,$this->_ad_username.$this->_account_suffix,$this->_ad_password);
|
||||
if ($this->_ad_username !== NULL && !$prevent_rebind) {
|
||||
$this->_bind = @ldap_bind($this->_conn, $this->_ad_username . $this->_account_suffix , $this->_ad_password);
|
||||
if (!$this->_bind){
|
||||
// This should never happen in theory
|
||||
throw new adLDAPException('Rebind to Active Directory failed. AD said: ' . $this->get_last_error());
|
||||
}
|
||||
}
|
||||
|
||||
return (true);
|
||||
return $ret;
|
||||
}
|
||||
|
||||
//*****************************************************************************************************************
|
||||
|
@ -758,7 +759,7 @@ class adLDAP {
|
|||
$ret_groups=array();
|
||||
|
||||
$groups=$this->group_info($group,array("memberof"));
|
||||
if (is_array($groups[0]["memberof"])) {
|
||||
if (isset($groups[0]["memberof"]) && is_array($groups[0]["memberof"])) {
|
||||
$groups=$groups[0]["memberof"];
|
||||
|
||||
if ($groups){
|
||||
|
@ -861,7 +862,7 @@ class adLDAP {
|
|||
* @param array $attributes The attributes to set to the user account
|
||||
* @return bool
|
||||
*/
|
||||
public function user_create($attributes){
|
||||
public function user_create($attributes){
|
||||
// Check for compulsory fields
|
||||
if (!array_key_exists("username",$attributes)){ return ("Missing compulsory field [username]"); }
|
||||
if (!array_key_exists("firstname",$attributes)){ return ("Missing compulsory field [firstname]"); }
|
||||
|
@ -963,25 +964,36 @@ class adLDAP {
|
|||
$username = $this->strguid2hex($username);
|
||||
$filter="objectguid=".$username;
|
||||
}
|
||||
else {
|
||||
$filter="samaccountname=".$username;
|
||||
else if (strstr($username, "@")) {
|
||||
$filter="userPrincipalName=".$username;
|
||||
}
|
||||
else {
|
||||
$filter="samaccountname=".$username;
|
||||
}
|
||||
$filter = "(&(objectCategory=person)({$filter}))";
|
||||
if ($fields===NULL){ $fields=array("samaccountname","mail","memberof","department","displayname","telephonenumber","primarygroupid","objectsid"); }
|
||||
if (!in_array("objectsid",$fields)){
|
||||
$fields[] = "objectsid";
|
||||
}
|
||||
$sr=ldap_search($this->_conn,$this->_base_dn,$filter,$fields);
|
||||
$entries = ldap_get_entries($this->_conn, $sr);
|
||||
|
||||
if ($entries[0]['count'] >= 1) {
|
||||
// AD does not return the primary group in the ldap query, we may need to fudge it
|
||||
if ($this->_real_primarygroup && isset($entries[0]["primarygroupid"][0]) && isset($entries[0]["objectsid"][0])){
|
||||
//$entries[0]["memberof"][]=$this->group_cn($entries[0]["primarygroupid"][0]);
|
||||
$entries[0]["memberof"][]=$this->get_primary_group($entries[0]["primarygroupid"][0], $entries[0]["objectsid"][0]);
|
||||
} else {
|
||||
$entries[0]["memberof"][]="CN=Domain Users,CN=Users,".$this->_base_dn;
|
||||
if (isset($entries[0])) {
|
||||
if ($entries[0]['count'] >= 1) {
|
||||
if (in_array("memberof", $fields)) {
|
||||
// AD does not return the primary group in the ldap query, we may need to fudge it
|
||||
if ($this->_real_primarygroup && isset($entries[0]["primarygroupid"][0]) && isset($entries[0]["objectsid"][0])){
|
||||
//$entries[0]["memberof"][]=$this->group_cn($entries[0]["primarygroupid"][0]);
|
||||
$entries[0]["memberof"][]=$this->get_primary_group($entries[0]["primarygroupid"][0], $entries[0]["objectsid"][0]);
|
||||
} else {
|
||||
$entries[0]["memberof"][]="CN=Domain Users,CN=Users,".$this->_base_dn;
|
||||
}
|
||||
$entries[0]["memberof"]["count"]++;
|
||||
}
|
||||
}
|
||||
return $entries;
|
||||
}
|
||||
|
||||
$entries[0]["memberof"]["count"]++;
|
||||
return ($entries);
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -1232,6 +1244,33 @@ class adLDAP {
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Move a user account to a different OU
|
||||
*
|
||||
* @param string $username The username to move (please be careful here!)
|
||||
* @param array $container The container or containers to move the user to (please be careful here!).
|
||||
* accepts containers in 1. parent 2. child order
|
||||
* @return array
|
||||
*/
|
||||
public function user_move($username, $container) {
|
||||
if (!$this->_bind){ return (false); }
|
||||
if ($username === null){ return ("Missing compulsory field [username]"); }
|
||||
if ($container === null){ return ("Missing compulsory field [container]"); }
|
||||
if (!is_array($container)){ return ("Container must be an array"); }
|
||||
|
||||
$userinfo = $this->user_info($username, array("*"));
|
||||
$dn = $userinfo[0]['distinguishedname'][0];
|
||||
$newrdn = "cn=" . $username;
|
||||
$container = array_reverse($container);
|
||||
$newcontainer = "ou=" . implode(",ou=",$container);
|
||||
$newbasedn = strtolower($newcontainer) . "," . $this->_base_dn;
|
||||
$result=@ldap_rename($this->_conn,$dn,$newrdn,$newbasedn,true);
|
||||
if ($result !== true) {
|
||||
return (false);
|
||||
}
|
||||
return (true);
|
||||
}
|
||||
|
||||
//*****************************************************************************************************************
|
||||
// CONTACT FUNCTIONS
|
||||
// * Still work to do in this area, and new functions to write
|
||||
|
@ -1567,6 +1606,32 @@ class adLDAP {
|
|||
return ($groups);
|
||||
}
|
||||
|
||||
//************************************************************************************************************
|
||||
// ORGANIZATIONAL UNIT FUNCTIONS
|
||||
|
||||
/**
|
||||
* Create an organizational unit
|
||||
*
|
||||
* @param array $attributes Default attributes of the ou
|
||||
* @return bool
|
||||
*/
|
||||
public function ou_create($attributes){
|
||||
if (!is_array($attributes)){ return ("Attributes must be an array"); }
|
||||
if (!array_key_exists("ou_name",$attributes)){ return ("Missing compulsory field [ou_name]"); }
|
||||
if (!array_key_exists("container",$attributes)){ return ("Missing compulsory field [container]"); }
|
||||
if (!is_array($attributes["container"])){ return ("Container attribute must be an array."); }
|
||||
$attributes["container"]=array_reverse($attributes["container"]);
|
||||
|
||||
$add=array();
|
||||
$add["objectClass"] = "organizationalUnit";
|
||||
|
||||
$container="OU=".implode(",OU=",$attributes["container"]);
|
||||
$result=ldap_add($this->_conn,"CN=".$add["cn"].", ".$container.",".$this->_base_dn,$add);
|
||||
if ($result!=true){ return (false); }
|
||||
|
||||
return (true);
|
||||
}
|
||||
|
||||
//************************************************************************************************************
|
||||
// EXCHANGE FUNCTIONS
|
||||
|
||||
|
@ -1998,6 +2063,7 @@ class adLDAP {
|
|||
if ($attributes["exchange_usedefaults"]){ $mod["mDBUseDefaults"][0]=$attributes["exchange_usedefaults"]; }
|
||||
if ($attributes["exchange_policyexclude"]){ $mod["msExchPoliciesExcluded"][0]=$attributes["exchange_policyexclude"]; }
|
||||
if ($attributes["exchange_policyinclude"]){ $mod["msExchPoliciesIncluded"][0]=$attributes["exchange_policyinclude"]; }
|
||||
if ($attributes["exchange_addressbook"]){ $mod["showInAddressBook"][0]=$attributes["exchange_addressbook"]; }
|
||||
|
||||
// This schema is designed for contacts
|
||||
if ($attributes["exchange_hidefromlists"]){ $mod["msExchHideFromAddressLists"][0]=$attributes["exchange_hidefromlists"]; }
|
||||
|
|
178
inc/auth.php
178
inc/auth.php
|
@ -70,6 +70,12 @@ function auth_setup(){
|
|||
$_REQUEST['http_credentials'] = false;
|
||||
if (!$conf['rememberme']) $_REQUEST['r'] = false;
|
||||
|
||||
// handle renamed HTTP_AUTHORIZATION variable (can happen when a fix like
|
||||
// the one presented at
|
||||
// http://www.besthostratings.com/articles/http-auth-php-cgi.html is used
|
||||
// for enabling HTTP authentication with CGI/SuExec)
|
||||
if(isset($_SERVER['REDIRECT_HTTP_AUTHORIZATION']))
|
||||
$_SERVER['HTTP_AUTHORIZATION'] = $_SERVER['REDIRECT_HTTP_AUTHORIZATION'];
|
||||
// streamline HTTP auth credentials (IIS/rewrite -> mod_php)
|
||||
if(isset($_SERVER['HTTP_AUTHORIZATION'])){
|
||||
list($_SERVER['PHP_AUTH_USER'],$_SERVER['PHP_AUTH_PW']) =
|
||||
|
@ -194,10 +200,11 @@ function auth_login($user,$pass,$sticky=false,$silent=false){
|
|||
}else{
|
||||
// read cookie information
|
||||
list($user,$sticky,$pass) = auth_getCookie();
|
||||
// get session info
|
||||
$session = $_SESSION[DOKU_COOKIE]['auth'];
|
||||
if($user && $pass){
|
||||
// we got a cookie - see if we can trust it
|
||||
|
||||
// get session info
|
||||
$session = $_SESSION[DOKU_COOKIE]['auth'];
|
||||
if(isset($session) &&
|
||||
$auth->useSessionCache($user) &&
|
||||
($session['time'] >= time()-$conf['auth_security_timeout']) &&
|
||||
|
@ -371,63 +378,15 @@ function auth_ismanager($user=null,$groups=null,$adminonly=false){
|
|||
$user = $_SERVER['REMOTE_USER'];
|
||||
}
|
||||
}
|
||||
$user = trim($auth->cleanUser($user));
|
||||
if($user === '') return false;
|
||||
if(is_null($groups)) $groups = (array) $USERINFO['grps'];
|
||||
$groups = array_map(array($auth,'cleanGroup'),$groups);
|
||||
$user = auth_nameencode($user);
|
||||
|
||||
// check username against superuser and manager
|
||||
$superusers = explode(',', $conf['superuser']);
|
||||
$superusers = array_unique($superusers);
|
||||
$superusers = array_map('trim', $superusers);
|
||||
$superusers = array_filter($superusers);
|
||||
// prepare an array containing only true values for array_map call
|
||||
$alltrue = array_fill(0, count($superusers), true);
|
||||
$superusers = array_map('auth_nameencode', $superusers, $alltrue);
|
||||
|
||||
// case insensitive?
|
||||
if(!$auth->isCaseSensitive()){
|
||||
$superusers = array_map('utf8_strtolower',$superusers);
|
||||
$user = utf8_strtolower($user);
|
||||
if(is_null($groups)){
|
||||
$groups = (array) $USERINFO['grps'];
|
||||
}
|
||||
|
||||
// check user match
|
||||
if(in_array($user, $superusers)) return true;
|
||||
|
||||
// check superuser match
|
||||
if(auth_isMember($conf['superuser'],$user, $groups)) return true;
|
||||
if($adminonly) return false;
|
||||
// check managers
|
||||
if(!$adminonly){
|
||||
$managers = explode(',', $conf['manager']);
|
||||
$managers = array_unique($managers);
|
||||
$managers = array_map('trim', $managers);
|
||||
$managers = array_filter($managers);
|
||||
// prepare an array containing only true values for array_map call
|
||||
$alltrue = array_fill(0, count($managers), true);
|
||||
$managers = array_map('auth_nameencode', $managers, $alltrue);
|
||||
if(!$auth->isCaseSensitive()) $managers = array_map('utf8_strtolower',$managers);
|
||||
if(in_array($user, $managers)) return true;
|
||||
}
|
||||
|
||||
// check user's groups against superuser and manager
|
||||
if (!empty($groups)) {
|
||||
|
||||
//prepend groups with @ and nameencode
|
||||
$cnt = count($groups);
|
||||
for($i=0; $i<$cnt; $i++){
|
||||
$groups[$i] = '@'.auth_nameencode($groups[$i]);
|
||||
if(!$auth->isCaseSensitive()){
|
||||
$groups[$i] = utf8_strtolower($groups[$i]);
|
||||
}
|
||||
}
|
||||
|
||||
// check groups against superuser and manager
|
||||
foreach($superusers as $supu)
|
||||
if(in_array($supu, $groups)) return true;
|
||||
if(!$adminonly){
|
||||
foreach($managers as $mana)
|
||||
if(in_array($mana, $groups)) return true;
|
||||
}
|
||||
}
|
||||
if(auth_isMember($conf['manager'],$user, $groups)) return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
@ -446,6 +405,52 @@ function auth_isadmin($user=null,$groups=null){
|
|||
return auth_ismanager($user,$groups,true);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Match a user and his groups against a comma separated list of
|
||||
* users and groups to determine membership status
|
||||
*
|
||||
* Note: all input should NOT be nameencoded.
|
||||
*
|
||||
* @param $memberlist string commaseparated list of allowed users and groups
|
||||
* @param $user string user to match against
|
||||
* @param $groups array groups the user is member of
|
||||
* @returns bool true for membership acknowledged
|
||||
*/
|
||||
function auth_isMember($memberlist,$user,array $groups){
|
||||
global $auth;
|
||||
if (!$auth) return false;
|
||||
|
||||
// clean user and groups
|
||||
if(!$auth->isCaseSensitive()){
|
||||
$user = utf8_strtolower($user);
|
||||
$groups = array_map('utf8_strtolower',$groups);
|
||||
}
|
||||
$user = $auth->cleanUser($user);
|
||||
$groups = array_map(array($auth,'cleanGroup'),$groups);
|
||||
|
||||
// extract the memberlist
|
||||
$members = explode(',',$memberlist);
|
||||
$members = array_map('trim',$members);
|
||||
$members = array_unique($members);
|
||||
$members = array_filter($members);
|
||||
|
||||
// compare cleaned values
|
||||
foreach($members as $member){
|
||||
if(!$auth->isCaseSensitive()) $member = utf8_strtolower($member);
|
||||
if($member[0] == '@'){
|
||||
$member = $auth->cleanGroup(substr($member,1));
|
||||
if(in_array($member, $groups)) return true;
|
||||
}else{
|
||||
$member = $auth->cleanUser($member);
|
||||
if($member == $user) return true;
|
||||
}
|
||||
}
|
||||
|
||||
// still here? not a member!
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Convinience function for auth_aclcheck()
|
||||
*
|
||||
|
@ -536,13 +541,13 @@ function auth_aclcheck($id,$user,$groups){
|
|||
|
||||
//still here? do the namespace checks
|
||||
if($ns){
|
||||
$path = $ns.':\*';
|
||||
$path = $ns.':*';
|
||||
}else{
|
||||
$path = '\*'; //root document
|
||||
$path = '*'; //root document
|
||||
}
|
||||
|
||||
do{
|
||||
$matches = preg_grep('/^'.$path.'\s+('.$regexp.')\s+/'.$ci,$AUTH_ACL);
|
||||
$matches = preg_grep('/^'.preg_quote($path,'/').'\s+('.$regexp.')\s+/'.$ci,$AUTH_ACL);
|
||||
if(count($matches)){
|
||||
foreach($matches as $match){
|
||||
$match = preg_replace('/#.*$/','',$match); //ignore comments
|
||||
|
@ -559,9 +564,9 @@ function auth_aclcheck($id,$user,$groups){
|
|||
//get next higher namespace
|
||||
$ns = getNS($ns);
|
||||
|
||||
if($path != '\*'){
|
||||
$path = $ns.':\*';
|
||||
if($path == ':\*') $path = '\*';
|
||||
if($path != '*'){
|
||||
$path = $ns.':*';
|
||||
if($path == ':*') $path = '*';
|
||||
}else{
|
||||
//we did this already
|
||||
//looks like there is something wrong with the ACL
|
||||
|
@ -938,6 +943,8 @@ function act_resendpwd(){
|
|||
* mysql - MySQL password (old method)
|
||||
* my411 - MySQL 4.1.1 password
|
||||
* kmd5 - Salted MD5 hashing as used by UNB
|
||||
* pmd5 - Salted multi iteration MD5 as used by Wordpress
|
||||
* hmd5 - Same as pmd5 but PhpBB3 flavour
|
||||
*
|
||||
* @author Andreas Gohr <andi@splitbrain.org>
|
||||
* @return string The crypted password
|
||||
|
@ -1017,6 +1024,45 @@ function auth_cryptPassword($clear,$method='',$salt=null){
|
|||
$hash1 = strtolower(md5($key . md5($clear)));
|
||||
$hash2 = substr($hash1, 0, 16) . $key . substr($hash1, 16);
|
||||
return $hash2;
|
||||
case 'hmd5':
|
||||
$key = 'H';
|
||||
// hmd5 is exactly the same as pmd5, but uses an H as identifier
|
||||
// PhpBB3 uses it that way, so we just fall through here
|
||||
case 'pmd5':
|
||||
if(!$key) $key = 'P';
|
||||
$itoa64 = './0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
|
||||
$iterc = $salt[0]; // pos 0 of salt is iteration count
|
||||
$iter = strpos($itoa64,$iterc);
|
||||
$iter = 1 << $iter;
|
||||
$salt = substr($salt,1,8);
|
||||
|
||||
// iterate
|
||||
$hash = md5($salt . $clear, true);
|
||||
do {
|
||||
$hash = md5($hash . $clear, true);
|
||||
} while (--$iter);
|
||||
|
||||
// encode
|
||||
$output = '';
|
||||
$count = 16;
|
||||
$i = 0;
|
||||
do {
|
||||
$value = ord($hash[$i++]);
|
||||
$output .= $itoa64[$value & 0x3f];
|
||||
if ($i < $count)
|
||||
$value |= ord($hash[$i]) << 8;
|
||||
$output .= $itoa64[($value >> 6) & 0x3f];
|
||||
if ($i++ >= $count)
|
||||
break;
|
||||
if ($i < $count)
|
||||
$value |= ord($hash[$i]) << 16;
|
||||
$output .= $itoa64[($value >> 12) & 0x3f];
|
||||
if ($i++ >= $count)
|
||||
break;
|
||||
$output .= $itoa64[($value >> 18) & 0x3f];
|
||||
} while ($i < $count);
|
||||
|
||||
return '$'.$key.'$'.$iterc.$salt.$output;
|
||||
default:
|
||||
msg("Unsupported crypt method $method",-1);
|
||||
}
|
||||
|
@ -1044,6 +1090,12 @@ function auth_verifyPassword($clear,$crypt){
|
|||
}elseif(preg_match('/^\$apr1\$([^\$]{0,8})\$/',$crypt,$m)){
|
||||
$method = 'apr1';
|
||||
$salt = $m[1];
|
||||
}elseif(preg_match('/^\$P\$(.{31})$/',$crypt,$m)){
|
||||
$method = 'pmd5';
|
||||
$salt = $m[1];
|
||||
}elseif(preg_match('/^\$H\$(.{31})$/',$crypt,$m)){
|
||||
$method = 'hmd5';
|
||||
$salt = $m[1];
|
||||
}elseif(substr($crypt,0,6) == '{SSHA}'){
|
||||
$method = 'ssha';
|
||||
$salt = substr(base64_decode(substr($crypt, 6)),20);
|
||||
|
@ -1117,4 +1169,4 @@ function auth_getCookie(){
|
|||
return array($user,$sticky,$pass);
|
||||
}
|
||||
|
||||
//Setup VIM: ex: et ts=2 enc=utf-8 :
|
||||
//Setup VIM: ex: et ts=2 :
|
||||
|
|
|
@ -126,7 +126,7 @@ class auth_ad extends auth_basic {
|
|||
* at least these fields:
|
||||
*
|
||||
* name string full name of the user
|
||||
* mail string email addres of the user
|
||||
* mail string email address of the user
|
||||
* grps array list of groups the user is in
|
||||
*
|
||||
* This LDAP specific function returns the following
|
||||
|
@ -296,4 +296,4 @@ class auth_ad extends auth_basic {
|
|||
}
|
||||
}
|
||||
|
||||
//Setup VIM: ex: et ts=4 enc=utf-8 :
|
||||
//Setup VIM: ex: et ts=4 :
|
||||
|
|
|
@ -400,4 +400,4 @@ class auth_basic {
|
|||
}
|
||||
|
||||
}
|
||||
//Setup VIM: ex: et ts=2 enc=utf-8 :
|
||||
//Setup VIM: ex: et ts=2 :
|
||||
|
|
|
@ -457,4 +457,4 @@ class auth_ldap extends auth_basic {
|
|||
}
|
||||
}
|
||||
|
||||
//Setup VIM: ex: et ts=4 enc=utf-8 :
|
||||
//Setup VIM: ex: et ts=4 :
|
||||
|
|
|
@ -936,4 +936,4 @@ class auth_mysql extends auth_basic {
|
|||
}
|
||||
}
|
||||
|
||||
//Setup VIM: ex: et ts=2 enc=utf-8 :
|
||||
//Setup VIM: ex: et ts=2 :
|
||||
|
|
|
@ -407,4 +407,4 @@ class auth_pgsql extends auth_mysql {
|
|||
|
||||
}
|
||||
|
||||
//Setup VIM: ex: et ts=2 enc=utf-8 :
|
||||
//Setup VIM: ex: et ts=2 :
|
||||
|
|
|
@ -325,4 +325,4 @@ class auth_plain extends auth_basic {
|
|||
}
|
||||
}
|
||||
|
||||
//Setup VIM: ex: et ts=2 enc=utf-8 :
|
||||
//Setup VIM: ex: et ts=2 :
|
||||
|
|
|
@ -197,18 +197,6 @@ class cache_parser extends cache {
|
|||
}
|
||||
|
||||
class cache_renderer extends cache_parser {
|
||||
|
||||
function useCache($depends=array()) {
|
||||
$use = parent::useCache($depends);
|
||||
|
||||
// meta data needs to be kept in step with the cache
|
||||
if (!$use && isset($this->page)) {
|
||||
p_set_metadata($this->page,array(),true);
|
||||
}
|
||||
|
||||
return $use;
|
||||
}
|
||||
|
||||
function _useCache() {
|
||||
global $conf;
|
||||
|
||||
|
@ -251,19 +239,12 @@ class cache_renderer extends cache_parser {
|
|||
if (isset($this->page)) {
|
||||
|
||||
$metafile = metaFN($this->page,'.meta');
|
||||
if (@file_exists($metafile)) {
|
||||
$files[] = $metafile; // ... the page's own metadata
|
||||
$files[] = DOKU_INC.'inc/parser/metadata.php'; // ... the metadata renderer
|
||||
$files[] = $metafile; // ... the page's own metadata
|
||||
|
||||
$valid = p_get_metadata($this->page, 'date valid');
|
||||
if (!empty($valid['age'])) {
|
||||
$this->depends['age'] = isset($this->depends['age']) ?
|
||||
min($this->depends['age'],$valid['age']) : $valid['age'];
|
||||
}
|
||||
|
||||
} else {
|
||||
$this->depends['purge'] = true; // ... purging cache will generate metadata
|
||||
return;
|
||||
$valid = p_get_metadata($this->page, 'date valid'); // for xhtml this will render the metadata if needed
|
||||
if (!empty($valid['age'])) {
|
||||
$this->depends['age'] = isset($this->depends['age']) ?
|
||||
min($this->depends['age'],$valid['age']) : $valid['age'];
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -84,7 +84,10 @@ function addLogEntry($date, $id, $type=DOKU_CHANGE_TYPE_EDIT, $summary='', $extr
|
|||
$meta = array();
|
||||
if (!$INFO['exists'] && empty($oldmeta['persistent']['date']['created'])){ // newly created
|
||||
$meta['date']['created'] = $created;
|
||||
if ($user) $meta['creator'] = $INFO['userinfo']['name'];
|
||||
if ($user){
|
||||
$meta['creator'] = $INFO['userinfo']['name'];
|
||||
$meta['user'] = $user;
|
||||
}
|
||||
} elseif (!$INFO['exists'] && !empty($oldmeta['persistent']['date']['created'])) { // re-created / restored
|
||||
$meta['date']['created'] = $oldmeta['persistent']['date']['created'];
|
||||
$meta['date']['modified'] = $created; // use the files ctime here
|
||||
|
|
|
@ -242,13 +242,16 @@ function buildURLparams($params, $sep='&'){
|
|||
*/
|
||||
function buildAttributes($params,$skipempty=false){
|
||||
$url = '';
|
||||
$white = false;
|
||||
foreach($params as $key => $val){
|
||||
if($key{0} == '_') continue;
|
||||
if($val === '' && $skipempty) continue;
|
||||
if($white) $url .= ' ';
|
||||
|
||||
$url .= $key.'="';
|
||||
$url .= htmlspecialchars ($val);
|
||||
$url .= '" ';
|
||||
$url .= '"';
|
||||
$white = true;
|
||||
}
|
||||
return $url;
|
||||
}
|
||||
|
@ -1128,12 +1131,15 @@ function notify($id,$who,$rev='',$summary='',$minor=false,$replace=array()){
|
|||
$diff = rawWiki($id);
|
||||
}
|
||||
$text = str_replace('@DIFF@',$diff,$text);
|
||||
if(utf8_strlen($conf['title']) < 20) {
|
||||
$subject = '['.$conf['title'].'] '.$subject;
|
||||
if(empty($conf['mailprefix'])) {
|
||||
if(utf8_strlen($conf['title']) < 20) {
|
||||
$subject = '['.$conf['title'].'] '.$subject;
|
||||
}else{
|
||||
$subject = '['.utf8_substr($conf['title'], 0, 20).'...] '.$subject;
|
||||
}
|
||||
}else{
|
||||
$subject = '['.utf8_substr($conf['title'], 0, 20).'...] '.$subject;
|
||||
$subject = '['.$conf['mailprefix'].'] '.$subject;
|
||||
}
|
||||
|
||||
mail_send($to,$subject,$text,$conf['mailfrom'],'',$bcc);
|
||||
}
|
||||
|
||||
|
@ -1538,4 +1544,4 @@ function valid_input_set($param, $valid_values, $array, $exc = '') {
|
|||
}
|
||||
}
|
||||
|
||||
//Setup VIM: ex: et ts=2 enc=utf-8 :
|
||||
//Setup VIM: ex: et ts=2 :
|
||||
|
|
|
@ -324,4 +324,4 @@ function conf_decodeString($str) {
|
|||
return $str;
|
||||
}
|
||||
}
|
||||
//Setup VIM: ex: et ts=4 enc=utf-8 :
|
||||
//Setup VIM: ex: et ts=4 :
|
||||
|
|
|
@ -1577,4 +1577,4 @@ class DokuWikiFeedCreator extends UniversalFeedCreator{
|
|||
|
||||
|
||||
|
||||
//Setup VIM: ex: et ts=4 enc=utf-8 :
|
||||
//Setup VIM: ex: et ts=4 :
|
||||
|
|
20
inc/form.php
20
inc/form.php
|
@ -252,7 +252,7 @@ class Doku_Form {
|
|||
global $lang;
|
||||
$form = '';
|
||||
$this->params['accept-charset'] = $lang['encoding'];
|
||||
$form .= '<form ' . html_attbuild($this->params) . '><div class="no">' . DOKU_LF;
|
||||
$form .= '<form ' . buildAttributes($this->params,true) . '><div class="no">' . DOKU_LF;
|
||||
if (!empty($this->_hidden)) {
|
||||
foreach ($this->_hidden as $name=>$value)
|
||||
$form .= form_hidden(array('name'=>$name, 'value'=>$value));
|
||||
|
@ -597,7 +597,7 @@ function form_makeListboxField($name, $values, $selected='', $label=null, $id=''
|
|||
* @author Tom N Harris <tnharris@whoopdedo.org>
|
||||
*/
|
||||
function form_tag($attrs) {
|
||||
return '<'.$attrs['_tag'].' '.buildAttributes($attrs).'/>';
|
||||
return '<'.$attrs['_tag'].' '.buildAttributes($attrs,true).'/>';
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -696,7 +696,7 @@ function form_wikitext($attrs) {
|
|||
*/
|
||||
function form_button($attrs) {
|
||||
$p = (!empty($attrs['_action'])) ? 'name="do['.$attrs['_action'].']" ' : '';
|
||||
return '<input '.$p.buildAttributes($attrs,true).'/>';
|
||||
return '<input '.$p.buildAttributes($attrs,true).' />';
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -714,7 +714,7 @@ function form_field($attrs) {
|
|||
if ($attrs['_class']) $s .= ' class="'.$attrs['_class'].'"';
|
||||
if (!empty($attrs['id'])) $s .= ' for="'.$attrs['id'].'"';
|
||||
$s .= '><span>'.$attrs['_text'].'</span>';
|
||||
$s .= ' <input '.buildAttributes($attrs,true).'/></label>';
|
||||
$s .= ' <input '.buildAttributes($attrs,true).' /></label>';
|
||||
if (preg_match('/(^| )block($| )/', $attrs['_class']))
|
||||
$s .= '<br />';
|
||||
return $s;
|
||||
|
@ -734,7 +734,7 @@ function form_fieldright($attrs) {
|
|||
$s = '<label';
|
||||
if ($attrs['_class']) $s .= ' class="'.$attrs['_class'].'"';
|
||||
if (!empty($attrs['id'])) $s .= ' for="'.$attrs['id'].'"';
|
||||
$s .= '><input '.buildAttributes($attrs,true).'/>';
|
||||
$s .= '><input '.buildAttributes($attrs,true).' />';
|
||||
$s .= ' <span>'.$attrs['_text'].'</span></label>';
|
||||
if (preg_match('/(^| )block($| )/', $attrs['_class']))
|
||||
$s .= '<br />';
|
||||
|
@ -758,7 +758,7 @@ function form_textfield($attrs) {
|
|||
if ($attrs['_class']) $s .= ' class="'.$attrs['_class'].'"';
|
||||
if (!empty($attrs['id'])) $s .= ' for="'.$attrs['id'].'"';
|
||||
$s .= '><span>'.$attrs['_text'].'</span> ';
|
||||
$s .= '<input type="text" '.buildAttributes($attrs,true).'/></label>';
|
||||
$s .= '<input type="text" '.buildAttributes($attrs,true).' /></label>';
|
||||
if (preg_match('/(^| )block($| )/', $attrs['_class']))
|
||||
$s .= '<br />';
|
||||
return $s;
|
||||
|
@ -781,7 +781,7 @@ function form_passwordfield($attrs) {
|
|||
if ($attrs['_class']) $s .= ' class="'.$attrs['_class'].'"';
|
||||
if (!empty($attrs['id'])) $s .= ' for="'.$attrs['id'].'"';
|
||||
$s .= '><span>'.$attrs['_text'].'</span> ';
|
||||
$s .= '<input type="password" '.buildAttributes($attrs,true).'/></label>';
|
||||
$s .= '<input type="password" '.buildAttributes($attrs,true).' /></label>';
|
||||
if (preg_match('/(^| )block($| )/', $attrs['_class']))
|
||||
$s .= '<br />';
|
||||
return $s;
|
||||
|
@ -807,7 +807,7 @@ function form_filefield($attrs) {
|
|||
$s .= '<input type="file" '.buildAttributes($attrs,true);
|
||||
if (!empty($attrs['_maxlength'])) $s .= ' maxlength="'.$attrs['_maxlength'].'"';
|
||||
if (!empty($attrs['_accept'])) $s .= ' accept="'.$attrs['_accept'].'"';
|
||||
$s .= '/></label>';
|
||||
$s .= ' /></label>';
|
||||
if (preg_match('/(^| )block($| )/', $attrs['_class']))
|
||||
$s .= '<br />';
|
||||
return $s;
|
||||
|
@ -837,7 +837,7 @@ function form_checkboxfield($attrs) {
|
|||
. ' value="' . hsc($attrs['value'][1]) . '" />';
|
||||
$attrs['value'] = $attrs['value'][0];
|
||||
}
|
||||
$s .= '<input type="checkbox" '.buildAttributes($attrs,true).'/>';
|
||||
$s .= '<input type="checkbox" '.buildAttributes($attrs,true).' />';
|
||||
$s .= ' <span>'.$attrs['_text'].'</span></label>';
|
||||
if (preg_match('/(^| )block($| )/', $attrs['_class']))
|
||||
$s .= '<br />';
|
||||
|
@ -860,7 +860,7 @@ function form_radiofield($attrs) {
|
|||
$s = '<label';
|
||||
if ($attrs['_class']) $s .= ' class="'.$attrs['_class'].'"';
|
||||
if (!empty($attrs['id'])) $s .= ' for="'.$attrs['id'].'"';
|
||||
$s .= '><input type="radio" '.buildAttributes($attrs,true).'/>';
|
||||
$s .= '><input type="radio" '.buildAttributes($attrs,true).' />';
|
||||
$s .= ' <span>'.$attrs['_text'].'</span></label>';
|
||||
if (preg_match('/(^| )block($| )/', $attrs['_class']))
|
||||
$s .= '<br />';
|
||||
|
|
|
@ -376,6 +376,11 @@ function ft_snippet($id,$highlight){
|
|||
* Wraps a search term in regex boundary checks.
|
||||
*/
|
||||
function ft_snippet_re_preprocess($term) {
|
||||
// do not process asian terms where word boundaries are not explicit
|
||||
if(preg_match('/'.IDX_ASIAN.'/u',$term)){
|
||||
return $term;
|
||||
}
|
||||
|
||||
if(substr($term,0,2) == '\\*'){
|
||||
$term = substr($term,2);
|
||||
}else{
|
||||
|
@ -710,7 +715,7 @@ function ft_termParser($Indexer, $term, $consider_asian = true, $phrase_mode = f
|
|||
// successive asian characters need to be searched as a phrase
|
||||
$words = preg_split('/('.IDX_ASIAN.'+)/u', $term, -1, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY);
|
||||
foreach ($words as $word) {
|
||||
if (preg_match('/'.IDX_ASIAN.'/u', $word)) $phrase_mode = true;
|
||||
$phrase_mode = $phrase_mode ? true : preg_match('/'.IDX_ASIAN.'/u', $word);
|
||||
$parsed .= ft_termParser($Indexer, $word, false, $phrase_mode);
|
||||
}
|
||||
} else {
|
||||
|
@ -732,4 +737,4 @@ function ft_termParser($Indexer, $term, $consider_asian = true, $phrase_mode = f
|
|||
return $parsed;
|
||||
}
|
||||
|
||||
//Setup VIM: ex: et ts=4 enc=utf-8 :
|
||||
//Setup VIM: ex: et ts=4 :
|
||||
|
|
15
inc/html.php
15
inc/html.php
|
@ -26,6 +26,7 @@ function html_wikilink($id,$name=null,$search=''){
|
|||
/**
|
||||
* Helps building long attribute lists
|
||||
*
|
||||
* @deprecated Use buildAttributes instead
|
||||
* @author Andreas Gohr <andi@splitbrain.org>
|
||||
*/
|
||||
function html_attbuild($attributes){
|
||||
|
@ -887,6 +888,9 @@ function html_diff($text='',$intro=true){
|
|||
$rev2 = (int) $_REQUEST['rev2'];
|
||||
}
|
||||
|
||||
$r_minor = '';
|
||||
$l_minor = '';
|
||||
|
||||
if($text){ // compare text to the most current revision
|
||||
$l_rev = '';
|
||||
$l_text = rawWiki($ID,'');
|
||||
|
@ -1033,7 +1037,10 @@ function html_conflict($text,$summary){
|
|||
* @author Andreas Gohr <andi@splitbrain.org>
|
||||
*/
|
||||
function html_msgarea(){
|
||||
global $MSG;
|
||||
global $MSG, $MSG_shown;
|
||||
// store if the global $MSG has already been shown and thus HTML output has been started
|
||||
$MSG_shown = true;
|
||||
|
||||
if(!isset($MSG)) return;
|
||||
|
||||
$shown = array();
|
||||
|
@ -1045,6 +1052,8 @@ function html_msgarea(){
|
|||
print '</div>';
|
||||
$shown[$hash] = 1;
|
||||
}
|
||||
|
||||
unset($GLOBALS['MSG']);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -1213,9 +1222,9 @@ function html_edit(){
|
|||
if($wr && $conf['license']){
|
||||
$form->addElement(form_makeOpenTag('div', array('class'=>'license')));
|
||||
$out = $lang['licenseok'];
|
||||
$out .= '<a href="'.$license[$conf['license']]['url'].'" rel="license" class="urlextern"';
|
||||
$out .= ' <a href="'.$license[$conf['license']]['url'].'" rel="license" class="urlextern"';
|
||||
if(isset($conf['target']['extern'])) $out .= ' target="'.$conf['target']['extern'].'"';
|
||||
$out .= '> '.$license[$conf['license']]['name'].'</a>';
|
||||
$out .= '>'.$license[$conf['license']]['name'].'</a>';
|
||||
$form->addElement($out);
|
||||
$form->addElement(form_makeCloseTag('div'));
|
||||
}
|
||||
|
|
|
@ -258,7 +258,7 @@ function check(){
|
|||
* @see html_msgarea
|
||||
*/
|
||||
function msg($message,$lvl=0,$line='',$file=''){
|
||||
global $MSG;
|
||||
global $MSG, $MSG_shown;
|
||||
$errors[-1] = 'error';
|
||||
$errors[0] = 'info';
|
||||
$errors[1] = 'success';
|
||||
|
@ -268,7 +268,7 @@ function msg($message,$lvl=0,$line='',$file=''){
|
|||
|
||||
if(!isset($MSG)) $MSG = array();
|
||||
$MSG[]=array('lvl' => $errors[$lvl], 'msg' => $message);
|
||||
if(headers_sent()){
|
||||
if(isset($MSG_shown) || headers_sent()){
|
||||
if(function_exists('html_msgarea')){
|
||||
html_msgarea();
|
||||
}else{
|
||||
|
|
25
inc/init.php
25
inc/init.php
|
@ -421,14 +421,27 @@ function getBaseURL($abs=null){
|
|||
if($conf['baseurl']) return rtrim($conf['baseurl'],'/').$dir;
|
||||
|
||||
//split hostheader into host and port
|
||||
$addr = explode(':',$_SERVER['HTTP_HOST']);
|
||||
$host = $addr[0];
|
||||
$port = '';
|
||||
if (isset($addr[1])) {
|
||||
$port = $addr[1];
|
||||
} elseif (isset($_SERVER['SERVER_PORT'])) {
|
||||
if(isset($_SERVER['HTTP_HOST'])){
|
||||
$parsed_host = parse_url('http://'.$_SERVER['HTTP_HOST']);
|
||||
$host = $parsed_host['host'];
|
||||
$port = $parsed_host['port'];
|
||||
}elseif(isset($_SERVER['SERVER_NAME'])){
|
||||
$parsed_host = parse_url('http://'.$_SERVER['SERVER_NAME']);
|
||||
$host = $parsed_host['host'];
|
||||
$port = $parsed_host['port'];
|
||||
}else{
|
||||
$host = php_uname('n');
|
||||
$port = '';
|
||||
}
|
||||
|
||||
if(!$port && isset($_SERVER['SERVER_PORT'])) {
|
||||
$port = $_SERVER['SERVER_PORT'];
|
||||
}
|
||||
|
||||
if(is_null($port)){
|
||||
$port = '';
|
||||
}
|
||||
|
||||
if(!is_ssl()){
|
||||
$proto = 'http://';
|
||||
if ($port == '80') {
|
||||
|
|
|
@ -486,7 +486,7 @@ function io_download($url,$file,$useAttachment=false,$defaultName='',$maxSize=20
|
|||
preg_match('/attachment;\s*filename\s*=\s*"([^"]*)"/i', $content_disposition, $match)) {
|
||||
|
||||
$name = basename($match[1]);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -28,7 +28,7 @@ $lang['btn_revs'] = 'نسخ قديمة';
|
|||
$lang['btn_recent'] = 'أحدث التغييرات';
|
||||
$lang['btn_upload'] = 'ارفع';
|
||||
$lang['btn_cancel'] = 'ألغ';
|
||||
$lang['btn_index'] = 'فهرس';
|
||||
$lang['btn_index'] = 'خريطة موقع';
|
||||
$lang['btn_secedit'] = 'حرر';
|
||||
$lang['btn_login'] = 'لج';
|
||||
$lang['btn_logout'] = 'اخرج';
|
||||
|
@ -54,21 +54,21 @@ $lang['newpass'] = 'كلمة سر جديدة';
|
|||
$lang['oldpass'] = 'أكد كلمة السر الحالية';
|
||||
$lang['passchk'] = 'مرة أخرى';
|
||||
$lang['remember'] = 'تذكرني';
|
||||
$lang['fullname'] = 'الاسم الكامل';
|
||||
$lang['fullname'] = 'الاسم الحقيقي';
|
||||
$lang['email'] = 'البريد الإلكتروني';
|
||||
$lang['register'] = 'سجّل';
|
||||
$lang['profile'] = 'الملف الشخصي';
|
||||
$lang['badlogin'] = 'عذرا، اسم المشترك أو كلمة السر غير صحيحة';
|
||||
$lang['minoredit'] = 'تعديلات طفيفة';
|
||||
$lang['draftdate'] = 'حفظ المسودات تلقائيا مشغل';
|
||||
$lang['nosecedit'] = 'غُيرت الصفحة في هذه الأثناء، معلومات الفقرة اصبحت قديمة. حُمُلت كل الصفحة بدلا.';
|
||||
$lang['regmissing'] = 'عذرا، يجب ملء جميع الحقول';
|
||||
$lang['draftdate'] = 'حفظ المسودات آليا مفعّل';
|
||||
$lang['nosecedit'] = 'غُيرت الصفحة في هذه الأثناء، معلومات الجزء اصبحت قديمة. حُمُلت كل الصفحة بدلا.';
|
||||
$lang['regmissing'] = 'عذرا، عليك ملء جميع الحقول.';
|
||||
$lang['reguexists'] = 'عذرا، يوجد مشترك بنفس الاسم.';
|
||||
$lang['regsuccess'] = 'أنشئ المستخدم و ارسلت كلمة السر بالبريد.';
|
||||
$lang['regsuccess2'] = 'أنشئ المستخدم.';
|
||||
$lang['regmailfail'] = 'حدث خطأ فى إرسال رسالة كلمة اسرر. يرجى مراسلة المدير';
|
||||
$lang['regbadmail'] = 'يبدو البريد الإلكتروني المعطى غير صحيح، إن كنت تظن أن هذا خطأ، راسل المدير';
|
||||
$lang['regbadpass'] = 'كلمتى المرور غير متطابقتين، حاول مرة أخرى.';
|
||||
$lang['regmailfail'] = 'حدث خطأ فى إرسال رسالة كلمة السر. يرجى مراسلة المدير!';
|
||||
$lang['regbadmail'] = 'يبدو البريد الإلكتروني المعطى غيرَ صحيح، إن كنت تظن أن هذا خطأ، راسل المدير';
|
||||
$lang['regbadpass'] = 'كلمتا المرور غير متطابقتين، حاول مرة أخرى.';
|
||||
$lang['regpwmail'] = 'كلمة مرورك إلى دوكو ويكي';
|
||||
$lang['reghere'] = 'ليس لديك حساب بعد؟ احصل على واحد';
|
||||
$lang['profna'] = 'هذه الويكي لا تدعم تعديل الملف الشخصي';
|
||||
|
@ -81,35 +81,35 @@ $lang['resendpwd'] = 'إرسال كلمة مرور';
|
|||
$lang['resendpwdmissing'] = 'عذراّ، يجب أن تملأ كل الحقول.';
|
||||
$lang['resendpwdnouser'] = 'عذراً، لم نجد المستخدم هذا في قاعدة بياناتنا.';
|
||||
$lang['resendpwdbadauth'] = 'عذراً، رمز التفعيل هذا غير صحيح. نأكد من استخدامك كامل وصلة التأكيد.';
|
||||
$lang['resendpwdconfirm'] = 'أرسل رابط التأكيد بواسطة البريد.';
|
||||
$lang['resendpwdsuccess'] = 'كلمة السرالجديدة إرسلت عبر البريد.';
|
||||
$lang['license'] = 'مالم يشر لخلاف ذلك، فإن المحتوى على هذه الويكي مرخص وفق الرخصة التالية:';
|
||||
$lang['resendpwdconfirm'] = 'اُرسل رابط التأكيد بواسطة البريد.';
|
||||
$lang['resendpwdsuccess'] = 'كلمة السرالجديدة اُرسلت عبر البريد.';
|
||||
$lang['license'] = 'مالم يشر لخلاف ذلك، فإن المحتوى في هذه الويكي مرخص وفق الرخصة التالية:';
|
||||
$lang['licenseok'] = 'لاحظ: بتحرير هذه الصفحة أنت توافق على ترخيص محتواها تحت الرخصة التالية:';
|
||||
$lang['searchmedia'] = 'ابحث في اسماء الملفات:';
|
||||
$lang['searchmedia'] = 'ابحث في أسماء الملفات:';
|
||||
$lang['searchmedia_in'] = 'ابحث في %s';
|
||||
$lang['txt_upload'] = 'اختر ملفاً للرفع';
|
||||
$lang['txt_filename'] = 'رفع كـ (اختياري)';
|
||||
$lang['txt_overwrt'] = 'اكتب على ملف موجود';
|
||||
$lang['lockedby'] = 'حالياً مقفل بواسطة';
|
||||
$lang['lockedby'] = 'مقفلة حاليا لـ';
|
||||
$lang['lockexpire'] = 'ينتهي القفل في';
|
||||
$lang['willexpire'] = 'سينتهي قفل تحرير هذه الصفحه خلال دقيقة.\nلتجنب التعارض استخدم زر المعاينة لتصفير مؤقت القفل.';
|
||||
$lang['js']['notsavedyet'] = 'التعديلات غير المحفوظة ستفقد. اكمل فعلا؟';
|
||||
$lang['js']['notsavedyet'] = 'التعديلات غير المحفوظة ستفقد.';
|
||||
$lang['js']['searchmedia'] = 'ابحث عن ملفات';
|
||||
$lang['js']['keepopen'] = 'أبقي النافذة مفتوحة أثناء الاختيار';
|
||||
$lang['js']['hidedetails'] = 'أخف التفاصيل';
|
||||
$lang['js']['mediatitle'] = 'اعدادات الرابط';
|
||||
$lang['js']['mediatitle'] = 'إعدادات الرابط';
|
||||
$lang['js']['mediadisplay'] = 'نوع الرابط';
|
||||
$lang['js']['mediaalign'] = 'المحاذاة';
|
||||
$lang['js']['mediasize'] = 'حجم الصورة';
|
||||
$lang['js']['mediatarget'] = 'هدف الرابط';
|
||||
$lang['js']['mediaclose'] = 'اغلق';
|
||||
$lang['js']['mediaclose'] = 'أغلق';
|
||||
$lang['js']['mediainsert'] = 'أدرج';
|
||||
$lang['js']['mediadisplayimg'] = 'اظهر الصورة.';
|
||||
$lang['js']['mediadisplayimg'] = 'أظهر الصورة.';
|
||||
$lang['js']['mediadisplaylnk'] = 'اظهر الرابط فقط.';
|
||||
$lang['js']['mediasmall'] = 'نسخة مصغرة';
|
||||
$lang['js']['mediamedium'] = 'نسخة متوسطة';
|
||||
$lang['js']['medialarge'] = 'نسخة كبيرة';
|
||||
$lang['js']['mediaoriginal'] = 'نسخة أصلية';
|
||||
$lang['js']['mediaoriginal'] = 'النسخة الأصلية';
|
||||
$lang['js']['medialnk'] = 'الرابط لصفحة التفاصيل';
|
||||
$lang['js']['mediadirect'] = 'رابط مباشر للأصل';
|
||||
$lang['js']['medianolnk'] = 'لا رابط';
|
||||
|
@ -118,70 +118,73 @@ $lang['js']['medialeft'] = 'حاذي الصورة إلى اليسار.';
|
|||
$lang['js']['mediaright'] = 'حاذي الصورة إلى اليمين.';
|
||||
$lang['js']['mediacenter'] = 'حاذي الصورة إلى الوسط.';
|
||||
$lang['js']['medianoalign'] = 'لا تستعمل المحاذاة.';
|
||||
$lang['js']['nosmblinks'] = 'الروابط لمجلدات ويندوز المشاركة تعمل فقط مع متصفح مايكروسفت Internet Explorer. ما زال بإمكانك قص و لصق الرابط.';
|
||||
$lang['js']['nosmblinks'] = 'الروابط لمجلدات مشاركة وندز تعمل فقط مع متصفح مايكروسفت Internet Explorer.
|
||||
ما زال بإمكانك قص و لصق الرابط.';
|
||||
$lang['js']['linkwiz'] = 'مرشد الروابط';
|
||||
$lang['js']['linkto'] = 'الرابط إلى :';
|
||||
$lang['js']['del_confirm'] = 'هل حقاً تريد حذف البنود المختارة؟';
|
||||
$lang['js']['mu_btn'] = 'رفع عدة ملفات في وقت واحد';
|
||||
$lang['rssfailed'] = 'خطأ ما حدث أثناء جلب ملف التغذية:';
|
||||
$lang['nothingfound'] = 'لا يوجد شيء';
|
||||
$lang['mediaselect'] = 'ملفات الوسائط المتعددة';
|
||||
$lang['fileupload'] = 'تحميل ملف وسائط متعددة';
|
||||
$lang['uploadsucc'] = 'تم التحميل بنجاح';
|
||||
$lang['uploadfail'] = 'فشل التحميل، قد يكون الخطأ فى التراخيص؟';
|
||||
$lang['uploadwrong'] = 'التحميل ممنوع، نوع الملف مرفوض!';
|
||||
$lang['uploadexist'] = 'الملف موجود أصلاً. لم يحدث شيء';
|
||||
$lang['uploadbadcontent'] = 'المحتوى المحمّل لم يتطابق مع نوع الملف %s';
|
||||
$lang['uploadspam'] = 'التحميل محجوب بواسطة القائمة السوداء لبرنامج تقفي التطفل';
|
||||
$lang['uploadxss'] = 'التحميل محجوب لمنع المحتويات الخبيثة';
|
||||
$lang['uploadsize'] = 'الملف الذي تم رفعه كبير جدا . ( الحد الأقصى %s )';
|
||||
$lang['deletesucc'] = 'تم حذف الملف "%s"';
|
||||
$lang['deletefail'] = 'لا يمكن حذف "%s"، تأكد من تراخيصك';
|
||||
$lang['mediainuse'] = 'لم يحذف الملف "%s"، مازال موجوداً';
|
||||
$lang['mediaselect'] = 'ملفات الوسائط';
|
||||
$lang['fileupload'] = 'تحميل ملف وسائط';
|
||||
$lang['uploadsucc'] = 'تم الرفع بنجاح';
|
||||
$lang['uploadfail'] = 'فشل الرفع، ربما خطأ تراخيص؟';
|
||||
$lang['uploadwrong'] = 'الرفع ممنوع، نوع الملف مرفوض!';
|
||||
$lang['uploadexist'] = 'الملف موجود أصلاً. لم يُعمل شيئ.';
|
||||
$lang['uploadbadcontent'] = 'المحتوى المرفوع لم يطابق لاحقة ملفات %s.';
|
||||
$lang['uploadspam'] = 'الرفع محجوب بواسطة القائمة السوداء لبرنامج تقفي التطفل.';
|
||||
$lang['uploadxss'] = 'رُفض الرفع للإشتباه بمحتوى ضار.';
|
||||
$lang['uploadsize'] = 'الملف المرفوع كان كبيرا جدا . ( الحد %s )';
|
||||
$lang['deletesucc'] = 'حُذف الملف "%s".';
|
||||
$lang['deletefail'] = 'تعذر حذف "%s" - تأكد من الصلاحيات.';
|
||||
$lang['mediainuse'] = 'لم يحذف الملف "%s" - مازال مستخدما.';
|
||||
$lang['namespaces'] = 'فضاء التسمية';
|
||||
$lang['mediafiles'] = 'ملفات موجودة في';
|
||||
$lang['accessdenied'] = 'لا يسمح لك برؤية هذه الصفحة.';
|
||||
$lang['mediausage'] = 'استخدم هذه الصياغة للدلالة على هذا الملف:';
|
||||
$lang['mediaview'] = 'عرض الملف الأصلي';
|
||||
$lang['mediaview'] = 'اعرض الملف الأصلي';
|
||||
$lang['mediaroot'] = 'الجذر';
|
||||
$lang['mediaupload'] = 'تحميل ملف إلى فضاء التسمية هنا. لإنشاء فضاءات تسمية فرعية، أضفها إلى بداية خانة تحميل باسم وافصل بينها باستخدام الفواصل';
|
||||
$lang['mediaextchange'] = 'تم تغيير نوع الملف من .%s إلى .%s!';
|
||||
$lang['mediaupload'] = 'تحميل ملف إلى فضاء التسمية هنا. لإنشاء فضاءات تسمية فرعية، أضفها إلى بداية خانة تحميل باسم وافصل بينها باستخدام الفاصلتان الرأسيتان.';
|
||||
$lang['mediaextchange'] = 'غُيرت لاحقة الملف من .%s إلى .%s!';
|
||||
$lang['reference'] = 'مراجع لـ';
|
||||
$lang['ref_inuse'] = 'لا يمكن حذف الملف، لأنه مستخدم من قبل الصفحات التالية:';
|
||||
$lang['ref_hidden'] = 'بعض المراجع لصفاحات لا تملك ترخيص برؤيتها';
|
||||
$lang['hits'] = 'زوار';
|
||||
$lang['quickhits'] = 'صفحات بهذا الاسم';
|
||||
$lang['ref_hidden'] = 'بعض المراجع على صفحات لا تملك صلاحيات قراءتها';
|
||||
$lang['hits'] = 'مرة';
|
||||
$lang['quickhits'] = 'صفحات مطابقة';
|
||||
$lang['toc'] = 'جدول المحتويات';
|
||||
$lang['current'] = 'حالي';
|
||||
$lang['yours'] = 'نسختك';
|
||||
$lang['diff'] = 'مقارنة بالنسخة الحالية';
|
||||
$lang['diff2'] = 'مقارنة بين النسخ المختارة';
|
||||
$lang['diff'] = 'أظهر الاختلافات مع النسخة الحالية';
|
||||
$lang['diff2'] = 'أظهر الاختلافات بين النسخ المحددة';
|
||||
$lang['difflink'] = 'رابط إلى هذه المقارنة';
|
||||
$lang['line'] = 'سطر';
|
||||
$lang['breadcrumb'] = 'أثر';
|
||||
$lang['youarehere'] = 'أنت هنا';
|
||||
$lang['lastmod'] = 'آخر تعديل';
|
||||
$lang['by'] = 'بواسطة';
|
||||
$lang['deleted'] = 'تم حذف';
|
||||
$lang['created'] = 'تم إنشاء';
|
||||
$lang['restored'] = 'عودة لنسخة قديمة';
|
||||
$lang['deleted'] = 'حذفت';
|
||||
$lang['created'] = 'اُنشئت';
|
||||
$lang['restored'] = 'استعيدت نسخة قديمة';
|
||||
$lang['external_edit'] = 'تحرير خارجي';
|
||||
$lang['summary'] = 'ملخص التحرير';
|
||||
$lang['noflash'] = 'تحتاج إلى<a href="http://www.adobe.com/products/flashplayer/">ملحق فلاش أدوبي</a> لعرض هذا المحتوى.';
|
||||
$lang['download'] = 'نزل Snippet';
|
||||
$lang['mail_newpage'] = 'إضافة صفحة:';
|
||||
$lang['mail_changed'] = 'تعديل صفحة:';
|
||||
$lang['mail_subscribe_list'] = 'صفحات غيرت في النظاق:';
|
||||
$lang['mail_new_user'] = 'مشترك جديد';
|
||||
$lang['mail_upload'] = 'تحميل ملف:';
|
||||
$lang['mail_subscribe_list'] = 'صفحات غيرت في النطاق:';
|
||||
$lang['mail_new_user'] = 'مشترك جديد:';
|
||||
$lang['mail_upload'] = 'رفع ملف:';
|
||||
$lang['qb_bold'] = 'نص عريض';
|
||||
$lang['qb_italic'] = 'نص مائل';
|
||||
$lang['qb_underl'] = 'نص مسطر';
|
||||
$lang['qb_code'] = 'نص برمجي';
|
||||
$lang['qb_strike'] = 'نص مشطوب';
|
||||
$lang['qb_h1'] = 'عنوان مستوى أول';
|
||||
$lang['qb_h2'] = 'عنوان مستوى ثاني';
|
||||
$lang['qb_h3'] = 'عنوان مستوى ثالث';
|
||||
$lang['qb_h4'] = 'عنوان مستوى رابع';
|
||||
$lang['qb_h5'] = 'عنوان مستوى خامس';
|
||||
$lang['qb_h1'] = 'عنوان مستوى ١';
|
||||
$lang['qb_h2'] = 'عنوان مستوى ٢';
|
||||
$lang['qb_h3'] = 'عنوان مستوى ٣';
|
||||
$lang['qb_h4'] = 'عنوان مستوى ٤';
|
||||
$lang['qb_h5'] = 'عنوان مستوى ٥';
|
||||
$lang['qb_h'] = 'الترويسة';
|
||||
$lang['qb_hs'] = 'حدد الترويسة';
|
||||
$lang['qb_hplus'] = 'ترويسة أعلى';
|
||||
|
@ -192,29 +195,29 @@ $lang['qb_extlink'] = 'رابط خارجي';
|
|||
$lang['qb_hr'] = 'سطر أفقي';
|
||||
$lang['qb_ol'] = 'بند فى قائمة مرتبة';
|
||||
$lang['qb_ul'] = 'بند فى قائمة غير مرتبة';
|
||||
$lang['qb_media'] = 'إضافة صور و ملفات أخرى';
|
||||
$lang['qb_sig'] = 'أضف توقيعك';
|
||||
$lang['qb_smileys'] = 'الابتسامات';
|
||||
$lang['qb_media'] = 'أضف صورا و ملفات أخرى';
|
||||
$lang['qb_sig'] = 'أدرج التوقيع';
|
||||
$lang['qb_smileys'] = 'الإبتسامات';
|
||||
$lang['qb_chars'] = 'محارف خاصة';
|
||||
$lang['upperns'] = 'انتقل للنطاق الأب';
|
||||
$lang['admin_register'] = 'إضافة مشترك جديد';
|
||||
$lang['admin_register'] = 'أضف مستخدما جديدا';
|
||||
$lang['metaedit'] = 'تحرير البيانات الشمولية ';
|
||||
$lang['metasaveerr'] = 'فشلت عملية كتابة البيانات الشمولية';
|
||||
$lang['metasaveok'] = 'تم حفظ البيانت الشمولية';
|
||||
$lang['img_backto'] = 'العودة إلى';
|
||||
$lang['metasaveerr'] = 'فشلت كتابة البيانات الشمولية';
|
||||
$lang['metasaveok'] = 'حُفظت البيانات الشمولية';
|
||||
$lang['img_backto'] = 'عودة إلى';
|
||||
$lang['img_title'] = 'العنوان';
|
||||
$lang['img_caption'] = 'تنويه الصورة';
|
||||
$lang['img_caption'] = 'وصف';
|
||||
$lang['img_date'] = 'التاريخ';
|
||||
$lang['img_fname'] = 'اسم الملف';
|
||||
$lang['img_fsize'] = 'الحجم';
|
||||
$lang['img_artist'] = 'المصور';
|
||||
$lang['img_copyr'] = 'حقوق النسخ';
|
||||
$lang['img_format'] = 'صيغ رسومية';
|
||||
$lang['img_camera'] = 'آلة التصوير';
|
||||
$lang['img_format'] = 'الهيئة';
|
||||
$lang['img_camera'] = 'الكمرا';
|
||||
$lang['img_keywords'] = 'كلمات مفتاحية';
|
||||
$lang['subscr_subscribe_success'] = 'اضيف %s لقائمة اشتراك %s';
|
||||
$lang['subscr_subscribe_error'] = 'خطأ في إضافة %s لقائمة اشتراك %s';
|
||||
$lang['subscr_subscribe_noaddress'] = 'ليس هناك عنوان مرتبط بدخولك، لا يمكن اضافتك لقائمة الاشتراك';
|
||||
$lang['subscr_subscribe_noaddress'] = 'ليس هناك عنوان مرتبط بولوجك، لا يمكن اضافتك لقائمة الاشتراك';
|
||||
$lang['subscr_unsubscribe_success'] = 'أزيل %s من قائمة اشتراك %s';
|
||||
$lang['subscr_unsubscribe_error'] = 'خطأ في إزالة %s من قائمة اشتراك %s';
|
||||
$lang['subscr_already_subscribed'] = '%s مشترك مسبقا في %s';
|
||||
|
@ -224,7 +227,7 @@ $lang['subscr_m_new_header'] = 'أضف اشتراكا';
|
|||
$lang['subscr_m_current_header'] = 'الاشتراكات الحالية';
|
||||
$lang['subscr_m_unsubscribe'] = 'ألغ الاشتراك';
|
||||
$lang['subscr_m_subscribe'] = 'اشترك';
|
||||
$lang['subscr_m_receive'] = 'استقبل';
|
||||
$lang['subscr_m_receive'] = 'استقبال';
|
||||
$lang['subscr_style_every'] = 'بريدا على كل تغيير';
|
||||
$lang['subscr_style_digest'] = 'بريد ملخص عن تغييرات كل صفحة';
|
||||
$lang['subscr_style_list'] = 'قائمة بالصفحات المتغيرة منذ آخر بريد';
|
||||
|
|
|
@ -242,7 +242,7 @@ $lang['i_wikiname'] = 'Název wiki';
|
|||
$lang['i_enableacl'] = 'Zapnout ACL (doporučeno)';
|
||||
$lang['i_superuser'] = 'Správce';
|
||||
$lang['i_problems'] = 'Instalátor narazil na níže popsané problémy. Nelze pokračovat v instalaci, dokud je neopravíte.';
|
||||
$lang['i_modified'] = 'Instalátor bude z bezpečnostních důvodů pracovat pouze s čistou a ještě neupravenou instalací DokuWiki. Buď znovu rozbalte souboru z instalačního balíčku nebo se zkuste poradit s <a href="http://dokuwiki.org/install">instrukcemi pro instalci DokuWiki</a>.';
|
||||
$lang['i_modified'] = 'Instalátor bude z bezpečnostních důvodů pracovat pouze s čistou a ještě neupravenou instalací DokuWiki. Buď znovu rozbalte souboru z instalačního balíčku nebo se zkuste poradit s <a href="http://dokuwiki.org/install">instrukcemi pro instalaci DokuWiki</a>.';
|
||||
$lang['i_funcna'] = 'PHP funkce <code>%s</code> není dostupná. Váš webhosting ji možná z nějakého důvodu vypnul.';
|
||||
$lang['i_phpver'] = 'Verze vaší instalace PHP <code>%s</code> je nižší než požadovaná <code>%s</code>. Budete muset aktualizovat svou instalaci PHP.';
|
||||
$lang['i_permfail'] = 'DokuWiki nemůže zapisovat do <code>%s</code>. Budete muset opravit práva k tomuto adresáři.';
|
||||
|
@ -268,7 +268,7 @@ $lang['mu_toobig'] = 'příliš velké';
|
|||
$lang['mu_ready'] = 'připraveno k načtení';
|
||||
$lang['mu_done'] = 'hotovo';
|
||||
$lang['mu_fail'] = 'selhalo';
|
||||
$lang['mu_authfail'] = 'vypršla session';
|
||||
$lang['mu_authfail'] = 'vypršela session';
|
||||
$lang['mu_progress'] = '@PCT@% načten';
|
||||
$lang['mu_filetypes'] = 'Povolené typy souborů';
|
||||
$lang['mu_info'] = 'soubory načteny.';
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
====== Správa odběratelů změn ======
|
||||
|
||||
Tato stránka Vám umožnuje spravovat uživatele přihlášené k odběru změn aktuální stránky nebo jmenného prostoru.
|
||||
Tato stránka Vám umožňuje spravovat uživatele přihlášené k odběru změn aktuální stránky nebo jmenného prostoru.
|
|
@ -17,6 +17,7 @@
|
|||
* @author Juergen Schwarzer <jschwarzer@freenet.de>
|
||||
* @author Marcel Metz <marcel_metz@gmx.de>
|
||||
* @author Matthias Schulte <post@lupo49.de>
|
||||
* @author Christian Wichmann <nospam@zone0.de>
|
||||
*/
|
||||
$lang['encoding'] = 'utf-8';
|
||||
$lang['direction'] = 'ltr';
|
||||
|
@ -49,7 +50,7 @@ $lang['btn_delete'] = 'Löschen';
|
|||
$lang['btn_back'] = 'Zurück';
|
||||
$lang['btn_backlink'] = 'Links hierher';
|
||||
$lang['btn_backtomedia'] = 'Zurück zur Dateiauswahl';
|
||||
$lang['btn_subscribe'] = 'Änderungen abonnieren';
|
||||
$lang['btn_subscribe'] = 'Aboverwaltung';
|
||||
$lang['btn_profile'] = 'Benutzerprofil';
|
||||
$lang['btn_reset'] = 'Zurücksetzen';
|
||||
$lang['btn_resendpwd'] = 'Sende neues Passwort';
|
||||
|
@ -107,27 +108,27 @@ $lang['js']['notsavedyet'] = 'Nicht gespeicherte Änderungen gehen verloren!
|
|||
$lang['js']['searchmedia'] = 'Suche nach Dateien';
|
||||
$lang['js']['keepopen'] = 'Fenster nach Auswahl nicht schließen';
|
||||
$lang['js']['hidedetails'] = 'Details ausblenden';
|
||||
$lang['js']['mediatitle'] = 'Link-Eigenschaften';
|
||||
$lang['js']['mediadisplay'] = 'Linktyp';
|
||||
$lang['js']['mediaalign'] = 'Ausrichtung';
|
||||
$lang['js']['mediasize'] = 'Bildgröße';
|
||||
$lang['js']['mediatarget'] = 'Linkziel';
|
||||
$lang['js']['mediaclose'] = 'Schließen';
|
||||
$lang['js']['mediainsert'] = 'Einfügen';
|
||||
$lang['js']['mediadisplayimg'] = 'Bild anzeigen.';
|
||||
$lang['js']['mediadisplaylnk'] = 'Nur den Link anzeigen.';
|
||||
$lang['js']['mediasmall'] = 'Kleine Version';
|
||||
$lang['js']['mediamedium'] = 'Mittelgroße Version';
|
||||
$lang['js']['medialarge'] = 'Große Version';
|
||||
$lang['js']['mediaoriginal'] = 'Original Version';
|
||||
$lang['js']['medialnk'] = 'Link zu der Detailseite';
|
||||
$lang['js']['mediadirect'] = 'Direkter Link zum Original';
|
||||
$lang['js']['medianolnk'] = 'Kein link';
|
||||
$lang['js']['medianolink'] = 'Keine Verlinkung des Bildes';
|
||||
$lang['js']['medialeft'] = 'Bild nach links ausrichten.';
|
||||
$lang['js']['mediaright'] = 'Bild nach rechts ausrichten.';
|
||||
$lang['js']['mediacenter'] = 'Bild in der Mitte ausrichten';
|
||||
$lang['js']['medianoalign'] = 'Keine Ausrichtung des Bildes.';
|
||||
$lang['js']['mediatitle'] = 'Link-Eigenschaften';
|
||||
$lang['js']['mediadisplay'] = 'Linktyp';
|
||||
$lang['js']['mediaalign'] = 'Ausrichtung';
|
||||
$lang['js']['mediasize'] = 'Bildgröße';
|
||||
$lang['js']['mediatarget'] = 'Linkziel';
|
||||
$lang['js']['mediaclose'] = 'Schließen';
|
||||
$lang['js']['mediainsert'] = 'Einfügen';
|
||||
$lang['js']['mediadisplayimg'] = 'Bild anzeigen.';
|
||||
$lang['js']['mediadisplaylnk'] = 'Nur den Link anzeigen.';
|
||||
$lang['js']['mediasmall'] = 'Kleine Version';
|
||||
$lang['js']['mediamedium'] = 'Mittelgroße Version';
|
||||
$lang['js']['medialarge'] = 'Große Version';
|
||||
$lang['js']['mediaoriginal'] = 'Original Version';
|
||||
$lang['js']['medialnk'] = 'Link zu der Detailseite';
|
||||
$lang['js']['mediadirect'] = 'Direkter Link zum Original';
|
||||
$lang['js']['medianolnk'] = 'Kein link';
|
||||
$lang['js']['medianolink'] = 'Keine Verlinkung des Bildes';
|
||||
$lang['js']['medialeft'] = 'Bild nach links ausrichten.';
|
||||
$lang['js']['mediaright'] = 'Bild nach rechts ausrichten.';
|
||||
$lang['js']['mediacenter'] = 'Bild in der Mitte ausrichten';
|
||||
$lang['js']['medianoalign'] = 'Keine Ausrichtung des Bildes.';
|
||||
$lang['js']['nosmblinks'] = 'Das Verlinken von Windows-Freigaben funktioniert nur im Microsoft Internet-Explorer.\nDer Link kann jedoch durch Kopieren und Einfügen verwendet werden.';
|
||||
$lang['js']['linkwiz'] = 'Link-Assistent';
|
||||
$lang['js']['linkto'] = 'Link zu:';
|
||||
|
@ -148,7 +149,6 @@ $lang['uploadsize'] = 'Die hochgeladene Datei war zu groß. (max. %s)
|
|||
$lang['deletesucc'] = 'Die Datei "%s" wurde gelöscht.';
|
||||
$lang['deletefail'] = '"%s" konnte nicht gelöscht werden. Keine Berechtigung?.';
|
||||
$lang['mediainuse'] = 'Die Datei "%s" wurde nicht gelöscht. Sie wird noch verwendet.';
|
||||
$lang['mediainuse'] = 'Die Datei "%s" wurde nicht gelöscht. Sie wird noch verwendet.';
|
||||
$lang['namespaces'] = 'Namensräume';
|
||||
$lang['mediafiles'] = 'Vorhandene Dateien in';
|
||||
$lang['accessdenied'] = 'Du hast keinen Zugriff auf diese Seite';
|
||||
|
@ -225,22 +225,22 @@ $lang['img_copyr'] = 'Copyright';
|
|||
$lang['img_format'] = 'Format';
|
||||
$lang['img_camera'] = 'Kamera';
|
||||
$lang['img_keywords'] = 'Schlagwörter';
|
||||
$lang['subscr_subscribe_success'] = 'Die Seite %s wurde zur Abonnementenliste von %s hinzugefügt';
|
||||
$lang['subscr_subscribe_error'] = 'Fehler beim Hinzufügen von %s zur Abonnementenliste von %s';
|
||||
$lang['subscr_subscribe_success'] = 'Die Seite %s wurde zur Abonnementenliste von %s hinzugefügt';
|
||||
$lang['subscr_subscribe_error'] = 'Fehler beim Hinzufügen von %s zur Abonnementenliste von %s';
|
||||
$lang['subscr_subscribe_noaddress'] = 'In deinem Account ist keine E-Mail-Adresse hinterlegt. Dadurch kann die Seite nicht abonniert werden';
|
||||
$lang['subscr_unsubscribe_success'] = 'Die Seite %s wurde von der Abonnementenliste von %s entfernt';
|
||||
$lang['subscr_unsubscribe_error'] = 'Fehler beim Entfernen von %s von der Abonnementenliste von %s';
|
||||
$lang['subscr_already_subscribed'] = '%s ist bereits auf der Abonnementenliste von %s';
|
||||
$lang['subscr_not_subscribed'] = '%s ist nicht auf der Abonnementenliste von %s';
|
||||
$lang['subscr_m_not_subscribed'] = 'Du hast kein Abonnement von dieser Seite oder dem Namensraum.';
|
||||
$lang['subscr_m_new_header'] = 'Abonnementen hinzufügen';
|
||||
$lang['subscr_m_current_header'] = 'Aktive Abonnements';
|
||||
$lang['subscr_m_unsubscribe'] = 'Abbestellen';
|
||||
$lang['subscr_m_subscribe'] = 'Abonnieren';
|
||||
$lang['subscr_m_receive'] = 'Erhalten';
|
||||
$lang['subscr_style_every'] = 'E-Mail bei jeder Änderung';
|
||||
$lang['subscr_style_digest'] = 'E-Mail mit zusammengefasster Übersicht der Seitenänderungen (alle %.2f Tage)';
|
||||
$lang['subscr_style_list'] = 'Auflistung aller geänderten Seiten seit der letzten E-Mail (alle %.2f Tage)';
|
||||
$lang['subscr_unsubscribe_error'] = 'Fehler beim Entfernen von %s von der Abonnementenliste von %s';
|
||||
$lang['subscr_already_subscribed'] = '%s ist bereits auf der Abonnementenliste von %s';
|
||||
$lang['subscr_not_subscribed'] = '%s ist nicht auf der Abonnementenliste von %s';
|
||||
$lang['subscr_m_not_subscribed'] = 'Du hast kein Abonnement von dieser Seite oder dem Namensraum.';
|
||||
$lang['subscr_m_new_header'] = 'Abonnementen hinzufügen';
|
||||
$lang['subscr_m_current_header'] = 'Aktive Abonnements';
|
||||
$lang['subscr_m_unsubscribe'] = 'Abbestellen';
|
||||
$lang['subscr_m_subscribe'] = 'Abonnieren';
|
||||
$lang['subscr_m_receive'] = 'Erhalten';
|
||||
$lang['subscr_style_every'] = 'E-Mail bei jeder Änderung';
|
||||
$lang['subscr_style_digest'] = 'E-Mail mit zusammengefasster Übersicht der Seitenänderungen (alle %.2f Tage)';
|
||||
$lang['subscr_style_list'] = 'Auflistung aller geänderten Seiten seit der letzten E-Mail (alle %.2f Tage)';
|
||||
$lang['authmodfailed'] = 'Benutzerüberprüfung nicht möglich. Bitte wende dich an den Admin.';
|
||||
$lang['authtempfail'] = 'Benutzerüberprüfung momentan nicht möglich. Falls das Problem andauert, wende dich an den Admin.';
|
||||
$lang['i_chooselang'] = 'Wähle deine Sprache';
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
Hallo!
|
||||
|
||||
Die Seite @PAGE@ im @TITLE@ Wiki wurde bearbeitet.
|
||||
Das sind die Änderungen:
|
||||
Üersicht der Änderungen:
|
||||
|
||||
--------------------------------------------------------
|
||||
@DIFF@
|
||||
|
@ -10,10 +10,10 @@ Das sind die
|
|||
Alte Revision: @OLDPAGE@
|
||||
Neue Revision: @NEWPAGE@
|
||||
|
||||
Um das Abonnement für diese Seite aufzulösen, melde dich im Wiki an
|
||||
Um das Abonnement für diese Seite aufzulösen, melde dich im Wiki an
|
||||
@DOKUWIKIURL@, besuchen dann
|
||||
@SUBSCRIBE@
|
||||
und klicke auf den Link 'Änderungen abbestellen'.
|
||||
und klicke auf den Link 'Aboverwaltung'.
|
||||
|
||||
--
|
||||
Diese Mail kommt vom DokuWiki auf
|
||||
|
|
|
@ -1,22 +1,22 @@
|
|||
Hallo!
|
||||
|
||||
Die Seite @PAGE@ im @TITLE@ Wiki wurde bearbeitet.
|
||||
Das sind die Änderungen:
|
||||
Übersicht der Änderungen:
|
||||
|
||||
--------------------------------------------------------
|
||||
@DIFF@
|
||||
--------------------------------------------------------
|
||||
|
||||
Datum : @DATE@
|
||||
Benutzer : @USER@
|
||||
Übersicht: @SUMMARY@
|
||||
Datum: @DATE@
|
||||
Benutzer: @USER@
|
||||
Zusammenfassung: @SUMMARY@
|
||||
Alte Revision: @OLDPAGE@
|
||||
Neue Revision: @NEWPAGE@
|
||||
|
||||
Um das Abonnement für diese Seite aufzulösen, melde dich im Wiki an
|
||||
@DOKUWIKIURL@, besuchen dann
|
||||
@DOKUWIKIURL@, besuche dann
|
||||
@NEWPAGE@
|
||||
und klicke auf den Link 'Änderungen abbestellen'.
|
||||
und klicke auf den Link 'Aboverwaltung'.
|
||||
|
||||
--
|
||||
Diese Mail kommt vom DokuWiki auf
|
||||
|
|
|
@ -17,6 +17,8 @@
|
|||
* @author Blitzi94@gmx.de
|
||||
* @author Robert Bogenschneider <robog@GMX.de>
|
||||
* @author Robert Bogenschneider <robog@gmx.de>
|
||||
* @author Niels Lange <niels@boldencursief.nl>
|
||||
* @author Christian Wichmann <nospam@zone0.de>
|
||||
*/
|
||||
$lang['encoding'] = 'utf-8';
|
||||
$lang['direction'] = 'ltr';
|
||||
|
@ -49,12 +51,12 @@ $lang['btn_delete'] = 'Löschen';
|
|||
$lang['btn_back'] = 'Zurück';
|
||||
$lang['btn_backlink'] = 'Links hierher';
|
||||
$lang['btn_backtomedia'] = 'Zurück zur Dateiauswahl';
|
||||
$lang['btn_subscribe'] = 'Änderungen abonnieren';
|
||||
$lang['btn_subscribe'] = 'Aboverwaltung';
|
||||
$lang['btn_profile'] = 'Benutzerprofil';
|
||||
$lang['btn_reset'] = 'Zurücksetzen';
|
||||
$lang['btn_resendpwd'] = 'Sende neues Passwort';
|
||||
$lang['btn_draft'] = 'Entwurf bearbeiten';
|
||||
$lang['btn_recover'] = 'Entwurf wieder herstellen';
|
||||
$lang['btn_recover'] = 'Entwurf wiederherstellen';
|
||||
$lang['btn_draftdel'] = 'Entwurf löschen';
|
||||
$lang['btn_revert'] = 'Wiederherstellen';
|
||||
$lang['loggedinas'] = 'Angemeldet als';
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
Hallo!
|
||||
|
||||
Die Seite @PAGE@ im @TITLE@ Wiki wurde bearbeitet.
|
||||
Das sind die Änderungen:
|
||||
Übersicht der Änderungen:
|
||||
|
||||
--------------------------------------------------------
|
||||
@DIFF@
|
||||
|
@ -13,7 +13,7 @@ Neue Revision: @NEWPAGE@
|
|||
Um das Abonnement für diese Seite aufzulösen, melden Sie sich im Wiki an
|
||||
@DOKUWIKIURL@, besuchen dann
|
||||
@SUBSCRIBE@
|
||||
und klicken auf den Link 'Änderungen abbestellen'.
|
||||
und klicken auf den Link 'Aboverwaltung'.
|
||||
|
||||
--
|
||||
Diese Mail kommt vom DokuWiki auf
|
||||
|
|
|
@ -1,22 +1,22 @@
|
|||
Hallo!
|
||||
|
||||
Die Seite @PAGE@ im @TITLE@ Wiki wurde bearbeitet.
|
||||
Das sind die Änderungen:
|
||||
Übersicht der Änderungen:
|
||||
|
||||
--------------------------------------------------------
|
||||
@DIFF@
|
||||
--------------------------------------------------------
|
||||
|
||||
Datum : @DATE@
|
||||
Benutzer : @USER@
|
||||
Übersicht: @SUMMARY@
|
||||
Datum: @DATE@
|
||||
Benutzer: @USER@
|
||||
Zusammenfassung: @SUMMARY@
|
||||
Alte Revision: @OLDPAGE@
|
||||
Neue Revision: @NEWPAGE@
|
||||
|
||||
Um das Abonnement für diese Seite aufzulösen, melde Sie sich im Wiki an
|
||||
Um das Abonnement für diese Seite aufzulösen, melden Sie sich im Wiki an
|
||||
@DOKUWIKIURL@, besuchen dann
|
||||
@NEWPAGE@
|
||||
und klicken auf die Taste 'Änderungen abbestellen'.
|
||||
und klicken auf die Taste 'Aboverwaltung'.
|
||||
|
||||
--
|
||||
Diese Mail kommt vom DokuWiki auf
|
||||
|
|
|
@ -316,4 +316,4 @@ $lang['seconds'] = '%d seconds ago';
|
|||
$lang['wordblock'] = 'Your change was not saved because it contains blocked text (spam).';
|
||||
|
||||
|
||||
//Setup VIM: ex: et ts=2 enc=utf-8 :
|
||||
//Setup VIM: ex: et ts=2 :
|
||||
|
|
|
@ -211,4 +211,4 @@ $lang['js']['del_confirm']= 'Kas kustutame selle kirje?';
|
|||
#$lang['unsubscribe_success'] = '';
|
||||
#$lang['unsubscribe_error'] = '';
|
||||
|
||||
//Setup VIM: ex: et ts=2 enc=utf-8 :
|
||||
//Setup VIM: ex: et ts=2 :
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
====== גירסה עדכנית יותר של הקובץ קיימת ======
|
||||
====== קיימת גרסה עדכנית יותר של הקובץ ======
|
||||
|
||||
גירסה עדכנית יותר של המסמך קיימת. דבר זה קורה כאשר משתמש אחר שינה את המסמך בזמן שערכת אותו.
|
||||
ישנה גרסה עדכנית יותר של המסמך. מצב כזה קורה כאשר משתמש אחר שינה את המסמך בזמן שערכת אותו.
|
||||
|
||||
מומלץ לעיין בהבדלים תחת הודעה ולאחר מכן להחליט איזו גירסה כדאי לשמור. לחיצה על הכפתור "שמור" תשמור את הגרסה שערכת. לחיצה על הכפתור "בטל" תשמור את הגרסה הקיימת.
|
||||
מומלץ לעיין בהבדלים המופיעים להלן ולאחר מכן להחליט איזו גרסה כדאי לשמור. לחיצה על הכפתור "שמירה" תשמור את הגרסה שערכת. לחיצה על הכפתור "ביטול" תשמור את הגרסה הקיימת.
|
||||
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
====== הרשאה נדחתה ======
|
||||
|
||||
אנו מצטערים אך אין לך הרשאות מתאימות כדי להמשיך. אולי שכחת להכנס למערכת?
|
||||
אנו מצטערים אך אין לך הרשאות מתאימות כדי להמשיך. אולי שכחת להיכנס למערכת?
|
|
@ -1,5 +1,5 @@
|
|||
====== נמצא קובץ טיוטא ======
|
||||
====== נמצא קובץ טיוטה ======
|
||||
|
||||
העריכה האחרונה שבוצעה לדף זה לא הסתימה כהלכה. DokuWiki שמר באופן אוטומטי טיוטה של העבודה ובאפשרותך להשתמש בה כדי להמשיך את העריכה. ניתן לראות מטה את המידע שנשמר מהפעם הקודמת.
|
||||
העריכה האחרונה שבוצעה לדף זה לא הושלמה כראוי. DokuWiki שמר באופן אוטומטי טיוטה של העבודה ובאפשרותך להשתמש בה כדי להמשיך את העריכה. ניתן לראות להלן את הנתונים שנשמרו מהפעם הקודמת.
|
||||
|
||||
באפשרותך לבחור ב//שחזור הטיוטה// של אותה עריכה //מחיקת הטיוטה// או //ביטול// העריכה כליל.
|
|
@ -1 +1 @@
|
|||
עריכת הדף ולחיצה על הכפתור "שמור" תעדכן את תוכנו. מומלץ לעיין בדף ה[[wiki:syntax|תחביר]] כדי להכיר את כללי תחביר הויקי. נא לערוך את הדף רק אם הדבר נעשה כדי **לשפר** אותו. אם העריכה היא לצורך התנסות מומלץ לבקר ב[[playground:playground|ארגז החול]].
|
||||
עריכת הדף ולחיצה על הלחצן "שמירה" תעדכן את תוכנו. מומלץ לעיין בדף ה[[wiki:syntax|תחביר]] כדי להכיר את כללי תחביר הוויקי. נא לערוך את הדף רק אם הדבר נעשה כדי **לשפר** אותו. אם העריכה היא לצורך התנסות מומלץ לבקר ב[[playground:playground|ארגז החול]].
|
||||
|
|
|
@ -1,2 +1,2 @@
|
|||
**הדף שנפתח הוא גרסה ישנה של המסמך!** לחיצה על הכפתור "שמור" תשחזר את המסמך לגרסה המוצגת כעת.
|
||||
**הדף שנפתח הוא גרסה ישנה של המסמך!** לחיצה על הלחצן "שמירה" תשחזר את המסמך לגרסה המוצגת כעת.
|
||||
----
|
|
@ -1,4 +1,4 @@
|
|||
====== אינדקס ======
|
||||
====== מפת אתר ======
|
||||
|
||||
זהו קובץ אינדקס הנמצא מעל לכל הדפים המאורגנים ב[[ויקי:דוקיוויקי]].
|
||||
זהו קובץ מפת אתר הנמצא מעל לכל הדפים המאורגנים ב[[ויקי:דוקיוויקי]].
|
||||
|
||||
|
|
|
@ -1,13 +1,13 @@
|
|||
<p>דף זה מסייע להתקנה וההגדרה הראשוניות של
|
||||
<a href="http://dokuwiki.org">Dokuwiki</a>. מידע נוסף על מתקין זה זמין בדף
|
||||
<p>דף זה מסייע בהליכי ההתקנה וההגדרה הראשוניים של
|
||||
<a href="http://dokuwiki.org">Dokuwiki</a>. מידע נוסף על תכנית התקנה זו זמין בדף
|
||||
<a href="http://dokuwiki.org/installer">התיעוד שלו</a>.</p>
|
||||
|
||||
<p>DokuWiki עושה שימוש בקבצים רגילים לשמירת דפי ויקי ומידע נוסף הקשור לדפים אלו (לדוגמה תמונות, רשימות חיפוש, גרסאות קודמות וכו').
|
||||
לתפקוד תקין DokuWiki <strong>חייב</strong> גישה לכתיבה לתיקיות המכילות קבצים אלו. מתקין זה אינו יכול לקבוע הרשאות לתיקיות.
|
||||
פעולה זו צריכה בד"כ להתבצע ישירות משורת הפקודה או במקרה שנעשה שימוש בשרת מארח דרך FTP או מנשק הניהול של המארח (cPanell לדוגמה).</p>
|
||||
<p>DokuWiki עושה שימוש בקבצים רגילים לשמירת דפי ויקי ומידע נוסף הקשור לדפים אלו (לדוגמה: תמונות, רשימות חיפוש, גרסאות קודמות וכו׳).
|
||||
לצורך תפקוד תקין DokuWiki <strong>חייב</strong> גישה לכתיבה לתיקיות המכילות קבצים אלו. תכנית התקנה זו אינה יכולה להגדיר הרשאות לתיקיות.
|
||||
פעולה זו צריכה בד״כ להתבצע ישירות משורת הפקודה או במקרה שנעשה שימוש בשרת מארח דרך FTP או מנשק הניהול של המארח (cPanell לדוגמה).</p>
|
||||
|
||||
<p>מתקין זה יגדיר את תצורת ה-<acronym title="access control list">ACL</acronym> ב-DokuWiki שלך
|
||||
<p>מתקין זה יגדיר את תצורת ה־<acronym title="access control list">ACL</acronym> ב-DokuWiki שלך
|
||||
, זה בתורו מאפשר גישת מנהל לתפריט הניהול של DokuWiki כדי להתקין הרחבות, לנהל משתמשים, לנהל גישות לדפי ויקי ושינויים בהגדרות התצורה.
|
||||
אין הוא הכרחי לתפקוד DokuWiki אך הוא יהפוך את Dokuwiki קל יותר לניהול.</p>
|
||||
אין הוא הכרחי לתפקוד DokuWiki אך הוא יהפוך את Dokuwiki לפשוט יותר לניהול.</p>
|
||||
|
||||
<p>על משתמשים מנוסים או כאלו עם דרישות מיוחדות להתקנה להשתמש בקישורים אלו לפרטים בנוגע ל<a href="http://dokuwiki.org/install">הוראות התקנה</a> ו<a href="http://dokuwiki.org/config">הגדרות תצורה</a>.</p>
|
||||
<p>על משתמשים מנוסים או כאלו עם דרישות מיוחדות להתקנה להשתמש בקישורים אלו לפרטים בנוגע ל<a href="http://dokuwiki.org/install">הוראות התקנה</a> ול<a href="http://dokuwiki.org/config">הגדרות תצורה</a>.</p>
|
||||
|
|
|
@ -10,6 +10,7 @@
|
|||
* @author Dotan Kamber <kamberd@yahoo.com>
|
||||
* @author Moshe Kaplan <mokplan@gmail.com>
|
||||
* @author Yaron Yogev <yaronyogev@gmail.com>
|
||||
* @author Yaron Shahrabani <sh.yaron@gmail.com>
|
||||
*/
|
||||
$lang['encoding'] = 'utf-8';
|
||||
$lang['direction'] = 'rtl';
|
||||
|
@ -18,132 +19,153 @@ $lang['doublequoteclosing'] = '”';
|
|||
$lang['singlequoteopening'] = '‘';
|
||||
$lang['singlequoteclosing'] = '’';
|
||||
$lang['apostrophe'] = '\'';
|
||||
$lang['btn_edit'] = 'עריכה';
|
||||
$lang['btn_source'] = 'הצג את מקור הדף';
|
||||
$lang['btn_show'] = 'הצג דף';
|
||||
$lang['btn_edit'] = 'עריכת דף זה';
|
||||
$lang['btn_source'] = 'הצגת מקור הדף';
|
||||
$lang['btn_show'] = 'הצגת דף';
|
||||
$lang['btn_create'] = 'יצירת דף';
|
||||
$lang['btn_search'] = 'חפש';
|
||||
$lang['btn_save'] = 'שמור';
|
||||
$lang['btn_search'] = 'חיפוש';
|
||||
$lang['btn_save'] = 'שמירה';
|
||||
$lang['btn_preview'] = 'תצוגה מקדימה';
|
||||
$lang['btn_top'] = 'חזור למעלה';
|
||||
$lang['btn_newer'] = '<< יותר חדש';
|
||||
$lang['btn_older'] = 'פחות חדש >>';
|
||||
$lang['btn_top'] = 'חזרה למעלה';
|
||||
$lang['btn_newer'] = '<< חדש יותר';
|
||||
$lang['btn_older'] = 'פחות חדש >>';
|
||||
$lang['btn_revs'] = 'גרסאות קודמות';
|
||||
$lang['btn_recent'] = 'שינויים אחרונים';
|
||||
$lang['btn_upload'] = 'העלה';
|
||||
$lang['btn_cancel'] = 'בטל';
|
||||
$lang['btn_index'] = 'אינדקס';
|
||||
$lang['btn_upload'] = 'העלאה';
|
||||
$lang['btn_cancel'] = 'ביטול';
|
||||
$lang['btn_index'] = 'מפת האתר';
|
||||
$lang['btn_secedit'] = 'עריכה';
|
||||
$lang['btn_login'] = 'כניסה';
|
||||
$lang['btn_logout'] = 'יציאה';
|
||||
$lang['btn_admin'] = 'מנהל';
|
||||
$lang['btn_update'] = 'עדכן';
|
||||
$lang['btn_delete'] = 'מחק';
|
||||
$lang['btn_back'] = 'חזור';
|
||||
$lang['btn_admin'] = 'ניהול';
|
||||
$lang['btn_update'] = 'עדכון';
|
||||
$lang['btn_delete'] = 'מחיקה';
|
||||
$lang['btn_back'] = 'חזרה';
|
||||
$lang['btn_backlink'] = 'קישורים לכאן';
|
||||
$lang['btn_backtomedia'] = 'לחזור לבחירת קובץ מדיה';
|
||||
$lang['btn_subscribe'] = 'עקוב אחרי שינוים';
|
||||
$lang['btn_unsubscribe'] = 'הפסק לעקוב';
|
||||
$lang['btn_subscribens'] = 'הרשמה לשינויים במרחב השם';
|
||||
$lang['btn_unsubscribens'] = 'הסרת הרשמה לשינויים במחב השם';
|
||||
$lang['btn_profile'] = 'עדכן פרופיל';
|
||||
$lang['btn_backtomedia'] = 'חזרה לבחירת קובץ מדיה';
|
||||
$lang['btn_subscribe'] = 'מעקב אחרי שינוים';
|
||||
$lang['btn_profile'] = 'עדכון הפרופיל';
|
||||
$lang['btn_reset'] = 'איפוס';
|
||||
$lang['btn_resendpwd'] = 'שלח סיסמה חדשה';
|
||||
$lang['btn_resendpwd'] = 'שליחת ססמה חדשה';
|
||||
$lang['btn_draft'] = 'עריכת טיוטה';
|
||||
$lang['btn_recover'] = 'שחזור טיוטה';
|
||||
$lang['btn_draftdel'] = 'מחיקת טיוטה';
|
||||
$lang['btn_revert'] = 'שחזר';
|
||||
$lang['loggedinas'] = 'רשום כ-';
|
||||
$lang['btn_revert'] = 'שחזור';
|
||||
$lang['loggedinas'] = 'נכנסת בשם';
|
||||
$lang['user'] = 'שם משתמש';
|
||||
$lang['pass'] = 'סיסמה';
|
||||
$lang['newpass'] = 'סיסמה חדשה';
|
||||
$lang['oldpass'] = 'אשר את הסיסמה הנוכחית';
|
||||
$lang['passchk'] = 'שוב';
|
||||
$lang['remember'] = 'זכור אותי';
|
||||
$lang['pass'] = 'ססמה';
|
||||
$lang['newpass'] = 'ססמה חדשה';
|
||||
$lang['oldpass'] = 'אישור הססמה הנוכחית';
|
||||
$lang['passchk'] = 'פעם נוספת';
|
||||
$lang['remember'] = 'שמירת הפרטים שלי';
|
||||
$lang['fullname'] = 'שם מלא';
|
||||
$lang['email'] = 'דוא"ל';
|
||||
$lang['email'] = 'דוא״ל';
|
||||
$lang['register'] = 'הרשמה';
|
||||
$lang['profile'] = 'פרופיל';
|
||||
$lang['badlogin'] = 'סליחה, שם המשתמש או הסיסמה שגויים';
|
||||
$lang['minoredit'] = 'שינוים מינוריים';
|
||||
$lang['draftdate'] = 'טיוטה נשמרה ב-';
|
||||
$lang['profile'] = 'פרופיל המשתמש';
|
||||
$lang['badlogin'] = 'שם המשתמש או הססמה שגויים, עמך הסליחה';
|
||||
$lang['minoredit'] = 'שינוים מזעריים';
|
||||
$lang['draftdate'] = 'הטיוטה נשמרה אוטומטית ב־';
|
||||
$lang['nosecedit'] = 'הדף השתנה בינתיים, הקטע שערכת אינו מעודכן - העמוד כולו נטען במקום זאת.';
|
||||
$lang['regmissing'] = 'סליחה, עליך למלא את כל השדות';
|
||||
$lang['reguexists'] = 'סליחה, משתמש בשם זה כבר נרשם';
|
||||
$lang['regsuccess'] = 'הרשמה הצליחה, המשתמש נרשם והודעה נשלחה בדואר';
|
||||
$lang['regsuccess2'] = 'הרשמה הצליחה, המשתמש נרשם.';
|
||||
$lang['regmailfail'] = 'שליחת הודעת הדואר כשלה, נא ליצור קשר עם מנהל האתר';
|
||||
$lang['regbadmail'] = 'כתובת דואר כנראה לא תקפה, אם לא כך היא יש ליצור קשר עם מנהל האתר';
|
||||
$lang['regbadpass'] = 'שתי הסיסמות הן לא זהות, נא לנסות שוב';
|
||||
$lang['regpwmail'] = 'סיסמת הדוקוויקי שלך';
|
||||
$lang['reghere'] = 'עדיין ללא שם-משתמש? ההרשמה כאן';
|
||||
$lang['regmissing'] = 'עליך למלא את כל השדות, עמך הסליחה.';
|
||||
$lang['reguexists'] = 'משתמש בשם זה כבר נרשם, עמך הסליחה.';
|
||||
$lang['regsuccess'] = 'ההרשמה הצליחה, המשתמש נרשם והודעה נשלחה בדוא״ל.';
|
||||
$lang['regsuccess2'] = 'ההרשמה הצליחה, המשתמש נוצר.';
|
||||
$lang['regmailfail'] = 'שליחת הודעת הדוא״ל כשלה, נא ליצור קשר עם מנהל האתר!';
|
||||
$lang['regbadmail'] = 'יתכן כי כתובת הדוא״ל אינה תקפה, אם לא כך הדבר ליצור קשר עם מנהל האתר';
|
||||
$lang['regbadpass'] = 'שתי הססמאות אינן זהות זו לזו, נא לנסות שוב.';
|
||||
$lang['regpwmail'] = 'ססמת הדוקוויקי שלך';
|
||||
$lang['reghere'] = 'עדיין אין לך חשבון? ההרשמה כאן';
|
||||
$lang['profna'] = 'בוויקי הזה לא ניתן לשנות פרופיל';
|
||||
$lang['profnochange'] = 'אין שינוים, פרופיל לא עודכן';
|
||||
$lang['profnoempty'] = 'שם וכתובת דוא"ל לא יכולים להיות ריקים';
|
||||
$lang['profchanged'] = 'פרופיל עודכן בהצלחה';
|
||||
$lang['pwdforget'] = 'שכחת סיסמה? קבל חדשה';
|
||||
$lang['resendna'] = 'הוויקי הזה לא תומך בחידוש סיסמה';
|
||||
$lang['resendpwd'] = 'שלח סיסמה חדשה עבור';
|
||||
$lang['resendpwdmissing'] = 'סליחה, עליך למלא את כל השדות';
|
||||
$lang['resendpwdnouser'] = 'סליחה, משתמש בשם זה לא נמצא';
|
||||
$lang['resendpwdbadauth'] = 'סליחה, קוד אימות זה אינו תקף. יש לודא כי נעשה שימוש במלוא קישור האימות.';
|
||||
$lang['resendpwdconfirm'] = 'קישור אימות נשלח בדוא"ל.';
|
||||
$lang['resendpwdsuccess'] = 'סיסמה חדשה נשלחה בדואר';
|
||||
$lang['license'] = 'למעט מקרים בהם צוין אחרת, התוכן בוויקי זה זמין לפי הרשיון הבא:';
|
||||
$lang['licenseok'] = 'שים לב: עריכת דף זה מהווה הסכמה מצידך להצגת התוכן שהוספת לפי הרשיון הבא:';
|
||||
$lang['searchmedia'] = 'חפש שם קובץ:';
|
||||
$lang['txt_upload'] = 'בחר קובץ להעלות';
|
||||
$lang['txt_filename'] = 'הכנס שם לוויקי (בחירה)';
|
||||
$lang['txt_overwrt'] = 'לכתוב במקום קובץ קיים';
|
||||
$lang['profnochange'] = 'אין שינויים, הפרופיל לא עודכן';
|
||||
$lang['profnoempty'] = 'השם וכתובת הדוא״ל לא יכולים להיות ריקים';
|
||||
$lang['profchanged'] = 'הפרופיל עודכן בהצלחה';
|
||||
$lang['pwdforget'] = 'שכחת את הססמה שלך? ניתן לקבל חדשה';
|
||||
$lang['resendna'] = 'הוויקי הזה אינו תומך בחידוש ססמה';
|
||||
$lang['resendpwd'] = 'שליחת ססמה חדשה עבור';
|
||||
$lang['resendpwdmissing'] = 'עליך למלא את כל השדות, עמך הסליחה.';
|
||||
$lang['resendpwdnouser'] = 'משתמש בשם זה לא נמצא במסד הנתונים, עמך הסליחה.';
|
||||
$lang['resendpwdbadauth'] = 'קוד אימות זה אינו תקף. יש לוודא כי נעשה שימוש בקישור האימות המלא, עמך הסליחה.';
|
||||
$lang['resendpwdconfirm'] = 'נשלח קישור לאימות נשלח בדוא״ל.';
|
||||
$lang['resendpwdsuccess'] = 'נשלחה ססמה חדשה בדוא״ל';
|
||||
$lang['license'] = 'למעט מקרים בהם צוין אחרת, התוכן בוויקי זה זמין לפי הרישיון הבא:';
|
||||
$lang['licenseok'] = 'נא לשים לב: עריכת דף זה מהווה הסכמה מצדך להצגת התוכן שהוספת בהתאם הרישיון הבא:';
|
||||
$lang['searchmedia'] = 'חיפוש שם קובץ:';
|
||||
$lang['searchmedia_in'] = 'חיפוש תחת %s';
|
||||
$lang['txt_upload'] = 'בחירת קובץ להעלות';
|
||||
$lang['txt_filename'] = 'העלאה בשם (נתון לבחירה)';
|
||||
$lang['txt_overwrt'] = 'שכתוב על קובץ קיים';
|
||||
$lang['lockedby'] = 'נעול על ידי';
|
||||
$lang['lockexpire'] = 'נעילה פגה';
|
||||
$lang['willexpire'] = 'נעילה תחלוף עוד זמן קצר. \nלמניעת התנגשויות יש להשתמש בכפתור הרענון מטה כדי לאתחל את הנעילה שנית';
|
||||
$lang['js']['notsavedyet'] = "קיימים שינויים שטרם נשמרו ואשר יאבדו \n האם להמשיך?";
|
||||
$lang['rssfailed'] = 'כשל ב-RSS';
|
||||
$lang['nothingfound'] = 'לא נמצאו תוצאות';
|
||||
$lang['mediaselect'] = 'בחירת קובץ מדיה';
|
||||
$lang['fileupload'] = 'העלאת קובץ מדיה';
|
||||
$lang['uploadsucc'] = 'העלאת הקובץ בוצעה בהצלחה';
|
||||
$lang['uploadfail'] = 'קרתה שגיאה בעת העלאת הקובץ. תיתכן ובעייה זו נוצרה עקב הרשאות שגיות.';
|
||||
$lang['uploadwrong'] = 'העלאה לא אושרה. קבצים בסיומת זו אסורים';
|
||||
$lang['uploadexist'] = 'הקובץ כבר קיים. פעולה בוטלה';
|
||||
$lang['uploadbadcontent'] = 'התוכן שהועלה לא תאם את הסיומת %s של הקובץ.';
|
||||
$lang['uploadspam'] = 'ההעלאה נחסמה על ידי הרשימה השחורה של הספאם.';
|
||||
$lang['uploadxss'] = 'ההעלאה נחסמה בשל חשד לתוכן זדוני.';
|
||||
$lang['uploadsize'] = 'הקובץ שהועלה היה גדול מדי. (מקסימום %s)';
|
||||
$lang['deletesucc'] = 'קובץ %s נמחק';
|
||||
$lang['deletefail'] = 'לא יכולתי למחוק "%s" -- בדקו הרשאות';
|
||||
$lang['mediainuse'] = 'קובץ "%s" לא נמחק - הוא עדיין בשימוש';
|
||||
$lang['namespaces'] = 'שמות מתחם';
|
||||
$lang['mediafiles'] = 'קבצים זמינים ב-';
|
||||
$lang['js']['searchmedia'] = 'חיפוש קבצים';
|
||||
$lang['js']['keepopen'] = 'השאר חלון פתוח בבחירה';
|
||||
$lang['js']['hidedetails'] = 'הסתר פרטים';
|
||||
$lang['js']['nosmblinks'] = ':( קישור למערכת קבצים של חלונות פועל רק בדפדפן אינטרנט אקספלורר.
|
||||
זה בסדר, אין צורך לעבור. אפשר להעתיק ולהדביק את הקישור';
|
||||
$lang['lockexpire'] = 'הנעילה פגה';
|
||||
$lang['willexpire'] = 'הנעילה תחלוף עוד זמן קצר. \nלמניעת התנגשויות יש להשתמש בכפתור הרענון מטה כדי לאפס את מד משך הנעילה.';
|
||||
$lang['js']['notsavedyet'] = 'שינויים שלא נשמרו ילכו לאיבוד.';
|
||||
$lang['js']['searchmedia'] = 'חיפוש אחר קבצים';
|
||||
$lang['js']['keepopen'] = 'השארת חלון פתוח על הבחירה';
|
||||
$lang['js']['hidedetails'] = 'הסתרת פרטים';
|
||||
$lang['js']['mediatitle'] = 'הגדרות הקישור';
|
||||
$lang['js']['mediadisplay'] = 'סוג הקישור';
|
||||
$lang['js']['mediaalign'] = 'יישור';
|
||||
$lang['js']['mediasize'] = 'גודל התמונה';
|
||||
$lang['js']['mediatarget'] = 'יעד הקישור';
|
||||
$lang['js']['mediaclose'] = 'סגירה';
|
||||
$lang['js']['mediainsert'] = 'הוספה';
|
||||
$lang['js']['mediadisplayimg'] = 'הצגת התמונה.';
|
||||
$lang['js']['mediadisplaylnk'] = 'הצגת הקישור בלבד.';
|
||||
$lang['js']['mediasmall'] = 'גרסה קטנה';
|
||||
$lang['js']['mediamedium'] = 'גרסה בינונית';
|
||||
$lang['js']['medialarge'] = 'גרסה גדולה';
|
||||
$lang['js']['mediaoriginal'] = 'הגרסה המקורית';
|
||||
$lang['js']['medialnk'] = 'קישור לעמוד הפרטים';
|
||||
$lang['js']['mediadirect'] = 'הקישור הישיר למקור';
|
||||
$lang['js']['medianolnk'] = 'אין קישור';
|
||||
$lang['js']['medianolink'] = 'אין לקשר לתמונה';
|
||||
$lang['js']['medialeft'] = 'יישור התמונה לשמאל.';
|
||||
$lang['js']['mediaright'] = 'יישור התמונה לימין.';
|
||||
$lang['js']['mediacenter'] = 'מרכוז התמונה.';
|
||||
$lang['js']['medianoalign'] = 'לא להשתמש ביישור.';
|
||||
$lang['js']['nosmblinks'] = 'קישור לכונני שיתוף של Windows עובד רק באמצעות Microsoft Internet Explorer.
|
||||
עדיין ניתן להעתיק ולהדביק את הקישור.';
|
||||
$lang['js']['linkwiz'] = 'אשף הקישורים';
|
||||
$lang['js']['linkto'] = 'קשר אל:';
|
||||
$lang['js']['linkto'] = 'קישור אל:';
|
||||
$lang['js']['del_confirm'] = 'באמת למחוק?';
|
||||
$lang['js']['mu_btn'] = 'העלאת קבצים מרובים';
|
||||
$lang['mediausage'] = 'השתמש בתחביר הבא להתיחסות אל קובץ זה:';
|
||||
$lang['mediaview'] = 'הצג את הקובץ המקורי';
|
||||
$lang['js']['mu_btn'] = 'העלאת מספר קבצים יחד';
|
||||
$lang['rssfailed'] = 'אירע כשל בעת קבלת הזנה זו:';
|
||||
$lang['nothingfound'] = 'לא נמצאו תוצאות.';
|
||||
$lang['mediaselect'] = 'קובצי מדיה';
|
||||
$lang['fileupload'] = 'העלאת קובצי מדיה';
|
||||
$lang['uploadsucc'] = 'ההעלאה הושלמה בהצלחה';
|
||||
$lang['uploadfail'] = 'אירעה שגיאה בעת העלאת הקובץ. היתכן שתקלה זו נוצרה עקב הרשאות שגיות?';
|
||||
$lang['uploadwrong'] = 'ההעלאה לא אושרה. קבצים בסיומת זו אסורים!';
|
||||
$lang['uploadexist'] = 'הקובץ כבר קיים. הפעולה בוטלה.';
|
||||
$lang['uploadbadcontent'] = 'התוכן שהועלה לא תאם את הסיומת %s של הקובץ.';
|
||||
$lang['uploadspam'] = 'ההעלאה נחסמה על ידי רשימת חסימת הספאם.';
|
||||
$lang['uploadxss'] = 'ההעלאה נחסמה בשל חשד לתוכן זדוני.';
|
||||
$lang['uploadsize'] = 'הקובץ שהועלה היה גדול מדי. (%s לכל היותר)';
|
||||
$lang['deletesucc'] = 'הקובץ %s נמחק.';
|
||||
$lang['deletefail'] = 'לא ניתן למחוק את "%s" -- נא לבדוק את ההרשאות.';
|
||||
$lang['mediainuse'] = 'הקובץ "%s" לא נמחק - הוא עדיין בשימוש.';
|
||||
$lang['namespaces'] = 'שמות מתחם';
|
||||
$lang['mediafiles'] = 'קבצים זמינים תחת';
|
||||
$lang['accessdenied'] = 'אין לך הרשאה לצפות בדף זה.';
|
||||
$lang['mediausage'] = 'יש להשתמש בתחביר הבא כדי להפנות לקובץ זה:';
|
||||
$lang['mediaview'] = 'הצגת הקובץ המקורי';
|
||||
$lang['mediaroot'] = 'root';
|
||||
$lang['mediaupload'] = 'כאן ניתן להעלות קובץ למרחב השמות הנוכחי. ליצירת תתי-מרחבי שמות צרפם ב-"העלה" לתחילת שם הקובץ מופרדים בפסיקים';
|
||||
$lang['mediaextchange'] = 'סיומת הקובץ השתנתה מ-.%s ל-.%s!';
|
||||
$lang['reference'] = 'קישורים ל';
|
||||
$lang['mediaupload'] = 'כאן ניתן להעלות קובץ למרחב השם הנוכחי. ליצירת תת־מרחבי שם יש לצרף אותם לתחילת שם הקובץ, מופרדים בפסיקים, בשם הקובץ תחת "העלאה בתור".';
|
||||
$lang['mediaextchange'] = 'סיומת הקובץ השתנתה מ־.%s ל־.%s!';
|
||||
$lang['reference'] = 'הפניות אל';
|
||||
$lang['ref_inuse'] = 'לא ניתן למחוק קובץ זה, כיוון שהדפים הבאים עדיין משתמשים בו:';
|
||||
$lang['ref_hidden'] = 'יש קישורים לדפים ללא הרשאת קריאה';
|
||||
$lang['hits'] = 'פגיעות';
|
||||
$lang['quickhits'] = 'דפים שנמצאו';
|
||||
$lang['ref_hidden'] = 'חלק מההפניות נמצאות בדפים שאין לך הרשאות לקרוא אותם';
|
||||
$lang['hits'] = 'ביקורים';
|
||||
$lang['quickhits'] = 'שמות דפים שנמצאו';
|
||||
$lang['toc'] = 'תוכן עניינים';
|
||||
$lang['current'] = 'גירסה נוכחית';
|
||||
$lang['current'] = 'הגרסה הנוכחית';
|
||||
$lang['yours'] = 'הגרסה שלך';
|
||||
$lang['diff'] = 'הצג שינוים מגרסה זו ועד הנוכחית';
|
||||
$lang['diff'] = 'הצגת שינוים מגרסה זו ועד הנוכחית';
|
||||
$lang['diff2'] = 'הצגת הבדלים בין הגרסאות שנבחרו';
|
||||
$lang['difflink'] = 'קישור לתצוגה השוואה זו';
|
||||
$lang['line'] = 'שורה';
|
||||
$lang['breadcrumb'] = 'ביקורים אחרונים';
|
||||
$lang['youarehere'] = 'אתה נמצא כאן';
|
||||
$lang['lastmod'] = 'שונה לאחרונה ב';
|
||||
$lang['youarehere'] = 'זהו מיקומך';
|
||||
$lang['lastmod'] = 'מועד השינוי האחרון';
|
||||
$lang['by'] = 'על ידי';
|
||||
$lang['deleted'] = 'נמחק';
|
||||
$lang['created'] = 'נוצר';
|
||||
|
@ -151,9 +173,10 @@ $lang['restored'] = 'שוחזר';
|
|||
$lang['external_edit'] = 'עריכה חיצונית';
|
||||
$lang['summary'] = 'תקציר העריכה';
|
||||
$lang['noflash'] = '<a href="http://www.adobe.com/products/flashplayer/">תוסף פלאש לדפדפן</a> נדרש כדי להציג תוכן זה.';
|
||||
$lang['download'] = 'הורד מקטע';
|
||||
$lang['download'] = 'הורדת מקטע';
|
||||
$lang['mail_newpage'] = 'דף נוסף:';
|
||||
$lang['mail_changed'] = 'דף שונה:';
|
||||
$lang['mail_subscribe_list'] = 'דפים שהשתנו במרחב השם:';
|
||||
$lang['mail_new_user'] = 'משתמש חדש:';
|
||||
$lang['mail_upload'] = 'קובץ הועלה:';
|
||||
$lang['qb_bold'] = 'טקסט מודגש';
|
||||
|
@ -167,7 +190,7 @@ $lang['qb_h3'] = 'כותרת רמה 3';
|
|||
$lang['qb_h4'] = 'כותרת רמה 4';
|
||||
$lang['qb_h5'] = 'כותרת רמה 5';
|
||||
$lang['qb_h'] = 'כותרת';
|
||||
$lang['qb_hs'] = 'בחירת כותרת';
|
||||
$lang['qb_hs'] = 'כותרת נבחרת';
|
||||
$lang['qb_hplus'] = 'כותרת ברמה גבוהה יותר';
|
||||
$lang['qb_hminus'] = 'כותרת ברמה נמוכה יותר';
|
||||
$lang['qb_hequal'] = 'כותרת באותה רמה';
|
||||
|
@ -175,73 +198,85 @@ $lang['qb_link'] = 'קישור פנימי';
|
|||
$lang['qb_extlink'] = 'קישור חיצוני';
|
||||
$lang['qb_hr'] = 'קו אופקי';
|
||||
$lang['qb_ol'] = 'איבר ברשימה ממוספרת';
|
||||
$lang['qb_ul'] = 'אבר ברשימה לא ממוספרת';
|
||||
$lang['qb_media'] = 'תמונות או קובץ אחר';
|
||||
$lang['qb_sig'] = 'הזנת חתימה';
|
||||
$lang['qb_smileys'] = 'פרצופונים';
|
||||
$lang['qb_chars'] = 'סימנים מיוחדים';
|
||||
$lang['upperns'] = 'עבור למרחב השם שברמה שמעל הנוכחית';
|
||||
$lang['admin_register'] = 'להוסיף משתמש חדש';
|
||||
$lang['metaedit'] = 'ערוך נתונים';
|
||||
$lang['metasaveerr'] = 'כשל בשמירת נתונים';
|
||||
$lang['metasaveok'] = 'נתונים נשמרו';
|
||||
$lang['img_backto'] = 'הזור ל';
|
||||
$lang['img_title'] = 'כותרת';
|
||||
$lang['img_caption'] = 'תיאור';
|
||||
$lang['qb_ul'] = 'איבר ברשימה לא ממוספרת';
|
||||
$lang['qb_media'] = 'תמונות וקבצים אחרים';
|
||||
$lang['qb_sig'] = 'הוספת חתימה';
|
||||
$lang['qb_smileys'] = 'חייכנים';
|
||||
$lang['qb_chars'] = 'תווים מיוחדים';
|
||||
$lang['upperns'] = 'מעבר למרחב השם שברמה שמעל הנוכחית';
|
||||
$lang['admin_register'] = 'הוספת משתמש חדש';
|
||||
$lang['metaedit'] = 'עריכת נתוני העל';
|
||||
$lang['metasaveerr'] = 'אירע כשל בשמירת נתוני העל';
|
||||
$lang['metasaveok'] = 'נתוני העל נשמרו';
|
||||
$lang['img_backto'] = 'חזרה אל';
|
||||
$lang['img_title'] = 'שם';
|
||||
$lang['img_caption'] = 'כותרת';
|
||||
$lang['img_date'] = 'תאריך';
|
||||
$lang['img_fname'] = 'שם הקובץ';
|
||||
$lang['img_fsize'] = 'גודל';
|
||||
$lang['img_artist'] = 'צלם';
|
||||
$lang['img_copyr'] = 'זכויות';
|
||||
$lang['img_format'] = 'פורמט';
|
||||
$lang['img_copyr'] = 'זכויות יוצרים';
|
||||
$lang['img_format'] = 'מבנה';
|
||||
$lang['img_camera'] = 'מצלמה';
|
||||
$lang['img_keywords'] = 'מילות מפתח';
|
||||
$lang['subscribe_success'] = '%s נוסף לרשימת המכותבים עבור %s';
|
||||
$lang['subscribe_error'] = 'שגיאה בהוספת %s לרשימת המכותבים עבור %s';
|
||||
$lang['subscribe_noaddress'] = 'אין כתובת המשויכת לרישום שלך ולכן אין באפשרותך להצטרף לרשימת המכותבים';
|
||||
$lang['unsubscribe_success'] = '%s הוסר מרשימת המכותבים עבור %s';
|
||||
$lang['unsubscribe_error'] = 'שגיאה בהסרת %s מרשימת המכותבים עבור %s';
|
||||
$lang['authmodfailed'] = 'תצורת אימות משתמשים גרועה. נא לדווח למנהל הויקי.';
|
||||
$lang['authtempfail'] = 'אימות משתמשים אינו זמין כרגע. אם מצב זה נמשך נא להודיע למנהל הויקי.';
|
||||
$lang['subscr_subscribe_success'] = '%s נוסף לרשימת המינויים לדף %s';
|
||||
$lang['subscr_subscribe_error'] = 'אירעה שגיאה בהוספת %s לרשימת המינויים לדף %s';
|
||||
$lang['subscr_subscribe_noaddress'] = 'אין כתובת המשויכת עם הכניסה שלך, נא ניתן להוסיף אותך לרשימת המינויים';
|
||||
$lang['subscr_unsubscribe_success'] = 'המשתמש %s הוסר מרשימת המינויים לדף %s';
|
||||
$lang['subscr_unsubscribe_error'] = 'אירעה שגיאה בהסרת %s מרשימת המינויים לדף %s';
|
||||
$lang['subscr_already_subscribed'] = 'המשתמש %s כבר מנוי לדף %s';
|
||||
$lang['subscr_not_subscribed'] = 'המשתמש %s איננו רשום לדף %s';
|
||||
$lang['subscr_m_not_subscribed'] = 'המשתמש שלך אינו רשום, נכון לעכשיו, לדף הנוכחי או למרחב השם.';
|
||||
$lang['subscr_m_new_header'] = 'הוספת מינוי';
|
||||
$lang['subscr_m_current_header'] = 'המינויים הנוכחיים';
|
||||
$lang['subscr_m_unsubscribe'] = 'ביטול המינוי';
|
||||
$lang['subscr_m_subscribe'] = 'מינוי';
|
||||
$lang['subscr_m_receive'] = 'קבלת';
|
||||
$lang['subscr_style_every'] = 'דוא״ל עם כל שינוי';
|
||||
$lang['subscr_style_digest'] = 'הודעת דוא״ל המציגה את כל השינויים בכל עמוד (בכל %.2f ימים)';
|
||||
$lang['subscr_style_list'] = 'רשימת השינויים בדפים מאז הודעת הדוא״ל האחרונה (בכל %.2f ימים)';
|
||||
$lang['authmodfailed'] = 'תצורת אימות המשתמשים אינה תקינה. נא ליידע את מנהל הוויקי.';
|
||||
$lang['authtempfail'] = 'אימות משתמשים אינו זמין כרגע. אם מצב זה נמשך נא ליידע את מנהל הוויקי.';
|
||||
$lang['i_chooselang'] = 'נא לבחור שפה';
|
||||
$lang['i_installer'] = 'DokuWiki Installer';
|
||||
$lang['i_wikiname'] = 'שם הויקי';
|
||||
$lang['i_enableacl'] = 'אפשר ACL (מומלץ)';
|
||||
$lang['i_superuser'] = 'משתמש-על';
|
||||
$lang['i_problems'] = 'המתקין זיהה מספר בעיות המצוינות מטה. אין באפשרותך להמשיך לפני תיקונן.';
|
||||
$lang['i_modified'] = 'משיקולי אבטחה תסריט זה יעבוד אך ורק עם התקנת DokuWiki חדשה שלא עברה כל שינוי.
|
||||
עליך לחלץ שנית את הקבצים מהחבילה שהורדה או להעזר בדף
|
||||
$lang['i_installer'] = 'תכנית ההתקנה של DokuWiki';
|
||||
$lang['i_wikiname'] = 'שם הוויקי';
|
||||
$lang['i_enableacl'] = 'הפעלת ACL (מומלץ)';
|
||||
$lang['i_superuser'] = 'משתמש־על';
|
||||
$lang['i_problems'] = 'תכנית ההתקנה זיהתה מספר בעיות המפורטות להלן. אין באפשרותך להמשיך לפני תיקונן.';
|
||||
$lang['i_modified'] = 'משיקולי אבטחה סקריפט זה יעבוד אך ורק עם התקנת DokuWiki חדשה שלא עברה כל שינוי.
|
||||
עליך לחלץ שנית את הקבצים מהחבילה שהורדה או להיעזר בדף
|
||||
<a href="http://dokuwiki.org/install">Dokuwiki installation instructions</a>';
|
||||
$lang['i_funcna'] = 'פונקצית ה-PHP <code>%s</code> אינה זמינה. יתכן כי מארח האתר חסם אותה מסיבה כלשהי?';
|
||||
$lang['i_phpver'] = 'גרסת ה-PHP שלך <code>%s</code> נמוכה מהדרוש. עליך לשדרג את התקנת ה-PHP';
|
||||
$lang['i_permfail'] = '<code>%s</code> אינה ברת כתיבה על ידי DokuWiki. עליך לשנות הרשאות ספריה זו!';
|
||||
$lang['i_funcna'] = 'פונקציית ה-PHP‏ <code>%s</code> אינה זמינה. יתכן כי מארח האתר חסם אותה מסיבה כלשהי?';
|
||||
$lang['i_phpver'] = 'גרסת ה־PHP שלך <code>%s</code> נמוכה מהדרוש. עליך לשדרג את התקנת ה־PHP שלך.';
|
||||
$lang['i_permfail'] = '<code>%s</code> אינה ניתנת לכתיבה על ידי DokuWiki. עליך לשנות הרשאות תיקייה זו!';
|
||||
$lang['i_confexists'] = '<code>%s</code> כבר קיים';
|
||||
$lang['i_writeerr'] = 'אין אפשרות ליצור את <code>%s</code>. נא לבדוק את הרשאות הקובץ/ספריה וליצור את הקובץ ידנית.';
|
||||
$lang['i_badhash'] = 'קובץ Dokuwiki.php לא מזוהה או שעבר שינויים (hash=<code>%s</code>)';
|
||||
$lang['i_badval'] = '<code>%s</code> - ערך לא חוקי או ריק';
|
||||
$lang['i_success'] = 'ההגדרה הסתימה בהצלחה. באפשרותך למחוק עתה את הקובץ install.php ולהמשיך אל <a href="doku.php">DokuWiki החדש שלך</a>.';
|
||||
$lang['i_failure'] = 'מספר שגיאות ארעו בעת כתיבת קבצי התצורה. ייתכן כי יהיה צורך לתקנם ידנית לפני שניתן יהיה להשתמש ב<a href="doku.php">DokuWiki החדש שלך</a>.';
|
||||
$lang['i_policy'] = 'מדיניות ACL תחילית';
|
||||
$lang['i_writeerr'] = 'אין אפשרות ליצור את <code>%s</code>. נא לבדוק את הרשאות הקובץ/תיקייה וליצור את הקובץ ידנית.';
|
||||
$lang['i_badhash'] = 'הקובץ Dokuwiki.php אינו מזוהה או שעבר שינויים (hash=<code>%s</code>)';
|
||||
$lang['i_badval'] = '<code>%s</code> - הערך אינו חוקי או ריק';
|
||||
$lang['i_success'] = 'תהליך ההגדרה הסתיים בהצלחה. כעת ניתן למחוק את הקובץ install.php ולהמשיך אל ה־<a href="doku.php">DokuWiki החדש שלך</a>.';
|
||||
$lang['i_failure'] = 'מספר שגיאות אירעו בעת כתיבת קובצי התצורה. יתכן כי יהיה צורך לתקנם ידנית לפני שניתן יהיה להשתמש ב־<a href="doku.php">DokuWiki החדש שלך</a>.';
|
||||
$lang['i_policy'] = 'מדיניות ACL התחלתית';
|
||||
$lang['i_pol0'] = 'ויקי פתוח (קריאה, כתיבה והעלאה לכולם)';
|
||||
$lang['i_pol1'] = ' ויקי ציבורי (קריאה לכולם, כתיבה והעלאה למשתמשים רשומים)';
|
||||
$lang['i_pol2'] = 'ויקי סגור (קריאה, כתיבה והעלאה למשתמשים רשומים בלבד)';
|
||||
$lang['i_retry'] = 'נסיון נוסף';
|
||||
$lang['mu_intro'] = 'כאן תוכל להעלות קבצים מרובים. לחץ על כפתור החיפוש להוסיף אותם למחסנית. לחץ על העלאה לסיום.';
|
||||
$lang['mu_gridname'] = 'שם קובץ';
|
||||
$lang['i_retry'] = 'ניסיון נוסף';
|
||||
$lang['i_license'] = 'נא לבחור את הרישיון שיחול על התוכן שבוויקי שלך:';
|
||||
$lang['mu_intro'] = 'דרך כאן ניתן להעלות מספר קבצים בבת אחת. יש ללחוץ על לחצן החיפוש להוסיף אותם למחסנית. ניתן ללחוץ על העלאה לסיום.';
|
||||
$lang['mu_gridname'] = 'שם הקובץ';
|
||||
$lang['mu_gridsize'] = 'גודל';
|
||||
$lang['mu_gridstat'] = 'סטאטןס';
|
||||
$lang['mu_gridstat'] = 'מצב';
|
||||
$lang['mu_namespace'] = 'מרחב שם';
|
||||
$lang['mu_browse'] = 'חיפוש';
|
||||
$lang['mu_toobig'] = 'גדול מדי';
|
||||
$lang['mu_ready'] = 'מוכן להעלאה';
|
||||
$lang['mu_done'] = 'סיים';
|
||||
$lang['mu_ready'] = 'בהמתנה להעלאה';
|
||||
$lang['mu_done'] = 'הסתיים';
|
||||
$lang['mu_fail'] = 'נכשל';
|
||||
$lang['mu_authfail'] = 'תקוף נעילת עריכה פג';
|
||||
$lang['mu_authfail'] = 'תוקף ההפעלה פג';
|
||||
$lang['mu_progress'] = '@PCT@% הועלה';
|
||||
$lang['mu_filetypes'] = 'סוגי קבצים מורשים';
|
||||
$lang['mu_info'] = 'הקבצים הועלו';
|
||||
$lang['mu_lasterr'] = 'שגיאה אחרונה:';
|
||||
$lang['recent_global'] = 'אתה צופה כעת בשינויים בתוך מרחב השם <b>%s</b>. אתה יכול גם <a href="%s">לצפות בשינויים האחרונים של כל הוויקי </a>.';
|
||||
$lang['recent_global'] = 'נכון לעכשיו מתנהל על ידיך מעקב אחר מרחב השם <b>%s</b>. כמו כן, באפשרותך <a href="%s">לצפות בשינויים האחרונים בוויקי כולו</a>.';
|
||||
$lang['years'] = 'לפני %d שנים';
|
||||
$lang['months'] = 'לפני %d חודשים';
|
||||
$lang['weeks'] = 'לפני %d שבועות';
|
||||
|
@ -249,3 +284,4 @@ $lang['days'] = 'לפני %d ימים';
|
|||
$lang['hours'] = 'לפני %d שעות';
|
||||
$lang['minutes'] = 'לפני %d דקות';
|
||||
$lang['seconds'] = 'לפני %d שניות';
|
||||
$lang['wordblock'] = 'השינויים שלך לא נשמרו כיוון שהם מכילים טקסט חסום (ספאם).';
|
||||
|
|
|
@ -1,17 +1,17 @@
|
|||
דף בDokuWiki נוסף או שונה. הנה הפרטים:
|
||||
דף בDokuWiki נוסף או שונה. להלן הפרטים:
|
||||
|
||||
Date : @DATE@
|
||||
Browser : @BROWSER@
|
||||
IP-Address : @IPADDRESS@
|
||||
Hostname : @HOSTNAME@
|
||||
Old Revision: @OLDPAGE@
|
||||
New Revision: @NEWPAGE@
|
||||
Edit Summary: @SUMMARY@
|
||||
User : @USER@
|
||||
תאריך : @DATE@
|
||||
דפדפן : @BROWSER@
|
||||
כתובת ה־IP‏ : @IPADDRESS@
|
||||
שם המארח : @HOSTNAME@
|
||||
המהדורה הישנה: @OLDPAGE@
|
||||
המהדורה החדשה: @NEWPAGE@
|
||||
תקציר העריכה: @SUMMARY@
|
||||
משתמש : @USER@
|
||||
|
||||
@DIFF@
|
||||
|
||||
--
|
||||
|
||||
דף זה נוצר ע"י DokuWiki ב-
|
||||
דף זה נוצר ע״י ה־DokuWiki הזמין בכתובת
|
||||
@DOKUWIKIURL@
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
שלום @FULLNAME@!
|
||||
|
||||
הנה נתוני המשתמש שלך עבור @TITLE@ ב- @DOKUWIKIURL@
|
||||
הנה נתוני המשתמש שלך עבור @TITLE@ ב־@DOKUWIKIURL@
|
||||
|
||||
כניסה : @LOGIN@
|
||||
סיסמה : @PASSWORD@
|
||||
שם כניסה : @LOGIN@
|
||||
ססמה : @PASSWORD@
|
||||
|
||||
--
|
||||
מכתב זה נוצר על ידי דוקוויקי ב-
|
||||
מכתב זה נוצר על ידי ה־DokuWiki הזמין בכתובת
|
||||
@DOKUWIKIURL@
|
|
@ -1,13 +1,13 @@
|
|||
שלום @FULLNAME@!
|
||||
|
||||
מישהו ביקש סיסמה חדשה עבור הכניסה שלך ל-@TITLE@ ב-@DOKUWIKIURL@
|
||||
מישהו ביקש ססמה חדשה עבור שם הכניסה שלך לוויקי @TITLE@ בכתובת @DOKUWIKIURL@
|
||||
|
||||
אם לא ביקשת סיסמה חדשה פשוט התעלם מדוא"ל זה.
|
||||
אם לא ביקשת ססמה חדשה באפשרותך פשוט להתעלם מהודעת דוא״ל זו.
|
||||
|
||||
כדי לאשר שהבקשה באמת נשלחה על ידך נא השתמש בקישור הבא.
|
||||
כדי לאשר שהבקשה באמת נשלחה על ידך עליך השתמש בקישור הבא.
|
||||
|
||||
@CONFIRM@
|
||||
|
||||
--
|
||||
דואר זה נוצר על ידי DokuWiki ב-
|
||||
הודעת דוא״ל זו נוצרה על ידי ה־DokuWiki הזמין בכתובת
|
||||
@DOKUWIKIURL@
|
||||
|
|
|
@ -1,2 +1,2 @@
|
|||
דף זה הוא דף לקריאה בלבד. ניתן לצפות בקוד המקור שלו, אבל לא ניתן לערוך אותו. ניתן לפנות אל מנהל הויקי אם לדעתך נפלה טעות.
|
||||
דף זה הוא דף לקריאה בלבד. ניתן לצפות בקוד המקור שלו, אך לא ניתן לערוך אותו. ניתן לפנות למנהל הוויקי אם לדעתך נפלה טעות.
|
||||
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
====== הרשמה כמשתמש חדש ======
|
||||
|
||||
יש למלא את כל המידע מטה כדי ליצור חשבון חדש בויקי זה. יש לודא כי מוזנת **כתובת דוא"ל תקפה**- סיסמתך החדשה תשלח לכתובת זו\\ על שם המשתמש להיות [[hdoku>ויקי:שם דף|שם דף]] תקף.
|
||||
יש למלא את כל המידע להלן כדי ליצור חשבון חדש בוויקי זה. עליך לוודא כי הזנת **כתובת דוא״ל תקפה**- ססמתך החדשה תשלח לכתובת זו. על שם המשתמש להיות [[hdoku>ויקי:שם דף|שם דף]] תקף.
|
||||
|
|
|
@ -1,14 +1,14 @@
|
|||
משתמש חדש נרשם. הנה הפרטים:
|
||||
משתמש חדש נרשם. להלן הפרטים:
|
||||
|
||||
שם משתמש : @NEWUSER@
|
||||
שם מלא : @NEWNAME@
|
||||
דוא"ל : @NEWEMAIL@
|
||||
דוא״ל : @NEWEMAIL@
|
||||
|
||||
תאריך : @DATE@
|
||||
דפדפן : @BROWSER@
|
||||
כתובת רשת : @IPADDRESS@
|
||||
שם המחשב : @HOSTNAME@
|
||||
כתובת IP‏ : @IPADDRESS@
|
||||
שם המארח : @HOSTNAME@
|
||||
|
||||
--
|
||||
דוא"ל זה נוצר על ידי DokuWiki ב-
|
||||
הודעת דוא״ל זו נוצרה על ידי ה־DokuWiki הזמין בכתובת
|
||||
@DOKUWIKIURL@
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
====== שליחת סיסמה חדשה ======
|
||||
====== שליחת ססמה חדשה ======
|
||||
|
||||
יש להזין את שם המשתמש בטופס מטה ולבקש סיסמה חדשה לחשבון שלך בויקי זה. קישור לאימות ישלח לכתובת הדו"ל איתה נרשמת.
|
||||
יש להזין את שם המשתמש בטופס מטה ולבקש ססמה חדשה לחשבון שלך בוויקי זה. הקישור לאימות יישלח לכתובת הדוא״ל באמצעותה נרשמת.
|
||||
|
||||
|
|
20
inc/lang/he/subscr_digest.txt
Normal file
20
inc/lang/he/subscr_digest.txt
Normal file
|
@ -0,0 +1,20 @@
|
|||
שלום!
|
||||
|
||||
הדף @PAGE@ שבאתר הוויקי @TITLE@ השתנה.
|
||||
להלן השינויים:
|
||||
|
||||
--------------------------------------------------------
|
||||
@DIFF@
|
||||
--------------------------------------------------------
|
||||
|
||||
המהדורה הישנה: @OLDPAGE@
|
||||
המהדורה החדשה: @NEWPAGE@
|
||||
|
||||
כדי לבטל את ההתרעות לשינויי העמוד, יש להיכנס לאתר הוויקי בכתובת
|
||||
@DOKUWIKIURL@ ואז לבקר באגף
|
||||
@SUBSCRIBE@
|
||||
ולבטל את המינוי לשינויים בדף ו/או במרחב השם.
|
||||
|
||||
--
|
||||
הודעת דוא״ל זו נוצרה על ידי ה־DokuWiki שבכתובת
|
||||
@DOKUWIKIURL@
|
22
inc/lang/he/subscr_single.txt
Normal file
22
inc/lang/he/subscr_single.txt
Normal file
|
@ -0,0 +1,22 @@
|
|||
שלום!
|
||||
|
||||
הדף @PAGE@ באתר הוויקי @TITLE@ השתנה.
|
||||
|
||||
--------------------------------------------------------
|
||||
@DIFF@
|
||||
--------------------------------------------------------
|
||||
|
||||
תאריך : @DATE@
|
||||
משתמש : @USER@
|
||||
תקציר העריכה: @SUMMARY@
|
||||
המהדורה הישנה: @OLDPAGE@
|
||||
המהדורה החדשה: @NEWPAGE@
|
||||
|
||||
לביטול התרעות בנוגע לעמוד, יש להיכנס לאתר הוויקי בכתובת
|
||||
@DOKUWIKIURL@ ואז לבקר בדף
|
||||
@NEWPAGE@
|
||||
ולבטל את המינוי לקבלת שינויים בדף ו/או במרחב השם.
|
||||
|
||||
--
|
||||
הודעת דוא״ל זו נוצרה על ידי ה־DokuWiki הזמין בכתובת
|
||||
@DOKUWIKIURL@
|
|
@ -227,4 +227,4 @@ $lang['i_pol2'] = 'វីគីបិទជិត';
|
|||
|
||||
$lang['i_retry'] = 'ម្តងទៀត';
|
||||
|
||||
//Setup VIM: ex: et ts=2 enc=utf-8 :
|
||||
//Setup VIM: ex: et ts=2 :
|
||||
|
|
1
inc/lang/ko/adminplugins.txt
Normal file
1
inc/lang/ko/adminplugins.txt
Normal file
|
@ -0,0 +1 @@
|
|||
===== 부가적인 플러그인 =====
|
|
@ -1,2 +1,2 @@
|
|||
페이지를 편집하고 **저장**을 누르십시오. 위키 구문은 [[wiki:syntax]] 혹은 [[syntax|(한글) 구문]]을 참고하십시오. 이 페이지를 **더 낫게 만들 자신이 있을** 때에만 편집하십시오. 실험을 하고 싶을 때에는, 먼저 [[playground:playground|연습장]] 에 가서 연습해 보십시오.
|
||||
페이지를 편집하고 **저장**을 누르십시오. 위키 구문은 [[wiki:syntax]] 혹은 [[wiki:ko_syntax|(한글) 구문]]을 참고하십시오. 이 페이지를 **더 낫게 만들 자신이 있을** 때에만 편집하십시오. 실험을 하고 싶을 때에는, 먼저 [[playground:playground|연습장]] 에 가서 연습해 보십시오.
|
||||
|
||||
|
|
|
@ -8,6 +8,7 @@
|
|||
* @author dongnak@gmail.com
|
||||
* @author Song Younghwan <purluno@gmail.com>
|
||||
* @author SONG Younghwan <purluno@gmail.com>
|
||||
* @author Seung-Chul Yoo <dryoo@live.com>
|
||||
*/
|
||||
$lang['encoding'] = 'utf-8';
|
||||
$lang['direction'] = 'ltr';
|
||||
|
@ -41,15 +42,13 @@ $lang['btn_back'] = '뒤로';
|
|||
$lang['btn_backlink'] = '이전 링크';
|
||||
$lang['btn_backtomedia'] = '미디어 파일 선택으로 돌아가기';
|
||||
$lang['btn_subscribe'] = '구독 신청';
|
||||
$lang['btn_unsubscribe'] = '구독 신청 해지';
|
||||
$lang['btn_subscribens'] = '네임스페이스 구독 신청';
|
||||
$lang['btn_unsubscribens'] = '네임스페이스 구독 신청 해지';
|
||||
$lang['btn_profile'] = '개인정보 변경';
|
||||
$lang['btn_reset'] = '초기화';
|
||||
$lang['btn_resendpwd'] = '새 패스워드 보내기';
|
||||
$lang['btn_draft'] = '문서초안 편집';
|
||||
$lang['btn_recover'] = '문서초안 복구';
|
||||
$lang['btn_draftdel'] = '문서초안 삭제';
|
||||
$lang['btn_revert'] = '복원';
|
||||
$lang['loggedinas'] = '다음 사용자로 로그인';
|
||||
$lang['user'] = '사용자';
|
||||
$lang['pass'] = '패스워드';
|
||||
|
@ -88,13 +87,45 @@ $lang['resendpwdconfirm'] = '확인 링크를 이메일로 보냈습니다.
|
|||
$lang['resendpwdsuccess'] = '새로운 패스워드는 이메일로 보내드립니다.';
|
||||
$lang['license'] = '이 위키의 내용은 다음의 라이센스에 따릅니다 :';
|
||||
$lang['licenseok'] = '주의 : 이 페이지를 수정한다는 다음의 라이센스에 동의함을 의미합니다 :';
|
||||
$lang['searchmedia'] = '파일이름 찾기:';
|
||||
$lang['searchmedia_in'] = ' %에서 검색';
|
||||
$lang['txt_upload'] = '업로드 파일을 선택합니다.';
|
||||
$lang['txt_filename'] = '업로드 파일 이름을 입력합니다.(선택 사항)';
|
||||
$lang['txt_overwrt'] = '새로운 파일로 이전 파일을 교체합니다.';
|
||||
$lang['lockedby'] = '현재 잠금 사용자';
|
||||
$lang['lockexpire'] = '잠금 해제 시간';
|
||||
$lang['willexpire'] = '잠시 후 편집 잠금이 해제됩니다.\n편집 충돌을 피하려면 미리보기를 눌러 잠금 시간을 다시 설정하기 바랍니다.';
|
||||
$lang['js']['notsavedyet'] = "저장하지 않은 변경은 지워집니다.\n계속하시겠습니까?";
|
||||
$lang['js']['notsavedyet'] = '저장하지 않은 변경은 지워집니다.
|
||||
계속하시겠습니까?';
|
||||
$lang['js']['searchmedia'] = '파일 찾기';
|
||||
$lang['js']['keepopen'] = '선택할 때 윈도우를 열어놓으시기 바랍니다.';
|
||||
$lang['js']['hidedetails'] = '자세한 정보 감추기';
|
||||
$lang['js']['mediatitle'] = '링크 설정';
|
||||
$lang['js']['mediadisplay'] = '링크 형태';
|
||||
$lang['js']['mediaalign'] = '배치';
|
||||
$lang['js']['mediasize'] = '그림 크기';
|
||||
$lang['js']['mediatarget'] = '링크 목표';
|
||||
$lang['js']['mediaclose'] = '닫기';
|
||||
$lang['js']['mediainsert'] = '삽입';
|
||||
$lang['js']['mediadisplayimg'] = '그림보기';
|
||||
$lang['js']['mediasmall'] = '작게';
|
||||
$lang['js']['mediamedium'] = '중간';
|
||||
$lang['js']['medialarge'] = '크게';
|
||||
$lang['js']['mediaoriginal'] = '원본';
|
||||
$lang['js']['medialnk'] = '세부정보페이지로 링크';
|
||||
$lang['js']['mediadirect'] = '원본으로 직접 링크';
|
||||
$lang['js']['medianolnk'] = '링크 없슴';
|
||||
$lang['js']['medianolink'] = '그림을 링크하지 않음';
|
||||
$lang['js']['medialeft'] = '왼쪽 배치';
|
||||
$lang['js']['mediaright'] = '오른쪽 배치';
|
||||
$lang['js']['mediacenter'] = '중앙 배치';
|
||||
$lang['js']['medianoalign'] = '배치 없슴';
|
||||
$lang['js']['nosmblinks'] = '윈도우 공유 파일과의 연결은 MS 인터넷 익스플로러에서만 동작합니다.
|
||||
그러나 링크를 복사하거나 붙여넣기를 할 수 있습니다.';
|
||||
$lang['js']['linkwiz'] = '링크 마법사';
|
||||
$lang['js']['linkto'] = '다음으로 연결:';
|
||||
$lang['js']['del_confirm'] = '정말로 선택된 항목(들)을 삭제하시겠습니까?';
|
||||
$lang['js']['mu_btn'] = '여러 파일들을 한번에 업로드합니다.';
|
||||
$lang['rssfailed'] = 'feed 가져오기 실패: ';
|
||||
$lang['nothingfound'] = '아무 것도 없습니다.';
|
||||
$lang['mediaselect'] = '미디어 파일 선택';
|
||||
|
@ -112,11 +143,7 @@ $lang['deletefail'] = '"%s" 파일을 삭제할 수 없습니다. -
|
|||
$lang['mediainuse'] = '"%s" 파일을 삭제할 수 없습니다. - 아직 사용 중입니다.';
|
||||
$lang['namespaces'] = '네임스페이스';
|
||||
$lang['mediafiles'] = '사용 가능한 파일 목록';
|
||||
$lang['js']['keepopen'] = '선택할 때 윈도우를 열어놓으시기 바랍니다.';
|
||||
$lang['js']['hidedetails'] = '자세한 정보 감추기';
|
||||
$lang['js']['nosmblinks'] = '윈도우 공유 파일과의 연결은 MS 인터넷 익스플로러에서만 동작합니다.
|
||||
그러나 링크를 복사하거나 붙여넣기를 할 수 있습니다.';
|
||||
$lang['js']['mu_btn'] = '여러 파일들을 한번에 업로드합니다.';
|
||||
$lang['accessdenied'] = '이 페이지를 볼 권한이 없습니다.';
|
||||
$lang['mediausage'] = '이 파일을 참조하려면 다음 문법을 사용하기 바랍니다:';
|
||||
$lang['mediaview'] = '원본 파일 보기';
|
||||
$lang['mediaroot'] = '루트(root)';
|
||||
|
@ -143,8 +170,10 @@ $lang['restored'] = '옛 버전 복구';
|
|||
$lang['external_edit'] = '외부 편집기';
|
||||
$lang['summary'] = '편집 요약';
|
||||
$lang['noflash'] = '이 컨텐츠를 표시하기 위해서 <a href="http://www.adobe.com/products/flashplayer/">Adobe Flash Plugin</a>이 필요합니다.';
|
||||
$lang['download'] = '조각 다운로드';
|
||||
$lang['mail_newpage'] = '페이지 추가:';
|
||||
$lang['mail_changed'] = '페이지 변경:';
|
||||
$lang['mail_subscribe_list'] = '네임스페이스에서 변경된 페이지:';
|
||||
$lang['mail_new_user'] = '새로운 사용자:';
|
||||
$lang['mail_upload'] = '파일 첨부:';
|
||||
$lang['qb_bold'] = '굵은 글';
|
||||
|
@ -157,6 +186,11 @@ $lang['qb_h2'] = '2단계 헤드라인';
|
|||
$lang['qb_h3'] = '3단계 헤드라인';
|
||||
$lang['qb_h4'] = '4단계 헤드라인';
|
||||
$lang['qb_h5'] = '5단계 헤드라인';
|
||||
$lang['qb_h'] = '표제';
|
||||
$lang['qb_hs'] = '표제 선택';
|
||||
$lang['qb_hplus'] = '상위 표제';
|
||||
$lang['qb_hminus'] = '하위 표제';
|
||||
$lang['qb_hequal'] = '동급 표제';
|
||||
$lang['qb_link'] = '내부 링크';
|
||||
$lang['qb_extlink'] = '외부 링크';
|
||||
$lang['qb_hr'] = '수평선';
|
||||
|
@ -166,7 +200,7 @@ $lang['qb_media'] = '이미지와 기타 파일 추가';
|
|||
$lang['qb_sig'] = '서명 추가';
|
||||
$lang['qb_smileys'] = '이모티콘';
|
||||
$lang['qb_chars'] = '특수문자';
|
||||
$lang['js']['del_confirm'] = '정말로 선택된 항목(들)을 삭제하시겠습니까?';
|
||||
$lang['upperns'] = '상위 네임스페이스로 이동';
|
||||
$lang['admin_register'] = '새로운 사용자 추가';
|
||||
$lang['metaedit'] = '메타 데이타를 편집합니다.';
|
||||
$lang['metasaveerr'] = '메타 데이타 쓰기가 실패했습니다.';
|
||||
|
@ -182,11 +216,16 @@ $lang['img_copyr'] = '저작권';
|
|||
$lang['img_format'] = '포맷';
|
||||
$lang['img_camera'] = '카메라';
|
||||
$lang['img_keywords'] = '키워드';
|
||||
$lang['subscribe_success'] = '%s를 추가했습니다. (%s의 구독 목록)';
|
||||
$lang['subscribe_error'] = '%s를 추가하는데 실패했습니다.(%s의 구독 목록)';
|
||||
$lang['subscribe_noaddress'] = '로그인 정보에 이메일 주소가 없습니다, 구독 목록에 추가할 수 없습니다.';
|
||||
$lang['unsubscribe_success'] = '%s를 제외시켰습니다. (%s의 구독 목록)';
|
||||
$lang['unsubscribe_error'] = '%s를 제외시키는데 실패했습니다.(%s의 구독 목록)';
|
||||
$lang['subscr_subscribe_noaddress'] = '등록된 주소가 없기 때문에 구독목록에 등록되지 않았습니다.';
|
||||
$lang['subscr_m_not_subscribed'] = '현재의 페이지나 네임스페이스에 구독등록이 되어있지 않습니다.';
|
||||
$lang['subscr_m_new_header'] = '구독 추가';
|
||||
$lang['subscr_m_current_header'] = '현재 구독중인 것들';
|
||||
$lang['subscr_m_unsubscribe'] = '구독 취소';
|
||||
$lang['subscr_m_subscribe'] = '구독';
|
||||
$lang['subscr_m_receive'] = '받기';
|
||||
$lang['subscr_style_every'] = '모든 변화를 이메일로 받기';
|
||||
$lang['subscr_style_digest'] = '각 페이지의 변화를 요약 (매 %.2f 일 마다)';
|
||||
$lang['subscr_style_list'] = '마지막 이메일 이후 변화된 페이지의 목록 (매 %.2f 일 마다)';
|
||||
$lang['authmodfailed'] = '잘못된 사용자 인증 설정입니다. 관리자에게 문의하기 바랍니다.';
|
||||
$lang['authtempfail'] = '사용자 인증이 일시적으로 불가능합니다. 만일 계속해서 문제가 발생하면 관리자에게 문의하기 바랍니다.';
|
||||
$lang['i_chooselang'] = '사용하는 언어를 선택합니다.';
|
||||
|
@ -213,6 +252,7 @@ $lang['i_pol0'] = '개방형 위키 (누구나 읽기/쓰기/업
|
|||
$lang['i_pol1'] = '공개형 위키 (누구나 읽을 수 있지만, 등록된 사용자만 쓰기/업로드가 가능합니다.)';
|
||||
$lang['i_pol2'] = '폐쇄형 위키 (등록된 사용자만 읽기/쓰기/업로드가 가능합니다.)';
|
||||
$lang['i_retry'] = '다시 시도';
|
||||
$lang['i_license'] = '내용의 배포를 위한 라이센스를 선택하세요.';
|
||||
$lang['mu_intro'] = '여러 파일을 한번에 업로드할 수 있습니다. 파일 목록에 추가하려면 "찾기" 버튼을 클릭합니다. 파일 목록 추가 작업이 끝나면 "업로드" 버튼을 클릭하기 바랍니다. ';
|
||||
$lang['mu_gridname'] = '파일명';
|
||||
$lang['mu_gridsize'] = '크기';
|
||||
|
@ -226,4 +266,14 @@ $lang['mu_fail'] = '업로드가 실패했습니다.';
|
|||
$lang['mu_authfail'] = '세션 기간이 종료되었습니다.';
|
||||
$lang['mu_progress'] = '@PCT@% 업로드되었습니다.';
|
||||
$lang['mu_filetypes'] = '허용된 파일타입';
|
||||
$lang['mu_info'] = '업로드 되었습니다.';
|
||||
$lang['mu_lasterr'] = '마지막 에러:';
|
||||
$lang['recent_global'] = '<b>%s</b> 네임스페이스를 구독중입니다. <a href="%s">전체위키 변경사항 </a>도 보실수 있습니다.';
|
||||
$lang['years'] = '%d 년 전';
|
||||
$lang['months'] = '%d 개월 전';
|
||||
$lang['weeks'] = '%d 주 전';
|
||||
$lang['days'] = '%d 일 전';
|
||||
$lang['hours'] = '%d 시간 전';
|
||||
$lang['minutes'] = '%d 분 전';
|
||||
$lang['seconds'] = '%d 초 전';
|
||||
$lang['wordblock'] = '스팸 문구를 포함하고 있어서 저장되지 않았습니다.';
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
====== 새 사용자 등록 ======
|
||||
|
||||
이 위키에 새 계정을 만들려면 아래의 모든 내용을 입력하십시오. **제대로 된 이메일 주소**를 사용하십시오. 그러나, 아래 내용을 입력했다고 해서 계정을 만들 수 있으리라고는 믿지 마십시오. 이곳은 내가 개인적으로 사용하는 곳이며, 계정을 만들어 주고 안주고는 내 마음입니다. 차라리, 내게 이메일을 보내서 신청하는 편이 더 나을 것입니다. 패스워드는 이 이메일로 보내집니다. 사용자명은 올바른 [[doku>pagename|pagename]] 이어야 합니다.
|
||||
이 위키에 새 계정을 만들려면 아래의 모든 내용을 입력하세요. **제대로 된 이메일 주소**를 사용하세요. 암호를 입력하는 곳이 없다면 암호는 이 이메일로 보내집니다. 사용자명은 올바른 [[doku>pagename|pagename]] 이어야 합니다.
|
||||
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue