diff --git a/sources/lib/plugins/captcha/.travis.yml b/sources/lib/plugins/captcha/.travis.yml new file mode 100755 index 0000000..321f554 --- /dev/null +++ b/sources/lib/plugins/captcha/.travis.yml @@ -0,0 +1,13 @@ +language: php +php: + - "7.0" + - "5.6" + - "5.5" + - "5.4" + - "5.3" +env: + - DOKUWIKI=master + - DOKUWIKI=stable +before_install: wget https://raw.github.com/splitbrain/dokuwiki-travis/master/travis.sh +install: sh travis.sh +script: cd _test && phpunit --stderr --group plugin_captcha diff --git a/sources/lib/plugins/captcha/README b/sources/lib/plugins/captcha/README new file mode 100755 index 0000000..237f135 --- /dev/null +++ b/sources/lib/plugins/captcha/README @@ -0,0 +1,25 @@ +captcha Plugin for DokuWiki + +All documentation for this plugin can be found at +http://www.dokuwiki.org/plugin:captcha + +If you install this plugin manually, make sure it is installed in +lib/plugins/captcha/ - if the folder is called different it +will not work! + +Please refer to http://www.dokuwiki.org/plugins for additional info +on how to install plugins in DokuWiki. + +---- +Copyright (C) Andreas Gohr + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; version 2 of the License + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +See the COPYING file in your DokuWiki folder for details diff --git a/sources/lib/plugins/captcha/_test/helper.test.php b/sources/lib/plugins/captcha/_test/helper.test.php new file mode 100644 index 0000000..b3e8d47 --- /dev/null +++ b/sources/lib/plugins/captcha/_test/helper.test.php @@ -0,0 +1,84 @@ +field_in; + } + public function get_field_sec() { + return $this->field_sec; + } + public function get_field_hp() { + return $this->field_hp; + } +} + +/** + * @group plugin_captcha + * @group plugins + */ +class helper_plugin_captcha_test extends DokuWikiTest { + + protected $pluginsEnabled = array('captcha'); + + public function testConfig() { + global $conf; + $conf['plugin']['captcha']['lettercount'] = 20; + + $helper = new helper_plugin_captcha_public(); + + // generateCAPTCHA generates a maximum of 16 chars + $code = $helper->_generateCAPTCHA("fixed", 0); + $this->assertEquals(16, strlen($code)); + } + + public function testDecrypt() { + + $helper = new helper_plugin_captcha_public(); + + $rand = "12345"; + $secret = $helper->encrypt($rand); + $this->assertNotSame(false, $secret); + $this->assertSame($rand, $helper->decrypt($secret)); + + $this->assertFalse($helper->decrypt('')); + $this->assertFalse($helper->decrypt('X')); + } + + public function testCheck() { + + global $INPUT, $ID; + + $helper = new helper_plugin_captcha_public(); + + $INPUT->set($helper->get_field_hp(), ''); + $INPUT->set($helper->get_field_in(), 'X'); + $INPUT->set($helper->get_field_sec(), ''); + + $this->assertFalse($helper->check(false)); + $INPUT->set($helper->get_field_sec(), 'X'); + $this->assertFalse($helper->check(false)); + + $rand = 0; + $code = $helper->_generateCAPTCHA($helper->_fixedIdent(), $rand); + $INPUT->set($helper->get_field_in(), $code); + $this->assertFalse($helper->check(false)); + $INPUT->set($helper->get_field_sec(), $helper->encrypt($rand)); + $this->assertTrue($helper->check(false)); + $ID = 'test:fail'; + $this->assertFalse($helper->check(false)); + } + + public function testGenerate() { + + $helper = new helper_plugin_captcha_public(); + + $rand = 0; + $code = $helper->_generateCAPTCHA($helper->_fixedIdent(), $rand); + $newcode = $helper->_generateCAPTCHA($helper->_fixedIdent().'X', $rand); + $this->assertNotEquals($newcode, $code); + $newcode = $helper->_generateCAPTCHA($helper->_fixedIdent(), $rand+0.1); + $this->assertNotEquals($newcode, $code); + } + +} diff --git a/sources/lib/plugins/captcha/action.php b/sources/lib/plugins/captcha/action.php new file mode 100755 index 0000000..6fdf2f2 --- /dev/null +++ b/sources/lib/plugins/captcha/action.php @@ -0,0 +1,199 @@ + + */ + +// must be run within Dokuwiki +if(!defined('DOKU_INC')) die(); +if(!defined('DOKU_PLUGIN')) define('DOKU_PLUGIN', DOKU_INC . 'lib/plugins/'); + +class action_plugin_captcha extends DokuWiki_Action_Plugin { + + /** + * register the eventhandlers + */ + public function register(Doku_Event_Handler $controller) { + // check CAPTCHA success + $controller->register_hook( + 'ACTION_ACT_PREPROCESS', + 'BEFORE', + $this, + 'handle_captcha_input', + array() + ); + + // inject in edit form + $controller->register_hook( + 'HTML_EDITFORM_OUTPUT', + 'BEFORE', + $this, + 'handle_form_output', + array() + ); + + // inject in user registration + $controller->register_hook( + 'HTML_REGISTERFORM_OUTPUT', + 'BEFORE', + $this, + 'handle_form_output', + array() + ); + + // inject in password reset + $controller->register_hook( + 'HTML_RESENDPWDFORM_OUTPUT', + 'BEFORE', + $this, + 'handle_form_output', + array() + ); + + if($this->getConf('loginprotect')) { + // inject in login form + $controller->register_hook( + 'HTML_LOGINFORM_OUTPUT', + 'BEFORE', + $this, + 'handle_form_output', + array() + ); + // check on login + $controller->register_hook( + 'AUTH_LOGIN_CHECK', + 'BEFORE', + $this, + 'handle_login', + array() + ); + } + } + + /** + * Check if the current mode should be handled by CAPTCHA + * + * Note: checking needs to be done when a form has been submitted, not when the form + * is shown for the first time. Except for the editing process this is not determined + * by $act alone but needs to inspect other input variables. + * + * @param string $act cleaned action mode + * @return bool + */ + protected function needs_checking($act) { + global $INPUT; + + switch($act) { + case 'save': + return true; + case 'register': + case 'resendpwd': + return $INPUT->bool('save'); + case 'login': + // we do not handle this here, but in handle_login() + default: + return false; + } + } + + /** + * Aborts the given mode + * + * Aborting depends on the mode. It might unset certain input parameters or simply switch + * the mode to something else (giving as return which needs to be passed back to the + * ACTION_ACT_PREPROCESS event) + * + * @param string $act cleaned action mode + * @return string the new mode to use + */ + protected function abort_action($act) { + global $INPUT; + + switch($act) { + case 'save': + return 'preview'; + case 'register': + case 'resendpwd': + $INPUT->post->set('save', false); + return $act; + case 'login': + // we do not handle this here, but in handle_login() + default: + return $act; + } + } + + /** + * Handles CAPTCHA check in login + * + * Logins happen very early in the DokuWiki lifecycle, so we have to intercept them + * in their own event. + * + * @param Doku_Event $event + * @param $param + */ + public function handle_login(Doku_Event $event, $param) { + global $INPUT; + if(!$this->getConf('loginprotect')) return; // no protection wanted + if(!$INPUT->bool('u')) return; // this login was not triggered by a form + + // we need to have $ID set for the captcha check + global $ID; + $ID = getID(); + + /** @var helper_plugin_captcha $helper */ + $helper = plugin_load('helper', 'captcha'); + if(!$helper->check()) { + $event->data['silent'] = true; // we have our own message + $event->result = false; // login fail + $event->preventDefault(); + $event->stopPropagation(); + } + } + + /** + * Intercept all actions and check for CAPTCHA first. + */ + public function handle_captcha_input(Doku_Event $event, $param) { + $act = act_clean($event->data); + if(!$this->needs_checking($act)) return; + + // do nothing if logged in user and no CAPTCHA required + if(!$this->getConf('forusers') && $_SERVER['REMOTE_USER']) { + return; + } + + // check captcha + /** @var helper_plugin_captcha $helper */ + $helper = plugin_load('helper', 'captcha'); + if(!$helper->check()) { + $event->data = $this->abort_action($act); + } + } + + /** + * Inject the CAPTCHA in a DokuForm + */ + public function handle_form_output(Doku_Event $event, $param) { + // get position of submit button + $pos = $event->data->findElementByAttribute('type', 'submit'); + if(!$pos) return; // no button -> source view mode + + // do nothing if logged in user and no CAPTCHA required + if(!$this->getConf('forusers') && $_SERVER['REMOTE_USER']) { + return; + } + + // get the CAPTCHA + /** @var helper_plugin_captcha $helper */ + $helper = plugin_load('helper', 'captcha'); + $out = $helper->getHTML(); + + // new wiki - insert after the submit button + $event->data->insertElement($pos + 1, $out); + } + +} + diff --git a/sources/lib/plugins/captcha/conf/default.php b/sources/lib/plugins/captcha/conf/default.php new file mode 100755 index 0000000..a46580b --- /dev/null +++ b/sources/lib/plugins/captcha/conf/default.php @@ -0,0 +1,15 @@ + + */ + +$conf['mode'] = 'js'; +$conf['forusers'] = 0; +$conf['loginprotect']= 0; +$conf['lettercount'] = 5; +$conf['width'] = 115; +$conf['height'] = 22; +$conf['question'] = 'What\'s the answer to life, the universe and everything?'; +$conf['answer'] = '42'; diff --git a/sources/lib/plugins/captcha/conf/metadata.php b/sources/lib/plugins/captcha/conf/metadata.php new file mode 100755 index 0000000..84ddfaf --- /dev/null +++ b/sources/lib/plugins/captcha/conf/metadata.php @@ -0,0 +1,15 @@ + + */ + +$meta['mode'] = array('multichoice', '_choices' => array('js', 'text', 'math', 'question', 'image', 'audio', 'figlet')); +$meta['forusers'] = array('onoff'); +$meta['loginprotect']= array('onoff'); +$meta['lettercount'] = array('numeric', '_min' => 3, '_max' => 16); +$meta['width'] = array('numeric', '_pattern' => '/[0-9]+/'); +$meta['height'] = array('numeric', '_pattern' => '/[0-9]+/'); +$meta['question'] = array('string'); +$meta['answer'] = array('string'); diff --git a/sources/lib/plugins/captcha/figlet.flf b/sources/lib/plugins/captcha/figlet.flf new file mode 100755 index 0000000..24284b8 --- /dev/null +++ b/sources/lib/plugins/captcha/figlet.flf @@ -0,0 +1,1097 @@ +flf2a$ 5 4 14 15 10 0 22415 96 +SmSlant by Glenn Chappell 6/93 - based on Small & Slant +Includes ISO Latin-1 +figlet release 2.1 -- 12 Aug 1994 +Permission is hereby given to modify this font, as long as the +modifier's name is placed on a comment line. + +Modified by Paul Burton 12/96 to include new parameter +supported by FIGlet and FIGWin. May also be slightly modified for better use +of new full-width/kern/smush alternatives, but default output is NOT changed. + + $@ + $ @ + $ @ + $ @ +$ @@ + __@ + / /@ + /_/ @ +(_) @ + @@ + _ _ @ +( | )@ +|/|/ @ +$ @ + @@ + ____ @ + __/ / /_@ + /_ . __/@ +/_ __/ @ + /_/_/ @@ + @ + _//@ + (_-<@ +/ __/@ +// @@ + _ __@ +(_)_/_/@ + _/_/_ @ +/_/ (_)@ + @@ + ____ @ + / __/___@ + > _/_ _/@ +|_____/ @ + @@ + _ @ +( )@ +|/ @ +$ @ + @@ + __@ + _/_/@ + / / @ +/ / @ +|_| @@ + _ @ + | |@ + / /@ + _/_/ @ +/_/ @@ + @ + _/|@ +> _<@ +|/ @ + @@ + __ @ + __/ /_@ +/_ __/@ + /_/ @ + @@ + @ + @ + _ @ +( )@ +|/ @@ + @ + ____@ +/___/@ + $ @ + @@ + @ + @ + _ @ +(_)@ + @@ + __@ + _/_/@ + _/_/ @ +/_/ @ + @@ + ___ @ + / _ \@ +/ // /@ +\___/ @ + @@ + ___@ + < /@ + / / @ +/_/ @ + @@ + ___ @ + |_ |@ + / __/ @ +/____/ @ + @@ + ____@ + |_ /@ + _/_ < @ +/____/ @ + @@ + ____@ + / / /@ +/_ _/@ + /_/ @ + @@ + ____@ + / __/@ + /__ \ @ +/____/ @ + @@ + ____@ + / __/@ +/ _ \ @ +\___/ @ + @@ + ____@ +/_ /@ + / / @ +/_/ @ + @@ + ___ @ + ( _ )@ +/ _ |@ +\___/ @ + @@ + ___ @ + / _ \@ + \_, /@ +/___/ @ + @@ + _ @ + (_)@ + _ @ +(_) @ + @@ + _ @ + (_)@ + _ @ +( ) @ +|/ @@ + __@ + / /@ +< < @ + \_\@ + @@ + @ + ____@ + /___/@ +/___/ @ + @@ +__ @ +\ \ @ + > >@ +/_/ @ + @@ + ___ @ +/__ \@ + /__/@ +(_) @ + @@ + _____ @ + / ___ \@ +/ / _ `/@ +\ \_,_/ @ + \___/ @@ + ___ @ + / _ |@ + / __ |@ +/_/ |_|@ + @@ + ___ @ + / _ )@ + / _ |@ +/____/ @ + @@ + _____@ + / ___/@ +/ /__ @ +\___/ @ + @@ + ___ @ + / _ \@ + / // /@ +/____/ @ + @@ + ____@ + / __/@ + / _/ @ +/___/ @ + @@ + ____@ + / __/@ + / _/ @ +/_/ @ + @@ + _____@ + / ___/@ +/ (_ / @ +\___/ @ + @@ + __ __@ + / // /@ + / _ / @ +/_//_/ @ + @@ + ____@ + / _/@ + _/ / @ +/___/ @ + @@ + __@ + __ / /@ +/ // / @ +\___/ @ + @@ + __ __@ + / //_/@ + / ,< @ +/_/|_| @ + @@ + __ @ + / / @ + / /__@ +/____/@ + @@ + __ ___@ + / |/ /@ + / /|_/ / @ +/_/ /_/ @ + @@ + _ __@ + / |/ /@ + / / @ +/_/|_/ @ + @@ + ____ @ + / __ \@ +/ /_/ /@ +\____/ @ + @@ + ___ @ + / _ \@ + / ___/@ +/_/ @ + @@ + ____ @ + / __ \@ +/ /_/ /@ +\___\_\@ + @@ + ___ @ + / _ \@ + / , _/@ +/_/|_| @ + @@ + ____@ + / __/@ + _\ \ @ +/___/ @ + @@ + ______@ +/_ __/@ + / / @ +/_/ @ + @@ + __ __@ + / / / /@ +/ /_/ / @ +\____/ @ + @@ + _ __@ + | | / /@ + | |/ / @ + |___/ @ + @@ + _ __@ + | | /| / /@ + | |/ |/ / @ + |__/|__/ @ + @@ + _ __@ + | |/_/@ + _> < @ +/_/|_| @ + @@ + __ __@ + \ \/ /@ + \ / @ + /_/ @ + @@ + ____@ + /_ /@ + / /_@ + /___/@ + @@ + ___@ + / _/@ + / / @ + / / @ +/__/ @@ +__ @ +\ \ @ + \ \ @ + \_\@ + @@ + ___@ + / /@ + / / @ + _/ / @ +/__/ @@ + //|@ +|/||@ + $ @ +$ @ + @@ + @ + @ + @ + ____@ +/___/@@ + _ @ +( )@ + V @ +$ @ + @@ + @ + ___ _@ +/ _ `/@ +\_,_/ @ + @@ + __ @ + / / @ + / _ \@ +/_.__/@ + @@ + @ + ____@ +/ __/@ +\__/ @ + @@ + __@ + ___/ /@ +/ _ / @ +\_,_/ @ + @@ + @ + ___ @ +/ -_)@ +\__/ @ + @@ + ___@ + / _/@ + / _/ @ +/_/ @ + @@ + @ + ___ _@ + / _ `/@ + \_, / @ +/___/ @@ + __ @ + / / @ + / _ \@ +/_//_/@ + @@ + _ @ + (_)@ + / / @ +/_/ @ + @@ + _ @ + (_)@ + / / @ + __/ / @ +|___/ @@ + __ @ + / /__@ + / '_/@ +/_/\_\ @ + @@ + __@ + / /@ + / / @ +/_/ @ + @@ + @ + __ _ @ + / ' \@ +/_/_/_/@ + @@ + @ + ___ @ + / _ \@ +/_//_/@ + @@ + @ + ___ @ +/ _ \@ +\___/@ + @@ + @ + ___ @ + / _ \@ + / .__/@ +/_/ @@ + @ + ___ _@ +/ _ `/@ +\_, / @ + /_/ @@ + @ + ____@ + / __/@ +/_/ @ + @@ + @ + ___@ + (_-<@ +/___/@ + @@ + __ @ + / /_@ +/ __/@ +\__/ @ + @@ + @ + __ __@ +/ // /@ +\_,_/ @ + @@ + @ + _ __@ +| |/ /@ +|___/ @ + @@ + @ + _ __@ +| |/|/ /@ +|__,__/ @ + @@ + @ + __ __@ + \ \ /@ +/_\_\ @ + @@ + @ + __ __@ + / // /@ + \_, / @ +/___/ @@ + @ + ___@ +/_ /@ +/__/@ + @@ + __@ + _/_/@ +_/ / @ +/ / @ +\_\ @@ + __@ + / /@ + / / @ + / / @ +/_/ @@ + __ @ + \ \ @ + / /_@ + _/_/ @ +/_/ @@ + /\//@ +//\/ @ + $ @ +$ @ + @@ + _ _ @ + (_)(_)@ + / - | @ +/_/|_| @ + @@ + _ _ @ + (_)_(_)@ +/ __ \ @ +\____/ @ + @@ + _ _ @ + (_) (_)@ +/ /_/ / @ +\____/ @ + @@ + _ _ @ + (_)(_)@ +/ _ `/ @ +\_,_/ @ + @@ + _ _ @ + (_)(_)@ +/ _ \ @ +\___/ @ + @@ + _ _ @ + (_)(_)@ +/ // / @ +\_,_/ @ + @@ + ____ @ + / _ )@ + / /< < @ + / //__/ @ +/_/ @@ +160 NO-BREAK SPACE + $@ + $ @ + $ @ + $ @ +$ @@ +161 INVERTED EXCLAMATION MARK + _ @ + (_)@ + / / @ +/_/ @ + @@ +162 CENT SIGN + @ + __//@ +/ __/@ +\ _/ @ +// @@ +163 POUND SIGN + __ @ + __/__|@ + /_ _/_ @ +(_,___/ @ + @@ +164 CURRENCY SIGN + /|_/|@ + | . / @ + /_ | @ +|/ |/ @ + @@ +165 YEN SIGN + ____@ + _| / /@ + /_ __/@ +/_ __/ @ + /_/ @@ +166 BROKEN BAR + __@ + / /@ + /_/ @ + / / @ +/_/ @@ +167 SECTION SIGN + __ @ + _/ _)@ + / | | @ + | |_/ @ +(__/ @@ +168 DIAERESIS + _ _ @ +(_) (_)@ + $ $ @ +$ $ @ + @@ +169 COPYRIGHT SIGN + ____ @ + / ___\ @ + / / _/ |@ +| |__/ / @ + \____/ @@ +170 FEMININE ORDINAL INDICATOR + ___ _@ + / _ `/@ + _\_,_/ @ +/____/ @ + @@ +171 LEFT-POINTING DOUBLE ANGLE QUOTATION MARK + ____@ + / / /@ +< < < @ + \_\_\@ + @@ +172 NOT SIGN + @ + ____@ +/_ /@ + /_/ @ + @@ +173 SOFT HYPHEN + @ + ___@ +/__/@ + $ @ + @@ +174 REGISTERED SIGN + ____ @ + / __ \ @ + / / -) |@ +| //\\ / @ + \____/ @@ +175 MACRON + ____@ +/___/@ + $ @ +$ @ + @@ +176 DEGREE SIGN + __ @ + /. |@ +|__/ @ + $ @ + @@ +177 PLUS-MINUS SIGN + __ @ + __/ /_@ + /_ __/@ + __/_/_ @ +/_____/ @@ +178 SUPERSCRIPT TWO + __ @ + |_ )@ +/__| @ + $ @ + @@ +179 SUPERSCRIPT THREE + ___@ + |_ /@ +/__) @ + $ @ + @@ +180 ACUTE ACCENT + __@ +/_/@ + $ @ +$ @ + @@ +181 MICRO SIGN + @ + __ __@ + / // /@ + / .,_/ @ +/_/ @@ +182 PILCROW SIGN + _____@ + / /@ +|_ / / @ +/_/_/ @ + @@ +183 MIDDLE DOT + @ + _ @ +(_)@ +$ @ + @@ +184 CEDILLA + @ + @ + @ + _ @ +/_)@@ +185 SUPERSCRIPT ONE + __@ + < /@ +/_/ @ +$ @ + @@ +186 MASCULINE ORDINAL INDICATOR + ___ @ + / _ \@ + _\___/@ +/____/ @ + @@ +187 RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK +____ @ +\ \ \ @ + > > >@ +/_/_/ @ + @@ +188 VULGAR FRACTION ONE QUARTER + __ __ @ + < /_/_/___@ +/_//_//_' /@ + /_/ /_/ @ + @@ +189 VULGAR FRACTION ONE HALF + __ __ @ + < /_/_/_ @ +/_//_/|_ )@ + /_/ /__| @ + @@ +190 VULGAR FRACTION THREE QUARTERS + ___ __ @ + |_ /_/_/___@ +/__)/_//_' /@ + /_/ /_/ @ + @@ +191 INVERTED QUESTION MARK + _ @ + _(_)@ +/ _/_@ +\___/@ + @@ +192 LATIN CAPITAL LETTER A WITH GRAVE + __ @ + _\_\@ + / - |@ +/_/|_|@ + @@ +193 LATIN CAPITAL LETTER A WITH ACUTE + __@ + _/_/@ + / - |@ +/_/|_|@ + @@ +194 LATIN CAPITAL LETTER A WITH CIRCUMFLEX + //|@ + _|/||@ + / - | @ +/_/|_| @ + @@ +195 LATIN CAPITAL LETTER A WITH TILDE + /\//@ + _//\/ @ + / - | @ +/_/|_| @ + @@ +196 LATIN CAPITAL LETTER A WITH DIAERESIS + _ _ @ + (_)(_)@ + / - | @ +/_/|_| @ + @@ +197 LATIN CAPITAL LETTER A WITH RING ABOVE + (())@ + / _ |@ + / __ |@ +/_/ |_|@ + @@ +198 LATIN CAPITAL LETTER AE + _______@ + / _ __/@ + / _ _/ @ +/_//___/ @ + @@ +199 LATIN CAPITAL LETTER C WITH CEDILLA + _____@ + / ___/@ +/ /__ @ +\___/ @ +/_) @@ +200 LATIN CAPITAL LETTER E WITH GRAVE + __ @ + \_\@ + / -<@ +/__< @ + @@ +201 LATIN CAPITAL LETTER E WITH ACUTE + __@ + _/_/@ + / -< @ +/__< @ + @@ +202 LATIN CAPITAL LETTER E WITH CIRCUMFLEX + //|@ + |/||@ + / -< @ +/__< @ + @@ +203 LATIN CAPITAL LETTER E WITH DIAERESIS + _ _ @ + (_)(_)@ + / -< @ +/__< @ + @@ +204 LATIN CAPITAL LETTER I WITH GRAVE + __ @ + _\_\ @ + /_ __/@ +/____/ @ + @@ +205 LATIN CAPITAL LETTER I WITH ACUTE + __@ + __/_/@ + /_ __/@ +/____/ @ + @@ +206 LATIN CAPITAL LETTER I WITH CIRCUMFLEX + //|@ + _|/||@ + /_ __/@ +/____/ @ + @@ +207 LATIN CAPITAL LETTER I WITH DIAERESIS + _ _ @ + (_)(_)@ + /_ __/ @ +/____/ @ + @@ +208 LATIN CAPITAL LETTER ETH + ____ @ + _/ __ \@ +/_ _// /@ +/_____/ @ + @@ +209 LATIN CAPITAL LETTER N WITH TILDE + /\//@ + __//\/ @ + / |/ / @ +/_/|__/ @ + @@ +210 LATIN CAPITAL LETTER O WITH GRAVE + __ @ + _\_\ @ +/ __ \@ +\____/@ + @@ +211 LATIN CAPITAL LETTER O WITH ACUTE + __@ + __/_/@ +/ __ \@ +\____/@ + @@ +212 LATIN CAPITAL LETTER O WITH CIRCUMFLEX + //|@ + _|/||@ +/ __ \@ +\____/@ + @@ +213 LATIN CAPITAL LETTER O WITH TILDE + /\//@ + _//\/ @ +/ __ \ @ +\____/ @ + @@ +214 LATIN CAPITAL LETTER O WITH DIAERESIS + _ _ @ + (_)_(_)@ +/ __ \ @ +\____/ @ + @@ +215 MULTIPLICATION SIGN + @ + /|/|@ + > < @ +|/|/ @ + @@ +216 LATIN CAPITAL LETTER O WITH STROKE + _____ @ + / _// \@ +/ //// /@ +\_//__/ @ + @@ +217 LATIN CAPITAL LETTER U WITH GRAVE + __ @ + __\_\ @ +/ /_/ /@ +\____/ @ + @@ +218 LATIN CAPITAL LETTER U WITH ACUTE + __@ + __ /_/@ +/ /_/ /@ +\____/ @ + @@ +219 LATIN CAPITAL LETTER U WITH CIRCUMFLEX + //|@ + __|/||@ +/ /_/ /@ +\____/ @ + @@ +220 LATIN CAPITAL LETTER U WITH DIAERESIS + _ _ @ + (_) (_)@ +/ /_/ / @ +\____/ @ + @@ +221 LATIN CAPITAL LETTER Y WITH ACUTE + __@ +__/_/@ +\ V /@ + /_/ @ + @@ +222 LATIN CAPITAL LETTER THORN + __ @ + / / @ + / -_)@ +/_/ @ + @@ +223 LATIN SMALL LETTER SHARP S + ____ @ + / _ )@ + / /< < @ + / //__/ @ +/_/ @@ +224 LATIN SMALL LETTER A WITH GRAVE + __ @ + _\_\_@ +/ _ `/@ +\_,_/ @ + @@ +225 LATIN SMALL LETTER A WITH ACUTE + __@ + __/_/@ +/ _ `/@ +\_,_/ @ + @@ +226 LATIN SMALL LETTER A WITH CIRCUMFLEX + //|@ + _|/||@ +/ _ `/@ +\_,_/ @ + @@ +227 LATIN SMALL LETTER A WITH TILDE + /\//@ + _//\/ @ +/ _ `/ @ +\_,_/ @ + @@ +228 LATIN SMALL LETTER A WITH DIAERESIS + _ _ @ + (_)(_)@ +/ _ `/ @ +\_,_/ @ + @@ +229 LATIN SMALL LETTER A WITH RING ABOVE + __ @ + _(())@ +/ _ `/@ +\_,_/ @ + @@ +230 LATIN SMALL LETTER AE + @ + ___ ___ @ +/ _ ` -_)@ +\_,____/ @ + @@ +231 LATIN SMALL LETTER C WITH CEDILLA + @ + ____@ +/ __/@ +\__/ @ +/_) @@ +232 LATIN SMALL LETTER E WITH GRAVE + __ @ + _\_\@ +/ -_)@ +\__/ @ + @@ +233 LATIN SMALL LETTER E WITH ACUTE + __@ + _/_/@ +/ -_)@ +\__/ @ + @@ +234 LATIN SMALL LETTER E WITH CIRCUMFLEX + //|@ + |/||@ +/ -_)@ +\__/ @ + @@ +235 LATIN SMALL LETTER E WITH DIAERESIS + _ _ @ +(_)(_)@ +/ -_) @ +\__/ @ + @@ +236 LATIN SMALL LETTER I WITH GRAVE + __ @ + \_\@ + / / @ +/_/ @ + @@ +237 LATIN SMALL LETTER I WITH ACUTE + __@ + /_/@ + / / @ +/_/ @ + @@ +238 LATIN SMALL LETTER I WITH CIRCUMFLEX + //|@ + |/||@ + / / @ +/_/ @ + @@ +239 LATIN SMALL LETTER I WITH DIAERESIS + _ _ @ +(_)_(_)@ + / / @ +/_/ @ + @@ +240 LATIN SMALL LETTER ETH + _||_@ + __ || @ +/ _` | @ +\___/ @ + @@ +241 LATIN SMALL LETTER N WITH TILDE + /\//@ + _//\/ @ + / _ \ @ +/_//_/ @ + @@ +242 LATIN SMALL LETTER O WITH GRAVE + __ @ + _\_\@ +/ _ \@ +\___/@ + @@ +243 LATIN SMALL LETTER O WITH ACUTE + __@ + _/_/@ +/ _ \@ +\___/@ + @@ +244 LATIN SMALL LETTER O WITH CIRCUMFLEX + //|@ + _|/||@ +/ _ \ @ +\___/ @ + @@ +245 LATIN SMALL LETTER O WITH TILDE + /\//@ + _//\/ @ +/ _ \ @ +\___/ @ + @@ +246 LATIN SMALL LETTER O WITH DIAERESIS + _ _ @ + (_)(_)@ +/ _ \ @ +\___/ @ + @@ +247 DIVISION SIGN + _ @ + _(_)@ +/___/@ +(_) @ + @@ +248 LATIN SMALL LETTER O WITH STROKE + @ + ___ @ +/ //\@ +\//_/@ + @@ +249 LATIN SMALL LETTER U WITH GRAVE + __ @ + __\_\@ +/ // /@ +\_,_/ @ + @@ +250 LATIN SMALL LETTER U WITH ACUTE + __@ + __/_/@ +/ // /@ +\_,_/ @ + @@ +251 LATIN SMALL LETTER U WITH CIRCUMFLEX + //|@ + _|/||@ +/ // /@ +\_,_/ @ + @@ +252 LATIN SMALL LETTER U WITH DIAERESIS + _ _ @ + (_)(_)@ +/ // / @ +\_,_/ @ + @@ +253 LATIN SMALL LETTER Y WITH ACUTE + __@ + __/_/@ + / // /@ + \_, / @ +/___/ @@ +254 LATIN SMALL LETTER THORN + __ @ + / / @ + / _ \@ + / .__/@ +/_/ @@ +255 LATIN SMALL LETTER Y WITH DIAERESIS + _ _ @ + (_)(_)@ + / // / @ + \_, / @ +/___/ @@ diff --git a/sources/lib/plugins/captcha/figlet.php b/sources/lib/plugins/captcha/figlet.php new file mode 100755 index 0000000..bd7692b --- /dev/null +++ b/sources/lib/plugins/captcha/figlet.php @@ -0,0 +1,169 @@ +loadFont("fonts/standard.flf")) { + * $phpFiglet->display("Hello World"); + * } else { + * trigger_error("Could not load font file"); + * } + * + */ + + +class phpFiglet +{ + + /* + * Internal variables + */ + + var $signature; + var $hardblank; + var $height; + var $baseline; + var $maxLenght; + var $oldLayout; + var $commentLines; + var $printDirection; + var $fullLayout; + var $codeTagCount; + var $fontFile; + + + /* + * Contructor + */ + + function phpFiglet() + { + + } + + + /* + * Load an flf font file. Return true on success, false on error. + */ + + function loadfont($fontfile) + { + $this->fontFile = @file($fontfile); + if (!$this->fontFile) return false; + + $hp = explode(" ", $this->fontFile[0]); // get header + + $this->signature = substr($hp[0], 0, strlen($hp[0]) -1); + $this->hardblank = substr($hp[0], strlen($hp[0]) -1, 1); + $this->height = $hp[1]; + $this->baseline = $hp[2]; + $this->maxLenght = $hp[3]; + $this->oldLayout = $hp[4]; + $this->commentLines = $hp[5] + 1; + $this->printDirection = $hp[6]; + $this->fullLayout = $hp[7]; + $this->codeTagCount = $hp[8]; + + unset($hp); + + if ($this->signature != "flf2a") { + return false; + } else { + return true; + } + } + + + /* + * Get a character as a string, or an array with one line + * for each font height. + */ + + function getCharacter($character, $asarray = false) + { + $asciValue = ord($character); + $start = $this->commentLines + ($asciValue - 32) * $this->height; + $data = ($asarray) ? array() : ""; + + for ($a = 0; $a < $this->height; $a++) + { + $tmp = $this->fontFile[$start + $a]; + $tmp = str_replace("@", "", $tmp); + //$tmp = trim($tmp); + $tmp = str_replace($this->hardblank, " ", $tmp); + + if ($asarray) { + $data[] = $tmp; + } else { + $data .= $tmp; + } + } + + return $data; + } + + + /* + * Returns a figletized line of characters. + */ + + function fetch($line) + { + $ret = ""; + + for ($i = 0; $i < (strlen($line)); $i++) + { + $data[] = $this->getCharacter($line[$i], true); + } + + @reset($data); + + for ($i = 0; $i < $this->height; $i++) + { + while (list($k, $v) = each($data)) + { + $ret .= str_replace("\n", "", $v[$i]); + } + reset($data); + $ret .= "\n"; + } + + return $ret; + } + + + /* + * Display (print) a figletized line of characters. + */ + + function display($line) + { + print $this->fetch($line); + } + +} +?> diff --git a/sources/lib/plugins/captcha/fonts/README b/sources/lib/plugins/captcha/fonts/README new file mode 100755 index 0000000..69edcbe --- /dev/null +++ b/sources/lib/plugins/captcha/fonts/README @@ -0,0 +1,8 @@ +All fonts placed in this directory will be used randomly for the image captcha. +The more and exotic fonts you use, the harder it will be to OCR. However you +should be aware that most fonts are very hard to read when used for small sizes. + +Provided fonts: + +VeraSe.ttf - Bitsream Vera, http://www-old.gnome.org/fonts/ +Rufscript010.ttf - Rufscript, http://openfontlibrary.org/en/font/rufscript diff --git a/sources/lib/plugins/captcha/fonts/Rufscript010.ttf b/sources/lib/plugins/captcha/fonts/Rufscript010.ttf new file mode 100755 index 0000000..887a449 Binary files /dev/null and b/sources/lib/plugins/captcha/fonts/Rufscript010.ttf differ diff --git a/sources/lib/plugins/captcha/fonts/VeraSe.ttf b/sources/lib/plugins/captcha/fonts/VeraSe.ttf new file mode 100755 index 0000000..4b4ecc6 Binary files /dev/null and b/sources/lib/plugins/captcha/fonts/VeraSe.ttf differ diff --git a/sources/lib/plugins/captcha/helper.php b/sources/lib/plugins/captcha/helper.php new file mode 100755 index 0000000..2b34a25 --- /dev/null +++ b/sources/lib/plugins/captcha/helper.php @@ -0,0 +1,342 @@ + + */ + +// must be run within Dokuwiki +if(!defined('DOKU_INC')) die(); +if(!defined('DOKU_PLUGIN')) define('DOKU_PLUGIN', DOKU_INC.'lib/plugins/'); + + +class helper_plugin_captcha extends DokuWiki_Plugin { + + protected $field_in = 'plugin__captcha'; + protected $field_sec = 'plugin__captcha_secret'; + protected $field_hp = 'plugin__captcha_honeypot'; + + /** + * Constructor. Initializes field names + */ + public function __construct() { + $this->field_in = md5($this->_fixedIdent().$this->field_in); + $this->field_sec = md5($this->_fixedIdent().$this->field_sec); + $this->field_hp = md5($this->_fixedIdent().$this->field_hp); + } + + /** + * Check if the CAPTCHA should be used. Always check this before using the methods below. + * + * @return bool true when the CAPTCHA should be used + */ + public function isEnabled() { + if(!$this->getConf('forusers') && $_SERVER['REMOTE_USER']) return false; + return true; + } + + /** + * Returns the HTML to display the CAPTCHA with the chosen method + */ + public function getHTML() { + global $ID; + + $rand = (float) (rand(0, 10000)) / 10000; + if($this->getConf('mode') == 'math') { + $code = $this->_generateMATH($this->_fixedIdent(), $rand); + $code = $code[0]; + $text = $this->getLang('fillmath'); + } elseif($this->getConf('mode') == 'question') { + $text = $this->getConf('question'); + } else { + $code = $this->_generateCAPTCHA($this->_fixedIdent(), $rand); + $text = $this->getLang('fillcaptcha'); + } + $secret = $this->encrypt($rand); + + $txtlen = $this->getConf('lettercount'); + + $out = ''; + $out .= '
'; + $out .= ''; + $out .= ' '; + + switch($this->getConf('mode')) { + case 'math': + case 'text': + $out .= $this->_obfuscateText($code); + break; + case 'js': + $out .= ''.$this->_obfuscateText($code).''; + break; + case 'image': + $out .= ' '; + break; + case 'audio': + $out .= ' '; + $out .= ''; + $out .= ''.$this->getLang('soundlink').''; + break; + case 'figlet': + require_once(dirname(__FILE__).'/figlet.php'); + $figlet = new phpFiglet(); + if($figlet->loadfont(dirname(__FILE__).'/figlet.flf')) { + $out .= '
';
+                    $out .= rtrim($figlet->fetch($code));
+                    $out .= '
'; + } else { + msg('Failed to load figlet.flf font file. CAPTCHA broken', -1); + } + break; + } + $out .= ' '; + + // add honeypot field + $out .= ''; + $out .= '
'; + return $out; + } + + /** + * Checks if the the CAPTCHA was solved correctly + * + * @param bool $msg when true, an error will be signalled through the msg() method + * @return bool true when the answer was correct, otherwise false + */ + public function check($msg = true) { + global $INPUT; + + $code = ''; + $field_sec = $INPUT->str($this->field_sec); + $field_in = $INPUT->str($this->field_in); + $field_hp = $INPUT->str($this->field_hp); + + // reconstruct captcha from provided $field_sec + $rand = $this->decrypt($field_sec); + + if($this->getConf('mode') == 'math') { + $code = $this->_generateMATH($this->_fixedIdent(), $rand); + $code = $code[1]; + } elseif($this->getConf('mode') == 'question') { + $code = $this->getConf('answer'); + } else { + $code = $this->_generateCAPTCHA($this->_fixedIdent(), $rand); + } + + // compare values + if(!$field_sec || + !$field_in || + $rand === false || + utf8_strtolower($field_in) != utf8_strtolower($code) || + trim($field_hp) !== '' + ) { + if($msg) msg($this->getLang('testfailed'), -1); + return false; + } + return true; + } + + /** + * Build a semi-secret fixed string identifying the current page and user + * + * This string is always the same for the current user when editing the same + * page revision, but only for one day. Editing a page before midnight and saving + * after midnight will result in a failed CAPTCHA once, but makes sure it can + * not be reused which is especially important for the registration form where the + * $ID usually won't change. + * + * @return string + */ + public function _fixedIdent() { + global $ID; + $lm = @filemtime(wikiFN($ID)); + $td = date('Y-m-d'); + return auth_browseruid(). + auth_cookiesalt(). + $ID.$lm.$td; + } + + /** + * Adds random space characters within the given text + * + * Keeps subsequent numbers without spaces (for math problem) + * + * @param $text + * @return string + */ + protected function _obfuscateText($text) { + $new = ''; + + $spaces = array( + "\r", + "\n", + "\r\n", + ' ', + "\xC2\xA0", // \u00A0 NO-BREAK SPACE + "\xE2\x80\x80", // \u2000 EN QUAD + "\xE2\x80\x81", // \u2001 EM QUAD + "\xE2\x80\x82", // \u2002 EN SPACE + // "\xE2\x80\x83", // \u2003 EM SPACE + "\xE2\x80\x84", // \u2004 THREE-PER-EM SPACE + "\xE2\x80\x85", // \u2005 FOUR-PER-EM SPACE + "\xE2\x80\x86", // \u2006 SIX-PER-EM SPACE + "\xE2\x80\x87", // \u2007 FIGURE SPACE + "\xE2\x80\x88", // \u2008 PUNCTUATION SPACE + "\xE2\x80\x89", // \u2009 THIN SPACE + "\xE2\x80\x8A", // \u200A HAIR SPACE + "\xE2\x80\xAF", // \u202F NARROW NO-BREAK SPACE + "\xE2\x81\x9F", // \u205F MEDIUM MATHEMATICAL SPACE + + "\xE1\xA0\x8E\r\n", // \u180E MONGOLIAN VOWEL SEPARATOR + "\xE2\x80\x8B\r\n", // \u200B ZERO WIDTH SPACE + "\xEF\xBB\xBF\r\n", // \uFEFF ZERO WIDTH NO-BREAK SPACE + ); + + $len = strlen($text); + for($i = 0; $i < $len - 1; $i++) { + $new .= $text{$i}; + + if(!is_numeric($text{$i + 1})) { + $new .= $spaces[array_rand($spaces)]; + } + } + $new .= $text{$len - 1}; + return $new; + } + + /** + * Generate some numbers from a known string and random number + * + * @param $fixed string the fixed part, any string + * @param $rand float some random number between 0 and 1 + * @return string + */ + protected function _generateNumbers($fixed, $rand) { + $fixed = hexdec(substr(md5($fixed), 5, 5)); // use part of the md5 to generate an int + $rand = $rand * 0xFFFFF; // bitmask from the random number + return md5($rand ^ $fixed); // combine both values + } + + /** + * Generates a random char string + * + * @param $fixed string the fixed part, any string + * @param $rand float some random number between 0 and 1 + * @return string + */ + public function _generateCAPTCHA($fixed, $rand) { + $numbers = $this->_generateNumbers($fixed, $rand); + + // now create the letters + $code = ''; + $lettercount = $this->getConf('lettercount') * 2; + if($lettercount > strlen($numbers)) $lettercount = strlen($numbers); + for($i = 0; $i < $lettercount; $i += 2) { + $code .= chr(floor(hexdec($numbers[$i].$numbers[$i + 1]) / 10) + 65); + } + + return $code; + } + + /** + * Create a mathematical task and its result + * + * @param $fixed string the fixed part, any string + * @param $rand float some random number between 0 and 1 + * @return array taks, result + */ + protected function _generateMATH($fixed, $rand) { + $numbers = $this->_generateNumbers($fixed, $rand); + + // first letter is the operator (+/-) + $op = (hexdec($numbers[0]) > 8) ? -1 : 1; + $num = array(hexdec($numbers[1].$numbers[2]), hexdec($numbers[3])); + + // we only want positive results + if(($op < 0) && ($num[0] < $num[1])) rsort($num); + + // prepare result and task text + $res = $num[0] + ($num[1] * $op); + $task = $num[0].(($op < 0) ? '-' : '+').$num[1].'=?'; + + return array($task, $res); + } + + /** + * Create a CAPTCHA image + * + * @param string $text the letters to display + */ + public function _imageCAPTCHA($text) { + $w = $this->getConf('width'); + $h = $this->getConf('height'); + + $fonts = glob(dirname(__FILE__).'/fonts/*.ttf'); + + // create a white image + $img = imagecreatetruecolor($w, $h); + $white = imagecolorallocate($img, 255, 255, 255); + imagefill($img, 0, 0, $white); + + // add some lines as background noise + for($i = 0; $i < 30; $i++) { + $color = imagecolorallocate($img, rand(100, 250), rand(100, 250), rand(100, 250)); + imageline($img, rand(0, $w), rand(0, $h), rand(0, $w), rand(0, $h), $color); + } + + // draw the letters + $txtlen = strlen($text); + for($i = 0; $i < $txtlen; $i++) { + $font = $fonts[array_rand($fonts)]; + $color = imagecolorallocate($img, rand(0, 100), rand(0, 100), rand(0, 100)); + $size = rand(floor($h / 1.8), floor($h * 0.7)); + $angle = rand(-35, 35); + + $x = ($w * 0.05) + $i * floor($w * 0.9 / $txtlen); + $cheight = $size + ($size * 0.5); + $y = floor($h / 2 + $cheight / 3.8); + + imagettftext($img, $size, $angle, $x, $y, $color, $font, $text[$i]); + } + + header("Content-type: image/png"); + imagepng($img); + imagedestroy($img); + } + + /** + * Encrypt the given string with the cookie salt + * + * @param string $data + * @return string + */ + public function encrypt($data) { + if(function_exists('auth_encrypt')) { + $data = auth_encrypt($data, auth_cookiesalt()); // since binky + } else { + $data = PMA_blowfish_encrypt($data, auth_cookiesalt()); // deprecated + } + + return base64_encode($data); + } + + /** + * Decrypt the given string with the cookie salt + * + * @param string $data + * @return string + */ + public function decrypt($data) { + $data = base64_decode($data); + if($data === false || $data === '') return false; + + if(function_exists('auth_decrypt')) { + return auth_decrypt($data, auth_cookiesalt()); // since binky + } else { + return PMA_blowfish_decrypt($data, auth_cookiesalt()); // deprecated + } + } +} diff --git a/sources/lib/plugins/captcha/img.php b/sources/lib/plugins/captcha/img.php new file mode 100755 index 0000000..e0efcb7 --- /dev/null +++ b/sources/lib/plugins/captcha/img.php @@ -0,0 +1,22 @@ + + */ + +if(!defined('DOKU_INC')) define('DOKU_INC', dirname(__FILE__).'/../../../'); +define('NOSESSION', true); +define('DOKU_DISABLE_GZIP_OUTPUT', 1); +require_once(DOKU_INC.'inc/init.php'); +require_once(DOKU_INC.'inc/auth.php'); + +$ID = $_REQUEST['id']; +/** @var helper_plugin_captcha $plugin */ +$plugin = plugin_load('helper', 'captcha'); +$rand = $plugin->decrypt($_REQUEST['secret']); +$code = $plugin->_generateCAPTCHA($plugin->_fixedIdent(), $rand); +$plugin->_imageCAPTCHA($code); + +//Setup VIM: ex: et ts=4 enc=utf-8 : diff --git a/sources/lib/plugins/captcha/lang/ar/lang.php b/sources/lib/plugins/captcha/lang/ar/lang.php new file mode 100755 index 0000000..54984c6 --- /dev/null +++ b/sources/lib/plugins/captcha/lang/ar/lang.php @@ -0,0 +1,12 @@ + + */ +$lang['testfailed'] = 'عذراً، لكن لم يكن الرد على كلمة التحقق بشكل صحيح.'; +$lang['fillcaptcha'] = 'الرجاء تعبئة كافة الأحرف في المربع.'; +$lang['fillmath'] = 'الرجاء حل المعادلة التالية.'; +$lang['soundlink'] = 'إذا كنت لا تستطيع قراءة الحروف على الصورة، تحميل ملف الصوت يساعدك على قراءة الأحرف.'; +$lang['honeypot'] = 'الرجاء الحفاظ على هذا الحقل فارغاً:'; diff --git a/sources/lib/plugins/captcha/lang/ar/settings.php b/sources/lib/plugins/captcha/lang/ar/settings.php new file mode 100755 index 0000000..d5fbea1 --- /dev/null +++ b/sources/lib/plugins/captcha/lang/ar/settings.php @@ -0,0 +1,23 @@ + + * @author habiiibo + */ +$lang['mode'] = 'أي نوع من كلمة التحقق استخدامها؟'; +$lang['mode_o_js'] = 'نص (مملوءة مسبقا مع جافا سكريبت)'; +$lang['mode_o_text'] = 'النص (دليل فقط)'; +$lang['mode_o_math'] = 'مشكلة الرياضيات'; +$lang['mode_o_question'] = 'مسألة ثابتة'; +$lang['mode_o_image'] = 'الصورة (أسوأ إمكانية الوصول)'; +$lang['mode_o_audio'] = 'الصورة + الصوت (أفضل إمكانية الوصول)'; +$lang['mode_o_figlet'] = 'برنامج صنع الكلمات (تعذر الوصول)'; +$lang['forusers'] = 'استخدام كلمة التحقق في تسجيل المستخدمين، أيضا؟'; +$lang['loginprotect'] = 'لا بد من ادخال كود التحقق او كابتشا لمتابعة تسجيل الدخول؟'; +$lang['lettercount'] = 'عدد من الرسائل لاستخدام (3-16). إذا قمت بزيادة كمية، ومن المؤكد أن زيادة العرض في الصورة أدناه كذلك.'; +$lang['width'] = 'عرض الصورة كلمة التحقق (بالبكسل)'; +$lang['height'] = 'ارتفاع الصورة كلمة التحقق (بالبكسل)'; +$lang['question'] = 'سؤال لوضع مسألة ثابتة'; +$lang['answer'] = 'جواب المسألة الثابتة'; diff --git a/sources/lib/plugins/captcha/lang/cs/lang.php b/sources/lib/plugins/captcha/lang/cs/lang.php new file mode 100755 index 0000000..e03223f --- /dev/null +++ b/sources/lib/plugins/captcha/lang/cs/lang.php @@ -0,0 +1,13 @@ + + * @author Jaroslav Lichtblau + */ +$lang['testfailed'] = 'Bohužel, ale na CAPTCHA nebylo odpovězeno správně. Jste vůbec člověk?'; +$lang['fillcaptcha'] = 'Vyplňte, prosím, všechna písmena v poli, abyste dokázali, že nejste robot.'; +$lang['fillmath'] = 'Prosíme, vyřešte nasledující rovnici, abyste dokázali, že nejste robot.'; +$lang['soundlink'] = 'Pokud nedokážete přečíst písmena na obrázku, stáhněte si tento .wav soubor, kde je text přečtený.'; +$lang['honeypot'] = 'Ponechte prosím toto pole prázdné:'; diff --git a/sources/lib/plugins/captcha/lang/cs/settings.php b/sources/lib/plugins/captcha/lang/cs/settings.php new file mode 100755 index 0000000..5167538 --- /dev/null +++ b/sources/lib/plugins/captcha/lang/cs/settings.php @@ -0,0 +1,23 @@ + + * @author Jaroslav Lichtblau + */ +$lang['mode'] = 'Který typ CAPTCHA se má použít?'; +$lang['mode_o_js'] = 'Text (předvyplněný JavaScriptem)'; +$lang['mode_o_text'] = 'Text (pouze manuálně vložený)'; +$lang['mode_o_math'] = 'Matematický problém'; +$lang['mode_o_question'] = 'Vlastní otázka'; +$lang['mode_o_image'] = 'Obrázek (špatná přístupnost)'; +$lang['mode_o_audio'] = 'Obrázek (lepší přístupnost)'; +$lang['mode_o_figlet'] = 'ASCII art figlet (špatná přístupnost) '; +$lang['forusers'] = 'Používat CAPTCHA i pro registrované uživatele?'; +$lang['loginprotect'] = 'Vyžadovat pro přihlášení CAPTCHA?'; +$lang['lettercount'] = 'Počet použitých písmen (3-16). Pokud navýšíte množství, ujistěte se, že jste navýšili i šířku obrázku níže.'; +$lang['width'] = 'Šírka CAPTCHA obrázku (v bodech)'; +$lang['height'] = 'Výška CAPTCHA obrázku (v bodech)'; +$lang['question'] = 'Otázka pro režim vlastní otázky'; +$lang['answer'] = 'Odpověď pro režim vlastní otázky'; diff --git a/sources/lib/plugins/captcha/lang/cy/lang.php b/sources/lib/plugins/captcha/lang/cy/lang.php new file mode 100644 index 0000000..42e3d51 --- /dev/null +++ b/sources/lib/plugins/captcha/lang/cy/lang.php @@ -0,0 +1,12 @@ + + */ +$lang['testfailed'] = 'Sori, ond wnaethoch chi ddim ateb y CAPTCHA\'n gywir. Efallai \'dych chi ddim yn ddynol wedi\'r cyfan?'; +$lang['fillcaptcha'] = 'Llenwch pob llythyren i\'r blwch i brofi\'ch bod chi\'n ddynol.'; +$lang['fillmath'] = 'Datryswch yr hafaliad canlynol i brofi\'ch bod chi\'n ddynol.'; +$lang['soundlink'] = 'Os \'dych chi ddim yn gallu darllen llythrennau\'r ddelwedd, lawrlwythwch y ffeil .wav hwn er mwyn cael nhw wedi\'u darllen i chi.'; +$lang['honeypot'] = 'Cadwch y maes hwn yn wag:'; diff --git a/sources/lib/plugins/captcha/lang/cy/settings.php b/sources/lib/plugins/captcha/lang/cy/settings.php new file mode 100644 index 0000000..2e0a0b7 --- /dev/null +++ b/sources/lib/plugins/captcha/lang/cy/settings.php @@ -0,0 +1,22 @@ + + */ +$lang['mode'] = 'Pa fath CAPTCHA i\'w ddefnyddio?'; +$lang['mode_o_js'] = 'Testun (wedi\'i rhaglenwi gan JavaScript)'; +$lang['mode_o_text'] = 'Testun (gan law yn unig)'; +$lang['mode_o_math'] = 'Problem fathemategol'; +$lang['mode_o_question'] = 'Cwestiwn gosodedig'; +$lang['mode_o_image'] = 'Delwedd (hygyrchedd gwael)'; +$lang['mode_o_audio'] = 'Delwedd+Sain (gwell hygyrchedd)'; +$lang['mode_o_figlet'] = 'Celf Figlet ASCII (hygyrchedd gwael)'; +$lang['forusers'] = 'Defnyddio CAPTCHA ar gyfer defnyddwyr sydd wedi mewngofnodi hefyd?'; +$lang['loginprotect'] = 'Angen CAPTCHA i fewngofnodi?'; +$lang['lettercount'] = 'Bufer y llythrennau i\'w defnyddio (3-16). Os ydych chi\'n cynnyddu\'r nifer, sicrhewch eich bod chi\'n cynyddu lled y ddelwedd isod hefyd.'; +$lang['width'] = 'Lled y ddelwedd CAPTCHA (picsel)'; +$lang['height'] = 'Uchder y ddelwedd CAPTCHA (picsel)'; +$lang['question'] = 'Cwestiwn ar gyfer modd cwestiwn gosodedig'; +$lang['answer'] = 'Ateb ar gyfer modd cwestiwn gosodedig'; diff --git a/sources/lib/plugins/captcha/lang/da/lang.php b/sources/lib/plugins/captcha/lang/da/lang.php new file mode 100755 index 0000000..bed7a73 --- /dev/null +++ b/sources/lib/plugins/captcha/lang/da/lang.php @@ -0,0 +1,12 @@ + + */ +$lang['testfailed'] = 'Desværre, CAPTCHA blev ikke besvaret korrekt. Du er muligvis ikke et menneske?'; +$lang['fillcaptcha'] = 'Skriv venligst alle bogstaverne i boksen for at bevise at du er et menneske.'; +$lang['fillmath'] = 'Løs venligst følgende ligning for at bevise at du er et menneske.'; +$lang['soundlink'] = 'Hvis du ikke kan læse bogstaverne på skærmen, kan du downloade denne .wav-fil, for at få dem læst op.'; +$lang['honeypot'] = 'Hold venligst dette felt tomt:'; diff --git a/sources/lib/plugins/captcha/lang/da/settings.php b/sources/lib/plugins/captcha/lang/da/settings.php new file mode 100755 index 0000000..36f6276 --- /dev/null +++ b/sources/lib/plugins/captcha/lang/da/settings.php @@ -0,0 +1,23 @@ + + * @author Jacob Palm + */ +$lang['mode'] = 'Hvilken type CAPTCHA skal benyttes?'; +$lang['mode_o_js'] = 'Tekst (præudfyldt af JavaScript)'; +$lang['mode_o_text'] = 'Tekst (kun manuelt)'; +$lang['mode_o_math'] = 'Matematikproblem'; +$lang['mode_o_question'] = 'Løsning'; +$lang['mode_o_image'] = 'Billede (dårlig tilgængelighed)'; +$lang['mode_o_audio'] = 'Billede+Audio (bedre tilgængelighed)'; +$lang['mode_o_figlet'] = 'Figlet ASCII Art (dårlig tilgængelighed)'; +$lang['forusers'] = 'Benyt også CAPTCHA til brugere der er logget ind?'; +$lang['loginprotect'] = 'Kræv CAPTCHA ved login?'; +$lang['lettercount'] = 'Antal af bogstaver der skal benyttes (3-16). Hvis du øger antallet, skal du også huske at øge bredden af billedet herunder.'; +$lang['width'] = 'Bredden af CAPTCHA-billedet (pixel)'; +$lang['height'] = 'Højden af CAPTCHA-billedet (pixel)'; +$lang['question'] = 'Spørgsmål til fast-spørgsmål-tilstand'; +$lang['answer'] = 'Svar til fast-spørgsmål-tilstand'; diff --git a/sources/lib/plugins/captcha/lang/de-informal/lang.php b/sources/lib/plugins/captcha/lang/de-informal/lang.php new file mode 100755 index 0000000..867031e --- /dev/null +++ b/sources/lib/plugins/captcha/lang/de-informal/lang.php @@ -0,0 +1,12 @@ + + */ +$lang['testfailed'] = 'Das CAPTCHA wurde nicht korrekt beantwortet.'; +$lang['fillcaptcha'] = 'Bitte übertrage die Buchstaben in das Eingabefeld.'; +$lang['fillmath'] = 'Bitte löse folgende Gleichung:'; +$lang['soundlink'] = 'Wenn Du die Buchstaben auf dem Bild nicht lesen kannst, lade diese .wav Datei herunter, um sie vorgelesen zu bekommen.'; +$lang['honeypot'] = 'Dieses Feld bitte leer lassen'; diff --git a/sources/lib/plugins/captcha/lang/de-informal/settings.php b/sources/lib/plugins/captcha/lang/de-informal/settings.php new file mode 100755 index 0000000..28a2004 --- /dev/null +++ b/sources/lib/plugins/captcha/lang/de-informal/settings.php @@ -0,0 +1,23 @@ + + * @author Dana + */ +$lang['mode'] = 'Welcher CAPTCHA-Typ soll benutzt werden?'; +$lang['mode_o_js'] = 'Text (automatisch ausgefüllt via JavaScript)'; +$lang['mode_o_text'] = 'Text (manuell auszufüllen)'; +$lang['mode_o_math'] = 'Mathe-Aufgabe'; +$lang['mode_o_question'] = 'Feste Frage'; +$lang['mode_o_image'] = 'Bild (nicht barrierefrei)'; +$lang['mode_o_audio'] = 'Bild+Audio (barrierefrei)'; +$lang['mode_o_figlet'] = 'Figlet ASCII-Kunst (nicht barrierefrei)'; +$lang['forusers'] = 'CAPTCHA auch für angemeldete Benutzer verwenden?'; +$lang['loginprotect'] = 'Vorraussetzen eines CAPTCHA zum Einloggen?'; +$lang['lettercount'] = 'Anzahl der zu verwendenen Buchstaben (3-16). Wenn Du die Anzahl erhöhst, denke daran auch die Breite des Bildes im nächsten Feld zu erhöhen.'; +$lang['width'] = 'Breite des CAPTCHA Bildes (in Pixel)'; +$lang['height'] = 'Höhe des CAPTCHA Bildes (in Pixel)'; +$lang['question'] = 'Frage für den "Feste Frage" Modus.'; +$lang['answer'] = 'Antwort für den "Feste Frage" Modus.'; diff --git a/sources/lib/plugins/captcha/lang/de/lang.php b/sources/lib/plugins/captcha/lang/de/lang.php new file mode 100755 index 0000000..ac6fa4a --- /dev/null +++ b/sources/lib/plugins/captcha/lang/de/lang.php @@ -0,0 +1,12 @@ + + */ +$lang['testfailed'] = 'Das CAPTCHA wurde nicht korrekt beantwortet.'; +$lang['fillcaptcha'] = 'Bitte übertragen Sie die Buchstaben in das Eingabefeld.'; +$lang['fillmath'] = 'Bitte lösen Sie folgende Gleichung:'; +$lang['soundlink'] = 'Wenn Sie die Buchstaben auf dem Bild nicht lesen können, laden Sie diese .wav Datei herunter, um sie vorgelesen zu bekommen.'; +$lang['honeypot'] = 'Dieses Feld bitte leer lassen'; diff --git a/sources/lib/plugins/captcha/lang/de/settings.php b/sources/lib/plugins/captcha/lang/de/settings.php new file mode 100755 index 0000000..549a53d --- /dev/null +++ b/sources/lib/plugins/captcha/lang/de/settings.php @@ -0,0 +1,24 @@ + + * @author Thomas Templin + * @author Leo Rudin + */ +$lang['mode'] = 'Welcher CAPTCHA-Typ soll benutzt werden?'; +$lang['mode_o_js'] = 'Text (automatisch ausgefüllt via JavaScript)'; +$lang['mode_o_text'] = 'Text (manuell auszufüllen)'; +$lang['mode_o_math'] = 'Mathe-Aufgabe'; +$lang['mode_o_question'] = 'Feste Frage'; +$lang['mode_o_image'] = 'Bild (nicht barrierefrei)'; +$lang['mode_o_audio'] = 'Bild+Audio (barrierefrei)'; +$lang['mode_o_figlet'] = 'Figlet ASCII-Kunst (nicht barrierefrei)'; +$lang['forusers'] = 'Soll das CAPTCHA auch für eingeloggte Benutzer gebraucht werden?'; +$lang['loginprotect'] = 'Benötigt es ein CAPTCHA um sich einzuloggen?'; +$lang['lettercount'] = 'Anzahl der zu verwendenen Buchstaben (3-16). Wenn Sie die Anzahl erhöhen, denken Sie daran auch die Breite des Bildes im nächsten Feld zu erhöhen.'; +$lang['width'] = 'Weite des CAPTCHA Bildes (pixel)'; +$lang['height'] = 'Höhe des CAPTCHA Bildes (pixel)'; +$lang['question'] = 'Frage für den "Feste Frage" Modus.'; +$lang['answer'] = 'Antwort für den "Feste Frage" Modus.'; diff --git a/sources/lib/plugins/captcha/lang/en/audio/LICENSE b/sources/lib/plugins/captcha/lang/en/audio/LICENSE new file mode 100755 index 0000000..e97f8cc --- /dev/null +++ b/sources/lib/plugins/captcha/lang/en/audio/LICENSE @@ -0,0 +1,4 @@ +This work is licensed under the Creative Commons Sampling Plus 1.0 License. To +view a copy of this license, visit +http://creativecommons.org/licenses/sampling+/1.0/ or send a letter to Creative +Commons, 543 Howard Street, 5th Floor, San Francisco, California, 94105, USA. diff --git a/sources/lib/plugins/captcha/lang/en/audio/README b/sources/lib/plugins/captcha/lang/en/audio/README new file mode 100755 index 0000000..979c5f0 --- /dev/null +++ b/sources/lib/plugins/captcha/lang/en/audio/README @@ -0,0 +1,13 @@ +Author: Michael Klier +Link: http://www.chimeric.de/projects/npa +Voice: Christian Spellenberg + +These samples represent the NATO phonetical alphabet. They are protected +by the Creative Commons Sampling Plus 1.0 License. You are free to use +and redistribute these samples under the conditions defined by the +license. For further information read the LICENSE file and visit +http://www.creativecommons.org. + +Note: The original high quality wave files were downsampled and converted + to 8-Bit mono files for distribution with the CAPTCHA plugin. Visit + the link above for the original files. diff --git a/sources/lib/plugins/captcha/lang/en/audio/a.wav b/sources/lib/plugins/captcha/lang/en/audio/a.wav new file mode 100755 index 0000000..e7505ca Binary files /dev/null and b/sources/lib/plugins/captcha/lang/en/audio/a.wav differ diff --git a/sources/lib/plugins/captcha/lang/en/audio/b.wav b/sources/lib/plugins/captcha/lang/en/audio/b.wav new file mode 100755 index 0000000..eb9fffa Binary files /dev/null and b/sources/lib/plugins/captcha/lang/en/audio/b.wav differ diff --git a/sources/lib/plugins/captcha/lang/en/audio/c.wav b/sources/lib/plugins/captcha/lang/en/audio/c.wav new file mode 100755 index 0000000..117fc93 Binary files /dev/null and b/sources/lib/plugins/captcha/lang/en/audio/c.wav differ diff --git a/sources/lib/plugins/captcha/lang/en/audio/d.wav b/sources/lib/plugins/captcha/lang/en/audio/d.wav new file mode 100755 index 0000000..9a1ea52 Binary files /dev/null and b/sources/lib/plugins/captcha/lang/en/audio/d.wav differ diff --git a/sources/lib/plugins/captcha/lang/en/audio/e.wav b/sources/lib/plugins/captcha/lang/en/audio/e.wav new file mode 100755 index 0000000..0770161 Binary files /dev/null and b/sources/lib/plugins/captcha/lang/en/audio/e.wav differ diff --git a/sources/lib/plugins/captcha/lang/en/audio/f.wav b/sources/lib/plugins/captcha/lang/en/audio/f.wav new file mode 100755 index 0000000..dc4ff2b Binary files /dev/null and b/sources/lib/plugins/captcha/lang/en/audio/f.wav differ diff --git a/sources/lib/plugins/captcha/lang/en/audio/g.wav b/sources/lib/plugins/captcha/lang/en/audio/g.wav new file mode 100755 index 0000000..df4d6d4 Binary files /dev/null and b/sources/lib/plugins/captcha/lang/en/audio/g.wav differ diff --git a/sources/lib/plugins/captcha/lang/en/audio/h.wav b/sources/lib/plugins/captcha/lang/en/audio/h.wav new file mode 100755 index 0000000..50365bb Binary files /dev/null and b/sources/lib/plugins/captcha/lang/en/audio/h.wav differ diff --git a/sources/lib/plugins/captcha/lang/en/audio/i.wav b/sources/lib/plugins/captcha/lang/en/audio/i.wav new file mode 100755 index 0000000..bb1875a Binary files /dev/null and b/sources/lib/plugins/captcha/lang/en/audio/i.wav differ diff --git a/sources/lib/plugins/captcha/lang/en/audio/j.wav b/sources/lib/plugins/captcha/lang/en/audio/j.wav new file mode 100755 index 0000000..56a9535 Binary files /dev/null and b/sources/lib/plugins/captcha/lang/en/audio/j.wav differ diff --git a/sources/lib/plugins/captcha/lang/en/audio/k.wav b/sources/lib/plugins/captcha/lang/en/audio/k.wav new file mode 100755 index 0000000..28e0fd9 Binary files /dev/null and b/sources/lib/plugins/captcha/lang/en/audio/k.wav differ diff --git a/sources/lib/plugins/captcha/lang/en/audio/l.wav b/sources/lib/plugins/captcha/lang/en/audio/l.wav new file mode 100755 index 0000000..a56a314 Binary files /dev/null and b/sources/lib/plugins/captcha/lang/en/audio/l.wav differ diff --git a/sources/lib/plugins/captcha/lang/en/audio/m.wav b/sources/lib/plugins/captcha/lang/en/audio/m.wav new file mode 100755 index 0000000..d081c81 Binary files /dev/null and b/sources/lib/plugins/captcha/lang/en/audio/m.wav differ diff --git a/sources/lib/plugins/captcha/lang/en/audio/n.wav b/sources/lib/plugins/captcha/lang/en/audio/n.wav new file mode 100755 index 0000000..bd4304d Binary files /dev/null and b/sources/lib/plugins/captcha/lang/en/audio/n.wav differ diff --git a/sources/lib/plugins/captcha/lang/en/audio/o.wav b/sources/lib/plugins/captcha/lang/en/audio/o.wav new file mode 100755 index 0000000..02ffa9b Binary files /dev/null and b/sources/lib/plugins/captcha/lang/en/audio/o.wav differ diff --git a/sources/lib/plugins/captcha/lang/en/audio/p.wav b/sources/lib/plugins/captcha/lang/en/audio/p.wav new file mode 100755 index 0000000..1863235 Binary files /dev/null and b/sources/lib/plugins/captcha/lang/en/audio/p.wav differ diff --git a/sources/lib/plugins/captcha/lang/en/audio/q.wav b/sources/lib/plugins/captcha/lang/en/audio/q.wav new file mode 100755 index 0000000..24fc9c0 Binary files /dev/null and b/sources/lib/plugins/captcha/lang/en/audio/q.wav differ diff --git a/sources/lib/plugins/captcha/lang/en/audio/r.wav b/sources/lib/plugins/captcha/lang/en/audio/r.wav new file mode 100755 index 0000000..8f55782 Binary files /dev/null and b/sources/lib/plugins/captcha/lang/en/audio/r.wav differ diff --git a/sources/lib/plugins/captcha/lang/en/audio/s.wav b/sources/lib/plugins/captcha/lang/en/audio/s.wav new file mode 100755 index 0000000..c92e5ba Binary files /dev/null and b/sources/lib/plugins/captcha/lang/en/audio/s.wav differ diff --git a/sources/lib/plugins/captcha/lang/en/audio/t.wav b/sources/lib/plugins/captcha/lang/en/audio/t.wav new file mode 100755 index 0000000..4fc1955 Binary files /dev/null and b/sources/lib/plugins/captcha/lang/en/audio/t.wav differ diff --git a/sources/lib/plugins/captcha/lang/en/audio/u.wav b/sources/lib/plugins/captcha/lang/en/audio/u.wav new file mode 100755 index 0000000..cc142fd Binary files /dev/null and b/sources/lib/plugins/captcha/lang/en/audio/u.wav differ diff --git a/sources/lib/plugins/captcha/lang/en/audio/v.wav b/sources/lib/plugins/captcha/lang/en/audio/v.wav new file mode 100755 index 0000000..246553d Binary files /dev/null and b/sources/lib/plugins/captcha/lang/en/audio/v.wav differ diff --git a/sources/lib/plugins/captcha/lang/en/audio/w.wav b/sources/lib/plugins/captcha/lang/en/audio/w.wav new file mode 100755 index 0000000..b0d7659 Binary files /dev/null and b/sources/lib/plugins/captcha/lang/en/audio/w.wav differ diff --git a/sources/lib/plugins/captcha/lang/en/audio/x.wav b/sources/lib/plugins/captcha/lang/en/audio/x.wav new file mode 100755 index 0000000..726fedc Binary files /dev/null and b/sources/lib/plugins/captcha/lang/en/audio/x.wav differ diff --git a/sources/lib/plugins/captcha/lang/en/audio/y.wav b/sources/lib/plugins/captcha/lang/en/audio/y.wav new file mode 100755 index 0000000..4edf31f Binary files /dev/null and b/sources/lib/plugins/captcha/lang/en/audio/y.wav differ diff --git a/sources/lib/plugins/captcha/lang/en/audio/z.wav b/sources/lib/plugins/captcha/lang/en/audio/z.wav new file mode 100755 index 0000000..f329629 Binary files /dev/null and b/sources/lib/plugins/captcha/lang/en/audio/z.wav differ diff --git a/sources/lib/plugins/captcha/lang/en/lang.php b/sources/lib/plugins/captcha/lang/en/lang.php new file mode 100755 index 0000000..7163928 --- /dev/null +++ b/sources/lib/plugins/captcha/lang/en/lang.php @@ -0,0 +1,12 @@ + + */ + +$lang['testfailed'] = "Sorry, but the CAPTCHA wasn't answered correctly. Maybe you're not human at all?"; +$lang['fillcaptcha'] = "Please fill all the letters into the box to prove you're human."; +$lang['fillmath'] = "Please solve the following equation to prove you're human."; +$lang['soundlink'] = "If you can't read the letters on the image, download this .wav file to get them read to you."; +$lang['honeypot'] = "Please keep this field empty: "; diff --git a/sources/lib/plugins/captcha/lang/en/settings.php b/sources/lib/plugins/captcha/lang/en/settings.php new file mode 100755 index 0000000..fe1714c --- /dev/null +++ b/sources/lib/plugins/captcha/lang/en/settings.php @@ -0,0 +1,23 @@ + + */ + +$lang['mode'] = "Which type of CAPTCHA to use?"; +$lang['mode_o_js'] = "Text (prefilled with JavaScript)"; +$lang['mode_o_text'] = "Text (manual only)"; +$lang['mode_o_math'] = "Math Problem"; +$lang['mode_o_question'] = "Fixed Question"; +$lang['mode_o_image'] = "Image (bad accessibility)"; +$lang['mode_o_audio'] = "Image+Audio (better accessibility)"; +$lang['mode_o_figlet'] = "Figlet ASCII Art (bad accessibility)"; + +$lang['forusers'] = "Use CAPTCHA for logged in users, too?"; +$lang['loginprotect'] = "Require a CAPTCHA to login?"; +$lang['lettercount']= "Number of letters to use (3-16). If you increase the amount, be sure to increase the width of the image below as well."; +$lang['width'] = "Width of the CAPTCHA image (pixel)"; +$lang['height'] = "Height of the CAPTCHA image (pixel)"; +$lang['question'] = "Question for fixed question mode"; +$lang['answer'] = "Answer for fixed question mode"; diff --git a/sources/lib/plugins/captcha/lang/eo/lang.php b/sources/lib/plugins/captcha/lang/eo/lang.php new file mode 100755 index 0000000..01ed128 --- /dev/null +++ b/sources/lib/plugins/captcha/lang/eo/lang.php @@ -0,0 +1,13 @@ + + * @author Robert Bogenschneider + */ +$lang['testfailed'] = 'Pardonon, sed CAPTCHA ne respondis korekte. Eble vi tute ne estas homo, ĉu?'; +$lang['fillcaptcha'] = 'Bonvolu tajpi ĉiujn literojn en la kampeton, por pruvi ke vi estas homo.'; +$lang['fillmath'] = 'Bonvolu solvi sekvan ekvacion por pruvi, ke vi estas homa.'; +$lang['soundlink'] = 'Se vi ne povas legi la literojn en la bildo, ŝarĝu tiun .wav-dosieron por aŭdi ilin.'; +$lang['honeypot'] = 'Bonvolu lasi tiun kampon malplena:'; diff --git a/sources/lib/plugins/captcha/lang/eo/settings.php b/sources/lib/plugins/captcha/lang/eo/settings.php new file mode 100755 index 0000000..c197757 --- /dev/null +++ b/sources/lib/plugins/captcha/lang/eo/settings.php @@ -0,0 +1,22 @@ + + * @author Robert Bogenschneider + */ +$lang['mode'] = 'Kiun varianton de CAPTCHA uzi?'; +$lang['mode_o_js'] = 'Teksto (prilaborita per Java-skripto)'; +$lang['mode_o_text'] = 'Teksto (nur permane)'; +$lang['mode_o_math'] = 'Matematika problemo'; +$lang['mode_o_question'] = 'Fiksa demando'; +$lang['mode_o_image'] = 'Bildo (malbona alirebleco)'; +$lang['mode_o_audio'] = 'Bildo+Sono (pli bona alirebleco)'; +$lang['mode_o_figlet'] = 'Figlet ASCII - arto (malbona alirebleco)'; +$lang['forusers'] = 'Uzi CAPTCHA-n ankaŭ por ensalutintaj uzantoj?'; +$lang['lettercount'] = 'Kvanto da uzendaj literoj (3-16). Se vi pligrandigas la kvanton, certigu ke vi same pligrandigas la larĝecon de la suba bildo.'; +$lang['width'] = 'Larĝeco de CAPTCHA-bildo (pikseloj)'; +$lang['height'] = 'Alteco de CAPTCHA-bildo (pikseloj)'; +$lang['question'] = 'Demando por fiks-demanda funkciado'; +$lang['answer'] = 'Respondo por fiks-demanda funkciado'; diff --git a/sources/lib/plugins/captcha/lang/es/lang.php b/sources/lib/plugins/captcha/lang/es/lang.php new file mode 100755 index 0000000..91f5396 --- /dev/null +++ b/sources/lib/plugins/captcha/lang/es/lang.php @@ -0,0 +1,12 @@ + + */ +$lang['testfailed'] = 'Lo sentimos, pero el CAPTCHA no fue respondido correctamente. Tal vez no eres una persona.'; +$lang['fillcaptcha'] = 'Por favor, complete todas las letras de la caja para demostrar que eres una persona.'; +$lang['fillmath'] = 'Por favor, resuelve la siguiente ecuación para demostrar que eres una persona.'; +$lang['soundlink'] = 'Si no puede leer toda las letras de la imagen, descargue el archivo wav que lo leerá por ti.'; +$lang['honeypot'] = 'Por favor, mantenga este campo vacío: '; diff --git a/sources/lib/plugins/captcha/lang/es/settings.php b/sources/lib/plugins/captcha/lang/es/settings.php new file mode 100755 index 0000000..8e02dd3 --- /dev/null +++ b/sources/lib/plugins/captcha/lang/es/settings.php @@ -0,0 +1,20 @@ + + */ +$lang['mode'] = '¿Qué tipo de CAPTCHA usará?'; +$lang['mode_o_js'] = 'Texto (rellenados con JavaScript)'; +$lang['mode_o_text'] = 'Texto (manual)'; +$lang['mode_o_math'] = 'Problemas de matemáticas'; +$lang['mode_o_question'] = 'Pregunta fija'; +$lang['mode_o_image'] = 'Imagen (peor accesibilidad)'; +$lang['mode_o_audio'] = 'Imagen + Audio (peor accesibilidad)'; +$lang['forusers'] = '¿Utilizar CAPTCHA para los usuarios registrados también?'; +$lang['lettercount'] = 'Número de letras para usar (3-16). Si aumenta la cantidad, asegúrese de incrementar el ancho de la imagen de abajo también.'; +$lang['width'] = 'Ancho de la imagen CAPTCHA (pixel)'; +$lang['height'] = 'Altura de la imagen CAPTCHA (pixel)'; +$lang['question'] = 'Pregunta para el modo de pregunta fija'; +$lang['answer'] = 'Responda al modo de pregunta fija'; diff --git a/sources/lib/plugins/captcha/lang/fa/lang.php b/sources/lib/plugins/captcha/lang/fa/lang.php new file mode 100644 index 0000000..53f1fec --- /dev/null +++ b/sources/lib/plugins/captcha/lang/fa/lang.php @@ -0,0 +1,12 @@ + + */ +$lang['testfailed'] = 'متاسفم، شما به درستی مقدار کپچا را جواب نداده اید. لطفا با دقت بیشتری آن را پر نمایید.'; +$lang['fillcaptcha'] = 'لطفا تمام حروف تصویر کپچا را وارد نمایید. می خواهیم مطمئن شویم شما ربات نیستید.'; +$lang['fillmath'] = 'لطفا معادله را حل کرده و پاسخ را وارد نمایید. می خواهیم مطمئن شویم شما ربات نیستید.'; +$lang['soundlink'] = 'اگر تصویر نامفهوم است. این فایل صوتی را دانلود کرده تا آن را برای شما بخواند.'; +$lang['honeypot'] = 'لطفا این بخش را خالی بگذارید: '; diff --git a/sources/lib/plugins/captcha/lang/fa/settings.php b/sources/lib/plugins/captcha/lang/fa/settings.php new file mode 100644 index 0000000..bfc5c8e --- /dev/null +++ b/sources/lib/plugins/captcha/lang/fa/settings.php @@ -0,0 +1,23 @@ + + * @author Sam01 + */ +$lang['mode'] = 'از کدام نوع کپچا می خواهید استفاده کنید؟'; +$lang['mode_o_js'] = 'متن (با جاوااسکریپت تنظیم می شود)'; +$lang['mode_o_text'] = 'متن (فقط دستی)'; +$lang['mode_o_math'] = 'سوال ریاضی'; +$lang['mode_o_question'] = 'سوال ثابت'; +$lang['mode_o_image'] = 'عکس (دسترسی بد)'; +$lang['mode_o_audio'] = 'عکس+صوت (دسترسی بهتر)'; +$lang['mode_o_figlet'] = 'Figlet ASCII Art (دسترسی بد)'; +$lang['forusers'] = ' آیا برای کاربران وارد شده به سایت نیز از کپچا استفاده شود؟'; +$lang['loginprotect'] = 'برای ورود به سایت کپچا نیاز باشد؟'; +$lang['lettercount'] = 'تعداد حروف مورد استفاده (3 تا 16 حرف). اگر شما مقدار را اضافه می کنید، مطمئن شوید که عرض تصویر را متناظرا افزایش دهید.'; +$lang['width'] = 'عرض تصویر کپچا (پیکسل)'; +$lang['height'] = 'ارتفاع تصویر کپچا (پیکسل)'; +$lang['question'] = 'سوال برای حالت «سوال ثابت« '; +$lang['answer'] = 'پاسخ سوال برای حالت «سوال ثابت»'; diff --git a/sources/lib/plugins/captcha/lang/fr/lang.php b/sources/lib/plugins/captcha/lang/fr/lang.php new file mode 100755 index 0000000..a1b3e53 --- /dev/null +++ b/sources/lib/plugins/captcha/lang/fr/lang.php @@ -0,0 +1,14 @@ + + * @author bruno + * @author Fabrice Dejaigher + */ +$lang['testfailed'] = 'Désolé, vous n\'avez pas répondu correctement au test anti-spam. Peut-être n\'êtes vous pas humain ?'; +$lang['fillcaptcha'] = 'Merci de recopier le code ci-contre pour prouver que vous êtes humain :'; +$lang['fillmath'] = 'S\'il vous plaît résolvez l\'équation suivante pour prouver que vous êtes humain.'; +$lang['soundlink'] = 'Si vous ne pouvez pas lire le code, téléchargez ce fichier .wav pour l\'écouter.'; +$lang['honeypot'] = 'Merci de laisser ce champ vide : '; diff --git a/sources/lib/plugins/captcha/lang/fr/settings.php b/sources/lib/plugins/captcha/lang/fr/settings.php new file mode 100755 index 0000000..70fc879 --- /dev/null +++ b/sources/lib/plugins/captcha/lang/fr/settings.php @@ -0,0 +1,25 @@ + + * @author bruno + * @author Fabrice Dejaigher + * @author Pietroni + */ +$lang['mode'] = 'Quel type de CAPTCHA utiliser ?'; +$lang['mode_o_js'] = 'Texte (prérempli avec JavaScript)'; +$lang['mode_o_text'] = 'Texte (remplissage manuel)'; +$lang['mode_o_math'] = 'Problème mathématique'; +$lang['mode_o_question'] = 'Question fixe'; +$lang['mode_o_image'] = 'Image (mauvaise accessibilité)'; +$lang['mode_o_audio'] = 'Image + Audio (meilleure accessibilité)'; +$lang['mode_o_figlet'] = 'ASCII Art (mauvaise accessibilité)'; +$lang['forusers'] = 'Utiliser également le CAPTCHA pour les utilisateurs connectés ?'; +$lang['loginprotect'] = 'Exiger un CAPTCHA pour se connecter?'; +$lang['lettercount'] = 'Nombre de lettres à utiliser (3 à 16). Pensez à augmenter la taille de l\'image ci-dessous en adéquation avec le nombre de lettres afin que celles-ci soient correctement affichées.'; +$lang['width'] = 'Largeur de l\'image du CAPTCHA (en pixels)'; +$lang['height'] = 'Hauteur de l\'image du CAPTCHA (en pixels)'; +$lang['question'] = 'Question pour le mode \'question fixe\''; +$lang['answer'] = 'Réponse pour le mode \'question fixe\''; diff --git a/sources/lib/plugins/captcha/lang/hu/lang.php b/sources/lib/plugins/captcha/lang/hu/lang.php new file mode 100755 index 0000000..49bd062 --- /dev/null +++ b/sources/lib/plugins/captcha/lang/hu/lang.php @@ -0,0 +1,12 @@ + + */ +$lang['testfailed'] = 'Rosszul válaszoltál a CAPTCHA-ra. Lehet, hogy nem is ember vagy?'; +$lang['fillcaptcha'] = 'Kérlek írd be az összes betűt a dobozba, hogy bebizonyítsd, ember vagy.'; +$lang['fillmath'] = 'Kérlek oldd meg az alábbi egyenletet, hogy bebizonyítsd, ember vagy.'; +$lang['soundlink'] = 'Ha nem látod a képen szereplő szöveget, töltsd le ezt a .wav fájlt, amiben felolvassák.'; +$lang['honeypot'] = 'Ezt a mezőt kérlek hagyd üresen:'; diff --git a/sources/lib/plugins/captcha/lang/hu/settings.php b/sources/lib/plugins/captcha/lang/hu/settings.php new file mode 100755 index 0000000..348363c --- /dev/null +++ b/sources/lib/plugins/captcha/lang/hu/settings.php @@ -0,0 +1,22 @@ + + * @author Marina Vladi + */ +$lang['mode'] = 'Milyen CAPTCHA-t használjunk?'; +$lang['mode_o_js'] = 'Szöveg (JavaScript által kitöltve)'; +$lang['mode_o_text'] = 'Szöveg (kézzel kitöltendő)'; +$lang['mode_o_math'] = 'Matematikai feladat'; +$lang['mode_o_question'] = 'Biztonsági kérdés'; +$lang['mode_o_image'] = 'Kép (nehezen érthető)'; +$lang['mode_o_audio'] = 'Kép+hang (jobban érthető)'; +$lang['mode_o_figlet'] = 'FIGlet-betűrajz (nehezen érthető)'; +$lang['forusers'] = 'Bejelentkezett felhasználóknál is használjunk CAPTCHA-t?'; +$lang['lettercount'] = 'Felhasználandó betűk száma (3-16). Ha növeled a karakterek számát, ne felejtsd el a kép szélességét is megváltoztatni.'; +$lang['width'] = 'CAPTCHA-hoz felhasznált kép szélessége (pixel)'; +$lang['height'] = 'CAPTCHA-hoz felhasznált kép magassága (pixel)'; +$lang['question'] = 'Biztonsági kérdés mód kérdése'; +$lang['answer'] = 'Válasz a biztonsági kérdésre'; diff --git a/sources/lib/plugins/captcha/lang/is/lang.php b/sources/lib/plugins/captcha/lang/is/lang.php new file mode 100755 index 0000000..652978c --- /dev/null +++ b/sources/lib/plugins/captcha/lang/is/lang.php @@ -0,0 +1,12 @@ + + */ +$lang['testfailed'] = 'Því miður, en staðfestingarkóðanum var ekki rétt svarað. Kannski ertu ekki mennsk(ur) þrátt fyrir allt?'; +$lang['fillcaptcha'] = 'Vinsamlegast ritaðu alla stafina inn í reitinn til að sanna að þú sért manneskja.'; +$lang['fillmath'] = 'Vinsamlegast leystu eftirfarandi jöfnu til að sanna að þú sért manneskja.'; +$lang['soundlink'] = 'Ef þú getur ekki lesið stafina á myndinni, sæktu þá þessa .wav skrá til að fá stafina lesna fyrir þig.'; +$lang['honeypot'] = 'Vinsamlegast skildu þennan reit eftir auðan:'; diff --git a/sources/lib/plugins/captcha/lang/is/settings.php b/sources/lib/plugins/captcha/lang/is/settings.php new file mode 100755 index 0000000..2867f30 --- /dev/null +++ b/sources/lib/plugins/captcha/lang/is/settings.php @@ -0,0 +1,22 @@ + + */ +$lang['mode'] = 'Hverslags stafestingarkóða á að nota?'; +$lang['mode_o_js'] = 'Texta (fylltan fyrirfram með JavaScript)'; +$lang['mode_o_text'] = 'Texta (aðeins handvirkt)'; +$lang['mode_o_math'] = 'Stærðfræðiþraut'; +$lang['mode_o_question'] = 'Fyrirfram ákveðin spurning'; +$lang['mode_o_image'] = 'Mynd (slæmt aðgengi fatlaðra)'; +$lang['mode_o_audio'] = 'Mynd og hljóð (betra aðgengi fatlaðra)'; +$lang['mode_o_figlet'] = 'Figlet ASCII mynd (slæmt aðgengi fatlaðra)'; +$lang['forusers'] = 'Á að nota staðfestingarkóða fyrir innskráða notendur líka?'; +$lang['loginprotect'] = 'Þarf að nota staðfestingarkóða til að skrá inn?'; +$lang['lettercount'] = 'Fjöldi stafa sem á að nota (3-16). Ef þú eykur fjöldann, vertu þá viss um að auka breidd myndarinnar að neðan einnig.'; +$lang['width'] = 'Breidd staðfestingarmyndarinnar í punktum'; +$lang['height'] = 'Hæð staðfestingarmyndarinnar í punktum'; +$lang['question'] = 'Spurning fyrir fyrir ákveðnu staðfestingarspurninguna'; +$lang['answer'] = 'Svar fyrir fyrirfram ákveðnu staðfestingarspurninguna'; diff --git a/sources/lib/plugins/captcha/lang/it/lang.php b/sources/lib/plugins/captcha/lang/it/lang.php new file mode 100755 index 0000000..444023c --- /dev/null +++ b/sources/lib/plugins/captcha/lang/it/lang.php @@ -0,0 +1,13 @@ + + */ +$lang['testfailed'] = 'Spiacente, ma non hai risposto correttamente a CAPTCHA. Potresti non essere del tutto umano.'; +$lang['fillcaptcha'] = 'Per favore inserisci le lettere nel box accanto per provare che sei una persona reale.'; +$lang['fillmath'] = 'Per favore risolvi la seguente equazione per dimostrare che sei un essere umano.'; +$lang['soundlink'] = 'Se non riesci a leggere le lettere nell\'immagine, scarica questo file .wav ed eseguilo, leggerà le lettere per te.'; +$lang['honeypot'] = 'Per favore lascia questo campo vuoto:'; diff --git a/sources/lib/plugins/captcha/lang/it/settings.php b/sources/lib/plugins/captcha/lang/it/settings.php new file mode 100755 index 0000000..b45b957 --- /dev/null +++ b/sources/lib/plugins/captcha/lang/it/settings.php @@ -0,0 +1,23 @@ + + */ +$lang['mode'] = 'Che tipo di CAPTCHA vuoi usare?'; +$lang['mode_o_js'] = 'Testo (precompilato con JavaScript)'; +$lang['mode_o_text'] = 'Testo (Solo Manuale)'; +$lang['mode_o_math'] = 'Problema di matematica'; +$lang['mode_o_question'] = 'Domanda Immutabile'; +$lang['mode_o_image'] = 'Immagine (Non molto Accessibile)'; +$lang['mode_o_audio'] = 'Immagine + Audio (Migliore Accessibilità)'; +$lang['mode_o_figlet'] = 'Immagine ASCII FIGlet (Non molto Accessibile)'; +$lang['forusers'] = 'Vuoi usare CAPTCHA anche per gli utenti loggati?'; +$lang['loginprotect'] = 'Richiedere un CAPTCHA per l\'accesso?'; +$lang['lettercount'] = 'Numero di lettere da usare (3-16). Se aumenti il numero, accertati di aumentare anche la larghezza dell\'immagine qui sotto.'; +$lang['width'] = 'Larghezza dell\'immagine di CAPTCHA (pixel)'; +$lang['height'] = 'Altezza dell\'immagine di CAPTCHA (pixel)'; +$lang['question'] = 'Domanda per la modalità Domanda Immutabile'; +$lang['answer'] = 'Risposta per la modalità Domanda Immutabile'; diff --git a/sources/lib/plugins/captcha/lang/ja/lang.php b/sources/lib/plugins/captcha/lang/ja/lang.php new file mode 100755 index 0000000..7e7fd25 --- /dev/null +++ b/sources/lib/plugins/captcha/lang/ja/lang.php @@ -0,0 +1,13 @@ + + * @author Hideaki SAWADA + */ +$lang['testfailed'] = '申し訳ありませんが、CAPTCHAに対して適切に応答していません。おそらくですが人ではありませんね?'; +$lang['fillcaptcha'] = '人間の証明として、ボックス内の全ての文字を入力してください。'; +$lang['fillmath'] = '人間の証明として、以下の数式の答えを入力して下さい。'; +$lang['soundlink'] = '画像の文字が読めなければ、文字を読んだ.wavファイルをダウンロードして下さい。'; +$lang['honeypot'] = 'この項目は空のままにして下さい:'; diff --git a/sources/lib/plugins/captcha/lang/ja/settings.php b/sources/lib/plugins/captcha/lang/ja/settings.php new file mode 100755 index 0000000..1fb5372 --- /dev/null +++ b/sources/lib/plugins/captcha/lang/ja/settings.php @@ -0,0 +1,24 @@ + + * @author Hideaki SAWADA + * @author Ikuo Obataya + */ +$lang['mode'] = '認証の方式'; +$lang['mode_o_js'] = '文字 (JavaScriptによる自動入力)'; +$lang['mode_o_text'] = '文字 (手動入力)'; +$lang['mode_o_math'] = '計算式'; +$lang['mode_o_question'] = '固定質問'; +$lang['mode_o_image'] = '画像 (低アクセシビリティ)'; +$lang['mode_o_audio'] = '画像+音声 (中アクセシビリティ)'; +$lang['mode_o_figlet'] = 'Figlet [アルファベットAA] (低アクセシビリティ)'; +$lang['forusers'] = 'ログインユーザーに対してもCAPTCHA認証を行う'; +$lang['loginprotect'] = 'ログインにCAPTCHAを要求しますか?'; +$lang['lettercount'] = '使用する文字数(3~16)。文字数を増やす場合は下の画像の幅も同様に増やして下さい。'; +$lang['width'] = 'CAPTCHA画像の幅 (ピクセル)'; +$lang['height'] = 'CAPTCHA画像の高さ(ピクセル)'; +$lang['question'] = '固定質問方式の質問'; +$lang['answer'] = '固定質問方式の回答'; diff --git a/sources/lib/plugins/captcha/lang/ko/lang.php b/sources/lib/plugins/captcha/lang/ko/lang.php new file mode 100755 index 0000000..fb254a0 --- /dev/null +++ b/sources/lib/plugins/captcha/lang/ko/lang.php @@ -0,0 +1,14 @@ + + * @author Myeongjin + * @author chobkwon + */ +$lang['testfailed'] = '죄송하지만 CAPTCHA(캡차)가 올바르지 않습니다. 아마도 인간이 아니죠?'; +$lang['fillcaptcha'] = '인간임을 증명하기 위해 상자에 있는 모든 글자를 채워주세요.'; +$lang['fillmath'] = '인간임을 증명하기 위해 다음 방정식을 푸세요.'; +$lang['soundlink'] = '그림에 있는 글자를 읽을 수 없다면, 당신에게 들려줄 이 .wav 파일을 다운로드하세요.'; +$lang['honeypot'] = '이 필드는 비어 있도록 유지하세요:'; diff --git a/sources/lib/plugins/captcha/lang/ko/settings.php b/sources/lib/plugins/captcha/lang/ko/settings.php new file mode 100755 index 0000000..49865a8 --- /dev/null +++ b/sources/lib/plugins/captcha/lang/ko/settings.php @@ -0,0 +1,24 @@ + + * @author Myeongjin + * @author chobkwon + */ +$lang['mode'] = '어떤 CAPTCHA(캡차) 종류를 사용하겠습니까?'; +$lang['mode_o_js'] = '글자 (자바스크립트로 미리 채워짐)'; +$lang['mode_o_text'] = '글자 (설명문서만)'; +$lang['mode_o_math'] = '수학 문제'; +$lang['mode_o_question'] = '고정된 질문'; +$lang['mode_o_image'] = '그림 (접근성이 낮음)'; +$lang['mode_o_audio'] = '그림+소리 (접근성이 더 나음)'; +$lang['mode_o_figlet'] = 'Figlet ASCII 아트 (접근성이 낮음)'; +$lang['forusers'] = '로그인한 사용자도 CAPTCHA(캡차)를 사용하겠습니까?'; +$lang['loginprotect'] = '로그인하려면 CAPTCHA(캡차)가 필요합니까?'; +$lang['lettercount'] = '사용할 글자 수. (3-16) 양을 증가하면, 아래 그림의 너비도 증가해야 합니다.'; +$lang['width'] = 'CAPTCHA(캡차) 그림의 너비 (픽셀)'; +$lang['height'] = 'CAPTCHA(캡차) 그림의 높이 (픽셀)'; +$lang['question'] = '고정된 질문 모드에 대한 질문'; +$lang['answer'] = '고정된 질문 모드에 대한 답변'; diff --git a/sources/lib/plugins/captcha/lang/nl/lang.php b/sources/lib/plugins/captcha/lang/nl/lang.php new file mode 100755 index 0000000..bf07a56 --- /dev/null +++ b/sources/lib/plugins/captcha/lang/nl/lang.php @@ -0,0 +1,14 @@ + + * @author Mark C. Prins + * @author Mark Prins + */ +$lang['testfailed'] = 'Sorry, maar de CAPTCHA is onjuist beantwoord. Misschien ben je toch geen mens?'; +$lang['fillcaptcha'] = 'Tik de letters in het onderstaande vakje over om aan te tonen dat je een mens bent.'; +$lang['fillmath'] = 'Geef antwoord op de rekensom om aan te tonen dat je een mens bent.'; +$lang['soundlink'] = 'Als je de letters in de afbeelding niet kunt lezen kun je dit .wav bestand downloaden om ze te laten voorlezen.'; +$lang['honeypot'] = 'Dit veld leeg laten'; diff --git a/sources/lib/plugins/captcha/lang/nl/settings.php b/sources/lib/plugins/captcha/lang/nl/settings.php new file mode 100755 index 0000000..0050236 --- /dev/null +++ b/sources/lib/plugins/captcha/lang/nl/settings.php @@ -0,0 +1,25 @@ + + * @author Mark C. Prins + * @author Mark Prins + * @author Johan Wijnker + */ +$lang['mode'] = 'Welk type CAPTCHA wil je gebruiken?'; +$lang['mode_o_js'] = 'Tekst (automatisch ingevuld via JavaScript)'; +$lang['mode_o_text'] = 'Tekst (handmatig overtikken)'; +$lang['mode_o_math'] = 'Wiskunde opgave (eenvoudige rekensom)'; +$lang['mode_o_question'] = 'Vaste vraag'; +$lang['mode_o_image'] = 'Afbeelding (slechte toegankelijkhied)'; +$lang['mode_o_audio'] = 'Afbeelding+Audio (betere toegankelijkheid)'; +$lang['mode_o_figlet'] = 'Figlet ASCII Art (slechte toegankelijkheid)'; +$lang['forusers'] = 'Ook CAPTCHA voor ingelogde gebruikers gebruiken?'; +$lang['loginprotect'] = 'Vereis een CAPTCHA om in te loggen?'; +$lang['lettercount'] = 'Aantal te gebruiken letters (3-16). Let er op ook de breedte van de afbeelding hieronder te vergroten als het aantal wordt verhoogd'; +$lang['width'] = 'Breedte van de CAPTCHA afbeelding (pixels)'; +$lang['height'] = 'Hoogte van de CAPTCHA afbeelding (pixels)'; +$lang['question'] = 'Vraag voor de vaste vraag modus'; +$lang['answer'] = 'Antwoord voor de vaste vraag modus'; diff --git a/sources/lib/plugins/captcha/lang/nn/lang.php b/sources/lib/plugins/captcha/lang/nn/lang.php new file mode 100644 index 0000000..dc20a1a --- /dev/null +++ b/sources/lib/plugins/captcha/lang/nn/lang.php @@ -0,0 +1,12 @@ + + */ +$lang['testfailed'] = 'Lei for det, men CAPTHCA-svaret ditt var ikkje korrekt. Er du kanskje ikkje eit menneske likevel?'; +$lang['fillcaptcha'] = 'Gjer vel og fyll inn alle bokstavane i boksen for å bevise at du er eit menenske.'; +$lang['fillmath'] = 'Gjer vel og løys denne likninga for å bevise at du er menneske'; +$lang['soundlink'] = 'Dersom du ikkje kan lese bokstavane i bildet, last ned .wav-fila for å få dei opplest'; +$lang['honeypot'] = 'Hald dette feltet tomt'; diff --git a/sources/lib/plugins/captcha/lang/nn/settings.php b/sources/lib/plugins/captcha/lang/nn/settings.php new file mode 100644 index 0000000..5bf2d60 --- /dev/null +++ b/sources/lib/plugins/captcha/lang/nn/settings.php @@ -0,0 +1,21 @@ + + */ +$lang['mode'] = 'Kva type CAPTCA skal du bruke?'; +$lang['mode_o_js'] = 'Tekst (forfylt med JavaScript)'; +$lang['mode_o_text'] = 'Tekst (berre manuell)'; +$lang['mode_o_math'] = 'Matteproblem'; +$lang['mode_o_question'] = 'Fast spørsmål'; +$lang['mode_o_image'] = 'Bilde (vanskeleg tilgjenge)'; +$lang['mode_o_audio'] = 'Bilde og lys (betre tilgjenge)'; +$lang['mode_o_figlet'] = 'Figlet ASCII-kunst (vanskeleg tilgjenge)'; +$lang['forusers'] = 'Bruk CAPTCHA for innlogga brukarar'; +$lang['lettercount'] = 'Kor mange bokstavar skal brukast (3-16). Dersom du aukar mengda, må du og utvide storleiken på feltet.'; +$lang['width'] = 'Breidda på CAPTCHA-bildet (pikslar)'; +$lang['height'] = 'Høgda på CAPTCHA-bildet (i pikslar)'; +$lang['question'] = 'Fast spørsmål'; +$lang['answer'] = 'Svar på fast spørsmål'; diff --git a/sources/lib/plugins/captcha/lang/no/lang.php b/sources/lib/plugins/captcha/lang/no/lang.php new file mode 100755 index 0000000..0ef1790 --- /dev/null +++ b/sources/lib/plugins/captcha/lang/no/lang.php @@ -0,0 +1,13 @@ + + * @author Arne Hanssen + */ +$lang['testfailed'] = 'Dessverre, du svarte ikke rett på CAPTCHAen. Kanskje du ikke er et menneske likevel?'; +$lang['fillcaptcha'] = 'Vennligst fyll inn alle bokstavene i feltet for å bevise at du er et menneske.'; +$lang['fillmath'] = 'Vennligst løys denne ligninga for å bevise at du er et menneske.'; +$lang['soundlink'] = 'Dersom du ikke kan lese bokstavene på bildet, last ned denne .wav-fila for å få de opplest.'; +$lang['honeypot'] = 'Vennligst hold dette feltet tomt.'; diff --git a/sources/lib/plugins/captcha/lang/no/settings.php b/sources/lib/plugins/captcha/lang/no/settings.php new file mode 100755 index 0000000..677e6ce --- /dev/null +++ b/sources/lib/plugins/captcha/lang/no/settings.php @@ -0,0 +1,23 @@ + + * @author Daniel Raknes + */ +$lang['mode'] = 'Hvilken type CAPTCHA vil du bruke?'; +$lang['mode_o_js'] = 'Tekst (forfylt med JavaScript)'; +$lang['mode_o_text'] = 'Tekst (bare manuelt)'; +$lang['mode_o_math'] = 'Matteproblem'; +$lang['mode_o_question'] = 'Fast spørsmål'; +$lang['mode_o_image'] = 'Bilde (vanskelig tilgjengelig)'; +$lang['mode_o_audio'] = 'Bilde og lyd (bedre tilgjengelighet)'; +$lang['mode_o_figlet'] = 'Figlet ASCII-kunst (vanskelig tilgjengelig)'; +$lang['forusers'] = 'Bruke CAPTCHA for innlogga brukere?'; +$lang['loginprotect'] = 'Kreve CAPTCHA ved innlogging?'; +$lang['lettercount'] = 'Antall bokstaver (3-16). Om du øker antallet må du også øke bredden av bildet under.'; +$lang['width'] = 'Bredde på CAPTCHA-bildet (i piksler)'; +$lang['height'] = 'Høyde på CAPTCHA-bildet (i piksler)'; +$lang['question'] = 'Fast spørsmål'; +$lang['answer'] = 'Svar på fast spørsmål'; diff --git a/sources/lib/plugins/captcha/lang/pl/lang.php b/sources/lib/plugins/captcha/lang/pl/lang.php new file mode 100755 index 0000000..cb23f92 --- /dev/null +++ b/sources/lib/plugins/captcha/lang/pl/lang.php @@ -0,0 +1,12 @@ + + */ +$lang['testfailed'] = 'Wybacz, ale CAPTCHA nie została uzupełniona poprawnie. Może wcale nie jesteś człowiekiem?'; +$lang['fillcaptcha'] = 'Proszę wprowadzić wszystkie znaki w pole, by udowodnić, że jesteś człowiekiem.'; +$lang['fillmath'] = 'Proszę rozwiązać poniższe równanie, by udowodnić, że jesteś człowiekiem.'; +$lang['soundlink'] = 'Jeżeli nie jesteś w stanie przeczytać znaków widocznych na obrazie pobierz plik .wav, w którym zawarta jest ich głosowa reprezentacja.'; +$lang['honeypot'] = 'Proszę pozostawić to pole puste.'; diff --git a/sources/lib/plugins/captcha/lang/pl/settings.php b/sources/lib/plugins/captcha/lang/pl/settings.php new file mode 100755 index 0000000..33605ed --- /dev/null +++ b/sources/lib/plugins/captcha/lang/pl/settings.php @@ -0,0 +1,21 @@ + + * @author Mati + */ +$lang['mode'] = 'Jaki typ CAPTCHA zastosować?'; +$lang['mode_o_text'] = 'Tekst (tylko ręcznie)'; +$lang['mode_o_math'] = 'Problem matematyczny'; +$lang['mode_o_question'] = 'Stałe pytanie'; +$lang['mode_o_image'] = 'Obraz (słaba dostępność)'; +$lang['mode_o_audio'] = 'Obraz+Dźwięk (lepsza dostępność)'; +$lang['mode_o_figlet'] = 'Sztuka figletowych ASCII (słaba dostępność)'; +$lang['forusers'] = 'Stosować CAPTCHA również dla zalogowanych użytkowników?'; +$lang['lettercount'] = 'Wykorzystywane liczby i litery (3-16). Pamiętaj by wraz ze wzrostem ich ilości zwiększać również szerokość obrazu poniżej.'; +$lang['width'] = 'Szerokość obrazu CAPTCHA (w pikselach)'; +$lang['height'] = 'Wysokość obrazu CAPTCHA (w pikselach)'; +$lang['question'] = 'Pytanie stosowane w trybie stałego pytania'; +$lang['answer'] = 'Odpowiedź na stałe pytanie'; diff --git a/sources/lib/plugins/captcha/lang/pt-br/lang.php b/sources/lib/plugins/captcha/lang/pt-br/lang.php new file mode 100755 index 0000000..7a37dd1 --- /dev/null +++ b/sources/lib/plugins/captcha/lang/pt-br/lang.php @@ -0,0 +1,12 @@ + + */ +$lang['testfailed'] = 'Desculpe, mas o CAPTCHA não foi preenchido corretamente. Talvez você não seja humano?'; +$lang['fillcaptcha'] = 'Por favor preencha todas as letras dentro da caixa para provar que você é humano.'; +$lang['fillmath'] = 'Por favor resolva a seguinte equação para provar que você é humano.'; +$lang['soundlink'] = 'Se você não pode ler as letras na imagem, faça o download desse .wav para que elas sejam lidas para você.'; +$lang['honeypot'] = 'Por favor deixe esse campo em branco:'; diff --git a/sources/lib/plugins/captcha/lang/pt-br/settings.php b/sources/lib/plugins/captcha/lang/pt-br/settings.php new file mode 100755 index 0000000..01d3e84 --- /dev/null +++ b/sources/lib/plugins/captcha/lang/pt-br/settings.php @@ -0,0 +1,23 @@ + + * @author Oze Projetos + */ +$lang['mode'] = 'Qual tipo de CAPTCHA usar?'; +$lang['mode_o_js'] = 'Texto (pré-preenchido com JavaScript)'; +$lang['mode_o_text'] = 'Texto (somente manual)'; +$lang['mode_o_math'] = 'Problema de Matemática'; +$lang['mode_o_question'] = 'Questão Resolvida'; +$lang['mode_o_image'] = 'Imagem (acessibilidade ruim)'; +$lang['mode_o_audio'] = 'Imagem+Áudio (acessibilidade melhor)'; +$lang['mode_o_figlet'] = 'Figlet ASCII Art (acessibilidade ruim)'; +$lang['forusers'] = 'Também usar CAPTCHA para usuários logados?'; +$lang['loginprotect'] = 'Exigir um CAPTCHA para entrar?'; +$lang['lettercount'] = 'Número de letras para usar (3-16). Se você aumentar a quantidade, lembre de também aumentar a largura da imagem abaixo.'; +$lang['width'] = 'Largura da imagem do CAPTCHA (pixel)'; +$lang['height'] = 'Altura da imagem do CAPTCHA (pixel)'; +$lang['question'] = 'Pergunta para o modo de pergunta fixa'; +$lang['answer'] = 'Resposta para o modo de pergunta fixa'; diff --git a/sources/lib/plugins/captcha/lang/pt/lang.php b/sources/lib/plugins/captcha/lang/pt/lang.php new file mode 100755 index 0000000..3ee95d5 --- /dev/null +++ b/sources/lib/plugins/captcha/lang/pt/lang.php @@ -0,0 +1,12 @@ + + */ +$lang['testfailed'] = 'Infelizmente o CAPTCHA não foi respondido corretamente. Talvez você afinal não seja humano?'; +$lang['fillcaptcha'] = 'Por favor preencha todas as letras na caixa para provar que é humano.'; +$lang['fillmath'] = 'Por favor resolva a seguinte equação para provar que é humano.'; +$lang['soundlink'] = 'Se não pode ler as letras na imagem, descarregue este ficheiro .wav para as ouvir.'; +$lang['honeypot'] = 'Por favor mantenha este campo vazio:'; diff --git a/sources/lib/plugins/captcha/lang/pt/settings.php b/sources/lib/plugins/captcha/lang/pt/settings.php new file mode 100755 index 0000000..4682f81 --- /dev/null +++ b/sources/lib/plugins/captcha/lang/pt/settings.php @@ -0,0 +1,23 @@ + + * @author ANeves + */ +$lang['mode'] = 'Que tipo de CAPTCHA usar?'; +$lang['mode_o_js'] = 'Texto (pré-preenchido com JavaScript)'; +$lang['mode_o_text'] = 'Texto (somente manual)'; +$lang['mode_o_math'] = 'Problema Matemático'; +$lang['mode_o_question'] = 'Pergunta Fixa'; +$lang['mode_o_image'] = 'Imagem (má acessibilidade)'; +$lang['mode_o_audio'] = 'Imagem+Áudio (melhor acessibilidade)'; +$lang['mode_o_figlet'] = 'Arte em ASCII Figlet (má acessibilidade)'; +$lang['forusers'] = 'Também usar CAPTCHA para utilizadores autenticados?'; +$lang['loginprotect'] = 'Exigir um CAPTCHA para se autenticar.'; +$lang['lettercount'] = 'Número de letras a usar (3-16). Se aumentar a quantidade, assegure-se de aumentar também a largura da imagem, abaixo.'; +$lang['width'] = 'Largura da imagem CAPTCHA (pixel)'; +$lang['height'] = 'Altura da imagem CAPTCHA (pixel)'; +$lang['question'] = 'Pergunta para o modo de pergunta fixa'; +$lang['answer'] = 'Resposta para o modo de pergunta fixa'; diff --git a/sources/lib/plugins/captcha/lang/ru/lang.php b/sources/lib/plugins/captcha/lang/ru/lang.php new file mode 100755 index 0000000..4810ec3 --- /dev/null +++ b/sources/lib/plugins/captcha/lang/ru/lang.php @@ -0,0 +1,13 @@ + + * @author Ilya Rozhkov + */ +$lang['testfailed'] = 'Извините, код подтверждения введён неверно.'; +$lang['fillcaptcha'] = 'Пожалуйста, введите код подтверждения, чтобы доказать, что вы не робот:'; +$lang['fillmath'] = 'Ответьте пожалуйста на вопрос, чтобы доказать, что вы человек.'; +$lang['soundlink'] = 'Если вы не можете прочитать символы на изображении, загрузите и воспроизведите wav-файл.'; +$lang['honeypot'] = 'Пожалуйста, оставьте это поле пустым:'; diff --git a/sources/lib/plugins/captcha/lang/ru/settings.php b/sources/lib/plugins/captcha/lang/ru/settings.php new file mode 100755 index 0000000..dc01396 --- /dev/null +++ b/sources/lib/plugins/captcha/lang/ru/settings.php @@ -0,0 +1,24 @@ + + * @author Ilya Rozhkov + * @author Shpak Andrey + */ +$lang['mode'] = 'Какой тип CAPTCHA использовать?'; +$lang['mode_o_js'] = 'Текст (заполнение JavaScript)'; +$lang['mode_o_text'] = 'Текст (ручной ввод)'; +$lang['mode_o_math'] = 'Математическая задача'; +$lang['mode_o_question'] = 'Конкретный вопрос'; +$lang['mode_o_image'] = 'Изображение (хорошая защита)'; +$lang['mode_o_audio'] = 'Изображение и звук (плохая защита)'; +$lang['mode_o_figlet'] = 'Figlet ASCII Art (хорошая защита)'; +$lang['forusers'] = 'Использоваться CAPTCHA для зарегистрированных пользователей?'; +$lang['loginprotect'] = 'Требовать ввод CAPTCHA для входа?'; +$lang['lettercount'] = 'Количество букв (3-16). Если вы увеличиваете количество букв, не забудьте увеличить ширину изображения ниже.'; +$lang['width'] = 'Ширина изображения CAPTCHA (пиксель)'; +$lang['height'] = 'Высота изображения CAPTCHA (пиксель)'; +$lang['question'] = 'Вопрос для режима конкретного вопроса'; +$lang['answer'] = 'Ответ для режима конкретного вопроса '; diff --git a/sources/lib/plugins/captcha/lang/sk/lang.php b/sources/lib/plugins/captcha/lang/sk/lang.php new file mode 100755 index 0000000..f04ab4c --- /dev/null +++ b/sources/lib/plugins/captcha/lang/sk/lang.php @@ -0,0 +1,13 @@ + + * @author Martin Michalek + */ +$lang['testfailed'] = 'Ľutujem, ale na CAPTCHA nebolo odpovedané správne. Je možné, že by ste vôbec neboli človekom?'; +$lang['fillcaptcha'] = 'Vyplňte prosím všetky písmená v poli, aby ste dokázali, že nie ste skript.'; +$lang['fillmath'] = 'Prosím vyriešte nasledujúcu rovnicu, aby sme vás odlíšili od automatických web nástrojov.'; +$lang['soundlink'] = 'Ak nedokážete prečítať písmená na obrázku, stiahnite si tento .wav súbor a text vám prečítame.'; +$lang['honeypot'] = 'Prosím nechajte toto pole prázdne:'; diff --git a/sources/lib/plugins/captcha/lang/sk/settings.php b/sources/lib/plugins/captcha/lang/sk/settings.php new file mode 100755 index 0000000..2f6c582 --- /dev/null +++ b/sources/lib/plugins/captcha/lang/sk/settings.php @@ -0,0 +1,22 @@ + + * @author Martin Michalek + */ +$lang['mode'] = 'Ktorý typ CAPTCHA sa má použiť?'; +$lang['mode_o_js'] = 'Text (predvyplnený JavaScriptom)'; +$lang['mode_o_text'] = 'Text (iba manuálne vložený)'; +$lang['mode_o_math'] = 'Matematický problém'; +$lang['mode_o_question'] = 'Pevne zadaná otázka'; +$lang['mode_o_image'] = 'Obrázok (pre ľudí s postihom)'; +$lang['mode_o_audio'] = 'Obrázok a zvuk (pre ľudí s menším postihom)'; +$lang['mode_o_figlet'] = 'ASCII obrázok (pre ľudí s postihom)'; +$lang['forusers'] = 'Používať CAPTCHA aj pre registrovaných užívateľov?'; +$lang['lettercount'] = 'Počet písmen (3-16). Ak zvýšite počet, zväčšite tiež šírku obrázka uvedeného nižšie.'; +$lang['width'] = 'Šírka CAPTCHA obrázku (v bodoch)'; +$lang['height'] = 'Výška CAPTCHA obrázku (v bodoch)'; +$lang['question'] = 'Otázka pre typ pevne zadanej otázky'; +$lang['answer'] = 'Odpoveď pre typ pevne zadanej otázky'; diff --git a/sources/lib/plugins/captcha/lang/tr/lang.php b/sources/lib/plugins/captcha/lang/tr/lang.php new file mode 100755 index 0000000..5132d09 --- /dev/null +++ b/sources/lib/plugins/captcha/lang/tr/lang.php @@ -0,0 +1,12 @@ + + */ +$lang['testfailed'] = 'Üzgünüz, CAPTCHA doğru cevaplanmadı. Belki bir insan değilsiniz (bot\'sunuz)?'; +$lang['fillcaptcha'] = 'İnsan olduğunuzu kanıtlamak için lütfen bütün harfleri kutuya giriniz.'; +$lang['fillmath'] = 'Lütfen şu eşitliği çözünüz ki insan olduğunuzu ispatlayınız.'; +$lang['soundlink'] = 'Eğer resimdeki harfleri okuyamıyorsanız, bu .wav dosyasını size okuması için indiriniz.'; +$lang['honeypot'] = 'Lütfen bu alanı boş bırakınız: '; diff --git a/sources/lib/plugins/captcha/lang/tr/settings.php b/sources/lib/plugins/captcha/lang/tr/settings.php new file mode 100755 index 0000000..3ab73a2 --- /dev/null +++ b/sources/lib/plugins/captcha/lang/tr/settings.php @@ -0,0 +1,24 @@ + + * @author Ozan Hacibekiroglu + * @author İlker R. Kapaç + */ +$lang['mode'] = 'Ne çeşit CAPTCHA kullanılacak?'; +$lang['mode_o_js'] = 'Metin (JavaScript ile önceden doldurulur)'; +$lang['mode_o_text'] = 'Metin (sadece manuel)'; +$lang['mode_o_math'] = 'Matematik Problemi'; +$lang['mode_o_question'] = 'Sabit Soru'; +$lang['mode_o_image'] = 'Resim (Kötü erişebilirlik)'; +$lang['mode_o_audio'] = 'Resim+Ses (iyi erişebilirlik)'; +$lang['mode_o_figlet'] = 'Figlet ASCII Art (kötü erişebilirlik)'; +$lang['forusers'] = 'CAPTCHA giriş yapmış kullanıcılar için de kullanılsın mı?'; +$lang['loginprotect'] = 'Oturum açılışında CAPTCHA sorulsun mu?'; +$lang['lettercount'] = 'Kullanılacak harf sayısı (3-16). Karakter sayısını artırırsanız, resim genişliğinin de arttığından emin olunuz.'; +$lang['width'] = 'CAPTCHA resminin genişliği (piksel)'; +$lang['height'] = 'CAPTCHA resminin yüksekliği (piksel)'; +$lang['question'] = 'Sabit soru modu için soru'; +$lang['answer'] = 'Sabit soru modu için cevap'; diff --git a/sources/lib/plugins/captcha/lang/uk/lang.php b/sources/lib/plugins/captcha/lang/uk/lang.php new file mode 100755 index 0000000..898a138 --- /dev/null +++ b/sources/lib/plugins/captcha/lang/uk/lang.php @@ -0,0 +1,12 @@ + + */ +$lang['testfailed'] = 'Вибачте, ви дали неправильну CAPTCHA-відповідь. Може ви взагалі не людина?'; +$lang['fillcaptcha'] = 'Будь ласка неберіть всі символи аби підтвердити, що ви людина.'; +$lang['fillmath'] = 'Розв\'жіть, будь ласка це рівняння аби підтвердити, що ви людина.'; +$lang['soundlink'] = 'Якщо ви не можете прочитати літери на картинці, завантажте цей .wav файл і прослухайте.'; +$lang['honeypot'] = 'Залиште це поле порожнім:'; diff --git a/sources/lib/plugins/captcha/lang/uk/settings.php b/sources/lib/plugins/captcha/lang/uk/settings.php new file mode 100755 index 0000000..949c615 --- /dev/null +++ b/sources/lib/plugins/captcha/lang/uk/settings.php @@ -0,0 +1,21 @@ + + */ +$lang['mode'] = 'Який тип CAPTCHA використати?'; +$lang['mode_o_js'] = 'Текст (заповнений JavaScript)'; +$lang['mode_o_text'] = 'Текст (лише вручну)'; +$lang['mode_o_math'] = 'Математична задача'; +$lang['mode_o_question'] = 'Фіксоване питання'; +$lang['mode_o_image'] = 'Зображення (погана впізнаваність)'; +$lang['mode_o_audio'] = 'Зображення+аудіо (краща впізнаваність)'; +$lang['mode_o_figlet'] = 'Картинка з ASCII-символів (погана впізнаваність)'; +$lang['forusers'] = 'Використовувати CAPTCHA для авторизованих користувачів?'; +$lang['lettercount'] = 'Кількість символів (3-16). Якщо ви збільшуєте кількість, розширте також картинку нижче.'; +$lang['width'] = 'Ширина CAPTCHA-зображення (пікселів)'; +$lang['height'] = 'Висота CAPTCHA-зображення (пікселів)'; +$lang['question'] = 'Питання для режиму фіксованого питання'; +$lang['answer'] = 'Відповідь для режиму фіксованого питання'; diff --git a/sources/lib/plugins/captcha/lang/zh-tw/lang.php b/sources/lib/plugins/captcha/lang/zh-tw/lang.php new file mode 100755 index 0000000..4f6355f --- /dev/null +++ b/sources/lib/plugins/captcha/lang/zh-tw/lang.php @@ -0,0 +1,13 @@ + + * @author lioujheyu + */ +$lang['testfailed'] = '很抱歉,您沒有輸入正確的 CAPTCHA 驗證碼。'; +$lang['fillcaptcha'] = '請將字母填入方框。'; +$lang['fillmath'] = '請解開下列方程式以證明你是人類'; +$lang['soundlink'] = '如果您無法閱讀圖片中的字母,請下載收聽這個 WAV 檔。'; +$lang['honeypot'] = '請保持這個欄位空白'; diff --git a/sources/lib/plugins/captcha/lang/zh-tw/settings.php b/sources/lib/plugins/captcha/lang/zh-tw/settings.php new file mode 100755 index 0000000..e494563 --- /dev/null +++ b/sources/lib/plugins/captcha/lang/zh-tw/settings.php @@ -0,0 +1,24 @@ + + * @author lioujheyu + * @author CHENG + */ +$lang['mode'] = '使用哪種 CAPTCHA 類型?'; +$lang['mode_o_js'] = '文字 (預先用 Javascript 填入)'; +$lang['mode_o_text'] = '文字 (手動填入)'; +$lang['mode_o_math'] = '數學問題'; +$lang['mode_o_question'] = '固定問題'; +$lang['mode_o_image'] = '圖片 (易用性差)'; +$lang['mode_o_audio'] = '圖片+聲音 (易用性較佳)'; +$lang['mode_o_figlet'] = 'Figlet ASCII 藝術字 (易用性差)'; +$lang['forusers'] = '已登入使用者也要 CAPTCHA 驗證嗎?'; +$lang['loginprotect'] = '登入前需要 CAPTCHA 驗證嗎?'; +$lang['lettercount'] = '多少字母會被使用(3-16)。如果你增加使用個數,請確保同時加寬圖片長度'; +$lang['width'] = 'CAPTCHA 圖片寬度 (像素)'; +$lang['height'] = 'CAPTCHA 圖片高度 (像素)'; +$lang['question'] = '固定問題模式的問題'; +$lang['answer'] = '固定問題模式的答案'; diff --git a/sources/lib/plugins/captcha/lang/zh/lang.php b/sources/lib/plugins/captcha/lang/zh/lang.php new file mode 100755 index 0000000..7a01198 --- /dev/null +++ b/sources/lib/plugins/captcha/lang/zh/lang.php @@ -0,0 +1,13 @@ + + * @author lainme + */ +$lang['testfailed'] = '抱歉,您输入的验证码不正确。'; +$lang['fillcaptcha'] = '请在输入框中填入验证码以证明您不是机器人。'; +$lang['fillmath'] = '请填入算式的结果以证明您不是机器人。'; +$lang['soundlink'] = '如果您无法阅读图片中的字母,请下载此 .wav 文件。'; +$lang['honeypot'] = '请将此区域留空:'; diff --git a/sources/lib/plugins/captcha/lang/zh/settings.php b/sources/lib/plugins/captcha/lang/zh/settings.php new file mode 100755 index 0000000..03548d9 --- /dev/null +++ b/sources/lib/plugins/captcha/lang/zh/settings.php @@ -0,0 +1,24 @@ + + * @author lainme + * @author 橙子狼 <2949384951@qq.com> + */ +$lang['mode'] = '使用什么类型的验证码?'; +$lang['mode_o_js'] = '文本 (预先由 JavaScript 填写)'; +$lang['mode_o_text'] = '文本 (手动输入)'; +$lang['mode_o_math'] = '算术题'; +$lang['mode_o_question'] = '固定问题'; +$lang['mode_o_image'] = '图片 (无障碍性差)'; +$lang['mode_o_audio'] = '图片+音频 (更好的无障碍性)'; +$lang['mode_o_figlet'] = 'Figlet ASCII 艺术 (无障碍性差)'; +$lang['forusers'] = '对已登入的用户也适用吗?'; +$lang['loginprotect'] = '请输入验证码'; +$lang['lettercount'] = '使用字母的数目 (3-16)。如果您增加数目,请确保同时增加图片的宽度。'; +$lang['width'] = '验证码图片宽度 (像素)'; +$lang['height'] = '验证码图片高度 (像素)'; +$lang['question'] = '固定问题模式的问题'; +$lang['answer'] = '固定问题模式的答案'; diff --git a/sources/lib/plugins/captcha/manager.dat b/sources/lib/plugins/captcha/manager.dat new file mode 100644 index 0000000..757da09 --- /dev/null +++ b/sources/lib/plugins/captcha/manager.dat @@ -0,0 +1,2 @@ +downloadurl=https://github.com/splitbrain/dokuwiki-plugin-captcha/zipball/master +installed=Sun, 20 Nov 2016 19:29:07 +0000 diff --git a/sources/lib/plugins/captcha/plugin.info.txt b/sources/lib/plugins/captcha/plugin.info.txt new file mode 100755 index 0000000..c1b3984 --- /dev/null +++ b/sources/lib/plugins/captcha/plugin.info.txt @@ -0,0 +1,8 @@ +base captcha +author Andreas Gohr +email andi@splitbrain.org +date 2016-07-06 +name CAPTCHA Plugin +desc Use a CAPTCHA challenge to protect DokuWiki against automated spam +url http://www.dokuwiki.org/plugin:captcha + diff --git a/sources/lib/plugins/captcha/script.js b/sources/lib/plugins/captcha/script.js new file mode 100755 index 0000000..3cb402c --- /dev/null +++ b/sources/lib/plugins/captcha/script.js @@ -0,0 +1,32 @@ + +jQuery(function () { + var $wrap = jQuery('#plugin__captcha_wrapper'); + if(!$wrap.length) return; + + /** + * Autofill and hide the whole CAPTCHA stuff in the simple JS mode + */ + var $code = jQuery('#plugin__captcha_code'); + if ($code.length) { + var $box = $wrap.find('input[type=text]'); + $box.first().val($code.text().replace(/([^A-Z])+/g, '')); + $wrap.hide(); + } + + /** + * Add a HTML5 player for the audio version of the CAPTCHA + */ + var $audiolink = $wrap.find('a'); + if($audiolink.length) { + var audio = document.createElement('audio'); + if(audio) { + audio.src = $audiolink.attr('href'); + $wrap.append(audio); + $audiolink.click(function (e) { + audio.play(); + e.preventDefault(); + e.stopPropagation(); + }); + } + } +}); diff --git a/sources/lib/plugins/captcha/sound.png b/sources/lib/plugins/captcha/sound.png new file mode 100755 index 0000000..6056d23 Binary files /dev/null and b/sources/lib/plugins/captcha/sound.png differ diff --git a/sources/lib/plugins/captcha/style.css b/sources/lib/plugins/captcha/style.css new file mode 100755 index 0000000..9f6ec0c --- /dev/null +++ b/sources/lib/plugins/captcha/style.css @@ -0,0 +1,23 @@ +.dokuwiki #plugin__captcha_wrapper img { + margin: 1px; + vertical-align: bottom; + border: 1px solid __border__; +} + +.dokuwiki #plugin__captcha_wrapper pre { + font-size: 70%; + font-family: monospace; + font-weight: bold; + border: none; + background-color: __background__; + color: __text__; + padding: 0; +} + +.dokuwiki #plugin__captcha_wrapper .no { + display: none; +} + +.dokuwiki #plugin__captcha_wrapper { +clear: left; +} diff --git a/sources/lib/plugins/captcha/wav.php b/sources/lib/plugins/captcha/wav.php new file mode 100755 index 0000000..996d52a --- /dev/null +++ b/sources/lib/plugins/captcha/wav.php @@ -0,0 +1,88 @@ + + */ + +if(!defined('DOKU_INC')) define('DOKU_INC', dirname(__FILE__).'/../../../'); +define('NOSESSION', true); +define('DOKU_DISABLE_GZIP_OUTPUT', 1); +require_once(DOKU_INC.'inc/init.php'); +require_once(DOKU_INC.'inc/auth.php'); + +$ID = $_REQUEST['id']; +/** @var $plugin helper_plugin_captcha */ +$plugin = plugin_load('helper', 'captcha'); + +if($plugin->getConf('mode') != 'audio') { + http_status(404); + exit; +} + +$rand = $plugin->decrypt($_REQUEST['secret']); +$code = strtolower($plugin->_generateCAPTCHA($plugin->_fixedIdent(), $rand)); + +// prepare an array of wavfiles +$lc = dirname(__FILE__).'/lang/'.$conf['lang'].'/audio/'; +$en = dirname(__FILE__).'/lang/en/audio/'; +$wavs = array(); +$lettercount = $plugin->getConf('lettercount'); +if($lettercount > strlen($code)) $lettercount = strlen($code); +for($i = 0; $i < $lettercount; $i++) { + $file = $lc.$code{$i}.'.wav'; + if(!@file_exists($file)) $file = $en.$code{$i}.'.wav'; + $wavs[] = $file; +} + +header('Content-type: audio/x-wav'); +header('Content-Disposition: attachment;filename=captcha.wav'); + +echo joinwavs($wavs); + +/** + * Join multiple wav files + * + * All wave files need to have the same format and need to be uncompressed. + * The headers of the last file will be used (with recalculated datasize + * of course) + * + * @link http://ccrma.stanford.edu/CCRMA/Courses/422/projects/WaveFormat/ + * @link http://www.thescripts.com/forum/thread3770.html + */ +function joinwavs($wavs) { + $fields = join( + '/', array( + 'H8ChunkID', 'VChunkSize', 'H8Format', + 'H8Subchunk1ID', 'VSubchunk1Size', + 'vAudioFormat', 'vNumChannels', 'VSampleRate', + 'VByteRate', 'vBlockAlign', 'vBitsPerSample' + ) + ); + + $data = ''; + foreach($wavs as $wav) { + $fp = fopen($wav, 'rb'); + $header = fread($fp, 36); + $info = unpack($fields, $header); + + // read optional extra stuff + if($info['Subchunk1Size'] > 16) { + $header .= fread($fp, ($info['Subchunk1Size'] - 16)); + } + + // read SubChunk2ID + $header .= fread($fp, 4); + + // read Subchunk2Size + $size = unpack('vsize', fread($fp, 4)); + $size = $size['size']; + + // read data + $data .= fread($fp, $size); + } + + return $header.pack('V', strlen($data)).$data; +} + diff --git a/sources/lib/plugins/gallery/README b/sources/lib/plugins/gallery/README new file mode 100755 index 0000000..f003735 --- /dev/null +++ b/sources/lib/plugins/gallery/README @@ -0,0 +1,25 @@ +gallery Plugin for DokuWiki + +All documentation for this plugin can be found at +http://www.dokuwiki.org/plugin:gallery + +If you install this plugin manually, make sure it is installed in +lib/plugins/gallery/ - if the folder is called different it +will not work! + +Please refer to http://www.dokuwiki.org/plugins for additional info +on how to install plugins in DokuWiki. + +---- +Copyright (C) Andreas Gohr + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; version 2 of the License + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +See the COPYING file in your DokuWiki folder for details diff --git a/sources/lib/plugins/gallery/all.less b/sources/lib/plugins/gallery/all.less new file mode 100755 index 0000000..9bafd7d --- /dev/null +++ b/sources/lib/plugins/gallery/all.less @@ -0,0 +1,30 @@ +/* load swipe box */ +@import "swipebox/css/swipebox.less"; + +/* fix image paths */ +#swipebox-slider .slide-loading { + background: url(swipebox/img/loader.gif) no-repeat center center; +} + +#swipebox-prev, +#swipebox-next, +#swipebox-close { + background-image: url(swipebox/img/icons.png); +} + +/* style overrides */ +#swipebox-overlay { + background: rgba(0, 0, 0, 0.95); +} + +#swipebox-top-bar { + div.title { + font-size: 15px; + line-height: 1.5em; + } + div.caption { + font-size: 13px; + line-height: 1.5em; + } + padding: 10px; +} diff --git a/sources/lib/plugins/gallery/conf/default.php b/sources/lib/plugins/gallery/conf/default.php new file mode 100755 index 0000000..f4b511e --- /dev/null +++ b/sources/lib/plugins/gallery/conf/default.php @@ -0,0 +1,15 @@ + + */ + +$conf['thumbnail_width'] = 120; +$conf['thumbnail_height'] = 120; +$conf['image_width'] = 800; +$conf['image_height'] = 600; +$conf['cols'] = 5; + +$conf['sort'] = 'file'; +$conf['options'] = 'cache'; diff --git a/sources/lib/plugins/gallery/conf/metadata.php b/sources/lib/plugins/gallery/conf/metadata.php new file mode 100755 index 0000000..fd25663 --- /dev/null +++ b/sources/lib/plugins/gallery/conf/metadata.php @@ -0,0 +1,16 @@ + + */ + +$meta['thumbnail_width'] = array('numeric'); +$meta['thumbnail_height'] = array('numeric'); +$meta['image_width'] = array('numeric'); +$meta['image_height'] = array('numeric'); +$meta['cols'] = array('numeric'); + +$meta['sort'] = array('multichoice', '_choices' => array('file','mod','date','title')); +$meta['options'] = array('multicheckbox', '_choices' => array('cache','crop','direct','lightbox','random','reverse','showname','showtitle')); + diff --git a/sources/lib/plugins/gallery/deleted.files b/sources/lib/plugins/gallery/deleted.files new file mode 100755 index 0000000..010a113 --- /dev/null +++ b/sources/lib/plugins/gallery/deleted.files @@ -0,0 +1,47 @@ +jquery.prettyPhoto.js +prettyPhoto/dark_rounded/btnNext.png +prettyPhoto/dark_rounded/btnPrevious.png +prettyPhoto/dark_rounded/contentPattern.png +prettyPhoto/dark_rounded/default_thumbnail.gif +prettyPhoto/dark_rounded/loader.gif +prettyPhoto/dark_rounded/sprite.png +prettyPhoto/dark_rounded/ +prettyPhoto/dark_square/btnNext.png +prettyPhoto/dark_square/btnPrevious.png +prettyPhoto/dark_square/contentPattern.png +prettyPhoto/dark_square/default_thumbnail.gif +prettyPhoto/dark_square/loader.gif +prettyPhoto/dark_square/sprite.png +prettyPhoto/dark_square/ +prettyPhoto/default/default_thumb.png +prettyPhoto/default/loader.gif +prettyPhoto/default/sprite.png +prettyPhoto/default/sprite_next.png +prettyPhoto/default/sprite_prev.png +prettyPhoto/default/sprite_x.png +prettyPhoto/default/sprite_y.png +prettyPhoto/default/ +prettyPhoto/facebook/btnNext.png +prettyPhoto/facebook/btnPrevious.png +prettyPhoto/facebook/contentPatternBottom.png +prettyPhoto/facebook/contentPatternLeft.png +prettyPhoto/facebook/contentPatternRight.png +prettyPhoto/facebook/contentPatternTop.png +prettyPhoto/facebook/default_thumbnail.gif +prettyPhoto/facebook/loader.gif +prettyPhoto/facebook/sprite.png +prettyPhoto/facebook/ +prettyPhoto/light_rounded/btnNext.png +prettyPhoto/light_rounded/btnPrevious.png +prettyPhoto/light_rounded/default_thumbnail.gif +prettyPhoto/light_rounded/loader.gif +prettyPhoto/light_rounded/sprite.png +prettyPhoto/light_square/btnNext.png +prettyPhoto/light_square/btnPrevious.png +prettyPhoto/light_square/default_thumbnail.gif +prettyPhoto/light_square/loader.gif +prettyPhoto/light_square/sprite.png +prettyPhoto/light_square/ +prettyPhoto/ +screen.css +style.css diff --git a/sources/lib/plugins/gallery/images/blank.gif b/sources/lib/plugins/gallery/images/blank.gif new file mode 100755 index 0000000..9363639 Binary files /dev/null and b/sources/lib/plugins/gallery/images/blank.gif differ diff --git a/sources/lib/plugins/gallery/images/close.gif b/sources/lib/plugins/gallery/images/close.gif new file mode 100755 index 0000000..46abb0a Binary files /dev/null and b/sources/lib/plugins/gallery/images/close.gif differ diff --git a/sources/lib/plugins/gallery/images/expand.gif b/sources/lib/plugins/gallery/images/expand.gif new file mode 100755 index 0000000..26d9ed0 Binary files /dev/null and b/sources/lib/plugins/gallery/images/expand.gif differ diff --git a/sources/lib/plugins/gallery/images/loading.gif b/sources/lib/plugins/gallery/images/loading.gif new file mode 100755 index 0000000..83d4d3f Binary files /dev/null and b/sources/lib/plugins/gallery/images/loading.gif differ diff --git a/sources/lib/plugins/gallery/images/next.gif b/sources/lib/plugins/gallery/images/next.gif new file mode 100755 index 0000000..6fca51c Binary files /dev/null and b/sources/lib/plugins/gallery/images/next.gif differ diff --git a/sources/lib/plugins/gallery/images/overlay.png b/sources/lib/plugins/gallery/images/overlay.png new file mode 100755 index 0000000..72b76bb Binary files /dev/null and b/sources/lib/plugins/gallery/images/overlay.png differ diff --git a/sources/lib/plugins/gallery/images/overlayie.png b/sources/lib/plugins/gallery/images/overlayie.png new file mode 100755 index 0000000..43c0747 Binary files /dev/null and b/sources/lib/plugins/gallery/images/overlayie.png differ diff --git a/sources/lib/plugins/gallery/images/prev.gif b/sources/lib/plugins/gallery/images/prev.gif new file mode 100755 index 0000000..6901f61 Binary files /dev/null and b/sources/lib/plugins/gallery/images/prev.gif differ diff --git a/sources/lib/plugins/gallery/images/shrink.gif b/sources/lib/plugins/gallery/images/shrink.gif new file mode 100755 index 0000000..ceae8e7 Binary files /dev/null and b/sources/lib/plugins/gallery/images/shrink.gif differ diff --git a/sources/lib/plugins/gallery/lang/ar/lang.php b/sources/lib/plugins/gallery/lang/ar/lang.php new file mode 100755 index 0000000..6c2b3ef --- /dev/null +++ b/sources/lib/plugins/gallery/lang/ar/lang.php @@ -0,0 +1,9 @@ + + */ +$lang['pages'] = 'صفحات المعرض '; +$lang['js']['addgal'] = 'أضف نطاق كامعرض '; diff --git a/sources/lib/plugins/gallery/lang/ar/settings.php b/sources/lib/plugins/gallery/lang/ar/settings.php new file mode 100755 index 0000000..d6113cb --- /dev/null +++ b/sources/lib/plugins/gallery/lang/ar/settings.php @@ -0,0 +1,18 @@ + + */ +$lang['thumbnail_width'] = 'عرض الصورة المصغرة'; +$lang['thumbnail_height'] = 'طول الصورة المصغرة '; +$lang['image_width'] = 'عرض الصورة '; +$lang['image_height'] = 'ارتفاع الصورة '; +$lang['cols'] = 'صورة لكل صف'; +$lang['sort'] = 'كيف تريد ترتيب صورة المعرض '; +$lang['sort_o_file'] = 'ترتيب حسب اسم الملف'; +$lang['sort_o_mod'] = 'ترتيب حسب تاريخ الملف'; +$lang['sort_o_date'] = 'ترتيب حسب التاريخ المسجل في تفاصيل الملفات'; +$lang['sort_o_title'] = 'ترتيب حسب الاسم المسجل في تفاصيل الملفات'; +$lang['options'] = 'اعدادت اضافية للمعرض '; diff --git a/sources/lib/plugins/gallery/lang/ca/lang.php b/sources/lib/plugins/gallery/lang/ca/lang.php new file mode 100755 index 0000000..2e42315 --- /dev/null +++ b/sources/lib/plugins/gallery/lang/ca/lang.php @@ -0,0 +1,9 @@ + + */ +$lang['pages'] = 'Pàgines de la galeria'; +$lang['js']['addgal'] = 'Afegeix un espai com a galeria'; diff --git a/sources/lib/plugins/gallery/lang/ca/settings.php b/sources/lib/plugins/gallery/lang/ca/settings.php new file mode 100755 index 0000000..4b93619 --- /dev/null +++ b/sources/lib/plugins/gallery/lang/ca/settings.php @@ -0,0 +1,18 @@ + + */ +$lang['thumbnail_width'] = 'Amplada de la miniatura'; +$lang['thumbnail_height'] = 'Alçada de la miniatura'; +$lang['image_width'] = 'Amplada de la imatge'; +$lang['image_height'] = 'Alçada de la imatge'; +$lang['cols'] = 'Imatges per fila'; +$lang['sort'] = 'Com ordenar les imatges'; +$lang['sort_o_file'] = 'Ordenar per nom de l\'arxiu'; +$lang['sort_o_mod'] = 'Ordenar per data de l\'arxiu'; +$lang['sort_o_date'] = 'Ordenar per la data de l\'EXIF'; +$lang['sort_o_title'] = 'Ordenar pel títol de l\'EXIF'; +$lang['options'] = 'Opcions predeterminades de galeria adicionals'; diff --git a/sources/lib/plugins/gallery/lang/cs/lang.php b/sources/lib/plugins/gallery/lang/cs/lang.php new file mode 100755 index 0000000..cca690a --- /dev/null +++ b/sources/lib/plugins/gallery/lang/cs/lang.php @@ -0,0 +1,9 @@ + + */ +$lang['pages'] = 'Stránky galerie:'; +$lang['js']['addgal'] = 'Přidat jmenný prostor jako galerii'; diff --git a/sources/lib/plugins/gallery/lang/cs/settings.php b/sources/lib/plugins/gallery/lang/cs/settings.php new file mode 100755 index 0000000..13d7ad8 --- /dev/null +++ b/sources/lib/plugins/gallery/lang/cs/settings.php @@ -0,0 +1,19 @@ + + * @author Jaroslav Lichtblau + */ +$lang['thumbnail_width'] = 'Šířka náhledu'; +$lang['thumbnail_height'] = 'Výška náhledu'; +$lang['image_width'] = 'Šířka obrázku'; +$lang['image_height'] = 'Výška obrázku'; +$lang['cols'] = 'Obrázků na řádku'; +$lang['sort'] = 'Jak řadit obrázky v galerii'; +$lang['sort_o_file'] = 'řadit podle jména souboru'; +$lang['sort_o_mod'] = 'řadit podle data souboru'; +$lang['sort_o_date'] = 'řadit podle EXIF data'; +$lang['sort_o_title'] = 'řadit podle EXIF jména'; +$lang['options'] = 'Dodatečná výchozí nastavení galerie'; diff --git a/sources/lib/plugins/gallery/lang/cy/lang.php b/sources/lib/plugins/gallery/lang/cy/lang.php new file mode 100644 index 0000000..1b04ea7 --- /dev/null +++ b/sources/lib/plugins/gallery/lang/cy/lang.php @@ -0,0 +1,9 @@ + + */ +$lang['pages'] = 'Tudalennau Oriel:'; +$lang['js']['addgal'] = 'Ychwanegu namespace fel oriel'; diff --git a/sources/lib/plugins/gallery/lang/cy/settings.php b/sources/lib/plugins/gallery/lang/cy/settings.php new file mode 100644 index 0000000..2454497 --- /dev/null +++ b/sources/lib/plugins/gallery/lang/cy/settings.php @@ -0,0 +1,18 @@ + + */ +$lang['thumbnail_width'] = 'Lled bawdlun'; +$lang['thumbnail_height'] = 'Uchder bawdlun'; +$lang['image_width'] = 'Lled delwedd'; +$lang['image_height'] = 'Uchder delwedd'; +$lang['cols'] = 'Delweddau y rhes'; +$lang['sort'] = 'Sut i drefnu delweddau\'r oriel'; +$lang['sort_o_file'] = 'trefnu gan enw ffeil'; +$lang['sort_o_mod'] = 'trefnu gan ddyddiad ffeil'; +$lang['sort_o_date'] = 'trefnu gan ddyddiad EXIF'; +$lang['sort_o_title'] = 'trefnu gan deitl EXIF'; +$lang['options'] = 'Opsiynau diofyn ychwanegol oriel'; diff --git a/sources/lib/plugins/gallery/lang/da/lang.php b/sources/lib/plugins/gallery/lang/da/lang.php new file mode 100755 index 0000000..4d5ce88 --- /dev/null +++ b/sources/lib/plugins/gallery/lang/da/lang.php @@ -0,0 +1,9 @@ + + */ +$lang['pages'] = 'Gallerisider:'; +$lang['js']['addgal'] = 'Tilføj navnerum som galleri'; diff --git a/sources/lib/plugins/gallery/lang/da/settings.php b/sources/lib/plugins/gallery/lang/da/settings.php new file mode 100755 index 0000000..9ca4ec6 --- /dev/null +++ b/sources/lib/plugins/gallery/lang/da/settings.php @@ -0,0 +1,18 @@ + + */ +$lang['thumbnail_width'] = 'Miniaturebillede bredde'; +$lang['thumbnail_height'] = 'Miniaturebillede højde'; +$lang['image_width'] = 'Billede bredde'; +$lang['image_height'] = 'Billede højde'; +$lang['cols'] = 'Billeder per række'; +$lang['sort'] = 'Sortér galleribilleder efter'; +$lang['sort_o_file'] = 'sortér efter filnavn'; +$lang['sort_o_mod'] = 'sortér efter fildato'; +$lang['sort_o_date'] = 'sortér efter EXIF dato'; +$lang['sort_o_title'] = 'sortér efter EXIF titel'; +$lang['options'] = 'Yderligere galleri-standardindstillinger'; diff --git a/sources/lib/plugins/gallery/lang/de/lang.php b/sources/lib/plugins/gallery/lang/de/lang.php new file mode 100755 index 0000000..4918657 --- /dev/null +++ b/sources/lib/plugins/gallery/lang/de/lang.php @@ -0,0 +1,9 @@ + + */ +$lang['pages'] = 'Galerie-Seiten:'; +$lang['js']['addgal'] = 'Namensraum als Galerie hinzufügen'; diff --git a/sources/lib/plugins/gallery/lang/de/settings.php b/sources/lib/plugins/gallery/lang/de/settings.php new file mode 100755 index 0000000..7e52a65 --- /dev/null +++ b/sources/lib/plugins/gallery/lang/de/settings.php @@ -0,0 +1,18 @@ + + */ +$lang['thumbnail_width'] = 'Vorschaubildbreite'; +$lang['thumbnail_height'] = 'Vorschaubildhöhe'; +$lang['image_width'] = 'Bildbreite'; +$lang['image_height'] = 'Bildhöhe'; +$lang['cols'] = 'Bilder pro Zeile'; +$lang['sort'] = 'Sortierung der Galeriebilder'; +$lang['sort_o_file'] = 'nach Dateiname sortieren'; +$lang['sort_o_mod'] = 'nach Dateidatum sortieren'; +$lang['sort_o_date'] = 'nach EXIF-Datum sortieren'; +$lang['sort_o_title'] = 'nach EXIF-Titel sortieren'; +$lang['options'] = 'Zusätzliche Galerie Standard-Einstellungen'; diff --git a/sources/lib/plugins/gallery/lang/en/lang.php b/sources/lib/plugins/gallery/lang/en/lang.php new file mode 100755 index 0000000..85df9a3 --- /dev/null +++ b/sources/lib/plugins/gallery/lang/en/lang.php @@ -0,0 +1,4 @@ + + * @author Andreas Gohr + */ + +$lang['thumbnail_width'] = 'Thumbnail image width'; +$lang['thumbnail_height'] = 'Thumbnail image height'; +$lang['image_width'] = 'Image width'; +$lang['image_height'] = 'Image height'; +$lang['cols'] = 'Images per row'; + +$lang['sort'] = 'How to sort the gallery images'; +$lang['sort_o_file'] = 'sort by filename'; +$lang['sort_o_mod'] = 'sort by file date'; +$lang['sort_o_date'] = 'sort by EXIF date'; +$lang['sort_o_title'] = 'sort by EXIF title'; + +$lang['options'] = 'Additional gallery default options'; + diff --git a/sources/lib/plugins/gallery/lang/eo/lang.php b/sources/lib/plugins/gallery/lang/eo/lang.php new file mode 100755 index 0000000..7f648cf --- /dev/null +++ b/sources/lib/plugins/gallery/lang/eo/lang.php @@ -0,0 +1,9 @@ + + */ +$lang['pages'] = 'Galeripaĝoj:'; +$lang['js']['addgal'] = 'Aldoni nomspacon kiel galerio'; diff --git a/sources/lib/plugins/gallery/lang/eo/settings.php b/sources/lib/plugins/gallery/lang/eo/settings.php new file mode 100755 index 0000000..7d26c30 --- /dev/null +++ b/sources/lib/plugins/gallery/lang/eo/settings.php @@ -0,0 +1,18 @@ + + */ +$lang['thumbnail_width'] = 'Bildeta larĝeco'; +$lang['thumbnail_height'] = 'Bildeta alteco'; +$lang['image_width'] = 'Bildlarĝeco'; +$lang['image_height'] = 'Bildalteco'; +$lang['cols'] = 'Bildoj po vico'; +$lang['sort'] = 'Kiel ordigi la galeribildojn'; +$lang['sort_o_file'] = 'ordigi per dosier-nomo'; +$lang['sort_o_mod'] = 'ordigi per dosier-dato'; +$lang['sort_o_date'] = 'ordigi per EXIF-dato'; +$lang['sort_o_title'] = 'ordigi per EXIF-titolo'; +$lang['options'] = 'Aldonaj galeriaj standardaj opcioj'; diff --git a/sources/lib/plugins/gallery/lang/es/lang.php b/sources/lib/plugins/gallery/lang/es/lang.php new file mode 100755 index 0000000..8de8a56 --- /dev/null +++ b/sources/lib/plugins/gallery/lang/es/lang.php @@ -0,0 +1,10 @@ + + * @author Domingo Redal + */ +$lang['pages'] = 'Páginas de Galería'; +$lang['js']['addgal'] = 'Añadir espacio de nombres de galería'; diff --git a/sources/lib/plugins/gallery/lang/es/settings.php b/sources/lib/plugins/gallery/lang/es/settings.php new file mode 100755 index 0000000..393e24a --- /dev/null +++ b/sources/lib/plugins/gallery/lang/es/settings.php @@ -0,0 +1,19 @@ + + * @author Domingo Redal + */ +$lang['thumbnail_width'] = 'Ancho de la miniatura de la imagen'; +$lang['thumbnail_height'] = 'Alto de la miniatura de la imagen'; +$lang['image_width'] = 'Ancho de la imagen'; +$lang['image_height'] = 'Alto de la imagen'; +$lang['cols'] = 'Imágenes por fila'; +$lang['sort'] = 'Como ordenar las imágenes de la galería'; +$lang['sort_o_file'] = 'ordenar por nombre de archivo'; +$lang['sort_o_mod'] = 'ordenar por fecha de archivo'; +$lang['sort_o_date'] = 'ordenar por fecha EXIF'; +$lang['sort_o_title'] = 'ordenar por titulo EXIF'; +$lang['options'] = 'Opciones predeterminadas adicionales de la galería'; diff --git a/sources/lib/plugins/gallery/lang/fa/lang.php b/sources/lib/plugins/gallery/lang/fa/lang.php new file mode 100644 index 0000000..6019eda --- /dev/null +++ b/sources/lib/plugins/gallery/lang/fa/lang.php @@ -0,0 +1,9 @@ + + */ +$lang['pages'] = 'صفحه‌های گالری:'; +$lang['js']['addgal'] = 'اضافه کردن فضای نام به‌عنوان گالری'; diff --git a/sources/lib/plugins/gallery/lang/fa/settings.php b/sources/lib/plugins/gallery/lang/fa/settings.php new file mode 100644 index 0000000..60cffd8 --- /dev/null +++ b/sources/lib/plugins/gallery/lang/fa/settings.php @@ -0,0 +1,18 @@ + + */ +$lang['thumbnail_width'] = 'عرض تصویر بند انگشتی'; +$lang['thumbnail_height'] = 'طول تصویر بند انگشتی'; +$lang['image_width'] = 'عرض تصویر'; +$lang['image_height'] = 'طول تصویر'; +$lang['cols'] = 'عکس در هر ردیف'; +$lang['sort'] = 'چگونگی مرتب سازی تصاویر گالری'; +$lang['sort_o_file'] = 'مرتب کردن توسط نام فایل'; +$lang['sort_o_mod'] = 'مرتب‌ کردن توسط تاریخ فایل'; +$lang['sort_o_date'] = 'مرتب کردن توسط تاریخ EXIF'; +$lang['sort_o_title'] = 'مرتب کردن توسط عنوان EXIF'; +$lang['options'] = 'اضافی کردن گزینه‌های پیش‌فرض گالری'; diff --git a/sources/lib/plugins/gallery/lang/fr/lang.php b/sources/lib/plugins/gallery/lang/fr/lang.php new file mode 100755 index 0000000..8b58603 --- /dev/null +++ b/sources/lib/plugins/gallery/lang/fr/lang.php @@ -0,0 +1,11 @@ + + * @author NicolasFriedli + * @author Schplurtz le Déboulonné + */ +$lang['pages'] = 'Pages galerie:'; +$lang['js']['addgal'] = 'Utiliser cette catégorie comme galerie'; diff --git a/sources/lib/plugins/gallery/lang/fr/settings.php b/sources/lib/plugins/gallery/lang/fr/settings.php new file mode 100755 index 0000000..504b2cd --- /dev/null +++ b/sources/lib/plugins/gallery/lang/fr/settings.php @@ -0,0 +1,20 @@ + + * @author Emmanuel Dupin + * @author NicolasFriedli + */ +$lang['thumbnail_width'] = 'Largeur des miniatures'; +$lang['thumbnail_height'] = 'Hauteur des miniatures'; +$lang['image_width'] = 'Largeur des images'; +$lang['image_height'] = 'Hauteur des images'; +$lang['cols'] = 'Nombre d\'images par ligne'; +$lang['sort'] = 'Critère de tri des images'; +$lang['sort_o_file'] = 'trier par nom du fichier'; +$lang['sort_o_mod'] = 'trier par date de modification du fichier'; +$lang['sort_o_date'] = 'trier par date EXIF'; +$lang['sort_o_title'] = 'trier par titre EXIF'; +$lang['options'] = 'Options par défaut supplémentaires'; diff --git a/sources/lib/plugins/gallery/lang/hu/lang.php b/sources/lib/plugins/gallery/lang/hu/lang.php new file mode 100755 index 0000000..5f00fbe --- /dev/null +++ b/sources/lib/plugins/gallery/lang/hu/lang.php @@ -0,0 +1,9 @@ + + */ +$lang['pages'] = 'Képgaléria oldalai:'; +$lang['js']['addgal'] = 'Névtér hozzáadása képgalériaként'; diff --git a/sources/lib/plugins/gallery/lang/hu/settings.php b/sources/lib/plugins/gallery/lang/hu/settings.php new file mode 100755 index 0000000..4e11d1b --- /dev/null +++ b/sources/lib/plugins/gallery/lang/hu/settings.php @@ -0,0 +1,18 @@ + + */ +$lang['thumbnail_width'] = 'Bélyegkép szélessége'; +$lang['thumbnail_height'] = 'Bélyegkép magassága'; +$lang['image_width'] = 'Képszélesség'; +$lang['image_height'] = 'Képmagasság'; +$lang['cols'] = 'Képek száma soronként'; +$lang['sort'] = 'Galériaképek rendezése'; +$lang['sort_o_file'] = 'Fájlok neve szerint'; +$lang['sort_o_mod'] = 'Fájlok dátuma szerint'; +$lang['sort_o_date'] = 'EXIF-dátum szerint'; +$lang['sort_o_title'] = 'EXIF-cím szerint'; +$lang['options'] = 'További alapértelmezett beállítások'; diff --git a/sources/lib/plugins/gallery/lang/it/settings.php b/sources/lib/plugins/gallery/lang/it/settings.php new file mode 100755 index 0000000..d5d367a --- /dev/null +++ b/sources/lib/plugins/gallery/lang/it/settings.php @@ -0,0 +1,18 @@ + + * @author Diego Pierotto + */ + +$lang['thumbnail_width'] = 'Larghezza immagine anteprima'; +$lang['thumbnail_height'] = 'Altezza immagine anteprima'; +$lang['image_width'] = 'Larghezza immagine'; +$lang['image_height'] = 'Altezza immagine'; +$lang['cols'] = 'Immagini per riga'; +$lang['direct'] = 'Collegamento direct'; +$lang['lightbox'] = 'Utilizza Lightbox (implica il collegamento diretto)'; +$lang['showname'] = 'Mostra nome file immagine'; +$lang['reverse'] = 'Inverti ordine'; +$lang['js_ok'] = 'Allow javascript urls'; diff --git a/sources/lib/plugins/gallery/lang/ja/lang.php b/sources/lib/plugins/gallery/lang/ja/lang.php new file mode 100755 index 0000000..734ad14 --- /dev/null +++ b/sources/lib/plugins/gallery/lang/ja/lang.php @@ -0,0 +1,9 @@ + + */ +$lang['pages'] = 'ギャラリー・ページ'; +$lang['js']['addgal'] = '名前空間の追加'; diff --git a/sources/lib/plugins/gallery/lang/ja/settings.php b/sources/lib/plugins/gallery/lang/ja/settings.php new file mode 100755 index 0000000..d7af76e --- /dev/null +++ b/sources/lib/plugins/gallery/lang/ja/settings.php @@ -0,0 +1,18 @@ + + */ +$lang['thumbnail_width'] = 'サムネイル画像の幅'; +$lang['thumbnail_height'] = 'サムネイル画像の高さ'; +$lang['image_width'] = '画像の幅'; +$lang['image_height'] = '画像の高さ'; +$lang['cols'] = '一行の画像数'; +$lang['sort'] = '画像のソート方法'; +$lang['sort_o_file'] = 'ファイル名順'; +$lang['sort_o_mod'] = 'ファイル日付順'; +$lang['sort_o_date'] = 'EXIF日付順'; +$lang['sort_o_title'] = 'EXIFタイトル順'; +$lang['options'] = 'デフォルトに追加するギャラリーのオプション'; diff --git a/sources/lib/plugins/gallery/lang/ko/lang.php b/sources/lib/plugins/gallery/lang/ko/lang.php new file mode 100755 index 0000000..aadb882 --- /dev/null +++ b/sources/lib/plugins/gallery/lang/ko/lang.php @@ -0,0 +1,8 @@ + + * @author Andreas Gohr + * @author SC Yoo + * @author Myeongjin + */ +$lang['thumbnail_width'] = '섬네일 그림 너비'; +$lang['thumbnail_height'] = '섬네일 그림 높이'; +$lang['image_width'] = '그림 너비'; +$lang['image_height'] = '그림 높이'; +$lang['cols'] = '열당 그림 수'; +$lang['sort'] = '갤러리 그림 정렬 방법'; +$lang['sort_o_file'] = '파일 이름 순서로 정렬'; +$lang['sort_o_mod'] = '파일 날짜 순서로 정렬'; +$lang['sort_o_date'] = 'EXIF 날짜 순서로 정렬'; +$lang['sort_o_title'] = 'EXIF 제목 순서로 정렬'; +$lang['options'] = '추가적인 갤러리 기본 설정'; diff --git a/sources/lib/plugins/gallery/lang/nl/lang.php b/sources/lib/plugins/gallery/lang/nl/lang.php new file mode 100755 index 0000000..7703677 --- /dev/null +++ b/sources/lib/plugins/gallery/lang/nl/lang.php @@ -0,0 +1,9 @@ + + */ +$lang['pages'] = 'Beeldreeks pagina\'s:'; +$lang['js']['addgal'] = 'Voeg naamruimte toe als beeldreeks'; diff --git a/sources/lib/plugins/gallery/lang/nl/settings.php b/sources/lib/plugins/gallery/lang/nl/settings.php new file mode 100755 index 0000000..f1cd4de --- /dev/null +++ b/sources/lib/plugins/gallery/lang/nl/settings.php @@ -0,0 +1,18 @@ + + */ +$lang['thumbnail_width'] = 'Breedte van het miniatuur beeld'; +$lang['thumbnail_height'] = 'Hoogte van het miniatuur beeld'; +$lang['image_width'] = 'Beeld breedte'; +$lang['image_height'] = 'Beeld hoogte'; +$lang['cols'] = 'Aantal beelden per rij'; +$lang['sort'] = 'Hoe de beeldreeks sorteren'; +$lang['sort_o_file'] = 'sorteren op bestandsnaam'; +$lang['sort_o_mod'] = 'sorteren op bestandsdatum'; +$lang['sort_o_date'] = 'sorteren op EXIF datum'; +$lang['sort_o_title'] = 'sorteren op EXIF titel'; +$lang['options'] = 'Bijkomende beeldreeks verstek opties'; diff --git a/sources/lib/plugins/gallery/lang/no/lang.php b/sources/lib/plugins/gallery/lang/no/lang.php new file mode 100755 index 0000000..40683a8 --- /dev/null +++ b/sources/lib/plugins/gallery/lang/no/lang.php @@ -0,0 +1,9 @@ + + */ +$lang['pages'] = 'Bildesider:'; +$lang['js']['addgal'] = 'Navnerom som bildearkiv'; diff --git a/sources/lib/plugins/gallery/lang/no/settings.php b/sources/lib/plugins/gallery/lang/no/settings.php new file mode 100755 index 0000000..0e0bb6a --- /dev/null +++ b/sources/lib/plugins/gallery/lang/no/settings.php @@ -0,0 +1,18 @@ + + */ +$lang['thumbnail_width'] = 'Miniatyrbilde bredde'; +$lang['thumbnail_height'] = 'Miniatyrbilde høyde'; +$lang['image_width'] = 'Bildebredde'; +$lang['image_height'] = 'Bildehøyde'; +$lang['cols'] = 'Bilder pr. rad'; +$lang['sort'] = 'Sortering av bildene'; +$lang['sort_o_file'] = 'sorter etter filnavn'; +$lang['sort_o_mod'] = 'sorter etter fildato'; +$lang['sort_o_date'] = 'sorter etter EXIF dato'; +$lang['sort_o_title'] = 'sorter etter EXIT tittel'; +$lang['options'] = 'Andre standardvalg for bildearkivet'; diff --git a/sources/lib/plugins/gallery/lang/pt-br/lang.php b/sources/lib/plugins/gallery/lang/pt-br/lang.php new file mode 100755 index 0000000..2f3d09d --- /dev/null +++ b/sources/lib/plugins/gallery/lang/pt-br/lang.php @@ -0,0 +1,9 @@ + + */ +$lang['pages'] = 'Páginas da galeria:'; +$lang['js']['addgal'] = 'Adicionar domínio como galeria'; diff --git a/sources/lib/plugins/gallery/lang/pt-br/settings.php b/sources/lib/plugins/gallery/lang/pt-br/settings.php new file mode 100755 index 0000000..c942a47 --- /dev/null +++ b/sources/lib/plugins/gallery/lang/pt-br/settings.php @@ -0,0 +1,18 @@ + + */ +$lang['thumbnail_width'] = 'Largura da imagem miniatura'; +$lang['thumbnail_height'] = 'Altura da imagem miniatura'; +$lang['image_width'] = 'Largura da imagem'; +$lang['image_height'] = 'Altura da imagem'; +$lang['cols'] = 'Imagens por linha'; +$lang['sort'] = 'Como ordenar as imagens da galeria'; +$lang['sort_o_file'] = 'ordenar por nome do arquivo'; +$lang['sort_o_mod'] = 'ordenar por data do arquivo'; +$lang['sort_o_date'] = 'ordenar por data EXIF'; +$lang['sort_o_title'] = 'ordenar por título EXIF'; +$lang['options'] = 'Opções padrão da galeria adicional'; diff --git a/sources/lib/plugins/gallery/lang/ru/lang.php b/sources/lib/plugins/gallery/lang/ru/lang.php new file mode 100755 index 0000000..752ca12 --- /dev/null +++ b/sources/lib/plugins/gallery/lang/ru/lang.php @@ -0,0 +1,9 @@ + + */ +$lang['pages'] = 'Страницы галереи:'; +$lang['js']['addgal'] = 'Добавить пространство имён как галерею'; diff --git a/sources/lib/plugins/gallery/lang/ru/settings.php b/sources/lib/plugins/gallery/lang/ru/settings.php new file mode 100755 index 0000000..1830149 --- /dev/null +++ b/sources/lib/plugins/gallery/lang/ru/settings.php @@ -0,0 +1,18 @@ + + */ +$lang['thumbnail_width'] = 'Ширина миниатюры изображения'; +$lang['thumbnail_height'] = 'Высота миниатюры изображения'; +$lang['image_width'] = 'Ширина изображения'; +$lang['image_height'] = 'Высота изображения'; +$lang['cols'] = 'Изображения в ряд'; +$lang['sort'] = 'Как сортировать изображения в галерее'; +$lang['sort_o_file'] = 'сортировать по имени файла'; +$lang['sort_o_mod'] = 'сортировать по дате файла'; +$lang['sort_o_date'] = 'сортировать по EXIF-дате'; +$lang['sort_o_title'] = 'сортировать по EXIF-заголовку'; +$lang['options'] = 'Дополнительные опции'; diff --git a/sources/lib/plugins/gallery/lang/sk/lang.php b/sources/lib/plugins/gallery/lang/sk/lang.php new file mode 100755 index 0000000..191afa9 --- /dev/null +++ b/sources/lib/plugins/gallery/lang/sk/lang.php @@ -0,0 +1,9 @@ + + */ +$lang['pages'] = 'Stránky galérie:'; +$lang['js']['addgal'] = 'Pridaj menný priestor ako galériu'; diff --git a/sources/lib/plugins/gallery/lang/sk/settings.php b/sources/lib/plugins/gallery/lang/sk/settings.php new file mode 100755 index 0000000..4fe1a3d --- /dev/null +++ b/sources/lib/plugins/gallery/lang/sk/settings.php @@ -0,0 +1,18 @@ + + */ +$lang['thumbnail_width'] = 'Šírka náhľadu'; +$lang['thumbnail_height'] = 'Výška náhľadu'; +$lang['image_width'] = 'Šírka obrázku'; +$lang['image_height'] = 'Výška obrázku'; +$lang['cols'] = 'Počet obrázkov na riadok'; +$lang['sort'] = 'Spôsob triedenia obrázkov galérie'; +$lang['sort_o_file'] = 'triedenie podľa mena'; +$lang['sort_o_mod'] = 'triedenie podľa dátumu'; +$lang['sort_o_date'] = 'triedenie podľa EXIF dátumu'; +$lang['sort_o_title'] = 'triedenie podľa EXIF názvu'; +$lang['options'] = 'Dodatočné imlicitné voľby galérie'; diff --git a/sources/lib/plugins/gallery/lang/ta/lang.php b/sources/lib/plugins/gallery/lang/ta/lang.php new file mode 100755 index 0000000..f28f650 --- /dev/null +++ b/sources/lib/plugins/gallery/lang/ta/lang.php @@ -0,0 +1,9 @@ + + */ +$lang['pages'] = 'பட தொகுப்பு பக்கங்கள் '; +$lang['js']['addgal'] = 'பட தொகுப்பை பெயர்வேளியாக சேர் '; diff --git a/sources/lib/plugins/gallery/lang/ta/settings.php b/sources/lib/plugins/gallery/lang/ta/settings.php new file mode 100755 index 0000000..77b50fe --- /dev/null +++ b/sources/lib/plugins/gallery/lang/ta/settings.php @@ -0,0 +1,18 @@ + + */ +$lang['thumbnail_width'] = 'சிறு படத்தின் உயரம்'; +$lang['thumbnail_height'] = 'சிறு படத்தின் அகலம் '; +$lang['image_width'] = 'படத்தின் அகலம்'; +$lang['image_height'] = 'படத்தின் உயரம்'; +$lang['cols'] = 'ஒரு வரிசையில் எத்தனை படங்கள் '; +$lang['sort'] = 'இந்த பட தொகுப்பை எப்படி வகைப்படுத்துவது '; +$lang['sort_o_file'] = 'கோப்பின் பெயரை வைத்து வகைப்படுத்து '; +$lang['sort_o_mod'] = 'கோப்பின் தேதியை வைத்து வகைப்படுத்து '; +$lang['sort_o_date'] = 'EXIF தேதியை வைத்து வகைப்படுத்து'; +$lang['sort_o_title'] = 'EXIF பெயரை வைத்து வகைப்படுத்து'; +$lang['options'] = 'கூடுதல் படத் தொகுப்பின் முன்னிருப்பு விருப்பங்கள் '; diff --git a/sources/lib/plugins/gallery/lang/tr/lang.php b/sources/lib/plugins/gallery/lang/tr/lang.php new file mode 100755 index 0000000..5d294b4 --- /dev/null +++ b/sources/lib/plugins/gallery/lang/tr/lang.php @@ -0,0 +1,10 @@ + + * @author ilker Rifat Kapaç + */ +$lang['pages'] = 'Sergi Sayfaları'; +$lang['js']['addgal'] = 'İsimalanını sergi olarak ekle'; diff --git a/sources/lib/plugins/gallery/lang/tr/settings.php b/sources/lib/plugins/gallery/lang/tr/settings.php new file mode 100755 index 0000000..3e56595 --- /dev/null +++ b/sources/lib/plugins/gallery/lang/tr/settings.php @@ -0,0 +1,19 @@ + + * @author ilker Rifat Kapaç + */ +$lang['thumbnail_width'] = 'Küçük resim genişliği'; +$lang['thumbnail_height'] = 'Küçük resim yüksekliği'; +$lang['image_width'] = 'Resim genişliği'; +$lang['image_height'] = 'Resim yüksekliği'; +$lang['cols'] = 'Satır başına görüntü sayısı'; +$lang['sort'] = 'Sergi resimleri nasıl sıralansın'; +$lang['sort_o_file'] = 'Dosya adına göre sırala'; +$lang['sort_o_mod'] = 'Dosya tarihine göre sıralama'; +$lang['sort_o_date'] = 'EXIF tarihine göre sırala'; +$lang['sort_o_title'] = 'EXIF başlığına göre sırala'; +$lang['options'] = 'İlave serginin varsayılan seçenekleri'; diff --git a/sources/lib/plugins/gallery/lang/zh-tw/lang.php b/sources/lib/plugins/gallery/lang/zh-tw/lang.php new file mode 100755 index 0000000..52cec3e --- /dev/null +++ b/sources/lib/plugins/gallery/lang/zh-tw/lang.php @@ -0,0 +1,9 @@ + + */ +$lang['pages'] = '相簿頁碼'; +$lang['js']['addgal'] = '添加作為相簿的名字空間'; diff --git a/sources/lib/plugins/gallery/lang/zh-tw/settings.php b/sources/lib/plugins/gallery/lang/zh-tw/settings.php new file mode 100755 index 0000000..7883577 --- /dev/null +++ b/sources/lib/plugins/gallery/lang/zh-tw/settings.php @@ -0,0 +1,18 @@ + + */ +$lang['thumbnail_width'] = '縮圖的寬度'; +$lang['thumbnail_height'] = '縮圖的高度'; +$lang['image_width'] = '圖像寬度'; +$lang['image_height'] = '圖像高度'; +$lang['cols'] = '每一列的圖像數'; +$lang['sort'] = '相簿圖像要如何排序?'; +$lang['sort_o_file'] = '依檔名排序'; +$lang['sort_o_mod'] = '依建檔日期排序'; +$lang['sort_o_date'] = '依EXIF日期排序'; +$lang['sort_o_title'] = '依EXIF標題排序'; +$lang['options'] = '額外的相簿預設選項'; diff --git a/sources/lib/plugins/gallery/lang/zh/lang.php b/sources/lib/plugins/gallery/lang/zh/lang.php new file mode 100755 index 0000000..daf90a9 --- /dev/null +++ b/sources/lib/plugins/gallery/lang/zh/lang.php @@ -0,0 +1,9 @@ + + */ +$lang['pages'] = '相册页面'; +$lang['js']['addgal'] = '将命名空间添加为相册'; diff --git a/sources/lib/plugins/gallery/lang/zh/settings.php b/sources/lib/plugins/gallery/lang/zh/settings.php new file mode 100755 index 0000000..91f5198 --- /dev/null +++ b/sources/lib/plugins/gallery/lang/zh/settings.php @@ -0,0 +1,18 @@ + + */ +$lang['thumbnail_width'] = '缩略图宽度'; +$lang['thumbnail_height'] = '缩略图高度'; +$lang['image_width'] = '图片宽度'; +$lang['image_height'] = '图片高度'; +$lang['cols'] = '每行图片数'; +$lang['sort'] = '图片排序方式'; +$lang['sort_o_file'] = '按文件名'; +$lang['sort_o_mod'] = '按文件时间'; +$lang['sort_o_date'] = '按 EXIF 时间'; +$lang['sort_o_title'] = '按 EXIT 标题'; +$lang['options'] = '附加相册默认选项'; diff --git a/sources/lib/plugins/gallery/manager.dat b/sources/lib/plugins/gallery/manager.dat new file mode 100644 index 0000000..d8c2844 --- /dev/null +++ b/sources/lib/plugins/gallery/manager.dat @@ -0,0 +1,2 @@ +downloadurl=https://github.com/splitbrain/dokuwiki-plugin-gallery/zipball/master +installed=Sun, 20 Nov 2016 19:29:16 +0000 diff --git a/sources/lib/plugins/gallery/plugin.info.txt b/sources/lib/plugins/gallery/plugin.info.txt new file mode 100755 index 0000000..dac8442 --- /dev/null +++ b/sources/lib/plugins/gallery/plugin.info.txt @@ -0,0 +1,7 @@ +base gallery +author Andreas Gohr +email andi@splitbrain.org +date 2016-06-15 +name Gallery Plugin +desc Creates a gallery of images from a namespace or RSS/ATOM feed +url http://www.dokuwiki.org/plugin:gallery diff --git a/sources/lib/plugins/gallery/screen.less b/sources/lib/plugins/gallery/screen.less new file mode 100755 index 0000000..9536404 --- /dev/null +++ b/sources/lib/plugins/gallery/screen.less @@ -0,0 +1,60 @@ +div.dokuwiki div.gallery table { + border: none; +} +div.dokuwiki div.gallery table td { + padding: 1em; + text-align: center; + vertical-align: middle; + border: none; +} + +div.dokuwiki div.gallery table img.tn { + padding: 0.4em; + border: 1px solid __border__; + max-width: none; +} + +div.dokuwiki div.gallery { + clear: left; + margin-bottom: 1em; +} + +/*div.dokuwiki div.gallery div { + * float: left; + * }*/ + +div.dokuwiki div.gallery img.tn { + margin: 9px; + vertical-align: middle; + padding: 0.4em; + border: 1px solid #000; +} + +div.dokuwiki div.gallery_left { + float: left; +} + +div.dokuwiki div.gallery div { + float: left; +} + +div.dokuwiki div.gallery_right { + float: right; +} + +div.dokuwiki div.gallery_center { + margin-left: auto; + margin-right: auto; +} + +div.dokuwiki div.gallery_center { + width: 80%; + text-align: center; +} + +/* for pagination */ +div.dokuwiki div.gallery div.gallery_pages { + float: none; + text-align: left; +} + diff --git a/sources/lib/plugins/gallery/script.js b/sources/lib/plugins/gallery/script.js new file mode 100755 index 0000000..124eeac --- /dev/null +++ b/sources/lib/plugins/gallery/script.js @@ -0,0 +1,59 @@ +/* DOKUWIKI:include_once swipebox/js/jquery.swipebox.js */ + +/** + * Add a quicklink to the media popup + */ +function gallery_plugin(){ + var $opts = jQuery('#media__opts'); + if(!$opts.length) return; + if(!window.opener) return; + + var glbl = document.createElement('label'); + var glnk = document.createElement('a'); + var gbrk = document.createElement('br'); + glnk.name = 'gallery_plugin'; + glnk.innerHTML = LANG.plugins.gallery.addgal; //FIXME localize + glnk.style.cursor = 'pointer'; + + glnk.onclick = function(){ + var $h1 = jQuery('#media__ns'); + if(!$h1.length) return; + var ns = $h1[0].innerHTML; + opener.insertAtCarret('wiki__text','{{gallery>'+ns+'}}'); + if(!dw_mediamanager.keepopen) window.close(); + }; + + $opts[0].appendChild(glbl); + glbl.appendChild(glnk); + $opts[0].appendChild(gbrk); +} + +/** + * Display a selected page and hide all others + */ +function gallery_pageselect(e){ + var galid = e.target.hash.substr(10,4); + var $pages = jQuery('div.gallery__'+galid); + $pages.hide(); + jQuery('#'+e.target.hash.substr(1)).show(); + return false; +} + +// === main === +jQuery(function(){ + // initialize the lightbox mechanism + jQuery("a.lightbox, a[rel^='lightbox']").swipebox({ + loopAtEnd: true + }); + + gallery_plugin(); + + // hide all pages except the first one + var $pages = jQuery('div.gallery_page'); + $pages.hide(); + $pages.eq(0).show(); + + // attach page selector + jQuery('a.gallery_pgsel').click(gallery_pageselect); +}); + diff --git a/sources/lib/plugins/gallery/swipebox/README b/sources/lib/plugins/gallery/swipebox/README new file mode 100755 index 0000000..48f58e7 --- /dev/null +++ b/sources/lib/plugins/gallery/swipebox/README @@ -0,0 +1,6 @@ +This is a silightly modified version of the SwipeBox script available at https://github.com/brutaldesign/swipebox.git + +The modfied sources are available at https://github.com/splitbrain/swipebox/tree/dokuwiki - only the src directory is +included here. + +css/swipebox.css has been renamed to css/swipebox.less to work with DokuWiki's less compiler inclusion mechanism diff --git a/sources/lib/plugins/gallery/swipebox/css/swipebox.less b/sources/lib/plugins/gallery/swipebox/css/swipebox.less new file mode 100755 index 0000000..07ce236 --- /dev/null +++ b/sources/lib/plugins/gallery/swipebox/css/swipebox.less @@ -0,0 +1,291 @@ +/*! Swipebox v1.3.0 | Constantin Saguin csag.co | MIT License | github.com/brutaldesign/swipebox */ +html.swipebox-html.swipebox-touch { + overflow: hidden !important; +} + +#swipebox-overlay img { + border: none !important; +} + +#swipebox-overlay { + width: 100%; + height: 100%; + position: fixed; + top: 0; + left: 0; + z-index: 99999 !important; + overflow: hidden; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +#swipebox-container { + position: relative; + width: 100%; + height: 100%; +} + +#swipebox-slider { + -webkit-transition: -webkit-transform 0.4s ease; + transition: transform 0.4s ease; + height: 100%; + left: 0; + top: 0; + width: 100%; + white-space: nowrap; + position: absolute; + display: none; + cursor: pointer; +} +#swipebox-slider .slide { + height: 100%; + width: 100%; + line-height: 1px; + text-align: center; + display: inline-block; +} +#swipebox-slider .slide:before { + content: ""; + display: inline-block; + height: 50%; + width: 1px; + margin-right: -1px; +} +#swipebox-slider .slide img, +#swipebox-slider .slide .swipebox-video-container, +#swipebox-slider .slide .swipebox-inline-container { + display: inline-block; + max-height: 100%; + max-width: 100%; + margin: 0; + padding: 0; + width: auto; + height: auto; + vertical-align: middle; +} +#swipebox-slider .slide .swipebox-video-container { + background: none; + max-width: 1140px; + max-height: 100%; + width: 100%; + padding: 5%; + -webkit-box-sizing: border-box; + box-sizing: border-box; +} +#swipebox-slider .slide .swipebox-video-container .swipebox-video { + width: 100%; + height: 0; + padding-bottom: 56.25%; + overflow: hidden; + position: relative; +} +#swipebox-slider .slide .swipebox-video-container .swipebox-video iframe { + width: 100% !important; + height: 100% !important; + position: absolute; + top: 0; + left: 0; +} +#swipebox-slider .slide-loading { + background: url(../img/loader.gif) no-repeat center center; +} + +#swipebox-bottom-bar, +#swipebox-top-bar { + -webkit-transition: 0.5s; + transition: 0.5s; + position: absolute; + left: 0; + z-index: 999; + min-height: 50px; + width: 100%; +} + +#swipebox-bottom-bar { + bottom: -50px; +} +#swipebox-bottom-bar.visible-bars { + -webkit-transform: translate3d(0, -50px, 0); + transform: translate3d(0, -50px, 0); +} + +#swipebox-top-bar { + bottom: 100%; +} +#swipebox-top-bar.visible-bars { + -webkit-transform: translate3d(0, 100%, 0); + transform: translate3d(0, 100%, 0); +} + +#swipebox-title { + display: block; + width: 100%; + text-align: center; +} + +#swipebox-prev, +#swipebox-next, +#swipebox-close { + background-image: url(../img/icons.png); + background-repeat: no-repeat; + border: none !important; + text-decoration: none !important; + cursor: pointer; + width: 50px; + height: 50px; + top: 0; +} + +#swipebox-arrows { + display: block; + margin: 0 auto; + width: 100%; + height: 50px; +} + +#swipebox-prev { + background-position: -32px 13px; + float: left; +} + +#swipebox-next { + background-position: -78px 13px; + float: right; +} + +#swipebox-close { + top: 0; + right: 0; + position: absolute; + z-index: 9999; + background-position: 15px 12px; +} + +.swipebox-no-close-button #swipebox-close { + display: none; +} + +#swipebox-prev.disabled, +#swipebox-next.disabled { + opacity: 0.3; +} + +.swipebox-no-touch #swipebox-overlay.rightSpring #swipebox-slider { + -webkit-animation: rightSpring 0.3s; + animation: rightSpring 0.3s; +} +.swipebox-no-touch #swipebox-overlay.leftSpring #swipebox-slider { + -webkit-animation: leftSpring 0.3s; + animation: leftSpring 0.3s; +} + +.swipebox-touch #swipebox-container:before, .swipebox-touch #swipebox-container:after { + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + -webkit-transition: all .3s ease; + transition: all .3s ease; + content: ' '; + position: absolute; + z-index: 999; + top: 0; + height: 100%; + width: 20px; + opacity: 0; +} +.swipebox-touch #swipebox-container:before { + left: 0; + -webkit-box-shadow: inset 10px 0px 10px -8px #656565; + box-shadow: inset 10px 0px 10px -8px #656565; +} +.swipebox-touch #swipebox-container:after { + right: 0; + -webkit-box-shadow: inset -10px 0px 10px -8px #656565; + box-shadow: inset -10px 0px 10px -8px #656565; +} +.swipebox-touch #swipebox-overlay.leftSpringTouch #swipebox-container:before { + opacity: 1; +} +.swipebox-touch #swipebox-overlay.rightSpringTouch #swipebox-container:after { + opacity: 1; +} + +@-webkit-keyframes rightSpring { + 0% { + left: 0; + } + 50% { + left: -30px; + } + 100% { + left: 0; + } +} + +@keyframes rightSpring { + 0% { + left: 0; + } + 50% { + left: -30px; + } + 100% { + left: 0; + } +} +@-webkit-keyframes leftSpring { + 0% { + left: 0; + } + 50% { + left: 30px; + } + 100% { + left: 0; + } +} +@keyframes leftSpring { + 0% { + left: 0; + } + 50% { + left: 30px; + } + 100% { + left: 0; + } +} +@media screen and (min-width: 800px) { + #swipebox-close { + right: 10px; + } + + #swipebox-arrows { + width: 92%; + max-width: 800px; + } +} +/* Skin +--------------------------*/ +#swipebox-overlay { + background: #0d0d0d; +} + +#swipebox-bottom-bar, +#swipebox-top-bar { + text-shadow: 1px 1px 1px black; + background: #000; + opacity: 0.95; +} + +#swipebox-top-bar { + color: white !important; + font-size: 15px; + line-height: 43px; + font-family: Helvetica, Arial, sans-serif; +} +#swipebox-top-bar div.caption { + font-size: 13px; + line-height: 20px; +} diff --git a/sources/lib/plugins/gallery/swipebox/css/swipebox.min.css b/sources/lib/plugins/gallery/swipebox/css/swipebox.min.css new file mode 100755 index 0000000..a500a38 --- /dev/null +++ b/sources/lib/plugins/gallery/swipebox/css/swipebox.min.css @@ -0,0 +1 @@ +/*! Swipebox v1.3.0 | Constantin Saguin csag.co | MIT License | github.com/brutaldesign/swipebox */html.swipebox-html.swipebox-touch{overflow:hidden!important}#swipebox-overlay img{border:none!important}#swipebox-overlay{width:100%;height:100%;position:fixed;top:0;left:0;z-index:99999!important;overflow:hidden;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}#swipebox-container{position:relative;width:100%;height:100%}#swipebox-slider{-webkit-transition:-webkit-transform .4s ease;transition:transform .4s ease;height:100%;left:0;top:0;width:100%;white-space:nowrap;position:absolute;display:none;cursor:pointer}#swipebox-slider .slide{height:100%;width:100%;line-height:1px;text-align:center;display:inline-block}#swipebox-slider .slide:before{content:"";display:inline-block;height:50%;width:1px;margin-right:-1px}#swipebox-slider .slide .swipebox-inline-container,#swipebox-slider .slide .swipebox-video-container,#swipebox-slider .slide img{display:inline-block;max-height:100%;max-width:100%;margin:0;padding:0;width:auto;height:auto;vertical-align:middle}#swipebox-slider .slide .swipebox-video-container{background:0 0;max-width:1140px;max-height:100%;width:100%;padding:5%;-webkit-box-sizing:border-box;box-sizing:border-box}#swipebox-slider .slide .swipebox-video-container .swipebox-video{width:100%;height:0;padding-bottom:56.25%;overflow:hidden;position:relative}#swipebox-slider .slide .swipebox-video-container .swipebox-video iframe{width:100%!important;height:100%!important;position:absolute;top:0;left:0}#swipebox-slider .slide-loading{background:url(../img/loader.gif) center center no-repeat}#swipebox-bottom-bar,#swipebox-top-bar{-webkit-transition:.5s;transition:.5s;position:absolute;left:0;z-index:999;min-height:50px;width:100%}#swipebox-bottom-bar{bottom:-50px}#swipebox-bottom-bar.visible-bars{-webkit-transform:translate3d(0,-50px,0);transform:translate3d(0,-50px,0)}#swipebox-top-bar{bottom:100%}#swipebox-top-bar.visible-bars{-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}#swipebox-title{display:block;width:100%;text-align:center}#swipebox-close,#swipebox-next,#swipebox-prev{background-image:url(../img/icons.png);background-repeat:no-repeat;border:none!important;text-decoration:none!important;cursor:pointer;width:50px;height:50px;top:0}#swipebox-arrows{display:block;margin:0 auto;width:100%;height:50px}#swipebox-prev{background-position:-32px 13px;float:left}#swipebox-next{background-position:-78px 13px;float:right}#swipebox-close{top:0;right:0;position:absolute;z-index:9999;background-position:15px 12px}.swipebox-no-close-button #swipebox-close{display:none}#swipebox-next.disabled,#swipebox-prev.disabled{opacity:.3}.swipebox-no-touch #swipebox-overlay.rightSpring #swipebox-slider{-webkit-animation:rightSpring .3s;animation:rightSpring .3s}.swipebox-no-touch #swipebox-overlay.leftSpring #swipebox-slider{-webkit-animation:leftSpring .3s;animation:leftSpring .3s}.swipebox-touch #swipebox-container:after,.swipebox-touch #swipebox-container:before{-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-transition:all .3s ease;transition:all .3s ease;content:' ';position:absolute;z-index:999;top:0;height:100%;width:20px;opacity:0}.swipebox-touch #swipebox-container:before{left:0;-webkit-box-shadow:inset 10px 0 10px -8px #656565;box-shadow:inset 10px 0 10px -8px #656565}.swipebox-touch #swipebox-container:after{right:0;-webkit-box-shadow:inset -10px 0 10px -8px #656565;box-shadow:inset -10px 0 10px -8px #656565}.swipebox-touch #swipebox-overlay.leftSpringTouch #swipebox-container:before,.swipebox-touch #swipebox-overlay.rightSpringTouch #swipebox-container:after{opacity:1}@-webkit-keyframes rightSpring{0%{left:0}50%{left:-30px}100%{left:0}}@keyframes rightSpring{0%{left:0}50%{left:-30px}100%{left:0}}@-webkit-keyframes leftSpring{0%{left:0}50%{left:30px}100%{left:0}}@keyframes leftSpring{0%{left:0}50%{left:30px}100%{left:0}}@media screen and (min-width:800px){#swipebox-close{right:10px}#swipebox-arrows{width:92%;max-width:800px}}#swipebox-overlay{background:#0d0d0d}#swipebox-bottom-bar,#swipebox-top-bar{text-shadow:1px 1px 1px #000;background:#000;opacity:.95}#swipebox-top-bar{color:#fff!important;font-size:15px;line-height:43px;font-family:Helvetica,Arial,sans-serif}#swipebox-top-bar div.caption{font-size:13px;line-height:20px} \ No newline at end of file diff --git a/sources/lib/plugins/gallery/swipebox/img/icons.png b/sources/lib/plugins/gallery/swipebox/img/icons.png new file mode 100755 index 0000000..7a79f7a Binary files /dev/null and b/sources/lib/plugins/gallery/swipebox/img/icons.png differ diff --git a/sources/lib/plugins/gallery/swipebox/img/icons.svg b/sources/lib/plugins/gallery/swipebox/img/icons.svg new file mode 100755 index 0000000..414e844 --- /dev/null +++ b/sources/lib/plugins/gallery/swipebox/img/icons.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/sources/lib/plugins/gallery/swipebox/img/loader.gif b/sources/lib/plugins/gallery/swipebox/img/loader.gif new file mode 100755 index 0000000..a82c2aa Binary files /dev/null and b/sources/lib/plugins/gallery/swipebox/img/loader.gif differ diff --git a/sources/lib/plugins/gallery/swipebox/js/jquery.swipebox.js b/sources/lib/plugins/gallery/swipebox/js/jquery.swipebox.js new file mode 100755 index 0000000..f5e970b --- /dev/null +++ b/sources/lib/plugins/gallery/swipebox/js/jquery.swipebox.js @@ -0,0 +1,956 @@ +/*! Swipebox v1.4.1 | Constantin Saguin csag.co | MIT License | github.com/brutaldesign/swipebox */ + +;( function ( window, document, $, undefined ) { + + $.swipebox = function( elem, options ) { + + // Default options + var ui, + defaults = { + useCSS : true, + useSVG : true, + initialIndexOnArray : 0, + removeBarsOnMobile : true, + hideCloseButtonOnMobile : false, + hideBarsDelay : 3000, + videoMaxWidth : 1140, + vimeoColor : 'cccccc', + beforeOpen: null, + afterOpen: null, + afterClose: null, + nextSlide: null, + prevSlide: null, + loopAtEnd: false, + autoplayVideos: false, + queryStringData: {}, + toggleClassOnLoad: '', + titleAttribute: 'title', + captionAttribute: 'data-caption' + }, + + plugin = this, + elements = [], // slides array [ { href:'...', title:'...' }, ...], + $elem, + selector = elem.selector, + $selector = $( selector ), + isMobile = navigator.userAgent.match( /(iPad)|(iPhone)|(iPod)|(Android)|(PlayBook)|(BB10)|(BlackBerry)|(Opera Mini)|(IEMobile)|(webOS)|(MeeGo)/i ), + isTouch = isMobile !== null || document.createTouch !== undefined || ( 'ontouchstart' in window ) || ( 'onmsgesturechange' in window ) || navigator.msMaxTouchPoints, + supportSVG = !! document.createElementNS && !! document.createElementNS( 'http://www.w3.org/2000/svg', 'svg').createSVGRect, + winWidth = window.innerWidth ? window.innerWidth : $( window ).width(), + winHeight = window.innerHeight ? window.innerHeight : $( window ).height(), + currentX = 0, + /* jshint multistr: true */ + html = '
\ +
\ +
\ +
\ +
\ +
\ +
\ +
\ + \ + \ +
\ +
\ + \ +
\ +
'; + + plugin.settings = {}; + + $.swipebox.close = function () { + ui.closeSlide(); + }; + + $.swipebox.extend = function () { + return ui; + }; + + plugin.init = function() { + + plugin.settings = $.extend( {}, defaults, options ); + + if ( $.isArray( elem ) ) { + + elements = elem; + ui.target = $( window ); + ui.init( plugin.settings.initialIndexOnArray ); + + } else { + + $( document ).on( 'click', selector, function( event ) { + + // console.log( isTouch ); + + if ( event.target.parentNode.className === 'slide current' ) { + + return false; + } + + if ( ! $.isArray( elem ) ) { + ui.destroy(); + $elem = $( selector ); + ui.actions(); + } + + elements = []; + var index , relType, relVal; + + // Allow for HTML5 compliant attribute before legacy use of rel + if ( ! relVal ) { + relType = 'data-rel'; + relVal = $( this ).attr( relType ); + } + + if ( ! relVal ) { + relType = 'rel'; + relVal = $( this ).attr( relType ); + } + + if ( relVal && relVal !== '' && relVal !== 'nofollow' ) { + $elem = $selector.filter( '[' + relType + '="' + relVal + '"]' ); + } else { + $elem = $( selector ); + } + + $elem.each( function() { + + var title = null, + caption = null, + href = null; + + if ( $( this ).attr( plugin.settings.titleAttribute ) ) { + title = $( this ).attr( plugin.settings.titleAttribute ); + } + + if ( $( this ).attr( plugin.settings.captionAttribute ) ) { + caption = $( this ).attr( plugin.settings.captionAttribute ); + } + + if ( $( this ).attr( 'href' ) ) { + href = $( this ).attr( 'href' ); + } + + elements.push( { + href: href, + title: title, + caption: caption + } ); + } ); + + index = $elem.index( $( this ) ); + event.preventDefault(); + event.stopPropagation(); + ui.target = $( event.target ); + ui.init( index ); + } ); + } + }; + + ui = { + + /** + * Initiate Swipebox + */ + init : function( index ) { + if ( plugin.settings.beforeOpen ) { + plugin.settings.beforeOpen(); + } + this.target.trigger( 'swipebox-start' ); + $.swipebox.isOpen = true; + this.build(); + this.openSlide( index ); + this.openMedia( index ); + this.preloadMedia( index+1 ); + this.preloadMedia( index-1 ); + if ( plugin.settings.afterOpen ) { + plugin.settings.afterOpen(); + } + }, + + /** + * Built HTML containers and fire main functions + */ + build : function () { + var $this = this, bg; + + $( 'body' ).append( html ); + + if ( supportSVG && plugin.settings.useSVG === true ) { + bg = $( '#swipebox-close' ).css( 'background-image' ); + bg = bg.replace( 'png', 'svg' ); + $( '#swipebox-prev, #swipebox-next, #swipebox-close' ).css( { + 'background-image' : bg + } ); + } + + if ( isMobile && plugin.settings.removeBarsOnMobile ) { + $( '#swipebox-bottom-bar, #swipebox-top-bar' ).remove(); + } + + $.each( elements, function() { + $( '#swipebox-slider' ).append( '
' ); + } ); + + $this.setDim(); + $this.actions(); + + if ( isTouch ) { + $this.gesture(); + } + + // Devices can have both touch and keyboard input so always allow key events + $this.keyboard(); + + $this.animBars(); + $this.resize(); + + }, + + /** + * Set dimensions depending on windows width and height + */ + setDim : function () { + + var width, height, sliderCss = {}; + + // Reset dimensions on mobile orientation change + if ( 'onorientationchange' in window ) { + + window.addEventListener( 'orientationchange', function() { + if ( window.orientation === 0 ) { + width = winWidth; + height = winHeight; + } else if ( window.orientation === 90 || window.orientation === -90 ) { + width = winHeight; + height = winWidth; + } + }, false ); + + + } else { + + width = window.innerWidth ? window.innerWidth : $( window ).width(); + height = window.innerHeight ? window.innerHeight : $( window ).height(); + } + + sliderCss = { + width : width, + height : height + }; + + $( '#swipebox-overlay' ).css( sliderCss ); + + }, + + /** + * Reset dimensions on window resize envent + */ + resize : function () { + var $this = this; + + $( window ).resize( function() { + $this.setDim(); + } ).resize(); + }, + + /** + * Check if device supports CSS transitions + */ + supportTransition : function () { + + var prefixes = 'transition WebkitTransition MozTransition OTransition msTransition KhtmlTransition'.split( ' ' ), + i; + + for ( i = 0; i < prefixes.length; i++ ) { + if ( document.createElement( 'div' ).style[ prefixes[i] ] !== undefined ) { + return prefixes[i]; + } + } + return false; + }, + + /** + * Check if CSS transitions are allowed (options + devicesupport) + */ + doCssTrans : function () { + if ( plugin.settings.useCSS && this.supportTransition() ) { + return true; + } + }, + + /** + * Touch navigation + */ + gesture : function () { + + var $this = this, + index, + hDistance, + vDistance, + hDistanceLast, + vDistanceLast, + hDistancePercent, + vSwipe = false, + hSwipe = false, + hSwipMinDistance = 10, + vSwipMinDistance = 50, + startCoords = {}, + endCoords = {}, + bars = $( '#swipebox-top-bar, #swipebox-bottom-bar' ), + slider = $( '#swipebox-slider' ); + + bars.addClass( 'visible-bars' ); + $this.setTimeout(); + + $( 'body' ).bind( 'touchstart', function( event ) { + + $( this ).addClass( 'touching' ); + index = $( '#swipebox-slider .slide' ).index( $( '#swipebox-slider .slide.current' ) ); + endCoords = event.originalEvent.targetTouches[0]; + startCoords.pageX = event.originalEvent.targetTouches[0].pageX; + startCoords.pageY = event.originalEvent.targetTouches[0].pageY; + + $( '#swipebox-slider' ).css( { + '-webkit-transform' : 'translate3d(' + currentX +'%, 0, 0)', + 'transform' : 'translate3d(' + currentX + '%, 0, 0)' + } ); + + $( '.touching' ).bind( 'touchmove',function( event ) { + event.preventDefault(); + event.stopPropagation(); + endCoords = event.originalEvent.targetTouches[0]; + + if ( ! hSwipe ) { + vDistanceLast = vDistance; + vDistance = endCoords.pageY - startCoords.pageY; + if ( Math.abs( vDistance ) >= vSwipMinDistance || vSwipe ) { + var opacity = 0.75 - Math.abs(vDistance) / slider.height(); + + slider.css( { 'top': vDistance + 'px' } ); + slider.css( { 'opacity': opacity } ); + + vSwipe = true; + } + } + + hDistanceLast = hDistance; + hDistance = endCoords.pageX - startCoords.pageX; + hDistancePercent = hDistance * 100 / winWidth; + + if ( ! hSwipe && ! vSwipe && Math.abs( hDistance ) >= hSwipMinDistance ) { + $( '#swipebox-slider' ).css( { + '-webkit-transition' : '', + 'transition' : '' + } ); + hSwipe = true; + } + + if ( hSwipe ) { + + // swipe left + if ( 0 < hDistance ) { + + // first slide + if ( 0 === index ) { + // console.log( 'first' ); + $( '#swipebox-overlay' ).addClass( 'leftSpringTouch' ); + } else { + // Follow gesture + $( '#swipebox-overlay' ).removeClass( 'leftSpringTouch' ).removeClass( 'rightSpringTouch' ); + $( '#swipebox-slider' ).css( { + '-webkit-transform' : 'translate3d(' + ( currentX + hDistancePercent ) +'%, 0, 0)', + 'transform' : 'translate3d(' + ( currentX + hDistancePercent ) + '%, 0, 0)' + } ); + } + + // swipe rught + } else if ( 0 > hDistance ) { + + // last Slide + if ( elements.length === index +1 ) { + // console.log( 'last' ); + $( '#swipebox-overlay' ).addClass( 'rightSpringTouch' ); + } else { + $( '#swipebox-overlay' ).removeClass( 'leftSpringTouch' ).removeClass( 'rightSpringTouch' ); + $( '#swipebox-slider' ).css( { + '-webkit-transform' : 'translate3d(' + ( currentX + hDistancePercent ) +'%, 0, 0)', + 'transform' : 'translate3d(' + ( currentX + hDistancePercent ) + '%, 0, 0)' + } ); + } + + } + } + } ); + + return false; + + } ).bind( 'touchend',function( event ) { + event.preventDefault(); + event.stopPropagation(); + + $( '#swipebox-slider' ).css( { + '-webkit-transition' : '-webkit-transform 0.4s ease', + 'transition' : 'transform 0.4s ease' + } ); + + vDistance = endCoords.pageY - startCoords.pageY; + hDistance = endCoords.pageX - startCoords.pageX; + hDistancePercent = hDistance*100/winWidth; + + // Swipe to bottom to close + if ( vSwipe ) { + vSwipe = false; + if ( Math.abs( vDistance ) >= 2 * vSwipMinDistance && Math.abs( vDistance ) > Math.abs( vDistanceLast ) ) { + var vOffset = vDistance > 0 ? slider.height() : - slider.height(); + slider.animate( { top: vOffset + 'px', 'opacity': 0 }, + 300, + function () { + $this.closeSlide(); + } ); + } else { + slider.animate( { top: 0, 'opacity': 1 }, 300 ); + } + + } else if ( hSwipe ) { + + hSwipe = false; + + // swipeLeft + if( hDistance >= hSwipMinDistance && hDistance >= hDistanceLast) { + + $this.getPrev(); + + // swipeRight + } else if ( hDistance <= -hSwipMinDistance && hDistance <= hDistanceLast) { + + $this.getNext(); + } + + } else { // Top and bottom bars have been removed on touchable devices + // tap + if ( ! bars.hasClass( 'visible-bars' ) ) { + $this.showBars(); + $this.setTimeout(); + } else { + $this.clearTimeout(); + $this.hideBars(); + } + } + + $( '#swipebox-slider' ).css( { + '-webkit-transform' : 'translate3d(' + currentX + '%, 0, 0)', + 'transform' : 'translate3d(' + currentX + '%, 0, 0)' + } ); + + $( '#swipebox-overlay' ).removeClass( 'leftSpringTouch' ).removeClass( 'rightSpringTouch' ); + $( '.touching' ).off( 'touchmove' ).removeClass( 'touching' ); + + } ); + }, + + /** + * Set timer to hide the action bars + */ + setTimeout: function () { + if ( plugin.settings.hideBarsDelay > 0 ) { + var $this = this; + $this.clearTimeout(); + $this.timeout = window.setTimeout( function() { + $this.hideBars(); + }, + + plugin.settings.hideBarsDelay + ); + } + }, + + /** + * Clear timer + */ + clearTimeout: function () { + window.clearTimeout( this.timeout ); + this.timeout = null; + }, + + /** + * Show navigation and title bars + */ + showBars : function () { + var bars = $( '#swipebox-top-bar, #swipebox-bottom-bar' ); + bars.addClass( 'visible-bars' ); + }, + + /** + * Hide navigation and title bars + */ + hideBars : function () { + var bars = $( '#swipebox-top-bar, #swipebox-bottom-bar' ); + bars.removeClass( 'visible-bars' ); + }, + + /** + * Animate navigation and top bars + */ + animBars : function () { + var $this = this, + bars = $( '#swipebox-top-bar, #swipebox-bottom-bar' ); + + bars.addClass( 'visible-bars' ); + $this.setTimeout(); + + $( '#swipebox-slider' ).click( function() { + if ( ! bars.hasClass( 'visible-bars' ) ) { + $this.showBars(); + $this.setTimeout(); + } + } ); + + $( '#swipebox-bottom-bar' ).hover( function() { + $this.showBars(); + bars.addClass( 'visible-bars' ); + $this.clearTimeout(); + + }, function() { + if ( plugin.settings.hideBarsDelay > 0 ) { + bars.removeClass( 'visible-bars' ); + $this.setTimeout(); + } + + } ); + }, + + /** + * Keyboard navigation + */ + keyboard : function () { + var $this = this; + $( window ).bind( 'keyup', function( event ) { + event.preventDefault(); + event.stopPropagation(); + + if ( event.keyCode === 37 ) { + + $this.getPrev(); + + } else if ( event.keyCode === 39 ) { + + $this.getNext(); + + } else if ( event.keyCode === 27 ) { + + $this.closeSlide(); + } + } ); + }, + + /** + * Navigation events : go to next slide, go to prevous slide and close + */ + actions : function () { + var $this = this, + action = 'touchend click'; // Just detect for both event types to allow for multi-input + + if ( elements.length < 2 ) { + + $( '#swipebox-bottom-bar' ).hide(); + + if ( undefined === elements[ 1 ] ) { + $( '#swipebox-top-bar' ).hide(); + } + + } else { + $( '#swipebox-prev' ).bind( action, function( event ) { + event.preventDefault(); + event.stopPropagation(); + $this.getPrev(); + $this.setTimeout(); + } ); + + $( '#swipebox-next' ).bind( action, function( event ) { + event.preventDefault(); + event.stopPropagation(); + $this.getNext(); + $this.setTimeout(); + } ); + } + + $( '#swipebox-close' ).bind( action, function() { + $this.closeSlide(); + } ); + }, + + /** + * Set current slide + */ + setSlide : function ( index, isFirst ) { + + isFirst = isFirst || false; + + var slider = $( '#swipebox-slider' ); + + currentX = -index*100; + + if ( this.doCssTrans() ) { + slider.css( { + '-webkit-transform' : 'translate3d(' + (-index*100)+'%, 0, 0)', + 'transform' : 'translate3d(' + (-index*100)+'%, 0, 0)' + } ); + } else { + slider.animate( { left : ( -index*100 )+'%' } ); + } + + $( '#swipebox-slider .slide' ).removeClass( 'current' ); + $( '#swipebox-slider .slide' ).eq( index ).addClass( 'current' ); + this.setTitle( index ); + + if ( isFirst ) { + slider.fadeIn(); + } + + $( '#swipebox-prev, #swipebox-next' ).removeClass( 'disabled' ); + + if ( index === 0 ) { + $( '#swipebox-prev' ).addClass( 'disabled' ); + } else if ( index === elements.length - 1 && plugin.settings.loopAtEnd !== true ) { + $( '#swipebox-next' ).addClass( 'disabled' ); + } + + // reshow bars on each navigation + this.showBars(); + this.setTimeout(); + }, + + /** + * Open slide + */ + openSlide : function ( index ) { + $( 'html' ).addClass( 'swipebox-html' ); + if ( isTouch ) { + $( 'html' ).addClass( 'swipebox-touch' ); + + if ( plugin.settings.hideCloseButtonOnMobile ) { + $( 'html' ).addClass( 'swipebox-no-close-button' ); + } + } else { + $( 'html' ).addClass( 'swipebox-no-touch' ); + } + $( window ).trigger( 'resize' ); // fix scroll bar visibility on desktop + this.setSlide( index, true ); + }, + + /** + * Set a time out if the media is a video + */ + preloadMedia : function ( index ) { + var $this = this, + src = null; + + if ( elements[ index ] !== undefined ) { + src = elements[ index ].href; + } + + if ( ! $this.isVideo( src ) ) { + setTimeout( function() { + $this.openMedia( index ); + }, 1000); + } else { + $this.openMedia( index ); + } + }, + + /** + * Open + */ + openMedia : function ( index ) { + var $this = this, + src, + slide; + + if ( elements[ index ] !== undefined ) { + src = elements[ index ].href; + } + + if ( index < 0 || index >= elements.length ) { + return false; + } + + slide = $( '#swipebox-slider .slide' ).eq( index ); + + if ( ! $this.isVideo( src ) ) { + slide.addClass( 'slide-loading' ); + $this.loadMedia( src, function() { + slide.removeClass( 'slide-loading' ); + slide.html( this ); + } ); + } else { + slide.html( $this.getVideo( src ) ); + } + + }, + + /** + * Set link title attribute as caption + */ + setTitle : function ( index ) { + var title = null; + var caption = null; + + $( '#swipebox-title' ).empty(); + + if ( elements[ index ] !== undefined ) { + title = elements[ index ].title; + caption = elements[ index ].caption; + } + + if ( title || caption ) { + $( '#swipebox-top-bar' ).show(); + + if(title) { + var tdiv = $('
').addClass('title').text(title); + $('#swipebox-title').append(tdiv); + } + + if(caption) { + var cdiv = $('
').addClass('caption').text(caption); + $('#swipebox-title').append(cdiv); + } + } else { + $( '#swipebox-top-bar' ).hide(); + } + }, + + /** + * Check if the URL is a video + */ + isVideo : function ( src ) { + + if ( src ) { + if ( src.match( /(youtube\.com|youtube-nocookie\.com)\/watch\?v=([a-zA-Z0-9\-_]+)/) || src.match( /vimeo\.com\/([0-9]*)/ ) || src.match( /youtu\.be\/([a-zA-Z0-9\-_]+)/ ) ) { + return true; + } + + if ( src.toLowerCase().indexOf( 'swipeboxvideo=1' ) >= 0 ) { + + return true; + } + } + + }, + + /** + * Parse URI querystring and: + * - overrides value provided via dictionary + * - rebuild it again returning a string + */ + parseUri : function (uri, customData) { + var a = document.createElement('a'), + qs = {}; + + // Decode the URI + a.href = decodeURIComponent( uri ); + + // QueryString to Object + if ( a.search ) { + qs = JSON.parse( '{"' + a.search.toLowerCase().replace('?','').replace(/&/g,'","').replace(/=/g,'":"') + '"}' ); + } + + // Extend with custom data + if ( $.isPlainObject( customData ) ) { + qs = $.extend( qs, customData, plugin.settings.queryStringData ); // The dev has always the final word + } + + // Return querystring as a string + return $ + .map( qs, function (val, key) { + if ( val && val > '' ) { + return encodeURIComponent( key ) + '=' + encodeURIComponent( val ); + } + }) + .join('&'); + }, + + /** + * Get video iframe code from URL + */ + getVideo : function( url ) { + var iframe = '', + youtubeUrl = url.match( /((?:www\.)?youtube\.com|(?:www\.)?youtube-nocookie\.com)\/watch\?v=([a-zA-Z0-9\-_]+)/ ), + youtubeShortUrl = url.match(/(?:www\.)?youtu\.be\/([a-zA-Z0-9\-_]+)/), + vimeoUrl = url.match( /(?:www\.)?vimeo\.com\/([0-9]*)/ ), + qs = ''; + if ( youtubeUrl || youtubeShortUrl) { + if ( youtubeShortUrl ) { + youtubeUrl = youtubeShortUrl; + } + qs = ui.parseUri( url, { + 'autoplay' : ( plugin.settings.autoplayVideos ? '1' : '0' ), + 'v' : '' + }); + iframe = ''; + + } else if ( vimeoUrl ) { + qs = ui.parseUri( url, { + 'autoplay' : ( plugin.settings.autoplayVideos ? '1' : '0' ), + 'byline' : '0', + 'portrait' : '0', + 'color': plugin.settings.vimeoColor + }); + iframe = ''; + + } else { + iframe = ''; + } + + return '
' + iframe + '
'; + }, + + /** + * Load image + */ + loadMedia : function ( src, callback ) { + // Inline content + if ( src.trim().indexOf('#') === 0 ) { + callback.call( + $('
', { + 'class' : 'swipebox-inline-container' + }) + .append( + $(src) + .clone() + .toggleClass( plugin.settings.toggleClassOnLoad ) + ) + ); + } + // Everything else + else { + if ( ! this.isVideo( src ) ) { + var img = $( '' ).on( 'load', function() { + callback.call( img ); + } ); + + img.attr( 'src', src ); + } + } + }, + + /** + * Get next slide + */ + getNext : function () { + var $this = this, + src, + index = $( '#swipebox-slider .slide' ).index( $( '#swipebox-slider .slide.current' ) ); + if ( index + 1 < elements.length ) { + + src = $( '#swipebox-slider .slide' ).eq( index ).contents().find( 'iframe' ).attr( 'src' ); + $( '#swipebox-slider .slide' ).eq( index ).contents().find( 'iframe' ).attr( 'src', src ); + index++; + $this.setSlide( index ); + $this.preloadMedia( index+1 ); + if ( plugin.settings.nextSlide ) { + plugin.settings.nextSlide(); + } + } else { + + if ( plugin.settings.loopAtEnd === true ) { + src = $( '#swipebox-slider .slide' ).eq( index ).contents().find( 'iframe' ).attr( 'src' ); + $( '#swipebox-slider .slide' ).eq( index ).contents().find( 'iframe' ).attr( 'src', src ); + index = 0; + $this.preloadMedia( index ); + $this.setSlide( index ); + $this.preloadMedia( index + 1 ); + if ( plugin.settings.nextSlide ) { + plugin.settings.nextSlide(); + } + } else { + $( '#swipebox-overlay' ).addClass( 'rightSpring' ); + setTimeout( function() { + $( '#swipebox-overlay' ).removeClass( 'rightSpring' ); + }, 500 ); + } + } + }, + + /** + * Get previous slide + */ + getPrev : function () { + var index = $( '#swipebox-slider .slide' ).index( $( '#swipebox-slider .slide.current' ) ), + src; + if ( index > 0 ) { + src = $( '#swipebox-slider .slide' ).eq( index ).contents().find( 'iframe').attr( 'src' ); + $( '#swipebox-slider .slide' ).eq( index ).contents().find( 'iframe' ).attr( 'src', src ); + index--; + this.setSlide( index ); + this.preloadMedia( index-1 ); + if ( plugin.settings.prevSlide ) { + plugin.settings.prevSlide(); + } + } else { + $( '#swipebox-overlay' ).addClass( 'leftSpring' ); + setTimeout( function() { + $( '#swipebox-overlay' ).removeClass( 'leftSpring' ); + }, 500 ); + } + }, + + nextSlide : function () { + // Callback for next slide + }, + + prevSlide : function () { + // Callback for prev slide + }, + + /** + * Close + */ + closeSlide : function () { + $( 'html' ).removeClass( 'swipebox-html' ); + $( 'html' ).removeClass( 'swipebox-touch' ); + $( window ).trigger( 'resize' ); + this.destroy(); + }, + + /** + * Destroy the whole thing + */ + destroy : function () { + $( window ).unbind( 'keyup' ); + $( 'body' ).unbind( 'touchstart' ); + $( 'body' ).unbind( 'touchmove' ); + $( 'body' ).unbind( 'touchend' ); + $( '#swipebox-slider' ).unbind(); + $( '#swipebox-overlay' ).remove(); + + if ( ! $.isArray( elem ) ) { + elem.removeData( '_swipebox' ); + } + + if ( this.target ) { + this.target.trigger( 'swipebox-destroy' ); + } + + $.swipebox.isOpen = false; + + if ( plugin.settings.afterClose ) { + plugin.settings.afterClose(); + } + } + }; + + plugin.init(); + }; + + $.fn.swipebox = function( options ) { + + if ( ! $.data( this, '_swipebox' ) ) { + var swipebox = new $.swipebox( this, options ); + this.data( '_swipebox', swipebox ); + } + return this.data( '_swipebox' ); + + }; + +}( window, document, jQuery ) ); \ No newline at end of file diff --git a/sources/lib/plugins/gallery/swipebox/js/jquery.swipebox.min.js b/sources/lib/plugins/gallery/swipebox/js/jquery.swipebox.min.js new file mode 100755 index 0000000..195d15c --- /dev/null +++ b/sources/lib/plugins/gallery/swipebox/js/jquery.swipebox.min.js @@ -0,0 +1,2 @@ +/*! Swipebox v1.4.1 | Constantin Saguin csag.co | MIT License | github.com/brutaldesign/swipebox */ +!function(a,b,c,d){c.swipebox=function(e,f){var g,h,i={useCSS:!0,useSVG:!0,initialIndexOnArray:0,removeBarsOnMobile:!0,hideCloseButtonOnMobile:!1,hideBarsDelay:3e3,videoMaxWidth:1140,vimeoColor:"cccccc",beforeOpen:null,afterOpen:null,afterClose:null,nextSlide:null,prevSlide:null,loopAtEnd:!1,autoplayVideos:!1,queryStringData:{},toggleClassOnLoad:"",titleAttribute:"title",captionAttribute:"data-caption"},j=this,k=[],l=e.selector,m=c(l),n=navigator.userAgent.match(/(iPad)|(iPhone)|(iPod)|(Android)|(PlayBook)|(BB10)|(BlackBerry)|(Opera Mini)|(IEMobile)|(webOS)|(MeeGo)/i),o=null!==n||b.createTouch!==d||"ontouchstart"in a||"onmsgesturechange"in a||navigator.msMaxTouchPoints,p=!!b.createElementNS&&!!b.createElementNS("http://www.w3.org/2000/svg","svg").createSVGRect,q=a.innerWidth?a.innerWidth:c(a).width(),r=a.innerHeight?a.innerHeight:c(a).height(),s=0,t='
';j.settings={},c.swipebox.close=function(){g.closeSlide()},c.swipebox.extend=function(){return g},j.init=function(){j.settings=c.extend({},i,f),c.isArray(e)?(k=e,g.target=c(a),g.init(j.settings.initialIndexOnArray)):c(b).on("click",l,function(a){if("slide current"===a.target.parentNode.className)return!1;c.isArray(e)||(g.destroy(),h=c(l),g.actions()),k=[];var b,d,f;f||(d="data-rel",f=c(this).attr(d)),f||(d="rel",f=c(this).attr(d)),h=f&&""!==f&&"nofollow"!==f?m.filter("["+d+'="'+f+'"]'):c(l),h.each(function(){var a=null,b=null,d=null;c(this).attr(j.settings.titleAttribute)&&(a=c(this).attr(j.settings.titleAttribute)),c(this).attr(j.settings.captionAttribute)&&(b=c(this).attr(j.settings.captionAttribute)),c(this).attr("href")&&(d=c(this).attr("href")),k.push({href:d,title:a,caption:b})}),b=h.index(c(this)),a.preventDefault(),a.stopPropagation(),g.target=c(a.target),g.init(b)})},g={init:function(a){j.settings.beforeOpen&&j.settings.beforeOpen(),this.target.trigger("swipebox-start"),c.swipebox.isOpen=!0,this.build(),this.openSlide(a),this.openMedia(a),this.preloadMedia(a+1),this.preloadMedia(a-1),j.settings.afterOpen&&j.settings.afterOpen()},build:function(){var a,b=this;c("body").append(t),p&&j.settings.useSVG===!0&&(a=c("#swipebox-close").css("background-image"),a=a.replace("png","svg"),c("#swipebox-prev, #swipebox-next, #swipebox-close").css({"background-image":a})),n&&j.settings.removeBarsOnMobile&&c("#swipebox-bottom-bar, #swipebox-top-bar").remove(),c.each(k,function(){c("#swipebox-slider").append('
')}),b.setDim(),b.actions(),o&&b.gesture(),b.keyboard(),b.animBars(),b.resize()},setDim:function(){var b,d,e={};"onorientationchange"in a?a.addEventListener("orientationchange",function(){0===a.orientation?(b=q,d=r):(90===a.orientation||-90===a.orientation)&&(b=r,d=q)},!1):(b=a.innerWidth?a.innerWidth:c(a).width(),d=a.innerHeight?a.innerHeight:c(a).height()),e={width:b,height:d},c("#swipebox-overlay").css(e)},resize:function(){var b=this;c(a).resize(function(){b.setDim()}).resize()},supportTransition:function(){var a,c="transition WebkitTransition MozTransition OTransition msTransition KhtmlTransition".split(" ");for(a=0;a=m||i)){var p=.75-Math.abs(d)/r.height();r.css({top:d+"px"}),r.css({opacity:p}),i=!0}e=b,b=o.pageX-n.pageX,g=100*b/q,!j&&!i&&Math.abs(b)>=l&&(c("#swipebox-slider").css({"-webkit-transition":"",transition:""}),j=!0),j&&(b>0?0===a?c("#swipebox-overlay").addClass("leftSpringTouch"):(c("#swipebox-overlay").removeClass("leftSpringTouch").removeClass("rightSpringTouch"),c("#swipebox-slider").css({"-webkit-transform":"translate3d("+(s+g)+"%, 0, 0)",transform:"translate3d("+(s+g)+"%, 0, 0)"})):0>b&&(k.length===a+1?c("#swipebox-overlay").addClass("rightSpringTouch"):(c("#swipebox-overlay").removeClass("leftSpringTouch").removeClass("rightSpringTouch"),c("#swipebox-slider").css({"-webkit-transform":"translate3d("+(s+g)+"%, 0, 0)",transform:"translate3d("+(s+g)+"%, 0, 0)"}))))}),!1}).bind("touchend",function(a){if(a.preventDefault(),a.stopPropagation(),c("#swipebox-slider").css({"-webkit-transition":"-webkit-transform 0.4s ease",transition:"transform 0.4s ease"}),d=o.pageY-n.pageY,b=o.pageX-n.pageX,g=100*b/q,i)if(i=!1,Math.abs(d)>=2*m&&Math.abs(d)>Math.abs(f)){var k=d>0?r.height():-r.height();r.animate({top:k+"px",opacity:0},300,function(){h.closeSlide()})}else r.animate({top:0,opacity:1},300);else j?(j=!1,b>=l&&b>=e?h.getPrev():-l>=b&&e>=b&&h.getNext()):p.hasClass("visible-bars")?(h.clearTimeout(),h.hideBars()):(h.showBars(),h.setTimeout());c("#swipebox-slider").css({"-webkit-transform":"translate3d("+s+"%, 0, 0)",transform:"translate3d("+s+"%, 0, 0)"}),c("#swipebox-overlay").removeClass("leftSpringTouch").removeClass("rightSpringTouch"),c(".touching").off("touchmove").removeClass("touching")})},setTimeout:function(){if(j.settings.hideBarsDelay>0){var b=this;b.clearTimeout(),b.timeout=a.setTimeout(function(){b.hideBars()},j.settings.hideBarsDelay)}},clearTimeout:function(){a.clearTimeout(this.timeout),this.timeout=null},showBars:function(){var a=c("#swipebox-top-bar, #swipebox-bottom-bar");a.addClass("visible-bars")},hideBars:function(){var a=c("#swipebox-top-bar, #swipebox-bottom-bar");a.removeClass("visible-bars")},animBars:function(){var a=this,b=c("#swipebox-top-bar, #swipebox-bottom-bar");b.addClass("visible-bars"),a.setTimeout(),c("#swipebox-slider").click(function(){b.hasClass("visible-bars")||(a.showBars(),a.setTimeout())}),c("#swipebox-bottom-bar").hover(function(){a.showBars(),b.addClass("visible-bars"),a.clearTimeout()},function(){j.settings.hideBarsDelay>0&&(b.removeClass("visible-bars"),a.setTimeout())})},keyboard:function(){var b=this;c(a).bind("keyup",function(a){a.preventDefault(),a.stopPropagation(),37===a.keyCode?b.getPrev():39===a.keyCode?b.getNext():27===a.keyCode&&b.closeSlide()})},actions:function(){var a=this,b="touchend click";k.length<2?(c("#swipebox-bottom-bar").hide(),d===k[1]&&c("#swipebox-top-bar").hide()):(c("#swipebox-prev").bind(b,function(b){b.preventDefault(),b.stopPropagation(),a.getPrev(),a.setTimeout()}),c("#swipebox-next").bind(b,function(b){b.preventDefault(),b.stopPropagation(),a.getNext(),a.setTimeout()})),c("#swipebox-close").bind(b,function(){a.closeSlide()})},setSlide:function(a,b){b=b||!1;var d=c("#swipebox-slider");s=100*-a,this.doCssTrans()?d.css({"-webkit-transform":"translate3d("+100*-a+"%, 0, 0)",transform:"translate3d("+100*-a+"%, 0, 0)"}):d.animate({left:100*-a+"%"}),c("#swipebox-slider .slide").removeClass("current"),c("#swipebox-slider .slide").eq(a).addClass("current"),this.setTitle(a),b&&d.fadeIn(),c("#swipebox-prev, #swipebox-next").removeClass("disabled"),0===a?c("#swipebox-prev").addClass("disabled"):a===k.length-1&&j.settings.loopAtEnd!==!0&&c("#swipebox-next").addClass("disabled"),this.showBars(),this.setTimeout()},openSlide:function(b){c("html").addClass("swipebox-html"),o?(c("html").addClass("swipebox-touch"),j.settings.hideCloseButtonOnMobile&&c("html").addClass("swipebox-no-close-button")):c("html").addClass("swipebox-no-touch"),c(a).trigger("resize"),this.setSlide(b,!0)},preloadMedia:function(a){var b=this,c=null;k[a]!==d&&(c=k[a].href),b.isVideo(c)?b.openMedia(a):setTimeout(function(){b.openMedia(a)},1e3)},openMedia:function(a){var b,e,f=this;return k[a]!==d&&(b=k[a].href),0>a||a>=k.length?!1:(e=c("#swipebox-slider .slide").eq(a),void(f.isVideo(b)?e.html(f.getVideo(b)):(e.addClass("slide-loading"),f.loadMedia(b,function(){e.removeClass("slide-loading"),e.html(this)}))))},setTitle:function(a){var b=null,e=null;if(c("#swipebox-title").empty(),k[a]!==d&&(b=k[a].title,e=k[a].caption),b||e){if(c("#swipebox-top-bar").show(),b){var f=c("
").addClass("title").text(b);c("#swipebox-title").append(f)}if(e){var g=c("
").addClass("caption").text(e);c("#swipebox-title").append(g)}}else c("#swipebox-top-bar").hide()},isVideo:function(a){if(a){if(a.match(/(youtube\.com|youtube-nocookie\.com)\/watch\?v=([a-zA-Z0-9\-_]+)/)||a.match(/vimeo\.com\/([0-9]*)/)||a.match(/youtu\.be\/([a-zA-Z0-9\-_]+)/))return!0;if(a.toLowerCase().indexOf("swipeboxvideo=1")>=0)return!0}},parseUri:function(a,d){var e=b.createElement("a"),f={};return e.href=decodeURIComponent(a),e.search&&(f=JSON.parse('{"'+e.search.toLowerCase().replace("?","").replace(/&/g,'","').replace(/=/g,'":"')+'"}')),c.isPlainObject(d)&&(f=c.extend(f,d,j.settings.queryStringData)),c.map(f,function(a,b){return a&&a>""?encodeURIComponent(b)+"="+encodeURIComponent(a):void 0}).join("&")},getVideo:function(a){var b="",c=a.match(/((?:www\.)?youtube\.com|(?:www\.)?youtube-nocookie\.com)\/watch\?v=([a-zA-Z0-9\-_]+)/),d=a.match(/(?:www\.)?youtu\.be\/([a-zA-Z0-9\-_]+)/),e=a.match(/(?:www\.)?vimeo\.com\/([0-9]*)/),f="";return c||d?(d&&(c=d),f=g.parseUri(a,{autoplay:j.settings.autoplayVideos?"1":"0",v:""}),b=''):e?(f=g.parseUri(a,{autoplay:j.settings.autoplayVideos?"1":"0",byline:"0",portrait:"0",color:j.settings.vimeoColor}),b=''):b='','
'+b+"
"},loadMedia:function(a,b){if(0===a.trim().indexOf("#"))b.call(c("
",{"class":"swipebox-inline-container"}).append(c(a).clone().toggleClass(j.settings.toggleClassOnLoad)));else if(!this.isVideo(a)){var d=c("").on("load",function(){b.call(d)});d.attr("src",a)}},getNext:function(){var a,b=this,d=c("#swipebox-slider .slide").index(c("#swipebox-slider .slide.current"));d+10?(a=c("#swipebox-slider .slide").eq(b).contents().find("iframe").attr("src"),c("#swipebox-slider .slide").eq(b).contents().find("iframe").attr("src",a),b--,this.setSlide(b),this.preloadMedia(b-1),j.settings.prevSlide&&j.settings.prevSlide()):(c("#swipebox-overlay").addClass("leftSpring"),setTimeout(function(){c("#swipebox-overlay").removeClass("leftSpring")},500))},nextSlide:function(){},prevSlide:function(){},closeSlide:function(){c("html").removeClass("swipebox-html"),c("html").removeClass("swipebox-touch"),c(a).trigger("resize"),this.destroy()},destroy:function(){c(a).unbind("keyup"),c("body").unbind("touchstart"),c("body").unbind("touchmove"),c("body").unbind("touchend"),c("#swipebox-slider").unbind(),c("#swipebox-overlay").remove(),c.isArray(e)||e.removeData("_swipebox"),this.target&&this.target.trigger("swipebox-destroy"),c.swipebox.isOpen=!1,j.settings.afterClose&&j.settings.afterClose()}},j.init()},c.fn.swipebox=function(a){if(!c.data(this,"_swipebox")){var b=new c.swipebox(this,a);this.data("_swipebox",b)}return this.data("_swipebox")}}(window,document,jQuery); \ No newline at end of file diff --git a/sources/lib/plugins/gallery/syntax.php b/sources/lib/plugins/gallery/syntax.php new file mode 100755 index 0000000..80a841c --- /dev/null +++ b/sources/lib/plugins/gallery/syntax.php @@ -0,0 +1,663 @@ + + * @author Joe Lapp + * @author Dave Doyle + */ + +if(!defined('DOKU_INC')) define('DOKU_INC',realpath(dirname(__FILE__).'/../../').'/'); +if(!defined('DOKU_PLUGIN')) define('DOKU_PLUGIN',DOKU_INC.'lib/plugins/'); +require_once(DOKU_PLUGIN.'syntax.php'); +require_once(DOKU_INC.'inc/search.php'); +require_once(DOKU_INC.'inc/JpegMeta.php'); + +class syntax_plugin_gallery extends DokuWiki_Syntax_Plugin { + + /** + * What kind of syntax are we? + */ + function getType(){ + return 'substition'; + } + + /** + * What about paragraphs? + */ + function getPType(){ + return 'block'; + } + + /** + * Where to sort in? + */ + function getSort(){ + return 301; + } + + + /** + * Connect pattern to lexer + */ + function connectTo($mode) { + $this->Lexer->addSpecialPattern('\{\{gallery>[^}]*\}\}',$mode,'plugin_gallery'); + } + + /** + * Handle the match + */ + function handle($match, $state, $pos, Doku_Handler $handler){ + global $ID; + $match = substr($match,10,-2); //strip markup from start and end + + $data = array(); + + $data['galid'] = substr(md5($match),0,4); + + // alignment + $data['align'] = 0; + if(substr($match,0,1) == ' ') $data['align'] += 1; + if(substr($match,-1,1) == ' ') $data['align'] += 2; + + // extract params + list($ns,$params) = explode('?',$match,2); + $ns = trim($ns); + + // namespace (including resolving relatives) + if(!preg_match('/^https?:\/\//i',$ns)){ + $data['ns'] = resolve_id(getNS($ID),$ns); + }else{ + $data['ns'] = $ns; + } + + // set the defaults + $data['tw'] = $this->getConf('thumbnail_width'); + $data['th'] = $this->getConf('thumbnail_height'); + $data['iw'] = $this->getConf('image_width'); + $data['ih'] = $this->getConf('image_height'); + $data['cols'] = $this->getConf('cols'); + $data['filter'] = ''; + $data['lightbox'] = false; + $data['direct'] = false; + $data['showname'] = false; + $data['showtitle'] = false; + $data['reverse'] = false; + $data['random'] = false; + $data['cache'] = true; + $data['crop'] = false; + $data['recursive']= true; + $data['sort'] = $this->getConf('sort'); + $data['limit'] = 0; + $data['offset'] = 0; + $data['paginate'] = 0; + + // parse additional options + $params = $this->getConf('options').','.$params; + $params = preg_replace('/[,&\?]+/',' ',$params); + $params = explode(' ',$params); + foreach($params as $param){ + if($param === '') continue; + if($param == 'titlesort'){ + $data['sort'] = 'title'; + }elseif($param == 'datesort'){ + $data['sort'] = 'date'; + }elseif($param == 'modsort'){ + $data['sort'] = 'mod'; + }elseif(preg_match('/^=(\d+)$/',$param,$match)){ + $data['limit'] = $match[1]; + }elseif(preg_match('/^\+(\d+)$/',$param,$match)){ + $data['offset'] = $match[1]; + }elseif(is_numeric($param)){ + $data['cols'] = (int) $param; + }elseif(preg_match('/^~(\d+)$/',$param,$match)){ + $data['paginate'] = $match[1]; + }elseif(preg_match('/^(\d+)([xX])(\d+)$/',$param,$match)){ + if($match[2] == 'X'){ + $data['iw'] = $match[1]; + $data['ih'] = $match[3]; + }else{ + $data['tw'] = $match[1]; + $data['th'] = $match[3]; + } + }elseif(strpos($param,'*') !== false){ + $param = preg_quote($param,'/'); + $param = '/^'.str_replace('\\*','.*?',$param).'$/'; + $data['filter'] = $param; + }else{ + if(substr($param,0,2) == 'no'){ + $data[substr($param,2)] = false; + }else{ + $data[$param] = true; + } + } + } + + // implicit direct linking? + if($data['lightbox']) $data['direct'] = true; + + + return $data; + } + + /** + * Create output + */ + function render($mode, Doku_Renderer $R, $data){ + global $ID; + if($mode == 'xhtml'){ + $R->info['cache'] &= $data['cache']; + $R->doc .= $this->_gallery($data); + return true; + }elseif($mode == 'metadata'){ + $rel = p_get_metadata($ID,'relation',METADATA_RENDER_USING_CACHE); + $img = $rel['firstimage']; + if(empty($img)){ + $files = $this->_findimages($data); + if(count($files)) $R->internalmedia($files[0]['id']); + } + return true; + } + return false; + } + + /** + * Loads images from a MediaRSS or ATOM feed + */ + function _loadRSS($url){ + require_once(DOKU_INC.'inc/FeedParser.php'); + $feed = new FeedParser(); + $feed->set_feed_url($url); + $feed->init(); + $files = array(); + + // base url to use for broken feeds with non-absolute links + $main = parse_url($url); + $host = $main['scheme'].'://'. + $main['host']. + (($main['port'])?':'.$main['port']:''); + $path = dirname($main['path']).'/'; + + foreach($feed->get_items() as $item){ + if ($enclosure = $item->get_enclosure()){ + // skip non-image enclosures + if($enclosure->get_type()){ + if(substr($enclosure->get_type(),0,5) != 'image') continue; + }else{ + if(!preg_match('/\.(jpe?g|png|gif)(\?|$)/i', + $enclosure->get_link())) continue; + } + + // non absolute links + $ilink = $enclosure->get_link(); + if(!preg_match('/^https?:\/\//i',$ilink)){ + if($ilink{0} == '/'){ + $ilink = $host.$ilink; + }else{ + $ilink = $host.$path.$ilink; + } + } + $link = $item->link; + if(!preg_match('/^https?:\/\//i',$link)){ + if($link{0} == '/'){ + $link = $host.$link; + }else{ + $link = $host.$path.$link; + } + } + + $files[] = array( + 'id' => $ilink, + 'isimg' => true, + 'file' => basename($ilink), + // decode to avoid later double encoding + 'title' => htmlspecialchars_decode($enclosure->get_title(),ENT_COMPAT), + 'desc' => strip_tags(htmlspecialchars_decode($enclosure->get_description(),ENT_COMPAT)), + 'width' => $enclosure->get_width(), + 'height' => $enclosure->get_height(), + 'mtime' => $item->get_date('U'), + 'ctime' => $item->get_date('U'), + 'detail' => $link, + ); + } + } + return $files; + } + + /** + * Gather all photos matching the given criteria + */ + function _findimages(&$data){ + global $conf; + $files = array(); + + // http URLs are supposed to be media RSS feeds + if(preg_match('/^https?:\/\//i',$data['ns'])){ + $files = $this->_loadRSS($data['ns']); + $data['_single'] = false; + }else{ + $dir = utf8_encodeFN(str_replace(':','/',$data['ns'])); + // all possible images for the given namespace (or a single image) + if(is_file($conf['mediadir'].'/'.$dir)){ + require_once(DOKU_INC.'inc/JpegMeta.php'); + $files[] = array( + 'id' => $data['ns'], + 'isimg' => preg_match('/\.(jpe?g|gif|png)$/',$dir), + 'file' => basename($dir), + 'mtime' => filemtime($conf['mediadir'].'/'.$dir), + 'meta' => new JpegMeta($conf['mediadir'].'/'.$dir) + ); + $data['_single'] = true; + }else{ + $depth = $data['recursive'] ? 0 : 1; + search($files, + $conf['mediadir'], + 'search_media', + array('depth'=>$depth), + $dir); + $data['_single'] = false; + } + } + + // done, yet? + $len = count($files); + if(!$len) return $files; + if($data['single']) return $files; + + // filter images + for($i=0; $i<$len; $i++){ + if(!$files[$i]['isimg']){ + unset($files[$i]); // this is faster, because RE was done before + }elseif($data['filter']){ + if(!preg_match($data['filter'],noNS($files[$i]['id']))) unset($files[$i]); + } + } + if($len<1) return $files; + + // random? + if($data['random']){ + shuffle($files); + }else{ + // sort? + if($data['sort'] == 'date'){ + usort($files,array($this,'_datesort')); + }elseif($data['sort'] == 'mod'){ + usort($files,array($this,'_modsort')); + }elseif($data['sort'] == 'title'){ + usort($files,array($this,'_titlesort')); + } + + // reverse? + if($data['reverse']) $files = array_reverse($files); + } + + // limits and offsets? + if($data['offset']) $files = array_slice($files,$data['offset']); + if($data['limit']) $files = array_slice($files,0,$data['limit']); + + return $files; + } + + /** + * usort callback to sort by file lastmodified time + */ + function _modsort($a,$b){ + if($a['mtime'] < $b['mtime']) return -1; + if($a['mtime'] > $b['mtime']) return 1; + return strcmp($a['file'],$b['file']); + } + + /** + * usort callback to sort by EXIF date + */ + function _datesort($a,$b){ + $da = $this->_meta($a,'cdate'); + $db = $this->_meta($b,'cdate'); + if($da < $db) return -1; + if($da > $db) return 1; + return strcmp($a['file'],$b['file']); + } + + /** + * usort callback to sort by EXIF title + */ + function _titlesort($a,$b){ + $ta = $this->_meta($a,'title'); + $tb = $this->_meta($b,'title'); + return strcmp($ta,$tb); + } + + + /** + * Does the gallery formatting + */ + function _gallery($data){ + global $conf; + global $lang; + $ret = ''; + + $files = $this->_findimages($data); + + //anything found? + if(!count($files)){ + $ret .= '
'.$lang['nothingfound'].'
'; + return $ret; + } + + // prepare alignment + $align = ''; + $xalign = ''; + if($data['align'] == 1){ + $align = ' gallery_right'; + $xalign = ' align="right"'; + } + if($data['align'] == 2){ + $align = ' gallery_left'; + $xalign = ' align="left"'; + } + if($data['align'] == 3){ + $align = ' gallery_center'; + $xalign = ' align="center"'; + } + if(!$data['_single']){ + if(!$align) $align = ' gallery_center'; // center galleries on default + if(!$xalign) $xalign = ' align="center"'; + } + + $page = 0; + + // build gallery + if($data['_single']){ + $ret .= $this->_image($files[0],$data); + $ret .= $this->_showname($files[0],$data); + $ret .= $this->_showtitle($files[0],$data); + }elseif($data['cols'] > 0){ // format as table + $close_pg = false; + + $i = 0; + foreach($files as $img){ + + // new page? + if($data['paginate'] && ($i % $data['paginate'] == 0)){ + $ret .= ''; + $close_pg = false; + } + + } + + if ($close_tr){ + // add remaining empty cells + while($i % $data['cols']){ + $ret .= ''; + $i++; + } + $ret .= ''; + } + + if(!$data['paginate']){ + $ret .= ''; + }elseif ($close_pg){ + $ret .= ''; + $ret .= '
'; + } + }else{ // format as div sequence + $i = 0; + $close_pg = false; + foreach($files as $img){ + + if($data['paginate'] && ($i % $data['paginate'] == 0)){ + $ret .= ''; + $close_pg = false; + } + } + + if($close_pg) $ret .= '
'; + + $ret .= '
'; + } + + // pagination links + $pgret = ''; + if($page){ + $pgret .= ''; + } + + return '
'.$pgret.$ret.'
'; + } + + /** + * Defines how a thumbnail should look like + */ + function _image(&$img,$data){ + global $ID; + + // calculate thumbnail size + if(!$data['crop']){ + $w = (int) $this->_meta($img,'width'); + $h = (int) $this->_meta($img,'height'); + if($w && $h){ + $dim = array(); + if($w > $data['tw'] || $h > $data['th']){ + $ratio = $this->_ratio($img,$data['tw'],$data['th']); + $w = floor($w * $ratio); + $h = floor($h * $ratio); + $dim = array('w'=>$w,'h'=>$h); + } + }else{ + $data['crop'] = true; // no size info -> always crop + } + } + if($data['crop']){ + $w = $data['tw']; + $h = $data['th']; + $dim = array('w'=>$w,'h'=>$h); + } + + //prepare img attributes + $i = array(); + $i['width'] = $w; + $i['height'] = $h; + $i['border'] = 0; + $i['alt'] = $this->_meta($img,'title'); + $i['class'] = 'tn'; + $iatt = buildAttributes($i); + $src = ml($img['id'],$dim); + + // prepare lightbox dimensions + $w_lightbox = (int) $this->_meta($img,'width'); + $h_lightbox = (int) $this->_meta($img,'height'); + $dim_lightbox = array(); + if($w_lightbox > $data['iw'] || $h_lightbox > $data['ih']){ + $ratio = $this->_ratio($img,$data['iw'],$data['ih']); + $w_lightbox = floor($w_lightbox * $ratio); + $h_lightbox = floor($h_lightbox * $ratio); + $dim_lightbox = array('w'=>$w_lightbox,'h'=>$h_lightbox); + } + + //prepare link attributes + $a = array(); + $a['title'] = $this->_meta($img,'title'); + $a['data-caption'] = trim(str_replace("\n",' ',$this->_meta($img,'desc'))); + if(!$a['data-caption']) unset($a['data-caption']); + if($data['lightbox']){ + $href = ml($img['id'],$dim_lightbox); + $a['class'] = "lightbox JSnocheck"; + $a['rel'] = 'lightbox[gal-'.substr(md5($ID),4).']'; //unique ID for the gallery + }elseif($img['detail'] && !$data['direct']){ + $href = $img['detail']; + }else{ + $href = ml($img['id'],array('id'=>$ID),$data['direct']); + } + $aatt = buildAttributes($a); + + // prepare output + $ret = ''; + $ret .= ''; + $ret .= ''; + $ret .= ''; + return $ret; + } + + + /** + * Defines how a filename + link should look + */ + function _showname($img,$data){ + global $ID; + + if(!$data['showname'] ) { return ''; } + + //prepare link + $lnk = ml($img['id'],array('id'=>$ID),false); + + // prepare output + $ret = ''; + $ret .= '
'; + $ret .= hsc($img['file']); + $ret .= ''; + return $ret; + } + + /** + * Defines how title + link should look + */ + function _showtitle($img,$data){ + global $ID; + + if(!$data['showtitle'] ) { return ''; } + + //prepare link + $lnk = ml($img['id'],array('id'=>$ID),false); + + // prepare output + $ret = ''; + $ret .= '
'; + $ret .= hsc($this->_meta($img,'title')); + $ret .= ''; + return $ret; + } + + /** + * Return the metadata of an item + * + * Automatically checks if a JPEGMeta object is available or if all data is + * supplied in array + */ + function _meta(&$img,$opt){ + if($img['meta']){ + // map JPEGMeta calls to opt names + + switch($opt){ + case 'title': + return $img['meta']->getField('Simple.Title'); + case 'desc': + return $img['meta']->getField('Iptc.Caption'); + case 'cdate': + return $img['meta']->getField('Date.EarliestTime'); + case 'width': + return $img['meta']->getField('File.Width'); + case 'height': + return $img['meta']->getField('File.Height'); + + + default: + return ''; + } + + }else{ + // just return the array field + return $img[$opt]; + } + } + + /** + * Calculates the multiplier needed to resize the image to the given + * dimensions + * + * @author Andreas Gohr + */ + function _ratio(&$img,$maxwidth,$maxheight=0){ + if(!$maxheight) $maxheight = $maxwidth; + + $w = $this->_meta($img,'width'); + $h = $this->_meta($img,'height'); + + $ratio = 1; + if($w >= $h){ + if($w >= $maxwidth){ + $ratio = $maxwidth/$w; + }elseif($h > $maxheight){ + $ratio = $maxheight/$h; + } + }else{ + if($h >= $maxheight){ + $ratio = $maxheight/$h; + }elseif($w > $maxwidth){ + $ratio = $maxwidth/$w; + } + } + return $ratio; + } + +} + +//Setup VIM: ex: et ts=4 enc=utf-8 : diff --git a/sources/lib/plugins/translation/README b/sources/lib/plugins/translation/README new file mode 100755 index 0000000..1a5b5ef --- /dev/null +++ b/sources/lib/plugins/translation/README @@ -0,0 +1,25 @@ +translation Plugin for DokuWiki + +All documentation for this plugin can be found at +http://www.dokuwiki.org/plugin:translation + +If you install this plugin manually, make sure it is installed in +lib/plugins/translation/ - if the folder is called different it +will not work! + +Please refer to http://www.dokuwiki.org/plugins for additional info +on how to install plugins in DokuWiki. + +---- +Copyright (C) Andreas Gohr + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; version 2 of the License + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +See the COPYING file in your DokuWiki folder for details diff --git a/sources/lib/plugins/translation/action.php b/sources/lib/plugins/translation/action.php new file mode 100755 index 0000000..80f82ab --- /dev/null +++ b/sources/lib/plugins/translation/action.php @@ -0,0 +1,289 @@ + + * @author Guy Brand + */ + +// must be run within Dokuwiki +if(!defined('DOKU_INC')) die(); + +if(!defined('DOKU_PLUGIN')) define('DOKU_PLUGIN', DOKU_INC . 'lib/plugins/'); +require_once(DOKU_PLUGIN . 'action.php'); + +class action_plugin_translation extends DokuWiki_Action_Plugin { + + /** + * For the helper plugin + * @var helper_plugin_translation + */ + var $helper = null; + + var $locale; + + /** + * Constructor. Load helper plugin + */ + function __construct() { + $this->helper =& plugin_load('helper', 'translation'); + } + + /** + * Register the events + */ + function register(Doku_Event_Handler $controller) { + $scriptName = basename($_SERVER['PHP_SELF']); + + // should the lang be applied to UI? + if($this->getConf('translateui')) { + switch($scriptName) { + case 'js.php': + $controller->register_hook('INIT_LANG_LOAD', 'BEFORE', $this, 'translation_js'); + $controller->register_hook('JS_CACHE_USE', 'BEFORE', $this, 'translation_jscache'); + break; + + case 'ajax.php': + $controller->register_hook('INIT_LANG_LOAD', 'BEFORE', $this, 'translate_media_manager'); + break; + + case 'mediamanager.php': + $controller->register_hook('TPL_METAHEADER_OUTPUT', 'BEFORE', $this, 'setJsCacheKey'); + break; + + default: + $controller->register_hook('TPL_METAHEADER_OUTPUT', 'BEFORE', $this, 'setJsCacheKey'); + } + } + + if($scriptName !== 'js.php' && $scriptName !== 'ajax.php') { + $controller->register_hook('DOKUWIKI_STARTED', 'BEFORE', $this, 'translation_hook'); + $controller->register_hook('MEDIAMANAGER_STARTED', 'BEFORE', $this, 'translation_hook'); + } + + $controller->register_hook('SEARCH_QUERY_PAGELOOKUP', 'AFTER', $this, 'translation_search'); + $controller->register_hook('COMMON_PAGETPL_LOAD', 'AFTER', $this, 'page_template_replacement'); + } + + /** + * Hook Callback. Make current language available as page template placeholder and handle + * original language copying + * + * @param $event + * @param $args + */ + function page_template_replacement(&$event, $args) { + global $ID; + + // load orginal content as template? + if($this->getConf('copytrans') && $this->helper->istranslatable($ID, false)) { + // look for existing translations + $translations = $this->helper->getAvailableTranslations($ID); + if($translations) { + // find original language (might've been provided via parameter or use first translation) + $orig = (string) $_REQUEST['fromlang']; + if(!$orig) $orig = array_shift(array_keys($translations)); + + // load file + $origfile = $translations[$orig]; + $event->data['tpl'] = io_readFile(wikiFN($origfile)); + + // prefix with warning + $warn = io_readFile($this->localFN('totranslate')); + if($warn) $warn .= "\n\n"; + $event->data['tpl'] = $warn . $event->data['tpl']; + + // show user a choice of translations if any + if(count($translations) > 1) { + $links = array(); + foreach($translations as $t => $l) { + $links[] = '' . $this->helper->getLocalName($t) . ''; + } + + msg( + sprintf( + $this->getLang('transloaded'), + $this->helper->getLocalName($orig), + join(', ', $links) + ) + ); + } + + } + } + + // apply placeholders + $event->data['tpl'] = str_replace('@LANG@', $this->helper->realLC(''), $event->data['tpl']); + $event->data['tpl'] = str_replace('@TRANS@', $this->helper->getLangPart($ID), $event->data['tpl']); + } + + /** + * Hook Callback. Load correct translation when loading JavaScript + * + * @param $event + * @param $args + */ + function translation_js(&$event, $args) { + global $conf; + if(!isset($_GET['lang'])) return; + if(!in_array($_GET['lang'], $this->helper->translations)) return; + $lang = $_GET['lang']; + $event->data = $lang; + $conf['lang'] = $lang; + } + + /** + * Hook Callback. Pass language code to JavaScript dispatcher + * + * @param $event + * @param $args + * @return bool + */ + function setJsCacheKey(&$event, $args) { + if(!isset($this->locale)) return false; + $count = count($event->data['script']); + for($i = 0; $i < $count; $i++) { + if(strpos($event->data['script'][$i]['src'], '/lib/exe/js.php') !== false) { + $event->data['script'][$i]['src'] .= '&lang=' . hsc($this->locale); + } + } + + return false; + } + + /** + * Hook Callback. Make sure the JavaScript is translation dependent + * + * @param $event + * @param $args + */ + function translation_jscache(&$event, $args) { + if(!isset($_GET['lang'])) return; + if(!in_array($_GET['lang'], $this->helper->translations)) return; + + $lang = $_GET['lang']; + // reuse the constructor to reinitialize the cache key + if(method_exists($event->data, '__construct')) { + // New PHP 5 style constructor + $event->data->__construct( + $event->data->key . $lang, + $event->data->ext + ); + } else { + // Old PHP 4 style constructor - deprecated + $event->data->cache( + $event->data->key . $lang, + $event->data->ext + ); + } + } + + /** + * Hook Callback. Translate the AJAX loaded media manager + * + * @param $event + * @param $args + */ + function translate_media_manager(&$event, $args) { + global $conf; + if(isset($_REQUEST['ID'])) { + $id = getID(); + $lc = $this->helper->getLangPart($id); + } elseif(isset($_SESSION[DOKU_COOKIE]['translationlc'])) { + $lc = $_SESSION[DOKU_COOKIE]['translationlc']; + } else { + return; + } + if(!$lc) return; + + $conf['lang'] = $lc; + $event->data = $lc; + } + + /** + * Hook Callback. Change the UI language in foreign language namespaces + */ + function translation_hook(&$event, $args) { + global $ID; + global $lang; + global $conf; + global $ACT; + // redirect away from start page? + if($this->conf['redirectstart'] && $ID == $conf['start'] && $ACT == 'show') { + $lc = $this->helper->getBrowserLang(); + if(!$lc) $lc = $conf['lang']; + header('Location: ' . wl($lc . ':' . $conf['start'], '', true, '&')); + exit; + } + + // check if we are in a foreign language namespace + $lc = $this->helper->getLangPart($ID); + + // store language in session (for page related views only) + if(in_array($ACT, array('show', 'recent', 'diff', 'edit', 'preview', 'source', 'subscribe'))) { + $_SESSION[DOKU_COOKIE]['translationlc'] = $lc; + } + if(!$lc) $lc = $_SESSION[DOKU_COOKIE]['translationlc']; + if(!$lc) return; + $this->locale = $lc; + + if(!$this->getConf('translateui')) { + return true; + } + + if(file_exists(DOKU_INC . 'inc/lang/' . $lc . '/lang.php')) { + require(DOKU_INC . 'inc/lang/' . $lc . '/lang.php'); + } + $conf['lang_before_translation'] = $conf['lang']; //store for later access in syntax plugin + $conf['lang'] = $lc; + + return true; + } + + /** + * Hook Callback. Resort page match results so that results are ordered by translation, having the + * default language first + */ + function translation_search(&$event, $args) { + + if($event->data['has_titles']) { + // sort into translation slots + $res = array(); + foreach($event->result as $r => $t) { + $tr = $this->helper->getLangPart($r); + if(!is_array($res["x$tr"])) $res["x$tr"] = array(); + $res["x$tr"][] = array($r, $t); + } + // sort by translations + ksort($res); + // combine + $event->result = array(); + foreach($res as $r) { + foreach($r as $l) { + $event->result[$l[0]] = $l[1]; + } + } + } else { + # legacy support for old DokuWiki hooks + + // sort into translation slots + $res = array(); + foreach($event->result as $r) { + $tr = $this->helper->getLangPart($r); + if(!is_array($res["x$tr"])) $res["x$tr"] = array(); + $res["x$tr"][] = $r; + } + // sort by translations + ksort($res); + // combine + $event->result = array(); + foreach($res as $r) { + $event->result = array_merge($event->result, $r); + } + } + } + +} + +//Setup VIM: ex: et ts=4 : diff --git a/sources/lib/plugins/translation/admin.php b/sources/lib/plugins/translation/admin.php new file mode 100644 index 0000000..f8d95a1 --- /dev/null +++ b/sources/lib/plugins/translation/admin.php @@ -0,0 +1,101 @@ +defaultlang; + + /** @var Doku_Renderer_xhtml $xhtml_renderer */ + $xhtml_renderer = p_get_renderer('xhtml'); + + echo "

" . $this->getLang("menu") . "

"; + echo ""; + echo ""; + if ($this->getConf('show_path')) { + echo ""; + } + foreach ($helper->translations as $t) { + if($t === $default_language) { + continue; + } + echo ""; + } + echo ""; + + $pages = $this->getAllPages(); + foreach ($pages as $page) { + if (!$helper->getLangPart($page["id"]) === $default_language || + !$helper->istranslatable($page["id"], false) || + !page_exists($page["id"]) + ) { + continue; + } + // We have an existing and translatable page in the default language + $showRow = false; + $row = ""; + if ($this->getConf('show_path')) { + $row .= ""; + } + + list($lc, $idpart) = $helper->getTransParts($page["id"]); + + foreach ($helper->translations as $t) { + if ($t === $default_language) { + continue; + } + + list($translID, $name) = $helper->buildTransID($t, $idpart); + + + $difflink = ''; + if(!page_exists($translID)) { + $class = "missing"; + $title = $this->getLang("missing"); + $showRow = true; + } else { + $translfn = wikiFN($translID); + if($page['mtime'] > filemtime($translfn)) { + $class = "outdated"; + $difflink = " getLang('old'); + $showRow = true; + } else { + $class = "current"; + $title = $this->getLang('current'); + } + } + $row .= ""; + } + $row .= ""; + + if ($showRow) { + echo $row; + } + + } + echo "
default: $default_language" . $this->getLang('path') . "$t
" . $xhtml_renderer->internallink($page['id'],null,null,true) . "" . $xhtml_renderer->internallink($page['id'],$page['id'],null,true) . "" . $xhtml_renderer->internallink($translID,$title,null,true) . $difflink . "
"; + + } + + function getAllPages() { + $namespace = $this->getConf("translationns"); + $dir = dirname(wikiFN("$namespace:foo")); + $pages = array(); + search($pages, $dir, 'search_allpages',array()); + return $pages; + } +} diff --git a/sources/lib/plugins/translation/conf/default.php b/sources/lib/plugins/translation/conf/default.php new file mode 100755 index 0000000..3a20131 --- /dev/null +++ b/sources/lib/plugins/translation/conf/default.php @@ -0,0 +1,19 @@ + + */ + +$conf['translations'] = ''; +$conf['translationns'] = ''; +$conf['skiptrans'] = ''; +$conf['dropdown'] = 0; +$conf['translateui'] = 0; +$conf['redirectstart'] = 0; +$conf['checkage'] = 0; +$conf['about'] = ''; +$conf['localabout'] = 0; +$conf['display'] = 'langcode,title'; +$conf['copytrans'] = 0; +$conf['show_path'] = 1; diff --git a/sources/lib/plugins/translation/conf/metadata.php b/sources/lib/plugins/translation/conf/metadata.php new file mode 100755 index 0000000..d9c4d22 --- /dev/null +++ b/sources/lib/plugins/translation/conf/metadata.php @@ -0,0 +1,21 @@ + + */ + +$meta['translations'] = array('string','_pattern' => '/^(|[a-zA-Z\- ,]+)$/'); +$meta['translationns'] = array('string','_pattern' => '/^(|[\w:\-]+)$/'); +$meta['skiptrans'] = array('string'); +$meta['dropdown'] = array('onoff'); +$meta['display'] = array('multicheckbox', + '_choices' => array('langcode','name','flag','title','twolines')); +$meta['translateui'] = array('onoff'); +$meta['redirectstart'] = array('onoff'); +$meta['checkage'] = array('onoff'); +$meta['about'] = array('string','_pattern' => '/^(|[\w:\-]+)$/'); +$meta['localabout'] = array('onoff'); +$meta['copytrans'] = array('onoff'); +$meta['show_path'] = array('onoff'); + diff --git a/sources/lib/plugins/translation/flags/af.gif b/sources/lib/plugins/translation/flags/af.gif new file mode 100755 index 0000000..9889408 Binary files /dev/null and b/sources/lib/plugins/translation/flags/af.gif differ diff --git a/sources/lib/plugins/translation/flags/ar.gif b/sources/lib/plugins/translation/flags/ar.gif new file mode 100755 index 0000000..179961b Binary files /dev/null and b/sources/lib/plugins/translation/flags/ar.gif differ diff --git a/sources/lib/plugins/translation/flags/da.gif b/sources/lib/plugins/translation/flags/da.gif new file mode 100755 index 0000000..03e75bd Binary files /dev/null and b/sources/lib/plugins/translation/flags/da.gif differ diff --git a/sources/lib/plugins/translation/flags/de.gif b/sources/lib/plugins/translation/flags/de.gif new file mode 100755 index 0000000..75728dd Binary files /dev/null and b/sources/lib/plugins/translation/flags/de.gif differ diff --git a/sources/lib/plugins/translation/flags/el.gif b/sources/lib/plugins/translation/flags/el.gif new file mode 100755 index 0000000..b4c8c04 Binary files /dev/null and b/sources/lib/plugins/translation/flags/el.gif differ diff --git a/sources/lib/plugins/translation/flags/en.gif b/sources/lib/plugins/translation/flags/en.gif new file mode 100755 index 0000000..3c6bce1 Binary files /dev/null and b/sources/lib/plugins/translation/flags/en.gif differ diff --git a/sources/lib/plugins/translation/flags/es.gif b/sources/lib/plugins/translation/flags/es.gif new file mode 100755 index 0000000..c27d65e Binary files /dev/null and b/sources/lib/plugins/translation/flags/es.gif differ diff --git a/sources/lib/plugins/translation/flags/et.gif b/sources/lib/plugins/translation/flags/et.gif new file mode 100755 index 0000000..9397a2d Binary files /dev/null and b/sources/lib/plugins/translation/flags/et.gif differ diff --git a/sources/lib/plugins/translation/flags/fa.gif b/sources/lib/plugins/translation/flags/fa.gif new file mode 100755 index 0000000..156040f Binary files /dev/null and b/sources/lib/plugins/translation/flags/fa.gif differ diff --git a/sources/lib/plugins/translation/flags/fr.gif b/sources/lib/plugins/translation/flags/fr.gif new file mode 100755 index 0000000..43d0b80 Binary files /dev/null and b/sources/lib/plugins/translation/flags/fr.gif differ diff --git a/sources/lib/plugins/translation/flags/ga.gif b/sources/lib/plugins/translation/flags/ga.gif new file mode 100755 index 0000000..506ad28 Binary files /dev/null and b/sources/lib/plugins/translation/flags/ga.gif differ diff --git a/sources/lib/plugins/translation/flags/he.gif b/sources/lib/plugins/translation/flags/he.gif new file mode 100755 index 0000000..c8483ae Binary files /dev/null and b/sources/lib/plugins/translation/flags/he.gif differ diff --git a/sources/lib/plugins/translation/flags/hu.gif b/sources/lib/plugins/translation/flags/hu.gif new file mode 100755 index 0000000..6142d86 Binary files /dev/null and b/sources/lib/plugins/translation/flags/hu.gif differ diff --git a/sources/lib/plugins/translation/flags/it.gif b/sources/lib/plugins/translation/flags/it.gif new file mode 100755 index 0000000..d79e90e Binary files /dev/null and b/sources/lib/plugins/translation/flags/it.gif differ diff --git a/sources/lib/plugins/translation/flags/ja.gif b/sources/lib/plugins/translation/flags/ja.gif new file mode 100755 index 0000000..444c1d0 Binary files /dev/null and b/sources/lib/plugins/translation/flags/ja.gif differ diff --git a/sources/lib/plugins/translation/flags/ko.gif b/sources/lib/plugins/translation/flags/ko.gif new file mode 100755 index 0000000..1cddbe7 Binary files /dev/null and b/sources/lib/plugins/translation/flags/ko.gif differ diff --git a/sources/lib/plugins/translation/flags/more/ad.gif b/sources/lib/plugins/translation/flags/more/ad.gif new file mode 100755 index 0000000..57b4997 Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/ad.gif differ diff --git a/sources/lib/plugins/translation/flags/more/ae.gif b/sources/lib/plugins/translation/flags/more/ae.gif new file mode 100755 index 0000000..78d15b6 Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/ae.gif differ diff --git a/sources/lib/plugins/translation/flags/more/ag.gif b/sources/lib/plugins/translation/flags/more/ag.gif new file mode 100755 index 0000000..48f8e7b Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/ag.gif differ diff --git a/sources/lib/plugins/translation/flags/more/ai.gif b/sources/lib/plugins/translation/flags/more/ai.gif new file mode 100755 index 0000000..1cbc579 Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/ai.gif differ diff --git a/sources/lib/plugins/translation/flags/more/al.gif b/sources/lib/plugins/translation/flags/more/al.gif new file mode 100755 index 0000000..c44fe0a Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/al.gif differ diff --git a/sources/lib/plugins/translation/flags/more/am.gif b/sources/lib/plugins/translation/flags/more/am.gif new file mode 100755 index 0000000..2915e30 Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/am.gif differ diff --git a/sources/lib/plugins/translation/flags/more/an.gif b/sources/lib/plugins/translation/flags/more/an.gif new file mode 100755 index 0000000..cb570c6 Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/an.gif differ diff --git a/sources/lib/plugins/translation/flags/more/ao.gif b/sources/lib/plugins/translation/flags/more/ao.gif new file mode 100755 index 0000000..8c854fa Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/ao.gif differ diff --git a/sources/lib/plugins/translation/flags/more/ar.gif b/sources/lib/plugins/translation/flags/more/ar.gif new file mode 100755 index 0000000..a9f71f7 Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/ar.gif differ diff --git a/sources/lib/plugins/translation/flags/more/as.gif b/sources/lib/plugins/translation/flags/more/as.gif new file mode 100755 index 0000000..d776ec2 Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/as.gif differ diff --git a/sources/lib/plugins/translation/flags/more/at.gif b/sources/lib/plugins/translation/flags/more/at.gif new file mode 100755 index 0000000..87e1217 Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/at.gif differ diff --git a/sources/lib/plugins/translation/flags/more/au.gif b/sources/lib/plugins/translation/flags/more/au.gif new file mode 100755 index 0000000..5269c6a Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/au.gif differ diff --git a/sources/lib/plugins/translation/flags/more/aw.gif b/sources/lib/plugins/translation/flags/more/aw.gif new file mode 100755 index 0000000..27fdb4d Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/aw.gif differ diff --git a/sources/lib/plugins/translation/flags/more/ax.gif b/sources/lib/plugins/translation/flags/more/ax.gif new file mode 100755 index 0000000..0ceb684 Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/ax.gif differ diff --git a/sources/lib/plugins/translation/flags/more/az.gif b/sources/lib/plugins/translation/flags/more/az.gif new file mode 100755 index 0000000..d771618 Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/az.gif differ diff --git a/sources/lib/plugins/translation/flags/more/ba.gif b/sources/lib/plugins/translation/flags/more/ba.gif new file mode 100755 index 0000000..9bf5f0a Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/ba.gif differ diff --git a/sources/lib/plugins/translation/flags/more/bb.gif b/sources/lib/plugins/translation/flags/more/bb.gif new file mode 100755 index 0000000..b7d08e5 Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/bb.gif differ diff --git a/sources/lib/plugins/translation/flags/more/bd.gif b/sources/lib/plugins/translation/flags/more/bd.gif new file mode 100755 index 0000000..0fd27ec Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/bd.gif differ diff --git a/sources/lib/plugins/translation/flags/more/be.gif b/sources/lib/plugins/translation/flags/more/be.gif new file mode 100755 index 0000000..ae09bfb Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/be.gif differ diff --git a/sources/lib/plugins/translation/flags/more/bf.gif b/sources/lib/plugins/translation/flags/more/bf.gif new file mode 100755 index 0000000..9d6772c Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/bf.gif differ diff --git a/sources/lib/plugins/translation/flags/more/bg.gif b/sources/lib/plugins/translation/flags/more/bg.gif new file mode 100755 index 0000000..11cf8ff Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/bg.gif differ diff --git a/sources/lib/plugins/translation/flags/more/bh.gif b/sources/lib/plugins/translation/flags/more/bh.gif new file mode 100755 index 0000000..56aa72b Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/bh.gif differ diff --git a/sources/lib/plugins/translation/flags/more/bi.gif b/sources/lib/plugins/translation/flags/more/bi.gif new file mode 100755 index 0000000..6e2cbe1 Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/bi.gif differ diff --git a/sources/lib/plugins/translation/flags/more/bj.gif b/sources/lib/plugins/translation/flags/more/bj.gif new file mode 100755 index 0000000..e676116 Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/bj.gif differ diff --git a/sources/lib/plugins/translation/flags/more/blankflag.gif b/sources/lib/plugins/translation/flags/more/blankflag.gif new file mode 100755 index 0000000..9935f82 Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/blankflag.gif differ diff --git a/sources/lib/plugins/translation/flags/more/bm.gif b/sources/lib/plugins/translation/flags/more/bm.gif new file mode 100755 index 0000000..9feb87b Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/bm.gif differ diff --git a/sources/lib/plugins/translation/flags/more/bn.gif b/sources/lib/plugins/translation/flags/more/bn.gif new file mode 100755 index 0000000..b7b6b0f Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/bn.gif differ diff --git a/sources/lib/plugins/translation/flags/more/bo.gif b/sources/lib/plugins/translation/flags/more/bo.gif new file mode 100755 index 0000000..4844f85 Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/bo.gif differ diff --git a/sources/lib/plugins/translation/flags/more/bs.gif b/sources/lib/plugins/translation/flags/more/bs.gif new file mode 100755 index 0000000..c0a741e Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/bs.gif differ diff --git a/sources/lib/plugins/translation/flags/more/bt.gif b/sources/lib/plugins/translation/flags/more/bt.gif new file mode 100755 index 0000000..abe2f3c Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/bt.gif differ diff --git a/sources/lib/plugins/translation/flags/more/bv.gif b/sources/lib/plugins/translation/flags/more/bv.gif new file mode 100755 index 0000000..6202d1f Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/bv.gif differ diff --git a/sources/lib/plugins/translation/flags/more/bw.gif b/sources/lib/plugins/translation/flags/more/bw.gif new file mode 100755 index 0000000..986ab63 Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/bw.gif differ diff --git a/sources/lib/plugins/translation/flags/more/by.gif b/sources/lib/plugins/translation/flags/more/by.gif new file mode 100755 index 0000000..43ffcd4 Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/by.gif differ diff --git a/sources/lib/plugins/translation/flags/more/bz.gif b/sources/lib/plugins/translation/flags/more/bz.gif new file mode 100755 index 0000000..791737f Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/bz.gif differ diff --git a/sources/lib/plugins/translation/flags/more/ca.gif b/sources/lib/plugins/translation/flags/more/ca.gif new file mode 100755 index 0000000..457d966 Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/ca.gif differ diff --git a/sources/lib/plugins/translation/flags/more/catalonia.gif b/sources/lib/plugins/translation/flags/more/catalonia.gif new file mode 100755 index 0000000..73df9a0 Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/catalonia.gif differ diff --git a/sources/lib/plugins/translation/flags/more/cc.gif b/sources/lib/plugins/translation/flags/more/cc.gif new file mode 100755 index 0000000..3f78327 Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/cc.gif differ diff --git a/sources/lib/plugins/translation/flags/more/cd.gif b/sources/lib/plugins/translation/flags/more/cd.gif new file mode 100755 index 0000000..1df717a Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/cd.gif differ diff --git a/sources/lib/plugins/translation/flags/more/cf.gif b/sources/lib/plugins/translation/flags/more/cf.gif new file mode 100755 index 0000000..35787ca Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/cf.gif differ diff --git a/sources/lib/plugins/translation/flags/more/cg.gif b/sources/lib/plugins/translation/flags/more/cg.gif new file mode 100755 index 0000000..e0a62a5 Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/cg.gif differ diff --git a/sources/lib/plugins/translation/flags/more/ch.gif b/sources/lib/plugins/translation/flags/more/ch.gif new file mode 100755 index 0000000..d5c0e5b Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/ch.gif differ diff --git a/sources/lib/plugins/translation/flags/more/ci.gif b/sources/lib/plugins/translation/flags/more/ci.gif new file mode 100755 index 0000000..844120a Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/ci.gif differ diff --git a/sources/lib/plugins/translation/flags/more/ck.gif b/sources/lib/plugins/translation/flags/more/ck.gif new file mode 100755 index 0000000..2edb739 Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/ck.gif differ diff --git a/sources/lib/plugins/translation/flags/more/cl.gif b/sources/lib/plugins/translation/flags/more/cl.gif new file mode 100755 index 0000000..cbc370e Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/cl.gif differ diff --git a/sources/lib/plugins/translation/flags/more/cm.gif b/sources/lib/plugins/translation/flags/more/cm.gif new file mode 100755 index 0000000..1fb102b Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/cm.gif differ diff --git a/sources/lib/plugins/translation/flags/more/co.gif b/sources/lib/plugins/translation/flags/more/co.gif new file mode 100755 index 0000000..d0e15ca Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/co.gif differ diff --git a/sources/lib/plugins/translation/flags/more/cr.gif b/sources/lib/plugins/translation/flags/more/cr.gif new file mode 100755 index 0000000..0728dd6 Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/cr.gif differ diff --git a/sources/lib/plugins/translation/flags/more/cs.gif b/sources/lib/plugins/translation/flags/more/cs.gif new file mode 100755 index 0000000..101db64 Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/cs.gif differ diff --git a/sources/lib/plugins/translation/flags/more/cu.gif b/sources/lib/plugins/translation/flags/more/cu.gif new file mode 100755 index 0000000..291255c Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/cu.gif differ diff --git a/sources/lib/plugins/translation/flags/more/cv.gif b/sources/lib/plugins/translation/flags/more/cv.gif new file mode 100755 index 0000000..43c6c6c Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/cv.gif differ diff --git a/sources/lib/plugins/translation/flags/more/cx.gif b/sources/lib/plugins/translation/flags/more/cx.gif new file mode 100755 index 0000000..a5b4308 Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/cx.gif differ diff --git a/sources/lib/plugins/translation/flags/more/cy.gif b/sources/lib/plugins/translation/flags/more/cy.gif new file mode 100755 index 0000000..35c661e Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/cy.gif differ diff --git a/sources/lib/plugins/translation/flags/more/cz.gif b/sources/lib/plugins/translation/flags/more/cz.gif new file mode 100755 index 0000000..0a605e5 Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/cz.gif differ diff --git a/sources/lib/plugins/translation/flags/more/dj.gif b/sources/lib/plugins/translation/flags/more/dj.gif new file mode 100755 index 0000000..212406d Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/dj.gif differ diff --git a/sources/lib/plugins/translation/flags/more/dm.gif b/sources/lib/plugins/translation/flags/more/dm.gif new file mode 100755 index 0000000..2f87f3c Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/dm.gif differ diff --git a/sources/lib/plugins/translation/flags/more/do.gif b/sources/lib/plugins/translation/flags/more/do.gif new file mode 100755 index 0000000..f7d0bad Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/do.gif differ diff --git a/sources/lib/plugins/translation/flags/more/dz.gif b/sources/lib/plugins/translation/flags/more/dz.gif new file mode 100755 index 0000000..ed580a7 Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/dz.gif differ diff --git a/sources/lib/plugins/translation/flags/more/ec.gif b/sources/lib/plugins/translation/flags/more/ec.gif new file mode 100755 index 0000000..9e41e0e Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/ec.gif differ diff --git a/sources/lib/plugins/translation/flags/more/eg.gif b/sources/lib/plugins/translation/flags/more/eg.gif new file mode 100755 index 0000000..6857c7d Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/eg.gif differ diff --git a/sources/lib/plugins/translation/flags/more/eh.gif b/sources/lib/plugins/translation/flags/more/eh.gif new file mode 100755 index 0000000..dd0391c Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/eh.gif differ diff --git a/sources/lib/plugins/translation/flags/more/england.gif b/sources/lib/plugins/translation/flags/more/england.gif new file mode 100755 index 0000000..933a4f0 Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/england.gif differ diff --git a/sources/lib/plugins/translation/flags/more/er.gif b/sources/lib/plugins/translation/flags/more/er.gif new file mode 100755 index 0000000..3d4d612 Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/er.gif differ diff --git a/sources/lib/plugins/translation/flags/more/et.gif b/sources/lib/plugins/translation/flags/more/et.gif new file mode 100755 index 0000000..f77995d Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/et.gif differ diff --git a/sources/lib/plugins/translation/flags/more/europeanunion.gif b/sources/lib/plugins/translation/flags/more/europeanunion.gif new file mode 100755 index 0000000..28a762a Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/europeanunion.gif differ diff --git a/sources/lib/plugins/translation/flags/more/fam.gif b/sources/lib/plugins/translation/flags/more/fam.gif new file mode 100755 index 0000000..7d52885 Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/fam.gif differ diff --git a/sources/lib/plugins/translation/flags/more/fi.gif b/sources/lib/plugins/translation/flags/more/fi.gif new file mode 100755 index 0000000..8d3a191 Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/fi.gif differ diff --git a/sources/lib/plugins/translation/flags/more/fj.gif b/sources/lib/plugins/translation/flags/more/fj.gif new file mode 100755 index 0000000..486151c Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/fj.gif differ diff --git a/sources/lib/plugins/translation/flags/more/fk.gif b/sources/lib/plugins/translation/flags/more/fk.gif new file mode 100755 index 0000000..37b5ecf Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/fk.gif differ diff --git a/sources/lib/plugins/translation/flags/more/fm.gif b/sources/lib/plugins/translation/flags/more/fm.gif new file mode 100755 index 0000000..7f8723b Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/fm.gif differ diff --git a/sources/lib/plugins/translation/flags/more/fo.gif b/sources/lib/plugins/translation/flags/more/fo.gif new file mode 100755 index 0000000..4a90fc0 Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/fo.gif differ diff --git a/sources/lib/plugins/translation/flags/more/ga.gif b/sources/lib/plugins/translation/flags/more/ga.gif new file mode 100755 index 0000000..23fd5f0 Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/ga.gif differ diff --git a/sources/lib/plugins/translation/flags/more/gd.gif b/sources/lib/plugins/translation/flags/more/gd.gif new file mode 100755 index 0000000..25ea312 Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/gd.gif differ diff --git a/sources/lib/plugins/translation/flags/more/ge.gif b/sources/lib/plugins/translation/flags/more/ge.gif new file mode 100755 index 0000000..faa7f12 Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/ge.gif differ diff --git a/sources/lib/plugins/translation/flags/more/gf.gif b/sources/lib/plugins/translation/flags/more/gf.gif new file mode 100755 index 0000000..43d0b80 Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/gf.gif differ diff --git a/sources/lib/plugins/translation/flags/more/gh.gif b/sources/lib/plugins/translation/flags/more/gh.gif new file mode 100755 index 0000000..273fb7d Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/gh.gif differ diff --git a/sources/lib/plugins/translation/flags/more/gi.gif b/sources/lib/plugins/translation/flags/more/gi.gif new file mode 100755 index 0000000..7b1984b Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/gi.gif differ diff --git a/sources/lib/plugins/translation/flags/more/gl.gif b/sources/lib/plugins/translation/flags/more/gl.gif new file mode 100755 index 0000000..ef445be Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/gl.gif differ diff --git a/sources/lib/plugins/translation/flags/more/gm.gif b/sources/lib/plugins/translation/flags/more/gm.gif new file mode 100755 index 0000000..6847c5a Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/gm.gif differ diff --git a/sources/lib/plugins/translation/flags/more/gn.gif b/sources/lib/plugins/translation/flags/more/gn.gif new file mode 100755 index 0000000..a982ac6 Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/gn.gif differ diff --git a/sources/lib/plugins/translation/flags/more/gp.gif b/sources/lib/plugins/translation/flags/more/gp.gif new file mode 100755 index 0000000..31166db Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/gp.gif differ diff --git a/sources/lib/plugins/translation/flags/more/gq.gif b/sources/lib/plugins/translation/flags/more/gq.gif new file mode 100755 index 0000000..8b4e0cc Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/gq.gif differ diff --git a/sources/lib/plugins/translation/flags/more/gs.gif b/sources/lib/plugins/translation/flags/more/gs.gif new file mode 100755 index 0000000..ccc96ec Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/gs.gif differ diff --git a/sources/lib/plugins/translation/flags/more/gt.gif b/sources/lib/plugins/translation/flags/more/gt.gif new file mode 100755 index 0000000..7e94d1d Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/gt.gif differ diff --git a/sources/lib/plugins/translation/flags/more/gu.gif b/sources/lib/plugins/translation/flags/more/gu.gif new file mode 100755 index 0000000..eafef68 Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/gu.gif differ diff --git a/sources/lib/plugins/translation/flags/more/gw.gif b/sources/lib/plugins/translation/flags/more/gw.gif new file mode 100755 index 0000000..55f7571 Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/gw.gif differ diff --git a/sources/lib/plugins/translation/flags/more/gy.gif b/sources/lib/plugins/translation/flags/more/gy.gif new file mode 100755 index 0000000..1cb4cd7 Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/gy.gif differ diff --git a/sources/lib/plugins/translation/flags/more/hk.gif b/sources/lib/plugins/translation/flags/more/hk.gif new file mode 100755 index 0000000..798af96 Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/hk.gif differ diff --git a/sources/lib/plugins/translation/flags/more/hm.gif b/sources/lib/plugins/translation/flags/more/hm.gif new file mode 100755 index 0000000..5269c6a Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/hm.gif differ diff --git a/sources/lib/plugins/translation/flags/more/hn.gif b/sources/lib/plugins/translation/flags/more/hn.gif new file mode 100755 index 0000000..6c4ffe8 Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/hn.gif differ diff --git a/sources/lib/plugins/translation/flags/more/hr.gif b/sources/lib/plugins/translation/flags/more/hr.gif new file mode 100755 index 0000000..557c660 Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/hr.gif differ diff --git a/sources/lib/plugins/translation/flags/more/ht.gif b/sources/lib/plugins/translation/flags/more/ht.gif new file mode 100755 index 0000000..059604a Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/ht.gif differ diff --git a/sources/lib/plugins/translation/flags/more/id.gif b/sources/lib/plugins/translation/flags/more/id.gif new file mode 100755 index 0000000..865161b Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/id.gif differ diff --git a/sources/lib/plugins/translation/flags/more/in.gif b/sources/lib/plugins/translation/flags/more/in.gif new file mode 100755 index 0000000..1cd8027 Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/in.gif differ diff --git a/sources/lib/plugins/translation/flags/more/io.gif b/sources/lib/plugins/translation/flags/more/io.gif new file mode 100755 index 0000000..de7e7ab Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/io.gif differ diff --git a/sources/lib/plugins/translation/flags/more/iq.gif b/sources/lib/plugins/translation/flags/more/iq.gif new file mode 100755 index 0000000..c34fe3c Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/iq.gif differ diff --git a/sources/lib/plugins/translation/flags/more/is.gif b/sources/lib/plugins/translation/flags/more/is.gif new file mode 100755 index 0000000..b42502d Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/is.gif differ diff --git a/sources/lib/plugins/translation/flags/more/ja.gif b/sources/lib/plugins/translation/flags/more/ja.gif new file mode 100755 index 0000000..444c1d0 Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/ja.gif differ diff --git a/sources/lib/plugins/translation/flags/more/jm.gif b/sources/lib/plugins/translation/flags/more/jm.gif new file mode 100755 index 0000000..0bed67c Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/jm.gif differ diff --git a/sources/lib/plugins/translation/flags/more/jo.gif b/sources/lib/plugins/translation/flags/more/jo.gif new file mode 100755 index 0000000..03daf8a Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/jo.gif differ diff --git a/sources/lib/plugins/translation/flags/more/ke.gif b/sources/lib/plugins/translation/flags/more/ke.gif new file mode 100755 index 0000000..c2b5d45 Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/ke.gif differ diff --git a/sources/lib/plugins/translation/flags/more/kg.gif b/sources/lib/plugins/translation/flags/more/kg.gif new file mode 100755 index 0000000..72a4d41 Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/kg.gif differ diff --git a/sources/lib/plugins/translation/flags/more/kh.gif b/sources/lib/plugins/translation/flags/more/kh.gif new file mode 100755 index 0000000..30a1831 Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/kh.gif differ diff --git a/sources/lib/plugins/translation/flags/more/ki.gif b/sources/lib/plugins/translation/flags/more/ki.gif new file mode 100755 index 0000000..4a0751a Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/ki.gif differ diff --git a/sources/lib/plugins/translation/flags/more/km.gif b/sources/lib/plugins/translation/flags/more/km.gif new file mode 100755 index 0000000..5859595 Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/km.gif differ diff --git a/sources/lib/plugins/translation/flags/more/kn.gif b/sources/lib/plugins/translation/flags/more/kn.gif new file mode 100755 index 0000000..bb9cc34 Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/kn.gif differ diff --git a/sources/lib/plugins/translation/flags/more/ko.gif b/sources/lib/plugins/translation/flags/more/ko.gif new file mode 100755 index 0000000..1cddbe7 Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/ko.gif differ diff --git a/sources/lib/plugins/translation/flags/more/kp.gif b/sources/lib/plugins/translation/flags/more/kp.gif new file mode 100755 index 0000000..6e0ca09 Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/kp.gif differ diff --git a/sources/lib/plugins/translation/flags/more/kw.gif b/sources/lib/plugins/translation/flags/more/kw.gif new file mode 100755 index 0000000..1efc734 Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/kw.gif differ diff --git a/sources/lib/plugins/translation/flags/more/ky.gif b/sources/lib/plugins/translation/flags/more/ky.gif new file mode 100755 index 0000000..d3d02ee Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/ky.gif differ diff --git a/sources/lib/plugins/translation/flags/more/kz.gif b/sources/lib/plugins/translation/flags/more/kz.gif new file mode 100755 index 0000000..24baebe Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/kz.gif differ diff --git a/sources/lib/plugins/translation/flags/more/la.gif b/sources/lib/plugins/translation/flags/more/la.gif new file mode 100755 index 0000000..d14cf4d Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/la.gif differ diff --git a/sources/lib/plugins/translation/flags/more/lb.gif b/sources/lib/plugins/translation/flags/more/lb.gif new file mode 100755 index 0000000..003d83a Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/lb.gif differ diff --git a/sources/lib/plugins/translation/flags/more/lc.gif b/sources/lib/plugins/translation/flags/more/lc.gif new file mode 100755 index 0000000..f5fe5bf Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/lc.gif differ diff --git a/sources/lib/plugins/translation/flags/more/li.gif b/sources/lib/plugins/translation/flags/more/li.gif new file mode 100755 index 0000000..713c58e Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/li.gif differ diff --git a/sources/lib/plugins/translation/flags/more/lk.gif b/sources/lib/plugins/translation/flags/more/lk.gif new file mode 100755 index 0000000..1b3ee7f Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/lk.gif differ diff --git a/sources/lib/plugins/translation/flags/more/lr.gif b/sources/lib/plugins/translation/flags/more/lr.gif new file mode 100755 index 0000000..435af9e Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/lr.gif differ diff --git a/sources/lib/plugins/translation/flags/more/ls.gif b/sources/lib/plugins/translation/flags/more/ls.gif new file mode 100755 index 0000000..427ae95 Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/ls.gif differ diff --git a/sources/lib/plugins/translation/flags/more/lt.gif b/sources/lib/plugins/translation/flags/more/lt.gif new file mode 100755 index 0000000..dee9c60 Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/lt.gif differ diff --git a/sources/lib/plugins/translation/flags/more/lu.gif b/sources/lib/plugins/translation/flags/more/lu.gif new file mode 100755 index 0000000..7d7293e Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/lu.gif differ diff --git a/sources/lib/plugins/translation/flags/more/lv.gif b/sources/lib/plugins/translation/flags/more/lv.gif new file mode 100755 index 0000000..17e71b7 Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/lv.gif differ diff --git a/sources/lib/plugins/translation/flags/more/ly.gif b/sources/lib/plugins/translation/flags/more/ly.gif new file mode 100755 index 0000000..a654c30 Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/ly.gif differ diff --git a/sources/lib/plugins/translation/flags/more/ma.gif b/sources/lib/plugins/translation/flags/more/ma.gif new file mode 100755 index 0000000..fc78411 Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/ma.gif differ diff --git a/sources/lib/plugins/translation/flags/more/mc.gif b/sources/lib/plugins/translation/flags/more/mc.gif new file mode 100755 index 0000000..02a7c8e Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/mc.gif differ diff --git a/sources/lib/plugins/translation/flags/more/md.gif b/sources/lib/plugins/translation/flags/more/md.gif new file mode 100755 index 0000000..e4b8a7e Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/md.gif differ diff --git a/sources/lib/plugins/translation/flags/more/me.gif b/sources/lib/plugins/translation/flags/more/me.gif new file mode 100755 index 0000000..a260453 Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/me.gif differ diff --git a/sources/lib/plugins/translation/flags/more/mg.gif b/sources/lib/plugins/translation/flags/more/mg.gif new file mode 100755 index 0000000..a91b577 Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/mg.gif differ diff --git a/sources/lib/plugins/translation/flags/more/mh.gif b/sources/lib/plugins/translation/flags/more/mh.gif new file mode 100755 index 0000000..92f5f48 Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/mh.gif differ diff --git a/sources/lib/plugins/translation/flags/more/mk.gif b/sources/lib/plugins/translation/flags/more/mk.gif new file mode 100755 index 0000000..7aeb831 Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/mk.gif differ diff --git a/sources/lib/plugins/translation/flags/more/ml.gif b/sources/lib/plugins/translation/flags/more/ml.gif new file mode 100755 index 0000000..53d6f49 Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/ml.gif differ diff --git a/sources/lib/plugins/translation/flags/more/mm.gif b/sources/lib/plugins/translation/flags/more/mm.gif new file mode 100755 index 0000000..9e0a275 Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/mm.gif differ diff --git a/sources/lib/plugins/translation/flags/more/mn.gif b/sources/lib/plugins/translation/flags/more/mn.gif new file mode 100755 index 0000000..dff8ea5 Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/mn.gif differ diff --git a/sources/lib/plugins/translation/flags/more/mo.gif b/sources/lib/plugins/translation/flags/more/mo.gif new file mode 100755 index 0000000..66cf5b4 Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/mo.gif differ diff --git a/sources/lib/plugins/translation/flags/more/mp.gif b/sources/lib/plugins/translation/flags/more/mp.gif new file mode 100755 index 0000000..73b7147 Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/mp.gif differ diff --git a/sources/lib/plugins/translation/flags/more/mq.gif b/sources/lib/plugins/translation/flags/more/mq.gif new file mode 100755 index 0000000..570bc5d Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/mq.gif differ diff --git a/sources/lib/plugins/translation/flags/more/mr.gif b/sources/lib/plugins/translation/flags/more/mr.gif new file mode 100755 index 0000000..f52fcf0 Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/mr.gif differ diff --git a/sources/lib/plugins/translation/flags/more/ms.gif b/sources/lib/plugins/translation/flags/more/ms.gif new file mode 100755 index 0000000..5e5a67a Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/ms.gif differ diff --git a/sources/lib/plugins/translation/flags/more/mt.gif b/sources/lib/plugins/translation/flags/more/mt.gif new file mode 100755 index 0000000..45c709f Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/mt.gif differ diff --git a/sources/lib/plugins/translation/flags/more/mu.gif b/sources/lib/plugins/translation/flags/more/mu.gif new file mode 100755 index 0000000..081ab45 Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/mu.gif differ diff --git a/sources/lib/plugins/translation/flags/more/mv.gif b/sources/lib/plugins/translation/flags/more/mv.gif new file mode 100755 index 0000000..46b6387 Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/mv.gif differ diff --git a/sources/lib/plugins/translation/flags/more/mw.gif b/sources/lib/plugins/translation/flags/more/mw.gif new file mode 100755 index 0000000..ad045a0 Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/mw.gif differ diff --git a/sources/lib/plugins/translation/flags/more/mx.gif b/sources/lib/plugins/translation/flags/more/mx.gif new file mode 100755 index 0000000..ddc75d0 Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/mx.gif differ diff --git a/sources/lib/plugins/translation/flags/more/my.gif b/sources/lib/plugins/translation/flags/more/my.gif new file mode 100755 index 0000000..fc7d523 Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/my.gif differ diff --git a/sources/lib/plugins/translation/flags/more/mz.gif b/sources/lib/plugins/translation/flags/more/mz.gif new file mode 100755 index 0000000..7d63508 Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/mz.gif differ diff --git a/sources/lib/plugins/translation/flags/more/na.gif b/sources/lib/plugins/translation/flags/more/na.gif new file mode 100755 index 0000000..c0babe7 Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/na.gif differ diff --git a/sources/lib/plugins/translation/flags/more/nc.gif b/sources/lib/plugins/translation/flags/more/nc.gif new file mode 100755 index 0000000..b1e91b9 Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/nc.gif differ diff --git a/sources/lib/plugins/translation/flags/more/ne.gif b/sources/lib/plugins/translation/flags/more/ne.gif new file mode 100755 index 0000000..ff4eaf0 Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/ne.gif differ diff --git a/sources/lib/plugins/translation/flags/more/nf.gif b/sources/lib/plugins/translation/flags/more/nf.gif new file mode 100755 index 0000000..c83424c Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/nf.gif differ diff --git a/sources/lib/plugins/translation/flags/more/ng.gif b/sources/lib/plugins/translation/flags/more/ng.gif new file mode 100755 index 0000000..bdde7cb Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/ng.gif differ diff --git a/sources/lib/plugins/translation/flags/more/ni.gif b/sources/lib/plugins/translation/flags/more/ni.gif new file mode 100755 index 0000000..d05894d Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/ni.gif differ diff --git a/sources/lib/plugins/translation/flags/more/np.gif b/sources/lib/plugins/translation/flags/more/np.gif new file mode 100755 index 0000000..1096893 Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/np.gif differ diff --git a/sources/lib/plugins/translation/flags/more/nr.gif b/sources/lib/plugins/translation/flags/more/nr.gif new file mode 100755 index 0000000..2e4c0c5 Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/nr.gif differ diff --git a/sources/lib/plugins/translation/flags/more/nu.gif b/sources/lib/plugins/translation/flags/more/nu.gif new file mode 100755 index 0000000..618210a Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/nu.gif differ diff --git a/sources/lib/plugins/translation/flags/more/nz.gif b/sources/lib/plugins/translation/flags/more/nz.gif new file mode 100755 index 0000000..028a5dc Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/nz.gif differ diff --git a/sources/lib/plugins/translation/flags/more/om.gif b/sources/lib/plugins/translation/flags/more/om.gif new file mode 100755 index 0000000..2b8c775 Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/om.gif differ diff --git a/sources/lib/plugins/translation/flags/more/pa.gif b/sources/lib/plugins/translation/flags/more/pa.gif new file mode 100755 index 0000000..d518b2f Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/pa.gif differ diff --git a/sources/lib/plugins/translation/flags/more/pe.gif b/sources/lib/plugins/translation/flags/more/pe.gif new file mode 100755 index 0000000..3bc7639 Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/pe.gif differ diff --git a/sources/lib/plugins/translation/flags/more/pf.gif b/sources/lib/plugins/translation/flags/more/pf.gif new file mode 100755 index 0000000..849297a Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/pf.gif differ diff --git a/sources/lib/plugins/translation/flags/more/pg.gif b/sources/lib/plugins/translation/flags/more/pg.gif new file mode 100755 index 0000000..2d20b07 Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/pg.gif differ diff --git a/sources/lib/plugins/translation/flags/more/ph.gif b/sources/lib/plugins/translation/flags/more/ph.gif new file mode 100755 index 0000000..12b380a Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/ph.gif differ diff --git a/sources/lib/plugins/translation/flags/more/pk.gif b/sources/lib/plugins/translation/flags/more/pk.gif new file mode 100755 index 0000000..f3f62c2 Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/pk.gif differ diff --git a/sources/lib/plugins/translation/flags/more/pl.gif b/sources/lib/plugins/translation/flags/more/pl.gif new file mode 100755 index 0000000..bf10646 Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/pl.gif differ diff --git a/sources/lib/plugins/translation/flags/more/pm.gif b/sources/lib/plugins/translation/flags/more/pm.gif new file mode 100755 index 0000000..99bf6fd Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/pm.gif differ diff --git a/sources/lib/plugins/translation/flags/more/pn.gif b/sources/lib/plugins/translation/flags/more/pn.gif new file mode 100755 index 0000000..4bc86a1 Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/pn.gif differ diff --git a/sources/lib/plugins/translation/flags/more/pr.gif b/sources/lib/plugins/translation/flags/more/pr.gif new file mode 100755 index 0000000..6d5d589 Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/pr.gif differ diff --git a/sources/lib/plugins/translation/flags/more/ps.gif b/sources/lib/plugins/translation/flags/more/ps.gif new file mode 100755 index 0000000..6afa3b7 Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/ps.gif differ diff --git a/sources/lib/plugins/translation/flags/more/pw.gif b/sources/lib/plugins/translation/flags/more/pw.gif new file mode 100755 index 0000000..5854510 Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/pw.gif differ diff --git a/sources/lib/plugins/translation/flags/more/py.gif b/sources/lib/plugins/translation/flags/more/py.gif new file mode 100755 index 0000000..f2e66af Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/py.gif differ diff --git a/sources/lib/plugins/translation/flags/more/qa.gif b/sources/lib/plugins/translation/flags/more/qa.gif new file mode 100755 index 0000000..2e843ff Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/qa.gif differ diff --git a/sources/lib/plugins/translation/flags/more/re.gif b/sources/lib/plugins/translation/flags/more/re.gif new file mode 100755 index 0000000..43d0b80 Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/re.gif differ diff --git a/sources/lib/plugins/translation/flags/more/rs.gif b/sources/lib/plugins/translation/flags/more/rs.gif new file mode 100755 index 0000000..3bd1fb2 Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/rs.gif differ diff --git a/sources/lib/plugins/translation/flags/more/rw.gif b/sources/lib/plugins/translation/flags/more/rw.gif new file mode 100755 index 0000000..0d095f7 Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/rw.gif differ diff --git a/sources/lib/plugins/translation/flags/more/sb.gif b/sources/lib/plugins/translation/flags/more/sb.gif new file mode 100755 index 0000000..8f5ff83 Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/sb.gif differ diff --git a/sources/lib/plugins/translation/flags/more/sc.gif b/sources/lib/plugins/translation/flags/more/sc.gif new file mode 100755 index 0000000..31b4767 Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/sc.gif differ diff --git a/sources/lib/plugins/translation/flags/more/scotland.gif b/sources/lib/plugins/translation/flags/more/scotland.gif new file mode 100755 index 0000000..03f3f1d Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/scotland.gif differ diff --git a/sources/lib/plugins/translation/flags/more/sd.gif b/sources/lib/plugins/translation/flags/more/sd.gif new file mode 100755 index 0000000..53ae214 Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/sd.gif differ diff --git a/sources/lib/plugins/translation/flags/more/sg.gif b/sources/lib/plugins/translation/flags/more/sg.gif new file mode 100755 index 0000000..5663d39 Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/sg.gif differ diff --git a/sources/lib/plugins/translation/flags/more/sh.gif b/sources/lib/plugins/translation/flags/more/sh.gif new file mode 100755 index 0000000..dcc7f3b Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/sh.gif differ diff --git a/sources/lib/plugins/translation/flags/more/si.gif b/sources/lib/plugins/translation/flags/more/si.gif new file mode 100755 index 0000000..23852b5 Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/si.gif differ diff --git a/sources/lib/plugins/translation/flags/more/sj.gif b/sources/lib/plugins/translation/flags/more/sj.gif new file mode 100755 index 0000000..6202d1f Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/sj.gif differ diff --git a/sources/lib/plugins/translation/flags/more/sk.gif b/sources/lib/plugins/translation/flags/more/sk.gif new file mode 100755 index 0000000..1b3f22b Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/sk.gif differ diff --git a/sources/lib/plugins/translation/flags/more/sl.gif b/sources/lib/plugins/translation/flags/more/sl.gif new file mode 100755 index 0000000..f0f3492 Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/sl.gif differ diff --git a/sources/lib/plugins/translation/flags/more/sm.gif b/sources/lib/plugins/translation/flags/more/sm.gif new file mode 100755 index 0000000..04d98de Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/sm.gif differ diff --git a/sources/lib/plugins/translation/flags/more/sn.gif b/sources/lib/plugins/translation/flags/more/sn.gif new file mode 100755 index 0000000..6dac870 Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/sn.gif differ diff --git a/sources/lib/plugins/translation/flags/more/so.gif b/sources/lib/plugins/translation/flags/more/so.gif new file mode 100755 index 0000000..f196169 Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/so.gif differ diff --git a/sources/lib/plugins/translation/flags/more/sr.gif b/sources/lib/plugins/translation/flags/more/sr.gif new file mode 100755 index 0000000..0f7499a Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/sr.gif differ diff --git a/sources/lib/plugins/translation/flags/more/st.gif b/sources/lib/plugins/translation/flags/more/st.gif new file mode 100755 index 0000000..4f1e6e0 Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/st.gif differ diff --git a/sources/lib/plugins/translation/flags/more/sv.gif b/sources/lib/plugins/translation/flags/more/sv.gif new file mode 100755 index 0000000..2d7b159 Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/sv.gif differ diff --git a/sources/lib/plugins/translation/flags/more/sy.gif b/sources/lib/plugins/translation/flags/more/sy.gif new file mode 100755 index 0000000..dc8bd50 Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/sy.gif differ diff --git a/sources/lib/plugins/translation/flags/more/sz.gif b/sources/lib/plugins/translation/flags/more/sz.gif new file mode 100755 index 0000000..f37aaf8 Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/sz.gif differ diff --git a/sources/lib/plugins/translation/flags/more/tc.gif b/sources/lib/plugins/translation/flags/more/tc.gif new file mode 100755 index 0000000..11a8c23 Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/tc.gif differ diff --git a/sources/lib/plugins/translation/flags/more/td.gif b/sources/lib/plugins/translation/flags/more/td.gif new file mode 100755 index 0000000..7aa8a10 Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/td.gif differ diff --git a/sources/lib/plugins/translation/flags/more/tf.gif b/sources/lib/plugins/translation/flags/more/tf.gif new file mode 100755 index 0000000..51a4325 Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/tf.gif differ diff --git a/sources/lib/plugins/translation/flags/more/tg.gif b/sources/lib/plugins/translation/flags/more/tg.gif new file mode 100755 index 0000000..ca6b4e7 Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/tg.gif differ diff --git a/sources/lib/plugins/translation/flags/more/tj.gif b/sources/lib/plugins/translation/flags/more/tj.gif new file mode 100755 index 0000000..2fe38d4 Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/tj.gif differ diff --git a/sources/lib/plugins/translation/flags/more/tk.gif b/sources/lib/plugins/translation/flags/more/tk.gif new file mode 100755 index 0000000..3d3a727 Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/tk.gif differ diff --git a/sources/lib/plugins/translation/flags/more/tl.gif b/sources/lib/plugins/translation/flags/more/tl.gif new file mode 100755 index 0000000..df22d58 Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/tl.gif differ diff --git a/sources/lib/plugins/translation/flags/more/tm.gif b/sources/lib/plugins/translation/flags/more/tm.gif new file mode 100755 index 0000000..36d0994 Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/tm.gif differ diff --git a/sources/lib/plugins/translation/flags/more/tn.gif b/sources/lib/plugins/translation/flags/more/tn.gif new file mode 100755 index 0000000..917d428 Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/tn.gif differ diff --git a/sources/lib/plugins/translation/flags/more/to.gif b/sources/lib/plugins/translation/flags/more/to.gif new file mode 100755 index 0000000..d7ed4d1 Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/to.gif differ diff --git a/sources/lib/plugins/translation/flags/more/tt.gif b/sources/lib/plugins/translation/flags/more/tt.gif new file mode 100755 index 0000000..47d3b80 Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/tt.gif differ diff --git a/sources/lib/plugins/translation/flags/more/tv.gif b/sources/lib/plugins/translation/flags/more/tv.gif new file mode 100755 index 0000000..3c33827 Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/tv.gif differ diff --git a/sources/lib/plugins/translation/flags/more/tw.gif b/sources/lib/plugins/translation/flags/more/tw.gif new file mode 100755 index 0000000..cacfd9b Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/tw.gif differ diff --git a/sources/lib/plugins/translation/flags/more/tz.gif b/sources/lib/plugins/translation/flags/more/tz.gif new file mode 100755 index 0000000..82b52ca Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/tz.gif differ diff --git a/sources/lib/plugins/translation/flags/more/ua.gif b/sources/lib/plugins/translation/flags/more/ua.gif new file mode 100755 index 0000000..5d6cd83 Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/ua.gif differ diff --git a/sources/lib/plugins/translation/flags/more/ug.gif b/sources/lib/plugins/translation/flags/more/ug.gif new file mode 100755 index 0000000..58b731a Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/ug.gif differ diff --git a/sources/lib/plugins/translation/flags/more/um.gif b/sources/lib/plugins/translation/flags/more/um.gif new file mode 100755 index 0000000..3b4c848 Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/um.gif differ diff --git a/sources/lib/plugins/translation/flags/more/us.gif b/sources/lib/plugins/translation/flags/more/us.gif new file mode 100755 index 0000000..8f198f7 Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/us.gif differ diff --git a/sources/lib/plugins/translation/flags/more/uy.gif b/sources/lib/plugins/translation/flags/more/uy.gif new file mode 100755 index 0000000..12848c7 Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/uy.gif differ diff --git a/sources/lib/plugins/translation/flags/more/uz.gif b/sources/lib/plugins/translation/flags/more/uz.gif new file mode 100755 index 0000000..dc9daec Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/uz.gif differ diff --git a/sources/lib/plugins/translation/flags/more/va.gif b/sources/lib/plugins/translation/flags/more/va.gif new file mode 100755 index 0000000..2bd7446 Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/va.gif differ diff --git a/sources/lib/plugins/translation/flags/more/vc.gif b/sources/lib/plugins/translation/flags/more/vc.gif new file mode 100755 index 0000000..4821381 Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/vc.gif differ diff --git a/sources/lib/plugins/translation/flags/more/ve.gif b/sources/lib/plugins/translation/flags/more/ve.gif new file mode 100755 index 0000000..19ce6c1 Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/ve.gif differ diff --git a/sources/lib/plugins/translation/flags/more/vg.gif b/sources/lib/plugins/translation/flags/more/vg.gif new file mode 100755 index 0000000..1fc0f96 Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/vg.gif differ diff --git a/sources/lib/plugins/translation/flags/more/vi.gif b/sources/lib/plugins/translation/flags/more/vi.gif new file mode 100755 index 0000000..66f9e74 Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/vi.gif differ diff --git a/sources/lib/plugins/translation/flags/more/vu.gif b/sources/lib/plugins/translation/flags/more/vu.gif new file mode 100755 index 0000000..8a8b2b0 Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/vu.gif differ diff --git a/sources/lib/plugins/translation/flags/more/wales.gif b/sources/lib/plugins/translation/flags/more/wales.gif new file mode 100755 index 0000000..901d175 Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/wales.gif differ diff --git a/sources/lib/plugins/translation/flags/more/wf.gif b/sources/lib/plugins/translation/flags/more/wf.gif new file mode 100755 index 0000000..eaa954b Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/wf.gif differ diff --git a/sources/lib/plugins/translation/flags/more/ws.gif b/sources/lib/plugins/translation/flags/more/ws.gif new file mode 100755 index 0000000..a51f939 Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/ws.gif differ diff --git a/sources/lib/plugins/translation/flags/more/ye.gif b/sources/lib/plugins/translation/flags/more/ye.gif new file mode 100755 index 0000000..7b0183d Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/ye.gif differ diff --git a/sources/lib/plugins/translation/flags/more/yt.gif b/sources/lib/plugins/translation/flags/more/yt.gif new file mode 100755 index 0000000..a2267c0 Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/yt.gif differ diff --git a/sources/lib/plugins/translation/flags/more/za.gif b/sources/lib/plugins/translation/flags/more/za.gif new file mode 100755 index 0000000..ede5258 Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/za.gif differ diff --git a/sources/lib/plugins/translation/flags/more/zm.gif b/sources/lib/plugins/translation/flags/more/zm.gif new file mode 100755 index 0000000..b2851d2 Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/zm.gif differ diff --git a/sources/lib/plugins/translation/flags/more/zw.gif b/sources/lib/plugins/translation/flags/more/zw.gif new file mode 100755 index 0000000..02901f6 Binary files /dev/null and b/sources/lib/plugins/translation/flags/more/zw.gif differ diff --git a/sources/lib/plugins/translation/flags/nl.gif b/sources/lib/plugins/translation/flags/nl.gif new file mode 100755 index 0000000..c1c8f46 Binary files /dev/null and b/sources/lib/plugins/translation/flags/nl.gif differ diff --git a/sources/lib/plugins/translation/flags/no.gif b/sources/lib/plugins/translation/flags/no.gif new file mode 100755 index 0000000..6202d1f Binary files /dev/null and b/sources/lib/plugins/translation/flags/no.gif differ diff --git a/sources/lib/plugins/translation/flags/pt-br.gif b/sources/lib/plugins/translation/flags/pt-br.gif new file mode 100755 index 0000000..8c86616 Binary files /dev/null and b/sources/lib/plugins/translation/flags/pt-br.gif differ diff --git a/sources/lib/plugins/translation/flags/pt.gif b/sources/lib/plugins/translation/flags/pt.gif new file mode 100755 index 0000000..e735f74 Binary files /dev/null and b/sources/lib/plugins/translation/flags/pt.gif differ diff --git a/sources/lib/plugins/translation/flags/ro.gif b/sources/lib/plugins/translation/flags/ro.gif new file mode 100755 index 0000000..f5d5f12 Binary files /dev/null and b/sources/lib/plugins/translation/flags/ro.gif differ diff --git a/sources/lib/plugins/translation/flags/ru.gif b/sources/lib/plugins/translation/flags/ru.gif new file mode 100755 index 0000000..b525c46 Binary files /dev/null and b/sources/lib/plugins/translation/flags/ru.gif differ diff --git a/sources/lib/plugins/translation/flags/sv.gif b/sources/lib/plugins/translation/flags/sv.gif new file mode 100755 index 0000000..80f6285 Binary files /dev/null and b/sources/lib/plugins/translation/flags/sv.gif differ diff --git a/sources/lib/plugins/translation/flags/th.gif b/sources/lib/plugins/translation/flags/th.gif new file mode 100755 index 0000000..0130792 Binary files /dev/null and b/sources/lib/plugins/translation/flags/th.gif differ diff --git a/sources/lib/plugins/translation/flags/tr.gif b/sources/lib/plugins/translation/flags/tr.gif new file mode 100755 index 0000000..e407d55 Binary files /dev/null and b/sources/lib/plugins/translation/flags/tr.gif differ diff --git a/sources/lib/plugins/translation/flags/vi.gif b/sources/lib/plugins/translation/flags/vi.gif new file mode 100755 index 0000000..f1e20c9 Binary files /dev/null and b/sources/lib/plugins/translation/flags/vi.gif differ diff --git a/sources/lib/plugins/translation/flags/zh.gif b/sources/lib/plugins/translation/flags/zh.gif new file mode 100755 index 0000000..b052530 Binary files /dev/null and b/sources/lib/plugins/translation/flags/zh.gif differ diff --git a/sources/lib/plugins/translation/helper.php b/sources/lib/plugins/translation/helper.php new file mode 100755 index 0000000..ddbf528 --- /dev/null +++ b/sources/lib/plugins/translation/helper.php @@ -0,0 +1,413 @@ + + */ + +// must be run within Dokuwiki +if(!defined('DOKU_INC')) die(); + +class helper_plugin_translation extends DokuWiki_Plugin { + var $translations = array(); + var $translationNs = ''; + var $defaultlang = ''; + var $LN = array(); // hold native names + var $opts = array(); // display options + + /** + * Initialize + */ + function __construct() { + global $conf; + require_once(DOKU_INC . 'inc/pageutils.php'); + require_once(DOKU_INC . 'inc/utf8.php'); + + // load wanted translation into array + $this->translations = strtolower(str_replace(',', ' ', $this->getConf('translations'))); + $this->translations = array_unique(array_filter(explode(' ', $this->translations))); + sort($this->translations); + + // load language names + $this->LN = confToHash(dirname(__FILE__) . '/lang/langnames.txt'); + + // display options + $this->opts = $this->getConf('display'); + $this->opts = explode(',', $this->opts); + $this->opts = array_map('trim', $this->opts); + $this->opts = array_fill_keys($this->opts, true); + + // get default translation + if(!$conf['lang_before_translation']) { + $dfl = $conf['lang']; + } else { + $dfl = $conf['lang_before_translation']; + } + if(in_array($dfl, $this->translations)) { + $this->defaultlang = $dfl; + } else { + $this->defaultlang = ''; + array_unshift($this->translations, ''); + } + + $this->translationNs = cleanID($this->getConf('translationns')); + if($this->translationNs) $this->translationNs .= ':'; + } + + /** + * Check if the given ID is a translation and return the language code. + */ + function getLangPart($id) { + list($lng) = $this->getTransParts($id); + return $lng; + } + + /** + * Check if the given ID is a translation and return the language code and + * the id part. + */ + function getTransParts($id) { + $rx = '/^' . $this->translationNs . '(' . join('|', $this->translations) . '):(.*)/'; + if(preg_match($rx, $id, $match)) { + return array($match[1], $match[2]); + } + return array('', $id); + } + + /** + * Returns the browser language if it matches with one of the configured + * languages + */ + function getBrowserLang() { + $rx = '/(^|,|:|;|-)(' . join('|', $this->translations) . ')($|,|:|;|-)/i'; + if(preg_match($rx, $_SERVER['HTTP_ACCEPT_LANGUAGE'], $match)) { + return strtolower($match[2]); + } + return false; + } + + /** + * Returns the ID and name to the wanted translation, empty + * $lng is default lang + */ + function buildTransID($lng, $idpart) { + global $conf; + if($lng) { + $link = ':' . $this->translationNs . $lng . ':' . $idpart; + $name = $lng; + } else { + $link = ':' . $this->translationNs . $idpart; + $name = $this->realLC(''); + } + return array($link, $name); + } + + /** + * Returns the real language code, even when an empty one is given + * (eg. resolves th default language) + */ + function realLC($lc) { + global $conf; + if($lc) { + return $lc; + } elseif(!$conf['lang_before_translation']) { + return $conf['lang']; + } else { + return $conf['lang_before_translation']; + } + } + + /** + * Check if current ID should be translated and any GUI + * should be shown + */ + function istranslatable($id, $checkact = true) { + global $ACT; + + if($checkact && $ACT != 'show') return false; + if($this->translationNs && strpos($id, $this->translationNs) !== 0) return false; + $skiptrans = trim($this->getConf('skiptrans')); + if($skiptrans && preg_match('/' . $skiptrans . '/ui', ':' . $id)) return false; + $meta = p_get_metadata($id); + if(!empty($meta['plugin']['translation']['notrans'])) return false; + + return true; + } + + /** + * Return the (localized) about link + */ + function showAbout() { + global $ID; + global $conf; + global $INFO; + + $curlc = $this->getLangPart($ID); + + $about = $this->getConf('about'); + if($this->getConf('localabout')) { + list($lc, $idpart) = $this->getTransParts($about); + list($about, $name) = $this->buildTransID($curlc, $idpart); + $about = cleanID($about); + } + + $out = ''; + $out .= ''; + $out .= html_wikilink($about, '?'); + $out .= ''; + + return $out; + } + + /** + * Returns a list of (lc => link) for all existing translations of a page + * + * @param $id + * @return array + */ + function getAvailableTranslations($id) { + $result = array(); + + list($lc, $idpart) = $this->getTransParts($id); + $lang = $this->realLC($lc); + + foreach($this->translations as $t) { + if($t == $lc) continue; //skip self + list($link, $name) = $this->buildTransID($t, $idpart); + if(page_exists($link)) { + $result[$name] = $link; + } + } + + return $result; + } + + /** + * Creates an UI for linking to the available and configured translations + * + * Can be called from the template or via the ~~TRANS~~ syntax component. + */ + public function showTranslations() { + global $conf; + global $INFO; + + if(!$this->istranslatable($INFO['id'])) return ''; + $this->checkage(); + + list($lc, $idpart) = $this->getTransParts($INFO['id']); + $lang = $this->realLC($lc); + + $out = '
'; + + //show title and about + if(isset($this->opts['title'])) { + $out .= '' . $this->getLang('translations'); + if($this->getConf('about')) $out .= $this->showAbout(); + $out .= ': '; + if(isset($this->opts['twolines'])) $out .= '
'; + } + + // open wrapper + if($this->getConf('dropdown')) { + // select needs its own styling + if($INFO['exists']) { + $class = 'wikilink1'; + } else { + $class = 'wikilink2'; + } + if(isset($this->opts['flag'])) { + $flag = DOKU_BASE . 'lib/plugins/translation/flags/' . hsc($lang) . '.gif'; + }else{ + $flag = ''; + } + + if($conf['userewrite']) { + $action = wl(); + } else { + $action = script(); + } + + $out .= '
'; + if($flag) $out .= '' . hsc($lang) . ' '; + $out .= ''; + $out .= ''; + $out .= '
'; + } else { + $out .= ''; + } + + // show about if not already shown + if(!isset($this->opts['title']) && $this->getConf('about')) { + $out .= ' '; + $out .= $this->showAbout(); + } + + $out .= '
'; + + return $out; + } + + /** + * Return the local name + * + * @param $lang + * @return string + */ + function getLocalName($lang) { + if($this->LN[$lang]) { + return $this->LN[$lang]; + } + return $lang; + } + + /** + * Create the link or option for a single translation + * + * @param $lc string The language code + * @param $idpart string The ID of the translated page + * @returns string The item + */ + function getTransItem($lc, $idpart) { + global $ID; + global $conf; + + list($link, $lang) = $this->buildTransID($lc, $idpart); + $link = cleanID($link); + + // class + if(page_exists($link, '', false)) { + $class = 'wikilink1'; + } else { + $class = 'wikilink2'; + } + + // local language name + $localname = $this->getLocalName($lang); + + $divClass = 'li'; + // current? + if($ID == $link) { + $sel = ' selected="selected"'; + $class .= ' cur'; + $divClass .= ' cur'; + } else { + $sel = ''; + } + + // flag + if(isset($this->opts['flag'])) { + $flag = DOKU_BASE . 'lib/plugins/translation/flags/' . hsc($lang) . '.gif'; + $style = ' style="background-image: url(\'' . $flag . '\')"'; + $class .= ' flag'; + } + + // what to display as name + if(isset($this->opts['name'])) { + $display = hsc($localname); + if(isset($this->opts['langcode'])) $display .= ' (' . hsc($lang) . ')'; + } elseif(isset($this->opts['langcode'])) { + $display = hsc($lang); + } else { + $display = ' '; + } + + // prepare output + $out = ''; + if($this->getConf('dropdown')) { + if($conf['useslash']) $link = str_replace(':', '/', $link); + + $out .= ''; + } else { + $out .= "
  • '; + } + + return $out; + } + + /** + * Checks if the current page is a translation of a page + * in the default language. Displays a notice when it is + * older than the original page. Tries to link to a diff + * with changes on the original since the translation + */ + function checkage() { + global $ID; + global $INFO; + if(!$this->getConf('checkage')) return; + if(!$INFO['exists']) return; + $lng = $this->getLangPart($ID); + if($lng == $this->defaultlang) return; + + $rx = '/^' . $this->translationNs . '((' . join('|', $this->translations) . '):)?/'; + $idpart = preg_replace($rx, '', $ID); + + // compare modification times + list($orig, $name) = $this->buildTransID($this->defaultlang, $idpart); + $origfn = wikiFN($orig); + if($INFO['lastmod'] >= @filemtime($origfn)) return; + + // get revision from before translation + $orev = 0; + $changelog = new PageChangelog($orig); + $revs = $changelog->getRevisions(0, 100); + foreach($revs as $rev) { + if($rev < $INFO['lastmod']) { + $orev = $rev; + break; + } + } + + // see if the found revision still exists + if($orev && !page_exists($orig, $orev)) $orev = 0; + + // build the message and display it + $orig = cleanID($orig); + $msg = sprintf($this->getLang('outdated'), wl($orig)); + + $difflink = $this->getOldDiffLink($orig, $INFO['lastmod']); + if ($difflink) { + $msg .= sprintf(' ' . $this->getLang('diff'), $difflink); + } + + echo '
    ' . $msg . '
    '; + } + + function getOldDiffLink($id, $lastmod) { + // get revision from before translation + $orev = false; + $changelog = new PageChangelog($id); + $revs = $changelog->getRevisions(0, 100); + foreach($revs as $rev) { + if($rev < $lastmod) { + $orev = $rev; + break; + } + } + if($orev && !page_exists($id, $orev)) { + return false; + } + $id = cleanID($id); + return wl($id, array('do' => 'diff', 'rev' => $orev)); + + } +} diff --git a/sources/lib/plugins/translation/lang/bn/lang.php b/sources/lib/plugins/translation/lang/bn/lang.php new file mode 100755 index 0000000..5bfc73b --- /dev/null +++ b/sources/lib/plugins/translation/lang/bn/lang.php @@ -0,0 +1,10 @@ + + */ +$lang['translations'] = 'এই পাতার অনুবাদ'; +$lang['outdated'] = 'এই অনুবাদ মূল পাতা তুলনায় পুরোনো হয় এবং পুরান হতে পারে.'; +$lang['diff'] = 'দেখুন কি পরিবর্তন হয়েছে'; diff --git a/sources/lib/plugins/translation/lang/bn/settings.php b/sources/lib/plugins/translation/lang/bn/settings.php new file mode 100755 index 0000000..d1df06b --- /dev/null +++ b/sources/lib/plugins/translation/lang/bn/settings.php @@ -0,0 +1,10 @@ + + */ +$lang['about'] = 'এখানে একটি পৃষ্ঠায় নাম লিখুন যেখানে অনুবাদের বৈশিষ্ট্যটি ব্যবহারকারীদের জন্য ব্যাখ্যা করা আছে. এটা ভাষা নির্বাচক থেকে লিঙ্ক করা হবে.'; +$lang['checkage'] = 'সম্ভবত পুরোনো অনুবাদের বিষয়ে সাবধান.'; +$lang['copytrans'] = 'একটি নতুন অনুবাদ শুরু যখন সম্পাদক মধ্যে মূল ভাষা টেক্সট কপি করুন?'; diff --git a/sources/lib/plugins/translation/lang/bn/totranslate.txt b/sources/lib/plugins/translation/lang/bn/totranslate.txt new file mode 100755 index 0000000..46e5f1c --- /dev/null +++ b/sources/lib/plugins/translation/lang/bn/totranslate.txt @@ -0,0 +1 @@ +FixMe ** এই পাতা সম্পূর্ণরূপে এখনো অনুবাদ করা হয়নি. অনুবাদ সমাপ্তির সাহায্য করুন. ** \ \ / / (অনুবাদ সমাপ্ত হয় একবার এই অনুচ্ছেদ মুছে ফেলুন) / / \ No newline at end of file diff --git a/sources/lib/plugins/translation/lang/ca/lang.php b/sources/lib/plugins/translation/lang/ca/lang.php new file mode 100644 index 0000000..c74c568 --- /dev/null +++ b/sources/lib/plugins/translation/lang/ca/lang.php @@ -0,0 +1,16 @@ + + */ +$lang['translations'] = 'Traduccions d\'aquesta pàgina'; +$lang['outdated'] = 'Aquesta traducció és més antiga que la pàgina original i pot estar desactualitzada.'; +$lang['diff'] = 'Veure que ha canviat.'; +$lang['transloaded'] = 'Els continguts de la traducció d\'aquesta pàgina a %s han sigut pre-carregats per facilitar la traducció.
    Però pots basar la teva traducció en les següents traduccions: %s'; +$lang['menu'] = 'traduccions desactualitzades i que falten'; +$lang['missing'] = 'Falta!'; +$lang['old'] = 'desactualitzat'; +$lang['current'] = 'actualitzat'; +$lang['path'] = 'Ruta'; diff --git a/sources/lib/plugins/translation/lang/ca/settings.php b/sources/lib/plugins/translation/lang/ca/settings.php new file mode 100644 index 0000000..4a356cc --- /dev/null +++ b/sources/lib/plugins/translation/lang/ca/settings.php @@ -0,0 +1,19 @@ + + */ +$lang['translations'] = 'Llista separada per espais d\'idiomes de traducció'; +$lang['translationns'] = 'Si només vols traduccions sota un cert espai de noms, posa\'l aquí.'; +$lang['skiptrans'] = 'Quan el nom de la pàgina coincideix amb aquesta expressió regular, no mostris el menú de traducció.'; +$lang['dropdown'] = 'Utilitzar una llista desplegable per mostrar les traduccions (recomanat per a més de 5 idiomes).'; +$lang['translateui'] = 'L\'idioma de la interfície d\'usuari s\'hauria de canviar també en els espais de noms en llengües estrangeres?'; +$lang['redirectstart'] = 'La pàgina d\'inici hauria de redirigir a un espai de noms d\'idioma mitjançant la detecció d\'idioma del navegador?'; +$lang['about'] = 'Introdueix un nom de pàgina aquí, on la funció de traducció s\'explica als usuaris. Estarà connectat des del selector d\'idioma.'; +$lang['localabout'] = 'Utilitzar versions localitzades de la pàgina \'quant a\' (en lloc d\'un \'quant a\' global).'; +$lang['checkage'] = 'Advertir sobre possibles traduccions obsoletes.'; +$lang['display'] = 'Selecciona el que vulguis que es mostri al seleccionador d\'idioma. Recorda que els experts en usabilitat no recomanen fer servir banderes de país.'; +$lang['copytrans'] = 'Copiar el text en l\'idioma original en l\'editor quan s\'inicia una nova traducció?'; +$lang['show_path'] = 'Mostrar la ruta a la pàgina de traducció que falta?'; diff --git a/sources/lib/plugins/translation/lang/ca/totranslate.txt b/sources/lib/plugins/translation/lang/ca/totranslate.txt new file mode 100644 index 0000000..96820e8 --- /dev/null +++ b/sources/lib/plugins/translation/lang/ca/totranslate.txt @@ -0,0 +1 @@ +ARREGLA'M **Aquesta pàgina encara no està totalment traduïda. Si us plau, ajuda completant la traducció.**\\//(treu aquest paràgraf en acabar la traducció)// \ No newline at end of file diff --git a/sources/lib/plugins/translation/lang/cs/lang.php b/sources/lib/plugins/translation/lang/cs/lang.php new file mode 100755 index 0000000..faca1ae --- /dev/null +++ b/sources/lib/plugins/translation/lang/cs/lang.php @@ -0,0 +1,16 @@ + + */ +$lang['translations'] = 'Překlady této stránky'; +$lang['outdated'] = 'Tento překlad je starší než originální stránka a nejspíše i zastaralý.'; +$lang['diff'] = 'Zobrazit změny.'; +$lang['transloaded'] = 'Text pro překlad této stránky do %s byl pro ulehčení překládání automaticky načten.
    Můžete ale použít předešlé dostupné překlady: %s.'; +$lang['menu'] = 'zastaralé a chybějící překlady'; +$lang['missing'] = 'Chybí!'; +$lang['old'] = 'zastaralý'; +$lang['current'] = 'aktuální'; +$lang['path'] = 'Cesta'; diff --git a/sources/lib/plugins/translation/lang/cs/settings.php b/sources/lib/plugins/translation/lang/cs/settings.php new file mode 100755 index 0000000..f24ab34 --- /dev/null +++ b/sources/lib/plugins/translation/lang/cs/settings.php @@ -0,0 +1,19 @@ + + */ +$lang['translations'] = 'Seznam přeložených jazyků (ISO kódů) oddělený mezerami. Nezahrnujte defaultní jazyk!'; +$lang['translationns'] = 'Chcete-li udržovat překlad jen pro konkrétní jmenný prostor, vložte jeho jméno sem.'; +$lang['skiptrans'] = 'Pokud jméno stránky obsahuje tento regulární výraz, nezobrazovat překladové menu.'; +$lang['dropdown'] = 'Použít rozbalovací seznam dostupných překladů (doporučeno pro 5 a více jazyků).'; +$lang['translateui'] = 'Mělo by se přeložit i uživatelské rozhraní při změně překladu stránky?'; +$lang['redirectstart'] = 'Má hlavní stránka automaticky přesměrovávat na dostupnou jazykovou verzi jmenného prostoru dle nastavení jazyka prohlížeče?'; +$lang['about'] = 'Vložte jméno stránky s nápovědou ohledně možnosti překládat stránky na DokuWiki s pomoci Translation pluginu. Tento odkaz bude k dispozici z výběru přeložených jazyků.'; +$lang['localabout'] = 'Použít přeložené verze stran o aplikaci (namísto té globální).'; +$lang['checkage'] = 'Upozorňovat na možné zastaralé překlady.'; +$lang['display'] = 'Vybrat co se má zobrazovat v menu pro výběr jazyka. Experti na použitelnost webu nedoporučují zobrazování obrázků vlajek zemí pro výběr jazyka.'; +$lang['copytrans'] = 'Kopírovat výchozí jazykovou verzi do editoru pro nový překlad?'; +$lang['show_path'] = 'Zobrazit cestu na chybějící stránku překladu?'; diff --git a/sources/lib/plugins/translation/lang/cs/totranslate.txt b/sources/lib/plugins/translation/lang/cs/totranslate.txt new file mode 100755 index 0000000..5cdeee6 --- /dev/null +++ b/sources/lib/plugins/translation/lang/cs/totranslate.txt @@ -0,0 +1 @@ +FIXME **Tato stránka ještě není plně přeložena. Pomozte s dokončením překladu.**\\ //(odstraňte tento odstavec, jakmile je překlad dokončen)// \ No newline at end of file diff --git a/sources/lib/plugins/translation/lang/cy/lang.php b/sources/lib/plugins/translation/lang/cy/lang.php new file mode 100644 index 0000000..18e12e7 --- /dev/null +++ b/sources/lib/plugins/translation/lang/cy/lang.php @@ -0,0 +1,11 @@ + + */ +$lang['translations'] = 'Cyfieithiadau\'r dudalen hon'; +$lang['outdated'] = 'Mae\'r cyfieithiad hwn yn hŷn na\'r dudalen wreiddiol a gall fod wedi dyddio.'; +$lang['diff'] = 'Gweld beth sydd wedi newid.'; +$lang['transloaded'] = 'Cafodd cynnwys y dudalen hon mewn %s ei raglwytho er mwyn hwyluso\'r cyfieithu.
    Er gallwch chi seilio\'ch cyfieithiad ar y cyfieithiadau canlynol sy\'n bodoli\'n barod: %s'; diff --git a/sources/lib/plugins/translation/lang/cy/settings.php b/sources/lib/plugins/translation/lang/cy/settings.php new file mode 100644 index 0000000..21d5315 --- /dev/null +++ b/sources/lib/plugins/translation/lang/cy/settings.php @@ -0,0 +1,18 @@ + + */ +$lang['translations'] = 'Rhestr gwahanwyd gan goma o iaith gyfieithu (codau ISO)'; +$lang['translationns'] = 'Os ydych chi am osod y cyfieithiadau o dan namespace penodol yn unig, rhowch e yma.'; +$lang['skiptrans'] = 'Pan fydd enw\'r dudalen yn bodloni\'r mynegiad rheolaidd, paid dangos y dewislen cyfieithu.'; +$lang['dropdown'] = 'Defnyddio cwymprestr i ddangos y cyfieithiadau (awgrymir am fwy na 5 iaith).'; +$lang['translateui'] = 'A ddylai iaith rhyngwyneb y defnyddiwr gael ei newid mewn namespaces ieithoedd estron hefyd?'; +$lang['redirectstart'] = 'A ddylai\'r dudalen gychwyn ailgyfeirio yn awtomatig i mewn i namespace iaith gan ddefnyddio datgeliad iaith y porwr?'; +$lang['about'] = 'Rhowch enw tudalen yma lle caiff y nodwedd cyfieithu ei esbonio ar gyfer eich defnyddwyr. Caiff ei gysylltu o\'r dewisydd iaith.'; +$lang['localabout'] = 'Defnyddio fersiynau lleoledig o\'r dudalen \'ynghylch\' (yn hytrach nag un dudalen \'ynghylch\' gyffredinol).'; +$lang['checkage'] = 'Rhybuddio ynghylch cyfieithiadau sydd efallai wedi dyddio.'; +$lang['display'] = 'Dewiswch yr hyn hoffech chi weld yn y dewisydd iaith. \'Dyw defnyddio baneri gwlad ddim i\'w awgrymu yn ôl arbenigwyr.'; +$lang['copytrans'] = 'Copïo testun y iaith wreiddiol i\'r golygydd wrth ddechrau cyfieithiad newydd?'; diff --git a/sources/lib/plugins/translation/lang/cy/totranslate.txt b/sources/lib/plugins/translation/lang/cy/totranslate.txt new file mode 100644 index 0000000..da8bfaa --- /dev/null +++ b/sources/lib/plugins/translation/lang/cy/totranslate.txt @@ -0,0 +1 @@ +FIXME **'Dyw'r dudalen heb ei chyfieithu'n llawn eto. Cynorthwywch gan gyflawni'r cyfieithiad.**\\ //(tynnych y paragraff hwn unwaith i chi orffen y cyfieithu)// \ No newline at end of file diff --git a/sources/lib/plugins/translation/lang/da/lang.php b/sources/lib/plugins/translation/lang/da/lang.php new file mode 100755 index 0000000..af5f450 --- /dev/null +++ b/sources/lib/plugins/translation/lang/da/lang.php @@ -0,0 +1,12 @@ + + * @author Soren Birk + */ +$lang['translations'] = 'Oversættelser af denne side'; +$lang['outdated'] = 'Denne oversættelse er ældre end den originale side og er muligvis forældet.'; +$lang['diff'] = 'Se hvad der er ændret.'; +$lang['transloaded'] = 'Indholdet af denne sides oversættelse i %s er blevet præ-indlæst for lettere oversættelse.
    Du kan basere din oversættelse på følgende nuværende oversættelser: %s.'; diff --git a/sources/lib/plugins/translation/lang/da/settings.php b/sources/lib/plugins/translation/lang/da/settings.php new file mode 100755 index 0000000..7b43734 --- /dev/null +++ b/sources/lib/plugins/translation/lang/da/settings.php @@ -0,0 +1,20 @@ + + * @author Soren Birk + * @author Jacob Palm + */ +$lang['translations'] = 'Mellemrums-separeret liste a oversættelsessprog (ISO koder). Lad være med at inkludere standardsproget.'; +$lang['translationns'] = 'Hvis du kun vil have oversættelser under et bestemt navnerum, indsæt det her.'; +$lang['skiptrans'] = 'Hvis navnet på siden matcher dette regulære udtryk, så lad være med at vise oversættelsesmenuen.'; +$lang['dropdown'] = 'Benyt en rulleliste til at vise oversættelserne (anbefales til 5 sprog eller mere).'; +$lang['translateui'] = 'Skal brugerfladens sprog også skiftes i fremmedsprogets navnerum?'; +$lang['redirectstart'] = 'Skal startsiden automatisk henvise til et sprog-navnerum vha browserens sprog-genkendelse?'; +$lang['about'] = 'Skriv et sidenavn her hvor oversættelsesfunktionen er forklaret for dine brugere. Siden vil blive linket til fra sprogvælgeren.'; +$lang['localabout'] = 'Anvend lokaliserede versions af "Om" siden (i stedet for en global "Om" side)'; +$lang['checkage'] = 'Advar om mulige forældede oversættelser.'; +$lang['display'] = 'Angiv hvad du ønsker der skal vises menuen til valg af sprog. Bemærk venligst, at det frarådes at benytte landeflag til sprogvalg.'; +$lang['copytrans'] = 'Kopier tekst fra originalt sporg ind i editorern når en ny oversættelse påbegyndes?'; diff --git a/sources/lib/plugins/translation/lang/da/totranslate.txt b/sources/lib/plugins/translation/lang/da/totranslate.txt new file mode 100755 index 0000000..3109105 --- /dev/null +++ b/sources/lib/plugins/translation/lang/da/totranslate.txt @@ -0,0 +1 @@ +FIXME **Denne side er endnu ikke fuldt oversat. Måske kan du hjælpe med at færdiggøre oversættelsen?**\\ //(fjern dette afsnit når siden er oversat)// \ No newline at end of file diff --git a/sources/lib/plugins/translation/lang/de-informal/lang.php b/sources/lib/plugins/translation/lang/de-informal/lang.php new file mode 100755 index 0000000..e402a02 --- /dev/null +++ b/sources/lib/plugins/translation/lang/de-informal/lang.php @@ -0,0 +1,3 @@ + + */ +$lang['translations'] = 'Übersetzungen dieser Seite'; +$lang['outdated'] = 'Diese Übersetzung ist älter als das Original und ist eventuell veraltet.'; +$lang['diff'] = 'Änderungen zeigen.'; +$lang['transloaded'] = 'Der Inhalt dieser Seite auf %s wurde in den Editor geladen um die Übersetzung zu erleichtern.
    Sie können Ihre Arbeit auch mit einer der folgenden vorhandenen Übersetzungen beginnen: %s.'; +$lang['menu'] = "veraltete und fehlende Übersetzungen"; +$lang['missing'] = 'Fehlt!'; +$lang['old'] = 'veraltet'; +$lang['current'] = 'aktuell'; +$lang['path'] = 'Pfad'; diff --git a/sources/lib/plugins/translation/lang/de/settings.php b/sources/lib/plugins/translation/lang/de/settings.php new file mode 100755 index 0000000..ce7fbda --- /dev/null +++ b/sources/lib/plugins/translation/lang/de/settings.php @@ -0,0 +1,19 @@ + + */ +$lang['translations'] = 'Liste der Sprachen (ISO codes), mittels Leerzeichen separiert. Die Default-Sprache nicht angeben.'; +$lang['translationns'] = 'Wenn die Übersetzung nur unterhalb eines Namensraumes gelten soll, diesen hier angeben.'; +$lang['skiptrans'] = 'Wenn der Seitennamen dem regulären Ausdruck entspricht, dann den Sprachumschalter nicht anzeigen.'; +$lang['dropdown'] = 'Eine Auswahlliste benutzen, um die Übersetzungen anzuzeigen (zu bevorzugen bei mehr als fünf Sprachen).'; +$lang['translateui'] = 'Soll die Sprache der Benutzerschnittstelle auch in die jeweilige Fremdspache umgeschaltet werden?'; +$lang['redirectstart'] = 'Anhand des Browsers des Benutzers erkennen, welche Sprache angezeigt werden soll. (Startseite leitet in den passenden Namensraum um).'; +$lang['about'] = 'Geben Sie hier eine Seite an, welche den Mechanismus der Übersetzung erklärt. Sie wird vom Sprachumschalter verlinkt.'; +$lang['localabout'] = 'Sprachspezifische Versionen der oben angegebenen Seite (anstelle einer globalen) nutzen.'; +$lang['checkage'] = 'Warnungen von möglicherweise veralteten Übersetzungen anzeigen.'; +$lang['display'] = 'Geben Sie an welches/r Symbol/Text im Sprachumschalter angezeigt werden soll. (Die Nutzung von länderspezifischen Flaggen wird aus Gründen der Benutzbarkeit nicht empfohlen.)'; +$lang['copytrans'] = 'Original Sprachversion in den Editor kopieren wenn eine neue Übersetzung begonnen wird?'; +$lang['show_path'] = 'Seitenpfad in der Übersicht der fehlenden Übersetzungen anzeigen?'; diff --git a/sources/lib/plugins/translation/lang/de/totranslate.txt b/sources/lib/plugins/translation/lang/de/totranslate.txt new file mode 100755 index 0000000..37d03ae --- /dev/null +++ b/sources/lib/plugins/translation/lang/de/totranslate.txt @@ -0,0 +1 @@ +FIXME **Diese Seite wurde noch nicht vollständig übersetzt. Bitte helfen Sie bei der Übersetzung.**\\ //(diesen Absatz entfernen, wenn die Übersetzung abgeschlossen wurde)// \ No newline at end of file diff --git a/sources/lib/plugins/translation/lang/en/lang.php b/sources/lib/plugins/translation/lang/en/lang.php new file mode 100755 index 0000000..304d298 --- /dev/null +++ b/sources/lib/plugins/translation/lang/en/lang.php @@ -0,0 +1,11 @@ +original page and might be outdated.'; +$lang['diff'] = 'See what has changed.'; +$lang['transloaded'] = 'The contents of this page\'s translation in %s have been pre-loaded for easy translation.
    But you can base your translation on the following existing translations: %s.'; +$lang['menu'] = "outdated and missing translations"; +$lang['missing'] = 'Missing!'; +$lang['old'] = 'outdated'; +$lang['current'] = 'up-to-date'; +$lang['path'] = 'Path'; diff --git a/sources/lib/plugins/translation/lang/en/settings.php b/sources/lib/plugins/translation/lang/en/settings.php new file mode 100755 index 0000000..bda50a6 --- /dev/null +++ b/sources/lib/plugins/translation/lang/en/settings.php @@ -0,0 +1,20 @@ + + */ + +$lang['translations'] = 'Space separated list of translation languages (ISO codes).'; +$lang['translationns'] = 'If you only want translations below a certain namespace, put it here.'; +$lang['skiptrans'] = 'When the pagename matches this regular expression, don\'t show the translation menu.'; +$lang['dropdown'] = 'Use a dropdown list to display the translations (recommended for more than 5 languages).'; +$lang['translateui'] = 'Should the language of the user interface be switched in foreign language namespaces, too?'; +$lang['redirectstart'] = 'Should the start page automatically redirect into a language namespace using browser language detection?'; +$lang['about'] = 'Enter a pagename here where the translation feature is explained for your users. It will be linked from the language selector.'; +$lang['localabout'] = 'Use localized versions of about page (instead of one global about page).'; +$lang['checkage'] = 'Warn about possibly outdated translations.'; +$lang['display'] = 'Select what you\'d like to have shown in the language selector. Note that using country flags for language selection is not recommended by usability experts.'; + +$lang['copytrans'] = 'Copy original language text into the editor when starting a new translation?'; +$lang['show_path'] = 'Show path on the missing translation page?'; \ No newline at end of file diff --git a/sources/lib/plugins/translation/lang/en/totranslate.txt b/sources/lib/plugins/translation/lang/en/totranslate.txt new file mode 100755 index 0000000..ab42d5f --- /dev/null +++ b/sources/lib/plugins/translation/lang/en/totranslate.txt @@ -0,0 +1 @@ +FIXME **This page is not fully translated, yet. Please help completing the translation.**\\ //(remove this paragraph once the translation is finished)// \ No newline at end of file diff --git a/sources/lib/plugins/translation/lang/eo/lang.php b/sources/lib/plugins/translation/lang/eo/lang.php new file mode 100755 index 0000000..3b325da --- /dev/null +++ b/sources/lib/plugins/translation/lang/eo/lang.php @@ -0,0 +1,11 @@ + + */ +$lang['translations'] = 'Tradukoj de tiu paĝo'; +$lang['outdated'] = 'Tiu traduko estas pli malnova ol la origina paĝo kaj povus esti malaktuala.'; +$lang['diff'] = 'Vidi kio ŝanĝiĝis.'; +$lang['transloaded'] = 'La enhavo de la paĝtraduko en %s disponeblas por facila tradukado.
    Sed vi povas bazi vian tradukon sur la sekvaj tradukoj: %s.'; diff --git a/sources/lib/plugins/translation/lang/eo/settings.php b/sources/lib/plugins/translation/lang/eo/settings.php new file mode 100755 index 0000000..6edf642 --- /dev/null +++ b/sources/lib/plugins/translation/lang/eo/settings.php @@ -0,0 +1,18 @@ + + */ +$lang['translations'] = 'Spaco-disigita listo de tradukaj lingvoj (ISO-kodoj).'; +$lang['translationns'] = 'Se vi volas traduki nur ene de certa nomspaco, indiku ĝin.'; +$lang['skiptrans'] = 'Ne montri la tradukmenuon, kiam la paĝnomo kongruas al tiu regula esprimo.'; +$lang['dropdown'] = 'Uzi falmenuon por montri la tradukojn (rekomendata por pli ol 5 lingvoj).'; +$lang['translateui'] = 'Ĉu ankaŭ ŝanĝi la lingvon de la uzanto-interfaco en alilingvaj nomspacoj?'; +$lang['redirectstart'] = 'Ĉu la startpaĝo aŭtomate redirektiĝu al lingva nomspaco laŭ foliumila rekonado?'; +$lang['about'] = 'Paĝnomo, kie klariĝas la tradukad-funkcio al uzantoj. La lingvo-selektilo ligos tien.'; +$lang['localabout'] = 'Uzi lokajn versiojn de la pri-paĝo (anstataŭ unu ĝenerala pri-paĝo).'; +$lang['checkage'] = 'Averti pri eble malaktualaj tradukoj.'; +$lang['display'] = 'Kion montri en la lingvo-selektilo. Notu ke uzeblec-fakuloj ne rekomendas uzi landajn flagetojn por lingvo-elekto.'; +$lang['copytrans'] = 'Ĉu kopii la originlingvan tekston en la redaktokampon por komenci novan tradukon?'; diff --git a/sources/lib/plugins/translation/lang/eo/totranslate.txt b/sources/lib/plugins/translation/lang/eo/totranslate.txt new file mode 100755 index 0000000..1987959 --- /dev/null +++ b/sources/lib/plugins/translation/lang/eo/totranslate.txt @@ -0,0 +1 @@ +FIXME **Tiu paĝo ankoraŭ ne plene tradukiĝis. Bv. helpi kompletigi la tradukon.**\\ //(forigu tiun alineon post fintraduko)// \ No newline at end of file diff --git a/sources/lib/plugins/translation/lang/es/lang.php b/sources/lib/plugins/translation/lang/es/lang.php new file mode 100755 index 0000000..c46669e --- /dev/null +++ b/sources/lib/plugins/translation/lang/es/lang.php @@ -0,0 +1,12 @@ + + * @author carlos + */ +$lang['translations'] = 'Traducciones de esta página'; +$lang['outdated'] = 'Esta traducción es más antigua que la página original y podría estar obsoleta.'; +$lang['diff'] = 'Ver lo que ha cambiado.'; +$lang['transloaded'] = 'Los contenidos de la traducción de esta página en %s han sido precargados para facilitar la traducción.
    Pero puedes basar tu traducción en las siguientes traducciones existentes: %s.'; diff --git a/sources/lib/plugins/translation/lang/es/settings.php b/sources/lib/plugins/translation/lang/es/settings.php new file mode 100755 index 0000000..2f9ee2d --- /dev/null +++ b/sources/lib/plugins/translation/lang/es/settings.php @@ -0,0 +1,20 @@ + + * @author Camilo Sampedro + * @author carlos + */ +$lang['translations'] = 'Lista de lenguajes para traducción (Códigos ISO), separados por espacios. No incluir el lenguaje por defecto.'; +$lang['translationns'] = 'Si sólo quieres traducciones en determinados espacios de nombre, indícalos aquí.'; +$lang['skiptrans'] = 'Cuando el nombre de la página concuerda con esta expresión regular, no mostrar el menú de traducción.'; +$lang['dropdown'] = 'Utiliza una lista desplegable para mostrar las traducciones (recomendado para más de 5 idiomas).'; +$lang['translateui'] = '¿También debería el lenguaje del interfaz de usuario cambiarse en los espacios de nombre foráneos?'; +$lang['redirectstart'] = '¿Debería la página principal redireccionar automáticamente a una página de un idioma según sea detectado por el navegador?'; +$lang['about'] = 'Introduce aquí un nombre de página donde se explique a tus usuarios la funcionalidad de traducción. Se enlazará desde el selector de lenguaje.'; +$lang['localabout'] = 'Utiliza versiones localizadas de la página \'acerca de\' (en lugar de una página \'acerca de\' global)'; +$lang['checkage'] = 'Alertar sobre posibles traducciones obsoletas.'; +$lang['display'] = 'Selecciona lo que quieras que sea mostrado en el selector de idioma. Ten en cuenta que el uso de parámetros de país para la selección de idioma no está recomendada por los expertos en usabilidad.'; +$lang['copytrans'] = '¿Mostrar el texto en el idioma original en el editor cuando se comienza una nueva traducción?'; diff --git a/sources/lib/plugins/translation/lang/es/totranslate.txt b/sources/lib/plugins/translation/lang/es/totranslate.txt new file mode 100755 index 0000000..6dc2803 --- /dev/null +++ b/sources/lib/plugins/translation/lang/es/totranslate.txt @@ -0,0 +1 @@ +FIXME **Esta página no está completamente traducida, aún. Por favor, contribuye a su traducción.**\\ //(Elimina este párrafo una vez la traducción esté completa)// \ No newline at end of file diff --git a/sources/lib/plugins/translation/lang/fa/lang.php b/sources/lib/plugins/translation/lang/fa/lang.php new file mode 100644 index 0000000..2abecd7 --- /dev/null +++ b/sources/lib/plugins/translation/lang/fa/lang.php @@ -0,0 +1,16 @@ + + */ +$lang['translations'] = 'ترجمه‌های این صفحه'; +$lang['outdated'] = 'این ترجمه از a href="%s" class="wikilink1">صفحه‌ی اصلی قدیمی‌تر است و ممکن است منسوخ شده باشد.'; +$lang['diff'] = 'ببینید چه چیزی تغییر کرده.'; +$lang['transloaded'] = 'محتویات این ترجمه‌ی صفحه در %s برای ترجمه‌ی آسان از قبل پر شده‌است.
    اما شما می‌توانید پایه‌ی ترجمه‌هایتان را در ترجمه‌های موجود زیر ببینید: %s.'; +$lang['menu'] = 'ترجمه‌های منسوخ‌ شده و پیدا نشده'; +$lang['missing'] = 'پیدا نشده!'; +$lang['old'] = 'منسوخ شده'; +$lang['current'] = 'به روز'; +$lang['path'] = 'مسیر'; diff --git a/sources/lib/plugins/translation/lang/fa/settings.php b/sources/lib/plugins/translation/lang/fa/settings.php new file mode 100644 index 0000000..2331783 --- /dev/null +++ b/sources/lib/plugins/translation/lang/fa/settings.php @@ -0,0 +1,19 @@ + + */ +$lang['translations'] = 'فضای لیست جداشده‌ی زبان‌های ترجمه شده (کدهای آی‌اس‌او)'; +$lang['translationns'] = 'اگر شما فقط می‌خواهید ترجمه‌ها زیر یک فضای‌نام خاص باشند، اینجا قرار دهید.'; +$lang['skiptrans'] = 'وقتی نام‌صفحه با عبارات منظم هم‌خوانی داشت، منوی ترجمه را نشان نده.'; +$lang['dropdown'] = 'استفاده از یک لیست کشویی برای نمایش ترجمه (توصیه شده برای بیشتر از ۵ زبان)'; +$lang['translateui'] = 'باید زبان رابط کاربر در زبان‌های خارجی فضای‌نام تغییر یابد، همچنین؟'; +$lang['redirectstart'] = 'باید صفحه‌ی آغازین به‌طور خودکار به زبانی که فضای‌نام توسط مرورگر کشف شده، تغییرمسیر کند؟'; +$lang['about'] = 'وارد کردن یک نام‌صفحه جایی که '; +$lang['localabout'] = 'استفاده از نسخه‌های متمرکز شده‌ی درباره صفحه (به جای یک جهانی درباره صفحه)'; +$lang['checkage'] = 'هشدار درمورد ترجمه‌های احتمالا منسوخ شده.'; +$lang['display'] = 'انتخاب این‌که شما چه چیزی را می‌پسندید تا در انتخابگر زبان نمایش داده شود. توجه داشته‌باشید که استفاده از پرچم کشورها برای انتخابگر زبان توسط کارشناسان توصیه نمی‌شود.'; +$lang['copytrans'] = 'کپی‌کردن زبان اصلی متن داخل ویرایشگر وقتی که یک ترجمه جدید آغار می‌شود؟'; +$lang['show_path'] = 'نمایش مسیر در ترجمه‌ی پیدانشده‌ی صفحه‌‌ها؟'; diff --git a/sources/lib/plugins/translation/lang/fa/totranslate.txt b/sources/lib/plugins/translation/lang/fa/totranslate.txt new file mode 100644 index 0000000..665eb5b --- /dev/null +++ b/sources/lib/plugins/translation/lang/fa/totranslate.txt @@ -0,0 +1 @@ +تعمیرم کن **این صفحه کامل ترجمه نشده، اکنون. لطفا برای کامل‌شدنش کمک کنید.**\\ //(بعد از پایان ترجمه این بند را از ترجمه حذف کنید)// \ No newline at end of file diff --git a/sources/lib/plugins/translation/lang/fr/lang.php b/sources/lib/plugins/translation/lang/fr/lang.php new file mode 100755 index 0000000..d8a8b9d --- /dev/null +++ b/sources/lib/plugins/translation/lang/fr/lang.php @@ -0,0 +1,19 @@ + + * @author NicolasFriedli + * @author Gilles-Philippe Morin + * @author Schplurtz le Déboulonné + */ +$lang['translations'] = 'Traductions de cette page'; +$lang['outdated'] = 'Cette traduction est plus ancienne que la page originale et est peut-être dépassée.'; +$lang['old'] = 'dépassée'; +$lang['diff'] = 'Voir ce qui a changé.'; +$lang['transloaded'] = 'Le contenu de cette page en %s a été pré-chargé pour faciliter la traduction.
    Mais vous pouvez baser votre traduction sur les traductions existantes: %s'; +$lang['menu'] = 'traductions dépassées et manquantes'; +$lang['missing'] = 'Manquante!'; +$lang['current'] = 'à jour'; +$lang['path'] = 'Chemin'; diff --git a/sources/lib/plugins/translation/lang/fr/settings.php b/sources/lib/plugins/translation/lang/fr/settings.php new file mode 100755 index 0000000..74869ce --- /dev/null +++ b/sources/lib/plugins/translation/lang/fr/settings.php @@ -0,0 +1,22 @@ + + * @author Vincent Feltz + * @author NicolasFriedli + * @author Schplurtz le Déboulonné + */ +$lang['translations'] = 'Liste des langues disponibles séparées par des espaces (codes ISO).'; +$lang['translationns'] = 'Si vous souhaitez ne traduire qu\'une certaine catégorie, indiquez-la ici.'; +$lang['skiptrans'] = 'Quand le nom de la page correspond à cette expression régulière, ne pas montrer le menu de traduction.'; +$lang['dropdown'] = 'Utiliser un menu déroulant pour afficher les traductions (recommandé pour plus de 5 langues).'; +$lang['translateui'] = 'Faut-il changer la langue de l\'interface utilisateur dans les catégories traduites ?'; +$lang['redirectstart'] = 'La page de départ devrait-elle rediriger vers une catégorie traduite en utilisant la détection de langue du navigateur ?'; +$lang['about'] = 'Entrez ici un nom de page où la fonctionnalité de traduction est expliquée aux utilisateurs. Elle sera accessible depuis le sélecteur de langue.'; +$lang['localabout'] = 'Utiliser des versions traduites de la page à propos (au lieu d\'une page à propos globale).'; +$lang['checkage'] = 'Avertir de la possibilité de traductions dépassées.'; +$lang['display'] = 'Sélectionnez ce que vous voudriez afficher dans le sélecteur de langue. Notez qu\'utiliser les drapeaux de pays pour la sélection de langue n\'est pas recommandé par les experts en ergonomie.'; +$lang['copytrans'] = 'Copier le texte en langue source dans l\'éditeur quand une nouvelle traduction est lancée ?'; +$lang['show_path'] = 'Montrer les chemins sur la page des traductions manquantes ?'; diff --git a/sources/lib/plugins/translation/lang/fr/totranslate.txt b/sources/lib/plugins/translation/lang/fr/totranslate.txt new file mode 100755 index 0000000..3603d4e --- /dev/null +++ b/sources/lib/plugins/translation/lang/fr/totranslate.txt @@ -0,0 +1 @@ +FIXME **Cette page n'est pas encore traduite entièrement. Merci de terminer la traduction**\\ //(supprimez ce paragraphe une fois la traduction terminée)// \ No newline at end of file diff --git a/sources/lib/plugins/translation/lang/hr/lang.php b/sources/lib/plugins/translation/lang/hr/lang.php new file mode 100755 index 0000000..80e9399 --- /dev/null +++ b/sources/lib/plugins/translation/lang/hr/lang.php @@ -0,0 +1,16 @@ + + */ +$lang['translations'] = 'Prijevodi ove stranice'; +$lang['outdated'] = 'Prijevod ove stranice je stariji od originalne stranice i može biti zastario.'; +$lang['diff'] = 'Pogledajte što je izmijenjeno.'; +$lang['transloaded'] = 'Sadržaj ove stranice u jeziku %s je napunjeno radi lakšeg prevođenja.
    Ali možete bazirati Vaš prijevod i prema slijedećim raspoloživim prijevodima: %s.'; +$lang['menu'] = 'zastarjeli i nedostajući prijevodi'; +$lang['missing'] = 'Nedostaje!'; +$lang['old'] = 'zastarjelo'; +$lang['current'] = 'ažuran'; +$lang['path'] = 'Staza'; diff --git a/sources/lib/plugins/translation/lang/hr/settings.php b/sources/lib/plugins/translation/lang/hr/settings.php new file mode 100755 index 0000000..d1769cc --- /dev/null +++ b/sources/lib/plugins/translation/lang/hr/settings.php @@ -0,0 +1,19 @@ + + */ +$lang['translations'] = 'Razmacima odvojena lista podržanih jezika (ISO oznake).'; +$lang['translationns'] = 'Ako želite prijevode samo ispod određenog imenskog prostora, navedite ga ovdje.'; +$lang['skiptrans'] = 'Kada ime stranice odgovara ovom regularnom izrazu, ne prikazujte meni za prijevode.'; +$lang['dropdown'] = 'Koristi padajuću listu za prikaz prijevoda (preporučeno kada ima više od 5 jezika).'; +$lang['translateui'] = 'Da li da jezik korisničkog sučelja također bude prebačen u jezik stranog imenskog prostora ?'; +$lang['redirectstart'] = 'Da li da se početna strana automatski preusmjeri na imenski prostor koristeći detektirani jezik preglednika?'; +$lang['about'] = 'Unesi naziv stranice gdje je korisnicima pojašnjene mogućnosti prevođenja. Ona će biti povezana na izbornik jezika.'; +$lang['localabout'] = 'Koristi lokaliziranu inačicu "about" stranice (umjesto jedinstvene globalne)'; +$lang['checkage'] = 'Upozori o mogućem zastarjelom prijevodu.'; +$lang['display'] = 'Odaberite što želite da bude prikazano u izborniku jezika. Budite svjesni da korištenje zastava za odabir jezika nije preporučeno od strane eksperata.'; +$lang['copytrans'] = 'Kopirati originalni tekst u editor kada otvorite novi prijevod ?'; +$lang['show_path'] = 'Prikaži stazu do nedostajuće stranice s prijevodom?'; diff --git a/sources/lib/plugins/translation/lang/hr/totranslate.txt b/sources/lib/plugins/translation/lang/hr/totranslate.txt new file mode 100755 index 0000000..b49e869 --- /dev/null +++ b/sources/lib/plugins/translation/lang/hr/totranslate.txt @@ -0,0 +1 @@ +FIXME **Ova stranica još nije prevedena u cijelosti. Molimo pomognite u njenom prijevodu.**\\ //(uklonite ovaj paragraf jednom kada je prevođenje završeno)// \ No newline at end of file diff --git a/sources/lib/plugins/translation/lang/hu/lang.php b/sources/lib/plugins/translation/lang/hu/lang.php new file mode 100755 index 0000000..6a576ff --- /dev/null +++ b/sources/lib/plugins/translation/lang/hu/lang.php @@ -0,0 +1,11 @@ + + */ +$lang['translations'] = 'Oldal fordításai'; +$lang['outdated'] = 'A fordítás régebbi, mint az eredeti oldal, ezért lehet, hogy már elavult.'; +$lang['diff'] = 'Módosítások megtekintése.'; +$lang['transloaded'] = 'Az oldal tartalmának %s nyelvi fordítását előre betöltöttem a könnyebb módosítás érdekében.
    Ugyanakkor a fordítást elvégezhetjük a már létező %s fordítás alapján is.'; diff --git a/sources/lib/plugins/translation/lang/hu/settings.php b/sources/lib/plugins/translation/lang/hu/settings.php new file mode 100755 index 0000000..5a27108 --- /dev/null +++ b/sources/lib/plugins/translation/lang/hu/settings.php @@ -0,0 +1,18 @@ + + */ +$lang['translations'] = 'Szóközzel elválasztott lista a nyelvi fordításokról (ISO-kódokkal).'; +$lang['translationns'] = 'Ha csak egy bizonyos névtér alatt lévő fordítást szeretnénk, tegyük ide.'; +$lang['skiptrans'] = 'Ha az oldal neve illeszkedik ehhez a reguláris kifejezéshez, ne jelenjen meg a fordítások menüje.'; +$lang['dropdown'] = 'Legördülő lista használata a fordításokhoz (5 nyelvnél több esetén javasolt).'; +$lang['translateui'] = 'Módosuljon a felhasználói felület nyelve is idegen nyelvi névterek alatt?'; +$lang['redirectstart'] = 'Átirányítsuk automatikusan a kezdőoldalt abba a nyelvi névtérbe, amely nyelv a böngészőben van beállítva?'; +$lang['about'] = 'Itt adhatjuk meg annak az oldalnak a nevét, amelyen a fordítási lehetőségeket ismertetjük a felhasználókkal. Erre fog hivatkozni a nyelvkiválasztó képernyőelem.'; +$lang['localabout'] = 'A névjegy oldal fordított változátanak használata (a globális névjegy oldal helyett).'; +$lang['checkage'] = 'Figyelmeztetés az esetlegesen elavult fordításokra.'; +$lang['display'] = 'Válasszuk ki, mi jelenjen meg a nyelvi kiválasztó képernyőelemében. Jegyezzük meg: az országzászlókat nem javasolják a használhatósági szakértők.'; +$lang['copytrans'] = 'Átmásoljuk az eredeti nyelvi szöveget a szövegszerkesztőbe új fordítás indításakor?'; diff --git a/sources/lib/plugins/translation/lang/hu/totranslate.txt b/sources/lib/plugins/translation/lang/hu/totranslate.txt new file mode 100755 index 0000000..e072d8a --- /dev/null +++ b/sources/lib/plugins/translation/lang/hu/totranslate.txt @@ -0,0 +1 @@ +JAVÍTANDÓ **Az oldal még nincs teljesen lefordítva. Kérjük, segítsen a befejezésében!**\\ //(Töröljük ezt a bekezdést a fordítás elkészültekor.)// \ No newline at end of file diff --git a/sources/lib/plugins/translation/lang/it/lang.php b/sources/lib/plugins/translation/lang/it/lang.php new file mode 100755 index 0000000..23d3bd6 --- /dev/null +++ b/sources/lib/plugins/translation/lang/it/lang.php @@ -0,0 +1,10 @@ + + */ +$lang['translations'] = 'Traduzioni di questa pagina'; +$lang['outdated'] = 'Questa traduzione è più vecchia di quella della pagina originale è potrebbe essere superata.'; +$lang['diff'] = 'Vedi cosa è cambiato.'; diff --git a/sources/lib/plugins/translation/lang/it/settings.php b/sources/lib/plugins/translation/lang/it/settings.php new file mode 100755 index 0000000..775fbf7 --- /dev/null +++ b/sources/lib/plugins/translation/lang/it/settings.php @@ -0,0 +1,20 @@ + + * @author Diego Pierotto + * @author Sebastiano Pistore + * @author Sebastiano Pistore + * @author OlatusRooc + */ +$lang['translations'] = 'Elenco delle lingue di traduzione separati da spazi (codici ISO). Non includere la lingua predefinita'; +$lang['translationns'] = 'Scrivi qui solo se vuoi le traduzioni all\'interno di una certa categoria.'; +$lang['skiptrans'] = 'Quando i nomi delle pagine corrispondono a questa espressione regolare non mostrare il menu di traduzione.'; +$lang['dropdown'] = 'Utilizza un menu a tendina per visualizzare le traduzioni (consigliato quando si lavora con più di cinque lingue).'; +$lang['translateui'] = 'Vuoi che anche la lingua dell\'interfaccia utente sia modificata in categorie della stessa lingua?'; +$lang['about'] = 'Inserisci qui una pagina dove la funzione di traduzione viene spiegata agli utenti. Sarà collegata al selettore lingua.'; +$lang['localabout'] = 'Mostra le versioni localizzate della pagina About.'; +$lang['checkage'] = 'Avvisa della possibile presenza di traduzioni obsolete.'; +$lang['copytrans'] = 'Copia nell\'editor il testo in lingua originale quando viene iniziata una nuova traduzione?'; diff --git a/sources/lib/plugins/translation/lang/it/totranslate.txt b/sources/lib/plugins/translation/lang/it/totranslate.txt new file mode 100644 index 0000000..e83c52a --- /dev/null +++ b/sources/lib/plugins/translation/lang/it/totranslate.txt @@ -0,0 +1 @@ +FIXME ** Questa pagina non è ancora completamente tradotta. Chi può potrebbe aiutarne il completamento. ** \\ // (Rimuovere questo paragrafo a lavoro completato) // \ No newline at end of file diff --git a/sources/lib/plugins/translation/lang/ja/lang.php b/sources/lib/plugins/translation/lang/ja/lang.php new file mode 100755 index 0000000..b438bc6 --- /dev/null +++ b/sources/lib/plugins/translation/lang/ja/lang.php @@ -0,0 +1,16 @@ + + */ +$lang['translations'] = 'このページの翻訳'; +$lang['outdated'] = 'この翻訳は元のページよりも更新日が古く、内容が古い可能性があります。'; +$lang['diff'] = '変更点を参照して下さい。'; +$lang['transloaded'] = '翻訳し易くするために %s にあるこのページの翻訳内容を事前に読み込みました。
    以下の既存の翻訳を翻訳の基にすることができます:%s。'; +$lang['menu'] = '古い翻訳と欠落している翻訳'; +$lang['missing'] = '欠落'; +$lang['old'] = '内容が古い'; +$lang['current'] = '最新'; +$lang['path'] = 'パス'; diff --git a/sources/lib/plugins/translation/lang/ja/settings.php b/sources/lib/plugins/translation/lang/ja/settings.php new file mode 100755 index 0000000..b8c8899 --- /dev/null +++ b/sources/lib/plugins/translation/lang/ja/settings.php @@ -0,0 +1,19 @@ + + */ +$lang['translations'] = '翻訳言語(ISOコード)のスペース区切り一覧'; +$lang['translationns'] = '特定の名前空間以下のみを翻訳したい場合、名前空間を記入する。'; +$lang['skiptrans'] = 'ページ名がこの正規表現と一致すると、翻訳メニューが表示されません。'; +$lang['dropdown'] = '翻訳を表示するためにドロップダウン一覧を使用する(5言語以上の場合推奨)。'; +$lang['translateui'] = 'ユーザーインターフェイスの言語も、名前空間の言語に切り替えるか?'; +$lang['redirectstart'] = 'ブラウザーの言語設定を利用して、スタートページを各言語の名前空間に自動的にリダイレクトするか?'; +$lang['about'] = '翻訳機能をユーザーに説明するページ名を入力して下さい。言語セレクタからリンクされます。'; +$lang['localabout'] = '(包括的な概要ページの代わりに)翻訳版の概要ページを使用する。'; +$lang['checkage'] = '古い翻訳について警告する。'; +$lang['display'] = '言語セレクタに何を表示するかを選択する。言語選択に国旗を使用することをユーザビリティ専門家は奨励しないので注意してください。'; +$lang['copytrans'] = '新しく翻訳を開始する時、エディタに元の言語の文章をコピーしますか?'; +$lang['show_path'] = '欠落している翻訳ページのパスを表示します。'; diff --git a/sources/lib/plugins/translation/lang/ja/totranslate.txt b/sources/lib/plugins/translation/lang/ja/totranslate.txt new file mode 100755 index 0000000..05ac184 --- /dev/null +++ b/sources/lib/plugins/translation/lang/ja/totranslate.txt @@ -0,0 +1 @@ +FIXME **このページはまだ完全には、翻訳されません。翻訳の完了を支援して下さい。**\\ //(翻訳が完了したらこの段落を削除して下さい)// \ No newline at end of file diff --git a/sources/lib/plugins/translation/lang/ko/lang.php b/sources/lib/plugins/translation/lang/ko/lang.php new file mode 100755 index 0000000..d99d64d --- /dev/null +++ b/sources/lib/plugins/translation/lang/ko/lang.php @@ -0,0 +1,16 @@ + + */ +$lang['translations'] = '이 문서의 번역'; +$lang['outdated'] = '이 번역은 원래 문서보다 오래되었고 오래된 번역일 수 있습니다.'; +$lang['diff'] = '무엇이 바뀌었는지 보세요.'; +$lang['transloaded'] = '%s에 있는 이 문서의 번역의 내용을 쉽게 번역하기 위해 미리 불러왔습니다.
    하지만 다음 기존 번역에 당신의 번역을 바탕으로 할 수 있습니다: %s.'; +$lang['menu'] = '오래되었고 없는 번역'; +$lang['missing'] = '없음!'; +$lang['old'] = '오래됨'; +$lang['current'] = '최신'; +$lang['path'] = '경로'; diff --git a/sources/lib/plugins/translation/lang/ko/settings.php b/sources/lib/plugins/translation/lang/ko/settings.php new file mode 100755 index 0000000..ccf6d1c --- /dev/null +++ b/sources/lib/plugins/translation/lang/ko/settings.php @@ -0,0 +1,19 @@ + + */ +$lang['translations'] = '번역 언어의 공백으로 구분한 목록 (ISO 코드).'; +$lang['translationns'] = '특정 이름공간에 따라 번역을 원하면, 여기에 넣으세요.'; +$lang['skiptrans'] = '문서 이름이 정규 표현식과 일치하면, 번역 메뉴를 보여주지 마세요.'; +$lang['dropdown'] = '번역을 표시할 드롭다운 목록을 사용합니다. (5개 이상의 언어에 권장)'; +$lang['translateui'] = '사용자 인터페이스의 언어도 외국어 이름공간으로 전환해야 합니까?'; +$lang['redirectstart'] = '시작 문서가 자동으로 브라우저 언어 감지를 사용해 언어 이름공간으로 넘겨줘야 합니까?'; +$lang['about'] = '사용자에게 설명할 번역 기능이 어디에 있는지 여기에 문서 이름을 입력하세요.'; +$lang['localabout'] = '(하나의 전역 소개 문서 대신) 소개 문서의 지역화된 버전을 사용합니다.'; +$lang['checkage'] = '가능하면 오래된 번역에 대해 경고합니다.'; +$lang['display'] = '언어 선택기에 보여주고 싶은 것을 선택하세요. 언어 선택에 국기를 사용하는 것은 사용성 전문가에게 권장하지 않음을 참고하세요.'; +$lang['copytrans'] = '새 번역을 시작할 때 편집기에 원래 언어 문장을 복사하겠습니까?'; +$lang['show_path'] = '없는 번역 문서에서의 경로를 보여줄까요?'; diff --git a/sources/lib/plugins/translation/lang/ko/totranslate.txt b/sources/lib/plugins/translation/lang/ko/totranslate.txt new file mode 100755 index 0000000..9a19833 --- /dev/null +++ b/sources/lib/plugins/translation/lang/ko/totranslate.txt @@ -0,0 +1 @@ +FIXME **이 문서는 아직 완전히 번역되지 않았습니다. 번역을 완료하는 데 도와주세요.**\\ //(번역을 마치면 이 단락을 지우세요)// \ No newline at end of file diff --git a/sources/lib/plugins/translation/lang/langnames.txt b/sources/lib/plugins/translation/lang/langnames.txt new file mode 100644 index 0000000..90992ee --- /dev/null +++ b/sources/lib/plugins/translation/lang/langnames.txt @@ -0,0 +1,188 @@ +# Native language names +# extracted from http://en.wikipedia.org/wiki/List_of_ISO_639-1_codes + +aa Afaraf +ab Аҧсуа +ae Avesta +af Afrikaans +ak Akan +am አማርኛ +an Aragonés +ar |العربية +as অসমীয়া +av Авар мацӀ +ay Aymar aru +az Azərbaycan dili +ba Башҡорт теле +be Беларуская +bg Български език +bh भोजपुरी +bi Bislama +bm Bamanankan +bn বাংলা +bo བོད་ཡིག +br Brezhoneg +bs Bosanski Jezik +ca Català +ce Нохчийн Мотт +ch Chamoru +co Corsu +cr ᓀᐦᐃᔭᐍᐏᐣ +cs Česky +cu Ѩзыкъ Словѣньскъ +cv Чӑваш Чӗлхи +cy Cymraeg +da Dansk +de Deutsch +dv ދިވެހި +dz རྫོང་ཁ +ee Eʋegbe +el Ελληνικά +en English +eo Esperanto +es Español +et Eesti +eu Euskara +fa فارسی +ff Fulfulde +fi Suomi +fj Vosa Vakaviti +fo Føroyskt +fr Français +fy Frysk +ga Gaeilge +gd Gaelic +gl Galego +gn Avañe'ẽ +gu ગુજરાતી +gv Gaelg, Gailck +ha هَوُسَ +he עברית +hi हिन्दी, हिंदी +ho Hiri Motu +hr Hrvatski +ht Kreyòl Ayisyen +hu Magyar +hy Հայերեն +hz Otjiherero +ia Interlingua +id Bahasa Indonesia +ie Interlingue +ig Igbo +ii ꆇꉙ +ik Iñupiaq +io Ido +is Íslenska +it Italiano +iu ᐃᓄᒃᑎᑐᑦ +ja 日本語 +jv Basa Jawa +ka ქართული +kg KiKongo +ki Gĩkũyũ +kj Kuanyama +kk Қазақ тілі +kl kalaallisut +km ភាសាខ្មែរ +kn ಕನ್ನಡ +ko 한국어 +kr Kanuri +ks कश्मीरी}} +ku Kurdî +kv Коми Кыв +kw Kernewek +ky Кыргыз Тили +la Latine +lb Lëtzebuergesch +lg Luganda +li Limburgs +ln Lingála +lo ພາສາລາວ +lt Lietuvių Kalba +lv Latviešu Valoda +mg Malagasy Fiteny +mh Kajin M̧ajeļ +mi Te Reo Māori +mk Македонски Јазик +ml മലയാളം +mn Монгол +mr मराठी +ms بهاس ملايو +mt Malti +my ဗမာစာ +na Ekakairũ Naoero +nb Norsk bokmål +nd isiNdebele +ne नेपाली +ng Owambo +nl Nederlands +nn Norsk nynorsk +no Norsk +nr IsiNdebele +nv Diné bizaad +ny ChiCheŵa +oc Occitan +oj ᐊᓂᔑᓈᐯᒧᐎᓐ +om Afaan Oromoo +or ଓଡ଼ିଆ +os Ирон æвзаг +pa ਪੰਜਾਬੀ, +pi पाऴि +pl Polski +ps پښتو +pt Português +pt-br Português +qu Runa Simi +rm Rumantsch Grischun +rn KiRundi +ro Română +ru Русский +rw Ikinyarwanda +sa संस्कृतम् +sc Sardu +sd सिन्धी}} +se Davvisámegiella +sg Yângâ Tî Sängö +si සිංහල +sk Slovenčina +sl Slovenščina +sm Gagana fa'a Samoa +sn ChiShona +so Soomaaliga +sq Shqip +sr Српски Језик +ss SiSwati +st Sesotho +su Basa Sunda +sv Svenska +sw Kiswahili +ta தமிழ் +te తెలుగు +tg Тоҷикӣ +th ไทย +ti ትግርኛ +tk Türkmen +tl Wikang Tagalog +tn Setswana +to Faka Tonga +tr Türkçe +ts Xitsonga +tt Татарча +tw Twi +ty Reo Mā`ohi +ug Uyƣurqə +uk Українська +ur اردو +uz O'zbek +ve Tshivenḓa +vi Tiếng Việt +vo Volapük +wa Walon +wo Wollof +xh IsiXhosa +yi ייִדיש +yo Yorùbá +za Saɯ cueŋƅ +zh 中文 +zh-tw 繁體中文 +zu IsiZulu diff --git a/sources/lib/plugins/translation/lang/lv/lang.php b/sources/lib/plugins/translation/lang/lv/lang.php new file mode 100755 index 0000000..af85894 --- /dev/null +++ b/sources/lib/plugins/translation/lang/lv/lang.php @@ -0,0 +1,11 @@ + + */ +$lang['translations'] = 'Citās valodās'; +$lang['outdated'] = 'Šis tulkojums ir vecāks par oriģinālo lapu un varbūt ir novecojis.'; +$lang['diff'] = 'Redzēt, ka ir mainījies.'; +$lang['transloaded'] = 'Vieglākai tulkošanai ir ielādēts lapas saturs no %s .
    Bet varat balstīties arī uz šādiem tulkojumiem: %s.'; diff --git a/sources/lib/plugins/translation/lang/lv/settings.php b/sources/lib/plugins/translation/lang/lv/settings.php new file mode 100755 index 0000000..1b61b46 --- /dev/null +++ b/sources/lib/plugins/translation/lang/lv/settings.php @@ -0,0 +1,19 @@ + + * @author Aivars Miška + */ +$lang['translations'] = 'Ar atstarpēm atdalīts tulkojumu valodu saraksts (ISO kodi). Izņemot noklusēto valodu.'; +$lang['translationns'] = 'Ja tulkojumus vajag tikai noteiktā nodaļā, ieraksti to šeit.'; +$lang['skiptrans'] = 'Ja lapas nosaukums atbilst regulārajai izteiksmei, tulkošanas izvēlni nerādīt.'; +$lang['dropdown'] = 'Lietot izkrītošo izvēlni tulkojumu parādīšanai (ieteikt, ja ir vairāk par 5 valodām). '; +$lang['translateui'] = 'Vai svešvalodu nodaļās jāpārslēdz arī lietotāja sakarnes valoda?'; +$lang['redirectstart'] = 'Vai sākuma lapai automātiski jāpārslēdzas atkarībā no pārlūkprogrammas noteiktās valodas?'; +$lang['about'] = 'Ieraksti šeit lapu, kurā lietotājiem izskaidrotas tulkošas iespējas. Tā tiks piesaistīta valodu izvēlei.'; +$lang['localabout'] = 'Lietot "par" lapas lokalizēto versiju, nevis globālo "par" lapu.'; +$lang['checkage'] = 'Brīdināt pa varbūt novecojušiem tulkojumiem. '; +$lang['display'] = 'Norādiet, ko lietot valodas izvēlei. Ņemiet vērā, ka valodām izmantot valstu karogus neiesaka.'; +$lang['copytrans'] = 'Sākot tulkojumu, iekopēt redaktorā oriģināltekstu?'; diff --git a/sources/lib/plugins/translation/lang/lv/totranslate.txt b/sources/lib/plugins/translation/lang/lv/totranslate.txt new file mode 100755 index 0000000..c46c14e --- /dev/null +++ b/sources/lib/plugins/translation/lang/lv/totranslate.txt @@ -0,0 +1 @@ +IZLABO **Lapa nav pilnībā pārtulkota. Lūdzu palīdzi pabeigt tulkojumu!** \\ //(Izdzēs šo rindkopu, kad tulkojums pabeigts!)// \ No newline at end of file diff --git a/sources/lib/plugins/translation/lang/nl/lang.php b/sources/lib/plugins/translation/lang/nl/lang.php new file mode 100755 index 0000000..1864f07 --- /dev/null +++ b/sources/lib/plugins/translation/lang/nl/lang.php @@ -0,0 +1,17 @@ + + * @author Marcel Bachus + */ +$lang['translations'] = 'Vertaling van deze pagina'; +$lang['outdated'] = 'Deze vertaling is ouder dan de originele pagina en kan verouderd zijn.'; +$lang['diff'] = 'Kijk wat er is veranderd.'; +$lang['transloaded'] = 'De inhoud van vertaling van deze pagina in %s is al geladen om vertalen makkelijker te maken.
    Maar je kunt je vertaling ook baseren op één van de volgende bestaande vertalingen: %s.'; +$lang['menu'] = 'verouderde of missende vertaling'; +$lang['missing'] = 'Niet gevonden!'; +$lang['old'] = 'verouderd'; +$lang['current'] = 'laatste stand van zaken'; +$lang['path'] = 'Pad'; diff --git a/sources/lib/plugins/translation/lang/nl/settings.php b/sources/lib/plugins/translation/lang/nl/settings.php new file mode 100755 index 0000000..88dbe98 --- /dev/null +++ b/sources/lib/plugins/translation/lang/nl/settings.php @@ -0,0 +1,21 @@ + + * @author Gerrit Uitslag + * @author Marcel Bachus + */ +$lang['translations'] = 'Spatiegescheiden lijst van vertalingen (ISO codes).'; +$lang['translationns'] = 'Als je alleen vertalingen in een bepaalde namespace wenst, plaatst die dan hier.'; +$lang['skiptrans'] = 'Wanneer een paginanaam overeenstemt met deze reguliere expressie, wordt het vertaalmenu niet getoond.'; +$lang['dropdown'] = 'Gebruik een dropdownlijst om vertalingen weer te geven (aanbevolen bij meer dan 5 talen).'; +$lang['translateui'] = 'Moet de taal van de gebruikersinterface ook veranderen naar de taal van vertaalde namespace?'; +$lang['redirectstart'] = 'Moet de startpagina automatisch doorverwijzen naar de namespace van de taal die de taaldetectie van de browser doorgeeft?'; +$lang['about'] = 'Geef een paginanaam waar de vertaalfunctie wordt uitgelegd voor je gebruikers. Het zal worden gelinkt vanuit de talenkiezer.'; +$lang['localabout'] = 'Gebruik vertaalde versies van bovengenoemde vertalingsuitlegpagina (in plaats van één globale uitlegpagina).'; +$lang['checkage'] = 'Waarschuw voor mogelijk gedateerde vertalingen.'; +$lang['display'] = 'Selecteer wat je wil zien in de talenkiezer. Let op dat het gebruik van landenvlaggen in de talenkiezer niet altijd gebruiksvriendelijkheid is.'; +$lang['copytrans'] = 'De tekst in de oorspronkelijke taal naar het bewerkvenster kopiëren als er een nieuwe vertaling wordt begonnen.'; +$lang['show_path'] = 'Toon het pad naar de missende vertalings pagina?'; diff --git a/sources/lib/plugins/translation/lang/nl/totranslate.txt b/sources/lib/plugins/translation/lang/nl/totranslate.txt new file mode 100755 index 0000000..d5f8cee --- /dev/null +++ b/sources/lib/plugins/translation/lang/nl/totranslate.txt @@ -0,0 +1 @@ +FIXME **Deze pagina is nog niet volledig vertaald. Help alsjeblieft de vertaling compleet te maken.**\\ //(verwijder deze paragraaf als de vertaling is voltooid)// \ No newline at end of file diff --git a/sources/lib/plugins/translation/lang/pt-br/lang.php b/sources/lib/plugins/translation/lang/pt-br/lang.php new file mode 100755 index 0000000..d65b842 --- /dev/null +++ b/sources/lib/plugins/translation/lang/pt-br/lang.php @@ -0,0 +1,15 @@ + + */ +$lang['translations'] = 'Traduções desta página'; +$lang['outdated'] = 'desatualizado'; +$lang['diff'] = 'Veja o que foi mudado.'; +$lang['transloaded'] = 'O conteúdo da tradução desta página em %s foi pré-carregado para facilitar o trabalho.< br/>Mas você pode basear sua tradução nas seguintes traduções existentes: %s.'; +$lang['menu'] = 'traduções desatualizadas e inexistentes'; +$lang['missing'] = 'Inexistente!'; +$lang['current'] = 'atualizada'; +$lang['path'] = 'Caminho'; diff --git a/sources/lib/plugins/translation/lang/pt-br/settings.php b/sources/lib/plugins/translation/lang/pt-br/settings.php new file mode 100755 index 0000000..1f378eb --- /dev/null +++ b/sources/lib/plugins/translation/lang/pt-br/settings.php @@ -0,0 +1,20 @@ + + * @author Felipe Castro + */ +$lang['translations'] = 'Lista de idiomas (códigos ISO) separada por espaços. Não inclua o idioma padrão.'; +$lang['translationns'] = 'Se você deseja traduções somente abaixo de um determinado namespace, informe-o aqui.'; +$lang['skiptrans'] = 'Quando o nome-de-página estiver de acordo com esta expressão regular, não mostre o menu de tradução.'; +$lang['dropdown'] = 'Usar listagem desdobrada para mostrar as traduções (recomendado para mais que 5 línguas).'; +$lang['translateui'] = 'A interface também deve ser alterada para o idioma selecionado pelo usuário?'; +$lang['redirectstart'] = 'A página inicial deve redirecionar automaticamente para o "namespace" da língua usando a detecção de idiomas no navegador?'; +$lang['about'] = 'Informe uma página onde a funcionalidade de tradução é explicada para o usuário. Ela pode ser conectada com o selecionador de idiomas.'; +$lang['localabout'] = 'Usar versões localizadas da página "a respeito de" (em vez de uma página global "a respeito de").'; +$lang['checkage'] = 'Avisar sobre possíveis traduções desatualizadas.'; +$lang['display'] = 'Selecionar o que você gostaria de mostrar no seletor de línguas. Note que usar bandeirinhas de países para selecionar línguas não é recomendado por especialistas em usabilidade.'; +$lang['copytrans'] = 'Copiar o texto da língua original no editor quando começar uma nova tradução?'; +$lang['show_path'] = 'Mostrar o caminho na página com tradução inexistente?'; diff --git a/sources/lib/plugins/translation/lang/pt-br/totranslate.txt b/sources/lib/plugins/translation/lang/pt-br/totranslate.txt new file mode 100644 index 0000000..5329cda --- /dev/null +++ b/sources/lib/plugins/translation/lang/pt-br/totranslate.txt @@ -0,0 +1 @@ +FIXME ** Esta página não está completamente traduzida ainda. Por favor ajude a completar sua tradução.**\\ //(remova este parágrafo assim que a tradução tenha terminado)// \ No newline at end of file diff --git a/sources/lib/plugins/translation/lang/pt/lang.php b/sources/lib/plugins/translation/lang/pt/lang.php new file mode 100755 index 0000000..a17ab35 --- /dev/null +++ b/sources/lib/plugins/translation/lang/pt/lang.php @@ -0,0 +1,11 @@ + + * @author Alfredo Silva + */ +$lang['translations'] = 'Traduções para esta página'; +$lang['outdated'] = 'Esta tradução é mais antiga do que a página original e poderá estar desatualizada.'; +$lang['diff'] = 'Veja o que foi alterado.'; diff --git a/sources/lib/plugins/translation/lang/pt/settings.php b/sources/lib/plugins/translation/lang/pt/settings.php new file mode 100755 index 0000000..4cdd114 --- /dev/null +++ b/sources/lib/plugins/translation/lang/pt/settings.php @@ -0,0 +1,19 @@ + + * @author Alfredo Silva + */ +$lang['translations'] = 'Lista de idiomas de tradução (códigos ISO) separada por espaço.'; +$lang['translationns'] = 'Se pretender apenas as traduções abaixo de um determinado espaço de nome, coloque-as aqui.'; +$lang['skiptrans'] = 'Quando o nome da página corresponder com esta expressão regular, não mostrar o menu de tradução.'; +$lang['dropdown'] = 'Utilizar uma lista de menu para exibir as traduções (recomendado para mais de 5 idiomas).'; +$lang['translateui'] = 'O idioma da interface do utilizador também deverá ser alterado nos espaços de nome do idioma estrangeiro?'; +$lang['redirectstart'] = 'A página inicial deve redirecionar automaticamente para um espaço de nome do idioma utilizando a deteção de idioma do navegador?'; +$lang['about'] = 'Insira aqui um nome de página onde a funcionalidade de tradução é explicada aos seus utilizadores. O seletor de língua terá uma ligação para lá.'; +$lang['localabout'] = 'Utilizar versões localizadas da página sobre (em vez de uma página global sobre).'; +$lang['checkage'] = 'Avisar sobre as possíveis traduções desatualizadas.'; +$lang['display'] = 'Selecione o que gostaria de ver mostrado no seletor de linguagem. Note que usar bandeiras de países para seleção de linguagem não é recomendado por peritos de usabilidade.'; +$lang['copytrans'] = 'Copiar o texto do idioma original no editor quando iniciar uma nova tradução?'; diff --git a/sources/lib/plugins/translation/lang/ru/lang.php b/sources/lib/plugins/translation/lang/ru/lang.php new file mode 100755 index 0000000..dc85abc --- /dev/null +++ b/sources/lib/plugins/translation/lang/ru/lang.php @@ -0,0 +1,18 @@ + + * @author Vasilyy Balyasnyy + * @author Anotheroneuser + */ +$lang['translations'] = 'Перевод этой страницы'; +$lang['outdated'] = 'Этот перевод старее, чем оригинальная страница, и может быть неактуальным.'; +$lang['diff'] = 'Смотрите, что было изменено.'; +$lang['transloaded'] = 'Содержание перевода этой страницы в %s было предварительно загружено для упрощения перевода.
    Но вы можете переводить на основе следующего существующего перевода: %s.'; +$lang['menu'] = 'Устаревшие или отсутствующие переводы'; +$lang['missing'] = 'Отсутствует! '; +$lang['old'] = 'устарело'; +$lang['current'] = 'обновить (привести в актуальное состояние)'; +$lang['path'] = 'Путь'; diff --git a/sources/lib/plugins/translation/lang/ru/settings.php b/sources/lib/plugins/translation/lang/ru/settings.php new file mode 100755 index 0000000..a974b68 --- /dev/null +++ b/sources/lib/plugins/translation/lang/ru/settings.php @@ -0,0 +1,21 @@ + + * @author Aleksandr Selivanov + * @author Anotheroneuser + */ +$lang['translations'] = 'Список поддерживаемых языков перевода (двухсимвольные коды ISO). Разделите значения пробелами.'; +$lang['translationns'] = 'Если вы хотите перевести только определённое пространство имён, тогда впишите здесь его имя.'; +$lang['skiptrans'] = 'Если имя страницы соответствует этому регулярному выражению, тогда не отображать меню перевода.'; +$lang['dropdown'] = 'Использовать выпадающий список для отображения доступных переводов (рекомендуется, если более 5 переводов)'; +$lang['translateui'] = 'Должен ли язык интерфейса пользователя также переключаться согласно языку пространства имён?'; +$lang['redirectstart'] = 'Должна ли стартовая страница автоматически перенаправляться на пространство имён языка, используя автоопределение языка браузера?'; +$lang['about'] = 'Введите здесь имя страницы, на которой будут разъяснены функции перевода для ваших пользователей. Она будет связана с выбором языка.'; +$lang['localabout'] = 'Использовать локализованную версию страницы разъяснений (вместо одной глобальной страницы разъяснений).'; +$lang['checkage'] = 'Отображать предупреждение о возможной неактуальности перевода?'; +$lang['display'] = 'Выберите, что бы вы хотели видеть в поле выбора языков. Имейте в виду, что использование изображения государственного флага в поле выбора языков не было рекомендовано экспертами в области потребительского удобства. '; +$lang['copytrans'] = 'Копировать текст оригинала в окно редактирования при создании нового перевода?'; +$lang['show_path'] = 'Показывать путь на непереведённых страницах? '; diff --git a/sources/lib/plugins/translation/lang/ru/totranslate.txt b/sources/lib/plugins/translation/lang/ru/totranslate.txt new file mode 100755 index 0000000..b34588e --- /dev/null +++ b/sources/lib/plugins/translation/lang/ru/totranslate.txt @@ -0,0 +1 @@ +FIXME **Эта страница пока что не переведена полностью. Пожалуйста, помогите завершить перевод.**\\ //(Сотрите это сообщение по окончании перевода.)// \ No newline at end of file diff --git a/sources/lib/plugins/translation/lang/sl/lang.php b/sources/lib/plugins/translation/lang/sl/lang.php new file mode 100755 index 0000000..be8a195 --- /dev/null +++ b/sources/lib/plugins/translation/lang/sl/lang.php @@ -0,0 +1,9 @@ +izvorne strani in je zato lahko zastarel.'; +$lang['diff'] = 'Oglejte si spremembe.'; diff --git a/sources/lib/plugins/translation/lang/sl/settings.php b/sources/lib/plugins/translation/lang/sl/settings.php new file mode 100755 index 0000000..6bdcff4 --- /dev/null +++ b/sources/lib/plugins/translation/lang/sl/settings.php @@ -0,0 +1,18 @@ + + * @author Matej Urbančič + */ +$lang['translations'] = 'Space separated list of translation languages (ISO codes).'; +$lang['translationns'] = 'If you only want translations below a certain namespace, put it here.'; +$lang['skiptrans'] = 'When the pagename matches this regular expression, don\'t show the translation menu.'; +$lang['dropdown'] = 'Use a dropdown list to display the translations (recommended for more than 5 languages).'; +$lang['translateui'] = 'Should the language of the user interface be switched in foreign language namespaces, too?'; +$lang['redirectstart'] = 'Should the start page automatically redirect into a language namespace using browser language detection?'; +$lang['about'] = 'Enter a pagename here where the translation feature is explained for your users. It will be linked from the language selector.'; +$lang['localabout'] = 'Uporabi prevedeno različico strani o vstavku (namesto splošne strani).'; +$lang['checkage'] = 'Opozori o zastarelem prevodu.'; +$lang['display'] = 'Izbor možnosti za prikaz jezika v izbirniku jezika. Izbor zastave jezika v izbiri ni priporočen.'; diff --git a/sources/lib/plugins/translation/lang/tr/lang.php b/sources/lib/plugins/translation/lang/tr/lang.php new file mode 100755 index 0000000..9f447b6 --- /dev/null +++ b/sources/lib/plugins/translation/lang/tr/lang.php @@ -0,0 +1,10 @@ + + */ +$lang['translations'] = 'Bu sayfanın çevirileri'; +$lang['outdated'] = 'Bu çeviri orjinal sayfadan daha eski tarihli. Dolayısıyla güncel olmayabilir.'; +$lang['diff'] = 'Nelerin değiştiğini görmek için tıklayın.'; diff --git a/sources/lib/plugins/translation/lang/tr/settings.php b/sources/lib/plugins/translation/lang/tr/settings.php new file mode 100755 index 0000000..368ddd4 --- /dev/null +++ b/sources/lib/plugins/translation/lang/tr/settings.php @@ -0,0 +1,15 @@ + + */ +$lang['translations'] = 'Tercüme dillerinin listesi. (boşluk ile ayrılmış, ISO kodları)'; +$lang['translationns'] = 'Eğer tercümelerin bir isim alanın (namespace) altında olmasını istiyorsanız, buraya yazın.'; +$lang['skiptrans'] = 'İsim alanı (Namespace) buradaki tanıma uyduğunda, tercüme arayüzünü gösterme.'; +$lang['dropdown'] = 'Dilleri listelemek için açılır arayüz kullan. (5\'ten fazla dil olduğunda kullanılması önerilir)'; +$lang['localabout'] = 'Bir tane genel hakkında sayfası yerine, yerelleştirilmiş hakkında sayfaları kullan. '; +$lang['checkage'] = 'Eski tarihli tercümeler hakkında uyarı göster.'; +$lang['display'] = 'Dil seçiminde görünmesini istediklerinizi seçin. Lütfen unutmayın, dil seçiminde ülke bayrağı kullanmak, erişilebilirlik uzmanları tarafından tavsiye edilmez.'; +$lang['copytrans'] = 'Yeni tercümeye başlarken orjinal dildeki metin, düzenleme ekranına kopyalansın mı?'; diff --git a/sources/lib/plugins/translation/lang/tr/totranslate.txt b/sources/lib/plugins/translation/lang/tr/totranslate.txt new file mode 100755 index 0000000..e281874 --- /dev/null +++ b/sources/lib/plugins/translation/lang/tr/totranslate.txt @@ -0,0 +1 @@ +FIXME **Bu sayfanın çevirisi henüz tamamlanmadı. Lütfen çevirinin tamamlanmasına yardımcı olun.**\\ //(Çeviri tamamlandığında bu paragrafı silin)// \ No newline at end of file diff --git a/sources/lib/plugins/translation/lang/uk/lang.php b/sources/lib/plugins/translation/lang/uk/lang.php new file mode 100755 index 0000000..06e1938 --- /dev/null +++ b/sources/lib/plugins/translation/lang/uk/lang.php @@ -0,0 +1,5 @@ +оригінальна сторінка і може бути не актуальним.'; +$lang['diff'] = 'Дивіться що було змінено.'; diff --git a/sources/lib/plugins/translation/lang/uk/settings.php b/sources/lib/plugins/translation/lang/uk/settings.php new file mode 100755 index 0000000..11e87a0 --- /dev/null +++ b/sources/lib/plugins/translation/lang/uk/settings.php @@ -0,0 +1,18 @@ + + */ + +$lang['translations'] = 'Список підтримуваних мов перекладу (двохсимвольні коди ISO). Розділіть значення комами або пробілами.'; +$lang['translationns'] = 'Якщо ви хочете перекласти тільки визначений Простір імен, тоді впишіть тут його ім\'я.'; +$lang['skiptrans'] = 'Якщо ім\'я сторінки відповідає цьому регулярному виразу, тоді не відображувати меню перекладів.'; +$lang['dropdown'] = 'Використовувати випадаючий список для відображення доступних перекладів (рекомендується, якщо більше 5 перекладів)'; +$lang['translateui'] = 'Чи повинна мова інтерфейсу користувача також перемикатись відповідно до мови Простору імен?'; +$lang['redirectstart'] = 'Чи повинна стартова сторінка автоматично перенаправлятись на Простір імен мови, використовуючи детектекцію мови оглядача?'; +$lang['about'] = 'Введіть тут ім\'я сторінки, на якій буде роз\'яснено функції перекладу для ваших користувачів. Вона буде пов\'язана з вибором мови.'; +$lang['localabout'] = 'Використовувати локалізовану версію сторінки роз\'яснень (замість однієї глобальної сторінки роз\'яснень).'; +$lang['checkage'] = 'Відображувати попередження про можливу не актуальність перекладу сторінок?'; +$lang['display'] = 'Оберіть що б ви хотіли відображувати в перемикачі мов. Примітка: використовувати прапор країни для перемикача мов не рекомендується експертами по зручності використання інтерфейсу.'; +?> diff --git a/sources/lib/plugins/translation/lang/zh-tw/lang.php b/sources/lib/plugins/translation/lang/zh-tw/lang.php new file mode 100755 index 0000000..7b9f694 --- /dev/null +++ b/sources/lib/plugins/translation/lang/zh-tw/lang.php @@ -0,0 +1,6 @@ +原始頁面舊,可能已過時。'; +$lang['diff'] = '檢視變更。'; + diff --git a/sources/lib/plugins/translation/lang/zh-tw/settings.php b/sources/lib/plugins/translation/lang/zh-tw/settings.php new file mode 100755 index 0000000..7cc76dc --- /dev/null +++ b/sources/lib/plugins/translation/lang/zh-tw/settings.php @@ -0,0 +1,16 @@ + + * @author oott123 + */ +$lang['translations'] = '本页面的其他翻译'; +$lang['outdated'] = '翻译跟原始页面比较起来显得有些陈旧,所以可能失效。'; +$lang['diff'] = '查看更新'; +$lang['transloaded'] = '此页面的 %s 已经由 easy translation 预翻译。
    但你可以以以下现存的语言为基础翻译你的版本。%s'; diff --git a/sources/lib/plugins/translation/lang/zh/settings.php b/sources/lib/plugins/translation/lang/zh/settings.php new file mode 100755 index 0000000..229337c --- /dev/null +++ b/sources/lib/plugins/translation/lang/zh/settings.php @@ -0,0 +1,19 @@ + + * @author oott123 + */ +$lang['translations'] = '使用空格分隔的翻译语言列表(ISO 码)。请勿填入默认语言。'; +$lang['translationns'] = '如果您只希望本插件作用于某个特定的名称空间,请在这里写上其名称。'; +$lang['skiptrans'] = '当页面名称与此正则匹配时,不要显示翻译菜单。'; +$lang['dropdown'] = '使用下拉列表显示翻译语言(5+语言时建议启用)'; +$lang['translateui'] = '整个用户界面也跟随某个页面的翻译语言而改变吗?'; +$lang['redirectstart'] = '首页是否根据浏览器语言自动切换到相应语言?'; +$lang['about'] = '请在此输入向用户解释翻译功能的页面的名称空间。它的链接将出现在语言选择器上。'; +$lang['localabout'] = '使用本地化的关于页面(而不是一个全局关于页面)。'; +$lang['checkage'] = '警告:可能过时了的翻译。'; +$lang['display'] = '选择你想在选择器中显示什么。注意可用性专家并不推荐使用国旗选择语言。'; +$lang['copytrans'] = '开始新翻译的时候在编辑器中复制原始语言版本?'; diff --git a/sources/lib/plugins/translation/lang/zh/totranslate.txt b/sources/lib/plugins/translation/lang/zh/totranslate.txt new file mode 100755 index 0000000..aaa32f9 --- /dev/null +++ b/sources/lib/plugins/translation/lang/zh/totranslate.txt @@ -0,0 +1 @@ +等待修复 **此页面没有被翻译完全。请帮助翻译本页。**\\ //(当全文翻译完时请移除这个段落。)// \ No newline at end of file diff --git a/sources/lib/plugins/translation/manager.dat b/sources/lib/plugins/translation/manager.dat new file mode 100644 index 0000000..1aa9d57 --- /dev/null +++ b/sources/lib/plugins/translation/manager.dat @@ -0,0 +1,2 @@ +downloadurl=https://github.com/splitbrain/dokuwiki-plugin-translation/zipball/master +installed=Sun, 20 Nov 2016 19:29:27 +0000 diff --git a/sources/lib/plugins/translation/plugin.info.txt b/sources/lib/plugins/translation/plugin.info.txt new file mode 100755 index 0000000..3b53385 --- /dev/null +++ b/sources/lib/plugins/translation/plugin.info.txt @@ -0,0 +1,8 @@ +# General Plugin Info do not edit +base translation +author Andreas Gohr +email andi@splitbrain.org +date 2016-07-18 +name Translation Plugin +desc Supports the easy setup of a multi-language wiki. +url http://www.dokuwiki.org/plugin:translation diff --git a/sources/lib/plugins/translation/print.css b/sources/lib/plugins/translation/print.css new file mode 100755 index 0000000..c2fd328 --- /dev/null +++ b/sources/lib/plugins/translation/print.css @@ -0,0 +1 @@ +.dokuwiki div.plugin_translation { display: none } diff --git a/sources/lib/plugins/translation/script.js b/sources/lib/plugins/translation/script.js new file mode 100755 index 0000000..819b80e --- /dev/null +++ b/sources/lib/plugins/translation/script.js @@ -0,0 +1,20 @@ +/** + * Remove go button from translation dropdown + */ +jQuery(function(){ + var $frm = jQuery('#translation__dropdown'); + if(!$frm.length) return; + $frm.find('input[name=go]').hide(); + $frm.find('select[name=id]').change(function(){ + var id = jQuery(this).val(); + // this should hopefully detect rewriting good enough: + var action = $frm.attr('action'); + if(action.substr(action.length-1) == '/'){ + var link = action + id; + }else{ + var link = action + '?id=' + id; + } + + window.location.href= link; + }); +}); diff --git a/sources/lib/plugins/translation/style.css b/sources/lib/plugins/translation/style.css new file mode 100755 index 0000000..14e54eb --- /dev/null +++ b/sources/lib/plugins/translation/style.css @@ -0,0 +1,97 @@ +.dokuwiki div.plugin_translation { + float: right; + font-size: 95%; + padding-right: 0.1em; + margin : 0.0em 0 0.3em 0; + text-align: right; +} + +/* List */ + +.dokuwiki div.plugin_translation ul { + padding: 0; + margin: 0; +} +.dokuwiki div.plugin_translation ul li { + float: left; + list-style-type: none; + padding: 0; + margin: 0.2em 0 0 0; +} +.dokuwiki div.plugin_translation ul li img { + margin: -0.1em 0.2em; +} + +.dokuwiki div.plugin_translation ul li a.wikilink1:link, +.dokuwiki div.plugin_translation ul li a.wikilink1:hover, +.dokuwiki div.plugin_translation ul li a.wikilink1:active, +.dokuwiki div.plugin_translation ul li a.wikilink1:visited { + background-color: #000080; + color: #fff; + text-decoration:none; + padding: 0 0.2em; + margin: 0.1em 0.2em; + border: none !important; +} + +.dokuwiki div.plugin_translation ul li a.wikilink2:link, +.dokuwiki div.plugin_translation ul li a.wikilink2:hover, +.dokuwiki div.plugin_translation ul li a.wikilink2:active, +.dokuwiki div.plugin_translation ul li a.wikilink2:visited { + background-color: #808080; + color: #fff; + text-decoration:none; + padding: 0 0.2em; + margin: 0.1em 0.2em; + border: none !important; +} + + +/* Dropdown */ + +.dokuwiki div.plugin_translation select, +.dokuwiki div.plugin_translation input { + border: none; + background-color: #ccc; +} + +.dokuwiki div.plugin_translation option.flag { + padding-left: 18px; + background-repeat: no-repeat; + background-position: left center; +} + +.dokuwiki div.plugin_translation select.wikilink1, +.dokuwiki div.plugin_translation option.wikilink1 { + color: #000080; + text-align: center; +} + +.dokuwiki div.plugin_translation select.wikilink2, +.dokuwiki div.plugin_translation option.wikilink2 { + color: #808080; + text-align: center; +} + +/* flags for non-existing pages */ +.dokuwiki div.plugin_translation img.wikilink2, +.dokuwiki div.plugin_translation .wikilink2 img { + opacity: 0.5; +} + +table#outdated_translations td { + padding-left: 3px; + padding-right: 3px; +} + +table#outdated_translations td.missing { + background-color: #ff6666; +} + +table#outdated_translations td.outdated { + background-color: #ffff66; +} + +table#outdated_translations td.current { + background-color: #00CC00; +} diff --git a/sources/lib/plugins/translation/syntax/notrans.php b/sources/lib/plugins/translation/syntax/notrans.php new file mode 100755 index 0000000..b8cb9cd --- /dev/null +++ b/sources/lib/plugins/translation/syntax/notrans.php @@ -0,0 +1,73 @@ + + */ +// must be run within Dokuwiki +if(!defined('DOKU_INC')) die(); + +class syntax_plugin_translation_notrans extends DokuWiki_Syntax_Plugin { + + /** + * for th helper plugin + */ + var $hlp = null; + + /** + * Constructor. Load helper plugin + */ + function __construct(){ + $this->hlp =& plugin_load('helper', 'translation'); + } + + /** + * What kind of syntax are we? + */ + function getType(){ + return 'substition'; + } + + /** + * Where to sort in? + */ + function getSort(){ + return 155; + } + + + /** + * Connect pattern to lexer + */ + function connectTo($mode) { + $this->Lexer->addSpecialPattern('~~NOTRANS~~',$mode,'plugin_translation_notrans'); + } + + + /** + * Handle the match + */ + function handle($match, $state, $pos, Doku_Handler $handler){ + return array('notrans'); + } + + /** + * Create output + */ + function render($format, Doku_Renderer $renderer, $data) { + // store info in metadata + if($format == 'metadata'){ + $renderer->meta['plugin']['translation']['notrans'] = true; + } + return false; + } + + // for backward compatibility + function _showTranslations(){ + return $this->hlp->showTranslations(); + } + +} + +//Setup VIM: ex: et ts=4 enc=utf-8 : diff --git a/sources/lib/plugins/translation/syntax/trans.php b/sources/lib/plugins/translation/syntax/trans.php new file mode 100755 index 0000000..bbd4645 --- /dev/null +++ b/sources/lib/plugins/translation/syntax/trans.php @@ -0,0 +1,57 @@ + + */ +// must be run within Dokuwiki +if(!defined('DOKU_INC')) die(); + +class syntax_plugin_translation_trans extends DokuWiki_Syntax_Plugin { + /** + * What kind of syntax are we? + */ + function getType() { + return 'substition'; + } + + /** + * Where to sort in? + */ + function getSort() { + return 155; + } + + /** + * Connect pattern to lexer + */ + function connectTo($mode) { + $this->Lexer->addSpecialPattern('~~TRANS~~', $mode, 'plugin_translation_trans'); + } + + /** + * Handle the match + */ + function handle($match, $state, $pos, Doku_Handler $handler) { + return array(); + } + + /** + * Create output + */ + function render($format, Doku_Renderer $renderer, $data) { + if($format != 'xhtml') return false; + + // disable caching + $renderer->nocache(); + + /** @var helper_plugin_translation $hlp */ + $hlp = plugin_load('helper', 'translation'); + $renderer->doc .= $hlp->showTranslations(); + return true; + } + +} + +//Setup VIM: ex: et ts=4 enc=utf-8 : diff --git a/sources/lib/plugins/upgrade/README b/sources/lib/plugins/upgrade/README new file mode 100755 index 0000000..079d627 --- /dev/null +++ b/sources/lib/plugins/upgrade/README @@ -0,0 +1,25 @@ +upgrade Plugin for DokuWiki + +All documentation for this plugin can be found at +http://www.dokuwiki.org/plugin:upgrade + +If you install this plugin manually, make sure it is installed in +lib/plugins/upgrade/ - if the folder is called different it +will not work! + +Please refer to http://www.dokuwiki.org/plugins for additional info +on how to install plugins in DokuWiki. + +---- +Copyright (C) Andreas Gohr + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; version 2 of the License + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +See the COPYING file in your DokuWiki folder for details diff --git a/sources/lib/plugins/upgrade/VerboseTarLib.class.php b/sources/lib/plugins/upgrade/VerboseTarLib.class.php new file mode 100755 index 0000000..74103b1 --- /dev/null +++ b/sources/lib/plugins/upgrade/VerboseTarLib.class.php @@ -0,0 +1,599 @@ + + * @author Bouchon (Maxg) + * @license GPL 2 + */ +class VerboseTar { + + const COMPRESS_AUTO = 0; + const COMPRESS_NONE = 1; + const COMPRESS_GZIP = 2; + const COMPRESS_BZIP = 3; + + protected $file = ''; + protected $comptype = self::COMPRESS_AUTO; + protected $fh; + protected $memory = ''; + protected $closed = true; + protected $writeaccess = false; + + /** + * Open an existing TAR file for reading + * + * @param string $file + * @param int $comptype + * @throws VerboseTarIOException + */ + public function open($file, $comptype = self::COMPRESS_AUTO) { + // determine compression + if($comptype == self::COMPRESS_AUTO) $comptype = $this->filetype($file); + $this->compressioncheck($comptype); + + $this->comptype = $comptype; + $this->file = $file; + + if($this->comptype === self::COMPRESS_GZIP) { + $this->fh = @gzopen($this->file, 'rb'); + } elseif($this->comptype === self::COMPRESS_BZIP) { + $this->fh = @bzopen($this->file, 'r'); + } else { + $this->fh = @fopen($this->file, 'rb'); + } + + if(!$this->fh) throw new VerboseTarIOException('Could not open file for reading: '.$this->file); + $this->closed = false; + } + + /** + * Read the contents of a TAR archive + * + * This function lists the files stored in the archive, and returns an indexed array of associative + * arrays containing for each file the following information: + * + * checksum Tar Checksum of the file + * filename The full name of the stored file (up to 100 c.) + * mode UNIX permissions in DECIMAL, not octal + * uid The Owner ID + * gid The Group ID + * size Uncompressed filesize + * mtime Timestamp of last modification + * typeflag Empty for files, set for folders + * link Is it a symlink? + * uname Owner name + * gname Group name + * + * The archive is closed afer reading the contents, because rewinding is not possible in bzip2 streams. + * Reopen the file with open() again if you want to do additional operations + */ + public function contents() { + if($this->closed || !$this->file) throw new VerboseTarIOException('Can not read from a closed archive'); + + $result = array(); + while($read = $this->readbytes(512)) { + $header = $this->parseHeader($read); + if(!is_array($header)) continue; + + $this->skipbytes(ceil($header['size'] / 512) * 512); + $result[] = $header; + } + + $this->close(); + return $result; + } + + /** + * Extract an existing TAR archive + * + * The $strip parameter allows you to strip a certain number of path components from the filenames + * found in the tar file, similar to the --strip-components feature of GNU tar. This is triggered when + * an integer is passed as $strip. + * Alternatively a fixed string prefix may be passed in $strip. If the filename matches this prefix, + * the prefix will be stripped. It is recommended to give prefixes with a trailing slash. + * + * By default this will extract all files found in the archive. You can restrict the output using the $include + * and $exclude parameter. Both expect a full regular expression (including delimiters and modifiers). If + * $include is set only files that match this expression will be extracted. Files that match the $exclude + * expression will never be extracted. Both parameters can be used in combination. Expressions are matched against + * stripped filenames as described above. + * + * The archive is closed afer reading the contents, because rewinding is not possible in bzip2 streams. + * Reopen the file with open() again if you want to do additional operations + * + * @param string $outdir the target directory for extracting + * @param int|string $strip either the number of path components or a fixed prefix to strip + * @param string $exclude a regular expression of files to exclude + * @param string $include a regular expression of files to include + * @throws VerboseTarIOException + * @return array + */ + function extract($outdir, $strip = '', $exclude = '', $include = '') { + if($this->closed || !$this->file) throw new VerboseTarIOException('Can not read from a closed archive'); + + $outdir = rtrim($outdir, '/'); + io_mkdir_p($outdir); + $striplen = strlen($strip); + + $extracted = array(); + + while($dat = $this->readbytes(512)) { + // read the file header + $header = $this->parseHeader($dat); + if(!is_array($header)) continue; + if(!$header['filename']) continue; + + // strip prefix + $filename = $this->cleanPath($header['filename']); + if(is_int($strip)) { + // if $strip is an integer we strip this many path components + $parts = explode('/', $filename); + if(!$header['typeflag']) { + $base = array_pop($parts); // keep filename itself + } else { + $base = ''; + } + $filename = join('/', array_slice($parts, $strip)); + if($base) $filename .= "/$base"; + } else { + // ifstrip is a string, we strip a prefix here + if(substr($filename, 0, $striplen) == $strip) $filename = substr($filename, $striplen); + } + + // check if this should be extracted + $extract = true; + if(!$filename) { + $extract = false; + } else { + if($include) { + if(preg_match($include, $filename)) { + $extract = true; + } else { + $extract = false; + } + } + if($exclude && preg_match($exclude, $filename)) { + $extract = false; + } + } + + // Now do the extraction (or not) + if($extract) { + $extracted[] = $header; + + $output = "$outdir/$filename"; + $directory = ($header['typeflag']) ? $output : dirname($output); + io_mkdir_p($directory); + + // print status + admin_plugin_upgrade::_say(hsc($filename)); + + // is this a file? + if(!$header['typeflag']) { + $fp = fopen($output, "wb"); + if(!$fp) throw new VerboseTarIOException('Could not open file for writing: '.$output); + + $size = floor($header['size'] / 512); + for($i = 0; $i < $size; $i++) { + fwrite($fp, $this->readbytes(512), 512); + } + if(($header['size'] % 512) != 0) fwrite($fp, $this->readbytes(512), $header['size'] % 512); + + fclose($fp); + touch($output, $header['mtime']); + chmod($output, $header['perm']); + } else { + $this->skipbytes(ceil($header['size'] / 512) * 512); // the size is usually 0 for directories + } + } else { + $this->skipbytes(ceil($header['size'] / 512) * 512); + } + } + + $this->close(); + return $extracted; + } + + /** + * Create a new TAR file + * + * If $file is empty, the tar file will be created in memory + * + * @param string $file + * @param int $comptype + * @param int $complevel + * @throws VerboseTarIOException + * @throws VerboseTarIllegalCompressionException + */ + public function create($file = '', $comptype = self::COMPRESS_AUTO, $complevel = 9) { + // determine compression + if($comptype == self::COMPRESS_AUTO) $comptype = $this->filetype($file); + $this->compressioncheck($comptype); + + $this->comptype = $comptype; + $this->file = $file; + $this->memory = ''; + $this->fh = 0; + + if($this->file) { + if($this->comptype === self::COMPRESS_GZIP) { + $this->fh = @gzopen($this->file, 'wb'.$complevel); + } elseif($this->comptype === self::COMPRESS_BZIP) { + $this->fh = @bzopen($this->file, 'w'); + } else { + $this->fh = @fopen($this->file, 'wb'); + } + + if(!$this->fh) throw new VerboseTarIOException('Could not open file for writing: '.$this->file); + } + $this->writeaccess = true; + $this->closed = false; + } + + /** + * Add a file to the current TAR archive using an existing file in the filesystem + * + * @todo handle directory adding + * @param string $file the original file + * @param string $name the name to use for the file in the archive + * @throws VerboseTarIOException + */ + public function addFile($file, $name = '') { + if($this->closed) throw new VerboseTarIOException('Archive has been closed, files can no longer be added'); + + if(!$name) $name = $file; + $name = $this->cleanPath($name); + + $fp = fopen($file, 'rb'); + if(!$fp) throw new VerboseTarIOException('Could not open file for reading: '.$file); + + // create file header and copy all stat info from the original file + clearstatcache(false, $file); + $stat = stat($file); + $this->writeFileHeader( + $name, + $stat[4], + $stat[5], + fileperms($file), + filesize($file), + filemtime($file) + ); + + while(!feof($fp)) { + $data = fread($fp, 512); + if($data === false) break; + if($data === '') break; + $packed = pack("a512", $data); + $this->writebytes($packed); + } + fclose($fp); + } + + /** + * Add a file to the current TAR archive using the given $data as content + * + * @param string $name + * @param string $data + * @param int $uid + * @param int $gid + * @param int $perm + * @param int $mtime + * @throws VerboseTarIOException + */ + public function addData($name, $data, $uid = 0, $gid = 0, $perm = 0666, $mtime = 0) { + if($this->closed) throw new VerboseTarIOException('Archive has been closed, files can no longer be added'); + + $name = $this->cleanPath($name); + $len = strlen($data); + + $this->writeFileHeader( + $name, + $uid, + $gid, + $perm, + $len, + ($mtime) ? $mtime : time() + ); + + for($s = 0; $s < $len; $s += 512) { + $this->writebytes(pack("a512", substr($data, $s, 512))); + } + } + + /** + * Add the closing footer to the archive if in write mode, close all file handles + * + * After a call to this function no more data can be added to the archive, for + * read access no reading is allowed anymore + * + * "Physically, an archive consists of a series of file entries terminated by an end-of-archive entry, which + * consists of two 512 blocks of zero bytes" + * + * @link http://www.gnu.org/software/tar/manual/html_chapter/tar_8.html#SEC134 + */ + public function close() { + if($this->closed) return; // we did this already + + // write footer + if($this->writeaccess) { + $this->writebytes(pack("a512", "")); + $this->writebytes(pack("a512", "")); + } + + // close file handles + if($this->file) { + if($this->comptype === self::COMPRESS_GZIP) { + gzclose($this->fh); + } elseif($this->comptype === self::COMPRESS_BZIP) { + bzclose($this->fh); + } else { + fclose($this->fh); + } + + $this->file = ''; + $this->fh = 0; + } + + $this->closed = true; + } + + /** + * Returns the created in-memory archive data + * + * This implicitly calls close() on the Archive + */ + public function getArchive($comptype = self::COMPRESS_AUTO, $complevel = 9) { + $this->close(); + + if($comptype === self::COMPRESS_AUTO) $comptype = $this->comptype; + $this->compressioncheck($comptype); + + if($comptype === self::COMPRESS_GZIP) return gzcompress($this->memory, $complevel); + if($comptype === self::COMPRESS_BZIP) return bzcompress($this->memory); + return $this->memory; + } + + /** + * Save the created in-memory archive data + * + * Note: It more memory effective to specify the filename in the create() function and + * let the library work on the new file directly. + * + * @param $file + * @param int $comptype + * @param int $complevel + * @throws VerboseTarIOException + */ + public function save($file, $comptype = self::COMPRESS_AUTO, $complevel = 9) { + if($comptype === self::COMPRESS_AUTO) $comptype = $this->filetype($file); + + if(!file_put_contents($file, $this->getArchive($comptype, $complevel))) { + throw new VerboseTarIOException('Could not write to file: '.$file); + } + } + + /** + * Read from the open file pointer + * + * @param int $length bytes to read + * @return string + */ + protected function readbytes($length) { + if($this->comptype === self::COMPRESS_GZIP) { + return @gzread($this->fh, $length); + } elseif($this->comptype === self::COMPRESS_BZIP) { + return @bzread($this->fh, $length); + } else { + return @fread($this->fh, $length); + } + } + + /** + * Write to the open filepointer or memory + * + * @param string $data + * @throws VerboseTarIOException + * @return int number of bytes written + */ + protected function writebytes($data) { + if(!$this->file) { + $this->memory .= $data; + $written = strlen($data); + } elseif($this->comptype === self::COMPRESS_GZIP) { + $written = @gzwrite($this->fh, $data); + } elseif($this->comptype === self::COMPRESS_BZIP) { + $written = @bzwrite($this->fh, $data); + } else { + $written = @fwrite($this->fh, $data); + } + if($written === false) throw new VerboseTarIOException('Failed to write to archive stream'); + return $written; + } + + /** + * Skip forward in the open file pointer + * + * This is basically a wrapper around seek() (and a workaround for bzip2) + * + * @param int $bytes seek to this position + */ + function skipbytes($bytes) { + if($this->comptype === self::COMPRESS_GZIP) { + @gzseek($this->fh, $bytes, SEEK_CUR); + } elseif($this->comptype === self::COMPRESS_BZIP) { + // there is no seek in bzip2, we simply read on + @bzread($this->fh, $bytes); + } else { + @fseek($this->fh, $bytes, SEEK_CUR); + } + } + + /** + * Write a file header + * + * @param string $name + * @param int $uid + * @param int $gid + * @param int $perm + * @param int $size + * @param int $mtime + * @param string $typeflag Set to '5' for directories + */ + protected function writeFileHeader($name, $uid, $gid, $perm, $size, $mtime, $typeflag = '') { + // handle filename length restrictions + $prefix = ''; + $namelen = strlen($name); + if($namelen > 100) { + $file = basename($name); + $dir = dirname($name); + if(strlen($file) > 100 || strlen($dir) > 155) { + // we're still too large, let's use GNU longlink + $this->writeFileHeader('././@LongLink', 0, 0, 0, $namelen, 0, 'L'); + for($s = 0; $s < $namelen; $s += 512) { + $this->writebytes(pack("a512", substr($name, $s, 512))); + } + $name = substr($name, 0, 100); // cut off name + } else { + // we're fine when splitting, use POSIX ustar + $prefix = $dir; + $name = $file; + } + } + + // values are needed in octal + $uid = sprintf("%6s ", decoct($uid)); + $gid = sprintf("%6s ", decoct($gid)); + $perm = sprintf("%6s ", decoct($perm)); + $size = sprintf("%11s ", decoct($size)); + $mtime = sprintf("%11s", decoct($mtime)); + + $data_first = pack("a100a8a8a8a12A12", $name, $perm, $uid, $gid, $size, $mtime); + $data_last = pack("a1a100a6a2a32a32a8a8a155a12", $typeflag, '', 'ustar', '', '', '', '', '', $prefix, ""); + + for($i = 0, $chks = 0; $i < 148; $i++) + $chks += ord($data_first[$i]); + + for($i = 156, $chks += 256, $j = 0; $i < 512; $i++, $j++) + $chks += ord($data_last[$j]); + + $this->writebytes($data_first); + + $chks = pack("a8", sprintf("%6s ", decoct($chks))); + $this->writebytes($chks.$data_last); + } + + /** + * Decode the given tar file header + * + * @param string $block a 512 byte block containign the header data + * @return array|bool + */ + protected function parseHeader($block) { + if(!$block || strlen($block) != 512) return false; + + for($i = 0, $chks = 0; $i < 148; $i++) + $chks += ord($block[$i]); + + for($i = 156, $chks += 256; $i < 512; $i++) + $chks += ord($block[$i]); + + $header = @unpack("a100filename/a8perm/a8uid/a8gid/a12size/a12mtime/a8checksum/a1typeflag/a100link/a6magic/a2version/a32uname/a32gname/a8devmajor/a8devminor/a155prefix", $block); + if(!$header) return false; + + $return['checksum'] = OctDec(trim($header['checksum'])); + if($return['checksum'] != $chks) return false; + + $return['filename'] = trim($header['filename']); + $return['perm'] = OctDec(trim($header['perm'])); + $return['uid'] = OctDec(trim($header['uid'])); + $return['gid'] = OctDec(trim($header['gid'])); + $return['size'] = OctDec(trim($header['size'])); + $return['mtime'] = OctDec(trim($header['mtime'])); + $return['typeflag'] = $header['typeflag']; + $return['link'] = trim($header['link']); + $return['uname'] = trim($header['uname']); + $return['gname'] = trim($header['gname']); + + // Handle ustar Posix compliant path prefixes + if(trim($header['prefix'])) $return['filename'] = trim($header['prefix']).'/'.$return['filename']; + + // Handle Long-Link entries from GNU Tar + if($return['typeflag'] == 'L') { + // following data block(s) is the filename + $filename = trim($this->readbytes(ceil($header['size'] / 512) * 512)); + // next block is the real header + $block = $this->readbytes(512); + $return = $this->parseHeader($block); + // overwrite the filename + $return['filename'] = $filename; + } + + return $return; + } + + /** + * Cleans up a path and removes relative parts, also strips leading slashes + * + * @param string $p_dir + * @return string + */ + public function cleanPath($path) { + $path=explode('/', $path); + $newpath=array(); + foreach($path as $p) { + if ($p === '' || $p === '.') continue; + if ($p==='..') { + array_pop($newpath); + continue; + } + array_push($newpath, $p); + } + return trim(implode('/', $newpath), '/'); + } + + /** + * Checks if the given compression type is available and throws an exception if not + * + * @param $comptype + * @throws VerboseTarIllegalCompressionException + */ + protected function compressioncheck($comptype) { + if($comptype === self::COMPRESS_GZIP && !function_exists('gzopen')) { + throw new VerboseTarIllegalCompressionException('No gzip support available'); + } + + if($comptype === self::COMPRESS_BZIP && !function_exists('bzopen')) { + throw new VerboseTarIllegalCompressionException('No bzip2 support available'); + } + } + + /** + * Guesses the wanted compression from the given filename extension + * + * You don't need to call this yourself. It's used when you pass self::COMPRESS_AUTO somewhere + * + * @param string $file + * @return int + */ + public function filetype($file) { + $file = strtolower($file); + if(substr($file, -3) == '.gz' || substr($file, -4) == '.tgz') { + $comptype = self::COMPRESS_GZIP; + } elseif(substr($file, -4) == '.bz2' || substr($file, -4) == '.tbz') { + $comptype = self::COMPRESS_BZIP; + } else { + $comptype = self::COMPRESS_NONE; + } + return $comptype; + } +} + +class VerboseTarIOException extends Exception { +} + +class VerboseTarIllegalCompressionException extends Exception { +} diff --git a/sources/lib/plugins/upgrade/admin.php b/sources/lib/plugins/upgrade/admin.php new file mode 100755 index 0000000..e5681c1 --- /dev/null +++ b/sources/lib/plugins/upgrade/admin.php @@ -0,0 +1,508 @@ + + */ + +// must be run within Dokuwiki +if(!defined('DOKU_INC')) die(); +if(!defined('DOKU_PLUGIN')) define('DOKU_PLUGIN', DOKU_INC.'lib/plugins/'); +require_once DOKU_PLUGIN.'admin.php'; +require_once DOKU_PLUGIN.'upgrade/VerboseTarLib.class.php'; + +class admin_plugin_upgrade extends DokuWiki_Admin_Plugin { + private $tgzurl; + private $tgzfile; + private $tgzdir; + private $tgzversion; + private $pluginversion; + + protected $haderrors = false; + + public function __construct() { + global $conf; + + $branch = 'stable'; + + $this->tgzurl = "https://github.com/splitbrain/dokuwiki/archive/$branch.tar.gz"; + $this->tgzfile = $conf['tmpdir'].'/dokuwiki-upgrade.tgz'; + $this->tgzdir = $conf['tmpdir'].'/dokuwiki-upgrade/'; + $this->tgzversion = "https://raw.githubusercontent.com/splitbrain/dokuwiki/$branch/VERSION"; + $this->pluginversion = "https://raw.githubusercontent.com/splitbrain/dokuwiki-plugin-upgrade/master/plugin.info.txt"; + } + + public function getMenuSort() { + return 555; + } + + public function handle() { + if($_REQUEST['step'] && !checkSecurityToken()) { + unset($_REQUEST['step']); + } + } + + public function html() { + $abrt = false; + $next = false; + + echo '

    '.$this->getLang('menu').'

    '; + + global $conf; + if($conf['safemodehack']) { + $abrt = false; + $next = false; + echo $this->locale_xhtml('safemode'); + return; + } + + $this->_say('
    '); + // enable auto scroll + ?> + + _stepit($abrt, $next); + + // disable auto scroll + ?> + + _say('
    '); + + $careful = ''; + if($this->haderrors) { + echo '
    '.$this->getLang('careful').'
    '; + $careful = 'careful'; + } + + $action = script(); + echo '
    '; + echo ''; + echo ''; + echo ''; + if($next) echo ''; + if($abrt) echo ''; + echo '
    '; + + $this->_progress($next); + } + + /** + * Display a progress bar of all steps + * + * @param string $next the next step + */ + private function _progress($next) { + $steps = array('version', 'download', 'unpack', 'check', 'upgrade'); + $active = true; + $count = 0; + + echo '
      '; + foreach($steps as $step) { + $count++; + if($step == $next) $active = false; + if($active) { + echo '
    1. '; + echo ''; + } else { + echo '
    2. '; + echo ''.$count.''; + } + + echo ''.$this->getLang('step_'.$step).''; + echo '
    3. '; + } + echo '
    '; + } + + /** + * Decides the current step and executes it + * + * @param bool $abrt + * @param bool $next + */ + private function _stepit(&$abrt, &$next) { + + if(isset($_REQUEST['step']) && is_array($_REQUEST['step'])) { + $step = array_shift(array_keys($_REQUEST['step'])); + } else { + $step = ''; + } + + if($step == 'cancel' || $step == 'done') { + # cleanup + @unlink($this->tgzfile); + $this->_rdel($this->tgzdir); + if($step == 'cancel') $step = ''; + } + + if($step) { + $abrt = true; + $next = false; + if($step == 'version') { + $this->_step_version(); + $next = 'download'; + } elseif ($step == 'done') { + $this->_step_done(); + $next = ''; + $abrt = ''; + } elseif(!file_exists($this->tgzfile)) { + if($this->_step_download()) $next = 'unpack'; + } elseif(!is_dir($this->tgzdir)) { + if($this->_step_unpack()) $next = 'check'; + } elseif($step != 'upgrade') { + if($this->_step_check()) $next = 'upgrade'; + } elseif($step == 'upgrade') { + if($this->_step_copy()) { + $next = 'done'; + $abrt = ''; + } + } else { + echo 'uhm. what happened? where am I? This should not happen'; + } + } else { + # first time run, show intro + echo $this->locale_xhtml('step0'); + $abrt = false; + $next = 'version'; + } + } + + /** + * Output the given arguments using vsprintf and flush buffers + */ + public function _say() { + $args = func_get_args(); + echo ' '; + echo vsprintf(array_shift($args)."
    \n", $args); + flush(); + ob_flush(); + } + + /** + * Print a warning using the given arguments with vsprintf and flush buffers + */ + public function _warn() { + $this->haderrors = true; + + $args = func_get_args(); + echo '! '; + echo vsprintf(array_shift($args)."
    \n", $args); + flush(); + ob_flush(); + } + + /** + * Recursive delete + * + * @author Jon Hassall + * @link http://de.php.net/manual/en/function.unlink.php#87045 + */ + private function _rdel($dir) { + if(!$dh = @opendir($dir)) { + return false; + } + while(false !== ($obj = readdir($dh))) { + if($obj == '.' || $obj == '..') continue; + + if(!@unlink($dir.'/'.$obj)) { + $this->_rdel($dir.'/'.$obj); + } + } + closedir($dh); + return @rmdir($dir); + } + + /** + * Check various versions + * + * @return bool + */ + private function _step_version() { + $ok = true; + + // we need SSL - only newer HTTPClients check that themselves + if(!in_array('ssl', stream_get_transports())) { + $this->_warn($this->getLang('vs_ssl')); + $ok = false; + } + + // get the available version + $http = new DokuHTTPClient(); + $tgzversion = $http->get($this->tgzversion); + if(!$tgzversion) { + $this->_warn($this->getLang('vs_tgzno').' '.hsc($http->error)); + $ok = false; + } + if(!preg_match('/(^| )(\d\d\d\d-\d\d-\d\d[a-z]*)( |$)/i', $tgzversion, $m)) { + $this->_warn($this->getLang('vs_tgzno')); + $ok = false; + $tgzversionnum = 0; + } else { + $tgzversionnum = $m[2]; + $this->_say($this->getLang('vs_tgz'), $tgzversion); + } + + // get the current version + $version = getVersion(); + if(!preg_match('/(^| )(\d\d\d\d-\d\d-\d\d[a-z]*)( |$)/i', $version, $m)) { + $versionnum = 0; + } else { + $versionnum = $m[2]; + } + $this->_say($this->getLang('vs_local'), $version); + + // compare versions + if(!$versionnum) { + $this->_warn($this->getLang('vs_localno')); + $ok = false; + } else if($tgzversionnum) { + if($tgzversionnum < $versionnum) { + $this->_warn($this->getLang('vs_newer')); + $ok = false; + } elseif($tgzversionnum == $versionnum) { + $this->_warn($this->getLang('vs_same')); + $ok = false; + } + } + + // check plugin version + $pluginversion = $http->get($this->pluginversion); + if($pluginversion) { + $plugininfo = linesToHash(explode("\n", $pluginversion)); + $myinfo = $this->getInfo(); + if($plugininfo['date'] > $myinfo['date']) { + $this->_warn($this->getLang('vs_plugin'), $plugininfo['date']); + $ok = false; + } + } + + // check if PHP is up to date + $minphp = '5.3.3'; + if(version_compare(phpversion(), $minphp, '<')) { + $this->_warn($this->getLang('vs_php'), $minphp, phpversion()); + $ok = false; + } + + return $ok; + } + + /** + * Redirect to the start page + */ + private function _step_done() { + echo $this->getLang('finish'); + echo ""; + } + + /** + * Download the tarball + * + * @return bool + */ + private function _step_download() { + $this->_say($this->getLang('dl_from'), $this->tgzurl); + + @set_time_limit(300); + @ignore_user_abort(); + + $http = new DokuHTTPClient(); + $http->timeout = 300; + $data = $http->get($this->tgzurl); + + if(!$data) { + $this->_warn($http->error); + $this->_warn($this->getLang('dl_fail')); + return false; + } + + if(!io_saveFile($this->tgzfile, $data)) { + $this->_warn($this->getLang('dl_fail')); + return false; + } + + $this->_say($this->getLang('dl_done'), filesize_h(strlen($data))); + + return true; + } + + /** + * Unpack the tarball + * + * @return bool + */ + private function _step_unpack() { + $this->_say(''.$this->getLang('pk_extract').''); + + @set_time_limit(300); + @ignore_user_abort(); + + try { + $tar = new VerboseTar(); + $tar->open($this->tgzfile); + $tar->extract($this->tgzdir, 1); + $tar->close(); + } catch (Exception $e) { + $this->_warn($e->getMessage()); + $this->_warn($this->getLang('pk_fail')); + return false; + } + + $this->_say($this->getLang('pk_done')); + + $this->_say( + $this->getLang('pk_version'), + hsc(file_get_contents($this->tgzdir.'/VERSION')), + getVersion() + ); + return true; + } + + /** + * Check permissions of files to change + * + * @return bool + */ + private function _step_check() { + $this->_say($this->getLang('ck_start')); + $ok = $this->_traverse('', true); + if($ok) { + $this->_say(''.$this->getLang('ck_done').''); + } else { + $this->_warn(''.$this->getLang('ck_fail').''); + } + return $ok; + } + + /** + * Copy over new files + * + * @return bool + */ + private function _step_copy() { + $this->_say($this->getLang('cp_start')); + $ok = $this->_traverse('', false); + if($ok) { + $this->_say(''.$this->getLang('cp_done').''); + $this->_rmold(); + $this->_say(''.$this->getLang('finish').''); + } else { + $this->_warn(''.$this->getLang('cp_fail').''); + } + return $ok; + } + + /** + * Delete outdated files + */ + private function _rmold() { + global $conf; + + $list = file($this->tgzdir.'data/deleted.files'); + foreach($list as $line) { + $line = trim(preg_replace('/#.*$/', '', $line)); + if(!$line) continue; + $file = DOKU_INC.$line; + if(!file_exists($file)) continue; + if((is_dir($file) && $this->_rdel($file)) || + @unlink($file) + ) { + $this->_say($this->getLang('rm_done'), hsc($line)); + } else { + $this->_warn($this->getLang('rm_fail'), hsc($line)); + } + } + // delete install + @unlink(DOKU_INC.'install.php'); + + // make sure update message will be gone + @touch(DOKU_INC.'doku.php'); + @unlink($conf['cachedir'].'/messages.txt'); + } + + /** + * Traverse over the given dir and compare it to the DokuWiki dir + * + * Checks what files need an update, tests for writability and copies + * + * @param string $dir + * @param bool $dryrun do not copy but only check permissions + * @return bool + */ + private function _traverse($dir, $dryrun) { + $base = $this->tgzdir; + $ok = true; + + $dh = @opendir($base.'/'.$dir); + if(!$dh) return false; + while(($file = readdir($dh)) !== false) { + if($file == '.' || $file == '..') continue; + $from = "$base/$dir/$file"; + $to = DOKU_INC."$dir/$file"; + + if(is_dir($from)) { + if($dryrun) { + // just check for writability + if(!is_dir($to)) { + if(is_dir(dirname($to)) && !is_writable(dirname($to))) { + $this->_warn(''.$this->getLang('tv_noperm').'', hsc("$dir/$file")); + $ok = false; + } + } + } + + // recursion + if(!$this->_traverse("$dir/$file", $dryrun)) { + $ok = false; + } + } else { + $fmd5 = md5(@file_get_contents($from)); + $tmd5 = md5(@file_get_contents($to)); + if($fmd5 != $tmd5 || !file_exists($to)) { + if($dryrun) { + // just check for writability + if((file_exists($to) && !is_writable($to)) || + (!file_exists($to) && is_dir(dirname($to)) && !is_writable(dirname($to))) + ) { + + $this->_warn(''.$this->getLang('tv_noperm').'', hsc("$dir/$file")); + $ok = false; + } else { + $this->_say($this->getLang('tv_upd'), hsc("$dir/$file")); + } + } else { + // check dir + if(io_mkdir_p(dirname($to))) { + // copy + if(!copy($from, $to)) { + $this->_warn(''.$this->getLang('tv_nocopy').'', hsc("$dir/$file")); + $ok = false; + } else { + $this->_say($this->getLang('tv_done'), hsc("$dir/$file")); + } + } else { + $this->_warn(''.$this->getLang('tv_nodir').'', hsc("$dir")); + $ok = false; + } + } + } + } + } + closedir($dh); + return $ok; + } +} + +// vim:ts=4:sw=4:et:enc=utf-8: diff --git a/sources/lib/plugins/upgrade/lang/cs/lang.php b/sources/lib/plugins/upgrade/lang/cs/lang.php new file mode 100755 index 0000000..6a27715 --- /dev/null +++ b/sources/lib/plugins/upgrade/lang/cs/lang.php @@ -0,0 +1,46 @@ + + */ +$lang['menu'] = 'Wiki Upgrade'; +$lang['vs_php'] = 'Nová vydání DokuWiki potřebují PHP v minimální verzi %s, ale momentálně běží %s. Měli byste aktualizovat verzi PHP než budete pokračovat!'; +$lang['vs_tgzno'] = 'Nelze zjistit nejnovější verzi DokuWiki.'; +$lang['vs_tgz'] = 'DokuWiki %s je dostupná ke stažení.'; +$lang['vs_local'] = 'Momentálně používáte DokuWiki %s.'; +$lang['vs_localno'] = 'Není jasné jaká je vaše momentální verze, je doporučena manuální aktualizace.'; +$lang['vs_newer'] = 'Vypadá to, že běžící DokuWiki je ještě novější, než poslední dostupná stabilní verze. Aktualizace není doporučena.'; +$lang['vs_same'] = 'Vaše běžící DokuWiki je již v aktuální verzi. Není třeba aktualizovat.'; +$lang['vs_plugin'] = 'Je dostupný novější zásuvný modul pro upgrade (%s). Než budete pokračovat, tak byste ho měli aktualizovat.'; +$lang['vs_ssl'] = 'Vypadá to, že používané PHP nepodporuje SSL proudy, stahování potřebných dat nejspíš selže. Aktualizujte místo toho ručně.'; +$lang['dl_from'] = 'Stahování archivu z %s...'; +$lang['dl_fail'] = 'Stahování selhalo.'; +$lang['dl_done'] = 'Stahování dokončeno (%s).'; +$lang['pk_extract'] = 'Rozbalování archivu...'; +$lang['pk_fail'] = 'Rozbalování selhalo.'; +$lang['pk_done'] = 'Rozbalování dokončeno.'; +$lang['pk_version'] = 'DokuWiki %s je připravena k instalaci (Momentálně používáte %s).'; +$lang['ck_start'] = 'Ověřování práv souborů...'; +$lang['ck_done'] = 'Do všech souborů lze zapisovat. Je možné aktualizovat.'; +$lang['ck_fail'] = 'Do některých souborů nelze zapisovat. Automatická aktualizace není možná.'; +$lang['cp_start'] = 'Aktualizace souborů...'; +$lang['cp_done'] = 'Všechny soubory aktualizovány.'; +$lang['cp_fail'] = 'Uff. Něco se nezdařilo. Radši to ověřte ručně.'; +$lang['tv_noperm'] = '%s není zapisovatelný!'; +$lang['tv_upd'] = '%s bude aktualizován.'; +$lang['tv_nocopy'] = 'Nelze zkopírovat soubor %s!'; +$lang['tv_nodir'] = 'Nelze vytvořit adresář %s!'; +$lang['tv_done'] = 'aktualizován %s'; +$lang['rm_done'] = 'Zastaralý %s smazán.'; +$lang['rm_fail'] = 'Nelze smazat zastaralý %s. Je třeba smazat ručně!'; +$lang['finish'] = 'Aktualizace proběhla. Užijte si svou novou DokuWiki'; +$lang['btn_continue'] = 'Pokračovat'; +$lang['btn_abort'] = 'Ukončit'; +$lang['step_version'] = 'Zkontrolovat'; +$lang['step_download'] = 'Stáhnout'; +$lang['step_unpack'] = 'Rozbalit'; +$lang['step_check'] = 'Ověřit'; +$lang['step_upgrade'] = 'Instalovat'; +$lang['careful'] = 'Došlo k chybám výše! Nepokračujte!'; diff --git a/sources/lib/plugins/upgrade/lang/cs/safemode.txt b/sources/lib/plugins/upgrade/lang/cs/safemode.txt new file mode 100755 index 0000000..0a00751 --- /dev/null +++ b/sources/lib/plugins/upgrade/lang/cs/safemode.txt @@ -0,0 +1 @@ +Tato wiki je nakonfigurována pro použití safemode hacku. Za těchto podmínek nelze provést bezpečnou automatickou aktualizaci. Aktualizujte prosím [[doku>install:upgrade|svou wiki ručně]]. \ No newline at end of file diff --git a/sources/lib/plugins/upgrade/lang/cs/step0.txt b/sources/lib/plugins/upgrade/lang/cs/step0.txt new file mode 100755 index 0000000..cab46f8 --- /dev/null +++ b/sources/lib/plugins/upgrade/lang/cs/step0.txt @@ -0,0 +1,7 @@ +Tento zásuvný modul automaticky aktualizuje vaši wiki na nejnovější dostupnou verzi DokuWiki. Než budete pokračovat, měli byste si přečíst [[doku>changes|Changelog]] a zkontrolovat, jestli jsou třeba provést nějaké dodatečné kroky před nebo po aktualizaci. + +Pro povolení automatické aktualizace je třeba zajistit PHP procesu zapisovací práva do souborů DokuWiki. Zásuvný modul ověří dostupnost potřebných oprávnění před spuštěním aktualizace. + +Tento modul nebude aktualizovat nainstalované šablony ani ostatní zásuvné moduly. + +Před spuštěním se doporučuje vytvoření zálohy vaší wiki. \ No newline at end of file diff --git a/sources/lib/plugins/upgrade/lang/cy/lang.php b/sources/lib/plugins/upgrade/lang/cy/lang.php new file mode 100644 index 0000000..cc4e891 --- /dev/null +++ b/sources/lib/plugins/upgrade/lang/cy/lang.php @@ -0,0 +1,46 @@ + + */ +$lang['menu'] = 'Uwchraddiad Wici'; +$lang['vs_php'] = 'Mae angen PHP %s o leiaf ar ryddhadau newydd DocuWiki, ond rydych chi\'n rhedeg %s. Dylech chi uwchraddio eich fersiwn PHP cyn ceisio uwchraddio DocuWiki.'; +$lang['vs_tgzno'] = 'Methu darganfod fersiwn diweddaraf DocuWiki.'; +$lang['vs_tgz'] = 'Mae DocuWiki %s ar gael i\'w lawrlwytho.'; +$lang['vs_local'] = 'Rydych chi\'n rhedeg DokuWiki %s yn bresennol.'; +$lang['vs_localno'] = '\'Dyw e ddim yn glir pa mor hen yw\'r fersiwn rydych chi\'n rhedeg yn bresennol - awgrwymir uwchraddio gan law.'; +$lang['vs_newer'] = 'Mae\'n debyg bod eich DokuWiki cyfredol yn fwy newydd na\'r rhyddhad sefydlog diweddaraf. Ni awgrymir uwchraddio.'; +$lang['vs_same'] = 'Mae eich DokuWiki cyfredol yn fersiwn cyfoes. \'Sdim angen uwchraddio.'; +$lang['vs_plugin'] = 'Mae ategyn uwchraddio mwy diweddar ar gael (%s) - dylech chi uwchraddio\'r ategyn cyn parhau.'; +$lang['vs_ssl'] = 'Mae\'n debyg \'dyw\'ch PHP ddim yn cynnal ffrydiau SSL, felly bydd lawrlwytho\'r data sydd ei angen yn debygol o fethu. Uwchraddiwch gan law.'; +$lang['dl_from'] = 'Yn lawrlwytho\'r archif o %s'; +$lang['dl_fail'] = 'Methodd y lawrlwythiad.'; +$lang['dl_done'] = 'Lawlwythiad yn gyflawn (%s).'; +$lang['pk_extract'] = 'Yn datbacio\'r archif...'; +$lang['pk_fail'] = 'Methodd y datbacio.'; +$lang['pk_done'] = 'Datbacio\'n gyflawn.'; +$lang['pk_version'] = 'Mae DocuWiki %s yn barod i\'w arsefydlu. (Rydych chi\'n rhedeg %s yn bresennol).'; +$lang['ck_start'] = 'Yn gwirio hawliau ffeil...'; +$lang['ck_done'] = 'Mae modd ysgrifennu i bob ffeil. Yn barod i uwchraddio.'; +$lang['ck_fail'] = '\'Sdim modd ysgrifennu i rai ffeiliau. \'Dyw uwchraddio\'n awtomatig ddim yn bosib.'; +$lang['cp_start'] = 'Yn diweddaru ffeiliau...'; +$lang['cp_done'] = 'Diweddarwyd pob ffeil.'; +$lang['cp_fail'] = 'Wps. Aeth rhywbeth o le. Gwiriwch gan law.'; +$lang['tv_noperm'] = '\'Sdim modd ysgriffenu i %s!'; +$lang['tv_upd'] = 'Caiff %s ei ddiweddaru.'; +$lang['tv_nocopy'] = 'Methu â chopïo\'r ffeil %s!'; +$lang['tv_nodir'] = 'Methu â chreu\'r ffolder %s!'; +$lang['tv_done'] = 'diweddarwyd %s'; +$lang['rm_done'] = 'Dilëwyd %s (anghymeradwy).'; +$lang['rm_fail'] = 'Methu â dileu %s (anghymeradwy). Dilëwch gan law!'; +$lang['finish'] = 'Uwchraddiad yn gyflawn. Mwynhewch eich DokuWiki newydd'; +$lang['btn_continue'] = 'Parhau'; +$lang['btn_abort'] = 'Atal'; +$lang['step_version'] = 'Gwirio'; +$lang['step_download'] = 'Lawrlwytho'; +$lang['step_unpack'] = 'Datbacio'; +$lang['step_check'] = 'Gwireddu'; +$lang['step_upgrade'] = 'Arsefydlu'; +$lang['careful'] = 'Gwallau uchod! Peidiwch â pharhau!'; diff --git a/sources/lib/plugins/upgrade/lang/cy/safemode.txt b/sources/lib/plugins/upgrade/lang/cy/safemode.txt new file mode 100644 index 0000000..0918cd0 --- /dev/null +++ b/sources/lib/plugins/upgrade/lang/cy/safemode.txt @@ -0,0 +1 @@ +Mae'r wici hwn wedi'i ffurfweddu i ddefnyddio'r safemode hack. Yn anffodus, 'dyn ni ddim yn gallu uwchraddio'n awtomatig yn ddiogel o dan y amodau hyn. Bydd angen [[doku>install:upgrade|uwchraddio'ch wici gan law]]. \ No newline at end of file diff --git a/sources/lib/plugins/upgrade/lang/cy/step0.txt b/sources/lib/plugins/upgrade/lang/cy/step0.txt new file mode 100644 index 0000000..8a58d98 --- /dev/null +++ b/sources/lib/plugins/upgrade/lang/cy/step0.txt @@ -0,0 +1,7 @@ +Bydd yr ategyn hwn yn uwchraddio'ch wici yn awtomatig i'r fersiwn DocuWiki diweddaraf. Cyn parhau, dylech chi ddarllen y [[doku>changes|Changelog]] i wirio os oes camau ychwanegol sydd angen i chi berfformio cyn neu ar ôl uwchraddio. + +Er mwyn galluogi uwchraddio'n awtomatig, mae proses PHP angen hawliau ysgrifennu ar gyfer ffeiliau DokuWiki. Bydd yr ategyn yn gwirio'r hawliau ffeil angenrheidiol cyn dechrau'r broses uwchraddio. + +'Dyw'r ategyn hwn ddim yn uwchraddio unrhyw ategion neu dempledau sydd wedi'u harsefydlu. + +Rydyn ni'n awgrymu eich bod chi'n creu copi wrth gefn o'ch wiki cyn parhau. \ No newline at end of file diff --git a/sources/lib/plugins/upgrade/lang/da/lang.php b/sources/lib/plugins/upgrade/lang/da/lang.php new file mode 100755 index 0000000..1056187 --- /dev/null +++ b/sources/lib/plugins/upgrade/lang/da/lang.php @@ -0,0 +1,48 @@ + + * @author Søren Birk + * @author Jacob Palm + */ +$lang['menu'] = 'Wiki Opgradering'; +$lang['vs_php'] = 'Nye DokuWiki udgivelser kræver som minimum PHP %s, men du benytter i øjeblikket %s. Du bør opdatere din PHP-version, før du opgraderer!'; +$lang['vs_tgzno'] = 'Kunne ikke fastlægge den nyeste version af DokuWiki.'; +$lang['vs_tgz'] = 'DokuWiki %s er klar til download.'; +$lang['vs_local'] = 'Du benytter i øjeblikket DokuWiki %s.'; +$lang['vs_localno'] = 'Det er ikke klart, hvor gammel din nuværende version er. Manuel opgradering anbefales.'; +$lang['vs_newer'] = 'Det ser ud til at din nuværende DokuWiki er nyere end den nyeste stabile version. Opgradering anbefales ikke.'; +$lang['vs_same'] = 'Din nuværende DokuWiki er allerede ajourført. Det er ikke nødvendigt at opgradere.'; +$lang['vs_plugin'] = 'Der er et nyere opgraderingsplugin tilgængeligt (%s). Du bør opdatere dit plugin, før du fortsætter.'; +$lang['vs_ssl'] = 'Det ser ud til at dit PHP ikke supportere SSL streams - download af nødvendigt data vil højst sandsynligt fejle. Opgradér manuelt i stedet.'; +$lang['dl_from'] = 'Downloader arkiv fra %s...'; +$lang['dl_fail'] = 'Download fejlet'; +$lang['dl_done'] = 'Download færdig (%s).'; +$lang['pk_extract'] = 'Pakker arkiv ud...'; +$lang['pk_fail'] = 'Udpakning fejlet.'; +$lang['pk_done'] = 'Udpakning færdig.'; +$lang['pk_version'] = 'DokuWiki %s er klar til installation (Du benytter i øjeblikket %s).'; +$lang['ck_start'] = 'Kontrollerer filtilladelser'; +$lang['ck_done'] = 'Alle filer er skrivbare. Klar til at opgradere.'; +$lang['ck_fail'] = 'Nogle filer er ikke skrivbare. Automatisk opgradering er ikke muligt.'; +$lang['cp_start'] = 'Opdaterer filer...'; +$lang['cp_done'] = 'Alle filer opdateret.'; +$lang['cp_fail'] = 'Å-Åh. Noget gik galt. Du må hellere tjekke manuelt.'; +$lang['tv_noperm'] = '%s er ikke skrivbar!'; +$lang['tv_upd'] = '%s vil blive opdateret.'; +$lang['tv_nocopy'] = 'Kunne ikke kopiere filen %s!'; +$lang['tv_nodir'] = 'Kunne ikke oprette mappen %s!'; +$lang['tv_done'] = 'Opdaterede %s'; +$lang['rm_done'] = 'Forældet %s slettet.'; +$lang['rm_fail'] = 'Kunne ikke slette forældet %s. Slet venligst manuelt!'; +$lang['finish'] = 'Opgradering færdig. Nyd din nye DokuWiki'; +$lang['btn_continue'] = 'Fortsæt'; +$lang['btn_abort'] = 'Afbryd'; +$lang['step_version'] = 'Tjek'; +$lang['step_download'] = 'Download'; +$lang['step_unpack'] = 'Pak Ud'; +$lang['step_check'] = 'Verificér'; +$lang['step_upgrade'] = 'Installér'; +$lang['careful'] = 'Fejl i ovenstående! Du bør ikke fortsætte!'; diff --git a/sources/lib/plugins/upgrade/lang/da/safemode.txt b/sources/lib/plugins/upgrade/lang/da/safemode.txt new file mode 100755 index 0000000..8f6c1dd --- /dev/null +++ b/sources/lib/plugins/upgrade/lang/da/safemode.txt @@ -0,0 +1 @@ +Denne wiki er konfigureret til at benytte safemode hack'et. Vi kan desværre ikke opgradere wikien automatisk under disse forhold. Venligst [[doku>install:upgrade|opgradér din wiki manuelt]]. \ No newline at end of file diff --git a/sources/lib/plugins/upgrade/lang/da/step0.txt b/sources/lib/plugins/upgrade/lang/da/step0.txt new file mode 100755 index 0000000..a2745e7 --- /dev/null +++ b/sources/lib/plugins/upgrade/lang/da/step0.txt @@ -0,0 +1,7 @@ +Dette plugin vil automatisk opgradere din wiki til nyeste tilgængelige DokuWiki-version. Før du fortsætter, bør du læse [[doku>changes|Ændringsloggen]] for at kontrollere om der er yderligere punkter, som du skal udføre før eller efter opgraderingen. + +For at opgradere automatisk, skal PHP-processen have skriverettigheder til DokuWiki filerne. Plugin'et vil tjekke for nødvendige rettigheder, før opgraderingsprocessen startes. + +Dette plugin vil ikke opgradere installerede plugins eller skabeloner. + +Vi anbefaler at du opretter en backup af din wiki, før du fortsætter. \ No newline at end of file diff --git a/sources/lib/plugins/upgrade/lang/de-informal/lang.php b/sources/lib/plugins/upgrade/lang/de-informal/lang.php new file mode 100755 index 0000000..38242ef --- /dev/null +++ b/sources/lib/plugins/upgrade/lang/de-informal/lang.php @@ -0,0 +1,46 @@ + + * @author rnck + */ +$lang['menu'] = 'Wiki aktualisieren'; +$lang['vs_php'] = 'Neue DokuWiki Versionen benötigen mindestens PHP Version %s. Du verwendest PHP Version %s. Du solltest PHP aktualisieren bevor Du DokuWiki aktualisierst.'; +$lang['vs_tgzno'] = 'Die neueste Version von DokuWiki konnte nicht ermittelt werden.'; +$lang['vs_tgz'] = 'DokuWiki %s ist zum Download verfügbar.'; +$lang['vs_local'] = 'Du verwendest DokuWiki %s.'; +$lang['vs_localno'] = 'Es ist unklar, wie alt die von Dir verwendete DokuWiki Version ist. Ein manuell Upgrade wird empfohlen.'; +$lang['vs_newer'] = 'Es sieht so aus, als ob die von Dir verwendete DokuWiki Version neuer ist als die letzte stabile Version. Ein Upgrade wird nicht empfohlen.'; +$lang['vs_same'] = 'Deine DokuWiki Version ist aktuell. Kein Upgrade notwendig.'; +$lang['vs_plugin'] = 'Es ist eine neuere Version des Upgrade-Plugins verfügbar (%s). Du solltest das Plugin aktualisieren bevor Du fortfährst.'; +$lang['vs_ssl'] = 'Dein PHP scheint SSL nicht zu unterstützen. Der Download der benötigten Daten wird vermutlich fehlschlagen. Akstualisiere stattdessen manuell.'; +$lang['dl_from'] = 'Archiv wird von %s heruntergeladen...'; +$lang['dl_fail'] = 'Herunterladen fehlgeschlagen.'; +$lang['dl_done'] = 'Herunterladen abgeschlossen (%s).'; +$lang['pk_extract'] = 'Archiv wird entpackt...'; +$lang['pk_fail'] = 'Entpacken fehlgeschlagen.'; +$lang['pk_done'] = 'Entpacken abgeschlossen.'; +$lang['pk_version'] = 'DokuWiki %s ist zur Installation bereit (Du betreibst momentan %s).'; +$lang['ck_start'] = 'Dateirechte werden überprüft...'; +$lang['ck_done'] = 'Alle Dateien sind beschreibbar. Zur Aktualisierung bereit.'; +$lang['ck_fail'] = 'Einige Dateien sind nicht beschreibbar. Die automatische Aktualisierung ist nicht möglich.'; +$lang['cp_start'] = 'Dateien werden aktualisiert...'; +$lang['cp_done'] = 'Dateien wurden aktualisiert.'; +$lang['cp_fail'] = 'Autsch. Irgendetwas funktioniert nicht. Überprüfe es besser von Hand.'; +$lang['tv_noperm'] = '%s ist nicht beschreibbar!'; +$lang['tv_upd'] = '%s wird aktualisiert.'; +$lang['tv_nocopy'] = 'Konnte Datei %s nicht kopieren!'; +$lang['tv_nodir'] = 'Konnte Verzeichnis %s nicht erstellen!'; +$lang['tv_done'] = '%s wurde aktualisiert.'; +$lang['rm_done'] = 'Veraltete %s wurde gelöscht.'; +$lang['rm_fail'] = 'Konnte veraltete Datei %s nicht löschen. Bitte löschen Sie von Hand!'; +$lang['finish'] = 'Aktualisierung abgeschlossen. Genießen Sie Ihr neues DokuWiki!'; +$lang['btn_continue'] = 'Fortsetzen'; +$lang['btn_abort'] = 'Abbrechen'; +$lang['step_version'] = 'Prüfen'; +$lang['step_download'] = 'Herunterladen'; +$lang['step_unpack'] = 'Entpacken'; +$lang['step_check'] = 'Verifizieren'; +$lang['step_upgrade'] = 'Installieren'; diff --git a/sources/lib/plugins/upgrade/lang/de-informal/safemode.txt b/sources/lib/plugins/upgrade/lang/de-informal/safemode.txt new file mode 100755 index 0000000..8487169 --- /dev/null +++ b/sources/lib/plugins/upgrade/lang/de-informal/safemode.txt @@ -0,0 +1 @@ +Dieses Wiki ist so eingestellt, dass es den safemode hack verwendet. Leider kann so das Wiki nicht automatisch aktualisiert werden. Bitte besuche Reguläre[[doku>install:upgrade|upgrade your wiki manually]]. \ No newline at end of file diff --git a/sources/lib/plugins/upgrade/lang/de/lang.php b/sources/lib/plugins/upgrade/lang/de/lang.php new file mode 100755 index 0000000..1cef2c0 --- /dev/null +++ b/sources/lib/plugins/upgrade/lang/de/lang.php @@ -0,0 +1,49 @@ + + * @author Alex Timmermann + * @author Patrick Kastner + * @author Padhie + */ +$lang['menu'] = 'Wiki aktualisieren'; +$lang['vs_php'] = 'Neue DokuWiki-Versionen benötigen mindestens PHP-Version %s. Ihre Version ist %d. Bitte aktualisieren Sie PHP bevor Sie DokuWiki aktualisieren.'; +$lang['vs_tgzno'] = 'Die neuste Version von DokuWiki konnte nicht ermittelt werden.'; +$lang['vs_tgz'] = 'DokuWiki %s steht zum Download bereit.'; +$lang['vs_local'] = 'Ihre DokuWiki-Version ist %s'; +$lang['vs_localno'] = 'Es konnte nicht festgestellt werden, wie alt die aktuell laufende Version ist. Ein manuelles Upgrade wird empfohlen.'; +$lang['vs_newer'] = 'Es sieht so aus als sie Ihre DokuWiki-Version aktueller als die letzte stabile Version. Ein Upgrade wird nicht empfohlen.'; +$lang['vs_same'] = 'Ihre DokuWiki-Version ist aktuell. Ein Upgrade ist nicht nötig.'; +$lang['vs_plugin'] = 'Es existiert ein neueres Update Plugin (%s), Sie sollten das Plugin updaten bevor Sie aktualisieren.'; +$lang['vs_ssl'] = 'Ihre php-Version scheine keine SSL-Streams zu unterstützen, das Laden Sie die benötigten Daten wird daher vermutlich nicht funktionieren. Ein manuelles Update wird daher benötigt.'; +$lang['dl_from'] = 'Archiv wird von %s heruntergeladen...'; +$lang['dl_fail'] = 'Herunterladen fehlgeschlagen.'; +$lang['dl_done'] = 'Herunterladen abgeschlossen (%s).'; +$lang['pk_extract'] = 'Archiv wird entpackt...'; +$lang['pk_fail'] = 'Entpacken fehlgeschlagen.'; +$lang['pk_done'] = 'Entpacken abgeschlossen.'; +$lang['pk_version'] = 'DokuWiki %s ist zur Installation bereit (Sie betreiben momentan %s).'; +$lang['ck_start'] = 'Dateirechte werden überprüft...'; +$lang['ck_done'] = 'Alle Dateien sind beschreibbar. Zur Aktualisierung bereit.'; +$lang['ck_fail'] = 'Einige Dateien sind nicht beschreibbar. Die automatische Aktualisierung ist nicht möglich.'; +$lang['cp_start'] = 'Dateien werden aktualisiert...'; +$lang['cp_done'] = 'Dateien wurden aktualisiert.'; +$lang['cp_fail'] = 'Irgendetwas funktioniert nicht. Überprüfen Sie von Hand.'; +$lang['tv_noperm'] = '%s ist nicht beschreibbar!'; +$lang['tv_upd'] = '%s wird aktualisiert.'; +$lang['tv_nocopy'] = 'Konnte Datei %s nicht kopieren!'; +$lang['tv_nodir'] = 'Konnte Verzeichnis %s nicht erstellen!'; +$lang['tv_done'] = '%s wurde aktualisiert.'; +$lang['rm_done'] = 'Veraltete %s wurde gelöscht.'; +$lang['rm_fail'] = 'Konnte veraltete Datei %s nicht löschen. Bitte löschen Sie von Hand!'; +$lang['finish'] = 'Aktualisierung abgeschlossen. Genießen Sie Ihr neues DokuWiki!'; +$lang['btn_continue'] = 'Fortfahren'; +$lang['btn_abort'] = 'Abbrechen'; +$lang['step_version'] = 'Überprüfen'; +$lang['step_download'] = 'Herunterladen'; +$lang['step_unpack'] = 'Entpacken'; +$lang['step_check'] = 'Verifizieren'; +$lang['step_upgrade'] = 'Installieren'; +$lang['careful'] = 'Siehe Fehler! Sie sollten nicht fortfahren!'; diff --git a/sources/lib/plugins/upgrade/lang/de/safemode.txt b/sources/lib/plugins/upgrade/lang/de/safemode.txt new file mode 100755 index 0000000..7fa6fa9 --- /dev/null +++ b/sources/lib/plugins/upgrade/lang/de/safemode.txt @@ -0,0 +1 @@ +Dieses Wiki ist so eingestellt dass es den safemode hack verwendet. Leider kann so das Wiki nicht automatisch aktualisiert werden. Bitte besuchen Sie [[doku>install:upgrade|upgrade your wiki manually]]. \ No newline at end of file diff --git a/sources/lib/plugins/upgrade/lang/de/step0.txt b/sources/lib/plugins/upgrade/lang/de/step0.txt new file mode 100755 index 0000000..6d7329f --- /dev/null +++ b/sources/lib/plugins/upgrade/lang/de/step0.txt @@ -0,0 +1,7 @@ +Dieses Plugin aktualisiert ihr Wiki automatisch auf die aktuelle DokuWiki Version. Bevor Sie fortsetzen, sollten Sie den[[doku>changes|Änderungsverlauf]] lesen und überprüfen, ob vor oder nach der Aktualisierung weitere Schritte notwendig sind. + +Damit die automatische Aktualisierung möglich ist, sollte der PHP Prozess auf die DokuWiki Dateien zugreifen können. Das Plugin überprüft die erforderlichen Dateiberechtigungen, bevor der Aktualisierungsprozess startet. + +Dieses Plugin aktualisiert keine installierten Plugins oder Vorlagen. + +Wir empfehlen eine Sicherung ihres Wikis zu erstellen, bevor Sie fortsetzen. \ No newline at end of file diff --git a/sources/lib/plugins/upgrade/lang/en/lang.php b/sources/lib/plugins/upgrade/lang/en/lang.php new file mode 100755 index 0000000..1dde181 --- /dev/null +++ b/sources/lib/plugins/upgrade/lang/en/lang.php @@ -0,0 +1,55 @@ + + */ + +// menu entry for admin plugins +$lang['menu'] = 'Wiki Upgrade'; + +// custom language strings for the plugin +$lang['vs_php'] = 'New DokuWiki releases need at least PHP %s, but you\'re running %s. You should upgrade your PHP version before upgrading!'; +$lang['vs_tgzno'] = 'Could not determine the newest version of DokuWiki.'; +$lang['vs_tgz'] = 'DokuWiki %s is available for download.'; +$lang['vs_local'] = 'You\'re currently running DokuWiki %s.'; +$lang['vs_localno'] = 'It\'s not clear how old your currently running version is, manual upgrade is recommended.'; +$lang['vs_newer'] = 'It seems your current DokuWiki is even newer than the latest stable release. Upgrade not recommended.'; +$lang['vs_same'] = 'Your current DokuWiki is already up to date. No need for upgrading.'; +$lang['vs_plugin'] = 'There is a newer upgrade plugin available (%s) you should update the plugin before continuing.'; +$lang['vs_ssl'] = 'Your PHP seems not to support SSL streams, downloading the needed data will most likely fail. Upgrade manually instead.'; + +$lang['dl_from'] = 'Downloading archive from %s...'; +$lang['dl_fail'] = 'Download failed.'; +$lang['dl_done'] = 'Download completed (%s).'; +$lang['pk_extract'] = 'Unpacking archive...'; +$lang['pk_fail'] = 'Unpacking failed.'; +$lang['pk_done'] = 'Unpacking completed.'; +$lang['pk_version'] = 'DokuWiki %s is ready to install (You\'re currently running %s).'; +$lang['ck_start'] = 'Checking file permissions...'; +$lang['ck_done'] = 'All files are writable. Ready to upgrade.'; +$lang['ck_fail'] = 'Some files aren\'t writable. Automatic upgrade not possible.'; +$lang['cp_start'] = 'Updating files...'; +$lang['cp_done'] = 'All files updated.'; +$lang['cp_fail'] = 'Uh-Oh. Something went wrong. Better check manually.'; +$lang['tv_noperm'] = '%s is not writable!'; +$lang['tv_upd'] = '%s will be updated.'; +$lang['tv_nocopy'] = 'Could not copy file %s!'; +$lang['tv_nodir'] = 'Could not create directory %s!'; +$lang['tv_done'] = 'updated %s'; +$lang['rm_done'] = 'Deprecated %s deleted.'; +$lang['rm_fail'] = 'Could not delete deprecated %s. Please delete manually!'; +$lang['finish'] = 'Upgrade completed. Enjoy your new DokuWiki'; + +$lang['btn_continue'] = 'Continue'; +$lang['btn_abort'] = 'Abort'; + +$lang['step_version'] = 'Check'; +$lang['step_download'] = 'Download'; +$lang['step_unpack'] = 'Unpack'; +$lang['step_check'] = 'Verify'; +$lang['step_upgrade'] = 'Install'; + +$lang['careful'] = 'Errors above! You should not continue!'; + +//Setup VIM: ex: et ts=4 enc=utf-8 : diff --git a/sources/lib/plugins/upgrade/lang/en/safemode.txt b/sources/lib/plugins/upgrade/lang/en/safemode.txt new file mode 100755 index 0000000..bb24e05 --- /dev/null +++ b/sources/lib/plugins/upgrade/lang/en/safemode.txt @@ -0,0 +1 @@ +This wiki is configured to use the safemode hack. Unfortunately we cannot safely upgrade the wiki automatically under this conditions. Please [[doku>install:upgrade|upgrade your wiki manually]]. diff --git a/sources/lib/plugins/upgrade/lang/en/step0.txt b/sources/lib/plugins/upgrade/lang/en/step0.txt new file mode 100755 index 0000000..e25280d --- /dev/null +++ b/sources/lib/plugins/upgrade/lang/en/step0.txt @@ -0,0 +1,7 @@ +This plugin will automatically upgrade your wiki to the newest available DokuWiki version. Before continuing, you should read the [[doku>changes|Changelog]] to check if there are any additional steps for you to perform before or after upgrading. + +To allow automatic upgrading, the PHP process requires write permissions for Dokuwiki files. The plugin will check for the necessary file permissions before starting the upgrade process. + +This plugin will not upgrade any installed plugins or templates. + +We recommend that you create a backup of your wiki before continuing. \ No newline at end of file diff --git a/sources/lib/plugins/upgrade/lang/eo/lang.php b/sources/lib/plugins/upgrade/lang/eo/lang.php new file mode 100755 index 0000000..52f89d2 --- /dev/null +++ b/sources/lib/plugins/upgrade/lang/eo/lang.php @@ -0,0 +1,46 @@ + + * @author Robert Bogenschneider + */ +$lang['menu'] = 'Viki-Aktualigo'; +$lang['vs_php'] = 'Novaj DokuWiki-eldonoj bezonas minumime PHP-version %s, sed vi uzas %s. Vi devus aktualigi vian PHP-version antaŭ ol aktualigi la vikion!'; +$lang['vs_tgzno'] = 'Ne eblis ekkoni la plej novan DokuWiki-version.'; +$lang['vs_tgz'] = 'DokuWiki %s haveblas por elŝuto.'; +$lang['vs_local'] = 'Momente vi uzas DokuWiki %s.'; +$lang['vs_localno'] = 'Ne estas klare, kiom malnova via momenta versio estas, permana aktualigo estas rekomendata.'; +$lang['vs_newer'] = 'Aspektas, ke via momenta DokuWiki-versio estas eĉ pli nova ol la plej freŝa stabila eldono. Aktualigo estas malrekomendata.'; +$lang['vs_same'] = 'Via momenta DokuWiki estas jam ĝisdata. Neniu bezono aktualigi.'; +$lang['vs_plugin'] = 'Ekzistas pli nova kromaĵo (%s), vi devus aktualigi la kromaĵon antaŭ ol daŭrigi.'; +$lang['vs_ssl'] = 'Ŝajne via PHP ne subtenas SSL-fluojn, elŝuti la necesajn datumojn verŝajne malsukcesos. Aktualigu anstataŭe permane.'; +$lang['dl_from'] = 'Elŝutanta arkivon de %s...'; +$lang['dl_fail'] = 'La elŝuto ne funkciis.'; +$lang['dl_done'] = 'Elŝuto kompleta (%s).'; +$lang['pk_extract'] = 'Malpakanta arkivon...'; +$lang['pk_fail'] = 'Malpakado ne funkciis.'; +$lang['pk_done'] = 'Malpakado kompleta.'; +$lang['pk_version'] = 'DokuWiki %s pretas por instalado (Momente vi uzas %s).'; +$lang['ck_start'] = 'Kontrolanta dosier-permesojn...'; +$lang['ck_done'] = 'Ĉiuj dosieroj estas skribeblaj. Preta por aktualigo.'; +$lang['ck_fail'] = 'Iuj dosieroj ne estas skribeblaj. Aŭtomata aktualigo ne eblas.'; +$lang['cp_start'] = 'Aktualiganta dosierojn...'; +$lang['cp_done'] = 'Ĉiuj dosieroj aktualigitaj.'; +$lang['cp_fail'] = 'Aj, io misiris. Pli bone kontrolu permane.'; +$lang['tv_noperm'] = '%s ne estas skribebla!'; +$lang['tv_upd'] = '%s estos aktualigata.'; +$lang['tv_nocopy'] = 'Ne eblis kopii la dosieron %s!'; +$lang['tv_nodir'] = 'Ne eblis krei la dosierujon %s!'; +$lang['tv_done'] = 'aktualiĝis %s'; +$lang['rm_done'] = 'Malaktuala %s forigita.'; +$lang['rm_fail'] = 'Ne eblis forigi la malaktualan %s. Bonvolu forigi ĝin permane!'; +$lang['finish'] = 'Aktualigo kompleta. Ĝuu vian novan DokuWiki.'; +$lang['btn_continue'] = 'Daŭrigi'; +$lang['btn_abort'] = 'Ĉesi'; +$lang['step_version'] = 'Kontroli'; +$lang['step_download'] = 'Elŝuti'; +$lang['step_unpack'] = 'Malpaki'; +$lang['step_check'] = 'Certigi'; +$lang['step_upgrade'] = 'Instali'; diff --git a/sources/lib/plugins/upgrade/lang/eo/safemode.txt b/sources/lib/plugins/upgrade/lang/eo/safemode.txt new file mode 100755 index 0000000..310017b --- /dev/null +++ b/sources/lib/plugins/upgrade/lang/eo/safemode.txt @@ -0,0 +1 @@ +Tiu-ĉi vikio laŭagorde uzas la safemode-econ. Bedaŭrinde tiel ne eblas sekure aktualigi la vikion aŭtomate. Bonvolu [[doku>install:upgrade|aktualigi vian vikion permane]]. \ No newline at end of file diff --git a/sources/lib/plugins/upgrade/lang/eo/step0.txt b/sources/lib/plugins/upgrade/lang/eo/step0.txt new file mode 100755 index 0000000..d9ebf01 --- /dev/null +++ b/sources/lib/plugins/upgrade/lang/eo/step0.txt @@ -0,0 +1,7 @@ +Tiu kromaĵo aŭtomate aktualigos vian vikion al la plej freŝe havebla DokuWiki-versio. Antaŭ ol daŭrigi, legu [[doku>changes|la ŝanĝ-liston]] por kontroli, ĉu vi devus fari aldonajn paŝojn antaŭ aŭ post la aktualigo. + +Por permesi aŭtomatan aktualigon, la PHP-procezo bezonas skribpermeson por Dokuwiki-dosieroj. La kromaĵo kontrolos la necesajn dosierpermesojn antaŭ la komenco de la aktualigado. + +Tiu kromaĵo **ne aktualigos** instalitajn kromaĵojn aŭ ŝablonojn. + +Ni rekomendas, ke vi faru sekurkopion de via vikio antaŭ ol daŭrigi. \ No newline at end of file diff --git a/sources/lib/plugins/upgrade/lang/es/lang.php b/sources/lib/plugins/upgrade/lang/es/lang.php new file mode 100755 index 0000000..f19673d --- /dev/null +++ b/sources/lib/plugins/upgrade/lang/es/lang.php @@ -0,0 +1,46 @@ + + * @author Domingo Redal + */ +$lang['menu'] = 'Actualización de Wiki'; +$lang['vs_php'] = 'Las nuevas versiones de DokuWiki necesitan al menos PHP %s, pero tú estás ejecutando %s. ¡Deberías subir la versión de PHP antes de actualizar!'; +$lang['vs_tgzno'] = 'No se puede determinar la versión más reciente de DokuWiki.'; +$lang['vs_tgz'] = 'DokuWiki %s está disponible para descargar.'; +$lang['vs_local'] = 'Actualmente estás ejecutando DokuWiki %s'; +$lang['vs_localno'] = 'No está clara la antigüedad de la versión que ejecutas actualmente; se recomienda una actualización manual.'; +$lang['vs_newer'] = 'Parece que tu DokuWiki actual es incluso más nueva que la última versión estable. No se recomienda actualizarla.'; +$lang['vs_same'] = 'Tú DokuWiki actual ya está al día. No se necesita actualización.'; +$lang['vs_plugin'] = 'Hay disponible una nueva actualización del //plugin// (%s), deberías actualizar el //plugin// antes de continuar.'; +$lang['vs_ssl'] = 'Tu PHP parece no soportar canales SSL, la descarga de los datos necesarios lo más probable es que falle. Actualizalo manualmente en su lugar.'; +$lang['dl_from'] = 'Descargando el archivo desde %s...'; +$lang['dl_fail'] = 'Fallo en la descarga.'; +$lang['dl_done'] = 'Descarga completada (%s).'; +$lang['pk_extract'] = 'Desempaquetando el archivo...'; +$lang['pk_fail'] = 'Fallo en el desempaquetado.'; +$lang['pk_done'] = 'Desempaquetado completado.'; +$lang['pk_version'] = 'DokuWiki %s listo para instalar (Actualmente estás ejecutando %s).'; +$lang['ck_start'] = 'Comprobando permisos de fichero...'; +$lang['ck_done'] = 'Todos los ficheros se pueden escribir. Listo para actualizar.'; +$lang['ck_fail'] = 'Algunos ficheros no se pueden escribir. No es posible la actualización automática.'; +$lang['cp_start'] = 'Actualizando ficheros...'; +$lang['cp_done'] = 'Todos los ficheros están actualizados.'; +$lang['cp_fail'] = '¡Vaya! Algo fue mal. Mejor compruébalo manualmente.'; +$lang['tv_noperm'] = '¡%s no se puede escribir!'; +$lang['tv_upd'] = '%s se actualizará.'; +$lang['tv_nocopy'] = '¡No se puede copiar el fichero %s!'; +$lang['tv_nodir'] = '¡No se puede crear el directorio %s!'; +$lang['tv_done'] = '%s actualizado'; +$lang['rm_done'] = '%s obsoleto borrado.'; +$lang['rm_fail'] = 'No se puede borrar %s obsoleto. ¡Por favor, bórralo manualmente!'; +$lang['finish'] = 'Actualización completada. Disfruta de tu nueva DokuWiki'; +$lang['btn_continue'] = 'Continuar'; +$lang['btn_abort'] = 'Abortar'; +$lang['step_version'] = 'Comprobar'; +$lang['step_download'] = 'Descargar'; +$lang['step_unpack'] = 'Desempaquetar'; +$lang['step_check'] = 'Verificar'; +$lang['step_upgrade'] = 'Instalar'; diff --git a/sources/lib/plugins/upgrade/lang/es/safemode.txt b/sources/lib/plugins/upgrade/lang/es/safemode.txt new file mode 100755 index 0000000..5a084f3 --- /dev/null +++ b/sources/lib/plugins/upgrade/lang/es/safemode.txt @@ -0,0 +1 @@ +Este wiki está configurado para utilizar el hack modo seguro. Desafortunadamente, no podemos actualizar el wiki automáticamente con seguridad bajo estas condiciones. Por favor [[doku>install:upgrade| actualiza tu wiki manualmente]]. \ No newline at end of file diff --git a/sources/lib/plugins/upgrade/lang/es/step0.txt b/sources/lib/plugins/upgrade/lang/es/step0.txt new file mode 100755 index 0000000..b042f59 --- /dev/null +++ b/sources/lib/plugins/upgrade/lang/es/step0.txt @@ -0,0 +1,7 @@ +Este plugin actualizará automáticamente tu wiki a la nueva versión disponible de DokuWiki. Antes de continuar, debe leer el [[doku>changes|Histórico de Cambios]] para comprobar si hay pasos adicionales para llevar a cabo antes o después de la actualización. + +Para permitir la actualización automática, el proceso PHP requiere permisos de escritura para los archivos de Dokuwiki. El plugin comprobará los permisos de archivo necesarios antes de iniciar el proceso de actualización. + +Este plugin no actualiza los plugins o plantillas instaladas. + +Le recomendamos que cree una copia de seguridad de su wiki antes de continuar. \ No newline at end of file diff --git a/sources/lib/plugins/upgrade/lang/fa/lang.php b/sources/lib/plugins/upgrade/lang/fa/lang.php new file mode 100644 index 0000000..a9b863e --- /dev/null +++ b/sources/lib/plugins/upgrade/lang/fa/lang.php @@ -0,0 +1,46 @@ + + */ +$lang['menu'] = 'ارتقا ویکی'; +$lang['vs_php'] = 'نسخه‌های جدید دوکوویکی نیاز به %s پی‌اچ‌پی دارند، اما شما استفاده می‌کنید از %s. قبلا از این کار شما باید نسخه‌ی پی‌اچ‌پی خود را ارتقا دهید.'; +$lang['vs_tgzno'] = 'نمی‌توان نسخه‌ی جدیدتر دوکوویکی را مشخص کرد.'; +$lang['vs_tgz'] = 'دوکوویکی %s برای دانلود موجود است.'; +$lang['vs_local'] = 'شما درحال حاضر دوکوویکی %s را اجرا می‌کنید.'; +$lang['vs_localno'] = 'هنوز مشخص نیست که نسخه‌های درحال اجرا چند ساله هستند، ارتقا دستی توصیه می‌شود.'; +$lang['vs_newer'] = 'به نظر می‌رسد دوکوویکی اجرایی شما جدیدتر از نسخه‌ی پایدار است. ارتقای دستی توصیه نمی‌شود.'; +$lang['vs_same'] = 'دوکوویکی اجرایی شما بروز است. ارتقا لازم نیست.'; +$lang['vs_plugin'] = 'ارتقای جدید برای افزونه وجود دارد (%s) شما باید قبل از ادامه‌ دادن افزونه را ارتقا دهید.'; +$lang['vs_ssl'] = 'به نظر نمی‌رسد پی‌اچ‌پی شما از جریان SSL حمایت کند، دانلود داده‌های مورد نیاز با شکست مواجه خواهند شد. ارتقای دستی به جای این ارتقا.'; +$lang['dl_from'] = 'درحال دانلود آرشیو از %s...'; +$lang['dl_fail'] = 'دانلود ناموفق بود.'; +$lang['dl_done'] = 'دانلود تمام شد (%s).'; +$lang['pk_extract'] = 'بازکردن بسته‌ی آرشیو...'; +$lang['pk_fail'] = 'بازکردن بسته ناموفق بود.'; +$lang['pk_done'] = 'بازکردن بسته تمام شد.'; +$lang['pk_version'] = 'دوکوویکی %s آماده‌ی نصب است (شما درحال اجرای %s هستید).'; +$lang['ck_start'] = 'بررسی مجوز دسترسی فایل'; +$lang['ck_done'] = 'تمام فایل‌ها قابل نوشتن هستند. آماده برای بروزرسانی.'; +$lang['ck_fail'] = 'بعضی فایل‌ها قابل نوشتن نیستند. ارتقای خودکار امکان‌پذیر نیست.'; +$lang['cp_start'] = 'بروزرسانی فایل‌ها...'; +$lang['cp_done'] = 'همه‌ی فایل‌ها بروز شد.'; +$lang['cp_fail'] = 'اوه. چیزی اشتباه شد. بررسی دستی بهتر است.'; +$lang['tv_noperm'] = '%s قابل نوشتن نیست!'; +$lang['tv_upd'] = '%s بروزرسانی خواهد شد.'; +$lang['tv_nocopy'] = 'نمی‌توان %s را کپی کرد!'; +$lang['tv_nodir'] = 'نمی‌توان دایرکتوی %s ایجاد کرد!'; +$lang['tv_done'] = '%s بروزرسانی شد'; +$lang['rm_done'] = '%s منسوخ حذف شد.'; +$lang['rm_fail'] = 'توانایی حذف %s منسوخی نیست. لطفا دستی حذف کنید!'; +$lang['finish'] = 'ارتقا پایان یافت. از دوکوویکی جدید لذت ببر.'; +$lang['btn_continue'] = 'ادامه'; +$lang['btn_abort'] = 'سقط'; +$lang['step_version'] = 'بررسی'; +$lang['step_download'] = 'دانلود'; +$lang['step_unpack'] = 'بازکردن بسته'; +$lang['step_check'] = 'بازبینی'; +$lang['step_upgrade'] = 'نصب'; +$lang['careful'] = 'خطاهای بالا! شما باید نباید ادامه بدهید!'; diff --git a/sources/lib/plugins/upgrade/lang/fa/safemode.txt b/sources/lib/plugins/upgrade/lang/fa/safemode.txt new file mode 100644 index 0000000..0d67c81 --- /dev/null +++ b/sources/lib/plugins/upgrade/lang/fa/safemode.txt @@ -0,0 +1 @@ +این ویکی پیکربندی شده برای حالت امن هک. متاسفانه ما نمی‌توانیم در این شرایط خودکار ارتقا دهیم. لطفا [[doku>install:upgrade|دستی ارتقا دهید.]] \ No newline at end of file diff --git a/sources/lib/plugins/upgrade/lang/fa/step0.txt b/sources/lib/plugins/upgrade/lang/fa/step0.txt new file mode 100644 index 0000000..135de49 --- /dev/null +++ b/sources/lib/plugins/upgrade/lang/fa/step0.txt @@ -0,0 +1,7 @@ +این افزونه به طور خودکار ویکی شما را برای نسخه‌های موجود جدیدتر دوکوویکی ارتقا می‌دهد. قبل از ادامه، شما باید [[doku>changes|تغییرات]] را بخوانید که بررسی کنید که بعد و قبل ارتقا چکار کنید. + + برای فعال‌سازی ارتقای خودکار، روند پی‌اچ‌پی نیاز به مجوز ارسال برای فایل‌های دوکوویکی دارد. این افزونه مجوزهای لازم فایل را قبل از عملیات ارتقا بررسی می‌کند. + +این افزونه هیچ افزونه یا پوسته‌ای را ارتقا نمی‌دهد. + +ما توصیه می‌کنیم قبل از ادامه دادن یک نسخه‌ی پشتیبان(بک آپ) از ویکی‌تان تهیه کنید. \ No newline at end of file diff --git a/sources/lib/plugins/upgrade/lang/fr/lang.php b/sources/lib/plugins/upgrade/lang/fr/lang.php new file mode 100755 index 0000000..6da33e5 --- /dev/null +++ b/sources/lib/plugins/upgrade/lang/fr/lang.php @@ -0,0 +1,50 @@ + + * @author Nicolas Friedli + * @author Schplurtz le Déboulonné + * @author Thomas Ballarin + * @author Blacklord049 + */ +$lang['menu'] = 'Mise à jour du wiki'; +$lang['vs_php'] = 'Les nouvelles version de DokuWiki requièrent au moins la version %s de PHP, mais votre serveur propose %s. Il faut mettre PHP à jour avant DokuWiki.'; +$lang['vs_tgzno'] = 'Ne peut déterminer quelle est la plus récente version de DokuWiki.'; +$lang['vs_tgz'] = 'DokuWiki %s est disponible au téléchargement.'; +$lang['vs_local'] = 'Vous utilisez actuellement DokuWiki %s.'; +$lang['vs_localno'] = 'La version que vous utilisez actuellement ne peut pas être déterminée. Une mise à jour manuelle est recommandée.'; +$lang['vs_newer'] = 'Il semble que votre version actuelle de DokuWiki soit plus récente que l\'actuelle version stable. La mise à jour n\'est pas recommandée.'; +$lang['vs_same'] = 'Votre DokuWiki est le dernier en date. Pas besoin de mise à jour.'; +$lang['vs_plugin'] = 'Une nouvelle version de l\'extension de mise à jour est disponible (%s). Vous devriez la mettre à jour avant de continuer.'; +$lang['vs_ssl'] = 'Votre PHP semble ne pas prendre en charge les flux SSL; le téléchargement des données nécessaires va très probablement échouer. Faites la mise à jour manuellement.'; +$lang['dl_from'] = 'Téléchargement de l\'archive depuis %s...'; +$lang['dl_fail'] = 'Échec du téléchargement.'; +$lang['dl_done'] = 'Téléchargement achevé (%s).'; +$lang['pk_extract'] = 'Décompression de l\'archive...'; +$lang['pk_fail'] = 'Échec de la décompression.'; +$lang['pk_done'] = 'Décompression achevée.'; +$lang['pk_version'] = 'DokuWiki %s est prêt à être installé (Vous utilisez actuellement %s).'; +$lang['ck_start'] = 'Vérification des permissions des fichiers...'; +$lang['ck_done'] = 'Tous les fichiers sont autorisés en écriture. Prêt à mettre à jour.'; +$lang['ck_fail'] = 'Quelques fichiers sont interdits en écriture. La mise à jour automatique n\'est pas possible.'; +$lang['cp_start'] = 'Mise à jour des fichiers...'; +$lang['cp_done'] = 'Tous les fichiers ont été mis à jour.'; +$lang['cp_fail'] = 'Oups! Quelque chose est allé de travers. Il vaudrait mieux vérifier manuellement.'; +$lang['tv_noperm'] = '%s est interdit en écriture !'; +$lang['tv_upd'] = '%s sera mis à jour.'; +$lang['tv_nocopy'] = 'Impossible de copier le fichier %s!'; +$lang['tv_nodir'] = 'Impossible de créer le répertoire %s!'; +$lang['tv_done'] = 'Mis à jour : %s'; +$lang['rm_done'] = 'Suppression du fichier obsolète %s.'; +$lang['rm_fail'] = 'Impossible de supprimer le fichier obsolète %s. Veuillez le supprimer à la main.'; +$lang['finish'] = 'Mise à jour accomplie. Profitez de votre nouveau DokuWiki !'; +$lang['btn_continue'] = 'Continuer'; +$lang['btn_abort'] = 'Arrêter'; +$lang['step_version'] = 'Contrôler'; +$lang['step_download'] = 'Télécharger'; +$lang['step_unpack'] = 'Décompresser'; +$lang['step_check'] = 'Vérifier'; +$lang['step_upgrade'] = 'Installer'; +$lang['careful'] = 'Il y as des erreurs! Vous ne devriez pas continuer !'; diff --git a/sources/lib/plugins/upgrade/lang/fr/safemode.txt b/sources/lib/plugins/upgrade/lang/fr/safemode.txt new file mode 100755 index 0000000..6d8ab80 --- /dev/null +++ b/sources/lib/plugins/upgrade/lang/fr/safemode.txt @@ -0,0 +1 @@ +Ce wiki est configuré pour utiliser le mode sans échec. Il n'est malheureusement pas possible de mettre à jour automatiquement le wiki dans ces conditions. Veuillez [[doku>install:upgrade|mettre à jour votre wiki manuellement]]. diff --git a/sources/lib/plugins/upgrade/lang/fr/step0.txt b/sources/lib/plugins/upgrade/lang/fr/step0.txt new file mode 100755 index 0000000..906367f --- /dev/null +++ b/sources/lib/plugins/upgrade/lang/fr/step0.txt @@ -0,0 +1,7 @@ +Cette extension met votre DokuWiki à jour automatiquement, en installant la dernière version. Avant d'aller plus loin, vous devriez lire la liste des modifications apportées ([[doku>changes|Changelog]]), afin de voir s'il y a des étapes supplémentaires à faire avant ou après la mise à jour. + +Pour rendre la mise à jour automatique possible, PHP doit avoir les droits en écriture sur les fichiers de DokuWiki. Cette extension contrôle les permissions avant le début du processus de mise à jour. + +Cette extension ne met pas à jour les extensions et les thèmes. + +Nous vous recommandons d'effectuer une sauvegarde de votre wiki avant de poursuivre ! \ No newline at end of file diff --git a/sources/lib/plugins/upgrade/lang/hr/lang.php b/sources/lib/plugins/upgrade/lang/hr/lang.php new file mode 100644 index 0000000..94d556d --- /dev/null +++ b/sources/lib/plugins/upgrade/lang/hr/lang.php @@ -0,0 +1,46 @@ + + */ +$lang['menu'] = 'Wiki nadogradnja'; +$lang['vs_php'] = 'Nova inačica DokuWiki-a zahtjeva minimalno PHP %s, dok vi koristite %s. Morate nadograditi Vaš PHP prije nadogradnje!'; +$lang['vs_tgzno'] = 'Ne mogu odrediti zadnju inačicu DokuWiki-a.'; +$lang['vs_tgz'] = 'DokuWiki %s je raspoloživ za preuzimanje.'; +$lang['vs_local'] = 'Vi trenutno koristite DokuWiki %s.'; +$lang['vs_localno'] = 'Nije poznato koliko je stara vaša trenutna inačica, preporučamo ručnu nadogradnju.'; +$lang['vs_newer'] = 'Izgleda da je vaša inačica DokuWiki-a čak novija od zadnje stabilne inačice. Nadogradnja nije preporučljiva.'; +$lang['vs_same'] = 'Već koristite aktualnu inačicu DokuWiki-a. Nema potrebe za nadogradnjom.'; +$lang['vs_plugin'] = 'Na raspolaganju je novija inačica dodatka za nadogradnju (%s). Nadogradite ovaj dodatak prije nastavka.'; +$lang['vs_ssl'] = 'Vaš PHP izgleda ne podržava SSL strujanje, preuzimanje neophodnih podataka je najvjerojatnije neispravno. Stoga nadogradite ručno.'; +$lang['dl_from'] = 'Preuzimanje arhive iz %s...'; +$lang['dl_fail'] = 'Preuzimanje neuspješno.'; +$lang['dl_done'] = 'Preuzimanje završeno (%s).'; +$lang['pk_extract'] = 'Raspakiravanje arhive...'; +$lang['pk_fail'] = 'Raspakiravanje neuspješno.'; +$lang['pk_done'] = 'Raspakiravanje završeno.'; +$lang['pk_version'] = 'DokuWiki %s je spreman za postavljanje (Trenutno koristite %s).'; +$lang['ck_start'] = 'Provjera autorizacija...'; +$lang['ck_done'] = 'Sve datoteke su dostupne. Spreman za nadogradnju.'; +$lang['ck_fail'] = 'Neke datoteke nisu dostupne. Automatska nadogradnja nije moguća.'; +$lang['cp_start'] = 'Nadograđujem datoteke...'; +$lang['cp_done'] = 'Sve datoteke nadograđene.'; +$lang['cp_fail'] = 'Ups. Nešto je pošlo po krivu. Bolje da ručno provjerite.'; +$lang['tv_noperm'] = '%s nije moguće prepisati!'; +$lang['tv_upd'] = '%s će biti zamijenjen.'; +$lang['tv_nocopy'] = 'Ne mogu kopirati datoteku %s!'; +$lang['tv_nodir'] = 'Ne mogu kreirati mapu %s!'; +$lang['tv_done'] = 'nadograđen %s'; +$lang['rm_done'] = 'Suvišno %s obrisano.'; +$lang['rm_fail'] = 'Ne mogu obrisati suvišno %s. Molim da to obrišete ručno!'; +$lang['finish'] = 'Nadogradnja završena. Uživajte u novoj inačici DokuWiki-a'; +$lang['btn_continue'] = 'Nastavi'; +$lang['btn_abort'] = 'Prekini'; +$lang['step_version'] = 'Provjeri'; +$lang['step_download'] = 'Preuzmi'; +$lang['step_unpack'] = 'Raspakiraj'; +$lang['step_check'] = 'Provjeri'; +$lang['step_upgrade'] = 'Postavi'; +$lang['careful'] = 'Greške se nalaze iznad! Nemojte nastaviti!'; diff --git a/sources/lib/plugins/upgrade/lang/hr/safemode.txt b/sources/lib/plugins/upgrade/lang/hr/safemode.txt new file mode 100644 index 0000000..769883f --- /dev/null +++ b/sources/lib/plugins/upgrade/lang/hr/safemode.txt @@ -0,0 +1 @@ +Ovaj wiki je podešen da koristi "safemode hack". Nažalost ne možemo sigurno izvršiti automatsku nadogradnju pod tim uvjetima. Molim [[doku>install:upgrade|ručno nadogradite vaš wiki]]. \ No newline at end of file diff --git a/sources/lib/plugins/upgrade/lang/hr/step0.txt b/sources/lib/plugins/upgrade/lang/hr/step0.txt new file mode 100644 index 0000000..6e7618a --- /dev/null +++ b/sources/lib/plugins/upgrade/lang/hr/step0.txt @@ -0,0 +1,7 @@ +Ovaj dodatak će automatski nadograditi vaš wiki na zadnju dostupnu DokuWIki inačicu. Prije nastavka, molimo da pročitate [[doku>changes|listu promjena]] da provjerite da li postoje neki dodatni koraci koje treba napraviti prije nadogradnje. + +Da bi nadogradnja bila moguća, PHP proces treba imati pravo pisanja po DokuWiki datotekama. Dodatak će provjeriti potrebna prava prije pokretanja procesa nadogradnje. + +Ovaj dodatak neće nadograditi niti jedan već postavljeni dodatak ili predložak. + +Preporučamo da napravite pričuvnu kopiju Vašeg wikija prije nastavka. \ No newline at end of file diff --git a/sources/lib/plugins/upgrade/lang/hu/lang.php b/sources/lib/plugins/upgrade/lang/hu/lang.php new file mode 100755 index 0000000..9bacbdb --- /dev/null +++ b/sources/lib/plugins/upgrade/lang/hu/lang.php @@ -0,0 +1,47 @@ + + * @author DelD + */ +$lang['menu'] = 'Wiki-frissítő'; +$lang['vs_php'] = 'Az új DokuWiki-verzióknak legalább a PHP %s verziójára van szükség, miközben mi a %s verziót használjuk. Frissítenünk kell a PHP-t, mielőtt a wikit frissítenénk!'; +$lang['vs_tgzno'] = 'Nem tudom megállapítani a DokuWiki legújabb verzióját.'; +$lang['vs_tgz'] = 'Letölthető a DokuWiki %s.'; +$lang['vs_local'] = 'Jelenleg a DokuWiki %s változatát használjuk.'; +$lang['vs_localno'] = 'Nem tudom megállapítani, hogy milyen régi a jelenleg használt DokuWiki-verzió. Javaslom a manuális frissítést.'; +$lang['vs_newer'] = 'Úgy tűnik, a DokuWiki-nk újabb, mint a jelenleg elérhető, stabil kiadás, ezért nem ajánlott a frissítés.'; +$lang['vs_same'] = 'A DokuWiki-nk már naprakész. Nincs szükség frissítésre.'; +$lang['vs_plugin'] = 'Elérhető egy újabb bővítmény (%s\'), a folytatás előtt a frissítsük a bővítményt.'; +$lang['vs_ssl'] = 'Úgy tűnik, hogy a PHP-nk nem támogatja az SSL-adatfolyamokat, ezért a szükséges adatok letöltése nagy eséllyel hibás lesz. Frissítsünk manuálisan inkább.'; +$lang['dl_from'] = 'Archívum letöltése innen: %s...'; +$lang['dl_fail'] = 'A letöltés sikertelen.'; +$lang['dl_done'] = 'A letöltés befejeződött (%s).'; +$lang['pk_extract'] = 'Archívum kicsomagolása...'; +$lang['pk_fail'] = 'A kicsomagolás sikertelen.'; +$lang['pk_done'] = 'A kicsomagolás befejeződött.'; +$lang['pk_version'] = 'A DokuWiki %s készen áll a telepítésre. (Jelenleg telepítve: b>%s)'; +$lang['ck_start'] = 'Fájlok hozzáférési jogosultságainak ellenőrzése...'; +$lang['ck_done'] = 'Minden fájl írható. A frissítés készen áll a telepítésre.'; +$lang['ck_fail'] = 'Néhány fájl nem írható. Az automatikus frissítés nem lehetséges.'; +$lang['cp_start'] = 'Fájlok frissítése...'; +$lang['cp_done'] = 'Minden fájl frissítve.'; +$lang['cp_fail'] = 'Ejha. Valami nem sikerült. Jobb, ha manuálisan ellenőrizzük.'; +$lang['tv_noperm'] = 'A(z) %s nem írható!'; +$lang['tv_upd'] = 'A(z) %s frissítésre kerül!'; +$lang['tv_nocopy'] = 'Nem tudtam lemásolni a(z) %s nevű fájlt!'; +$lang['tv_nodir'] = 'Nem tudtam létrehozni a(z) %s nevű könyvtárat!'; +$lang['tv_done'] = '%s frissítve'; +$lang['rm_done'] = 'Elavult fájl törölve: %s.'; +$lang['rm_fail'] = 'Nem tudtam törölni az elavult fájlt: %s. Töröljük manuálisan!'; +$lang['finish'] = 'Frissítés kész. Élvezzük az új DokuWiki-t!'; +$lang['btn_continue'] = 'Folytatás'; +$lang['btn_abort'] = 'Megszakítás'; +$lang['step_version'] = 'Ellenőrzés'; +$lang['step_download'] = 'Letöltés'; +$lang['step_unpack'] = 'Kicsomagolás'; +$lang['step_check'] = 'Vizsgálat'; +$lang['step_upgrade'] = 'Telepítés'; +$lang['careful'] = 'Hiba! Ne folytassuk a műveletet!'; diff --git a/sources/lib/plugins/upgrade/lang/hu/safemode.txt b/sources/lib/plugins/upgrade/lang/hu/safemode.txt new file mode 100755 index 0000000..ba97e0b --- /dev/null +++ b/sources/lib/plugins/upgrade/lang/hu/safemode.txt @@ -0,0 +1 @@ +A wiki 'safemode hack' használatára van beállítva. Sajnos, ilyen körülmények mellett nem tudjuk a wikit biztonsággal frissíteni automatikusan. Próbáljuk meg a [[doku>install:upgrade|wiki manuális frissítését]]. \ No newline at end of file diff --git a/sources/lib/plugins/upgrade/lang/hu/step0.txt b/sources/lib/plugins/upgrade/lang/hu/step0.txt new file mode 100755 index 0000000..5f33a3f --- /dev/null +++ b/sources/lib/plugins/upgrade/lang/hu/step0.txt @@ -0,0 +1,7 @@ +A bővítmény automatikusan frissíti a wikit a legújabb elérhető DokuWiki-verzióra. A folytatás előtt olvassuk el a [[doku>changes|Changelog-ot (változások naplóját)]], ellenőrizendő, hogy a frissítés előtt vagy után szükséges-e bármilyen további lépés. + +Az automatikus frissítéshez a PHP-folyamatnak írási jogosultságra van szüksége a DokuWiki-fájlokhoz. A bővítmény ellenőrzi a szükséges fájljogosultságokat a frissítési folyamat megkezdése előtt. + +A bővítmény nem frissíti a már telepített bővítményeket vagy sablonokat. + +Javasoljuk, hogy a frissítés előtt készítsünk biztonsági másolatot. \ No newline at end of file diff --git a/sources/lib/plugins/upgrade/lang/is/lang.php b/sources/lib/plugins/upgrade/lang/is/lang.php new file mode 100755 index 0000000..88d3ccf --- /dev/null +++ b/sources/lib/plugins/upgrade/lang/is/lang.php @@ -0,0 +1,46 @@ + + */ +$lang['menu'] = 'Wiki uppfærsla'; +$lang['vs_php'] = 'Nýjar DokuWiki útgáfur þurfa að minnsta kosti PHP %s en þú ert að nota %s. Þú ættir að uppfæra PHP áður en þú uppfærir DokuWiki.'; +$lang['vs_tgzno'] = 'Gat ekki greint hvað er nýjasta útgáfan af DokuWiki.'; +$lang['vs_tgz'] = 'DokuWiki %s er fáanleg til niðurhals.'; +$lang['vs_local'] = 'Þú ert að nota DokuWiki %s núna.'; +$lang['vs_localno'] = 'Það er ekki ljóst hversu gömul núverandi útgáfa þín er. Það er mælt með handvirkri uppfærslu.'; +$lang['vs_newer'] = 'Það lítur út fyrir að núverandi útgáfa þín af DokuWiki sé jafnvel nýrri en nýjasta stöðuga útgáfan. Það er ekki mælt með því að uppfæra.'; +$lang['vs_same'] = 'Núverandi útgáfa þín af DokuWiki er þegar sú nýjasta. Engin þörf er á uppfærslu.'; +$lang['vs_plugin'] = 'Það er nýrri útgáfa til af uppfærsluviðbótinni (%s). Þú ættir að uppfæra viðbótina áður en þú heldur áfram.'; +$lang['vs_ssl'] = 'PHP virðist ekki styðja SSL strauma. Það mun líklegast mistakast að hala niður gögnin sem vantar. Uppfærðu handvirkt í staðinn.'; +$lang['dl_from'] = 'Sæki safnskrá frá %s...'; +$lang['dl_fail'] = 'Niðurhal mistókst.'; +$lang['dl_done'] = 'Niðurhali lokið (%s).'; +$lang['pk_extract'] = 'Afþjappa safnskrá...'; +$lang['pk_fail'] = 'Afþjöppun mistókst.'; +$lang['pk_done'] = 'Afþjöppun lokið.'; +$lang['pk_version'] = 'DokuWiki %s er tilbúinn til innsetningar (þú ert að nota %s eins og er.)'; +$lang['ck_start'] = 'Athuga réttindi...'; +$lang['ck_done'] = 'Allar skrár eru yfirskrifanlegar. Tilbúin til uppfærslu.'; +$lang['ck_fail'] = 'Sumar skrár eru ekki yfirskrifanlegar. Sjálfvirk uppfærsla er ekki möguleg.'; +$lang['cp_start'] = 'Uppfæri skrár...'; +$lang['cp_done'] = 'Allar skrár uppfærðar.'; +$lang['cp_fail'] = 'Æ og ó! Eitthvað fór úrskeiðis. Þú ættir að skoða þetta handvirkt.'; +$lang['tv_noperm'] = '%s er ekki yfirskrifanleg!'; +$lang['tv_upd'] = '%s verður uppfærð.'; +$lang['tv_nocopy'] = 'Gat ekki afritað skrá %s!'; +$lang['tv_nodir'] = 'Gat ekki búið til skráarsafn %s!'; +$lang['tv_done'] = 'uppfærði %s'; +$lang['rm_done'] = 'Úreldri skrá %s eytt.'; +$lang['rm_fail'] = 'Gat ekki eytt úreldri skrá %s. Vinsamlegast eyddu henni handvirkt!'; +$lang['finish'] = 'Uppfærsla tókst! Njóttu nýja DokuWikisins.'; +$lang['btn_continue'] = 'Halda áfram'; +$lang['btn_abort'] = 'Hætta við'; +$lang['step_version'] = 'Athuga'; +$lang['step_download'] = 'Sækja'; +$lang['step_unpack'] = 'Afþjappa'; +$lang['step_check'] = 'Staðfesta'; +$lang['step_upgrade'] = 'Innsetja'; +$lang['careful'] = 'Villur að ofan! Þú ættir ekki að halda áfram!'; diff --git a/sources/lib/plugins/upgrade/lang/is/safemode.txt b/sources/lib/plugins/upgrade/lang/is/safemode.txt new file mode 100755 index 0000000..0a22b41 --- /dev/null +++ b/sources/lib/plugins/upgrade/lang/is/safemode.txt @@ -0,0 +1 @@ +Þessi wiki er stilltur á að nota safemode breytinguna. Því miður getum við ekki uppfært wiki-inn örugglega undir þessum skilyrðum. Vinsamlegast [[doku>install:upgrade|uppfærðu wiki-inn handvirkt]]. \ No newline at end of file diff --git a/sources/lib/plugins/upgrade/lang/is/step0.txt b/sources/lib/plugins/upgrade/lang/is/step0.txt new file mode 100755 index 0000000..c644f05 --- /dev/null +++ b/sources/lib/plugins/upgrade/lang/is/step0.txt @@ -0,0 +1,7 @@ +Þessi viðbót mun sjálfvirkt uppfæra wiki-inn þinn í nýjustu DokuWiki útgáfu. Áður en haldið er áfram ættir þú að lesa [[doku>changes|Breytingasöguna]] til að sjá hvort einhver viðbótar skref þurfi að taka fyrir eða eftir uppfærslu. + +Til að leyfa sjálfvirka uppfærslu þarf PHP forritið skriftar-réttindi á DokuWiki skrárnar. Viðbótin mun athuga hvort viðeigandi réttindi séu til staðar áður en uppfærslan hefst. + +Þessi viðbót mun ekki uppfæra neinar innsettar viðbætur eða skapalón. + +Við mælum með því að þú takir afrit af wiki-inum þínum áður en þú heldur áfram. \ No newline at end of file diff --git a/sources/lib/plugins/upgrade/lang/it/lang.php b/sources/lib/plugins/upgrade/lang/it/lang.php new file mode 100755 index 0000000..9e2bf76 --- /dev/null +++ b/sources/lib/plugins/upgrade/lang/it/lang.php @@ -0,0 +1,48 @@ + + * @author Fabio + * @author Torpedo + */ +$lang['menu'] = 'Aggiornamento della Wiki'; +$lang['vs_php'] = 'La nuova versione DokuWiki necessita almeno di PHP %s, ma stai utilizzando %s. E\' necessario aggiornare PHP prima di aggiornare DokuWiki.'; +$lang['vs_tgzno'] = 'Impossibile determinare la nuova versione di DokuWiki.'; +$lang['vs_tgz'] = 'DokuWiki %s è disponibile per il download.'; +$lang['vs_local'] = 'Attualmente stai utilizzando DokuWiki %s.'; +$lang['vs_localno'] = 'Non è stato possibile determinare l\'età della versione DokuWiki in uso; si raccomanda di eseguire un aggiornamento manuale.'; +$lang['vs_newer'] = 'Sembra che la versione corrente di DokuWiki sia più recente dell\'ultima release stabile. L\'aggiornamento è sconsigliato.'; +$lang['vs_same'] = 'La versione DokuWiki che si sta usando è già aggiornata. Non è necessario alcun aggiornamento.'; +$lang['vs_plugin'] = 'C\'è un nuovo plugin di aggiornamento disponibile (%s); si consiglia di aggiornare il plugin di aggiornamento prima di continuare.'; +$lang['vs_ssl'] = 'La versione PHP in uso sembra non supportare stream SSL: il download dei dati probabilmente fallirà. Sarà necessario aggiornare manualmente.'; +$lang['dl_from'] = 'Sto scaricando l\'archivio da %s...'; +$lang['dl_fail'] = 'Download fallito.'; +$lang['dl_done'] = 'Download completato (%s).'; +$lang['pk_extract'] = 'Scompattando l\'archivio...'; +$lang['pk_fail'] = 'Scompattamento fallito.'; +$lang['pk_done'] = 'Scompattamento completo.'; +$lang['pk_version'] = 'DokuWiki %s è pronto per essere installato (attualmente stai eseguendo %s).'; +$lang['ck_start'] = 'Controllo i permessi sui file...'; +$lang['ck_done'] = 'Tutti i file sono scrivibili. Pronto per aggiornare.'; +$lang['ck_fail'] = 'Alcuni file non sono scrivibili. L\'aggiornamento automatico non è possibile.'; +$lang['cp_start'] = 'Aggiornamento file...'; +$lang['cp_done'] = 'Tutti i file sono aggiornati.'; +$lang['cp_fail'] = 'Uh-Oh! Qualcosa è andato storto. Meglio controllare a mano.'; +$lang['tv_noperm'] = '%s non è scrivibile!'; +$lang['tv_upd'] = '%s sarà aggiornato.'; +$lang['tv_nocopy'] = 'Non posso copiare il file %s!'; +$lang['tv_nodir'] = 'Non posso creare la directory %s!'; +$lang['tv_done'] = 'aggiornato %s'; +$lang['rm_done'] = '%s deprecato cancellato.'; +$lang['rm_fail'] = 'Non posso cancellare %s deprecato. Per favore cancellalo a mano!'; +$lang['finish'] = 'Aggiornamento completato. Divertiti con la tua nuova DokuWiki'; +$lang['btn_continue'] = 'Continua'; +$lang['btn_abort'] = 'Annulla'; +$lang['step_version'] = 'Controllo'; +$lang['step_download'] = 'Download'; +$lang['step_unpack'] = 'Scompattamento'; +$lang['step_check'] = 'Verifica'; +$lang['step_upgrade'] = 'Installazione'; +$lang['careful'] = 'Ci sono degli errori qua sopra! Non dovresti continuare!'; diff --git a/sources/lib/plugins/upgrade/lang/it/safemode.txt b/sources/lib/plugins/upgrade/lang/it/safemode.txt new file mode 100755 index 0000000..2296327 --- /dev/null +++ b/sources/lib/plugins/upgrade/lang/it/safemode.txt @@ -0,0 +1 @@ +Questa wiki è configurata per usare il trucco safemode. Sfortunatamente non possiamo aggiornare senza rischi la wiki automaticamente sotto queste condizioni. Per favore [[doku>install:upgrade|aggiorna la tua wiki manualmente]]. \ No newline at end of file diff --git a/sources/lib/plugins/upgrade/lang/it/step0.txt b/sources/lib/plugins/upgrade/lang/it/step0.txt new file mode 100755 index 0000000..b7e1a36 --- /dev/null +++ b/sources/lib/plugins/upgrade/lang/it/step0.txt @@ -0,0 +1,7 @@ +Questo plugin aggiornerà automaticamente la wiki alla versione più recente disponibile di DokuWiki. Prima di continuare è consigliabile leggere il [[doku>changes|Changelog]] e controllare che non ci siano operazioni aggiuntive da eseguire prima o dopo l'aggiornamento. + +Per permettere l'aggiornamento automatico, il processo PHP necessita di impostare i permessi sui file DokuWiki. Il plugin controllerà i permessi necessari prima di avviare il processo di aggiornamento. + +Questo procedimento non aggiornerà nessun plugin installato e nessun template. + +Raccomandiamo di creare un backup della vostra wiki prima di continuare. \ No newline at end of file diff --git a/sources/lib/plugins/upgrade/lang/ja/lang.php b/sources/lib/plugins/upgrade/lang/ja/lang.php new file mode 100755 index 0000000..af93ff3 --- /dev/null +++ b/sources/lib/plugins/upgrade/lang/ja/lang.php @@ -0,0 +1,46 @@ + + */ +$lang['menu'] = 'Wiki のアップグレード'; +$lang['vs_php'] = '新しい DokuWiki には PHP %s 以上が必要ですが %s が稼働中です。DokuWiki のアップグレード前に PHP のアップグレードが必要です!'; +$lang['vs_tgzno'] = 'DokuWiki の最新バージョンが確認できませんでした。'; +$lang['vs_tgz'] = 'DokuWiki %s がダウンロード可能です。'; +$lang['vs_local'] = 'DokuWiki %s が稼働中です。'; +$lang['vs_localno'] = '稼働中のバージョンが明確でないので手動でのアップグレードをお勧めします。'; +$lang['vs_newer'] = '稼働中の DokuWiki は、最新の安定版リリースよりも新しいです。アップグレードはお勧めしません。'; +$lang['vs_same'] = 'この DokuWiki は既に最新です。アップグレードする必要はありません。'; +$lang['vs_plugin'] = '新しいアップグレードプラグインが利用可能です(%s) 。続行する前に、プラグインの更新が必要です。'; +$lang['vs_ssl'] = 'PHP が SSL 接続に未対応っぽいので、データのダウンロードができません。手動でアップグレードして下さい。'; +$lang['dl_from'] = '%s からアーカイブをダウンロード中...'; +$lang['dl_fail'] = 'ダウンロードが失敗しました。'; +$lang['dl_done'] = 'ダウンロードが完了しました(%s)。'; +$lang['pk_extract'] = 'アーカイブを解凍中...'; +$lang['pk_fail'] = '解凍が失敗しました。'; +$lang['pk_done'] = '解凍が完了しました。'; +$lang['pk_version'] = 'DokuWiki %s をインストールする準備ができました(現在 %s を実行中です)。'; +$lang['ck_start'] = 'ファイル権限を確認中...'; +$lang['ck_done'] = '全ファイルが書込み可能です。アップグレードする準備ができました。'; +$lang['ck_fail'] = 'いくつかのファイルが書込不可です。自動アップグレードは不可能です。'; +$lang['cp_start'] = 'ファイルの更新中...'; +$lang['cp_done'] = '全ファイルの更新完了。'; +$lang['cp_fail'] = '何かが間違っていました。手動で確認して下さい。'; +$lang['tv_noperm'] = '%s は書込み不可です!'; +$lang['tv_upd'] = '%s は更新可能です。'; +$lang['tv_nocopy'] = '%s ファイルがコピーできませんでした!'; +$lang['tv_nodir'] = '%s ディレクトリが作成できませんでした!'; +$lang['tv_done'] = '%s の更新完了。'; +$lang['rm_done'] = '廃止予定の %s の削除完了。'; +$lang['rm_fail'] = '廃止予定の %s が削除できませんでした。手動で削除して下さい!'; +$lang['finish'] = 'アップグレードが完了しました。新しい DokuWiki をお楽しみ下さい。'; +$lang['btn_continue'] = '続行'; +$lang['btn_abort'] = '中止'; +$lang['step_version'] = '確認'; +$lang['step_download'] = 'ダウンロード'; +$lang['step_unpack'] = '解凍'; +$lang['step_check'] = '検証'; +$lang['step_upgrade'] = 'インストール'; +$lang['careful'] = '重大なエラー!続行すべきではありません!'; diff --git a/sources/lib/plugins/upgrade/lang/ja/safemode.txt b/sources/lib/plugins/upgrade/lang/ja/safemode.txt new file mode 100755 index 0000000..f01e9d0 --- /dev/null +++ b/sources/lib/plugins/upgrade/lang/ja/safemode.txt @@ -0,0 +1 @@ +このWikiは、セーフモードハックを使用するように設定されています。残念ながら、この設定では自動で安全に Wiki のアップグレードができません。[[doku>ja:install:upgrade|手動でWiki のアップグレード]]をしてください。 diff --git a/sources/lib/plugins/upgrade/lang/ja/step0.txt b/sources/lib/plugins/upgrade/lang/ja/step0.txt new file mode 100755 index 0000000..025b0fb --- /dev/null +++ b/sources/lib/plugins/upgrade/lang/ja/step0.txt @@ -0,0 +1,9 @@ +このプラグインは、稼働中の DokuWiki を利用可能な最新バージョンにアップグレードします。 +続行する前に、[[doku>ja:changes|更新履歴]]を読んで、アップグレードの前後に実行すべき追加の手順があるかどうかを確認してください。 + +自動アップグレードのために、DokuWikiのファイルは PHP プロセスからの書き込み権限が必要です。 +実際にアップグレードする前に、必要なファイルのアクセス権を検証します。 + +インストール済のプラグインやテンプレートはアップグレードされません。 + +処理を続行する前に wiki のバックアップの作成をお勧めします。 \ No newline at end of file diff --git a/sources/lib/plugins/upgrade/lang/ko/lang.php b/sources/lib/plugins/upgrade/lang/ko/lang.php new file mode 100755 index 0000000..7e2ef2b --- /dev/null +++ b/sources/lib/plugins/upgrade/lang/ko/lang.php @@ -0,0 +1,46 @@ + + */ +$lang['menu'] = '위키 업그레이드'; +$lang['vs_php'] = '새 도쿠위키 릴리스는 적어도 PHP %s이(가) 필요하지만, 현재 %s을(를) 실행하고 있습니다. 업그레이드하기 전에 PHP 버전을 업그레이드해야 합니다!'; +$lang['vs_tgzno'] = '도쿠위키의 최신 버전을 확인할 수 없습니다.'; +$lang['vs_tgz'] = '도쿠위키 %s을(를) 다운로드할 수 있습니다.'; +$lang['vs_local'] = '현재 도쿠위키 %s을(를) 실행하고 있습니다.'; +$lang['vs_localno'] = '현재 실행 중인 버전은 얼마나 오래되었는지 분명하지 않습니다, 수동 업그레이드를 권장합니다.'; +$lang['vs_newer'] = '현재 도쿠위키가 최신 안정 릴리스보다 새 릴리스인 것으로 보입니다. 업그레이드하지 않는 것이 좋습니다.'; +$lang['vs_same'] = '현재 도쿠위키가 이미 최신입니다. 업그레이드할 필요가 없습니다.'; +$lang['vs_plugin'] = '새 upgrade 플러그인을 사용할 수 있으므로 (%s) 계속하기 전에 플러그인을 업데이트해야 합니다.'; +$lang['vs_ssl'] = 'PHP가 SSL 스트림을 지원하지 않은 것으로 보이며, 필요한 데이터를 다운로드하는 것은 실패할 가능성이 높습니다. 대신 수동으로 업그레이드하세요.'; +$lang['dl_from'] = '%s에서 아카이브 다운로드 중...'; +$lang['dl_fail'] = '다운로드가 실패되었습니다.'; +$lang['dl_done'] = '다운로드가 완료되었습니다. (%s)'; +$lang['pk_extract'] = '아카이브를 압축 푸는 중...'; +$lang['pk_fail'] = '압축 풀기가 실패되었습니다.'; +$lang['pk_done'] = '압축 풀기가 완료되었습니다.'; +$lang['pk_version'] = '도쿠위키 %s은(는) 설치할 준비가 되어 있습니다. (현재 %s을(를) 실행하고 있습니다)'; +$lang['ck_start'] = '파일 권한 확인 중...'; +$lang['ck_done'] = '모든 파일을 쓸 수 있습니다. 업그레이드를 준비합니다.'; +$lang['ck_fail'] = '일부 파일을 쓸 수 없습니다. 자동으로 업그레이드는 할 수 없습니다.'; +$lang['cp_start'] = '파일을 업데이트 중...'; +$lang['cp_done'] = '모든 파일을 업데이트했습니다.'; +$lang['cp_fail'] = '어머나. 무언가가 잘못되었습니다. 수동으로 잘 확인하세요.'; +$lang['tv_noperm'] = '%s을(를) 쓸 수 없습니다!'; +$lang['tv_upd'] = '%s은(는) 업데이트됩니다.'; +$lang['tv_nocopy'] = '%s 파일을 복사할 수 없습니다!'; +$lang['tv_nodir'] = '%s 디렉터리를 만들 수 없습니다!'; +$lang['tv_done'] = '%s을(를) 업데이트했습니다'; +$lang['rm_done'] = '사용되지 않는 %s은(는) 삭제되었습니다.'; +$lang['rm_fail'] = '사용되지 않는 %s을(를) 삭제할 수 없습니다. 수동으로 삭제하세요!'; +$lang['finish'] = '업그레이드가 완료되었습니다. 새 도쿠위키를 즐기세요'; +$lang['btn_continue'] = '계속'; +$lang['btn_abort'] = '중단'; +$lang['step_version'] = '확인'; +$lang['step_download'] = '다운로드'; +$lang['step_unpack'] = '압축 풀기'; +$lang['step_check'] = '검증'; +$lang['step_upgrade'] = '설치'; +$lang['careful'] = '위에 오류가 있습니다! 계속해서는 안됩니다!'; diff --git a/sources/lib/plugins/upgrade/lang/ko/safemode.txt b/sources/lib/plugins/upgrade/lang/ko/safemode.txt new file mode 100755 index 0000000..366c3de --- /dev/null +++ b/sources/lib/plugins/upgrade/lang/ko/safemode.txt @@ -0,0 +1 @@ +이 위키는 안전 모드 해킹을 사용하도록 설정되어 있습니다. 불행히도 이 조건에서 자동으로 안전하게 위키를 업그레이드할 수 없습니다. [[doku>install:upgrade|수동으로 위키를 업그레이드]]하세요. \ No newline at end of file diff --git a/sources/lib/plugins/upgrade/lang/ko/step0.txt b/sources/lib/plugins/upgrade/lang/ko/step0.txt new file mode 100755 index 0000000..f52bee5 --- /dev/null +++ b/sources/lib/plugins/upgrade/lang/ko/step0.txt @@ -0,0 +1,7 @@ +이 플러그인은 자동으로 사용할 수 있는 최신 도쿠위키 버전으로 위키를 업그레이드합니다. 계속하기 전에, 업그레이드하기 전이나 후에 수행하기 위한 어떤 추가 단계가 있는지 확인하기 위해 [[doku>changes|바뀜기록]]을 읽어야 합니다. + +자동으로 업그레이드를 허용하려면, PHP 프로세스에는 도쿠위키 파일에 쓰기 권한이 필요합니다. 플러그인은 업그레이드 과정을 시작하기 전에 필요한 파일 권한을 확인합니다. + +이 플러그인은 어떠한 설치된 플러그인이나 템플릿도 업그레이드하지 않습니다. + +계속하기 전에 위키의 백업을 만드는 것이 좋습니다. \ No newline at end of file diff --git a/sources/lib/plugins/upgrade/lang/nl/lang.php b/sources/lib/plugins/upgrade/lang/nl/lang.php new file mode 100755 index 0000000..d21eed8 --- /dev/null +++ b/sources/lib/plugins/upgrade/lang/nl/lang.php @@ -0,0 +1,49 @@ + + * @author Peter van Diest + * @author Toon + * @author Joachim David + */ +$lang['menu'] = 'Wiki-upgrade'; +$lang['vs_php'] = 'Nieuwe Dokuwiki releases hebben minstens PHP %s nodig, maar je gebruikt %s. Je moet eerst je PHP-versie vernieuwen voor je Dokuwiki vernieuwt!'; +$lang['vs_tgzno'] = 'Kan niet de laatste versie van Dokuwiki bepalen.'; +$lang['vs_tgz'] = 'DokuWiki %s is beschikbaar voor download.'; +$lang['vs_local'] = 'Je gebruikt nu DokuWiki %s.'; +$lang['vs_localno'] = 'Het is niet duidelijk hoe oud de versie is die je nu gebruikt, handmatige upgrade is aan te raden.'; +$lang['vs_newer'] = 'Het lijkt erop dat je huidige Dokuwiki nog nieuwer is dan de laatste stabiele release. Een upgrade is niet aan te raden.'; +$lang['vs_same'] = 'Je huidige Dokuwiki is al up-to-date. Een upgrade is niet nodig.'; +$lang['vs_plugin'] = 'Er is een nieuwere upgrade-plugin beschikbaar (%s), je kunt de plugin beter vernieuwen voor je verder gaat.'; +$lang['vs_ssl'] = 'Je PHP lijkt SSL-streams niet te ondersteunen, het downloaden van de benodigde data zal waarschijnlijk misgaan. Voer een handmatige upgrade uit.'; +$lang['dl_from'] = 'Archief wordt van %s gedownload...'; +$lang['dl_fail'] = 'Download is mislukt.'; +$lang['dl_done'] = 'Download is compleet (%s)'; +$lang['pk_extract'] = 'Archief uitpakken...'; +$lang['pk_fail'] = 'Uitpakken mislukt.'; +$lang['pk_done'] = 'Uitpakken voltooid.'; +$lang['pk_version'] = 'DokuWiki %s is klaar om geïnstalleerd te worden. (Op dit moment gebnruik je %s.)'; +$lang['ck_start'] = 'Bestandspermissies controleren...'; +$lang['ck_done'] = 'Alle bestanden zijn beschrijfbaar. Klaar om te upgraden.'; +$lang['ck_fail'] = 'Sommige bestanden zijn niet beschrijfbaar. Automatische upgrade niet mogelijk.'; +$lang['cp_start'] = 'Bestanden updaten...'; +$lang['cp_done'] = 'Alle bestanden zijn geüpdatet.'; +$lang['cp_fail'] = 'Ow-ow. Er ging iets fout. Controleer dit best handmatig.'; +$lang['tv_noperm'] = '%s is niet beschrijfbaar!'; +$lang['tv_upd'] = '%s zal worden geüpdatet.'; +$lang['tv_nocopy'] = 'Kan het bestand %s niet kopiëren!'; +$lang['tv_nodir'] = 'De map %s kan niet aangemaakt worden!'; +$lang['tv_done'] = '%s is geüpdatet.'; +$lang['rm_done'] = 'Verouderde %s verwijderd.'; +$lang['rm_fail'] = 'Verouderde %s kan niet worden verwijderd. Verwijder alsjeblieft handmatig!'; +$lang['finish'] = 'Upgrade compleet. Geniet van je nieuwe DokuWiki'; +$lang['btn_continue'] = 'Doorgaan'; +$lang['btn_abort'] = 'Afbreken'; +$lang['step_version'] = 'Controleer'; +$lang['step_download'] = 'Download'; +$lang['step_unpack'] = 'Pak uit'; +$lang['step_check'] = 'Verifiëer'; +$lang['step_upgrade'] = 'Installeer'; +$lang['careful'] = 'Fouten in het bovenstaande! Ga niet door!'; diff --git a/sources/lib/plugins/upgrade/lang/nl/safemode.txt b/sources/lib/plugins/upgrade/lang/nl/safemode.txt new file mode 100755 index 0000000..a3f440b --- /dev/null +++ b/sources/lib/plugins/upgrade/lang/nl/safemode.txt @@ -0,0 +1 @@ +Deze wiki is geconfigureerd om de safemode hack te gebruiken. Helaas kunnen we onder die omstandigheden de wiki niet automatisch upgraden. [[doku>install:upgrade|Upgrade je wiki alsjeblieft handmatig]]. \ No newline at end of file diff --git a/sources/lib/plugins/upgrade/lang/nl/step0.txt b/sources/lib/plugins/upgrade/lang/nl/step0.txt new file mode 100755 index 0000000..5d5b13a --- /dev/null +++ b/sources/lib/plugins/upgrade/lang/nl/step0.txt @@ -0,0 +1,7 @@ +Deze plugin vernieuwt je wiki automatisch naar de nieuwste beschikbare Dokuwiki-versie. Lees voor je verder gaat de [[doku>changes|Changelog]] om te zien of je voor of na de upgrade nog extra stappen moet doen. + +Voor een automatische upgrade heeft het PHP-proces schrijfrechten op de Dokuwiki-bestanden nodig. De plugin checkt de benodigde bestandsrechten alvorens de upgrade te starten. + +De plugin vernieuwt geen geïnstalleerde plugins of templates + +We raden aan vóór je verder gaat een backup van je wiki te maken. \ No newline at end of file diff --git a/sources/lib/plugins/upgrade/lang/no/lang.php b/sources/lib/plugins/upgrade/lang/no/lang.php new file mode 100755 index 0000000..799e418 --- /dev/null +++ b/sources/lib/plugins/upgrade/lang/no/lang.php @@ -0,0 +1,48 @@ + + * @author Arne Hanssen + */ +$lang['menu'] = 'Wiki-oppgradering'; +$lang['vs_php'] = 'Den nye DokuWiki-utgaven trenger minst PHP %s, men du kjører %s. +Du bør oppgradere PHP-versjonen din før du oppgraderer wikien!'; +$lang['vs_tgzno'] = 'Kan ikke fastslå den nyeste versjonen av DokuWiki.'; +$lang['vs_tgz'] = 'DokuWiki %s er tilgjengelig for nedlastning.'; +$lang['vs_local'] = 'Du kjører for øyeblikket DokuWiki %s.'; +$lang['vs_localno'] = 'Det er ikke mulig å fastslå hvor gammel din nåværende versjon er. Manuell oppgradering anbefales.'; +$lang['vs_newer'] = 'Det ser ut til at nåværende Dokuwiki er nyere enn siste stabile utgave. Oppdatering anbefales ikke.'; +$lang['vs_same'] = 'Din nåværende DokuWiki er allerede nyeste utgave. Ingen behov for oppgradering.'; +$lang['vs_plugin'] = 'Det fins en nyere oppgraderingsutvidelse (%s). Du bør oppdatere denne utvidelsen før du fortsetter.'; +$lang['vs_ssl'] = 'Din PHP synes å ikke støtte SSL-strømming. Nedlastingen vil derfor trolig feile. Oppgrader manuelt i stedet.'; +$lang['dl_from'] = 'Laster ned filarkiv fra %s...'; +$lang['dl_fail'] = 'Nedlastningen mislyktes.'; +$lang['dl_done'] = 'Nedlastningen er fullført (%s).'; +$lang['pk_extract'] = 'Pakker ut filarkivet...'; +$lang['pk_fail'] = 'Utpakkingen mislyktes.'; +$lang['pk_done'] = 'Utpakkingen er fullført.'; +$lang['pk_version'] = 'DokuWiki %s er klar til å installere (Du kjører for øyeblikket %s).'; +$lang['ck_start'] = 'Kontrollerer filtillatelser...'; +$lang['ck_done'] = 'Alle filer har skrivetillatelse. Klar til oppgradering.'; +$lang['ck_fail'] = 'Noen filer har ikke skrivetillatelse. Automatisk oppgradering er ikke mulig.'; +$lang['cp_start'] = 'Oppdaterer filer...'; +$lang['cp_done'] = 'Alle filene er oppdatert.'; +$lang['cp_fail'] = 'Huff. Noe gikk galt. Sjekk feilen manuelt.'; +$lang['tv_noperm'] = ' %s har ikke skrivetillatelse!'; +$lang['tv_upd'] = '%s vil oppdateres.'; +$lang['tv_nocopy'] = 'Kunne ikke kopiere filen %s!'; +$lang['tv_nodir'] = 'Kunne ikke opprette katalogen %s!'; +$lang['tv_done'] = 'oppdatert %s'; +$lang['rm_done'] = 'Utgått %s slettet.'; +$lang['rm_fail'] = 'Kunne ikke slette utgått %s. Vennligst slett manuelt!'; +$lang['finish'] = 'Oppgraderingen er fullført. Nyt din nye DokuWiki'; +$lang['btn_continue'] = 'Fortsett'; +$lang['btn_abort'] = 'Avbryt'; +$lang['step_version'] = 'Kontrollér'; +$lang['step_download'] = 'Last ned'; +$lang['step_unpack'] = 'Pakk ut'; +$lang['step_check'] = 'Verifisér'; +$lang['step_upgrade'] = 'Installér'; +$lang['careful'] = 'Se feil over! Du bør ikke fortsette!'; diff --git a/sources/lib/plugins/upgrade/lang/no/safemode.txt b/sources/lib/plugins/upgrade/lang/no/safemode.txt new file mode 100755 index 0000000..4d7d9ae --- /dev/null +++ b/sources/lib/plugins/upgrade/lang/no/safemode.txt @@ -0,0 +1,2 @@ +Wikien er konfigurert for å bruke safemode hack. Uheldigvis kan vi ikke sikkert oppgradere wikien automatisk under slike forhold. +Vennligst [[doku>install:upgrade|oppgrader wikien manuelt]]. \ No newline at end of file diff --git a/sources/lib/plugins/upgrade/lang/no/step0.txt b/sources/lib/plugins/upgrade/lang/no/step0.txt new file mode 100755 index 0000000..38c9ce6 --- /dev/null +++ b/sources/lib/plugins/upgrade/lang/no/step0.txt @@ -0,0 +1,7 @@ +Denne programutvidelsen vil automatisk oppgradere din wiki til den nyeste stabile versjonen av DokuWiki. Før du fortsetter bør du lese [[doku>changes|Changelog]] for å sjekke om det er noen du må gjøre i tillegg til selve oppdateringen. + +Denne automatisk oppgraderingen krever at PHP-prosessen har skrivetillatelse for DokuWiki-filer. Programutvidelsen vil selv sjekke om de nødvendige filtillatelsene er på plass før oppgraderingen starter. + +Programutvidelsen vil ikke oppgradere installerte utvidelser eller maler. + +Vi anbefaler at du tar en sikkerhetskopi av wikien før du fortsetter. \ No newline at end of file diff --git a/sources/lib/plugins/upgrade/lang/pt-br/lang.php b/sources/lib/plugins/upgrade/lang/pt-br/lang.php new file mode 100644 index 0000000..7097fbd --- /dev/null +++ b/sources/lib/plugins/upgrade/lang/pt-br/lang.php @@ -0,0 +1,16 @@ + + */ +$lang['menu'] = 'Atualização do wiki'; +$lang['vs_php'] = 'Para essa versão do DokuWiki é necessário, no mínimo, a versão %s do PHP, mas a sua versão atual é a %s. Por favor, atualize a versão do PHP antes de prosseguir com a atualização do DokuWiki.'; +$lang['vs_tgzno'] = 'Não foi possível determinar qual a versão mais recente do DokuWiki.'; +$lang['vs_tgz'] = 'O DokuWiki %s está disponível para download.'; +$lang['vs_local'] = 'Atualmente você está executando a versão %s do DokuWiki.'; +$lang['vs_localno'] = 'Não foi possível avaliar o quão antiga é a sua versão do DokuWiki. Recomenda-se a atualização manual.'; +$lang['vs_newer'] = 'Aparentemente a versão do seu DokuWiki é mais recente do que a última versão estável. A atualização não é recomendável.'; +$lang['vs_same'] = 'A sua versão do DokuWiki está atualizada. Não é necessária nenhuma atualização.'; +$lang['vs_plugin'] = 'Existe uma versão mais recente do plugin de atualização (%s). Você deveria atualizar o plugin antes de continuar.'; diff --git a/sources/lib/plugins/upgrade/lang/pt/lang.php b/sources/lib/plugins/upgrade/lang/pt/lang.php new file mode 100644 index 0000000..70ddb8c --- /dev/null +++ b/sources/lib/plugins/upgrade/lang/pt/lang.php @@ -0,0 +1,47 @@ + + */ +$lang['menu'] = 'Atualização Wiki'; +$lang['vs_php'] = 'A nova versão do DokuWiki necessita ao menos PHP %s, mas você está utilizando %s. +Você deve fazer atualizar sua versão do PHP antes de continuar a atualização!'; +$lang['vs_tgzno'] = 'Não foi possível determinar a versão mais nova do DokuWiki.'; +$lang['vs_tgz'] = 'DokuWiki %s está disponível para download.'; +$lang['vs_local'] = 'Você está atualmente rodando DokuWiki %s.'; +$lang['vs_localno'] = 'Não está claro qual a sua versão, é recomendado a atualização manual.'; +$lang['vs_newer'] = 'Parece que seu DokuWiki é mais recente que a última versão estável. Atualização não recomendável.'; +$lang['vs_same'] = 'Seu DokuWiki já é a versão mais recente. Não necessita de atualização.'; +$lang['vs_plugin'] = 'Há uma nova atualização de plugin disponível (%s) você deve atualizar o plugin antes de continuar.'; +$lang['vs_ssl'] = 'Seu PHP parece não suportar SSL, download da informação necessária irá falhar. Atualize manualmente.'; +$lang['dl_from'] = 'Fazendo download de %s...'; +$lang['dl_fail'] = 'Falha de download.'; +$lang['dl_done'] = 'Download completo (%s).'; +$lang['pk_extract'] = 'Descompactando...'; +$lang['pk_fail'] = 'Falha de descompactação.'; +$lang['pk_done'] = 'Descompactação completada.'; +$lang['pk_version'] = 'DokuWiki %s já está instalado (Você está rodando a versão %s).'; +$lang['ck_start'] = 'Verificando permissões de arquivo ...'; +$lang['ck_done'] = 'Todos os arquivos são graváveis. Pronto para atualizar.'; +$lang['ck_fail'] = 'Alguns arquivos não são graváveis. Não é possível a atualização automática.'; +$lang['cp_start'] = 'Atualizando arquivos ...'; +$lang['cp_done'] = 'Todos os arquivos atualizados.'; +$lang['cp_fail'] = 'Uh-Oh. Algo deu errado. Melhor verificar manualmente.'; +$lang['tv_noperm'] = '%s não é gravável!'; +$lang['tv_upd'] = '%s será atualizado.'; +$lang['tv_nocopy'] = 'Não foi possível copiar o arquivo %s!'; +$lang['tv_nodir'] = 'Não foi possível criar o diretório %s!'; +$lang['tv_done'] = '%s atualizado!'; +$lang['rm_done'] = '%s obsoleto excluído.'; +$lang['rm_fail'] = 'Não foi possível excluir %s obsoleto. Por favor, apague manualmente! '; +$lang['finish'] = 'Atualizar concluída. Aproveite o seu novo DokuWiki'; +$lang['btn_continue'] = 'Continue'; +$lang['btn_abort'] = 'Abortar'; +$lang['step_version'] = 'Checar'; +$lang['step_download'] = 'Download'; +$lang['step_unpack'] = 'Descompactar'; +$lang['step_check'] = 'Verificar'; +$lang['step_upgrade'] = 'Instalar'; +$lang['careful'] = 'Erros acima! Você não deve continuar!'; diff --git a/sources/lib/plugins/upgrade/lang/pt/safemode.txt b/sources/lib/plugins/upgrade/lang/pt/safemode.txt new file mode 100644 index 0000000..37287d7 --- /dev/null +++ b/sources/lib/plugins/upgrade/lang/pt/safemode.txt @@ -0,0 +1 @@ +Este wiki é configurado para usar o modo seguro. Infelizmente, não podemos atualizar automaticamente com segurança o wiki sob estas condições. Por favor [[doku>install:upgrade|atualize seu wiki manualmente]]. \ No newline at end of file diff --git a/sources/lib/plugins/upgrade/lang/pt/step0.txt b/sources/lib/plugins/upgrade/lang/pt/step0.txt new file mode 100644 index 0000000..6140737 --- /dev/null +++ b/sources/lib/plugins/upgrade/lang/pt/step0.txt @@ -0,0 +1,7 @@ +Este plugin irá atualizar automaticamente o seu wiki para a versão mais recente disponível do DokuWiki. Antes de continuar, você deve ler o [[doku>changes|Changelog]] para verificar se existem quaisquer passos adicionais que você deva realizar antes ou após a atualização. + +Para permitir a atualização automática, o processo PHP requer permissões de gravação para arquivos Dokuwiki. O plugin irá verificar as permissões de arquivos necessários antes de iniciar o processo de atualização. + +Este plugin não irá atualizar nenhum plugin ou modelos instalados. + +Nós recomendamos que você crie um backup do seu wiki antes de continuar. \ No newline at end of file diff --git a/sources/lib/plugins/upgrade/lang/ru/lang.php b/sources/lib/plugins/upgrade/lang/ru/lang.php new file mode 100755 index 0000000..0fbffd4 --- /dev/null +++ b/sources/lib/plugins/upgrade/lang/ru/lang.php @@ -0,0 +1,50 @@ + + * @author Aleksandr Selivanov + * @author Vladimir Rozhkov + * @author Vitaly Filatenko + * @author TyanNN + */ +$lang['menu'] = 'Обновление вики'; +$lang['vs_php'] = 'Новые версии «Докувики» требуют PHP версии не менее %s, но у вас установлена %s. Вы должны обновить PHP до новой версии перед обновлением.'; +$lang['vs_tgzno'] = 'Нет возможности определить новую версию «Докувики».'; +$lang['vs_tgz'] = '«Докувики» %s доступна для скачивания.'; +$lang['vs_local'] = 'У вас запущена «Докувики» %s.'; +$lang['vs_localno'] = 'Невозможно определить последнюю установленную версию, рекомендуется ручное обновление. '; +$lang['vs_newer'] = 'Похоже, текущая версия вашей «Докувики» новее последней стабильной сборки. Обновление не рекомендовано.'; +$lang['vs_same'] = 'Ваша «Докувики» уже обновлена до последней версии. Обновление не нужно.'; +$lang['vs_plugin'] = 'Доступна новая версия плагина обновления (%s). Вы должны переустановить плагин обновления до обновления «Докувики».'; +$lang['vs_ssl'] = 'Похоже, что ваш PHP не поддерживает SSL, процесс загрузки может завершиться неудачей. Рекомендуется ручное обновление.'; +$lang['dl_from'] = 'Загрузка архива из %s...'; +$lang['dl_fail'] = 'Ошибка загрузки.'; +$lang['dl_done'] = 'Загрузка завершена (%s).'; +$lang['pk_extract'] = 'Распаковка архива...'; +$lang['pk_fail'] = 'Ошибка распаковки.'; +$lang['pk_done'] = 'Распаковка завершена'; +$lang['pk_version'] = '«Докувики» %s уже установлена (текущая установка %s).'; +$lang['ck_start'] = 'Проверка прав доступа к файлам...'; +$lang['ck_done'] = 'Все файлы доступны для записи. Готово к обновлению.'; +$lang['ck_fail'] = 'Некоторые файлы недоступны для записи. Автообновление невозможно.'; +$lang['cp_start'] = 'Обновление файлов...'; +$lang['cp_done'] = 'Все файлы обновлены.'; +$lang['cp_fail'] = 'Ой... Что-то пошло не так. Лучше проверить вручную.'; +$lang['tv_noperm'] = 'Не могу записать %s!'; +$lang['tv_upd'] = '%s будет обновлён.'; +$lang['tv_nocopy'] = 'Невозможно скопировать файл %s!'; +$lang['tv_nodir'] = 'Невозможно создать папку %s!'; +$lang['tv_done'] = 'обновление %s'; +$lang['rm_done'] = 'Устаревший %s удалён.'; +$lang['rm_fail'] = 'Невозможно удалить устаревший %s. Пожалуйста, удалите вручную!'; +$lang['finish'] = 'Обновление завершено. Наслаждайтесь своей новой «Докувики»'; +$lang['btn_continue'] = 'Продолжить'; +$lang['btn_abort'] = 'Отменить'; +$lang['step_version'] = 'Отменить'; +$lang['step_download'] = 'Загрузить'; +$lang['step_unpack'] = 'Распаковать'; +$lang['step_check'] = 'Проверить'; +$lang['step_upgrade'] = 'Установить'; +$lang['careful'] = 'Ошибки выше! Продолжать не стоит!'; diff --git a/sources/lib/plugins/upgrade/lang/ru/safemode.txt b/sources/lib/plugins/upgrade/lang/ru/safemode.txt new file mode 100755 index 0000000..8faeb7f --- /dev/null +++ b/sources/lib/plugins/upgrade/lang/ru/safemode.txt @@ -0,0 +1 @@ +Ваша вики настроена с использованием safemode, поэтому не может быть обновлена в автоматическом режиме. Пожалуйста, ознакомьтесь с разделом [[doku>ru:install:upgrade|Обновление]]. \ No newline at end of file diff --git a/sources/lib/plugins/upgrade/lang/ru/step0.txt b/sources/lib/plugins/upgrade/lang/ru/step0.txt new file mode 100755 index 0000000..0e81d27 --- /dev/null +++ b/sources/lib/plugins/upgrade/lang/ru/step0.txt @@ -0,0 +1,7 @@ +Плагин будет автоматически обновлять вашу вики до последней доступной версии «Докувики». Перед продолжением вы должны прочесть [[doku>changes|журнал изменений]] (англ.), чтобы узнать о дополнительных шагах, которые нужно будет выполнить до или после обновления. + +Чтобы обновления автоматически устанавливались, PHP-процессу требуются права для записи файлов «Докувики». Плагин обновления проверит налиие прав перед началом процесса обновления. + +Плагин не будет обновлять уже установленные плагины или шаблоны (темы оформления). + +Рекомендуем вам создать резервную копию вашей вики **до** обновления. \ No newline at end of file diff --git a/sources/lib/plugins/upgrade/lang/tr/lang.php b/sources/lib/plugins/upgrade/lang/tr/lang.php new file mode 100755 index 0000000..01a6f77 --- /dev/null +++ b/sources/lib/plugins/upgrade/lang/tr/lang.php @@ -0,0 +1,45 @@ + + */ +$lang['menu'] = 'Wiki Yükseltme'; +$lang['vs_php'] = 'Yeni DokuWiki sürümü en azından PHP %s gerektirir, ancak siz %s kullanıyorsunuz. Devam etmeden önce PHP sürümünüzü yükseltmelisiniz.'; +$lang['vs_tgzno'] = 'DokuWiki\'nin en yeni sürümü tespit edilemedi.'; +$lang['vs_tgz'] = 'DokuWiki %s indirilmek için hazır.'; +$lang['vs_local'] = 'Kullanmakta olduğunuz DokuWiki %s.'; +$lang['vs_localno'] = 'Kullandığınız sürümün tarihi tespit edilemedi. Elle yükseltme yapmanız tavsiye edilir.'; +$lang['vs_newer'] = 'Görünüşe göre en güncel kararlı sürümden daha yeni bir DokuWiki kullanıyorsunuz. Yükseltme yapmanız önerilmez.'; +$lang['vs_same'] = 'DokuWiki\'niz güncel. Yükseltmeye gerek yok.'; +$lang['vs_plugin'] = 'Yükseltme eklentisinin daha güncel bir sürümü mevcut (%s) Devam etmeden önce eklentiyi güncellemelisiniz.'; +$lang['vs_ssl'] = 'Görünüşe göre PHP oturumunuz SSL yayınlarını desteklemiyor. Gerekli dosyaların indirilmesi yüksek ihtimalle başarısız olacak. Elle güncelleme yapmanız önerilir.'; +$lang['dl_from'] = 'Arşiv, %s adresinden indiriliyor...'; +$lang['dl_fail'] = 'İndirme başarısız oldu.'; +$lang['dl_done'] = 'İndirme tamamlandı (%s).'; +$lang['pk_extract'] = 'Arşiv açılıyor...'; +$lang['pk_fail'] = 'Arşivin açılması başarısız oldu.'; +$lang['pk_done'] = 'Arşivin açıklası tamamlandı.'; +$lang['pk_version'] = 'DokuWiki %s , kurulmaya hazır (Şu an kullanmakta olduğunuz sürüm %s).'; +$lang['ck_start'] = 'Dosya izinleri kontrol ediliyor...'; +$lang['ck_done'] = 'Tüm dosyalar yazılabilir. Yükseltme için hazır.'; +$lang['ck_fail'] = 'Bazı dosyalar yazılabilir değil. Otomatik yükseltme mümkün değil.'; +$lang['cp_start'] = 'Dosyalar güncelleniyor...'; +$lang['cp_done'] = 'Tüm dosyalar güncellendi.'; +$lang['cp_fail'] = 'Offf! Birşey yanlış gitti. En iyisi elle kontrol edin.'; +$lang['tv_noperm'] = '%s yazılabilir değil!'; +$lang['tv_upd'] = '%s güncellenecek.'; +$lang['tv_nocopy'] = '%s dosyası kopyalanamıyor!'; +$lang['tv_nodir'] = '%s klasörü oluşturulamıyor!'; +$lang['tv_done'] = '%s güncellendi'; +$lang['rm_done'] = 'Çakışan %s silindi.'; +$lang['rm_fail'] = 'Çakışan %s silinemiyor. Lütfen elle silin!'; +$lang['finish'] = 'Yükseltme tamamlandı. Yeni DokuWiki\'nizin keyfini çıkarın'; +$lang['btn_continue'] = 'Devam et'; +$lang['btn_abort'] = 'İptal'; +$lang['step_version'] = 'Kontrol et'; +$lang['step_download'] = 'İndir'; +$lang['step_unpack'] = 'Doayaları çıkar'; +$lang['step_check'] = 'Doğrula'; +$lang['step_upgrade'] = 'Kur'; diff --git a/sources/lib/plugins/upgrade/lang/tr/safemode.txt b/sources/lib/plugins/upgrade/lang/tr/safemode.txt new file mode 100755 index 0000000..b589751 --- /dev/null +++ b/sources/lib/plugins/upgrade/lang/tr/safemode.txt @@ -0,0 +1 @@ +Bu wiki safemod hack kullanacak şekilde yapılandırılmış. Ne yazık ki bu şartlar altında wikiyi otomatik olarak güvenli bir şekilde yükseltemeyiz. Lütfen [[doku>install:upgrade|wikinizin elle yükseltilmesi (İngilizce)]] sayfasındaki talimatları okuyun. \ No newline at end of file diff --git a/sources/lib/plugins/upgrade/lang/tr/step0.txt b/sources/lib/plugins/upgrade/lang/tr/step0.txt new file mode 100755 index 0000000..9debf31 --- /dev/null +++ b/sources/lib/plugins/upgrade/lang/tr/step0.txt @@ -0,0 +1,7 @@ +Bu eklenti wikinizi otomatik olarak mecut olan en yeni DokuWiki sürümüne yükseltecek. Devam etmeden önce yapmanız gereken ek basamaklar olup olmadığını [[doku>changes|Changelog]] adresinden kontrol etmeniz önerilir. + +Otomatik yükseltmenin yapılabilmesi için PHP sürecinin DokuWiki dosyalarına yazma hakkı olmalıdır. Eklenti, yükseltme sürecine başlamadan önce gerekli dosya izinlerini kontrol edecektir. + +Bu eklenti, yüklü olan şablon ve eklentileri yükseltmeyecektir. + +Devam etmeden önce wikinizin bir yedeğini oluşturmanızı öneririz. \ No newline at end of file diff --git a/sources/lib/plugins/upgrade/lang/zh-tw/lang.php b/sources/lib/plugins/upgrade/lang/zh-tw/lang.php new file mode 100755 index 0000000..2116eaf --- /dev/null +++ b/sources/lib/plugins/upgrade/lang/zh-tw/lang.php @@ -0,0 +1,45 @@ + + */ +$lang['menu'] = '升級Wiki'; +$lang['vs_php'] = '新版的DokuWiki需要至少PHP %s,但你目前運行的是 %s。你應該要在升級Wiki前先升級你的PHP。'; +$lang['vs_tgzno'] = '無法決定最新的DokuWiki版本。'; +$lang['vs_tgz'] = 'DokuWiki %s 現已可供下載。'; +$lang['vs_local'] = '你目前運行 DokuWiki %s'; +$lang['vs_localno'] = '沒辦法清楚知道你目前運行的版本有多舊,建議手動升級。'; +$lang['vs_newer'] = '看起來你目前的 DokuWiki 版本比最新穩定版本還要新。不建議升級。'; +$lang['vs_same'] = '你目前的 DokuWiki 已經是最新的。沒必要升級。'; +$lang['vs_plugin'] = '有一個新的套件升級版本 (%s) 可供使用。你應該在繼續前先升級該外掛。'; +$lang['vs_ssl'] = '你的 PHP 看起來不支援 SSL 串流加密,下載資料很有可能會失敗。請以手動升級方式替代。'; +$lang['dl_from'] = '從 %s 下載檔案中...'; +$lang['dl_fail'] = '下載失敗'; +$lang['dl_done'] = '下載完成 (%s)'; +$lang['pk_extract'] = '解開檔案中...'; +$lang['pk_fail'] = '解開檔案失敗。'; +$lang['pk_done'] = '解開檔案完成。'; +$lang['pk_version'] = 'DokuWiki版本 %s 已準備好進行安裝 (你目前運行的是 %s).'; +$lang['ck_start'] = '檢查權限'; +$lang['ck_done'] = '所有檔案皆有寫入權限。已準備好升級'; +$lang['ck_fail'] = '部分檔案沒有寫入權限。自動升級是不可能的'; +$lang['cp_start'] = '更新檔案中...'; +$lang['cp_done'] = '所有檔案已更新完成'; +$lang['cp_fail'] = '哦。有東西出錯了。最好手動檢查。'; +$lang['tv_noperm'] = '%s 沒有寫入權限'; +$lang['tv_upd'] = '%s 將進行更新'; +$lang['tv_nocopy'] = '無法複製檔案 %s!'; +$lang['tv_nodir'] = '無法建立資料夾 %s!'; +$lang['tv_done'] = '%s 已更新'; +$lang['rm_done'] = '%s不建議使用並已刪除'; +$lang['rm_fail'] = '沒辦法刪除該遺棄之 %s。請手動刪除之。'; +$lang['finish'] = '升級完成。開始享受你全新的DokuWiki。'; +$lang['btn_continue'] = '繼續'; +$lang['btn_abort'] = '中止'; +$lang['step_version'] = '檢查'; +$lang['step_download'] = '下載'; +$lang['step_unpack'] = '解開'; +$lang['step_check'] = '驗證'; +$lang['step_upgrade'] = '安裝'; diff --git a/sources/lib/plugins/upgrade/lang/zh-tw/safemode.txt b/sources/lib/plugins/upgrade/lang/zh-tw/safemode.txt new file mode 100755 index 0000000..847bdbd --- /dev/null +++ b/sources/lib/plugins/upgrade/lang/zh-tw/safemode.txt @@ -0,0 +1 @@ +這個Wiki被設定成使用 safemode hack。在這個情況下,很不幸的我們沒辦法安全且自動的升級wiki。請[[doku>install:upgrade|手動升級你的wiki]]。 \ No newline at end of file diff --git a/sources/lib/plugins/upgrade/lang/zh-tw/step0.txt b/sources/lib/plugins/upgrade/lang/zh-tw/step0.txt new file mode 100755 index 0000000..385af37 --- /dev/null +++ b/sources/lib/plugins/upgrade/lang/zh-tw/step0.txt @@ -0,0 +1,7 @@ +這個套件會自動升級你的DokuWiki至最新版本。在繼續進行之前,你應該先閱讀[[doku>changes|更新紀錄]]以確認在更新之前是不是有甚麼額外的步驟要進行。 + +為了允許自動更新,PHP程序需要Dokuwiki檔案的寫入權限。該套件在升級之前會自動檢查必要的檔案權限。 + +這個套件不會升級其他已安裝的套件或模板。 + +我們建議你在你的wiki進行升級之前先備份。 \ No newline at end of file diff --git a/sources/lib/plugins/upgrade/lang/zh/lang.php b/sources/lib/plugins/upgrade/lang/zh/lang.php new file mode 100755 index 0000000..621e742 --- /dev/null +++ b/sources/lib/plugins/upgrade/lang/zh/lang.php @@ -0,0 +1,47 @@ + + * @author Mike Gao <1524747399@qq.com> + */ +$lang['menu'] = '升级Wiki'; +$lang['vs_php'] = '新的DokuWiki发行版要求PHP版本至少为 %s,但是您的PHP版本为 %s。升级本发行版之前您应当先升级PHP版本!'; +$lang['vs_tgzno'] = '无法确定DokuWiki的最新版本。'; +$lang['vs_tgz'] = 'DokuWiki %s 已可下载。'; +$lang['vs_local'] = '您正运行的是 DokuWiki %s。'; +$lang['vs_localno'] = '无法确定您所运行的版本,推荐手动升级。'; +$lang['vs_newer'] = '看起来您正运行的版本比最新稳定版更新。不建议升级。'; +$lang['vs_same'] = '您的DokuWiki已是最新版本。无需升级。'; +$lang['vs_plugin'] = '有插件需要更新(%s),您应在继续之前先更新插件。'; +$lang['vs_ssl'] = '您的PHP看起来不支持SSL流,必需数据的下载可能会失败。请手动升级。'; +$lang['dl_from'] = '从 %s 下载压缩包...'; +$lang['dl_fail'] = '下载失败。'; +$lang['dl_done'] = '下载完成 (%s)。'; +$lang['pk_extract'] = '解压中...'; +$lang['pk_fail'] = '解压失败。'; +$lang['pk_done'] = '解压完成。'; +$lang['pk_version'] = 'DokuWiki %s 可安装 (您正在运行 %s)。'; +$lang['ck_start'] = '检查文件权限...'; +$lang['ck_done'] = '所有文件可写。可升级。'; +$lang['ck_fail'] = '一些文件不可写。无法自动升级。'; +$lang['cp_start'] = '更新文件中...'; +$lang['cp_done'] = '所有文件已更新。'; +$lang['cp_fail'] = '啊哦。有些地方出了些问题。请手动检查。'; +$lang['tv_noperm'] = '%s不可写!'; +$lang['tv_upd'] = '%s 将被更新。'; +$lang['tv_nocopy'] = '无法复制%s文件!'; +$lang['tv_nodir'] = '无法创建文件夹%s!'; +$lang['tv_done'] = '更新%s'; +$lang['rm_done'] = '旧版%s已删除。'; +$lang['rm_fail'] = '无法删除旧版%s请手动删除!'; +$lang['finish'] = '升级完成。请享受新版DokuWiki!'; +$lang['btn_continue'] = '继续'; +$lang['btn_abort'] = '中止'; +$lang['step_version'] = '检查'; +$lang['step_download'] = '下载'; +$lang['step_unpack'] = '解压'; +$lang['step_check'] = '检验'; +$lang['step_upgrade'] = '安装'; +$lang['careful'] = '产生了错误!你不应该继续!'; diff --git a/sources/lib/plugins/upgrade/lang/zh/safemode.txt b/sources/lib/plugins/upgrade/lang/zh/safemode.txt new file mode 100755 index 0000000..8adf736 --- /dev/null +++ b/sources/lib/plugins/upgrade/lang/zh/safemode.txt @@ -0,0 +1 @@ +本Wiki被设为使用安全模式。在此状态下我们无法安全升级Wiki。请 [[doku>install:upgrade|手动升级您的Wiki]]。 \ No newline at end of file diff --git a/sources/lib/plugins/upgrade/lang/zh/step0.txt b/sources/lib/plugins/upgrade/lang/zh/step0.txt new file mode 100755 index 0000000..f26ecf4 --- /dev/null +++ b/sources/lib/plugins/upgrade/lang/zh/step0.txt @@ -0,0 +1,7 @@ +本插件会自动升级您的Wiki到最新DokuWiki版本。在继续之前,您应当阅读[[doku>changes|更新说明]]来了解是否有额外的步骤需要您在升级前后进行。 + +为了能够自动升级,PHP进程需要某些DokuWiki文件的写入权限。插件将在开始升级之前检查必需文件的权限。 + +本插件不会升级任何已安装的插件或模板。 + +我们建议您在继续之前先备份Wiki数据。 \ No newline at end of file diff --git a/sources/lib/plugins/upgrade/manager.dat b/sources/lib/plugins/upgrade/manager.dat new file mode 100644 index 0000000..dca32b0 --- /dev/null +++ b/sources/lib/plugins/upgrade/manager.dat @@ -0,0 +1,2 @@ +downloadurl=https://github.com/splitbrain/dokuwiki-plugin-upgrade/zipball/master +installed=Sun, 20 Nov 2016 19:29:37 +0000 diff --git a/sources/lib/plugins/upgrade/plugin.info.txt b/sources/lib/plugins/upgrade/plugin.info.txt new file mode 100755 index 0000000..c62fd5f --- /dev/null +++ b/sources/lib/plugins/upgrade/plugin.info.txt @@ -0,0 +1,7 @@ +base upgrade +author Andreas Gohr +email andi@splitbrain.org +date 2016-05-24 +name DokuWiki Upgrade Plugin +desc Automatically upgrade your DokuWiki install to the most recent stable release +url http://www.dokuwiki.org/plugin:upgrade diff --git a/sources/lib/plugins/upgrade/style.css b/sources/lib/plugins/upgrade/style.css new file mode 100755 index 0000000..731b11c --- /dev/null +++ b/sources/lib/plugins/upgrade/style.css @@ -0,0 +1,97 @@ +#plugin__upgrade { + margin: 0 auto; + height: 20em; + overflow: auto; +} + +#plugin__upgrade_form { + display: block; + overflow: auto; + margin: 1em; + font-size: 120%; +} + +#plugin__upgrade_careful { + float: right; + text-align: right; + margin-right: 1em; + color: red; +} + +#plugin__upgrade_form { + clear: right; +} + +#plugin__upgrade_form button { + float: right; + margin-left: 0.5em; +} + +#plugin__upgrade_form button.careful { + opacity: 0.5; +} + +/* based on http://cssdeck.com/labs/progress-bar */ + +#plugin__upgrade_meter { + height: 20px; + position: relative; + margin: 3em 1em 1em 1em; +} + +#plugin__upgrade_meter ol { + margin: 0; + padding: 0; + display: block; + height: 100%; + border-radius: 10px; + background-color: #ddd; + position: relative; + list-style: none; +} +#plugin__upgrade_meter ol li { + float: left; + margin: 0; + padding: 0; + text-align: right; + width: 19%; + position: relative; + border-radius: 10px; +} + +#plugin__upgrade_meter ol li span{ + right:-0.5em; + display: block; + text-align: center; +} +#plugin__upgrade_meter ol li .step { + top: -0.4em; + padding: .2em 0; + border: 3px solid #ddd; + z-index: 99; + font-size: 1.25em; + color: #ddd; + width: 1.5em; + font-weight: 700; + position: absolute; + background-color: #fff; + border-radius: 50%; +} +#plugin__upgrade_meter ol li .stage { + color: #fff; + font-weight: 700; +} + +#plugin__upgrade_meter ol li.active { + height: 20px; + background: #aaa; +} + +#plugin__upgrade_meter ol li.active span.stage { + color: #000; +} + +#plugin__upgrade_meter ol li.active span.step{ + color: #000; + border: 3px solid __link__; +} diff --git a/sources/lib/plugins/vshare/README b/sources/lib/plugins/vshare/README new file mode 100755 index 0000000..8859d5b --- /dev/null +++ b/sources/lib/plugins/vshare/README @@ -0,0 +1,25 @@ +vshare Plugin for DokuWiki + +All documentation for this plugin can be found at +http://www.dokuwiki.org/plugin:vshare + +If you install this plugin manually, make sure it is installed in +lib/plugins/vshare/ - if the folder is called different it +will not work! + +Please refer to http://www.dokuwiki.org/plugins for additional info +on how to install plugins in DokuWiki. + +---- +Copyright (C) Andreas Gohr + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; version 2 of the License + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +See the COPYING file in your DokuWiki folder for details diff --git a/sources/lib/plugins/vshare/all.css b/sources/lib/plugins/vshare/all.css new file mode 100755 index 0000000..4e296d5 --- /dev/null +++ b/sources/lib/plugins/vshare/all.css @@ -0,0 +1,24 @@ +iframe.vshare__left, +div.vshare__left { + float: left; + margin-right: 1em; +} + +iframe.vshare__right, +div.vshare__right { + float: right; + margin-left: 1em; +} + +iframe.vshare__center, +div.vshare__center { + text-align: center; + margin-left: auto; + margin-right: auto; + display: block; +} + +iframe.vshare__none, +div.vshare__none { +margin: 1px 3px 1px 3px; +} diff --git a/sources/lib/plugins/vshare/button.png b/sources/lib/plugins/vshare/button.png new file mode 100755 index 0000000..d050afa Binary files /dev/null and b/sources/lib/plugins/vshare/button.png differ diff --git a/sources/lib/plugins/vshare/lang/en/lang.php b/sources/lib/plugins/vshare/lang/en/lang.php new file mode 100755 index 0000000..2b968c6 --- /dev/null +++ b/sources/lib/plugins/vshare/lang/en/lang.php @@ -0,0 +1,6 @@ + + */ + +$lang['js']['button'] = 'Insère une vidéo depuis des sites de partage vidéo'; +$lang['js']['prompt'] = 'Copiez/collez le lien complet de la page contenant la vidéo ici :'; +$lang['js']['notfound'] = "Désolé, cette URL n'a pas été reconnue. Consultez la documentation sur la syntaxe pour insérer une vidéo manuellement."; \ No newline at end of file diff --git a/sources/lib/plugins/vshare/lang/ja/lang.php b/sources/lib/plugins/vshare/lang/ja/lang.php new file mode 100755 index 0000000..9c93296 --- /dev/null +++ b/sources/lib/plugins/vshare/lang/ja/lang.php @@ -0,0 +1,10 @@ + + */ + +$lang['js']['button'] = '동영상 공유 사이트에서 동영상 넣기'; +$lang['js']['prompt'] = '여기에 동영상 페이지의 전체 URL을 붙여넣으세요:'; +$lang['js']['notfound'] = "죄송하지만 이 URL을 인식할 수 없습니다.\n수동으로 올바른 문법을 넣는 방법에 대해서는 설명문서를 참조하세요."; diff --git a/sources/lib/plugins/vshare/lang/nl/lang.php b/sources/lib/plugins/vshare/lang/nl/lang.php new file mode 100755 index 0000000..d855df4 --- /dev/null +++ b/sources/lib/plugins/vshare/lang/nl/lang.php @@ -0,0 +1,10 @@ + + */ +$lang['js']['button'] = 'Voeg een video van een video-delen website in'; +$lang['js']['prompt'] = 'Plak hier de volledige URL voor de video pagina:'; +$lang['js']['notfound'] = "Sorry, deze URL werd niet herkend.\nRaadpleeg de documentatie over de juiste syntax om een URL handmatig in te voegen."; diff --git a/sources/lib/plugins/vshare/manager.dat b/sources/lib/plugins/vshare/manager.dat new file mode 100644 index 0000000..b59148c --- /dev/null +++ b/sources/lib/plugins/vshare/manager.dat @@ -0,0 +1,3 @@ +downloadurl=https://github.com/splitbrain/dokuwiki-plugin-vshare/zipball/master +installed=Sun, 20 Nov 2016 19:29:50 +0000 +updated=Sun, 20 Nov 2016 19:30:07 +0000 diff --git a/sources/lib/plugins/vshare/pdf.css b/sources/lib/plugins/vshare/pdf.css new file mode 100755 index 0000000..6238a90 --- /dev/null +++ b/sources/lib/plugins/vshare/pdf.css @@ -0,0 +1,16 @@ + +div.vshare__left, +div.vshare__right, +div.vshare__center { + border: 1px solid #ccc; + text-align: center; + padding: 2em; +} + +a.vshare { + color: #aaa; + font-size: 2em; + font-weight: bold; + text-decoration: none; +} + diff --git a/sources/lib/plugins/vshare/plugin.info.txt b/sources/lib/plugins/vshare/plugin.info.txt new file mode 100755 index 0000000..73feeb9 --- /dev/null +++ b/sources/lib/plugins/vshare/plugin.info.txt @@ -0,0 +1,8 @@ +base vshare +author Andreas Gohr +email andi@splitbrain.org +date 2016-07-02 +name Video Sharing Site Plugin +desc Easily embed videos from various Video Sharing sites. Example: {{youtube>XXXXXX}} +url https://www.dokuwiki.org/plugin:vshare + diff --git a/sources/lib/plugins/vshare/redir.php b/sources/lib/plugins/vshare/redir.php new file mode 100755 index 0000000..5c84e4b --- /dev/null +++ b/sources/lib/plugins/vshare/redir.php @@ -0,0 +1,22 @@ + + * + * Simple redirector script to avoid security warnings when embedding HTTP in SSL secured sites + * + * To avoid open redirects, a secret hash has to be provided + */ +if(!defined('DOKU_INC')) define('DOKU_INC', dirname(__FILE__) . '/../../../'); +define('NOSESSION', true); +require_once(DOKU_INC . 'inc/init.php'); +global $INPUT; + +$url = $INPUT->str('url'); +$hash = $INPUT->str('hash'); + +if(!$url) die('sorry. no url'); +if(!$hash) die('sorry. no hash'); +if($hash != md5(auth_cookiesalt() . 'vshare' . $url)) die('sorry. wrong hash'); + +send_redirect($url); \ No newline at end of file diff --git a/sources/lib/plugins/vshare/script.js b/sources/lib/plugins/vshare/script.js new file mode 100755 index 0000000..3c83426 --- /dev/null +++ b/sources/lib/plugins/vshare/script.js @@ -0,0 +1,116 @@ + +/** + * Append a toolbar button + */ +if(window.toolbar != undefined){ + toolbar[toolbar.length] = {"type": "pluginvshare", + "title": LANG['plugins']['vshare']['button'], + "icon": "../../plugins/vshare/button.png", + "key": ""}; +} + +/** + * Try to determine the video service, extract the ID and insert + * the correct syntax + */ +function tb_pluginvshare(btn, props, edid) { + PluginVShare.edid = edid; + + PluginVShare.buildSyntax(); +} + +var PluginVShare = { + edid: null, + + buildSyntax: function () { + + var text = prompt(LANG['plugins']['vshare']['prompt']); + if (!text) return; + + // This includes the site patterns: + /* DOKUWIKI:include sites.js */ + + for (var key in sites) { + + if(sites.hasOwnProperty(key)) { + var RE = new RegExp(sites[key], 'i'); + var match = text.match(RE); + if (match) { + var urlparam = ''; + var videoid = match[1]; + + switch (key) { + case 'slideshare': + //provided video url? + if(match[2]) { + + jQuery.ajax({ + url: '//www.slideshare.net/api/oembed/2', + dataType: 'jsonp', + data: { + url: match[2], + format: 'jsonp' + } + }).done(function (response, status, error) { + var videoid = response.slideshow_id; + PluginVShare.insert(key, videoid, urlparam); + }).fail(function (data, status, error) { + /* http://www.slideshare.net/developers/oembed + * If not found, an status 200 with response {error:true} is returned, + * but "Content-Type:application/javascript; charset=utf-8" is then + * wrongly changed to "Content-Type:application/json; charset=utf-8" + * so it throws a parseerror + */ + alert(LANG['plugins']['vshare']['notfound']); + }); + return; + } + break; + case 'bliptv': + //provided video url? + if(match[2]) { + + jQuery.ajax({ + url: '//blip.tv/oembed/', + dataType: 'jsonp', + data: { + url: match[2], + format: 'json' + }, + timeout: 2000 + }).done(function (response, status, error) { + var videoidmatch = response.html.match(RE); + PluginVShare.insert(key, videoidmatch[1], urlparam); + }).fail(function (data, status, error) { + /* + * If url is not found(=wrong numerical number on end), blip.tv returns a 404 + * because jsonp is not a xmlhttprequest, there is no 404 catched + * errors are detected by waiting at the timeout + */ + alert(LANG['plugins']['vshare']['notfound']); + }); + return; + } + break; + case 'twitchtv': + if (match[2]) { + urlparam = '&chapter_id=' + match[2]; + } + break; + } + + PluginVShare.insert(key, videoid, urlparam); + return; + } + } + } + + alert(LANG['plugins']['vshare']['notfound']); + }, + + insert: function(key, videoid, urlparam, edid) { + var code = '{{' + key + '>' + videoid + '?medium' + urlparam + '}}'; + insertAtCarret(PluginVShare.edid, code); + } +}; + diff --git a/sources/lib/plugins/vshare/sites.conf b/sources/lib/plugins/vshare/sites.conf new file mode 100755 index 0000000..a28c7d6 --- /dev/null +++ b/sources/lib/plugins/vshare/sites.conf @@ -0,0 +1,27 @@ +# configure video site flash or iframe URLs here, @VIDEO@ is the ID placeholder + +vimeo iframe //player.vimeo.com/video/@VIDEO@ +ustream iframe http://www.ustream.tv/embed/recorded/@VIDEO@ +youtube iframe //www.youtube.com/embed/@VIDEO@ +viddler iframe //www.viddler.com/embed/@VIDEO@/?f=1&autoplay=0&player=mini&hideablecontrolbar=1&smooth=0&disablebranding=0&loop=0&nologo=0&hd=0 +slideshare iframe //www.slideshare.net/slideshow/embed_code/@VIDEO@ +dailymotion iframe //www.dailymotion.com/embed/video/@VIDEO@ +bambuser iframe http://embed.bambuser.com/broadcast/@VIDEO@ +metacafe iframe http://www.metacafe.com/embed/@VIDEO@/ +bliptv iframe //blip.tv/play/@VIDEO@.x?p=1 +break iframe //www.break.com/embed/@VIDEO@?embed=1 +msoffice iframe http://hub.video.msn.com/embed/@VIDEO@/ +archiveorg iframe //archive.org/embed/@VIDEO@ +niconico iframe http://embed.nicovideo.jp/watch/@VIDEO@ + +5min flash http://www.5min.com/Embeded/@VIDEO@/ +clipfish flash //www.clipfish.de/cfng/flash/clipfish_player_3.swf?as=0&vid=@VIDEO@&r=1&angebot=extern& +gtrailers flash http://www.gametrailers.com/remote_wrap.php?mid=@VIDEO@ +myspacetv flash http://lads.myspace.com/videos/vplayer.swf?m=@VIDEO@&v=2&type=video +rcmovie flash http://www.rcmovie.de/embed/@VIDEO@ +scivee flash //www.scivee.tv/flash/embedPlayer.swf?id=@VIDEO@&type=3 +twitchtv flash http://www.twitch.tv/widgets/live_embed_player.swf?channel=@VIDEO@&auto_play=false&start_volume=25 +veoh flash //www.veoh.com/videodetails2.swf?player=videodetailsembedded&type=v&permalinkId=@VIDEO@&id=anonymous +youku flash http://player.youku.com/player.php/sid/@VIDEO@/v.swf +tudou flash http://www.tudou.com/v/@VIDEO@/&resourceId=0_05_05_99&bid=05/v.swf +bilibili flash http://static.hdslb.com/miniloader.swf?aid=@VIDEO@&&page=1 diff --git a/sources/lib/plugins/vshare/sites.js b/sources/lib/plugins/vshare/sites.js new file mode 100755 index 0000000..50abac6 --- /dev/null +++ b/sources/lib/plugins/vshare/sites.js @@ -0,0 +1,36 @@ +/** + * video URL recognition patterns + * + * The first match group is used as video ID + * + * You need to touch conf/local.php to refresh the cache after changing + * this file + */ + +var sites = { + 'youtube': 'youtube\\.com/.*[&?]v=([a-z0-9_\\-]+)', + 'vimeo': 'vimeo\\.com\\/(\\d+)', + 'ustream': 'ustream\\.tv\\/recorded\\/(\\d+)\\/', + '5min': '5min\\.com\\/Video/.*-([0-9]+)([&?]|$)', + 'clipfish': 'clipfishi\\.de\\/.*\\/video\\/([0-9])+\\/', + 'dailymotion': 'dailymotion\\.com\\/video\\/([a-z0-9]+)_', + 'gtrailers': 'gametrailers\\.com\\/.*\\/(\\d+)', + 'metacafe': 'metacafe\\.com\\/watch\\/(\\d+)\\/', + 'myspacetv': 'vids\\.myspace\\.com\\/.*videoid=(\\d+)', + 'rcmovie': 'rcmovie\\.de\\/video\\/([a-f0-9]+)\\/', + 'scivee': 'scivee\\.tv\\/node\\/(\\d+)', + 'twitchtv': 'twitch\\.tv\\/([a-z0-9_\\-]+)(?:\\/c\\/(\\d+))?', + 'veoh': 'veoh\\.com\\/.*watch[^v]*(v[a-z0-9]+)', + 'bambuser': 'bambuser\\.com\\/v\\/(\\d+)', + 'bliptv': '(?:blip\\.tv\\/play\\/([a-zA-Z0-9]+\\.(?:html|x))\\?p=1|(http?\\:\\/\\/blip\\.tv\\/(?!play)(?:[a-zA-Z0-9_\\-]+)\\/(?:[a-zA-Z0-9_\\-]+)))', + 'break': 'break\\.com\\/video\\/(?:(?:[a-z]+)\\/)?(?:[a-z\\-]+)-([0-9]+)', + 'viddler': 'viddler\\.com\\/(?:embed|v)\\/([a-z0-9]{8})', + 'msoffice': '(?:office\\.com.*[&?]videoid=([a-z0-9\\-]+))', + 'slideshare': '(?:(?:slideshare\\.net\\/slideshow\\/embed_code\\/|id=)([0-9]+)|(https?\\:\\/\\/www\\.slideshare\\.net\\/(?:[a-zA-Z0-9_\\-]+)\\/(?:[a-zA-Z0-9_\\-]+)))', + 'archiveorg': 'archive\\.org\\/embed\\/([a-zA-Z0-9_\\-]+)', + 'niconico': 'nicovideo\\.jp/watch/(sm[0-9]+)', + 'youku': 'v\\.youku\\.com/v_show/id_([[0-9A-Za-z]]+)\\.html', + 'tudou': 'tudou\\.com/programs/view/([0-9A-Za-z]+)', + 'bilibili': 'bilibili\\.com/video/av([0-9])+/' +}; + diff --git a/sources/lib/plugins/vshare/syntax.php b/sources/lib/plugins/vshare/syntax.php new file mode 100755 index 0000000..826846f --- /dev/null +++ b/sources/lib/plugins/vshare/syntax.php @@ -0,0 +1,209 @@ + + */ + +if(!defined('DOKU_INC')) die(); +require_once(DOKU_PLUGIN.'syntax.php'); + +class syntax_plugin_vshare extends DokuWiki_Syntax_Plugin { + var $sites; + + /** + * Constructor. + * Intitalizes the supported video sites + */ + function syntax_plugin_vshare(){ + $this->sites = confToHash(dirname(__FILE__).'/sites.conf'); + } + + function getType(){ + return 'substition'; + } + + function getPType(){ + return 'block'; + } + + function getSort(){ + return 159; + } + + + /** + * Connect to the parser + */ + function connectTo($mode) { + $pattern = join('|',array_keys($this->sites)); + $this->Lexer->addSpecialPattern('\{\{\s?(?:'.$pattern.')>[^}]*\}\}',$mode,'plugin_vshare'); + } + + /** + * Parse the parameters + */ + function handle($match, $state, $pos, Doku_Handler $handler){ + $command = substr($match,2,-2); + + // title + list($command,$title) = explode('|',$command); + $title = trim($title); + + // alignment + $align = 0; + if(substr($command,0,1) == ' ') $align += 1; + if(substr($command,-1) == ' ') $align += 2; + $command = trim($command); + + // get site and video + list($site,$vid) = explode('>',$command); + if(!$this->sites[$site]) return null; // unknown site + if(!$vid) return null; // no video!? + + // what size? + list($vid,$param) = explode('?',$vid,2); + if(preg_match('/(\d+)x(\d+)/i',$param,$m)){ // custom + $width = $m[1]; + $height = $m[2]; + }elseif(strpos($param,'small') !== false){ // small + $width = 255; + $height = 210; + }elseif(strpos($param,'large') !== false){ // large + $width = 520; + $height = 406; + }else{ // medium + $width = 425; + $height = 350; + } + + $paramm = array(); + parse_str($param, $paramm); + $urlparam = array(); + foreach($paramm as $key => $value) { + switch($key) { + case 'rel': + case 'autoplay': + case 'ap': + if($paramm[$key] === '1' || $paramm[$key] === '0') { + $urlparam[] = $key . '=' . $paramm[$key]; + } + break; + case 'start': + case 'end': + case 'chapter_id': //for twitch.tv + case 'initial_time': + case 'offsetTime': + case 'startSlide': + $number = (int) $paramm[$key]; + if($number > 0) { + $urlparam[] = $key . '=' . $number; + } + break; + case 'auto_start': + if($paramm[$key] === 'true' || $paramm[$key] === 'false') { + $urlparam[] = $key . '=' . $paramm[$key]; + } + break; + } + } + + list($type, $url) = explode(' ', $this->sites[$site], 2); + $url = trim($url); + $type = trim($type); + $url = str_replace('@VIDEO@',rawurlencode($vid),$url); + $url = str_replace('@WIDTH@',$width,$url); + $url = str_replace('@HEIGHT@',$height,$url); + if(count($urlparam)) { + if(strpos($url, '?') !== false) { + $sepchar = '&'; + } else { + $sepchar = '?'; + } + $url .= $sepchar . implode('&', $urlparam); + } + + list(,$vars) = explode('?',$url,2); + $varr = array(); + parse_str($vars,$varr); + + return array( + 'site' => $site, + 'video' => $vid, + 'url' => $url, + 'vars' => $varr, + 'align' => $align, + 'width' => $width, + 'height' => $height, + 'title' => $title, + 'type' => $type + ); + } + + /** + * Render the flash player + */ + function render($mode, Doku_Renderer $R, $data){ + if($mode != 'xhtml') return false; + if(is_null($data)) return false; + + if($data['align'] == 0) $align = 'none'; + if($data['align'] == 1) $align = 'right'; + if($data['align'] == 2) $align = 'left'; + if($data['align'] == 3) $align = 'center'; + if($data['title']) $title = ' title="'.hsc($data['title']).'"'; + + if(is_a($R,'renderer_plugin_dw2pdf')){ + // Output for PDF renderer + $R->doc .= '
    '; + + $R->doc .= ''; + $R->doc .= ''; + $R->doc .= ''; + + $R->doc .= '
    '; + + $R->doc .= ''; + $R->doc .= ($data['title'] ? hsc($data['title']) : 'Video'); + $R->doc .= ''; + + $R->doc .= '
    '; + }else{ + // use redirector for HTTP embeds on SSL sites + if(is_ssl() && substr($data['url'], 0, 7) == 'http://') { + $data['url'] = DOKU_BASE.'lib/plugins/vshare/redir.php'. + '?url='.rawurlencode($data['url']). + '&hash='.md5(auth_cookiesalt().'vshare'.$data['url']); + } + + // Normal output + if($data['type'] == 'flash') { + // embed flash + $R->doc .= '
    '; + $R->doc .= html_flashobject( + $data['url'], + $data['width'], + $data['height'], + $data['vars'], + $data['vars']); + $R->doc .= '
    '; + }else{ + // embed iframe + $R->doc .= ''; + } + } + } +} diff --git a/sources/lib/plugins/vshare/video.png b/sources/lib/plugins/vshare/video.png new file mode 100755 index 0000000..8bb325e Binary files /dev/null and b/sources/lib/plugins/vshare/video.png differ diff --git a/sources/lib/plugins/wrap/.travis.yml b/sources/lib/plugins/wrap/.travis.yml new file mode 100755 index 0000000..ed124b2 --- /dev/null +++ b/sources/lib/plugins/wrap/.travis.yml @@ -0,0 +1,13 @@ +language: php +php: + - "5.6" + - "5.5" + - "5.4" + - "5.3" +env: + - DOKUWIKI=master + - DOKUWIKI=stable + - DOKUWIKI=old-stable +before_install: wget https://raw.github.com/splitbrain/dokuwiki-travis/master/travis.sh +install: sh travis.sh +script: cd _test && phpunit --stderr --group plugin_wrap diff --git a/sources/lib/plugins/wrap/COPYING b/sources/lib/plugins/wrap/COPYING new file mode 100755 index 0000000..d60c31a --- /dev/null +++ b/sources/lib/plugins/wrap/COPYING @@ -0,0 +1,340 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License. diff --git a/sources/lib/plugins/wrap/README b/sources/lib/plugins/wrap/README new file mode 100755 index 0000000..c0a1118 --- /dev/null +++ b/sources/lib/plugins/wrap/README @@ -0,0 +1 @@ +see plugin.info.txt \ No newline at end of file diff --git a/sources/lib/plugins/wrap/_test/wrap_syntax.test.php b/sources/lib/plugins/wrap/_test/wrap_syntax.test.php new file mode 100644 index 0000000..768c130 --- /dev/null +++ b/sources/lib/plugins/wrap/_test/wrap_syntax.test.php @@ -0,0 +1,243 @@ +pluginsEnabled[] = 'wrap'; + parent::setUp(); + } + + public function test_nestedheading() { + $instructions = p_get_instructions("\n==== Heading ====\n\nSome text\n"); + $expected = + array( + array( + 'document_start', + array(), + 0 + ), + array( + 'plugin', + array( + 'wrap_divwrap', + array( + DOKU_LEXER_ENTER, + '' + ), + 1 + ), + array( + 'header', + array( + 'Heading', + 3, + 8 + ), + 8 + ), + array( + 'plugin', + array( + 'wrap_closesection', + array(), + DOKU_LEXER_SPECIAL, + false + ), + 8 + ), + array( + 'p_open', + array(), + 8 + ), + array( + 'cdata', + array( + 'Some text' + ), + 27 + ), + array( + 'p_close', + array(), + 37 + ), + array( + 'plugin', + array( + 'wrap_divwrap', + array( + DOKU_LEXER_EXIT, + '' + ), + DOKU_LEXER_EXIT, + '' + ), + 37 + ), + array( + 'document_end', + array(), + 37 + ) + ); + $this->assertEquals($expected, $instructions); + } + + public function test_blocknesting() { + $instructions = p_get_instructions("\nFoo\n\n Bar\n"); + $expected = + array( + array( + 'document_start', + array(), + 0 + ), + array( + 'plugin', + array( + 'wrap_divwrap', + array( + DOKU_LEXER_ENTER, + '' + ), + 1 + ), + array( + 'p_open', + array( + ), + 1 + ), + array( + 'cdata', + array( + 'Foo' + ), + 8 + ), + array( + 'p_close', + array(), + 11 + ), + array( + 'p_open', + array( + ), + 11 + ), + array( + 'cdata', + array( + ' Bar' + ), + 13 + ), + array( + 'p_close', + array(), + 33 + ), + array( + 'plugin', + array( + 'wrap_divwrap', + array( + DOKU_LEXER_EXIT, + '' + ), + DOKU_LEXER_EXIT, + '' + ), + 33 + ), + array( + 'document_end', + array(), + 33 + ) + ); + $this->assertEquals($expected, $instructions); + } + + public function test_inlinenesting() { + $instructions = p_get_instructions("Foo Bar"); + $expected = + array( + array( + 'document_start', + array(), + 0 + ), + array( + 'p_open', + array( + ), + 0 + ), + array( + 'plugin', + array( + 'wrap_spanwrap', + array( + DOKU_LEXER_ENTER, + '' + ), + 1 + ), + array( + 'cdata', + array( + 'Foo Bar' + ), + 7 + ), + array( + 'plugin', + array( + 'wrap_spanwrap', + array( + DOKU_LEXER_EXIT, + '' + ), + DOKU_LEXER_EXIT, + '' + ), + 32 + ), + array( + 'cdata', + array( + '' + ), + 39 + ), + array( + 'p_close', + array(), + 39 + ), + array( + 'document_end', + array(), + 39 + ) + ); + $this->assertEquals($expected, $instructions); + } + +} \ No newline at end of file diff --git a/sources/lib/plugins/wrap/action.php b/sources/lib/plugins/wrap/action.php new file mode 100755 index 0000000..2a47fca --- /dev/null +++ b/sources/lib/plugins/wrap/action.php @@ -0,0 +1,152 @@ + + */ + +// must be run within Dokuwiki +if(!defined('DOKU_INC')) die(); + +if(!defined('DOKU_PLUGIN')) define('DOKU_PLUGIN',DOKU_INC.'lib/plugins/'); +require_once(DOKU_PLUGIN.'action.php'); + +class action_plugin_wrap extends DokuWiki_Action_Plugin { + + /** + * register the eventhandlers + * + * @author Andreas Gohr + */ + function register(Doku_Event_Handler $controller){ + $controller->register_hook('TOOLBAR_DEFINE', 'AFTER', $this, 'handle_toolbar', array ()); + $controller->register_hook('HTML_SECEDIT_BUTTON', 'BEFORE', $this, 'handle_secedit_button'); + } + + function handle_toolbar(Doku_Event $event, $param) { + $syntaxDiv = $this->getConf('syntaxDiv'); + $syntaxSpan = $this->getConf('syntaxSpan'); + + $event->data[] = array ( + 'type' => 'picker', + 'title' => $this->getLang('picker'), + 'icon' => '../../plugins/wrap/images/toolbar/picker.png', + 'list' => array( + array( + 'type' => 'format', + 'title' => $this->getLang('column'), + 'icon' => '../../plugins/wrap/images/toolbar/column.png', + 'open' => '<'.$syntaxDiv.' group>\n<'.$syntaxDiv.' half column>\n', + 'close' => '\n\n\n<'.$syntaxDiv.' half column>\n\n\n\n', + ), + array( + 'type' => 'format', + 'title' => $this->getLang('box'), + 'icon' => '../../plugins/wrap/images/toolbar/box.png', + 'open' => '<'.$syntaxDiv.' center round box 60%>\n', + 'close' => '\n\n', + ), + array( + 'type' => 'format', + 'title' => $this->getLang('info'), + 'icon' => '../../plugins/wrap/images/note/16/info.png', + 'open' => '<'.$syntaxDiv.' center round info 60%>\n', + 'close' => '\n\n', + ), + array( + 'type' => 'format', + 'title' => $this->getLang('tip'), + 'icon' => '../../plugins/wrap/images/note/16/tip.png', + 'open' => '<'.$syntaxDiv.' center round tip 60%>\n', + 'close' => '\n\n', + ), + array( + 'type' => 'format', + 'title' => $this->getLang('important'), + 'icon' => '../../plugins/wrap/images/note/16/important.png', + 'open' => '<'.$syntaxDiv.' center round important 60%>\n', + 'close' => '\n\n', + ), + array( + 'type' => 'format', + 'title' => $this->getLang('alert'), + 'icon' => '../../plugins/wrap/images/note/16/alert.png', + 'open' => '<'.$syntaxDiv.' center round alert 60%>\n', + 'close' => '\n\n', + ), + array( + 'type' => 'format', + 'title' => $this->getLang('help'), + 'icon' => '../../plugins/wrap/images/note/16/help.png', + 'open' => '<'.$syntaxDiv.' center round help 60%>\n', + 'close' => '\n\n', + ), + array( + 'type' => 'format', + 'title' => $this->getLang('download'), + 'icon' => '../../plugins/wrap/images/note/16/download.png', + 'open' => '<'.$syntaxDiv.' center round download 60%>\n', + 'close' => '\n\n', + ), + array( + 'type' => 'format', + 'title' => $this->getLang('todo'), + 'icon' => '../../plugins/wrap/images/note/16/todo.png', + 'open' => '<'.$syntaxDiv.' center round todo 60%>\n', + 'close' => '\n\n', + ), + array( + 'type' => 'insert', + 'title' => $this->getLang('clear'), + 'icon' => '../../plugins/wrap/images/toolbar/clear.png', + 'insert' => '<'.$syntaxDiv.' clear/>\n', + ), + array( + 'type' => 'format', + 'title' => $this->getLang('em'), + 'icon' => '../../plugins/wrap/images/toolbar/em.png', + 'open' => '<'.$syntaxSpan.' em>', + 'close' => '', + ), + array( + 'type' => 'format', + 'title' => $this->getLang('hi'), + 'icon' => '../../plugins/wrap/images/toolbar/hi.png', + 'open' => '<'.$syntaxSpan.' hi>', + 'close' => '', + ), + array( + 'type' => 'format', + 'title' => $this->getLang('lo'), + 'icon' => '../../plugins/wrap/images/toolbar/lo.png', + 'open' => '<'.$syntaxSpan.' lo>', + 'close' => '', + ), + ) + ); + } + + /** + * Handle section edit buttons, prevents section buttons inside the wrap plugin from being rendered + * + * @param Doku_Event $event The event object + * @param array $param Parameters for the event + */ + public function handle_secedit_button(Doku_Event $event, $param) { + // counter of the number of currently opened wraps + static $wraps = 0; + $data = $event->data; + + if ($data['target'] == 'plugin_wrap_start') { + ++$wraps; + } elseif ($data['target'] == 'plugin_wrap_end') { + --$wraps; + } elseif ($wraps > 0 && $data['target'] == 'section') { + $event->preventDefault(); + $event->stopPropagation(); + $event->result = ''; + } + } +} + diff --git a/sources/lib/plugins/wrap/all.css b/sources/lib/plugins/wrap/all.css new file mode 100755 index 0000000..b987c40 --- /dev/null +++ b/sources/lib/plugins/wrap/all.css @@ -0,0 +1,321 @@ +/******************************************************************** +Screen and Print Styles for the Wrap Plugin +********************************************************************/ + +/* resetting the box model to something more sane makes life a whole lot easier */ +.dokuwiki .plugin_wrap { + -moz-box-sizing: border-box; + -webkit-box-sizing: border-box; + box-sizing: border-box; +} + +/* tables in columns and boxes should span the whole width */ +.dokuwiki .plugin_wrap table { + width: 100%; +} +/* emulate a headline */ +.dokuwiki .plugin_wrap em strong { + font-size: 130%; + font-weight: bold; + font-style: normal; + display: block; +} +/* emulate a bigger headline with a bottom border */ +.dokuwiki .plugin_wrap em strong em.u { + font-size: 115%; + border-bottom: 1px solid __border__; + font-style: normal; + text-decoration: none; + display: block; +} +/* different bigger headline for safety notes */ +.dokuwiki .wrap_danger em strong em.u, +.dokuwiki .wrap_warning em strong em.u, +.dokuwiki .wrap_caution em strong em.u, +.dokuwiki .wrap_notice em strong em.u, +.dokuwiki .wrap_safety em strong em.u { + text-transform: uppercase; + border-bottom-width: 0; +} +/* change border colour of emulated headlines inside boxes to something more neutral + (to match all the different background colours) */ +.dokuwiki .wrap_box em strong em.u, +.dokuwiki .wrap_info em strong em.u, +.dokuwiki .wrap_important em strong em.u, +.dokuwiki .wrap_alert em strong em.u, +.dokuwiki .wrap_tip em strong em.u, +.dokuwiki .wrap_help em strong em.u, +.dokuwiki .wrap_todo em strong em.u, +.dokuwiki .wrap_download em strong em.u { + border-bottom-color: #999; +} + +/* real headlines should not be indented inside a wrap */ +.dokuwiki .plugin_wrap h1, +.dokuwiki .plugin_wrap h2, +.dokuwiki .plugin_wrap h3, +.dokuwiki .plugin_wrap h4, +.dokuwiki .plugin_wrap h5 { + margin-left: 0; + margin-right: 0; +} + +/* columns +********************************************************************/ + +.dokuwiki .wrap_left, +.dokuwiki .wrap_column { + float: left; + margin-right: 1.5em; +} +[dir=rtl] .dokuwiki .wrap_column { + float: right; + margin-left: 1.5em; + margin-right: 0; +} +.dokuwiki .wrap_right { + float: right; + margin-left: 1.5em; +} +.dokuwiki .wrap_center { + display: block; + margin-left: auto; + margin-right: auto; +} + +/*____________ CSS3 columns ____________*/ + +.dokuwiki .wrap_col2, .dokuwiki .wrap_col3, .dokuwiki .wrap_col4, .dokuwiki .wrap_col5 { + -moz-column-gap: 1.5em; + -webkit-column-gap: 1.5em; + column-gap: 1.5em; + -moz-column-rule: 1px dotted #666; + -webkit-column-rule: 1px dotted #666; + column-rule: 1px dotted #666; +} +.dokuwiki .wrap_col2 { + -moz-column-count: 2; + -webkit-column-count: 2; + column-count: 2; +} +.dokuwiki .wrap_col3 { + -moz-column-count: 3; + -webkit-column-count: 3; + column-count: 3; +} +.dokuwiki .wrap_col4 { + -moz-column-count: 4; + -webkit-column-count: 4; + column-count: 4; +} +.dokuwiki .wrap_col5 { + -moz-column-count: 5; + -webkit-column-count: 5; + column-count: 5; +} + + +/* widths +********************************************************************/ + +.dokuwiki .wrap_half { + width: 48%; + margin-right: 4%; +} + +.dokuwiki .wrap_third { + width: 30%; + margin-right: 5%; +} + +.dokuwiki .wrap_quarter { + width: 22%; + margin-right: 4%; +} + +[dir=rtl] .dokuwiki .wrap_half, +[dir=rtl] .dokuwiki .wrap_third, +[dir=rtl] .dokuwiki .wrap_quarter { + margin-right: 0; + margin-left: 4%; +} +[dir=rtl] .dokuwiki .wrap_third { + margin-left: 5%; +} + +.dokuwiki .wrap_half:nth-of-type(2n), +.dokuwiki .wrap_third:nth-of-type(3n), +.dokuwiki .wrap_quarter:nth-of-type(4n) { + margin-right: 0; +} +[dir=rtl] .dokuwiki .wrap_half:nth-of-type(2n), +[dir=rtl] .dokuwiki .wrap_third:nth-of-type(3n), +[dir=rtl] .dokuwiki .wrap_quarter:nth-of-type(4n) { + margin-left: 0; +} + +.dokuwiki .wrap_half:nth-of-type(2n+1), +.dokuwiki .wrap_third:nth-of-type(3n+1), +.dokuwiki .wrap_quarter:nth-of-type(4n+1) { + clear: left; +} +[dir=rtl] .dokuwiki .wrap_half:nth-of-type(2n+1), +[dir=rtl] .dokuwiki .wrap_third:nth-of-type(3n+1), +[dir=rtl] .dokuwiki .wrap_quarter:nth-of-type(4n+1) { + clear: right; +} + +/* show 2 instead 4 columns on medium sized screens (mobile, etc) */ +@media only screen and (max-width: 950px) { + +.dokuwiki .wrap_quarter { + width: 48%; +} +.dokuwiki .wrap_quarter:nth-of-type(2n) { + margin-right: 0; +} +[dir=rtl] .dokuwiki .wrap_quarter:nth-of-type(2n) { + margin-left: 0; +} +.dokuwiki .wrap_quarter:nth-of-type(2n+1) { + clear: left; +} +[dir=rtl] .dokuwiki .wrap_quarter:nth-of-type(2n) { + clear: right; +} + +} /* /@media */ + +/* show full width on smaller screens (mobile, etc) */ +@media only screen and (max-width: 600px) { + +.dokuwiki .wrap_half, +.dokuwiki .wrap_third, +.dokuwiki .wrap_quarter { + width: auto; + margin-right: 0; + margin-left: 0; + float: none; +} + +} /* /@media */ + + +/* alignments +********************************************************************/ + +.dokuwiki .wrap_leftalign { + text-align: left; +} +.dokuwiki .wrap_centeralign { + text-align: center; +} +.dokuwiki .wrap_rightalign { + text-align: right; +} +.dokuwiki .wrap_justify { + text-align: justify; +} + + +/* box +********************************************************************/ + +/* see styles for boxes and notes with icons in style.css */ + +/*____________ rounded corners ____________*/ +/* (only for modern browsers) */ + +.dokuwiki div.wrap_round { + border-radius: 1.4em; +} +.dokuwiki span.wrap_round { + border-radius: .14em; +} + + +/* mark +********************************************************************/ + +.dokuwiki .wrap_lo { + color: __text_neu__; + font-size: 85%; +} +.dokuwiki .wrap_em { + color: #c00; + font-weight: bold; +} +.dokuwiki .wrap__dark.wrap_em { + color: #f66; +} + +/* see styles for highlighted text in style.css */ + + +/* miscellaneous +********************************************************************/ + +/*____________ indent ____________*/ + +.dokuwiki .wrap_indent { + padding-left: 1.5em; +} +[dir=rtl] .dokuwiki .wrap_indent { + padding-right: 1.5em; + padding-left: 0; +} + + +/*____________ outdent ____________*/ + +.dokuwiki .wrap_outdent { + margin-left: -1.5em; +} +[dir=rtl] .dokuwiki .wrap_outdent { + margin-right: -1.5em; + margin-left: 0; +} + +/*____________ word wrapping in pre ____________*/ + +.dokuwiki div.wrap_prewrap pre { + white-space: pre-wrap; + word-wrap: break-word;/* for IE < 8 */ +} + +/*____________ spoiler ____________*/ + +.dokuwiki div.wrap_spoiler { + margin-bottom: 1.5em; +} +/* see rest of spoiler styles in style.css */ + +/*____________ clear float ____________*/ + +.dokuwiki .wrap_clear { + clear: both; + line-height: 0; + height: 0; + font-size: 1px; + visibility: hidden; + overflow: hidden; +} + +/*____________ hide ____________*/ + +.dokuwiki .wrap_hide { + display: none; +} + + +/*____________ button-style link ____________*/ + +.dokuwiki .wrap_button a:link, +.dokuwiki .wrap_button a:visited { + background-image: none; + border: 1px solid __border__; + border-radius: .3em; + padding: .5em .7em; + text-decoration: none; +} +/* see rest of button link styles in style.css */ diff --git a/sources/lib/plugins/wrap/conf/default.php b/sources/lib/plugins/wrap/conf/default.php new file mode 100755 index 0000000..9a622dd --- /dev/null +++ b/sources/lib/plugins/wrap/conf/default.php @@ -0,0 +1,12 @@ + array(0,1)); +$meta['syntaxDiv'] = array('multichoice','_choices' => array('WRAP','block', 'div')); +$meta['syntaxSpan'] = array('multichoice','_choices' => array('wrap', 'inline', 'span')); +$meta['darkTpl'] = array('onoff'); diff --git a/sources/lib/plugins/wrap/example.txt b/sources/lib/plugins/wrap/example.txt new file mode 100755 index 0000000..5914d3f --- /dev/null +++ b/sources/lib/plugins/wrap/example.txt @@ -0,0 +1,437 @@ +====== Examples for the Wrap Plugin ====== + +===== Basic syntax ===== + +An uppercase **%%%%** (or alternatively **%%%%** or **%%
    %%**) creates a **''div''** and should be used for **"big"** containers, **surrounding** paragraphs, lists, tables, etc. + + + +"big" content + + +or + +"big" content + + +or +
    +"big" content +
    +
    + +A lowercase **%%%%** (or alternatively **%%%%** or **%%%%**) creates a **''span''** and should be used for **"small"** containers, **inside** paragraphs, lists, tables, etc. + + +"small" content + +or +"small" content + +or +"small" content + + +:!: Please note, some things **won't work with lowercase spans**: + * **alignments** (including alignments generated by changing the text direction) + * **multi-columns** + * and **widths** +if the according wrap isn't floated as well. + +A shorthand of uppercase **%%%%** and lowercase **%%%%** are available if the container is empty or unnecessary. + + + +or + +or +
    + + +and + + +or + +or + + + +===== Classes and Styles ===== + + +==== Columns and Floats ==== + +You can have columns easily by adding the class ''column'' and a width, e.g. + ...content... + +The example below uses the following structure: + + + + +...content... +...content... +...content... + + + + + + + +=== Floating Options === + +Normally you would only need the class ''column'', but for more sophisticated uses (not only for columns, but for any other classes, like [[#boxes and notes]] as well) you can have several kinds of "floats": + + * **''column''** is the same as ''left'' in LTR languages and the same as ''right'' in RTL languages + * **''left''** will let you float your wrap on the left + * **''right''** will let the wrap float right + * **''center''** will position the wrap in the horizontal center of the page + +A **table** inside a column or box will always be **100% wide**. This makes positioning and sizing tables possible. + + + + +=== Widths === + +You can set any valid widths (but only on divs): ''%, px, em, ex, pt, pc, cm, mm, in'', but most of the time you'd only want either + +^type^e.g.^note^ +^''%''|''30%''|makes sense in most cases| +^''px''|''420px''|makes sense if your container contains images with a certain width| +^''em''|''20em''|makes sense if you like your wrap container to grow and shrink with the font size| + + + +=== Width Keywords === + +With certain width keywords you can fit your columns automatically to fill the available horizontal space. Those columns will also react to the screen size, so will be responsive and wrap underneath each other on mobile devices. + +There are three width keywords. These should not be combined with any other width. + + * **''half''** fits two columns in a row + * **''third''** fits three columns in a row + * **''quarter''** fits four columns in a row + +:!: Attention: In order to work properly, wraps with width keywords need an **additional ''%%%%'' around a set** of them. + + + + + +You can use the same options with spans (as each element that floats is automatically a block level element), but it probably doesn't make too much sense. :!: Widths on spans normally do not work (by design), but can make sense, when it is floating. + +:!: Attention: What is the difference between widths and width keywords and when is it best to use which? **Widths** can cause problems and will never fully add up, therefore will break the layout under some circumstances. (See [[http://en.wikipedia.org/wiki/Internet_Explorer_box_model_bug|box model]] for a technical explanation.) So, getting widths right will need some fiddling around and testing in various browsers. **Width keywords** on the other hand fit automatically and work better on mobile devices. But the drawback is that they need an extra wrap around them and don't work properly in older browsers (IE8 and under). + +All of those options will also work in the [[#boxes and notes]] wraps (see below). + +=== Old Emulated Headlines === + +Every ''%%//**__text like this__**//%%'' or ''%%//**like that**//%%'' will create an "emulated headline" when used within a box or a column. Now that headlines within wraps are supported, they are not needed anymore, but are still supported for backwards-compatibility. + +If you need text that is bold and italic, simply use it the other way around: ''%%**//No Headline//**%%'' + + +=== Multi-columns === + + +For modern browsers (Firefox, Chrome and Safari, IE10+) you can use multi-columns. Just use **''%%col2%%''** for 2 columns, **''%%col3%%''** for 3 columns, **''%%col4%%''** for 4 columns and **''%%col5%%''** for 5 columns. + +:!: Note: Multi-columns don't make sense for spans. + + +Don't use this for bigger columns containing more than just text. Use the [[#columns and floats]] mentioned above instead. + + +==== Alignments ==== + +You can use these different text alignments: + + * ''leftalign'' + * ''rightalign'' + * ''centeralign'' + * ''justify'' + + +Center aligned text ... + + + +... and right aligned. + + + + +Center aligned text ... + + + +... and right aligned. + + + +:!: You cannot add alignments to spans. + + +==== Boxes and Notes ==== + + +=== round box 500px center === + + * ''box'' creates a box around the container and uses the colours from the template's ''style.ini'' as default colours (''%%__background_alt__%%'' and ''%%__text__%%'') + * any of the classes ''info'', ''tip'', ''important'', ''alert'', ''help'', ''download'', ''todo'' will add a special note container with a corresponding icon + * the classes ''danger'', ''warning'', ''caution'', ''notice'', ''safety'' use safety colours (and no icons) + * ''round'' can be added to anything with a background colour or a border and will only work in modern browsers (no IE8 and under) + + + + +=== Info === + + + + + +=== Tip === + + + + + +=== Important === + + + + + +=== Alert === + + + + + +=== Help === + + + + + +=== Download === + + + + + +=== Todo === + + + + + + + +**Safety Notes:** + + +=== Danger === + + + + +=== Warning === + + + + +=== Caution === + + + + +=== Notice === + + + + +=== Safety === + + + + + + +You can use notes and boxes also inside text with spans like this: +info, help, alert, important, tip, download, todo and round box and danger, warning, caution, notice, safety. + info, help, ... + +==== Marks ==== + +You can mark text as highlighted, less significant and especially emphasised. + + You can mark text as highlighted, less significant and especially emphasised. + +:!: This might look ugly in some templates and should be adjusted accordingly. + +==== Tabs ==== + +You can create a row of tabs by simply wrapping a list of links in ''%%%%''. + + + * [[Some page]] + * [[example|This page]] + * [[Another page]] + + + + * [[Some page]] + * [[example|This page]] + * [[Another page]] + + +:!: Please note, the styling of these tabs depend on the template you are using and not on the wrap plugin. If you only see a list of links and no tabs, please make sure to add "tabs" to the ''noPrefix'' config option and that your template supports at least the 2012-01-25 "Angua" DokuWiki release. + +==== Miscellaneous ==== + +=== Clear float === + +After using any of the float classes, you might come across following text protruding into the space where only the floating containers should be. To prevent that, you should simply add this after your last column: + + + +=== Indent === + +This text will appear indented. + + This text will appear indented. + +=== Outdent === + +This text will appear "outdented". + + This text will appear "outdented". + +=== Prewrap === + + + +Inside this code block the words will wrap to a new line although they are all in one line. + + + + + + Inside this code block the words will wrap to a new line although they are all in one line. + + + +=== Spoiler === + +Here follows a spoiler: Darth Vader is Luke's father. + + Here follows a spoiler: Darth Vader is Luke's father. + +Just select the text in the spoiler box to be able to read its content. + +=== Button links === + +A link that looks like a button: [[wiki:Syntax]] + + A link that looks like a button: [[wiki:Syntax]] + +=== Hide === + +The following text is hidden: John, please revise that sentence. + + The following text is hidden: John, please revise that sentence. + +:!: Warning: The text will still appear in the source code, in non-modern browsers and is searchable. Do not hide any security risky secrets with it! + +=== Pagebreak === + +The following will add a pagebreak: + + The following will add a pagebreak: + +This has no effect on the browser screen. A [[http://reference.sitepoint.com/css/page-break-after|pagebreak]] will force a new page in printouts. + +=== Nopagebreak === + +The following will try to avoid a pagebreak: much content, belonging together (like a long table) + + The following will try to avoid a pagebreak: much content, belonging together (like a long table) + +This also has no effect on the browser screen. It will try to [[http://reference.sitepoint.com/css/page-break-inside|avoid a page break]] in printouts. + +=== Noprint === + +This text appears on the screen, but not in print. + + This text appears on the screen, but not in print. + +=== Onlyprint === + +This text does not appear on the screen, but only in print. + + This text does not appear on the screen, but only in print. + + +==== Combining and Nesting ==== + +You can combine and nest all classes and types of boxes, e.g. + + +===Outer box floats right === + + +Inner nested box floats left and is partly __em__phasized and __hi__ghlighted with a nested __notice__ inside. + + +Text inside outer right box, but beneath inner left box. + + + + +Round tip box underneath, after a ''clear''. + + + + + + + +=== Outer box floats right === + + +Inner nested box floats left and is partly __em__phasized and __hi__ghlighted with a nested __notice__ inside. + + +Text inside outer right box, but beneath inner left box. + + + + +Round tip box underneath, after a ''clear''. + + + + + + +===== Language and Text Direction ===== + +You can change the language and the reading direction of a wrap container by simply adding a colon followed by the language code, like this: + + + +זה עברית. ((This means "This is Hebrew.", at least according to [[http://translate.google.com/|Google Translate]].)) + + + + +זה עברית. ((This means "This is Hebrew.", at least according to [[http://translate.google.com/|Google Translate]].)) + + +The text direction (''rtl'', right to left or ''ltr'', left to right) will get inserted automatically and is solely dependent on the language. The list of currently supported languages is taken from: http://meta.wikimedia.org/wiki/Template:List_of_language_names_ordered_by_code +(If you specify a language not listed there, it simply won't do anything.) diff --git a/sources/lib/plugins/wrap/helper.php b/sources/lib/plugins/wrap/helper.php new file mode 100755 index 0000000..85a81b0 --- /dev/null +++ b/sources/lib/plugins/wrap/helper.php @@ -0,0 +1,489 @@ + + */ + +// must be run within Dokuwiki +if(!defined('DOKU_INC')) die(); + +class helper_plugin_wrap extends DokuWiki_Plugin { + static protected $boxes = array ('wrap_box', 'wrap_danger', 'wrap_warning', 'wrap_caution', 'wrap_notice', 'wrap_safety', + 'wrap_info', 'wrap_important', 'wrap_alert', 'wrap_tip', 'wrap_help', 'wrap_todo', + 'wrap_download', 'wrap_hi', 'wrap_spoiler'); + static protected $paragraphs = array ('wrap_leftalign', 'wrap_rightalign', 'wrap_centeralign', 'wrap_justify'); + static protected $column_count = 0; + + /** + * get attributes (pull apart the string between '') + * and identify classes, width, lang and dir + * + * @author Anika Henke + * @author Christopher Smith + * (parts taken from http://www.dokuwiki.org/plugin:box) + */ + function getAttributes($data) { + + $attr = array(); + $tokens = preg_split('/\s+/', $data, 9); + $noPrefix = array_map('trim', explode(',', $this->getConf('noPrefix'))); + $restrictedClasses = $this->getConf('restrictedClasses'); + if ($restrictedClasses) { + $restrictedClasses = array_map('trim', explode(',', $this->getConf('restrictedClasses'))); + } + $restrictionType = $this->getConf('restrictionType'); + + foreach ($tokens as $token) { + + //get width + if (preg_match('/^\d*\.?\d+(%|px|em|ex|pt|pc|cm|mm|in)$/', $token)) { + $attr['width'] = $token; + continue; + } + + //get lang + if (preg_match('/\:([a-z\-]+)/', $token)) { + $attr['lang'] = trim($token,':'); + continue; + } + + //get id + if (preg_match('/#([A-Za-z0-9_-]+)/', $token)) { + $attr['id'] = trim($token,'#'); + continue; + } + + //get classes + //restrict token (class names) characters to prevent any malicious data + if (preg_match('/[^A-Za-z0-9_-]/',$token)) continue; + if ($restrictedClasses) { + $classIsInList = in_array(trim($token), $restrictedClasses); + // either allow only certain classes + if ($restrictionType) { + if (!$classIsInList) continue; + // or disallow certain classes + } else { + if ($classIsInList) continue; + } + } + $prefix = in_array($token, $noPrefix) ? '' : 'wrap_'; + $attr['class'] = (isset($attr['class']) ? $attr['class'].' ' : '').$prefix.$token; + } + if ($this->getConf('darkTpl')) { + $attr['class'] = (isset($attr['class']) ? $attr['class'].' ' : '').'wrap__dark'; + } + + //get dir + if($attr['lang']) { + $lang2dirFile = dirname(__FILE__).'/conf/lang2dir.conf'; + if (@file_exists($lang2dirFile)) { + $lang2dir = confToHash($lang2dirFile); + $attr['dir'] = strtr($attr['lang'],$lang2dir); + } + } + + return $attr; + } + + /** + * build attributes (write out classes, width, lang and dir) + */ + function buildAttributes($data, $addClass='', $mode='xhtml') { + + $attr = $this->getAttributes($data); + $out = ''; + + if ($mode=='xhtml') { + if($attr['class']) $out .= ' class="'.hsc($attr['class']).' '.$addClass.'"'; + // if used in other plugins, they might want to add their own class(es) + elseif($addClass) $out .= ' class="'.$addClass.'"'; + if($attr['id']) $out .= ' id="'.hsc($attr['id']).'"'; + // width on spans normally doesn't make much sense, but in the case of floating elements it could be used + if($attr['width']) { + if (strpos($attr['width'],'%') !== false) { + $out .= ' style="width: '.hsc($attr['width']).';"'; + } else { + // anything but % should be 100% when the screen gets smaller + $out .= ' style="width: '.hsc($attr['width']).'; max-width: 100%;"'; + } + } + // only write lang if it's a language in lang2dir.conf + if($attr['dir']) $out .= ' lang="'.$attr['lang'].'" xml:lang="'.$attr['lang'].'" dir="'.$attr['dir'].'"'; + } + + return $out; + } + + /** + * render ODT element, Open + * (get Attributes, select ODT element that fits, render it, return element name) + */ + function renderODTElementOpen($renderer, $HTMLelement, $data) { + + $attr = $this->getAttributes($data); + $classes = explode (' ', $attr['class']); + + // Get language + $language = $attr['lang']; + + $is_indent = in_array ('wrap_indent', $classes); + $is_outdent = in_array ('wrap_outdent', $classes); + $is_column = in_array ('wrap_column', $classes); + $is_group = in_array ('group', $classes); + $is_pagebreak = in_array ('wrap_pagebreak', $classes); + + // Check for multicolumns + $columns = 0; + preg_match ('/wrap_col\d/', $attr ['class'], $matches); + if ( empty ($matches [0]) === false ) { + $columns = $matches [0] [strlen($matches [0])-1]; + } + + // Check for boxes + $is_box = false; + foreach (self::$boxes as $box) { + if ( strpos ($attr ['class'], $box) !== false ) { + $is_box = true; + break; + } + } + + // Check for paragraphs + $is_paragraph = false; + if ( empty($language) === false ) { + $is_paragraph = true; + } else { + foreach (self::$paragraphs as $paragraph) { + if ( strpos ($attr ['class'], $paragraph) !== false ) { + $is_paragraph = true; + break; + } + } + } + + $style = NULL; + if ( empty($attr['width']) === false ) { + $style = 'width: '.$attr['width'].';'; + } + $attr ['class'] = 'dokuwiki '.$attr ['class']; + + // Call corresponding functions for current wrap class + if ( $HTMLelement == 'span' ) { + if ( $is_indent === false && $is_outdent === false ) { + $this->renderODTOpenSpan ($renderer, $attr ['class'], $style, $language); + return 'span'; + } else { + $this->renderODTOpenParagraph ($renderer, $attr ['class'], $style, $language, $is_indent, $is_outdent, true); + return 'paragraph'; + } + } else if ( $HTMLelement == 'div' ) { + if ( $is_box === true ) { + $this->renderODTOpenBox ($renderer, $attr ['class'], $style); + return 'box'; + } else if ( $columns > 0 ) { + $this->renderODTOpenColumns ($renderer, $attr ['class'], $style); + return 'multicolumn'; + } else if ( $is_paragraph === true || $is_indent === true || $is_outdent === true ) { + $this->renderODTOpenParagraph ($renderer, $attr ['class'], $style, $language, $is_indent, $is_outdent, false); + return 'paragraph'; + } else if ( $is_pagebreak === true ) { + $renderer->pagebreak (); + // Pagebreak hasn't got a closing stack so we return/push 'other' on the stack + return 'other'; + } else if ( $is_column === true ) { + $this->renderODTOpenColumn ($renderer, $attr ['class'], $style); + return 'column'; + } else if ( $is_group === true ) { + $this->renderODTOpenGroup ($renderer, $attr ['class'], $style); + return 'group'; + } + } + return 'other'; + } + + /** + * render ODT element, Close + */ + function renderODTElementClose($renderer, $element) { + switch ($element) { + case 'box': + $this->renderODTCloseBox ($renderer); + break; + case 'multicolumn': + $this->renderODTCloseColumns($renderer); + break; + case 'paragraph': + $this->renderODTCloseParagraph($renderer); + break; + case 'column': + $this->renderODTCloseColumn($renderer); + break; + case 'group': + $this->renderODTCloseGroup($renderer); + break; + case 'span': + $this->renderODTCloseSpan($renderer); + break; + // No default by intention. + } + } + + function renderODTOpenBox ($renderer, $class, $style) { + $properties = array (); + + if ( method_exists ($renderer, 'getODTProperties') === false ) { + // Function is not supported by installed ODT plugin version, return. + return; + } + + // Get CSS properties for ODT export. + $renderer->getODTProperties ($properties, 'div', $class, $style); + + if ( empty($properties ['background-image']) === false ) { + $properties ['background-image'] = + $renderer->replaceURLPrefix ($properties ['background-image'], DOKU_INC); + } + + if ( empty($properties ['float']) === true ) { + // If the float property is not set, set it to 'left' becuase the ODT plugin + // would default to 'center' which is diffeent to the XHTML behaviour. + if ( strpos ($class, 'wrap_center') === false ) { + $properties ['float'] = 'left'; + } else { + $properties ['float'] = 'center'; + } + } + + // The display property has differing usage in CSS. So we better overwrite it. + $properties ['display'] = 'always'; + if ( stripos ($class, 'wrap_noprint') !== false ) { + $properties ['display'] = 'screen'; + } + if ( stripos ($class, 'wrap_onlyprint') !== false ) { + $properties ['display'] = 'printer'; + } + + $renderer->_odtDivOpenAsFrameUseProperties ($properties); + } + + function renderODTCloseBox ($renderer) { + if ( method_exists ($renderer, '_odtDivCloseAsFrame') === false ) { + // Function is not supported by installed ODT plugin version, return. + return; + } + $renderer->_odtDivCloseAsFrame (); + } + + function renderODTOpenColumns ($renderer, $class, $style) { + $properties = array (); + + if ( method_exists ($renderer, 'getODTProperties') === false ) { + // Function is not supported by installed ODT plugin version, return. + return; + } + + // Get CSS properties for ODT export. + $renderer->getODTProperties ($properties, 'div', $class, $style); + + $renderer->_odtOpenMultiColumnFrame($properties); + } + + function renderODTCloseColumns ($renderer) { + if ( method_exists ($renderer, '_odtCloseMultiColumnFrame') === false ) { + // Function is not supported by installed ODT plugin version, return. + return; + } + $renderer->_odtCloseMultiColumnFrame(); + } + + function renderODTOpenParagraph ($renderer, $class, $style, $language, $is_indent, $is_outdent, $indent_first) { + $properties = array (); + + if ( method_exists ($renderer, 'getODTProperties') === false ) { + // Function is not supported by installed ODT plugin version, return. + return; + } + + // Get CSS properties for ODT export. + $renderer->getODTProperties ($properties, 'p', $class, $style); + + if ( empty($properties ['background-image']) === false ) { + $properties ['background-image'] = + $renderer->replaceURLPrefix ($properties ['background-image'], DOKU_INC); + } + + if ( empty($language) === false ) { + $properties ['lang'] = $language; + } + + if ( $indent_first === true ) { + // Eventually indent or outdent first line only... + if ( $is_indent === true ) { + // FIXME: Has to be adjusted if test direction will be supported. + // See all.css + $properties ['text-indent'] = $properties ['padding-left']; + $properties ['padding-left'] = 0; + } + if ( $is_outdent === true ) { + // FIXME: Has to be adjusted if text (RTL, LTR) direction will be supported. + // See all.css + $properties ['text-indent'] = $properties ['margin-left']; + $properties ['margin-left'] = 0; + } + } else { + // Eventually indent or outdent the whole paragraph... + if ( $is_indent === true ) { + // FIXME: Has to be adjusted if test direction will be supported. + // See all.css + $properties ['margin-left'] = $properties ['padding-left']; + $properties ['padding-left'] = 0; + } + if ( $is_outdent === true ) { + // Nothing to change: keep left margin property. + // FIXME: Has to be adjusted if text (RTL, LTR) direction will be supported. + // See all.css + } + } + + $renderer->p_close(); + $renderer->_odtParagraphOpenUseProperties($properties); + } + + function renderODTCloseParagraph ($renderer) { + if ( method_exists ($renderer, 'p_close') === false ) { + // Function is not supported by installed ODT plugin version, return. + return; + } + $renderer->p_close(); + } + + function renderODTOpenColumn ($renderer, $class, $style) { + $properties = array (); + + if ( method_exists ($renderer, 'getODTProperties') === false ) { + // Function is not supported by installed ODT plugin version, return. + return; + } + + // Get CSS properties for ODT export. + $renderer->getODTProperties ($properties, NULL, $class, $style); + + + // Frames/Textboxes still have some issues with formatting (at least in LibreOffice) + // So as a workaround we implement columns as a table. + // This is why we now use the margin of the div as the padding for the ODT table. + $properties ['padding-left'] = $properties ['margin-left']; + $properties ['padding-right'] = $properties ['margin-right']; + $properties ['padding-top'] = $properties ['margin-top']; + $properties ['padding-bottom'] = $properties ['margin-bottom']; + $properties ['margin-left'] = NULL; + $properties ['margin-right'] = NULL; + $properties ['margin-top'] = NULL; + $properties ['margin-bottom'] = NULL; + + // Percentage values are not supported for the padding. Convert to absolute values. + $length = strlen ($properties ['padding-left']); + if ( $length > 0 && $properties ['padding-left'] [$length-1] == '%' ) { + $properties ['padding-left'] = trim ($properties ['padding-left'], '%'); + $properties ['padding-left'] = $renderer->_getAbsWidthMindMargins ($properties ['padding-left']).'cm'; + } + $length = strlen ($properties ['padding-right']); + if ( $length > 0 && $properties ['padding-right'] [$length-1] == '%' ) { + $properties ['padding-right'] = trim ($properties ['padding-right'], '%'); + $properties ['padding-right'] = $renderer->_getAbsWidthMindMargins ($properties ['padding-right']).'cm'; + } + $length = strlen ($properties ['padding-top']); + if ( $length > 0 && $properties ['padding-top'] [$length-1] == '%' ) { + $properties ['padding-top'] = trim ($properties ['padding-top'], '%'); + $properties ['padding-top'] = $renderer->_getAbsWidthMindMargins ($properties ['padding-top']).'cm'; + } + $length = strlen ($properties ['padding-bottom']); + if ( $length > 0 && $properties ['padding-bottom'] [$length-1] == '%' ) { + $properties ['padding-bottom'] = trim ($properties ['padding-bottom'], '%'); + $properties ['padding-bottom'] = $renderer->_getAbsWidthMindMargins ($properties ['padding-bottom']).'cm'; + } + + $this->column_count++; + if ( $this->column_count == 1 ) { + // If this is the first column opened since the group was opened + // then we have to open the table and a (single) row first. + $column_width = $properties ['width']; + $properties ['width'] = '100%'; + $renderer->_odtTableOpenUseProperties($properties); + $renderer->_odtTableRowOpenUseProperties($properties); + $properties ['width'] = $column_width; + } + + // Convert rel-width to absolute width. + // The width in percentage works strange in LibreOffice, this is a workaround. + $length = strlen ($properties ['width']); + if ( $length > 0 && $properties ['width'] [$length-1] == '%' ) { + $properties ['width'] = trim ($properties ['width'], '%'); + $properties ['width'] = $renderer->_getAbsWidthMindMargins ($properties ['width']).'cm'; + } + + // We did not specify any max column value when we opened the table. + // So we have to tell the renderer to add a column just now. + $renderer->_odtTableAddColumnUseProperties($properties); + + // Open the cell. + $renderer->_odtTableCellOpenUseProperties($properties); + } + + function renderODTCloseColumn ($renderer) { + if ( method_exists ($renderer, '_odtTableAddColumnUseProperties') === false ) { + // Function is not supported by installed ODT plugin version, return. + return; + } + + $renderer->tablecell_close(); + } + + function renderODTOpenGroup ($renderer, $class, $style) { + // Nothing to do for now. + } + + function renderODTCloseGroup ($renderer) { + // If a table has been opened in the group we close it now. + if ( $this->column_count > 0 ) { + // At last we need to close the row and the table! + $renderer->tablerow_close(); + //$renderer->table_close(); + $renderer->_odtTableClose(); + } + $this->column_count = 0; + } + + function renderODTOpenSpan ($renderer, $class, $style, $language) { + $properties = array (); + + if ( method_exists ($renderer, 'getODTProperties') === false ) { + // Function is not supported by installed ODT plugin version, return. + return; + } + + // Get CSS properties for ODT export. + $renderer->getODTProperties ($properties, 'span', $class, $style); + + if ( empty($properties ['background-image']) === false ) { + $properties ['background-image'] = + $renderer->replaceURLPrefix ($properties ['background-image'], DOKU_INC); + } + + if ( empty($language) === false ) { + $properties ['lang'] = $language; + } + + $renderer->_odtSpanOpenUseProperties($properties); + } + + function renderODTCloseSpan ($renderer) { + if ( method_exists ($renderer, '_odtSpanClose') === false ) { + // Function is not supported by installed ODT plugin version, return. + return; + } + $renderer->_odtSpanClose(); + } +} diff --git a/sources/lib/plugins/wrap/images/README b/sources/lib/plugins/wrap/images/README new file mode 100755 index 0000000..a44a9f4 --- /dev/null +++ b/sources/lib/plugins/wrap/images/README @@ -0,0 +1,18 @@ +_NOTE_ + +Icon set: Human-O2 +Designer: Oliver Scholtz (and others) [~schollidesign] +License: GPL (http://www.gnu.org/copyleft/gpl.html) +URL: http://schollidesign.deviantart.com/art/Human-O2-Iconset-105344123 + +_TOOLBAR_ + +Icon set: Silk +Designer: Mark James +License: Creative Commons Attribution 2.5 License (http://creativecommons.org/licenses/by/2.5/) +URL: http://www.famfamfam.com/lab/icons/silk/ + +Icon set: Silk Companion +Designer: Damien Guard +License: Creative Commons Attribution 2.5 License (http://creativecommons.org/licenses/by/2.5/) +URL: http://www.damieng.com/icons/silkcompanion diff --git a/sources/lib/plugins/wrap/images/note/16/alert.png b/sources/lib/plugins/wrap/images/note/16/alert.png new file mode 100755 index 0000000..f051b1d Binary files /dev/null and b/sources/lib/plugins/wrap/images/note/16/alert.png differ diff --git a/sources/lib/plugins/wrap/images/note/16/download.png b/sources/lib/plugins/wrap/images/note/16/download.png new file mode 100755 index 0000000..e8c7221 Binary files /dev/null and b/sources/lib/plugins/wrap/images/note/16/download.png differ diff --git a/sources/lib/plugins/wrap/images/note/16/help.png b/sources/lib/plugins/wrap/images/note/16/help.png new file mode 100755 index 0000000..2e923a2 Binary files /dev/null and b/sources/lib/plugins/wrap/images/note/16/help.png differ diff --git a/sources/lib/plugins/wrap/images/note/16/important.png b/sources/lib/plugins/wrap/images/note/16/important.png new file mode 100755 index 0000000..0d7f1f0 Binary files /dev/null and b/sources/lib/plugins/wrap/images/note/16/important.png differ diff --git a/sources/lib/plugins/wrap/images/note/16/info.png b/sources/lib/plugins/wrap/images/note/16/info.png new file mode 100755 index 0000000..9b38f8e Binary files /dev/null and b/sources/lib/plugins/wrap/images/note/16/info.png differ diff --git a/sources/lib/plugins/wrap/images/note/16/tip.png b/sources/lib/plugins/wrap/images/note/16/tip.png new file mode 100755 index 0000000..23824bb Binary files /dev/null and b/sources/lib/plugins/wrap/images/note/16/tip.png differ diff --git a/sources/lib/plugins/wrap/images/note/16/todo.png b/sources/lib/plugins/wrap/images/note/16/todo.png new file mode 100755 index 0000000..ebaf17a Binary files /dev/null and b/sources/lib/plugins/wrap/images/note/16/todo.png differ diff --git a/sources/lib/plugins/wrap/images/note/48/alert.png b/sources/lib/plugins/wrap/images/note/48/alert.png new file mode 100755 index 0000000..e6f090f Binary files /dev/null and b/sources/lib/plugins/wrap/images/note/48/alert.png differ diff --git a/sources/lib/plugins/wrap/images/note/48/download.png b/sources/lib/plugins/wrap/images/note/48/download.png new file mode 100755 index 0000000..8f7def1 Binary files /dev/null and b/sources/lib/plugins/wrap/images/note/48/download.png differ diff --git a/sources/lib/plugins/wrap/images/note/48/help.png b/sources/lib/plugins/wrap/images/note/48/help.png new file mode 100755 index 0000000..e39a09d Binary files /dev/null and b/sources/lib/plugins/wrap/images/note/48/help.png differ diff --git a/sources/lib/plugins/wrap/images/note/48/important.png b/sources/lib/plugins/wrap/images/note/48/important.png new file mode 100755 index 0000000..6910ef6 Binary files /dev/null and b/sources/lib/plugins/wrap/images/note/48/important.png differ diff --git a/sources/lib/plugins/wrap/images/note/48/info.png b/sources/lib/plugins/wrap/images/note/48/info.png new file mode 100755 index 0000000..ccb25e8 Binary files /dev/null and b/sources/lib/plugins/wrap/images/note/48/info.png differ diff --git a/sources/lib/plugins/wrap/images/note/48/tip.png b/sources/lib/plugins/wrap/images/note/48/tip.png new file mode 100755 index 0000000..7bd8951 Binary files /dev/null and b/sources/lib/plugins/wrap/images/note/48/tip.png differ diff --git a/sources/lib/plugins/wrap/images/note/48/todo.png b/sources/lib/plugins/wrap/images/note/48/todo.png new file mode 100755 index 0000000..cfbc272 Binary files /dev/null and b/sources/lib/plugins/wrap/images/note/48/todo.png differ diff --git a/sources/lib/plugins/wrap/images/toolbar/box.png b/sources/lib/plugins/wrap/images/toolbar/box.png new file mode 100755 index 0000000..33af046 Binary files /dev/null and b/sources/lib/plugins/wrap/images/toolbar/box.png differ diff --git a/sources/lib/plugins/wrap/images/toolbar/clear.png b/sources/lib/plugins/wrap/images/toolbar/clear.png new file mode 100755 index 0000000..1cdcb48 Binary files /dev/null and b/sources/lib/plugins/wrap/images/toolbar/clear.png differ diff --git a/sources/lib/plugins/wrap/images/toolbar/column.png b/sources/lib/plugins/wrap/images/toolbar/column.png new file mode 100755 index 0000000..97b2e03 Binary files /dev/null and b/sources/lib/plugins/wrap/images/toolbar/column.png differ diff --git a/sources/lib/plugins/wrap/images/toolbar/em.png b/sources/lib/plugins/wrap/images/toolbar/em.png new file mode 100755 index 0000000..8940131 Binary files /dev/null and b/sources/lib/plugins/wrap/images/toolbar/em.png differ diff --git a/sources/lib/plugins/wrap/images/toolbar/hi.png b/sources/lib/plugins/wrap/images/toolbar/hi.png new file mode 100755 index 0000000..c57aa15 Binary files /dev/null and b/sources/lib/plugins/wrap/images/toolbar/hi.png differ diff --git a/sources/lib/plugins/wrap/images/toolbar/lo.png b/sources/lib/plugins/wrap/images/toolbar/lo.png new file mode 100755 index 0000000..cb64e86 Binary files /dev/null and b/sources/lib/plugins/wrap/images/toolbar/lo.png differ diff --git a/sources/lib/plugins/wrap/images/toolbar/picker.png b/sources/lib/plugins/wrap/images/toolbar/picker.png new file mode 100755 index 0000000..4b5b847 Binary files /dev/null and b/sources/lib/plugins/wrap/images/toolbar/picker.png differ diff --git a/sources/lib/plugins/wrap/lang/ar/lang.php b/sources/lib/plugins/wrap/lang/ar/lang.php new file mode 100755 index 0000000..0b2fc57 --- /dev/null +++ b/sources/lib/plugins/wrap/lang/ar/lang.php @@ -0,0 +1,16 @@ + + */ +$lang['column'] = 'عمود'; +$lang['box'] = 'مربع متوسط بسيط'; +$lang['info'] = 'مربع معلومات'; +$lang['tip'] = 'مربع تلميح'; +$lang['important'] = 'مربع هام'; +$lang['alert'] = 'مربع التنبيه'; +$lang['help'] = 'مربع تعليمات'; +$lang['download'] = 'مربع التحميل'; +$lang['lo'] = 'أقل أهمية'; diff --git a/sources/lib/plugins/wrap/lang/ar/settings.php b/sources/lib/plugins/wrap/lang/ar/settings.php new file mode 100755 index 0000000..808b843 --- /dev/null +++ b/sources/lib/plugins/wrap/lang/ar/settings.php @@ -0,0 +1,11 @@ + + */ +$lang['restrictedClasses'] = 'تقييد استخدام البرنامج المساعد لهذه الفئات (مفصولة بفاصلة)'; +$lang['restrictionType'] = 'تعين نوع القيد، إذا كانت الفئات المذكورة أعلاه يجب تضمينها أو استبعادها'; +$lang['restrictionType_o_0'] = 'السماح لجميع الفئات باستثناء تلك المذكورة أعلاه'; +$lang['restrictionType_o_1'] = 'تقييد للفئات المذكورة أعلاه فقط وليس غيرها'; diff --git a/sources/lib/plugins/wrap/lang/bn/lang.php b/sources/lib/plugins/wrap/lang/bn/lang.php new file mode 100755 index 0000000..301d270 --- /dev/null +++ b/sources/lib/plugins/wrap/lang/bn/lang.php @@ -0,0 +1,21 @@ + + */ +$lang['picker'] = 'মোড়ানো প্লাগইন'; +$lang['column'] = 'স্তম্ভ'; +$lang['box'] = 'সহজ কেন্দ্রিক বাক্স'; +$lang['info'] = 'তথ্য বাক্স'; +$lang['tip'] = 'টিপ বাক্স'; +$lang['important'] = 'গুরুত্বপূর্ণ বাক্স'; +$lang['alert'] = 'সতর্কতা বাক্স'; +$lang['help'] = 'সাহায্য বাক্স'; +$lang['download'] = 'ডাউনলোডের বাক্স'; +$lang['todo'] = 'করণীয় বাক্স'; +$lang['clear'] = 'স্পষ্ট floats'; +$lang['em'] = 'বিশেষ করে জোর'; +$lang['hi'] = 'হাইলাইট'; +$lang['lo'] = 'কম গুরুত্বপূর্ণ'; diff --git a/sources/lib/plugins/wrap/lang/bn/settings.php b/sources/lib/plugins/wrap/lang/bn/settings.php new file mode 100755 index 0000000..baeca82 --- /dev/null +++ b/sources/lib/plugins/wrap/lang/bn/settings.php @@ -0,0 +1,14 @@ + + */ +$lang['noPrefix'] = 'যা (কমা দিয়ে পৃথক) শ্রেণীর নাম "wrap_" সঙ্গে অগ্রে যুক্ত হওয়া থেকে বাদ দেওয়া হবে?'; +$lang['restrictedClasses'] = 'এইসব করতে প্লাগিন ব্যবহার সীমিত (কমা দিয়ে পৃথক করা) ক্লাস'; +$lang['restrictionType'] = 'ক্লাস উপরে অন্তর্ভুক্ত বা বাদ দেওয়া হইবে যদি সীমাবদ্ধতা ধরন, নির্দিষ্ট করে'; +$lang['restrictionType_o_0'] = 'উপরোক্ত জনকে ছাড়া সব শ্রেণীর অনুমতি'; +$lang['restrictionType_o_1'] = 'শুধুমাত্র উপরোক্ত শ্রেণীর এবং কোন অন্যদের সীমিত'; +$lang['syntaxDiv'] = 'কোন বাক্য গঠন ব্লক গোপন জন্য টুলবার জুতো ব্যবহার করা উচিত?'; +$lang['syntaxSpan'] = 'কোন বাক্য গঠন ইনলাইন গোপন জন্য টুলবার জুতো ব্যবহার করা উচিত?'; diff --git a/sources/lib/plugins/wrap/lang/cs/lang.php b/sources/lib/plugins/wrap/lang/cs/lang.php new file mode 100755 index 0000000..7c3d7dc --- /dev/null +++ b/sources/lib/plugins/wrap/lang/cs/lang.php @@ -0,0 +1,21 @@ + + */ +$lang['picker'] = 'Zásuvný modul Wrap'; +$lang['column'] = 'sloupce'; +$lang['box'] = 'jednoduchý vystředěný rámeček'; +$lang['info'] = 'informační rámeček'; +$lang['tip'] = 'rámeček s radou'; +$lang['important'] = 'důležitý rámeček'; +$lang['alert'] = 'výstražný rámeček'; +$lang['help'] = 'pomocný rámeček'; +$lang['download'] = 'rámeček s odkazem ke stažení'; +$lang['todo'] = 'rámeček úkolu'; +$lang['clear'] = 'clear floats'; +$lang['em'] = 'zvláštně zdůrazněné'; +$lang['hi'] = 'zvýrazněné'; +$lang['lo'] = 'méně důležité'; diff --git a/sources/lib/plugins/wrap/lang/cs/settings.php b/sources/lib/plugins/wrap/lang/cs/settings.php new file mode 100755 index 0000000..e8d133c --- /dev/null +++ b/sources/lib/plugins/wrap/lang/cs/settings.php @@ -0,0 +1,14 @@ + + */ +$lang['noPrefix'] = 'Která (čárkou oddělená) jména tříd nemají být označována předponou "wrap_"?'; +$lang['restrictedClasses'] = 'omezit použití zásuvného modulu na tyto (čárkou oddělené) třídy'; +$lang['restrictionType'] = 'typ omezení, rozhoduje jestli mají být výše uvedené třídy zahrnuty nebo vyřazeny'; +$lang['restrictionType_o_0'] = 'povolit všechny třídy kromě těch výše'; +$lang['restrictionType_o_1'] = 'omezit pouze na třídy výše a žádné jiné'; +$lang['syntaxDiv'] = 'Jaká syntax má být použita ve výběru pro zarovnání bloku? '; +$lang['syntaxSpan'] = 'Jaká syntax má být použita ve výběru pro zarovnání v řádku? '; diff --git a/sources/lib/plugins/wrap/lang/da/lang.php b/sources/lib/plugins/wrap/lang/da/lang.php new file mode 100755 index 0000000..d300095 --- /dev/null +++ b/sources/lib/plugins/wrap/lang/da/lang.php @@ -0,0 +1,21 @@ + + */ +$lang['picker'] = 'Wrap Plugin'; +$lang['column'] = 'række'; +$lang['box'] = 'simpel centreret boks'; +$lang['info'] = 'info boks'; +$lang['tip'] = 'tip boks'; +$lang['important'] = 'vigtig boks'; +$lang['alert'] = 'alarm boks'; +$lang['help'] = 'hjælp boks'; +$lang['download'] = 'download boks'; +$lang['todo'] = 'todo boks'; +$lang['clear'] = 'ryd flydere'; +$lang['em'] = 'specielt fremhævet'; +$lang['hi'] = 'fremhævet'; +$lang['lo'] = 'mindre vigtigt'; diff --git a/sources/lib/plugins/wrap/lang/da/settings.php b/sources/lib/plugins/wrap/lang/da/settings.php new file mode 100755 index 0000000..25b0962 --- /dev/null +++ b/sources/lib/plugins/wrap/lang/da/settings.php @@ -0,0 +1,12 @@ + + */ +$lang['noPrefix'] = 'Hvilke (kommaseparerede) klassenavne skal udelukkes fra at få præfikset "wrap_"?'; +$lang['restrictedClasses'] = 'begræns brugen af plugin til følgende (kommaseparerede) klasser'; +$lang['restrictionType'] = 'begrænsningstype, specificerer om ovenstående klasser skal inkluderes eller ekskluderes'; +$lang['restrictionType_o_0'] = 'tillad alle klasser på nær de ovenstående'; +$lang['restrictionType_o_1'] = 'begræns til ovenstående klasser og ingen andre'; diff --git a/sources/lib/plugins/wrap/lang/de-informal/lang.php b/sources/lib/plugins/wrap/lang/de-informal/lang.php new file mode 100755 index 0000000..0e83e08 --- /dev/null +++ b/sources/lib/plugins/wrap/lang/de-informal/lang.php @@ -0,0 +1,19 @@ + + */ +$lang['picker'] = 'Wrap-kromaĵo'; +$lang['column'] = 'kolumnoj'; +$lang['box'] = 'simpla centrita skatolo'; +$lang['info'] = 'inform-skatolo'; +$lang['tip'] = 'konsil-skatolo'; +$lang['important'] = 'grava skatolo'; +$lang['alert'] = 'avert-skatolo'; +$lang['help'] = 'help-skatolo'; +$lang['download'] = 'elŝut-skatolo'; +$lang['todo'] = 'farendaĵ-skatolo'; +$lang['clear'] = 'liberigi la randojn'; +$lang['em'] = 'aparte emfazita'; +$lang['hi'] = 'markita'; +$lang['lo'] = 'malpli grava'; diff --git a/sources/lib/plugins/wrap/lang/eo/settings.php b/sources/lib/plugins/wrap/lang/eo/settings.php new file mode 100755 index 0000000..89d037a --- /dev/null +++ b/sources/lib/plugins/wrap/lang/eo/settings.php @@ -0,0 +1,14 @@ + + */ +$lang['noPrefix'] = 'Kiuj (komo-disigitaj) klasnomoj estu ekskludataj de la prefikso "wrap_"?'; +$lang['restrictedClasses'] = 'limigi la uzon de la kromaĵo al tiuj klasoj (komo-disigitaj)'; +$lang['restrictionType'] = 'tipo de limigo (ĉu la supre menciitaj klasoj estu inkludataj aŭ ekskludataj?)'; +$lang['restrictionType_o_0'] = 'permesi ĉiujn klasojn krom la menciitaj'; +$lang['restrictionType_o_1'] = 'limigi al nur tiuj grupoj, neniuj aliaj'; +$lang['syntaxDiv'] = 'Kiun sintakson uzi por blok-volvoj en la ilaro-elektilo?'; +$lang['syntaxSpan'] = 'Kiun sintakson uzi por enliniaj volvoj en la ilaro-elektilo?'; diff --git a/sources/lib/plugins/wrap/lang/es/lang.php b/sources/lib/plugins/wrap/lang/es/lang.php new file mode 100755 index 0000000..432cd05 --- /dev/null +++ b/sources/lib/plugins/wrap/lang/es/lang.php @@ -0,0 +1,20 @@ + + * @author Óscar M. Lage + */ +$lang['noPrefix'] = '¿Qué nombres de clase (separados por comas) no deberían ser precedidos de "wrap_"?'; +$lang['restrictedClasses'] = 'restringir el uso de este plugin a estas clases (separadas por comas)'; +$lang['restrictionType'] = 'tipo de restricción, especifica si las clases anteriores serán incluidas o ecluidas'; +$lang['restrictionType_o_0'] = 'permitir todas las clases excepto las anteriores'; +$lang['restrictionType_o_1'] = 'restringir a sólo las clases anteriores y no otras'; +$lang['syntaxDiv'] = '¿Qué sintaxis debería ser usada en el selector de la barra de herramientas para los bloques "wrap"?'; +$lang['syntaxSpan'] = '¿Qué sintaxis debería ser usada en el selector de la barra de herramientas para los "wrap" en linea?'; diff --git a/sources/lib/plugins/wrap/lang/fa/lang.php b/sources/lib/plugins/wrap/lang/fa/lang.php new file mode 100755 index 0000000..14d04e7 --- /dev/null +++ b/sources/lib/plugins/wrap/lang/fa/lang.php @@ -0,0 +1,20 @@ + + */ +$lang['column'] = 'ستون'; +$lang['box'] = 'کادر ساده'; +$lang['info'] = 'کادر اطلاعات'; +$lang['tip'] = 'کادر نکته'; +$lang['important'] = 'کادر مهم'; +$lang['alert'] = 'کادر هشدار'; +$lang['help'] = 'کادر کمک'; +$lang['download'] = 'کادر دانلود'; +$lang['todo'] = 'کادر کاربردی'; +$lang['clear'] = 'کادر شناور فعال'; +$lang['em'] = 'تاکید'; +$lang['hi'] = 'هایلایت'; +$lang['lo'] = 'کم اهمیت'; diff --git a/sources/lib/plugins/wrap/lang/fr/lang.php b/sources/lib/plugins/wrap/lang/fr/lang.php new file mode 100755 index 0000000..0a94a1b --- /dev/null +++ b/sources/lib/plugins/wrap/lang/fr/lang.php @@ -0,0 +1,23 @@ + + * @author schplurtz + * @author Schplurtz le Déboulonné + */ +$lang['picker'] = 'Extension Wrap'; +$lang['column'] = 'colonnes'; +$lang['box'] = 'bloc simple'; +$lang['info'] = 'bloc information'; +$lang['tip'] = 'bloc astuce'; +$lang['important'] = 'bloc important'; +$lang['alert'] = 'bloc alerte'; +$lang['help'] = 'bloc aide'; +$lang['download'] = 'bloc téléchargement'; +$lang['todo'] = 'bloc à faire'; +$lang['clear'] = 'rétablir le flux après un élément flottant'; +$lang['em'] = 'particulièrement important'; +$lang['hi'] = 'important'; +$lang['lo'] = 'peu important'; diff --git a/sources/lib/plugins/wrap/lang/fr/settings.php b/sources/lib/plugins/wrap/lang/fr/settings.php new file mode 100755 index 0000000..91c520b --- /dev/null +++ b/sources/lib/plugins/wrap/lang/fr/settings.php @@ -0,0 +1,18 @@ + + * @author schplurtz + * @author Schplurtz le Déboulonné + * @author Pietroni + */ +$lang['noPrefix'] = 'Quelles classes (séparées par une virgule) ne devraient pas être préfixées d\'un "wrap_" ?'; +$lang['restrictedClasses'] = 'Restreindre l\'utilisation de cette extension à ces classes. (liste séparée par des virgules)'; +$lang['restrictionType'] = 'Type de restriction. Indique s\'il faut inclure ou exclure les classes ci-dessus.'; +$lang['restrictionType_o_0'] = 'Autoriser toutes les classes sauf celles ci-dessus.'; +$lang['restrictionType_o_1'] = 'N\'autoriser que les classes ci dessus.'; +$lang['syntaxDiv'] = 'Quelle syntaxe les boutons de la barre d\'outil doivent-ils générer pour les éléments blocs ?'; +$lang['syntaxSpan'] = 'Quelle syntaxe les boutons de la barre d\'outil doivent-ils générer pour les éléments en ligne ?'; +$lang['darkTpl'] = 'Optimiser les couleurs pour les thèmes sombres?'; diff --git a/sources/lib/plugins/wrap/lang/hr/lang.php b/sources/lib/plugins/wrap/lang/hr/lang.php new file mode 100755 index 0000000..3923ceb --- /dev/null +++ b/sources/lib/plugins/wrap/lang/hr/lang.php @@ -0,0 +1,21 @@ + + */ +$lang['picker'] = 'Wrap dodatak'; +$lang['column'] = 'kolone'; +$lang['box'] = 'običan centrirani okvir'; +$lang['info'] = 'info okvir'; +$lang['tip'] = 'okvir savjet'; +$lang['important'] = 'okvir važno'; +$lang['alert'] = 'okvir upozorenja'; +$lang['help'] = 'okvir pomoći'; +$lang['download'] = 'okvir učitavanja'; +$lang['todo'] = 'okvir preostalo'; +$lang['clear'] = 'prazan okvir'; +$lang['em'] = 'posebno naglašeni'; +$lang['hi'] = 'istaknuti'; +$lang['lo'] = 'manje bitan'; diff --git a/sources/lib/plugins/wrap/lang/hr/settings.php b/sources/lib/plugins/wrap/lang/hr/settings.php new file mode 100755 index 0000000..46f6f0a --- /dev/null +++ b/sources/lib/plugins/wrap/lang/hr/settings.php @@ -0,0 +1,15 @@ + + */ +$lang['noPrefix'] = 'Koja (zarezom odvojene) imena klasa trebaju ne trebaju biti s prefiksom "wrap_"? '; +$lang['restrictedClasses'] = 'ograniči korištenje ovog dodatka na ove klase (zarezom odvojena lista)'; +$lang['restrictionType'] = 'vrsta ograničenja, određuje da li gore navedene klase trebaju biti uključene ili isključene'; +$lang['restrictionType_o_0'] = 'dozvoli sve klase osim gore navedenih'; +$lang['restrictionType_o_1'] = 'dozvoli samo gore navedene klase'; +$lang['syntaxDiv'] = 'Koja sintaksa treba biti korištena u alatnoj traci za omeđivanje bloka?'; +$lang['syntaxSpan'] = 'Koja sintaksa treba biti korištena u alatnoj traci za omeđivanje teksta u liniji?'; +$lang['darkTpl'] = 'Prilagoditi boje za tamne predloške?'; diff --git a/sources/lib/plugins/wrap/lang/hu/lang.php b/sources/lib/plugins/wrap/lang/hu/lang.php new file mode 100755 index 0000000..4dbfc99 --- /dev/null +++ b/sources/lib/plugins/wrap/lang/hu/lang.php @@ -0,0 +1,21 @@ + + */ +$lang['picker'] = 'Wrap-csatoló'; +$lang['column'] = 'oszlopok'; +$lang['box'] = 'egyszerű, középre igazított doboz'; +$lang['info'] = 'információs doboz'; +$lang['tip'] = 'tippdoboz'; +$lang['important'] = 'fontos doboz'; +$lang['alert'] = 'figyelmeztető doboz'; +$lang['help'] = 'súgódoboz'; +$lang['download'] = 'letöltéshez doboz'; +$lang['todo'] = 'teendőhöz doboz'; +$lang['clear'] = 'float tiltása'; +$lang['em'] = 'különösen hangsúlyos'; +$lang['hi'] = 'kiemelt'; +$lang['lo'] = 'kevésbé fontos'; diff --git a/sources/lib/plugins/wrap/lang/hu/settings.php b/sources/lib/plugins/wrap/lang/hu/settings.php new file mode 100755 index 0000000..6f3c9da --- /dev/null +++ b/sources/lib/plugins/wrap/lang/hu/settings.php @@ -0,0 +1,16 @@ + + * @author DelD + */ +$lang['noPrefix'] = 'Mely (vesszővel elválasztott) osztályneveknek ne legyen "wrap_" előtagja?'; +$lang['restrictedClasses'] = 'csatoló korlátozása ezekre a (vesszővel elválasztott) osztályokra'; +$lang['restrictionType'] = 'korlátozás típusa, megadja, hogy a fenti osztályokat figyelembe vegye vagy se a csatoló'; +$lang['restrictionType_o_0'] = 'minden osztály engedélyezése, kivéve a fentieket'; +$lang['restrictionType_o_1'] = 'csak a fenti osztályok engedélyezése'; +$lang['syntaxDiv'] = 'Milyen szintaxist használjunk a blokktípusú dobozokhoz az eszközsorban?'; +$lang['syntaxSpan'] = 'Milyen szintaxist használjunk a soron belüli (inline) dobozokhoz az eszközsorban?'; +$lang['darkTpl'] = 'Optimalizáljam a színeket sötét sablonokhoz?'; diff --git a/sources/lib/plugins/wrap/lang/it/lang.php b/sources/lib/plugins/wrap/lang/it/lang.php new file mode 100755 index 0000000..a77be6a --- /dev/null +++ b/sources/lib/plugins/wrap/lang/it/lang.php @@ -0,0 +1,12 @@ + + * @author Giovanni + */ +$lang['column'] = 'colonne'; +$lang['em'] = 'enfatizzato speciale'; +$lang['hi'] = 'evidenziato'; +$lang['lo'] = 'meno importante'; diff --git a/sources/lib/plugins/wrap/lang/it/settings.php b/sources/lib/plugins/wrap/lang/it/settings.php new file mode 100755 index 0000000..84ad4d1 --- /dev/null +++ b/sources/lib/plugins/wrap/lang/it/settings.php @@ -0,0 +1,12 @@ + + */ +$lang['noPrefix'] = 'quali nomi di classi (elenco separato da virgole) non devono avere il prefisso "wrap_"?'; +$lang['restrictedClasses'] = 'restringi l\'uso del plugin a queste classi (elenco separato da virgole)'; +$lang['restrictionType'] = 'tipo di restrizione, specifica se le classi sopra devono essere incluse o escluse'; +$lang['restrictionType_o_0'] = 'permetti tutte le classi tranne quelle sopra'; +$lang['restrictionType_o_1'] = 'restringi solo alle classi sopra e a nessun\'altra'; diff --git a/sources/lib/plugins/wrap/lang/ja/lang.php b/sources/lib/plugins/wrap/lang/ja/lang.php new file mode 100755 index 0000000..598b481 --- /dev/null +++ b/sources/lib/plugins/wrap/lang/ja/lang.php @@ -0,0 +1,21 @@ + + */ +$lang['picker'] = 'Wrap プラグイン'; +$lang['column'] = '多段組み'; +$lang['box'] = '中央配置枠'; +$lang['info'] = '情報枠'; +$lang['tip'] = 'ヒント枠'; +$lang['important'] = '重要枠'; +$lang['alert'] = '警告枠'; +$lang['help'] = 'ヘルプ枠'; +$lang['download'] = 'ダウンロード枠'; +$lang['todo'] = 'TODO枠'; +$lang['clear'] = '回り込み解除'; +$lang['em'] = '特に強調'; +$lang['hi'] = 'ハイライト表示'; +$lang['lo'] = '非強調(薄色表示)'; diff --git a/sources/lib/plugins/wrap/lang/ja/settings.php b/sources/lib/plugins/wrap/lang/ja/settings.php new file mode 100755 index 0000000..ec880ac --- /dev/null +++ b/sources/lib/plugins/wrap/lang/ja/settings.php @@ -0,0 +1,16 @@ + + * @author Hideaki SAWADA + */ +$lang['noPrefix'] = 'プレフィックス"wrap_" なしのCSSセレクタを例外的に適用するクラス名(カンマ区切り)'; +$lang['restrictedClasses'] = '有効性をチェックするクラス名(カンマ区切り)'; +$lang['restrictionType'] = '指定したクラスの扱い方'; +$lang['restrictionType_o_0'] = '指定クラスを無効とし、他は有効とする'; +$lang['restrictionType_o_1'] = '指定クラスのみを有効とする'; +$lang['syntaxDiv'] = 'ツールバー使用時:ブロック型構文に使用するタグ名'; +$lang['syntaxSpan'] = 'ツールバー使用時:インライン型構文に使用するタグ名'; +$lang['darkTpl'] = '色の濃いテンプレート用に最適化しますか?'; diff --git a/sources/lib/plugins/wrap/lang/ko/lang.php b/sources/lib/plugins/wrap/lang/ko/lang.php new file mode 100755 index 0000000..6dce54e --- /dev/null +++ b/sources/lib/plugins/wrap/lang/ko/lang.php @@ -0,0 +1,21 @@ + + */ +$lang['picker'] = 'Wrap 플러그인'; +$lang['column'] = '단'; +$lang['box'] = '간단한 가운데 상자'; +$lang['info'] = '정보 상자'; +$lang['tip'] = '팁 상자'; +$lang['important'] = '중요 상자'; +$lang['alert'] = '경고 상자'; +$lang['help'] = '도움말 상자'; +$lang['download'] = '다운로드 상자'; +$lang['todo'] = '할 일 상자'; +$lang['clear'] = '플로트 지우기'; +$lang['em'] = '특히 강조'; +$lang['hi'] = '강조'; +$lang['lo'] = '덜 중요함'; diff --git a/sources/lib/plugins/wrap/lang/ko/settings.php b/sources/lib/plugins/wrap/lang/ko/settings.php new file mode 100755 index 0000000..9cba912 --- /dev/null +++ b/sources/lib/plugins/wrap/lang/ko/settings.php @@ -0,0 +1,15 @@ + + */ +$lang['noPrefix'] = '어떤 (쉼표로 구분된) 클래스 이름이 "wrap_" 접두어가 필요가 없습니까?'; +$lang['restrictedClasses'] = '다음 (쉼표로 구분된) 클래스에 플러그인의 사용을 제한'; +$lang['restrictionType'] = '제한 유형은 위의 클래스가 포함되거나 제외되어야 하는지 지정'; +$lang['restrictionType_o_0'] = '위의 클래스를 제외하고 모든 클래스를 허용'; +$lang['restrictionType_o_1'] = '위의 클래스만 허용하고 다른 클래스를 제한'; +$lang['syntaxDiv'] = '어떤 문법이 블록 포장을 위해 도구 모음 선택기에서 사용되어야 합니까?'; +$lang['syntaxSpan'] = '어떤 문법이 인라인 포장을 위해 도구 모음 선택기에서 사용되어야 합니까?'; +$lang['darkTpl'] = '어두은 템플릿을 위해 색을 최적화하겠습니까?'; diff --git a/sources/lib/plugins/wrap/lang/nl/lang.php b/sources/lib/plugins/wrap/lang/nl/lang.php new file mode 100755 index 0000000..f771b9d --- /dev/null +++ b/sources/lib/plugins/wrap/lang/nl/lang.php @@ -0,0 +1,21 @@ + + */ +$lang['picker'] = 'Wrap Plugin'; +$lang['column'] = 'kolommen'; +$lang['box'] = 'simpele gecentreerde blok'; +$lang['info'] = 'informatie blok'; +$lang['tip'] = 'tip blok'; +$lang['important'] = 'belangrijk blok'; +$lang['alert'] = 'waarschuwingsblok'; +$lang['help'] = 'helpblok'; +$lang['download'] = 'downloadblok'; +$lang['todo'] = 'tedoen blok'; +$lang['clear'] = 'reset drijvende blokken (clear floats)'; +$lang['em'] = 'bijzonder benadrukken'; +$lang['hi'] = 'gemarkeerd'; +$lang['lo'] = 'minder belangrijk'; diff --git a/sources/lib/plugins/wrap/lang/nl/settings.php b/sources/lib/plugins/wrap/lang/nl/settings.php new file mode 100755 index 0000000..8fb33ae --- /dev/null +++ b/sources/lib/plugins/wrap/lang/nl/settings.php @@ -0,0 +1,16 @@ + + * @author Johan Wijnker + */ +$lang['noPrefix'] = 'Welke (komma gescheiden) klassennamen moeten niet het voorvoegsel "wrap_" krijgen?'; +$lang['restrictedClasses'] = 'Beperk het gebruik van de plugin tot deze (komma gescheiden) klassen'; +$lang['restrictionType'] = 'beperkingstype, specificeer of de klassen hierboven wel of niet gebruikt mogen worden'; +$lang['restrictionType_o_0'] = 'alle klassen zijn toegestaan, behalve de bovenstaande'; +$lang['restrictionType_o_1'] = 'beperk de toegestane klassen tot de bovenstaande, en geen anderen'; +$lang['syntaxDiv'] = 'Welke syntax moet worden gebruikt in het werkbalk-keuzemenu voor blok-wraps?'; +$lang['syntaxSpan'] = 'Welke syntax moet worden gebruikt in het werkbalk-keuzemenu voor inline-wraps?'; +$lang['darkTpl'] = 'Optimaliseer de kleuren voor donkere templates?'; diff --git a/sources/lib/plugins/wrap/lang/no/lang.php b/sources/lib/plugins/wrap/lang/no/lang.php new file mode 100755 index 0000000..a1734b8 --- /dev/null +++ b/sources/lib/plugins/wrap/lang/no/lang.php @@ -0,0 +1,24 @@ + + */ +$lang['picker'] = 'Omhylningsplugin +Omkransningsplugin'; +$lang['column'] = 'kolonner'; +$lang['box'] = 'enkel sentrert boks'; +$lang['info'] = 'infoboks'; +$lang['tip'] = 'tipsboks'; +$lang['important'] = 'viktig boks'; +$lang['alert'] = 'alarmboks'; +$lang['help'] = 'hjelpeboks'; +$lang['download'] = 'nedlastningsboks'; +$lang['todo'] = 'gjøremålsboks'; +$lang['clear'] = 'tøm floats'; +$lang['em'] = 'spesielt fremhevet (singular) +spesielt fremhevede (plural)'; +$lang['hi'] = 'markert (singular) +markerte (plural)'; +$lang['lo'] = 'mindre viktig'; diff --git a/sources/lib/plugins/wrap/lang/no/settings.php b/sources/lib/plugins/wrap/lang/no/settings.php new file mode 100755 index 0000000..1bdc762 --- /dev/null +++ b/sources/lib/plugins/wrap/lang/no/settings.php @@ -0,0 +1,15 @@ + + */ +$lang['noPrefix'] = 'Hvilke klasser (adskilt med komma) bør eksluderes fra å ha prefiks "wrap_"?'; +$lang['restrictedClasses'] = 'begrens bruk av plugin til klasser adskilt med komma'; +$lang['restrictionType'] = 'restriksjonstype, spesifiserer om de ovenforstående klassene skal inkluderes eller ekskluderes'; +$lang['restrictionType_o_0'] = 'vis alle klasser bortsett fra de ovenforstående'; +$lang['restrictionType_o_1'] = 'begrens til kun ovenforstående klasser og ingen fler'; +$lang['syntaxDiv'] = 'Hvilken syntaks bør brukes i verktøylinjen valg for blokkomkransning?'; +$lang['syntaxSpan'] = 'Hvilken syntaks bør brukes i verktøylinjen valg for omkransning på en linje?'; +$lang['darkTpl'] = 'Optimer farger for mørke maler?'; diff --git a/sources/lib/plugins/wrap/lang/pt-br/lang.php b/sources/lib/plugins/wrap/lang/pt-br/lang.php new file mode 100755 index 0000000..d1d20f5 --- /dev/null +++ b/sources/lib/plugins/wrap/lang/pt-br/lang.php @@ -0,0 +1,21 @@ + + */ +$lang['picker'] = 'Plugin Wrap'; +$lang['column'] = 'coluna'; +$lang['box'] = 'caixa centralizada simples'; +$lang['info'] = 'caixa de informação'; +$lang['tip'] = 'caixa de sugestão'; +$lang['important'] = 'caixa importante'; +$lang['alert'] = 'caixa de alerta'; +$lang['help'] = 'caixa de ajuda'; +$lang['download'] = 'caixa de download'; +$lang['todo'] = 'caixa de tarefas a fazer'; +$lang['clear'] = 'limpar'; +$lang['em'] = 'especialmente enfatizado'; +$lang['hi'] = 'enfatizado'; +$lang['lo'] = 'menos significativo'; diff --git a/sources/lib/plugins/wrap/lang/pt-br/settings.php b/sources/lib/plugins/wrap/lang/pt-br/settings.php new file mode 100755 index 0000000..261029b --- /dev/null +++ b/sources/lib/plugins/wrap/lang/pt-br/settings.php @@ -0,0 +1,13 @@ + + * @author Juliano Marconi Lanigra + */ +$lang['noPrefix'] = 'Quais classes (separadas por vírgula) deverão ser excluídas de receber o prefixo "wrap_"?'; +$lang['restrictedClasses'] = 'uso restrito do plugin para essas classes (separadas por vírgula)'; +$lang['restrictionType'] = 'tipo de restrição, especifica se as classes acima deveriam ser incluídas ou excluídas'; +$lang['restrictionType_o_0'] = 'permite todas as classes exceto as acima'; +$lang['restrictionType_o_1'] = 'restrita somente às classes acima e nenhuma outra'; diff --git a/sources/lib/plugins/wrap/lang/ru/lang.php b/sources/lib/plugins/wrap/lang/ru/lang.php new file mode 100755 index 0000000..c02c886 --- /dev/null +++ b/sources/lib/plugins/wrap/lang/ru/lang.php @@ -0,0 +1,23 @@ + + * @author Ilya Rozhkov + * @author Aleksandr Selivanov + */ +$lang['picker'] = 'Wrap'; +$lang['column'] = 'колонки'; +$lang['box'] = 'простой центрированный блок'; +$lang['info'] = 'блок «Информация»'; +$lang['tip'] = 'блок «Подсказка»'; +$lang['important'] = 'блок «Важно»'; +$lang['alert'] = 'блок «Тревога»'; +$lang['help'] = 'блок «Справка»'; +$lang['download'] = 'блок «Скачивание»'; +$lang['todo'] = 'блок «Список задач»'; +$lang['clear'] = 'очистить float\'ы'; +$lang['em'] = 'пометить важным'; +$lang['hi'] = 'маркер'; +$lang['lo'] = 'пометить неважным'; diff --git a/sources/lib/plugins/wrap/lang/ru/settings.php b/sources/lib/plugins/wrap/lang/ru/settings.php new file mode 100755 index 0000000..f53143e --- /dev/null +++ b/sources/lib/plugins/wrap/lang/ru/settings.php @@ -0,0 +1,16 @@ + + * @author Aleksandr Selivanov + * @author Rouslan + */ +$lang['noPrefix'] = 'К каким (разделенным запятыми) именам классов не должен быть приписан префикс "wrap_" ?'; +$lang['restrictedClasses'] = 'Классы плагина, которые нельзя использовать (перечислите через запятую)'; +$lang['restrictionType'] = 'Тип ограничения, указывающий, должны ли быть включены или исключены классы выше'; +$lang['restrictionType_o_0'] = 'разрешить все, за исключением классов, указанных выше'; +$lang['restrictionType_o_1'] = 'ограничить только классами, указанными выше'; +$lang['syntaxDiv'] = 'Какой синтаксис использовать для создания блоков и примечаний?'; +$lang['syntaxSpan'] = 'Какой синтаксис использовать для создания блоков выделения внутри текста?'; diff --git a/sources/lib/plugins/wrap/lang/sk/lang.php b/sources/lib/plugins/wrap/lang/sk/lang.php new file mode 100755 index 0000000..af572f7 --- /dev/null +++ b/sources/lib/plugins/wrap/lang/sk/lang.php @@ -0,0 +1,12 @@ + + */ +$lang['picker'] = 'Wrap Plugin'; +$lang['column'] = 'stĺpec'; +$lang['em'] = 'zvlášť zdôraznený'; +$lang['hi'] = 'zvýraznený'; +$lang['lo'] = 'menej významný'; diff --git a/sources/lib/plugins/wrap/lang/sk/settings.php b/sources/lib/plugins/wrap/lang/sk/settings.php new file mode 100755 index 0000000..4e79e94 --- /dev/null +++ b/sources/lib/plugins/wrap/lang/sk/settings.php @@ -0,0 +1,12 @@ + + */ +$lang['noPrefix'] = 'Ktoré (čiarkou oddelené) mená tried by mali byť vynechané pri použití predpony "wrap_"?'; +$lang['restrictedClasses'] = 'Obmedzenie použitia pluginu na tieto (čiarkou oddelené) triedy'; +$lang['restrictionType'] = 'Typ obmedzenia, špecifikuje, či triedy uvedené vyššie maju byť zahrnuté alebo vynechané'; +$lang['restrictionType_o_0'] = 'povolenie pre všetky triedy okrem uvedených vyššie'; +$lang['restrictionType_o_1'] = 'obmedzenie len na triedy uvedené vyššie a žiadne iné'; diff --git a/sources/lib/plugins/wrap/lang/tr/lang.php b/sources/lib/plugins/wrap/lang/tr/lang.php new file mode 100755 index 0000000..ba55922 --- /dev/null +++ b/sources/lib/plugins/wrap/lang/tr/lang.php @@ -0,0 +1,22 @@ + + * @author İlker R. Kapaç + */ +$lang['picker'] = 'Paket Eklentisi'; +$lang['column'] = 'sütunlar'; +$lang['box'] = 'ortalanmış basit kutu'; +$lang['info'] = 'bilgi kutusu'; +$lang['tip'] = 'ipucu kutusu'; +$lang['important'] = 'önemli kutusu'; +$lang['alert'] = 'ikaz kutusu'; +$lang['help'] = 'yardım kutusu'; +$lang['download'] = 'indirme kutusu'; +$lang['todo'] = 'yapılacaklar kutusu'; +$lang['clear'] = 'boşlukları temizle'; +$lang['em'] = 'özellikle vurgulanmış'; +$lang['hi'] = 'vurgulanmış'; +$lang['lo'] = 'daha az önemli'; diff --git a/sources/lib/plugins/wrap/lang/tr/settings.php b/sources/lib/plugins/wrap/lang/tr/settings.php new file mode 100755 index 0000000..a4f7cd5 --- /dev/null +++ b/sources/lib/plugins/wrap/lang/tr/settings.php @@ -0,0 +1,15 @@ + + */ +$lang['noPrefix'] = 'Hangi sınıf isimleri, (virgülle ayrılmış) önüne "wrap_" öneki almaktan hariç tutulsun?'; +$lang['restrictedClasses'] = 'eklentinin kullanımını bu sınıflarla (virgülle ayrılmış) sınırla'; +$lang['restrictionType'] = 'kısıtlama tipi, üstteki sınıfların dalil mi edileceklerini yoksa hariç mi tutulacaklarını belirler.'; +$lang['restrictionType_o_0'] = 'üsttekiler hariç tüm sınıflara izin ver'; +$lang['restrictionType_o_1'] = 'sadece üstteki sınıflarla sınırla, başkasına izin verme'; +$lang['syntaxDiv'] = 'Blok paketi için araç çubuğunda hangi sözdizimi kullanılsın?'; +$lang['syntaxSpan'] = 'Satır içi paketi için araç çubuğunda hangi sözdizimi kullanılsın?'; +$lang['darkTpl'] = 'Karanlık şablonlar için renkler iyileştirilsin mi?'; diff --git a/sources/lib/plugins/wrap/lang/zh-tw/lang.php b/sources/lib/plugins/wrap/lang/zh-tw/lang.php new file mode 100755 index 0000000..fe60272 --- /dev/null +++ b/sources/lib/plugins/wrap/lang/zh-tw/lang.php @@ -0,0 +1,19 @@ + + * @author maie + */ +$lang['noPrefix'] = '哪些CSS类不需要加上“wrap_"前缀?(逗号分隔)'; +$lang['restrictedClasses'] = '将插件的使用限制应用到这些类(逗号分隔)'; +$lang['restrictionType'] = '限制类型,指定上述类应该被包含或排除'; +$lang['restrictionType_o_0'] = '允许除上述类之外的所有类'; +$lang['restrictionType_o_1'] = '仅允许上述类'; +$lang['syntaxDiv'] = '在编辑工具栏的选择器中应对块级元素使用何种语法?'; +$lang['syntaxSpan'] = '在编辑工具栏的选择器中应对行内元素使用何种语法?'; +$lang['darkTpl'] = '优化黑模板的颜色?'; diff --git a/sources/lib/plugins/wrap/manager.dat b/sources/lib/plugins/wrap/manager.dat new file mode 100644 index 0000000..cae041b --- /dev/null +++ b/sources/lib/plugins/wrap/manager.dat @@ -0,0 +1,2 @@ +downloadurl=https://github.com/selfthinker/dokuwiki_plugin_wrap/archive/stable.zip +installed=Sun, 20 Nov 2016 19:30:00 +0000 diff --git a/sources/lib/plugins/wrap/plugin.info.txt b/sources/lib/plugins/wrap/plugin.info.txt new file mode 100755 index 0000000..a8553eb --- /dev/null +++ b/sources/lib/plugins/wrap/plugin.info.txt @@ -0,0 +1,8 @@ +base wrap +author Anika Henke +email anika@selfthinker.org +date 2015-07-19 +name Wrap Plugin +desc Universal plugin which combines functionalities of many other plugins. Wrap wiki text inside containers (divs or spans) and give them a class (choose from a variety of preset classes), a width and/or a language with its associated text direction. +url https://www.dokuwiki.org/plugin:wrap +#syntax See example.txt diff --git a/sources/lib/plugins/wrap/print.css b/sources/lib/plugins/wrap/print.css new file mode 100755 index 0000000..bae4705 --- /dev/null +++ b/sources/lib/plugins/wrap/print.css @@ -0,0 +1,57 @@ +/******************************************************************** +Print Styles for the Wrap Plugin (additional to all.css) +********************************************************************/ + +/* boxes and notes with icons +********************************************************************/ + +.dokuwiki div.wrap_box, +.dokuwiki div.wrap_danger, .dokuwiki div.wrap_warning, .dokuwiki div.wrap_caution, .dokuwiki div.wrap_notice, .dokuwiki div.wrap_safety, +.dokuwiki div.wrap_info, .dokuwiki div.wrap_important, .dokuwiki div.wrap_alert, .dokuwiki div.wrap_tip, .dokuwiki div.wrap_help, .dokuwiki div.wrap_todo, .dokuwiki div.wrap_download { + border: 2px solid #999; + padding: 1em 1em .5em; + margin-bottom: 1.5em; +} +.dokuwiki span.wrap_box, +.dokuwiki span.wrap_danger, .dokuwiki span.wrap_warning, .dokuwiki span.wrap_caution, .dokuwiki span.wrap_notice, .dokuwiki span.wrap_safety, +.dokuwiki span.wrap_info, .dokuwiki span.wrap_important, .dokuwiki span.wrap_alert, .dokuwiki span.wrap_tip, .dokuwiki span.wrap_help, .dokuwiki span.wrap_todo, .dokuwiki span.wrap_download { + border: 1px solid #999; + padding: 0 .3em; +} + + +/* mark +********************************************************************/ + +.dokuwiki .wrap_hi { + border: 1px solid #999; +} + + +/* miscellaneous +********************************************************************/ + +/*____________ spoiler ____________*/ + +.dokuwiki .wrap_spoiler { + visibility: hidden; +} + +/*____________ pagebreak ____________*/ + +.dokuwiki .wrap_pagebreak { + page-break-after: always; +} + +/*____________ avoid page break ____________*/ +/* not yet supported by most browsers */ + +.dokuwiki .wrap_nopagebreak { + page-break-inside: avoid; +} + +/*____________ no print ____________*/ + +.dokuwiki .wrap_noprint { + display: none; +} diff --git a/sources/lib/plugins/wrap/style.css b/sources/lib/plugins/wrap/style.css new file mode 100755 index 0000000..fa6bc16 --- /dev/null +++ b/sources/lib/plugins/wrap/style.css @@ -0,0 +1,203 @@ +/******************************************************************** +Screen Styles for the Wrap Plugin (additional to all.css) +********************************************************************/ + +/* box +********************************************************************/ + +.dokuwiki .wrap_box { + background: __background_alt__; + color: __text__; +} +.dokuwiki div.wrap_box, +.dokuwiki div.wrap_danger, +.dokuwiki div.wrap_warning, +.dokuwiki div.wrap_caution, +.dokuwiki div.wrap_notice, +.dokuwiki div.wrap_safety { + padding: 1em 1em .5em; + margin-bottom: 1.5em; + overflow: hidden; +} +.dokuwiki span.wrap_box, +.dokuwiki span.wrap_danger, +.dokuwiki span.wrap_warning, +.dokuwiki span.wrap_caution, +.dokuwiki span.wrap_notice, +.dokuwiki span.wrap_safety { + padding: 0 .3em; +} + +/*____________ notes with icons ____________*/ + +/* general styles for all note divs */ +.dokuwiki div.wrap_info, +.dokuwiki div.wrap_important, +.dokuwiki div.wrap_alert, +.dokuwiki div.wrap_tip, +.dokuwiki div.wrap_help, +.dokuwiki div.wrap_todo, +.dokuwiki div.wrap_download { + padding: 1em 1em .5em 70px; + margin-bottom: 1.5em; + min-height: 68px; + background-position: 10px 50%; + background-repeat: no-repeat; + color: inherit; + overflow: hidden; +} +/* general styles for all note spans */ +.dokuwiki span.wrap_info, +.dokuwiki span.wrap_important, +.dokuwiki span.wrap_alert, +.dokuwiki span.wrap_tip, +.dokuwiki span.wrap_help, +.dokuwiki span.wrap_todo, +.dokuwiki span.wrap_download { + padding: 0 2px 0 20px; + min-height: 20px; + background-position: 2px 50%; + background-repeat: no-repeat; + color: inherit; +} + +/* sorry for icons glued to the right side, but there is currently no way + to make this look good without adjusting the images themselves */ +[dir=rtl] .dokuwiki div.wrap_info, +[dir=rtl] .dokuwiki div.wrap_important, +[dir=rtl] .dokuwiki div.wrap_alert, +[dir=rtl] .dokuwiki div.wrap_tip, +[dir=rtl] .dokuwiki div.wrap_help, +[dir=rtl] .dokuwiki div.wrap_todo, +[dir=rtl] .dokuwiki div.wrap_download { + padding: 1em 60px .5em 1em; + background-position: right 50%; +} +[dir=rtl] .dokuwiki span.wrap_info, +[dir=rtl] .dokuwiki span.wrap_important, +[dir=rtl] .dokuwiki span.wrap_alert, +[dir=rtl] .dokuwiki span.wrap_tip, +[dir=rtl] .dokuwiki span.wrap_help, +[dir=rtl] .dokuwiki span.wrap_todo, +[dir=rtl] .dokuwiki span.wrap_download { + padding: 0 18px 0 2px; + background-position: right 50%; +} + +/*____________ info ____________*/ +.dokuwiki .wrap_info { background-color: #d1d7df; } +.dokuwiki .wrap__dark.wrap_info { background-color: #343e4a; } +.dokuwiki div.wrap_info { background-image: url(images/note/48/info.png); } +.dokuwiki span.wrap_info { background-image: url(images/note/16/info.png); } + +/*____________ important ____________*/ +.dokuwiki .wrap_important { background-color: #ffd39f; } +.dokuwiki .wrap__dark.wrap_important { background-color: #6c3b00; } +.dokuwiki div.wrap_important { background-image: url(images/note/48/important.png); } +.dokuwiki span.wrap_important { background-image: url(images/note/16/important.png); } + +/*____________ alert ____________*/ +.dokuwiki .wrap_alert { background-color: #ffbcaf; } +.dokuwiki .wrap__dark.wrap_alert { background-color: #6b1100; } +.dokuwiki div.wrap_alert { background-image: url(images/note/48/alert.png); } +.dokuwiki span.wrap_alert { background-image: url(images/note/16/alert.png); } + +/*____________ tip ____________*/ +.dokuwiki .wrap_tip { background-color: #fff79f; } +.dokuwiki .wrap__dark.wrap_tip { background-color: #4a4400; } +.dokuwiki div.wrap_tip { background-image: url(images/note/48/tip.png); } +.dokuwiki span.wrap_tip { background-image: url(images/note/16/tip.png); } + +/*____________ help ____________*/ +.dokuwiki .wrap_help { background-color: #dcc2ef; } +.dokuwiki .wrap__dark.wrap_help { background-color: #3c1757; } +.dokuwiki div.wrap_help { background-image: url(images/note/48/help.png); } +.dokuwiki span.wrap_help { background-image: url(images/note/16/help.png); } + +/*____________ todo ____________*/ +.dokuwiki .wrap_todo { background-color: #c2efdd; } +.dokuwiki .wrap__dark.wrap_todo { background-color: #17573e; } +.dokuwiki div.wrap_todo { background-image: url(images/note/48/todo.png); } +.dokuwiki span.wrap_todo { background-image: url(images/note/16/todo.png); } + +/*____________ download ____________*/ +.dokuwiki .wrap_download { background-color: #d6efc2; } +.dokuwiki .wrap__dark.wrap_download { background-color: #345717; } +.dokuwiki div.wrap_download { background-image: url(images/note/48/download.png); } +.dokuwiki span.wrap_download { background-image: url(images/note/16/download.png); } + + +/*____________ safety notes ____________*/ + +.dokuwiki .wrap_danger { + background-color: #c00; + color: #fff; +} +.dokuwiki .wrap_warning { + background-color: #f60; + color: #000; +} +.dokuwiki .wrap_caution { + background-color: #ff0; + color: #000; +} +.dokuwiki .wrap_notice { + background-color: #06f; + color: #fff; +} +.dokuwiki .wrap_safety { + background-color: #090; + color: #fff; +} + + +/* mark +********************************************************************/ + +.dokuwiki .wrap_hi { + background-color: #ff9; + overflow: hidden; +} +.dokuwiki .wrap__dark.wrap_hi { + background-color: #4e4e0d; +} + + +/* miscellaneous +********************************************************************/ + +/*____________ spoiler ____________*/ + +.dokuwiki .wrap_spoiler { + background-color: __background__ !important; + color: __background__ !important; + border: 1px dotted red; +} + +/*____________ only print ____________*/ + +.dokuwiki .wrap_onlyprint { + display: none; +} + +/*____________ tabs ____________*/ +/* in addition to template styles */ + +.dokuwiki .plugin_wrap.tabs { + margin-bottom: 1.4em; +} + +/*____________ button-style link ____________*/ + +.dokuwiki .wrap_button a:link, +.dokuwiki .wrap_button a:visited { + background-color: __background_alt__; +} +.dokuwiki .wrap_button a:link:hover, +.dokuwiki .wrap_button a:visited:hover, +.dokuwiki .wrap_button a:link:focus, +.dokuwiki .wrap_button a:visited:focus, +.dokuwiki .wrap_button a:link:active, +.dokuwiki .wrap_button a:visited:active { + background-color: __background_neu__; +} diff --git a/sources/lib/plugins/wrap/syntax/closesection.php b/sources/lib/plugins/wrap/syntax/closesection.php new file mode 100755 index 0000000..4bb4837 --- /dev/null +++ b/sources/lib/plugins/wrap/syntax/closesection.php @@ -0,0 +1,40 @@ + + */ + +if(!defined('DOKU_INC')) die(); + +if(!defined('DOKU_PLUGIN')) define('DOKU_PLUGIN',DOKU_INC.'lib/plugins/'); +require_once(DOKU_PLUGIN.'syntax.php'); + +class syntax_plugin_wrap_closesection extends DokuWiki_Syntax_Plugin { + + function getType(){ return 'substition';} + function getPType(){ return 'block';} + function getSort(){ return 195; } + + /** + * Dummy handler, this syntax part has no syntax but is directly added to the instructions by the div syntax + */ + function handle($match, $state, $pos, Doku_Handler $handler){ + } + + /** + * Create output + */ + function render($mode, Doku_Renderer $renderer, $indata) { + if($mode == 'xhtml'){ + /** @var Doku_Renderer_xhtml $renderer */ + $renderer->finishSectionEdit(); + return true; + } + return false; + } + + +} + diff --git a/sources/lib/plugins/wrap/syntax/div.php b/sources/lib/plugins/wrap/syntax/div.php new file mode 100755 index 0000000..2e84c2b --- /dev/null +++ b/sources/lib/plugins/wrap/syntax/div.php @@ -0,0 +1,132 @@ + + */ + +if(!defined('DOKU_INC')) die(); + +if(!defined('DOKU_PLUGIN')) define('DOKU_PLUGIN',DOKU_INC.'lib/plugins/'); +require_once(DOKU_PLUGIN.'syntax.php'); + +class syntax_plugin_wrap_div extends DokuWiki_Syntax_Plugin { + protected $special_pattern = '\r\n]*?/>'; + protected $entry_pattern = '(?=.*?
    )'; + protected $exit_pattern = '
    '; + + function getType(){ return 'formatting';} + function getAllowedTypes() { return array('container', 'formatting', 'substition', 'protected', 'disabled', 'paragraphs'); } + function getPType(){ return 'stack';} + function getSort(){ return 195; } + // override default accepts() method to allow nesting - ie, to get the plugin accepts its own entry syntax + function accepts($mode) { + if ($mode == substr(get_class($this), 7)) return true; + return parent::accepts($mode); + } + + /** + * Connect pattern to lexer + */ + function connectTo($mode) { + $this->Lexer->addSpecialPattern($this->special_pattern,$mode,'plugin_wrap_'.$this->getPluginComponent()); + $this->Lexer->addEntryPattern($this->entry_pattern,$mode,'plugin_wrap_'.$this->getPluginComponent()); + } + + function postConnect() { + $this->Lexer->addExitPattern($this->exit_pattern, 'plugin_wrap_'.$this->getPluginComponent()); + $this->Lexer->addPattern('[ \t]*={2,}[^\n]+={2,}[ \t]*(?=\n)', 'plugin_wrap_'.$this->getPluginComponent()); + } + + /** + * Handle the match + */ + function handle($match, $state, $pos, Doku_Handler $handler){ + global $conf; + switch ($state) { + case DOKU_LEXER_ENTER: + case DOKU_LEXER_SPECIAL: + $data = strtolower(trim(substr($match,strpos($match,' '),-1)," \t\n/")); + return array($state, $data); + + case DOKU_LEXER_UNMATCHED: + $handler->_addCall('cdata', array($match), $pos); + break; + + case DOKU_LEXER_MATCHED: + // we have a == header ==, use the core header() renderer + // (copied from core header() in inc/parser/handler.php) + $title = trim($match); + $level = 7 - strspn($title,'='); + if($level < 1) $level = 1; + $title = trim($title,'='); + $title = trim($title); + + $handler->_addCall('header',array($title,$level,$pos), $pos); + // close the section edit the header could open + if ($title && $level <= $conf['maxseclevel']) { + $handler->addPluginCall('wrap_closesection', array(), DOKU_LEXER_SPECIAL, $pos, ''); + } + break; + + case DOKU_LEXER_EXIT: + return array($state, ''); + } + return false; + } + + /** + * Create output + */ + function render($mode, Doku_Renderer $renderer, $indata) { + static $type_stack = array (); + + if (empty($indata)) return false; + list($state, $data) = $indata; + + if($mode == 'xhtml'){ + /** @var Doku_Renderer_xhtml $renderer */ + switch ($state) { + case DOKU_LEXER_ENTER: + // add a section edit right at the beginning of the wrap output + $renderer->startSectionEdit(0, 'plugin_wrap_start'); + $renderer->finishSectionEdit(); + // add a section edit for the end of the wrap output. This prevents the renderer + // from closing the last section edit so the next section button after the wrap syntax will + // include the whole wrap syntax + $renderer->startSectionEdit(0, 'plugin_wrap_end'); + + case DOKU_LEXER_SPECIAL: + $wrap = $this->loadHelper('wrap'); + $attr = $wrap->buildAttributes($data, 'plugin_wrap'); + + $renderer->doc .= ''; + if ($state == DOKU_LEXER_SPECIAL) $renderer->doc .= ''; + break; + + case DOKU_LEXER_EXIT: + $renderer->doc .= ''; + $renderer->finishSectionEdit(); + break; + } + return true; + } + if($mode == 'odt'){ + switch ($state) { + case DOKU_LEXER_ENTER: + $wrap = plugin_load('helper', 'wrap'); + array_push ($type_stack, $wrap->renderODTElementOpen($renderer, 'div', $data)); + break; + + case DOKU_LEXER_EXIT: + $element = array_pop ($type_stack); + $wrap = plugin_load('helper', 'wrap'); + $wrap->renderODTElementClose ($renderer, $element); + break; + } + return true; + } + return false; + } +} diff --git a/sources/lib/plugins/wrap/syntax/divblock.php b/sources/lib/plugins/wrap/syntax/divblock.php new file mode 100755 index 0000000..9bac053 --- /dev/null +++ b/sources/lib/plugins/wrap/syntax/divblock.php @@ -0,0 +1,21 @@ + ...
    syntax + * + * @license GPL 2 (http://www.gnu.org/licenses/gpl.html) + * @author Anika Henke + */ + +require_once(dirname(__FILE__).'/div.php'); + +class syntax_plugin_wrap_divblock extends syntax_plugin_wrap_div { + + protected $special_pattern = '\r\n]*?/>'; + protected $entry_pattern = '(?=.*?)'; + protected $exit_pattern = ''; + + +} + diff --git a/sources/lib/plugins/wrap/syntax/divwrap.php b/sources/lib/plugins/wrap/syntax/divwrap.php new file mode 100755 index 0000000..386c5ff --- /dev/null +++ b/sources/lib/plugins/wrap/syntax/divwrap.php @@ -0,0 +1,20 @@ + ...
    syntax + * + * @license GPL 2 (http://www.gnu.org/licenses/gpl.html) + * @author Anika Henke + */ + +require_once(dirname(__FILE__).'/div.php'); + +class syntax_plugin_wrap_divwrap extends syntax_plugin_wrap_div { + + protected $special_pattern = '\r\n]*?/>'; + protected $entry_pattern = '(?=.*?)'; + protected $exit_pattern = ''; + +} + diff --git a/sources/lib/plugins/wrap/syntax/span.php b/sources/lib/plugins/wrap/syntax/span.php new file mode 100755 index 0000000..2611c5a --- /dev/null +++ b/sources/lib/plugins/wrap/syntax/span.php @@ -0,0 +1,105 @@ + + */ + +if(!defined('DOKU_INC')) die(); + +if(!defined('DOKU_PLUGIN')) define('DOKU_PLUGIN',DOKU_INC.'lib/plugins/'); +require_once(DOKU_PLUGIN.'syntax.php'); + +class syntax_plugin_wrap_span extends DokuWiki_Syntax_Plugin { + protected $special_pattern = '\r\n]*?/>'; + protected $entry_pattern = '(?=.*?)'; + protected $exit_pattern = ''; + + function getType(){ return 'formatting';} + function getAllowedTypes() { return array('formatting', 'substition', 'disabled'); } + function getPType(){ return 'normal';} + function getSort(){ return 195; } + // override default accepts() method to allow nesting - ie, to get the plugin accepts its own entry syntax + function accepts($mode) { + if ($mode == substr(get_class($this), 7)) return true; + return parent::accepts($mode); + } + + /** + * Connect pattern to lexer + */ + function connectTo($mode) { + $this->Lexer->addSpecialPattern($this->special_pattern,$mode,'plugin_wrap_'.$this->getPluginComponent()); + $this->Lexer->addEntryPattern($this->entry_pattern,$mode,'plugin_wrap_'.$this->getPluginComponent()); + } + + function postConnect() { + $this->Lexer->addExitPattern($this->exit_pattern, 'plugin_wrap_'.$this->getPluginComponent()); + } + + /** + * Handle the match + */ + function handle($match, $state, $pos, Doku_Handler $handler){ + switch ($state) { + case DOKU_LEXER_ENTER: + case DOKU_LEXER_SPECIAL: + $data = strtolower(trim(substr($match,strpos($match,' '),-1)," \t\n/")); + return array($state, $data); + + case DOKU_LEXER_UNMATCHED : + $handler->_addCall('cdata', array($match), $pos); + return false; + + case DOKU_LEXER_EXIT : + return array($state, ''); + + } + return false; + } + + /** + * Create output + */ + function render($mode, Doku_Renderer $renderer, $indata) { + static $type_stack = array (); + + if (empty($indata)) return false; + list($state, $data) = $indata; + + if($mode == 'xhtml'){ + switch ($state) { + case DOKU_LEXER_ENTER: + case DOKU_LEXER_SPECIAL: + $wrap = $this->loadHelper('wrap'); + $attr = $wrap->buildAttributes($data); + + $renderer->doc .= ''; + if ($state == DOKU_LEXER_SPECIAL) $renderer->doc .= ''; + break; + + case DOKU_LEXER_EXIT: + $renderer->doc .= ''; + break; + } + return true; + } + if($mode == 'odt'){ + switch ($state) { + case DOKU_LEXER_ENTER: + $wrap = plugin_load('helper', 'wrap'); + array_push ($type_stack, $wrap->renderODTElementOpen($renderer, 'span', $data)); + break; + + case DOKU_LEXER_EXIT: + $element = array_pop ($type_stack); + $wrap = plugin_load('helper', 'wrap'); + $wrap->renderODTElementClose ($renderer, $element); + break; + } + return true; + } + return false; + } +} diff --git a/sources/lib/plugins/wrap/syntax/spaninline.php b/sources/lib/plugins/wrap/syntax/spaninline.php new file mode 100755 index 0000000..cc7a669 --- /dev/null +++ b/sources/lib/plugins/wrap/syntax/spaninline.php @@ -0,0 +1,20 @@ + ... syntax + * + * @license GPL 2 (http://www.gnu.org/licenses/gpl.html) + * @author Anika Henke + */ + +require_once(dirname(__FILE__).'/span.php'); + +class syntax_plugin_wrap_spaninline extends syntax_plugin_wrap_span { + + protected $special_pattern = '\r\n]*?/>'; + protected $entry_pattern = '(?=.*?)'; + protected $exit_pattern = ''; + +} + diff --git a/sources/lib/plugins/wrap/syntax/spanwrap.php b/sources/lib/plugins/wrap/syntax/spanwrap.php new file mode 100755 index 0000000..9c3d921 --- /dev/null +++ b/sources/lib/plugins/wrap/syntax/spanwrap.php @@ -0,0 +1,21 @@ + ... syntax + * + * @license GPL 2 (http://www.gnu.org/licenses/gpl.html) + * @author Anika Henke + */ + +require_once(dirname(__FILE__).'/span.php'); + +class syntax_plugin_wrap_spanwrap extends syntax_plugin_wrap_span { + + protected $special_pattern = '\r\n]*?/>'; + protected $entry_pattern = '(?=.*?)'; + protected $exit_pattern = ''; + + +} +