summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Gohr <andi@splitbrain.org>2012-04-15 13:45:45 +0200
committerAndreas Gohr <andi@splitbrain.org>2012-04-15 13:45:45 +0200
commitae7c596cf4e6a0a09ebcf01fe8ae98789360c5be (patch)
treef156252e404e9893922cb5d984fdc646644b6c17
parentf41c79d730286e8e8c95deb88a4c876e08e278a2 (diff)
parent026b314868ee80aca644bf4107f78d8e8052b43e (diff)
downloadrpg-ae7c596cf4e6a0a09ebcf01fe8ae98789360c5be.tar.gz
rpg-ae7c596cf4e6a0a09ebcf01fe8ae98789360c5be.tar.bz2
Merge branch 'master' into htmlmail
* master: (382 commits) Romanian language update Marathi language update Arabic Language Update when there's not enough space for images, make sure they stay proportional (might be FS#2480) added minimal RTL print styles (part of FS#2185) moved plugins' rtl.css to their style.css counterpart (part of FS#2185) removed all browser-specific gradients as the recently (in 42ff6730) introduced svg makes them unnecessary removed comments from accidentally commented lines in tpl_includeFile() removed obsolete template file added tpl_includeFile() to core Make getTitle method in remote interface public Changed an error code in XML-RPC interface. This error hasn't anything to do with the rest of the -32600 errors. BG: language update Korean language update fixed performance issues with gradient in Firefox (which also added gradient support for IE9) (FS#2447) deleted very old (and unused) images added accidentally removed '<?php' back in (was in 57fc5edd) wrapped X-UA-Compatible meta tag with conditional comments added explanation to todo in _forms.css removed problematic 'overflow: hidden' from lists again ('unfixes' FS#1950) ... Conflicts: inc/auth.php inc/load.php
-rw-r--r--COPYING41
-rw-r--r--README2
-rw-r--r--_cs/DokuWiki/DokuWikiCodingStandard.php78
-rw-r--r--_cs/DokuWiki/Sniffs/NamingConventions/ConstructorNameSniff.php85
-rw-r--r--_cs/DokuWiki/Sniffs/PHP/DeprecatedFunctionsSniff.php61
-rw-r--r--_cs/DokuWiki/Sniffs/PHP/DiscouragedFunctionsSniff.php4
-rw-r--r--_cs/DokuWiki/ruleset.xml64
-rw-r--r--_test/cases/inc/auth_password.test.php10
-rw-r--r--_test/cases/inc/common_cleanText.test.php34
-rw-r--r--_test/cases/inc/parser/parser_links.test.php15
-rw-r--r--_test/cases/inc/remote.test.php324
-rw-r--r--_test/index.php2
-rw-r--r--conf/dokuwiki.php17
-rw-r--r--data/_dummy1
-rw-r--r--data/pages/wiki/syntax.txt2
-rw-r--r--doku.php2
-rw-r--r--feed.php6
-rw-r--r--inc/DifferenceEngine.php10
-rw-r--r--inc/HTTPClient.php24
-rw-r--r--inc/IXR_Library.php11
-rw-r--r--inc/PassHash.class.php55
-rw-r--r--inc/RemoteAPICore.php768
-rw-r--r--inc/SafeFN.class.php23
-rw-r--r--inc/Sitemapper.php38
-rw-r--r--inc/TarLib.class.php4
-rw-r--r--inc/adLDAP.php20
-rw-r--r--inc/auth.php73
-rw-r--r--inc/auth/ad.class.php88
-rw-r--r--inc/auth/basic.class.php728
-rw-r--r--inc/auth/ldap.class.php5
-rw-r--r--inc/auth/mysql.class.php932
-rw-r--r--inc/auth/pgsql.class.php417
-rw-r--r--inc/auth/plain.class.php282
-rw-r--r--inc/changelog.php12
-rw-r--r--inc/cliopts.php10
-rw-r--r--inc/common.php18
-rw-r--r--inc/config_cascade.php2
-rw-r--r--inc/html.php53
-rw-r--r--inc/httputils.php8
-rw-r--r--inc/indexer.php28
-rw-r--r--inc/init.php38
-rw-r--r--inc/io.php2
-rw-r--r--inc/lang/af/lang.php4
-rw-r--r--inc/lang/ar/lang.php71
-rw-r--r--inc/lang/ar/resetpwd.txt3
-rw-r--r--inc/lang/az/lang.php17
-rw-r--r--inc/lang/bg/lang.php92
-rw-r--r--inc/lang/bg/resetpwd.txt4
-rw-r--r--inc/lang/ca-valencia/lang.php17
-rw-r--r--inc/lang/ca/lang.php17
-rw-r--r--inc/lang/cs/lang.php92
-rw-r--r--inc/lang/da/lang.php17
-rw-r--r--inc/lang/de-informal/lang.php23
-rw-r--r--inc/lang/de/lang.php31
-rw-r--r--inc/lang/de/resetpwd.txt4
-rw-r--r--inc/lang/el/lang.php17
-rw-r--r--inc/lang/en/lang.php28
-rw-r--r--inc/lang/en/resetpwd.txt4
-rw-r--r--inc/lang/eo/lang.php68
-rw-r--r--inc/lang/es/lang.php21
-rw-r--r--inc/lang/et/lang.php11
-rw-r--r--inc/lang/eu/lang.php17
-rw-r--r--inc/lang/fa/lang.php17
-rw-r--r--inc/lang/fi/lang.php39
-rw-r--r--inc/lang/fo/lang.php2
-rw-r--r--inc/lang/fr/index.txt2
-rw-r--r--inc/lang/fr/lang.php36
-rw-r--r--inc/lang/gl/lang.php108
-rw-r--r--inc/lang/he/lang.php17
-rw-r--r--inc/lang/hi/lang.php8
-rw-r--r--inc/lang/hr/lang.php17
-rw-r--r--inc/lang/hu/lang.php17
-rw-r--r--inc/lang/ia/lang.php17
-rw-r--r--inc/lang/id-ni/lang.php2
-rw-r--r--inc/lang/id/lang.php13
-rw-r--r--inc/lang/is/lang.php9
-rw-r--r--inc/lang/it/lang.php23
-rw-r--r--inc/lang/ja/index.txt2
-rw-r--r--inc/lang/ja/lang.php75
-rw-r--r--inc/lang/ja/resetpwd.txt3
-rw-r--r--inc/lang/kk/lang.php4
-rw-r--r--inc/lang/km/lang.php2
-rw-r--r--inc/lang/ko/lang.php74
-rw-r--r--inc/lang/ko/resetpwd.txt3
-rw-r--r--inc/lang/la/lang.php19
-rw-r--r--inc/lang/lb/lang.php19
-rw-r--r--inc/lang/lt/lang.php13
-rw-r--r--inc/lang/lv/lang.php40
-rw-r--r--inc/lang/mk/lang.php16
-rw-r--r--inc/lang/mr/lang.php97
-rw-r--r--inc/lang/ms/lang.php97
-rw-r--r--inc/lang/ne/lang.php15
-rw-r--r--inc/lang/nl/lang.php27
-rw-r--r--inc/lang/no/admin.txt2
-rw-r--r--inc/lang/no/adminplugins.txt2
-rw-r--r--inc/lang/no/conflict.txt2
-rw-r--r--inc/lang/no/denied.txt2
-rw-r--r--inc/lang/no/lang.php68
-rw-r--r--inc/lang/no/newpage.txt2
-rw-r--r--inc/lang/no/pwconfirm.txt2
-rw-r--r--inc/lang/no/recent.txt2
-rw-r--r--inc/lang/no/register.txt2
-rw-r--r--inc/lang/no/showrev.txt2
-rw-r--r--inc/lang/no/subscr_form.txt2
-rw-r--r--inc/lang/pl/lang.php69
-rw-r--r--inc/lang/pt-br/lang.php21
-rw-r--r--inc/lang/pt/lang.php19
-rw-r--r--inc/lang/ro/lang.php27
-rw-r--r--inc/lang/ro/resetpwd.txt3
-rw-r--r--inc/lang/ru/lang.php121
-rw-r--r--inc/lang/sk/lang.php25
-rw-r--r--inc/lang/sl/lang.php76
-rw-r--r--inc/lang/sl/locked.txt2
-rw-r--r--inc/lang/sl/stopwords.txt6
-rw-r--r--inc/lang/sq/lang.php17
-rw-r--r--inc/lang/sr/lang.php17
-rw-r--r--inc/lang/sv/lang.php17
-rw-r--r--inc/lang/th/lang.php17
-rw-r--r--inc/lang/tr/lang.php15
-rw-r--r--inc/lang/uk/lang.php17
-rw-r--r--inc/lang/zh-tw/lang.php63
-rw-r--r--inc/lang/zh/lang.php33
-rw-r--r--inc/load.php5
-rw-r--r--inc/mail.php6
-rw-r--r--inc/media.php44
-rw-r--r--inc/pageutils.php8
-rw-r--r--inc/parser/metadata.php8
-rw-r--r--inc/parser/parser.php2
-rw-r--r--inc/parser/xhtml.php6
-rw-r--r--inc/plugincontroller.class.php1
-rw-r--r--inc/remote.php253
-rw-r--r--inc/template.php188
-rw-r--r--inc/toolbar.php2
-rw-r--r--inc/utf8.php2
-rw-r--r--install.php23
-rw-r--r--lib/exe/ajax.php9
-rw-r--r--lib/exe/css.php4
-rw-r--r--lib/exe/js.php12
-rw-r--r--lib/exe/opensearch.php4
-rw-r--r--lib/exe/xmlrpc.php875
-rw-r--r--lib/images/arrow_down.gifbin273 -> 0 bytes
-rw-r--r--lib/images/arrow_up.gifbin274 -> 0 bytes
-rw-r--r--lib/images/at.gifbin57 -> 0 bytes
-rw-r--r--lib/images/close.pngbin137 -> 0 bytes
-rw-r--r--lib/images/del.pngbin355 -> 0 bytes
-rw-r--r--lib/images/edit.gifbin142 -> 0 bytes
-rw-r--r--lib/images/icon-file.pngbin3363 -> 0 bytes
-rw-r--r--lib/images/icon-thumb.pngbin969 -> 0 bytes
-rw-r--r--lib/images/list-minus.gifbin64 -> 0 bytes
-rw-r--r--lib/images/list-plus.gifbin67 -> 0 bytes
-rw-r--r--lib/images/pencil.pngbin391 -> 0 bytes
-rw-r--r--lib/plugins/acl/admin.php2
-rw-r--r--lib/plugins/acl/ajax.php11
-rw-r--r--lib/plugins/acl/lang/cs/lang.php2
-rw-r--r--lib/plugins/acl/lang/fr/help.txt4
-rw-r--r--lib/plugins/acl/lang/fr/lang.php1
-rw-r--r--lib/plugins/acl/lang/gl/lang.php1
-rw-r--r--lib/plugins/acl/lang/ja/lang.php1
-rw-r--r--lib/plugins/acl/lang/ko/lang.php1
-rw-r--r--lib/plugins/acl/lang/ms/lang.php6
-rw-r--r--lib/plugins/acl/lang/nl/lang.php1
-rw-r--r--lib/plugins/acl/lang/no/help.txt2
-rw-r--r--lib/plugins/acl/lang/no/lang.php7
-rw-r--r--lib/plugins/acl/lang/pl/lang.php1
-rw-r--r--lib/plugins/acl/lang/ro/lang.php2
-rw-r--r--lib/plugins/acl/lang/ru/lang.php1
-rw-r--r--lib/plugins/acl/lang/sl/help.txt10
-rw-r--r--lib/plugins/acl/lang/sl/lang.php2
-rw-r--r--lib/plugins/acl/lang/zh/lang.php1
-rw-r--r--lib/plugins/acl/rtl.css40
-rw-r--r--lib/plugins/acl/script.js10
-rw-r--r--lib/plugins/acl/style.css31
-rw-r--r--lib/plugins/config/admin.php10
-rw-r--r--lib/plugins/config/lang/ar/lang.php13
-rw-r--r--lib/plugins/config/lang/bg/lang.php77
-rw-r--r--lib/plugins/config/lang/ca-valencia/lang.php2
-rw-r--r--lib/plugins/config/lang/ca/lang.php6
-rw-r--r--lib/plugins/config/lang/cs/lang.php12
-rw-r--r--lib/plugins/config/lang/da/lang.php2
-rw-r--r--lib/plugins/config/lang/de-informal/lang.php3
-rw-r--r--lib/plugins/config/lang/de/lang.php3
-rw-r--r--lib/plugins/config/lang/el/lang.php4
-rw-r--r--lib/plugins/config/lang/en/lang.php8
-rw-r--r--lib/plugins/config/lang/eo/lang.php2
-rw-r--r--lib/plugins/config/lang/es/lang.php7
-rw-r--r--lib/plugins/config/lang/eu/lang.php2
-rw-r--r--lib/plugins/config/lang/fa/lang.php2
-rw-r--r--lib/plugins/config/lang/fi/lang.php2
-rw-r--r--lib/plugins/config/lang/fr/intro.txt2
-rw-r--r--lib/plugins/config/lang/fr/lang.php6
-rw-r--r--lib/plugins/config/lang/gl/lang.php9
-rw-r--r--lib/plugins/config/lang/he/lang.php1
-rw-r--r--lib/plugins/config/lang/hu/lang.php2
-rw-r--r--lib/plugins/config/lang/ia/lang.php2
-rw-r--r--lib/plugins/config/lang/id-ni/lang.php1
-rw-r--r--lib/plugins/config/lang/it/lang.php2
-rw-r--r--lib/plugins/config/lang/ja/lang.php11
-rw-r--r--lib/plugins/config/lang/ko/lang.php7
-rw-r--r--lib/plugins/config/lang/la/lang.php2
-rw-r--r--lib/plugins/config/lang/lv/lang.php2
-rw-r--r--lib/plugins/config/lang/mr/lang.php2
-rw-r--r--lib/plugins/config/lang/ms/lang.php6
-rw-r--r--lib/plugins/config/lang/nl/lang.php5
-rw-r--r--lib/plugins/config/lang/no/lang.php17
-rw-r--r--lib/plugins/config/lang/pl/lang.php11
-rw-r--r--lib/plugins/config/lang/pt-br/lang.php2
-rw-r--r--lib/plugins/config/lang/pt/lang.php2
-rw-r--r--lib/plugins/config/lang/ro/lang.php10
-rw-r--r--lib/plugins/config/lang/ru/lang.php8
-rw-r--r--lib/plugins/config/lang/sk/lang.php3
-rw-r--r--lib/plugins/config/lang/sl/lang.php17
-rw-r--r--lib/plugins/config/lang/sq/lang.php2
-rw-r--r--lib/plugins/config/lang/sr/lang.php2
-rw-r--r--lib/plugins/config/lang/sv/lang.php2
-rw-r--r--lib/plugins/config/lang/th/lang.php1
-rw-r--r--lib/plugins/config/lang/uk/lang.php2
-rw-r--r--lib/plugins/config/lang/zh-tw/lang.php4
-rw-r--r--lib/plugins/config/lang/zh/lang.php3
-rw-r--r--lib/plugins/config/rtl.css45
-rw-r--r--lib/plugins/config/settings/config.class.php10
-rw-r--r--lib/plugins/config/settings/config.metadata.php12
-rw-r--r--lib/plugins/config/style.css36
-rw-r--r--lib/plugins/info/syntax.php8
-rw-r--r--lib/plugins/plugin/classes/ap_download.class.php2
-rw-r--r--lib/plugins/plugin/classes/ap_manage.class.php4
-rw-r--r--lib/plugins/plugin/lang/ar/lang.php1
-rw-r--r--lib/plugins/plugin/lang/bg/lang.php2
-rw-r--r--lib/plugins/plugin/lang/cs/lang.php4
-rw-r--r--lib/plugins/plugin/lang/de-informal/lang.php2
-rw-r--r--lib/plugins/plugin/lang/de/lang.php2
-rw-r--r--lib/plugins/plugin/lang/es/lang.php2
-rw-r--r--lib/plugins/plugin/lang/eu/lang.php2
-rw-r--r--lib/plugins/plugin/lang/fa/lang.php2
-rw-r--r--lib/plugins/plugin/lang/fi/lang.php2
-rw-r--r--lib/plugins/plugin/lang/fr/admin_plugin.txt2
-rw-r--r--lib/plugins/plugin/lang/fr/lang.php1
-rw-r--r--lib/plugins/plugin/lang/gl/lang.php2
-rw-r--r--lib/plugins/plugin/lang/hu/lang.php2
-rw-r--r--lib/plugins/plugin/lang/ja/lang.php3
-rw-r--r--lib/plugins/plugin/lang/ko/lang.php3
-rw-r--r--lib/plugins/plugin/lang/mk/lang.php4
-rw-r--r--lib/plugins/plugin/lang/ms/lang.php6
-rw-r--r--lib/plugins/plugin/lang/nl/lang.php1
-rw-r--r--lib/plugins/plugin/lang/no/admin_plugin.txt2
-rw-r--r--lib/plugins/plugin/lang/no/lang.php9
-rw-r--r--lib/plugins/plugin/lang/pl/lang.php4
-rw-r--r--lib/plugins/plugin/lang/pt-br/lang.php2
-rw-r--r--lib/plugins/plugin/lang/pt/lang.php2
-rw-r--r--lib/plugins/plugin/lang/ro/lang.php2
-rw-r--r--lib/plugins/plugin/lang/ru/lang.php2
-rw-r--r--lib/plugins/plugin/lang/sk/lang.php2
-rw-r--r--lib/plugins/plugin/lang/sl/admin_plugin.txt2
-rw-r--r--lib/plugins/plugin/lang/sl/lang.php2
-rw-r--r--lib/plugins/plugin/lang/uk/lang.php2
-rw-r--r--lib/plugins/plugin/lang/zh/lang.php1
-rw-r--r--lib/plugins/plugin/rtl.css51
-rw-r--r--lib/plugins/plugin/style.css39
-rw-r--r--lib/plugins/popularity/lang/cs/lang.php2
-rw-r--r--lib/plugins/popularity/lang/fr/lang.php5
-rw-r--r--lib/plugins/popularity/lang/gl/lang.php6
-rw-r--r--lib/plugins/popularity/lang/gl/submitted.txt3
-rw-r--r--lib/plugins/popularity/lang/ja/lang.php1
-rw-r--r--lib/plugins/popularity/lang/ko/lang.php1
-rw-r--r--lib/plugins/popularity/lang/ms/lang.php6
-rw-r--r--lib/plugins/popularity/lang/nl/lang.php1
-rw-r--r--lib/plugins/popularity/lang/no/intro.txt4
-rw-r--r--lib/plugins/popularity/lang/no/lang.php3
-rw-r--r--lib/plugins/popularity/lang/no/submitted.txt2
-rw-r--r--lib/plugins/popularity/lang/pl/lang.php1
-rw-r--r--lib/plugins/popularity/lang/ro/lang.php2
-rw-r--r--lib/plugins/popularity/lang/ru/lang.php1
-rw-r--r--lib/plugins/popularity/lang/sl/intro.txt10
-rw-r--r--lib/plugins/popularity/lang/sl/submitted.txt4
-rw-r--r--lib/plugins/popularity/lang/zh/lang.php1
-rw-r--r--lib/plugins/remote.php21
-rw-r--r--lib/plugins/revert/lang/cs/lang.php4
-rw-r--r--lib/plugins/revert/lang/fr/lang.php1
-rw-r--r--lib/plugins/revert/lang/gl/lang.php1
-rw-r--r--lib/plugins/revert/lang/ja/lang.php1
-rw-r--r--lib/plugins/revert/lang/ko/lang.php1
-rw-r--r--lib/plugins/revert/lang/lv/lang.php2
-rw-r--r--lib/plugins/revert/lang/ms/lang.php6
-rw-r--r--lib/plugins/revert/lang/nl/lang.php1
-rw-r--r--lib/plugins/revert/lang/no/lang.php1
-rw-r--r--lib/plugins/revert/lang/pl/lang.php1
-rw-r--r--lib/plugins/revert/lang/pt-br/lang.php2
-rw-r--r--lib/plugins/revert/lang/ro/lang.php2
-rw-r--r--lib/plugins/revert/lang/ru/lang.php1
-rw-r--r--lib/plugins/revert/lang/sl/intro.txt2
-rw-r--r--lib/plugins/revert/lang/zh/lang.php1
-rw-r--r--lib/plugins/usermanager/admin.php4
-rw-r--r--lib/plugins/usermanager/lang/cs/lang.php2
-rw-r--r--lib/plugins/usermanager/lang/es/lang.php2
-rw-r--r--lib/plugins/usermanager/lang/fr/lang.php1
-rw-r--r--lib/plugins/usermanager/lang/gl/lang.php1
-rw-r--r--lib/plugins/usermanager/lang/ja/lang.php1
-rw-r--r--lib/plugins/usermanager/lang/ko/lang.php1
-rw-r--r--lib/plugins/usermanager/lang/ms/lang.php6
-rw-r--r--lib/plugins/usermanager/lang/nl/lang.php1
-rw-r--r--lib/plugins/usermanager/lang/no/lang.php3
-rw-r--r--lib/plugins/usermanager/lang/pl/lang.php1
-rw-r--r--lib/plugins/usermanager/lang/ro/lang.php2
-rw-r--r--lib/plugins/usermanager/lang/ru/lang.php1
-rw-r--r--lib/plugins/usermanager/lang/sl/delete.txt2
-rw-r--r--lib/plugins/usermanager/lang/zh/lang.php1
-rw-r--r--lib/scripts/behaviour.js2
-rw-r--r--lib/scripts/compatibility.js2
-rw-r--r--lib/scripts/editor.js6
-rw-r--r--lib/scripts/fileuploaderextended.js4
-rw-r--r--lib/scripts/linkwiz.js13
-rw-r--r--lib/scripts/media.js12
-rw-r--r--lib/scripts/page.js4
-rw-r--r--lib/scripts/qsearch.js4
-rw-r--r--lib/tpl/default/_linkwiz.css29
-rw-r--r--lib/tpl/default/_mediamanager.css5
-rw-r--r--lib/tpl/dokuwiki/css/_admin.css47
-rw-r--r--lib/tpl/dokuwiki/css/_diff.css65
-rw-r--r--lib/tpl/dokuwiki/css/_edit.css128
-rw-r--r--lib/tpl/dokuwiki/css/_fileuploader.css112
-rw-r--r--lib/tpl/dokuwiki/css/_footnotes.css28
-rw-r--r--lib/tpl/dokuwiki/css/_forms.css82
-rw-r--r--lib/tpl/dokuwiki/css/_imgdetail.css30
-rw-r--r--lib/tpl/dokuwiki/css/_links.css65
-rw-r--r--lib/tpl/dokuwiki/css/_media_fullscreen.css458
-rw-r--r--lib/tpl/dokuwiki/css/_media_popup.css205
-rw-r--r--lib/tpl/dokuwiki/css/_modal.css83
-rw-r--r--lib/tpl/dokuwiki/css/_recent.css69
-rw-r--r--lib/tpl/dokuwiki/css/_search.css93
-rw-r--r--lib/tpl/dokuwiki/css/_tabs.css40
-rw-r--r--lib/tpl/dokuwiki/css/_toc.css77
-rw-r--r--lib/tpl/dokuwiki/css/basic.css373
-rw-r--r--lib/tpl/dokuwiki/css/content.css149
-rw-r--r--lib/tpl/dokuwiki/css/design.css467
-rw-r--r--lib/tpl/dokuwiki/css/includes.css4
-rw-r--r--lib/tpl/dokuwiki/css/mobile.css198
-rw-r--r--lib/tpl/dokuwiki/css/pagetools.css208
-rw-r--r--lib/tpl/dokuwiki/css/print.css192
-rw-r--r--lib/tpl/dokuwiki/css/rtl.css593
-rw-r--r--lib/tpl/dokuwiki/css/structure.css58
-rw-r--r--lib/tpl/dokuwiki/detail.php136
-rw-r--r--lib/tpl/dokuwiki/images/apple-touch-icon.pngbin0 -> 17728 bytes
-rw-r--r--lib/tpl/dokuwiki/images/bullet.pngbin0 -> 199 bytes
-rw-r--r--lib/tpl/dokuwiki/images/button-css.pngbin0 -> 299 bytes
-rw-r--r--lib/tpl/dokuwiki/images/button-donate.gifbin0 -> 187 bytes
-rw-r--r--lib/tpl/dokuwiki/images/button-dw.pngbin0 -> 404 bytes
-rw-r--r--lib/tpl/dokuwiki/images/button-php.gifbin0 -> 207 bytes
-rw-r--r--lib/tpl/dokuwiki/images/button-rss.pngbin0 -> 191 bytes
-rw-r--r--lib/tpl/dokuwiki/images/button-xhtml.pngbin0 -> 321 bytes
-rw-r--r--lib/tpl/dokuwiki/images/closed-rtl.pngbin0 -> 170 bytes
-rw-r--r--lib/tpl/dokuwiki/images/closed.pngbin0 -> 165 bytes
-rw-r--r--lib/tpl/dokuwiki/images/favicon.icobin0 -> 7406 bytes
-rw-r--r--lib/tpl/dokuwiki/images/link_icon.gifbin0 -> 942 bytes
-rw-r--r--lib/tpl/dokuwiki/images/logo.pngbin0 -> 12212 bytes
-rw-r--r--lib/tpl/dokuwiki/images/mail_icon.gifbin0 -> 918 bytes
-rw-r--r--lib/tpl/dokuwiki/images/open.pngbin0 -> 174 bytes
-rw-r--r--lib/tpl/dokuwiki/images/page-background.svg8
-rw-r--r--lib/tpl/dokuwiki/images/pagetools-build.php121
-rw-r--r--lib/tpl/dokuwiki/images/pagetools-sprite.pngbin0 -> 8178 bytes
-rw-r--r--lib/tpl/dokuwiki/images/pagetools/01_edit.pngbin0 -> 740 bytes
-rw-r--r--lib/tpl/dokuwiki/images/pagetools/02_create.pngbin0 -> 808 bytes
-rw-r--r--lib/tpl/dokuwiki/images/pagetools/03_draft.pngbin0 -> 828 bytes
-rw-r--r--lib/tpl/dokuwiki/images/pagetools/04_show.pngbin0 -> 458 bytes
-rw-r--r--lib/tpl/dokuwiki/images/pagetools/05_source.pngbin0 -> 753 bytes
-rw-r--r--lib/tpl/dokuwiki/images/pagetools/06_revert.pngbin0 -> 752 bytes
-rw-r--r--lib/tpl/dokuwiki/images/pagetools/07_revisions.pngbin0 -> 1144 bytes
-rw-r--r--lib/tpl/dokuwiki/images/pagetools/08_backlink.pngbin0 -> 844 bytes
-rw-r--r--lib/tpl/dokuwiki/images/pagetools/09_subscribe.pngbin0 -> 589 bytes
-rw-r--r--lib/tpl/dokuwiki/images/pagetools/10_top.pngbin0 -> 465 bytes
-rw-r--r--lib/tpl/dokuwiki/images/pagetools/11_mediamanager.pngbin0 -> 441 bytes
-rw-r--r--lib/tpl/dokuwiki/images/pagetools/12_back.pngbin0 -> 483 bytes
-rw-r--r--lib/tpl/dokuwiki/images/pagetools/license.txt4
-rw-r--r--lib/tpl/dokuwiki/images/resizecol.pngbin0 -> 225 bytes
-rw-r--r--lib/tpl/dokuwiki/images/search.pngbin0 -> 400 bytes
-rw-r--r--lib/tpl/dokuwiki/images/toc-arrows.pngbin0 -> 322 bytes
-rw-r--r--lib/tpl/dokuwiki/images/toc-bullet.pngbin0 -> 211 bytes
-rw-r--r--lib/tpl/dokuwiki/images/windows.gifbin0 -> 223 bytes
-rw-r--r--lib/tpl/dokuwiki/main.php92
-rw-r--r--lib/tpl/dokuwiki/mediamanager.php47
-rw-r--r--lib/tpl/dokuwiki/style.ini73
-rw-r--r--lib/tpl/dokuwiki/template.info.txt7
-rw-r--r--lib/tpl/dokuwiki/tpl_footer.php23
-rw-r--r--lib/tpl/dokuwiki/tpl_header.php81
382 files changed, 9311 insertions, 3929 deletions
diff --git a/COPYING b/COPYING
index d60c31a97..d159169d1 100644
--- a/COPYING
+++ b/COPYING
@@ -1,12 +1,12 @@
- GNU GENERAL PUBLIC LICENSE
- Version 2, June 1991
+ 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
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
- Preamble
+ Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
@@ -15,7 +15,7 @@ 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
+the GNU Lesser General Public License instead.) You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
@@ -55,8 +55,8 @@ 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
+
+ GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License applies to any program or other work which contains
@@ -110,7 +110,7 @@ above, provided that you also meet all of these conditions:
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
@@ -168,7 +168,7 @@ 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
@@ -225,7 +225,7 @@ 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
@@ -255,7 +255,7 @@ 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
+ 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
@@ -277,9 +277,9 @@ 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
+ 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
@@ -303,17 +303,16 @@ the "copyright" line and a pointer to where the full notice is found.
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
-
+ 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.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 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 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.
@@ -336,5 +335,5 @@ necessary. Here is a sample; alter the names:
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
+library. If this is what you want to do, use the GNU Lesser General
Public License instead of this License.
diff --git a/README b/README
index 6bb9a3bd9..0490040f2 100644
--- a/README
+++ b/README
@@ -4,7 +4,7 @@ at http://www.dokuwiki.org/
For Installation Instructions see
http://www.dokuwiki.org/install
-DokuWiki - 2004-2011 (c) Andreas Gohr <andi@splitbrain.org>
+DokuWiki - 2004-2012 (c) Andreas Gohr <andi@splitbrain.org>
and the DokuWiki Community
See COPYING and file headers for license info
diff --git a/_cs/DokuWiki/DokuWikiCodingStandard.php b/_cs/DokuWiki/DokuWikiCodingStandard.php
deleted file mode 100644
index 36133fc46..000000000
--- a/_cs/DokuWiki/DokuWikiCodingStandard.php
+++ /dev/null
@@ -1,78 +0,0 @@
-<?php
-/**
- * DokuWiki Coding Standard.
- *
- * @category PHP
- * @package PHP_CodeSniffer
- * @author Andreas Gohr <andi@splitbrain.org>
- */
-
-if (class_exists('PHP_CodeSniffer_Standards_CodingStandard', true) === false) {
- throw new PHP_CodeSniffer_Exception('Class PHP_CodeSniffer_Standards_CodingStandard not found');
-}
-
-/**
- * DokuWiki Coding Standard.
- *
- * @category PHP
- * @package PHP_CodeSniffer
- * @author Andreas Gohr <andi@splitbrain.org>
- */
-class PHP_CodeSniffer_Standards_DokuWiki_DokuWikiCodingStandard extends PHP_CodeSniffer_Standards_CodingStandard {
-
-
- /**
- * Return a list of external sniffs to include with this standard.
- *
- * @return array
- */
- public function getIncludedSniffs() {
- return array(
- 'Generic/Sniffs/Classes/DuplicateClassNameSniff.php',
- 'Generic/Sniffs/CodeAnalysis/JumbledIncrementerSniff.php',
- 'Generic/Sniffs/CodeAnalysis/UnnecessaryFinalModifierSniff.php',
- 'Generic/Sniffs/CodeAnalysis/UnconditionalIfStatementSniff.php',
- 'Generic/Sniffs/CodeAnalysis/ForLoopShouldBeWhileLoopSniff.php',
- 'Generic/Sniffs/CodeAnalysis/ForLoopWithTestFunctionCallSniff.php',
- 'Generic/Sniffs/CodeAnalysis/UnusedFunctionParameterSniff.php',
- 'Generic/Sniffs/CodeAnalysis/EmptyStatementSniff.php',
- 'Generic/Sniffs/CodeAnalysis/UselessOverridingMethodSniff.php',
- 'Generic/Sniffs/Commenting/TodoSniff.php',
- 'Generic/Sniffs/Files/LineEndingsSniff.php',
- 'Generic/Sniffs/Formatting/DisallowMultipleStatementsSniff.php',
- 'Generic/Sniffs/Metrics/NestingLevelSniff.php',
-// 'Generic/Sniffs/Metrics/CyclomaticComplexitySniff.php', //FIXME we might need to tune this first
- 'Generic/Sniffs/NamingConventions/UpperCaseConstantNameSniff.php',
- 'Generic/Sniffs/PHP/LowerCaseConstantSniff.php',
- 'Generic/Sniffs/PHP/DisallowShortOpenTagSniff.php',
- 'Generic/Sniffs/PHP/ForbiddenFunctionsSniff.php',
- 'Generic/Sniffs/WhiteSpace/DisallowTabIndentSniff.php',
- 'DokuWiki/Sniffs/WhiteSpace/ScopeIndentSniff.php',
- 'Zend/Sniffs/Files/ClosingTagSniff.php',
- 'PEAR/Sniffs/Functions/ValidDefaultValueSniff.php',
- 'Squiz/Sniffs/PHP/EvalSniff.php',
- 'Squiz/Sniffs/PHP/NonExecutableCodeSniff.php',
-// 'Squiz/Sniffs/PHP/CommentedOutCodeSniff.php', //FIXME should ignore oneliners
- 'Squiz/Sniffs/WhiteSpace/SuperfluousWhitespaceSniff.php',
- 'Squiz/Sniffs/PHP/NonExecutableCodeSniff.php',
- 'Squiz/Sniffs/CSS/LowercaseStyleDefinitionSniff.php',
- 'Squiz/Sniffs/CSS/MissingColonSniff.php',
- 'Squiz/Sniffs/CSS/DisallowMultipleStyleDefinitionsSniff.php',
- 'Squiz/Sniffs/CSS/ColonSpacingSniff.php',
- 'Squiz/Sniffs/CSS/ClassDefinitionClosingBraceSpaceSniff.php',
- 'Squiz/Sniffs/CSS/SemicolonSpacingSniff.php',
- 'Squiz/Sniffs/CSS/IndentationSniff.php',
- 'Squiz/Sniffs/CSS/EmptyClassDefinitionSniff.php',
- 'Squiz/Sniffs/CSS/ClassDefinitionNameSpacingSniff.php',
- 'Squiz/Sniffs/CSS/EmptyStyleDefinitionSniff.php',
- 'Squiz/Sniffs/CSS/OpacitySniff.php',
- 'Squiz/Sniffs/CSS/ColourDefinitionSniff.php',
- 'Squiz/Sniffs/CSS/DuplicateClassDefinitionSniff.php',
- 'Squiz/Sniffs/CSS/ClassDefinitionOpeningBraceSpaceSniff.php',
-
- 'Squiz/Sniffs/Commenting/DocCommentAlignmentSniff.php',
-
- );
- }
-
-}//end class
diff --git a/_cs/DokuWiki/Sniffs/NamingConventions/ConstructorNameSniff.php b/_cs/DokuWiki/Sniffs/NamingConventions/ConstructorNameSniff.php
new file mode 100644
index 000000000..7dd6d9366
--- /dev/null
+++ b/_cs/DokuWiki/Sniffs/NamingConventions/ConstructorNameSniff.php
@@ -0,0 +1,85 @@
+<?php
+/**
+ * Generic_Sniffs_NamingConventions_ConstructorNameSniff.
+ *
+ * PHP version 5
+ *
+ * @category PHP
+ * @package PHP_CodeSniffer
+ * @author Greg Sherwood <gsherwood@squiz.net>
+ * @author Leif Wickland <lwickland@rightnow.com>
+ * @copyright 2006-2011 Squiz Pty Ltd (ABN 77 084 670 600)
+ * @license http://matrix.squiz.net/developer/tools/php_cs/licence BSD Licence
+ * @link http://pear.php.net/package/PHP_CodeSniffer
+ */
+
+if (class_exists('PHP_CodeSniffer_Standards_AbstractScopeSniff', true) === false) {
+ $error = 'Class PHP_CodeSniffer_Standards_AbstractScopeSniff not found';
+ throw new PHP_CodeSniffer_Exception($error);
+}
+
+/**
+ * Generic_Sniffs_NamingConventions_ConstructorNameSniff.
+ *
+ * Favor PHP 5 constructor syntax, which uses "function __construct()".
+ * Avoid PHP 4 constructor syntax, which uses "function ClassName()".
+ *
+ * @category PHP
+ * @package PHP_CodeSniffer
+ * @author Leif Wickland <lwickland@rightnow.com>
+ * @license http://matrix.squiz.net/developer/tools/php_cs/licence BSD Licence
+ * @version Release: 1.3.3
+ * @link http://pear.php.net/package/PHP_CodeSniffer
+ */
+class DokuWiki_Sniffs_NamingConventions_ConstructorNameSniff extends Generic_Sniffs_NamingConventions_ConstructorNameSniff
+{
+ /**
+ * Processes this test when one of its tokens is encountered.
+ *
+ * @param PHP_CodeSniffer_File $phpcsFile The current file being scanned.
+ * @param int $stackPtr The position of the current token
+ * in the stack passed in $tokens.
+ * @param int $currScope A pointer to the start of the scope.
+ *
+ * @return void
+ */
+ protected function processTokenWithinScope(
+ PHP_CodeSniffer_File $phpcsFile,
+ $stackPtr,
+ $currScope
+ ) {
+ $className = $phpcsFile->getDeclarationName($currScope);
+ $methodName = $phpcsFile->getDeclarationName($stackPtr);
+
+ if (strcasecmp($methodName, $className) === 0) {
+ $error = 'PHP4 style constructors are discouraged; use "__construct()" instead';
+ $phpcsFile->addWarning($error, $stackPtr, 'OldStyle');
+ } else if (strcasecmp($methodName, '__construct') !== 0) {
+ // Not a constructor.
+ return;
+ }
+
+ $tokens = $phpcsFile->getTokens();
+
+ $parentClassName = $phpcsFile->findExtendedClassName($currScope);
+ if ($parentClassName === false) {
+ return;
+ }
+
+ $endFunctionIndex = $tokens[$stackPtr]['scope_closer'];
+ $startIndex = $stackPtr;
+ while ($doubleColonIndex = $phpcsFile->findNext(array(T_DOUBLE_COLON), $startIndex, $endFunctionIndex)) {
+ if ($tokens[($doubleColonIndex + 1)]['code'] === T_STRING
+ && $tokens[($doubleColonIndex + 1)]['content'] === $parentClassName
+ ) {
+ $error = 'PHP4 style calls to parent constructors are discouraged; use "parent::__construct()" instead';
+ $phpcsFile->addWarning($error, ($doubleColonIndex + 1), 'OldStyleCall');
+ }
+
+ $startIndex = ($doubleColonIndex + 1);
+ }
+
+ }//end processTokenWithinScope()
+
+
+}//end class
diff --git a/_cs/DokuWiki/Sniffs/PHP/DeprecatedFunctionsSniff.php b/_cs/DokuWiki/Sniffs/PHP/DeprecatedFunctionsSniff.php
new file mode 100644
index 000000000..ecd4093b8
--- /dev/null
+++ b/_cs/DokuWiki/Sniffs/PHP/DeprecatedFunctionsSniff.php
@@ -0,0 +1,61 @@
+<?php
+/**
+ * DokuWiki_Sniffs_PHP_DiscouragedFunctionsSniff.
+ *
+ * PHP version 5
+ *
+ * @category PHP
+ * @package PHP_CodeSniffer
+ * @author Greg Sherwood <gsherwood@squiz.net>
+ * @copyright 2006 Squiz Pty Ltd (ABN 77 084 670 600)
+ * @license http://matrix.squiz.net/developer/tools/php_cs/licence BSD Licence
+ * @version CVS: $Id: DiscouragedFunctionsSniff.php 265110 2008-08-19 06:36:11Z squiz $
+ * @link http://pear.php.net/package/PHP_CodeSniffer
+ */
+
+if (class_exists('Generic_Sniffs_PHP_ForbiddenFunctionsSniff', true) === false) {
+ throw new PHP_CodeSniffer_Exception('Class Generic_Sniffs_PHP_ForbiddenFunctionsSniff not found');
+}
+
+/**
+ * DokuWiki_Sniffs_PHP_DiscouragedFunctionsSniff.
+ *
+ * @category PHP
+ * @package PHP_CodeSniffer
+ * @author Greg Sherwood <gsherwood@squiz.net>
+ * @copyright 2006 Squiz Pty Ltd (ABN 77 084 670 600)
+ * @license http://matrix.squiz.net/developer/tools/php_cs/licence BSD Licence
+ * @version Release: 1.2.2
+ * @link http://pear.php.net/package/PHP_CodeSniffer
+ */
+class DokuWiki_Sniffs_PHP_DeprecatedFunctionsSniff extends Generic_Sniffs_PHP_ForbiddenFunctionsSniff
+{
+
+ /**
+ * A list of forbidden functions with their alternatives.
+ *
+ * The value is NULL if no alternative exists. IE, the
+ * function should just not be used.
+ *
+ * @var array(string => string|null)
+ */
+ protected $forbiddenFunctions = array(
+ 'setCorrectLocale' => null,
+ 'html_attbuild' => 'buildAttributes',
+ 'io_runcmd' => null,
+ 'p_wiki_xhtml_summary' => 'p_cached_output',
+ 'search_callback' => 'call_user_func_array',
+ 'search_backlinks' => 'ft_backlinks',
+ 'search_fulltext' => 'Fulltext Indexer',
+ 'search_regex' => 'Fulltext Indexer',
+ 'tpl_getFavicon' => 'tpl_getMediaFile',
+ );
+
+ /**
+ * If true, an error will be thrown; otherwise a warning.
+ *
+ * @var bool
+ */
+ public $error = true;
+
+}//end class
diff --git a/_cs/DokuWiki/Sniffs/PHP/DiscouragedFunctionsSniff.php b/_cs/DokuWiki/Sniffs/PHP/DiscouragedFunctionsSniff.php
index c95e0fd33..9cd9a7d36 100644
--- a/_cs/DokuWiki/Sniffs/PHP/DiscouragedFunctionsSniff.php
+++ b/_cs/DokuWiki/Sniffs/PHP/DiscouragedFunctionsSniff.php
@@ -49,8 +49,6 @@ class DokuWiki_Sniffs_PHP_DiscouragedFunctionsSniff extends Generic_Sniffs_PHP_F
*
* @var bool
*/
- protected $error = false;
+ public $error = false;
}//end class
-
-?>
diff --git a/_cs/DokuWiki/ruleset.xml b/_cs/DokuWiki/ruleset.xml
new file mode 100644
index 000000000..bfbef87fe
--- /dev/null
+++ b/_cs/DokuWiki/ruleset.xml
@@ -0,0 +1,64 @@
+<?xml version="1.0"?>
+<ruleset name="DokuWiki">
+ <description>DokuWiki Coding Standard</description>
+
+ <!-- ignore 3rd party libraries (that we haven't adopted) -->
+ <exclude-pattern>*/adLDAP.php</exclude-pattern>
+ <exclude-pattern>*/EmailAddressValidator.php</exclude-pattern>
+ <exclude-pattern>*/feedcreator.class.php</exclude-pattern>
+ <exclude-pattern>*/SimplePie.php</exclude-pattern>
+ <exclude-pattern>*/geshi.php</exclude-pattern>
+ <exclude-pattern>*/geshi/*</exclude-pattern>
+ <exclude-pattern>*/JSON.php</exclude-pattern>
+
+ <!-- ignore devel only parts -->
+ <exclude-pattern>*/_test/*</exclude-pattern>
+ <exclude-pattern>*/_cs/*</exclude-pattern>
+
+ <rule ref="Generic.Classes.DuplicateClassName" />
+ <rule ref="Generic.CodeAnalysis.JumbledIncrementer" />
+ <rule ref="Generic.CodeAnalysis.UnnecessaryFinalModifier" />
+ <rule ref="Generic.CodeAnalysis.UnconditionalIfStatement" />
+ <rule ref="Generic.CodeAnalysis.ForLoopShouldBeWhileLoop" />
+ <rule ref="Generic.CodeAnalysis.ForLoopWithTestFunctionCall" />
+ <rule ref="Generic.CodeAnalysis.UnusedFunctionParameter" />
+ <rule ref="Generic.CodeAnalysis.EmptyStatement" />
+ <rule ref="Generic.CodeAnalysis.UselessOverridingMethod" />
+ <rule ref="Generic.Commenting.Todo" />
+ <ruke ref="Generic.Files.ByteOrderMark" />
+ <rule ref="Generic.Files.LineEndings" />
+ <rule ref="Generic.Formatting.DisallowMultipleStatements" />
+ <rule ref="Generic.Metrics.NestingLevel">
+ <properties>
+ <property name="nestingLevel" value="6" />
+ </properties>
+ </rule>
+ <rule ref="Generic.NamingConventions.UpperCaseConstantName" />
+ <rule ref="Generic.PHP.LowerCaseConstant" />
+ <rule ref="Generic.PHP.DeprecatedFunctions.php" />
+ <rule ref="Generic.PHP.DisallowShortOpenTag" />
+ <rule ref="Generic.PHP.ForbiddenFunctions" />
+ <rule ref="Generic.WhiteSpace.DisallowTabIndent" />
+ <rule ref="Generic.Classes.DuplicateClassName" />
+ <rule ref="Generic.Functions.CallTimePassByReference" />
+ <rule ref="Zend.Files.ClosingTag" />
+ <rule ref="PEAR.Functions.ValidDefaultValue" />
+ <rule ref="Squiz.PHP.Eval" />
+ <rule ref="Squiz.WhiteSpace.SuperfluousWhitespace" />
+ <rule ref="Squiz.CSS.LowercaseStyleDefinition" />
+ <rule ref="Squiz.CSS.MissingColon" />
+ <rule ref="Squiz.CSS.DisallowMultipleStyleDefinitions" />
+ <rule ref="Squiz.CSS.ColonSpacing" />
+ <rule ref="Squiz.CSS.ClassDefinitionClosingBraceSpace" />
+ <rule ref="Squiz.CSS.SemicolonSpacing" />
+ <rule ref="Squiz.CSS.Indentation" />
+ <rule ref="Squiz.CSS.EmptyClassDefinition" />
+ <rule ref="Squiz.CSS.ClassDefinitionNameSpacing" />
+ <rule ref="Squiz.CSS.EmptyStyleDefinition" />
+ <rule ref="Squiz.CSS.Opacity" />
+ <rule ref="Squiz.CSS.ColourDefinition" />
+ <rule ref="Squiz.CSS.DuplicateClassDefinition" />
+ <rule ref="Squiz.CSS.ClassDefinitionOpeningBraceSpace" />
+ <rule ref="Squiz.Commenting.DocCommentAlignment" />
+
+</ruleset>
diff --git a/_test/cases/inc/auth_password.test.php b/_test/cases/inc/auth_password.test.php
index 928552a14..d4a4d2bdb 100644
--- a/_test/cases/inc/auth_password.test.php
+++ b/_test/cases/inc/auth_password.test.php
@@ -12,6 +12,7 @@ class auth_password_test extends UnitTestCase {
'md5' => '8fa22d62408e5351553acdd91c6b7003',
'sha1' => 'b456d3b0efd105d613744ffd549514ecafcfc7e1',
'ssha' => '{SSHA}QMHG+uC7bHNYKkmoLbNsNI38/dJhYmNk',
+ 'lsmd5' => '{SMD5}HGbkPrkWgy9KgcRGWlrsUWFiY2RlZmdo',
'crypt' => 'ablvoGr1hvZ5k',
'mysql' => '4a1fa3780bd6fd55',
'my411' => '*e5929347e25f82e19e4ebe92f1dc6b6e7c2dbd29',
@@ -48,6 +49,15 @@ class auth_password_test extends UnitTestCase {
}
}
+ function test_bcrypt_self(){
+ $hash = auth_cryptPassword('foobcrypt','bcrypt');
+ $this->assertTrue(auth_verifyPassword('foobcrypt',$hash));
+ }
+
+ function test_verifyPassword_fixedbcrypt(){
+ $this->assertTrue(auth_verifyPassword('foobcrypt','$2a$12$uTWercxbq4sjp2xAzv3we.ZOxk51m5V/Bv5bp2H27oVFJl5neFQoC'));
+ }
+
function test_verifyPassword_nohash(){
$this->assertTrue(auth_verifyPassword('foo','$1$$n1rTiFE0nRifwV/43bVon/'));
}
diff --git a/_test/cases/inc/common_cleanText.test.php b/_test/cases/inc/common_cleanText.test.php
new file mode 100644
index 000000000..936ed1d76
--- /dev/null
+++ b/_test/cases/inc/common_cleanText.test.php
@@ -0,0 +1,34 @@
+<?php
+
+require_once DOKU_INC.'inc/init.php';
+require_once DOKU_INC.'inc/common.php';
+
+class common_clientIP_test extends UnitTestCase {
+
+ function test_unix(){
+ $unix = 'one
+ two
+
+ three';
+
+ $this->assertEqual($unix,cleanText($unix));
+ }
+
+ function test_win(){
+ $unix = 'one
+ two
+
+ three';
+ $win = 'one
+ two
+
+ three';
+
+ $this->assertEqual(bin2hex($unix),'6f6e650a2020202020202020202020202020202074776f0a0a202020202020202020202020202020207468726565');
+ $this->assertEqual(bin2hex($win),'6f6e650d0a2020202020202020202020202020202074776f0d0a0d0a202020202020202020202020202020207468726565');
+ $this->assertNotEqual($unix,$win);
+ $this->assertEqual($unix,cleanText($win));
+ }
+}
+
+//Setup VIM: ex: et ts=4 :
diff --git a/_test/cases/inc/parser/parser_links.test.php b/_test/cases/inc/parser/parser_links.test.php
index 53871e110..d0fb19570 100644
--- a/_test/cases/inc/parser/parser_links.test.php
+++ b/_test/cases/inc/parser/parser_links.test.php
@@ -400,6 +400,21 @@ class TestOfDoku_Parser_Links extends TestOfDoku_Parser {
);
$this->assertEqual(array_map('stripByteIndex',$this->H->calls),$calls);
}
+
+ function testWindowsShareLinkHyphen() {
+ $this->P->addMode('windowssharelink',new Doku_Parser_Mode_WindowsShareLink());
+ $this->P->parse('Foo \\\server\share-hyphen Bar');
+ $calls = array (
+ array('document_start',array()),
+ array('p_open',array()),
+ array('cdata',array("\n".'Foo ')),
+ array('windowssharelink',array('\\\server\share-hyphen',NULL)),
+ array('cdata',array(' Bar')),
+ array('p_close',array()),
+ array('document_end',array()),
+ );
+ $this->assertEqual(array_map('stripByteIndex',$this->H->calls),$calls);
+ }
function testWindowsShareLinkInternal() {
$this->P->addMode('internallink',new Doku_Parser_Mode_InternalLink());
diff --git a/_test/cases/inc/remote.test.php b/_test/cases/inc/remote.test.php
new file mode 100644
index 000000000..f03d13ce1
--- /dev/null
+++ b/_test/cases/inc/remote.test.php
@@ -0,0 +1,324 @@
+<?php
+
+require_once DOKU_INC . 'inc/init.php';
+require_once DOKU_INC . 'inc/RemoteAPICore.php';
+require_once DOKU_INC . 'inc/auth/basic.class.php';
+
+Mock::generate('Doku_Plugin_Controller');
+
+class MockAuth extends auth_basic {
+ function isCaseSensitive() { return true; }
+}
+
+class RemoteAPICoreTest {
+
+ function __getRemoteInfo() {
+ return array(
+ 'wiki.stringTestMethod' => array(
+ 'args' => array(),
+ 'return' => 'string',
+ 'doc' => 'Test method',
+ 'name' => 'stringTestMethod',
+ ), 'wiki.intTestMethod' => array(
+ 'args' => array(),
+ 'return' => 'int',
+ 'doc' => 'Test method',
+ 'name' => 'intTestMethod',
+ ), 'wiki.floatTestMethod' => array(
+ 'args' => array(),
+ 'return' => 'float',
+ 'doc' => 'Test method',
+ 'name' => 'floatTestMethod',
+ ), 'wiki.dateTestMethod' => array(
+ 'args' => array(),
+ 'return' => 'date',
+ 'doc' => 'Test method',
+ 'name' => 'dateTestMethod',
+ ), 'wiki.fileTestMethod' => array(
+ 'args' => array(),
+ 'return' => 'file',
+ 'doc' => 'Test method',
+ 'name' => 'fileTestMethod',
+ ), 'wiki.voidTestMethod' => array(
+ 'args' => array(),
+ 'return' => 'void',
+ 'doc' => 'Test method',
+ 'name' => 'voidTestMethod',
+ ), 'wiki.oneStringArgMethod' => array(
+ 'args' => array('string'),
+ 'return' => 'string',
+ 'doc' => 'Test method',
+ 'name' => 'oneStringArgMethod',
+ ), 'wiki.twoArgMethod' => array(
+ 'args' => array('string', 'int'),
+ 'return' => 'array',
+ 'doc' => 'Test method',
+ 'name' => 'twoArgMethod',
+ ), 'wiki.twoArgWithDefaultArg' => array(
+ 'args' => array('string', 'string'),
+ 'return' => 'string',
+ 'doc' => 'Test method',
+ 'name' => 'twoArgWithDefaultArg',
+ ), 'wiki.publicCall' => array(
+ 'args' => array(),
+ 'return' => 'boolean',
+ 'doc' => 'testing for public access',
+ 'name' => 'publicCall',
+ 'public' => 1
+ )
+ );
+ }
+ function stringTestMethod() { return 'success'; }
+ function intTestMethod() { return 42; }
+ function floatTestMethod() { return 3.14159265; }
+ function dateTestMethod() { return 2623452346; }
+ function fileTestMethod() { return 'file content'; }
+ function voidTestMethod() { return null; }
+ function oneStringArgMethod($arg) {return $arg; }
+ function twoArgMethod($string, $int) { return array($string, $int); }
+ function twoArgWithDefaultArg($string1, $string2 = 'default') { return array($string1, $string2); }
+ function publicCall() {return true;}
+
+}
+
+class remote_plugin_testplugin extends DokuWiki_Remote_Plugin {
+ function _getMethods() {
+ return array(
+ 'method1' => array(
+ 'args' => array(),
+ 'return' => 'void'
+ ), 'methodString' => array(
+ 'args' => array(),
+ 'return' => 'string'
+ ), 'method2' => array(
+ 'args' => array('string', 'int'),
+ 'return' => 'array',
+ 'name' => 'method2',
+ ), 'method2ext' => array(
+ 'args' => array('string', 'int', 'bool'),
+ 'return' => 'array',
+ 'name' => 'method2',
+ ), 'publicCall' => array(
+ 'args' => array(),
+ 'return' => 'boolean',
+ 'doc' => 'testing for public access',
+ 'name' => 'publicCall',
+ 'public' => 1
+ )
+ );
+ }
+
+ function method1() { return null; }
+ function methodString() { return 'success'; }
+ function method2($str, $int, $bool = false) { return array($str, $int, $bool); }
+ function publicCall() {return true;}
+
+}
+
+
+class remote_test extends UnitTestCase {
+
+ var $originalConf;
+ var $userinfo;
+
+ var $remote;
+
+ function setUp() {
+ global $plugin_controller;
+ global $conf;
+ global $USERINFO;
+ global $auth;
+
+ parent::setUp();
+ $pluginManager = new MockDoku_Plugin_Controller();
+ $pluginManager->setReturnValue('getList', array('testplugin'));
+ $pluginManager->setReturnValue('load', new remote_plugin_testplugin());
+ $plugin_controller = $pluginManager;
+
+ $this->originalConf = $conf;
+ $conf['remote'] = 1;
+ $conf['remoteuser'] = '!!not set!!';
+ $conf['useacl'] = 0;
+
+ $this->userinfo = $USERINFO;
+ $this->remote = new RemoteAPI();
+
+ $auth = new MockAuth();
+ }
+
+ function tearDown() {
+ global $conf;
+ global $USERINFO;
+ $conf = $this->originalConf;
+ $USERINFO = $this->userinfo;
+
+ }
+
+ function test_pluginMethods() {
+ $methods = $this->remote->getPluginMethods();
+ $actual = array_keys($methods);
+ sort($actual);
+ $expect = array('plugin.testplugin.method1', 'plugin.testplugin.method2', 'plugin.testplugin.methodString', 'plugin.testplugin.method2ext', 'plugin.testplugin.publicCall');
+ sort($expect);
+ $this->assertEqual($expect,$actual);
+ }
+
+ function test_hasAccessSuccess() {
+ $this->assertTrue($this->remote->hasAccess());
+ }
+
+ function test_hasAccessFail() {
+ global $conf;
+ $conf['remote'] = 0;
+ $this->assertFalse($this->remote->hasAccess());
+ }
+
+ function test_hasAccessFailAcl() {
+ global $conf;
+ $conf['useacl'] = 1;
+ $this->assertFalse($this->remote->hasAccess());
+ }
+
+ function test_hasAccessSuccessAclEmptyRemoteUser() {
+ global $conf;
+ $conf['useacl'] = 1;
+ $conf['remoteuser'] = '';
+
+ $this->assertTrue($this->remote->hasAccess());
+ }
+
+ function test_hasAccessSuccessAcl() {
+ global $conf;
+ global $USERINFO;
+ $conf['useacl'] = 1;
+ $conf['remoteuser'] = '@grp,@grp2';
+ $USERINFO['grps'] = array('grp');
+ $this->assertTrue($this->remote->hasAccess());
+ }
+
+ function test_hasAccessFailAcl2() {
+ global $conf;
+ global $USERINFO;
+ $conf['useacl'] = 1;
+ $conf['remoteuser'] = '@grp';
+ $USERINFO['grps'] = array('grp1');
+
+ $this->assertFalse($this->remote->hasAccess());
+ }
+
+
+ function test_forceAccessSuccess() {
+ global $conf;
+ $conf['remote'] = 1;
+ $this->remote->forceAccess(); // no exception should occur
+ }
+
+ function test_forceAccessFail() {
+ global $conf;
+ $conf['remote'] = 0;
+ $this->expectException('RemoteException');
+ $this->remote->forceAccess();
+ }
+
+ function test_generalCoreFunctionWithoutArguments() {
+ global $conf;
+ $conf['remote'] = 1;
+ $remoteApi = new RemoteApi();
+ $remoteApi->getCoreMethods(new RemoteAPICoreTest());
+
+ $this->assertEqual($remoteApi->call('wiki.stringTestMethod'), 'success');
+ $this->assertEqual($remoteApi->call('wiki.intTestMethod'), 42);
+ $this->assertEqual($remoteApi->call('wiki.floatTestMethod'), 3.14159265);
+ $this->assertEqual($remoteApi->call('wiki.dateTestMethod'), 2623452346);
+ $this->assertEqual($remoteApi->call('wiki.fileTestMethod'), 'file content');
+ $this->assertEqual($remoteApi->call('wiki.voidTestMethod'), null);
+ }
+
+ function test_generalCoreFunctionOnArgumentMismatch() {
+ global $conf;
+ $conf['remote'] = 1;
+ $remoteApi = new RemoteApi();
+ $remoteApi->getCoreMethods(new RemoteAPICoreTest());
+
+ $this->expectException('RemoteException');
+ $remoteApi->call('wiki.voidTestMethod', array('something'));
+ }
+
+ function test_generalCoreFunctionWithArguments() {
+ global $conf;
+ $conf['remote'] = 1;
+
+ $remoteApi = new RemoteApi();
+ $remoteApi->getCoreMethods(new RemoteAPICoreTest());
+
+ $this->assertEqual($remoteApi->call('wiki.oneStringArgMethod', array('string')), 'string');
+ $this->assertEqual($remoteApi->call('wiki.twoArgMethod', array('string', 1)), array('string' , 1));
+ $this->assertEqual($remoteApi->call('wiki.twoArgWithDefaultArg', array('string')), array('string', 'default'));
+ $this->assertEqual($remoteApi->call('wiki.twoArgWithDefaultArg', array('string', 'another')), array('string', 'another'));
+ }
+
+ function test_pluginCallMethods() {
+ global $conf;
+ $conf['remote'] = 1;
+
+ $remoteApi = new RemoteApi();
+ $this->assertEqual($remoteApi->call('plugin.testplugin.method1'), null);
+ $this->assertEqual($remoteApi->call('plugin.testplugin.method2', array('string', 7)), array('string', 7, false));
+ $this->assertEqual($remoteApi->call('plugin.testplugin.method2ext', array('string', 7, true)), array('string', 7, true));
+ $this->assertEqual($remoteApi->call('plugin.testplugin.methodString'), 'success');
+ }
+
+ function test_notExistingCall() {
+ global $conf;
+ $conf['remote'] = 1;
+
+ $remoteApi = new RemoteApi();
+ $this->expectException('RemoteException');
+ $remoteApi->call('dose not exist');
+ }
+
+ function test_publicCallCore() {
+ global $conf;
+ $conf['useacl'] = 1;
+ $remoteApi = new RemoteApi();
+ $remoteApi->getCoreMethods(new RemoteAPICoreTest());
+ $this->assertTrue($remoteApi->call('wiki.publicCall'));
+ }
+
+ function test_publicCallPlugin() {
+ global $conf;
+ $conf['useacl'] = 1;
+ $remoteApi = new RemoteApi();
+ $this->assertTrue($remoteApi->call('plugin.testplugin.publicCall'));
+ }
+
+ function test_publicCallCoreDeny() {
+ global $conf;
+ $conf['useacl'] = 1;
+ $remoteApi = new RemoteApi();
+ $remoteApi->getCoreMethods(new RemoteAPICoreTest());
+ $this->expectException('RemoteAccessDeniedException');
+ $remoteApi->call('wiki.stringTestMethod');
+ }
+
+ function test_publicCallPluginDeny() {
+ global $conf;
+ $conf['useacl'] = 1;
+ $remoteApi = new RemoteApi();
+ $this->expectException('RemoteAccessDeniedException');
+ $remoteApi->call('plugin.testplugin.methodString');
+ }
+
+ function test_pluginCallCustomPath() {
+ global $EVENT_HANDLER;
+ $EVENT_HANDLER->register_hook('RPC_CALL_ADD', 'BEFORE', &$this, 'pluginCallCustomPathRegister');
+
+ $remoteApi = new RemoteAPI();
+ $result = $remoteApi->call('custom.path');
+ $this->assertEqual($result, 'success');
+ }
+
+ function pluginCallCustomPathRegister(&$event, $param) {
+ $event->data['custom.path'] = array('testplugin', 'methodString');
+ }
+}
diff --git a/_test/index.php b/_test/index.php
index f59c44cf4..64ece4762 100644
--- a/_test/index.php
+++ b/_test/index.php
@@ -11,7 +11,7 @@ if(@file_exists(DOKU_CONF.'local.php')){ require_once(DOKU_CONF.'local.php'); }
$conf['lang'] = 'en';
define('TEST_ROOT', dirname(__FILE__));
define('TMPL_FILESCHEME_PATH', TEST_ROOT . '/filescheme/');
-error_reporting(E_ALL);
+error_reporting(E_ALL & ~E_DEPRECATED);
set_time_limit(600);
ini_set('memory_limit','128M');
diff --git a/conf/dokuwiki.php b/conf/dokuwiki.php
index fddc38a91..f7ade8eb8 100644
--- a/conf/dokuwiki.php
+++ b/conf/dokuwiki.php
@@ -18,6 +18,7 @@ $conf['dmode'] = 0755; //set directory creation mode
$conf['lang'] = 'en'; //your language
$conf['basedir'] = ''; //absolute dir from serveroot - blank for autodetection
$conf['baseurl'] = ''; //URL to server including protocol - blank for autodetect
+$conf['cookiedir'] = ''; //Cookie path. Leave blank for using baseurl.
$conf['savedir'] = './data'; //where to store all the files
$conf['allowdebug'] = 0; //allow debug output, enable if needed 0|1
$conf['mediarevisions'] = 1; //enable/disable media revisions
@@ -26,7 +27,9 @@ $conf['mediarevisions'] = 1; //enable/disable media revisions
$conf['start'] = 'start'; //name of start page
$conf['title'] = 'DokuWiki'; //what to show in the title
-$conf['template'] = 'default'; //see lib/tpl directory
+$conf['template'] = 'dokuwiki'; //see lib/tpl directory
+$conf['tagline'] = ''; //tagline in header (if template supports it)
+$conf['sidebar'] = 'sidebar'; //name of sidebar in root namespace (if template supports it)
$conf['license'] = 'cc-by-nc-sa'; //see conf/license.php
$conf['fullpath'] = 0; //show full path of the document or relative to datadir only? 0|1
$conf['recent'] = 20; //how many entries to show in recent
@@ -78,8 +81,8 @@ $conf['sneaky_index'] = 0; //check for namespace read permission i
$conf['auth_security_timeout'] = 900; //time (seconds) auth data is considered valid, set to 0 to recheck on every page view
$conf['securecookie'] = 1; //never send HTTPS cookies via HTTP
-$conf['xmlrpc'] = 0; //Enable/disable XML-RPC interface
-$conf['xmlrpcuser'] = '!!not set!!'; //Restrict XML-RPC access to this groups/users
+$conf['remote'] = 0; //Enable/disable remote interfaces
+$conf['remoteuser'] = '!!not set !!'; //user/groups that have access to remote interface (comma separated)
/* Advanced Options */
@@ -125,14 +128,18 @@ $conf['rss_linkto'] = 'diff'; //what page RSS entries link to:
// 'page' - the revised page itself
// 'rev' - page showing all revisions
// 'current' - most recent revision of page
-$conf['rss_content'] = 'abstract'; // what to put in the items by default?
+$conf['rss_content'] = 'abstract'; //what to put in the items by default?
// 'abstract' - plain text, first paragraph or so
// 'diff' - plain text unified diff wrapped in <pre> tags
// 'htmldiff' - diff as HTML table
// 'html' - the full page rendered in XHTML
+$conf['rss_media'] = 'both'; //what should be listed?
+ // 'both' - page and media changes
+ // 'pages' - page changes only
+ // 'media' - media changes only
$conf['rss_update'] = 5*60; //Update the RSS feed every n seconds (defaults to 5 minutes)
-$conf['recent_days'] = 7; //How many days of recent changes to keep. (days)
$conf['rss_show_summary'] = 1; //Add revision summary to title? 0|1
+$conf['recent_days'] = 7; //How many days of recent changes to keep. (days)
$conf['broken_iua'] = 0; //Platform with broken ignore_user_abort (IIS+CGI) 0|1
$conf['xsendfile'] = 0; //Use X-Sendfile (1 = lighttpd, 2 = standard)
$conf['renderer_xhtml'] = 'xhtml'; //renderer to use for main page generation
diff --git a/data/_dummy b/data/_dummy
index 37ed18a63..e69de29bb 100644
--- a/data/_dummy
+++ b/data/_dummy
@@ -1 +0,0 @@
-data directory
diff --git a/data/pages/wiki/syntax.txt b/data/pages/wiki/syntax.txt
index b03435787..0b5480949 100644
--- a/data/pages/wiki/syntax.txt
+++ b/data/pages/wiki/syntax.txt
@@ -368,7 +368,7 @@ Those blocks were created by this source:
==== Syntax Highlighting ====
-[[wiki:DokuWiki]] can highlight sourcecode, which makes it easier to read. It uses the [[http://qbnz.com/highlighter/|GeSHi]] Generic Syntax Highlighter -- so any language supported by GeSHi is supported. The syntax is the same like in the code and file blocks in the previous section, but this time the name of the used language is inserted inside the tag. Eg. ''<nowiki><code java></nowiki>'' or ''<nowiki><file java></nowiki>''.
+[[wiki:DokuWiki]] can highlight sourcecode, which makes it easier to read. It uses the [[http://qbnz.com/highlighter/|GeSHi]] Generic Syntax Highlighter -- so any language supported by GeSHi is supported. The syntax uses the same code and file blocks described in the previous section, but this time the name of the language syntax to be highlighted is included inside the tag, e.g. ''<nowiki><code java></nowiki>'' or ''<nowiki><file java></nowiki>''.
<code java>
/**
diff --git a/doku.php b/doku.php
index e23757298..e699c818b 100644
--- a/doku.php
+++ b/doku.php
@@ -7,7 +7,7 @@
*/
// update message version
-$updateVersion = 35;
+$updateVersion = 36;
// xdebug_start_profiling();
diff --git a/feed.php b/feed.php
index 298777eb9..98d5ef2e8 100644
--- a/feed.php
+++ b/feed.php
@@ -50,7 +50,7 @@ $rss->cssStyleSheet = DOKU_URL.'lib/exe/css.php?s=feed';
$image = new FeedImage();
$image->title = $conf['title'];
-$image->url = tpl_getFavicon(true);
+$image->url = tpl_getMediaFile('favicon.ico', true);
$image->link = DOKU_URL;
$rss->image = $image;
@@ -117,8 +117,8 @@ function rss_parseOptions(){
'show_minor' => array('minor', false),
// String, only used in search mode
'search_query' => array('q', null),
- // One of: pages, media, both
- 'content_type' => array('view', 'both')
+ // One of: pages, media, both
+ 'content_type' => array('view', $conf['rss_media'])
) as $name => $val) {
$opt[$name] = (isset($_REQUEST[$val[0]]) && !empty($_REQUEST[$val[0]]))
diff --git a/inc/DifferenceEngine.php b/inc/DifferenceEngine.php
index 52dca32c8..0a7ce8e7c 100644
--- a/inc/DifferenceEngine.php
+++ b/inc/DifferenceEngine.php
@@ -29,7 +29,7 @@ class _DiffOp {
class _DiffOp_Copy extends _DiffOp {
var $type = 'copy';
-
+
function __construct($orig, $closing = false) {
if (!is_array($closing))
$closing = $orig;
@@ -44,7 +44,7 @@ class _DiffOp_Copy extends _DiffOp {
class _DiffOp_Delete extends _DiffOp {
var $type = 'delete';
-
+
function __construct($lines) {
$this->orig = $lines;
$this->closing = false;
@@ -57,7 +57,7 @@ class _DiffOp_Delete extends _DiffOp {
class _DiffOp_Add extends _DiffOp {
var $type = 'add';
-
+
function __construct($lines) {
$this->closing = $lines;
$this->orig = false;
@@ -70,7 +70,7 @@ class _DiffOp_Add extends _DiffOp {
class _DiffOp_Change extends _DiffOp {
var $type = 'change';
-
+
function __construct($orig, $closing) {
$this->orig = $orig;
$this->closing = $closing;
@@ -957,7 +957,7 @@ class WordLevelDiff extends MappedDiff {
}
class InlineWordLevelDiff extends MappedDiff {
-
+
function __construct($orig_lines, $closing_lines) {
list ($orig_words, $orig_stripped) = $this->_split($orig_lines);
list ($closing_words, $closing_stripped) = $this->_split($closing_lines);
diff --git a/inc/HTTPClient.php b/inc/HTTPClient.php
index fdf95d113..26bee52a7 100644
--- a/inc/HTTPClient.php
+++ b/inc/HTTPClient.php
@@ -22,11 +22,11 @@ class DokuHTTPClient extends HTTPClient {
*
* @author Andreas Gohr <andi@splitbrain.org>
*/
- function DokuHTTPClient(){
+ function __construct(){
global $conf;
// call parent constructor
- $this->HTTPClient();
+ parent::__construct();
// set some values from the config
$this->proxy_host = $conf['proxy']['host'];
@@ -121,7 +121,7 @@ class HTTPClient {
*
* @author Andreas Gohr <andi@splitbrain.org>
*/
- function HTTPClient(){
+ function __construct(){
$this->agent = 'Mozilla/4.0 (compatible; DokuWiki HTTP Client; '.PHP_OS.')';
$this->timeout = 15;
$this->cookies = array();
@@ -338,7 +338,10 @@ class HTTPClient {
}
// wait for stream ready or timeout (1sec)
- if(stream_select($sel_r,$sel_w,$sel_e,1) === false) continue;
+ if(@stream_select($sel_r,$sel_w,$sel_e,1) === false){
+ usleep(1000);
+ continue;
+ }
// write to stream
$ret = fwrite($socket, substr($request,$written,4096));
@@ -577,13 +580,14 @@ class HTTPClient {
*/
function _parseHeaders($string){
$headers = array();
- if (!preg_match_all('/^\s*([\w-]+)\s*:\s*([\S \t]+)\s*$/m', $string,
- $matches, PREG_SET_ORDER)) {
- return $headers;
- }
- foreach($matches as $match){
- list(, $key, $val) = $match;
+ $lines = explode("\n",$string);
+ array_shift($lines); //skip first line (status)
+ foreach($lines as $line){
+ list($key, $val) = explode(':',$line,2);
+ $key = trim($key);
+ $val = trim($val);
$key = strtolower($key);
+ if(!$key) continue;
if(isset($headers[$key])){
if(is_array($headers[$key])){
$headers[$key][] = $val;
diff --git a/inc/IXR_Library.php b/inc/IXR_Library.php
index c8255e6d9..979dc4d16 100644
--- a/inc/IXR_Library.php
+++ b/inc/IXR_Library.php
@@ -302,11 +302,12 @@ class IXR_Server {
}
function serve($data = false) {
if (!$data) {
- global $HTTP_RAW_POST_DATA;
- if (!$HTTP_RAW_POST_DATA) {
+
+ $postData = trim(http_get_raw_post_data());
+ if (!$postData) {
die('XML-RPC server accepts POST requests only.');
}
- $data = $HTTP_RAW_POST_DATA;
+ $data = $postData;
}
$this->message = new IXR_Message($data);
if (!$this->message->parse()) {
@@ -439,7 +440,7 @@ EOD;
$method = $call['methodName'];
$params = $call['params'];
if ($method == 'system.multicall') {
- $result = new IXR_Error(-32600, 'Recursive calls to system.multicall are forbidden');
+ $result = new IXR_Error(-32800, 'Recursive calls to system.multicall are forbidden');
} else {
$result = $this->call($method, $params);
}
@@ -501,7 +502,7 @@ class IXR_Client extends DokuHTTPClient {
var $xmlerror = false;
function IXR_Client($server, $path = false, $port = 80) {
- $this->DokuHTTPClient();
+ parent::__construct();
if (!$path) {
// Assume we have been given a URL instead
$this->posturl = $server;
diff --git a/inc/PassHash.class.php b/inc/PassHash.class.php
index 31493c022..3fb1349d2 100644
--- a/inc/PassHash.class.php
+++ b/inc/PassHash.class.php
@@ -47,9 +47,15 @@ class PassHash {
}elseif(preg_match('/^md5\$(.{5})\$/',$hash,$m)){
$method = 'djangomd5';
$salt = $m[1];
+ }elseif(preg_match('/^\$2a\$(.{2})\$/',$hash,$m)){
+ $method = 'bcrypt';
+ $salt = $hash;
}elseif(substr($hash,0,6) == '{SSHA}'){
$method = 'ssha';
$salt = substr(base64_decode(substr($hash, 6)),20);
+ }elseif(substr($hash,0,6) == '{SMD5}'){
+ $method = 'lsmd5';
+ $salt = substr(base64_decode(substr($hash, 6)),16);
}elseif($len == 32){
$method = 'md5';
}elseif($len == 40){
@@ -82,7 +88,9 @@ class PassHash {
public function gen_salt($len=32){
$salt = '';
$chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
- for($i=0;$i<$len;$i++) $salt .= $chars[mt_rand(0,61)];
+ for($i=0; $i<$len; $i++){
+ $salt .= $chars[mt_rand(0,61)];
+ }
return $salt;
}
@@ -130,6 +138,20 @@ class PassHash {
}
}
+
+ /**
+ * Password hashing method 'lsmd5'
+ *
+ * Uses salted MD5 hashs. Salt is 8 bytes long.
+ *
+ * This is the format used by LDAP.
+ */
+ public function hash_lsmd5($clear, $salt=null){
+ $this->init_salt($salt,8);
+ return "{SMD5}".base64_encode(md5($clear.$salt, true).$salt);
+ }
+
+
/**
* Password hashing method 'apr1'
*
@@ -379,4 +401,35 @@ class PassHash {
return 'md5$'.$salt.'$'.md5($salt.$clear);
}
+
+ /**
+ * Passwordhashing method 'bcrypt'
+ *
+ * Uses a modified blowfish algorithm called eksblowfish
+ * This method works on PHP 5.3+ only and will throw an exception
+ * if the needed crypt support isn't available
+ *
+ * A full hash should be given as salt (starting with $a2$) or this
+ * will break. When no salt is given, the iteration count can be set
+ * through the $compute variable.
+ *
+ * @param string $clear - the clear text to hash
+ * @param string $salt - the salt to use, null for random
+ * @param int $compute - the iteration count (between 4 and 31)
+ * @returns string - hashed password
+ */
+ public function hash_bcrypt($clear, $salt=null, $compute=8){
+ if(!defined('CRYPT_BLOWFISH') || CRYPT_BLOWFISH != 1){
+ throw new Exception('This PHP installation has no bcrypt support');
+ }
+
+ if(is_null($salt)){
+ if($compute < 4 || $compute > 31) $compute = 8;
+ $salt = '$2a$'.str_pad($compute, 2, '0', STR_PAD_LEFT).'$'.
+ $this->gen_salt(22);
+ }
+
+ return crypt($clear, $salt);
+ }
+
}
diff --git a/inc/RemoteAPICore.php b/inc/RemoteAPICore.php
new file mode 100644
index 000000000..546832100
--- /dev/null
+++ b/inc/RemoteAPICore.php
@@ -0,0 +1,768 @@
+<?php
+
+/**
+ * Increased whenever the API is changed
+ */
+define('DOKU_API_VERSION', 7);
+
+class RemoteAPICore {
+
+ private $api;
+
+ public function __construct(RemoteAPI $api) {
+ $this->api = $api;
+ }
+
+ function __getRemoteInfo() {
+ return array(
+ 'dokuwiki.getVersion' => array(
+ 'args' => array(),
+ 'return' => 'string',
+ 'doc' => 'Returns the running DokuWiki version.'
+ ), 'dokuwiki.login' => array(
+ 'args' => array('string', 'string'),
+ 'return' => 'int',
+ 'doc' => 'Tries to login with the given credentials and sets auth cookies.',
+ 'public' => '1'
+ ), 'dokuwiki.getPagelist' => array(
+ 'args' => array('string', 'array'),
+ 'return' => 'array',
+ 'doc' => 'List all pages within the given namespace.',
+ 'name' => 'readNamespace'
+ ), 'dokuwiki.search' => array(
+ 'args' => array('string'),
+ 'return' => 'array',
+ 'doc' => 'Perform a fulltext search and return a list of matching pages'
+ ), 'dokuwiki.getTime' => array(
+ 'args' => array(),
+ 'return' => 'int',
+ 'doc' => 'Returns the current time at the remote wiki server as Unix timestamp.',
+ ), 'dokuwiki.setLocks' => array(
+ 'args' => array('array'),
+ 'return' => 'array',
+ 'doc' => 'Lock or unlock pages.'
+ ), 'dokuwiki.getTitle' => array(
+ 'args' => array(),
+ 'return' => 'string',
+ 'doc' => 'Returns the wiki title.',
+ 'public' => '1'
+ ), 'dokuwiki.appendPage' => array(
+ 'args' => array('string', 'string', 'array'),
+ 'return' => 'int',
+ 'doc' => 'Append text to a wiki page.'
+ ), 'wiki.getPage' => array(
+ 'args' => array('string'),
+ 'return' => 'string',
+ 'doc' => 'Get the raw Wiki text of page, latest version.',
+ 'name' => 'rawPage',
+ ), 'wiki.getPageVersion' => array(
+ 'args' => array('string', 'int'),
+ 'name' => 'rawPage',
+ 'return' => 'string',
+ 'doc' => 'Return a raw wiki page'
+ ), 'wiki.getPageHTML' => array(
+ 'args' => array('string'),
+ 'return' => 'string',
+ 'doc' => 'Return page in rendered HTML, latest version.',
+ 'name' => 'htmlPage'
+ ), 'wiki.getPageHTMLVersion' => array(
+ 'args' => array('string', 'int'),
+ 'return' => 'string',
+ 'doc' => 'Return page in rendered HTML.',
+ 'name' => 'htmlPage'
+ ), 'wiki.getAllPages' => array(
+ 'args' => array(),
+ 'return' => 'array',
+ 'doc' => 'Returns a list of all pages. The result is an array of utf8 pagenames.',
+ 'name' => 'listPages'
+ ), 'wiki.getAttachments' => array(
+ 'args' => array('string', 'array'),
+ 'return' => 'array',
+ 'doc' => 'Returns a list of all media files.',
+ 'name' => 'listAttachments'
+ ), 'wiki.getBackLinks' => array(
+ 'args' => array('string'),
+ 'return' => 'array',
+ 'doc' => 'Returns the pages that link to this page.',
+ 'name' => 'listBackLinks'
+ ), 'wiki.getPageInfo' => array(
+ 'args' => array('string'),
+ 'return' => 'array',
+ 'doc' => 'Returns a struct with infos about the page.',
+ 'name' => 'pageInfo'
+ ), 'wiki.getPageInfoVersion' => array(
+ 'args' => array('string', 'int'),
+ 'return' => 'array',
+ 'doc' => 'Returns a struct with infos about the page.',
+ 'name' => 'pageInfo'
+ ), 'wiki.getPageVersions' => array(
+ 'args' => array('string', 'int'),
+ 'return' => 'array',
+ 'doc' => 'Returns the available revisions of the page.',
+ 'name' => 'pageVersions'
+ ), 'wiki.putPage' => array(
+ 'args' => array('string', 'string', 'array'),
+ 'return' => 'int',
+ 'doc' => 'Saves a wiki page.'
+ ), 'wiki.listLinks' => array(
+ 'args' => array('string'),
+ 'return' => 'array',
+ 'doc' => 'Lists all links contained in a wiki page.'
+ ), 'wiki.getRecentChanges' => array(
+ 'args' => array('int'),
+ 'return' => 'array',
+ 'Returns a struct about all recent changes since given timestamp.'
+ ), 'wiki.getRecentMediaChanges' => array(
+ 'args' => array('int'),
+ 'return' => 'array',
+ 'Returns a struct about all recent media changes since given timestamp.'
+ ), 'wiki.aclCheck' => array(
+ 'args' => array('string'),
+ 'return' => 'int',
+ 'doc' => 'Returns the permissions of a given wiki page.'
+ ), 'wiki.putAttachment' => array(
+ 'args' => array('string', 'file', 'array'),
+ 'return' => 'array',
+ 'doc' => 'Upload a file to the wiki.'
+ ), 'wiki.deleteAttachment' => array(
+ 'args' => array('string'),
+ 'return' => 'int',
+ 'doc' => 'Delete a file from the wiki.'
+ ), 'wiki.getAttachment' => array(
+ 'args' => array('string'),
+ 'doc' => 'Return a media file',
+ 'return' => 'file',
+ 'name' => 'getAttachment',
+ ), 'wiki.getAttachmentInfo' => array(
+ 'args' => array('string'),
+ 'return' => 'array',
+ 'doc' => 'Returns a struct with infos about the attachment.'
+ ), 'dokuwiki.getXMLRPCAPIVersion' => array(
+ 'args' => array(),
+ 'name' => 'getAPIVersion',
+ 'return' => 'int',
+ 'doc' => 'Returns the XMLRPC API version.',
+ 'public' => '1',
+ ), 'wiki.getRPCVersionSupported' => array(
+ 'args' => array(),
+ 'name' => 'wiki_RPCVersion',
+ 'return' => 'int',
+ 'doc' => 'Returns 2 with the supported RPC API version.',
+ 'public' => '1'
+ ),
+
+ );
+ }
+
+ function getVersion() {
+ return getVersion();
+ }
+
+ function getTime() {
+ return time();
+ }
+
+ /**
+ * Return a raw wiki page
+ * @param string $id wiki page id
+ * @param string $rev revision number of the page
+ * @return page text.
+ */
+ function rawPage($id,$rev=''){
+ $id = cleanID($id);
+ if(auth_quickaclcheck($id) < AUTH_READ){
+ throw new RemoteAccessDeniedException('You are not allowed to read this file', 111);
+ }
+ $text = rawWiki($id,$rev);
+ if(!$text) {
+ return pageTemplate($id);
+ } else {
+ return $text;
+ }
+ }
+
+ /**
+ * Return a media file
+ *
+ * @author Gina Haeussge <osd@foosel.net>
+ * @param string $id file id
+ * @return media file
+ */
+ function getAttachment($id){
+ $id = cleanID($id);
+ if (auth_quickaclcheck(getNS($id).':*') < AUTH_READ) {
+ throw new RemoteAccessDeniedException('You are not allowed to read this file', 211);
+ }
+
+ $file = mediaFN($id);
+ if (!@ file_exists($file)) {
+ throw new RemoteException('The requested file does not exist', 221);
+ }
+
+ $data = io_readFile($file, false);
+ return $this->api->toFile($data);
+ }
+
+ /**
+ * Return info about a media file
+ *
+ * @author Gina Haeussge <osd@foosel.net>
+ */
+ function getAttachmentInfo($id){
+ $id = cleanID($id);
+ $info = array(
+ 'lastModified' => $this->api->toDate(0),
+ 'size' => 0,
+ );
+
+ $file = mediaFN($id);
+ if ((auth_quickaclcheck(getNS($id).':*') >= AUTH_READ) && file_exists($file)){
+ $info['lastModified'] = $this->api->toDate(filemtime($file));
+ $info['size'] = filesize($file);
+ }
+
+ return $info;
+ }
+
+ /**
+ * Return a wiki page rendered to html
+ */
+ function htmlPage($id,$rev=''){
+ $id = cleanID($id);
+ if(auth_quickaclcheck($id) < AUTH_READ){
+ throw new RemoteAccessDeniedException('You are not allowed to read this page', 111);
+ }
+ return p_wiki_xhtml($id,$rev,false);
+ }
+
+ /**
+ * List all pages - we use the indexer list here
+ */
+ function listPages(){
+ $list = array();
+ $pages = idx_get_indexer()->getPages();
+ $pages = array_filter(array_filter($pages,'isVisiblePage'),'page_exists');
+
+ foreach(array_keys($pages) as $idx) {
+ $perm = auth_quickaclcheck($pages[$idx]);
+ if($perm < AUTH_READ) {
+ continue;
+ }
+ $page = array();
+ $page['id'] = trim($pages[$idx]);
+ $page['perms'] = $perm;
+ $page['size'] = @filesize(wikiFN($pages[$idx]));
+ $page['lastModified'] = $this->api->toDate(@filemtime(wikiFN($pages[$idx])));
+ $list[] = $page;
+ }
+
+ return $list;
+ }
+
+ /**
+ * List all pages in the given namespace (and below)
+ */
+ function readNamespace($ns,$opts){
+ global $conf;
+
+ if(!is_array($opts)) $opts=array();
+
+ $ns = cleanID($ns);
+ $dir = utf8_encodeFN(str_replace(':', '/', $ns));
+ $data = array();
+ $opts['skipacl'] = 0; // no ACL skipping for XMLRPC
+ search($data, $conf['datadir'], 'search_allpages', $opts, $dir);
+ return $data;
+ }
+
+ /**
+ * List all pages in the given namespace (and below)
+ */
+ function search($query){
+ $regex = '';
+ $data = ft_pageSearch($query,$regex);
+ $pages = array();
+
+ // prepare additional data
+ $idx = 0;
+ foreach($data as $id => $score){
+ $file = wikiFN($id);
+
+ if($idx < FT_SNIPPET_NUMBER){
+ $snippet = ft_snippet($id,$regex);
+ $idx++;
+ }else{
+ $snippet = '';
+ }
+
+ $pages[] = array(
+ 'id' => $id,
+ 'score' => intval($score),
+ 'rev' => filemtime($file),
+ 'mtime' => filemtime($file),
+ 'size' => filesize($file),
+ 'snippet' => $snippet,
+ );
+ }
+ return $pages;
+ }
+
+ /**
+ * Returns the wiki title.
+ */
+ function getTitle(){
+ global $conf;
+ return $conf['title'];
+ }
+
+ /**
+ * List all media files.
+ *
+ * Available options are 'recursive' for also including the subnamespaces
+ * in the listing, and 'pattern' for filtering the returned files against
+ * a regular expression matching their name.
+ *
+ * @author Gina Haeussge <osd@foosel.net>
+ */
+ function listAttachments($ns, $options = array()) {
+ global $conf;
+
+ $ns = cleanID($ns);
+
+ if (!is_array($options)) $options = array();
+ $options['skipacl'] = 0; // no ACL skipping for XMLRPC
+
+
+ if(auth_quickaclcheck($ns.':*') >= AUTH_READ) {
+ $dir = utf8_encodeFN(str_replace(':', '/', $ns));
+
+ $data = array();
+ search($data, $conf['mediadir'], 'search_media', $options, $dir);
+ $len = count($data);
+ if(!$len) return array();
+
+ for($i=0; $i<$len; $i++) {
+ unset($data[$i]['meta']);
+ $data[$i]['lastModified'] = $this->api->toDate($data[$i]['mtime']);
+ }
+ return $data;
+ } else {
+ throw new RemoteAccessDeniedException('You are not allowed to list media files.', 215);
+ }
+ }
+
+ /**
+ * Return a list of backlinks
+ */
+ function listBackLinks($id){
+ return ft_backlinks(cleanID($id));
+ }
+
+ /**
+ * Return some basic data about a page
+ */
+ function pageInfo($id,$rev=''){
+ $id = cleanID($id);
+ if(auth_quickaclcheck($id) < AUTH_READ){
+ throw new RemoteAccessDeniedException('You are not allowed to read this page', 111);
+ }
+ $file = wikiFN($id,$rev);
+ $time = @filemtime($file);
+ if(!$time){
+ throw new RemoteException(10, 'The requested page does not exist', 121);
+ }
+
+ $info = getRevisionInfo($id, $time, 1024);
+
+ $data = array(
+ 'name' => $id,
+ 'lastModified' => $this->api->toDate($time),
+ 'author' => (($info['user']) ? $info['user'] : $info['ip']),
+ 'version' => $time
+ );
+
+ return ($data);
+ }
+
+ /**
+ * Save a wiki page
+ *
+ * @author Michael Klier <chi@chimeric.de>
+ */
+ function putPage($id, $text, $params) {
+ global $TEXT;
+ global $lang;
+
+ $id = cleanID($id);
+ $TEXT = cleanText($text);
+ $sum = $params['sum'];
+ $minor = $params['minor'];
+
+ if(empty($id)) {
+ throw new RemoteException('Empty page ID', 131);
+ }
+
+ if(!page_exists($id) && trim($TEXT) == '' ) {
+ throw new RemoteException('Refusing to write an empty new wiki page', 132);
+ }
+
+ if(auth_quickaclcheck($id) < AUTH_EDIT) {
+ throw new RemoteAccessDeniedException('You are not allowed to edit this page', 112);
+ }
+
+ // Check, if page is locked
+ if(checklock($id)) {
+ throw new RemoteException('The page is currently locked', 133);
+ }
+
+ // SPAM check
+ if(checkwordblock()) {
+ throw new RemoteException('Positive wordblock check', 134);
+ }
+
+ // autoset summary on new pages
+ if(!page_exists($id) && empty($sum)) {
+ $sum = $lang['created'];
+ }
+
+ // autoset summary on deleted pages
+ if(page_exists($id) && empty($TEXT) && empty($sum)) {
+ $sum = $lang['deleted'];
+ }
+
+ lock($id);
+
+ saveWikiText($id,$TEXT,$sum,$minor);
+
+ unlock($id);
+
+ // run the indexer if page wasn't indexed yet
+ idx_addPage($id);
+
+ return 0;
+ }
+
+ /**
+ * Appends text to a wiki page.
+ */
+ function appendPage($id, $text, $params) {
+ $currentpage = $this->rawPage($id);
+ if (!is_string($currentpage)) {
+ return $currentpage;
+ }
+ return $this->putPage($id, $currentpage.$text, $params);
+ }
+
+ /**
+ * Uploads a file to the wiki.
+ *
+ * Michael Klier <chi@chimeric.de>
+ */
+ function putAttachment($id, $file, $params) {
+ $id = cleanID($id);
+ $auth = auth_quickaclcheck(getNS($id).':*');
+
+ if(!isset($id)) {
+ throw new RemoteException('Filename not given.', 231);
+ }
+
+ global $conf;
+
+ $ftmp = $conf['tmpdir'] . '/' . md5($id.clientIP());
+
+ // save temporary file
+ @unlink($ftmp);
+ io_saveFile($ftmp, $file);
+
+ $res = media_save(array('name' => $ftmp), $id, $params['ow'], $auth, 'rename');
+ if (is_array($res)) {
+ throw new RemoteException($res[0], -$res[1]);
+ } else {
+ return $res;
+ }
+ }
+
+ /**
+ * Deletes a file from the wiki.
+ *
+ * @author Gina Haeussge <osd@foosel.net>
+ */
+ function deleteAttachment($id){
+ $id = cleanID($id);
+ $auth = auth_quickaclcheck(getNS($id).':*');
+ $res = media_delete($id, $auth);
+ if ($res & DOKU_MEDIA_DELETED) {
+ return 0;
+ } elseif ($res & DOKU_MEDIA_NOT_AUTH) {
+ throw new RemoteAccessDeniedException('You don\'t have permissions to delete files.', 212);
+ } elseif ($res & DOKU_MEDIA_INUSE) {
+ throw new RemoteException('File is still referenced', 232);
+ } else {
+ throw new RemoteException('Could not delete file', 233);
+ }
+ }
+
+ /**
+ * Returns the permissions of a given wiki page
+ */
+ function aclCheck($id) {
+ $id = cleanID($id);
+ return auth_quickaclcheck($id);
+ }
+
+ /**
+ * Lists all links contained in a wiki page
+ *
+ * @author Michael Klier <chi@chimeric.de>
+ */
+ function listLinks($id) {
+ $id = cleanID($id);
+ if(auth_quickaclcheck($id) < AUTH_READ){
+ throw new RemoteAccessDeniedException('You are not allowed to read this page', 111);
+ }
+ $links = array();
+
+ // resolve page instructions
+ $ins = p_cached_instructions(wikiFN($id));
+
+ // instantiate new Renderer - needed for interwiki links
+ include(DOKU_INC.'inc/parser/xhtml.php');
+ $Renderer = new Doku_Renderer_xhtml();
+ $Renderer->interwiki = getInterwiki();
+
+ // parse parse instructions
+ foreach($ins as $in) {
+ $link = array();
+ switch($in[0]) {
+ case 'internallink':
+ $link['type'] = 'local';
+ $link['page'] = $in[1][0];
+ $link['href'] = wl($in[1][0]);
+ array_push($links,$link);
+ break;
+ case 'externallink':
+ $link['type'] = 'extern';
+ $link['page'] = $in[1][0];
+ $link['href'] = $in[1][0];
+ array_push($links,$link);
+ break;
+ case 'interwikilink':
+ $url = $Renderer->_resolveInterWiki($in[1][2],$in[1][3]);
+ $link['type'] = 'extern';
+ $link['page'] = $url;
+ $link['href'] = $url;
+ array_push($links,$link);
+ break;
+ }
+ }
+
+ return ($links);
+ }
+
+ /**
+ * Returns a list of recent changes since give timestamp
+ *
+ * @author Michael Hamann <michael@content-space.de>
+ * @author Michael Klier <chi@chimeric.de>
+ */
+ function getRecentChanges($timestamp) {
+ if(strlen($timestamp) != 10) {
+ throw new RemoteException('The provided value is not a valid timestamp', 311);
+ }
+
+ $recents = getRecentsSince($timestamp);
+
+ $changes = array();
+
+ foreach ($recents as $recent) {
+ $change = array();
+ $change['name'] = $recent['id'];
+ $change['lastModified'] = $this->api->toDate($recent['date']);
+ $change['author'] = $recent['user'];
+ $change['version'] = $recent['date'];
+ $change['perms'] = $recent['perms'];
+ $change['size'] = @filesize(wikiFN($recent['id']));
+ array_push($changes, $change);
+ }
+
+ if (!empty($changes)) {
+ return $changes;
+ } else {
+ // in case we still have nothing at this point
+ return new RemoteException('There are no changes in the specified timeframe', 321);
+ }
+ }
+
+ /**
+ * Returns a list of recent media changes since give timestamp
+ *
+ * @author Michael Hamann <michael@content-space.de>
+ * @author Michael Klier <chi@chimeric.de>
+ */
+ function getRecentMediaChanges($timestamp) {
+ if(strlen($timestamp) != 10)
+ throw new RemoteException('The provided value is not a valid timestamp', 311);
+
+ $recents = getRecentsSince($timestamp, null, '', RECENTS_MEDIA_CHANGES);
+
+ $changes = array();
+
+ foreach ($recents as $recent) {
+ $change = array();
+ $change['name'] = $recent['id'];
+ $change['lastModified'] = $this->api->toDate($recent['date']);
+ $change['author'] = $recent['user'];
+ $change['version'] = $recent['date'];
+ $change['perms'] = $recent['perms'];
+ $change['size'] = @filesize(mediaFN($recent['id']));
+ array_push($changes, $change);
+ }
+
+ if (!empty($changes)) {
+ return $changes;
+ } else {
+ // in case we still have nothing at this point
+ throw new RemoteException('There are no changes in the specified timeframe', 321);
+ }
+ }
+
+ /**
+ * Returns a list of available revisions of a given wiki page
+ *
+ * @author Michael Klier <chi@chimeric.de>
+ */
+ function pageVersions($id, $first) {
+ $id = cleanID($id);
+ if(auth_quickaclcheck($id) < AUTH_READ) {
+ throw new RemoteAccessDeniedException('You are not allowed to read this page', 111);
+ }
+ global $conf;
+
+ $versions = array();
+
+ if(empty($id)) {
+ throw new RemoteException('Empty page ID', 131);
+ }
+
+ $revisions = getRevisions($id, $first, $conf['recent']+1);
+
+ if(count($revisions)==0 && $first!=0) {
+ $first=0;
+ $revisions = getRevisions($id, $first, $conf['recent']+1);
+ }
+
+ if(count($revisions)>0 && $first==0) {
+ array_unshift($revisions, ''); // include current revision
+ array_pop($revisions); // remove extra log entry
+ }
+
+ if(count($revisions) > $conf['recent']) {
+ array_pop($revisions); // remove extra log entry
+ }
+
+ if(!empty($revisions)) {
+ foreach($revisions as $rev) {
+ $file = wikiFN($id,$rev);
+ $time = @filemtime($file);
+ // we check if the page actually exists, if this is not the
+ // case this can lead to less pages being returned than
+ // specified via $conf['recent']
+ if($time){
+ $info = getRevisionInfo($id, $time, 1024);
+ if(!empty($info)) {
+ $data['user'] = $info['user'];
+ $data['ip'] = $info['ip'];
+ $data['type'] = $info['type'];
+ $data['sum'] = $info['sum'];
+ $data['modified'] = $this->api->toDate($info['date']);
+ $data['version'] = $info['date'];
+ array_push($versions, $data);
+ }
+ }
+ }
+ return $versions;
+ } else {
+ return array();
+ }
+ }
+
+ /**
+ * The version of Wiki RPC API supported
+ */
+ function wiki_RPCVersion(){
+ return 2;
+ }
+
+
+ /**
+ * Locks or unlocks a given batch of pages
+ *
+ * Give an associative array with two keys: lock and unlock. Both should contain a
+ * list of pages to lock or unlock
+ *
+ * Returns an associative array with the keys locked, lockfail, unlocked and
+ * unlockfail, each containing lists of pages.
+ */
+ function setLocks($set){
+ $locked = array();
+ $lockfail = array();
+ $unlocked = array();
+ $unlockfail = array();
+
+ foreach((array) $set['lock'] as $id){
+ $id = cleanID($id);
+ if(auth_quickaclcheck($id) < AUTH_EDIT || checklock($id)){
+ $lockfail[] = $id;
+ }else{
+ lock($id);
+ $locked[] = $id;
+ }
+ }
+
+ foreach((array) $set['unlock'] as $id){
+ $id = cleanID($id);
+ if(auth_quickaclcheck($id) < AUTH_EDIT || !unlock($id)){
+ $unlockfail[] = $id;
+ }else{
+ $unlocked[] = $id;
+ }
+ }
+
+ return array(
+ 'locked' => $locked,
+ 'lockfail' => $lockfail,
+ 'unlocked' => $unlocked,
+ 'unlockfail' => $unlockfail,
+ );
+ }
+
+ function getAPIVersion(){
+ return DOKU_API_VERSION;
+ }
+
+ function login($user,$pass){
+ global $conf;
+ global $auth;
+ if(!$conf['useacl']) return 0;
+ if(!$auth) return 0;
+
+ @session_start(); // reopen session for login
+ if($auth->canDo('external')){
+ $ok = $auth->trustExternal($user,$pass,false);
+ }else{
+ $evdata = array(
+ 'user' => $user,
+ 'password' => $pass,
+ 'sticky' => false,
+ 'silent' => true,
+ );
+ $ok = trigger_event('AUTH_LOGIN_CHECK', $evdata, 'auth_login_wrapper');
+ }
+ session_write_close(); // we're done with the session
+
+ return $ok;
+ }
+
+
+}
+
diff --git a/inc/SafeFN.class.php b/inc/SafeFN.class.php
index 43b19e9ab..ab05b9eae 100644
--- a/inc/SafeFN.class.php
+++ b/inc/SafeFN.class.php
@@ -1,17 +1,17 @@
<?php
/**
- * Class to safely store UTF-8 in a Filename
+ * Class to safely store UTF-8 in a Filename
*
- * Encodes a utf8 string using only the following characters 0-9a-z_.-%
- * characters 0-9a-z in the original string are preserved, "plain".
- * all other characters are represented in a substring that starts
- * with '%' are "converted".
- * The transition from converted substrings to plain characters is
- * marked with a '.'
+ * Encodes a utf8 string using only the following characters 0-9a-z_.-%
+ * characters 0-9a-z in the original string are preserved, "plain".
+ * all other characters are represented in a substring that starts
+ * with '%' are "converted".
+ * The transition from converted substrings to plain characters is
+ * marked with a '.'
*
- * @author Christopher Smith
- * @date 2010-04-02
+ * @author Christopher Smith <chris@jalakai.co.uk>
+ * @date 2010-04-02
*/
class SafeFN {
@@ -133,14 +133,15 @@ class SafeFN {
$converted = false;
foreach ($split as $sub) {
+ $len = strlen($sub);
if ($sub[0] != self::$pre_indicator) {
// plain (unconverted) characters, optionally starting with a post_indicator
// set initial value to skip any post_indicator
- for ($i=($converted?1:0); $i < strlen($sub); $i++) {
+ for ($i=($converted?1:0); $i < $len; $i++) {
$unicode[] = ord($sub[$i]);
}
$converted = false;
- } else if (strlen($sub)==1) {
+ } else if ($len==1) {
// a pre_indicator character in the real data
$unicode[] = ord($sub);
$converted = true;
diff --git a/inc/Sitemapper.php b/inc/Sitemapper.php
index bbe1caf26..bbea73b52 100644
--- a/inc/Sitemapper.php
+++ b/inc/Sitemapper.php
@@ -10,7 +10,7 @@ if(!defined('DOKU_INC')) die('meh.');
/**
* A class for building sitemaps and pinging search engines with the sitemap URL.
- *
+ *
* @author Michael Hamann
*/
class Sitemapper {
@@ -25,7 +25,7 @@ class Sitemapper {
* @link https://www.google.com/webmasters/sitemaps/docs/en/about.html
* @link http://www.sitemaps.org/
*/
- public function generate(){
+ public static function generate(){
global $conf;
if($conf['sitemap'] < 1 || !is_numeric($conf['sitemap'])) return false;
@@ -39,11 +39,11 @@ class Sitemapper {
if(@filesize($sitemap) &&
@filemtime($sitemap) > (time()-($conf['sitemap']*86400))){ // 60*60*24=86400
- dbglog('Sitemapper::generate(): Sitemap up to date'); // FIXME: only in debug mode
+ dbglog('Sitemapper::generate(): Sitemap up to date');
return false;
}
- dbglog("Sitemapper::generate(): using $sitemap"); // FIXME: Only in debug mode
+ dbglog("Sitemapper::generate(): using $sitemap");
$pages = idx_get_indexer()->getPages();
dbglog('Sitemapper::generate(): creating sitemap using '.count($pages).' pages');
@@ -55,7 +55,7 @@ class Sitemapper {
if(isHiddenPage($id)) continue;
if(auth_aclcheck($id,'','') < AUTH_READ) continue;
$item = SitemapItem::createFromID($id);
- if ($item !== NULL)
+ if ($item !== null)
$items[] = $item;
}
@@ -72,12 +72,12 @@ class Sitemapper {
/**
* Builds the sitemap XML string from the given array auf SitemapItems.
- *
+ *
* @param $items array The SitemapItems that shall be included in the sitemap.
* @return string The sitemap XML.
* @author Michael Hamann
*/
- private function getXML($items) {
+ private static function getXML($items) {
ob_start();
echo '<?xml version="1.0" encoding="UTF-8"?>'.NL;
echo '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">'.NL;
@@ -92,11 +92,11 @@ class Sitemapper {
/**
* Helper function for getting the path to the sitemap file.
- *
+ *
* @return The path to the sitemap file.
* @author Michael Hamann
*/
- public function getFilePath() {
+ public static function getFilePath() {
global $conf;
$sitemap = $conf['cachedir'].'/sitemap.xml';
@@ -108,12 +108,12 @@ class Sitemapper {
}
/**
- * Pings search engines with the sitemap url. Plugins can add or remove
+ * Pings search engines with the sitemap url. Plugins can add or remove
* urls to ping using the SITEMAP_PING event.
- *
+ *
* @author Michael Hamann
*/
- public function pingSearchEngines() {
+ public static function pingSearchEngines() {
//ping search engines...
$http = new DokuHTTPClient();
$http->timeout = 8;
@@ -145,7 +145,7 @@ class Sitemapper {
/**
* An item of a sitemap.
- *
+ *
* @author Michael Hamann
*/
class SitemapItem {
@@ -156,7 +156,7 @@ class SitemapItem {
/**
* Create a new item.
- *
+ *
* @param $url string The url of the item
* @param $lastmod int Timestamp of the last modification
* @param $changefreq string How frequently the item is likely to change. Valid values: always, hourly, daily, weekly, monthly, yearly, never.
@@ -171,7 +171,7 @@ class SitemapItem {
/**
* Helper function for creating an item for a wikipage id.
- *
+ *
* @param $id string A wikipage id.
* @param $changefreq string How frequently the item is likely to change. Valid values: always, hourly, daily, weekly, monthly, yearly, never.
* @param $priority float|string The priority of the item relative to other URLs on your site. Valid values range from 0.0 to 1.0.
@@ -180,22 +180,22 @@ class SitemapItem {
public static function createFromID($id, $changefreq = null, $priority = null) {
$id = trim($id);
$date = @filemtime(wikiFN($id));
- if(!$date) return NULL;
+ if(!$date) return null;
return new SitemapItem(wl($id, '', true), $date, $changefreq, $priority);
}
/**
* Get the XML representation of the sitemap item.
- *
+ *
* @return The XML representation.
*/
public function toXML() {
$result = ' <url>'.NL
.' <loc>'.hsc($this->url).'</loc>'.NL
.' <lastmod>'.date_iso8601($this->lastmod).'</lastmod>'.NL;
- if ($this->changefreq !== NULL)
+ if ($this->changefreq !== null)
$result .= ' <changefreq>'.hsc($this->changefreq).'</changefreq>'.NL;
- if ($this->priority !== NULL)
+ if ($this->priority !== null)
$result .= ' <priority>'.hsc($this->priority).'</priority>'.NL;
$result .= ' </url>'.NL;
return $result;
diff --git a/inc/TarLib.class.php b/inc/TarLib.class.php
index 12418c48d..36c1fee83 100644
--- a/inc/TarLib.class.php
+++ b/inc/TarLib.class.php
@@ -108,7 +108,7 @@ class TarLib {
* represent the GZIP or BZIP compression level. 1 produce fast compression,
* and 9 produce smaller files. See the RFC 1952 for more infos.
*/
- function tarlib($p_filen = TarLib::ARCHIVE_DYNAMIC , $p_comptype = TarLib::COMPRESS_AUTO, $p_complevel = 9) {
+ function __construct($p_filen = TarLib::ARCHIVE_DYNAMIC , $p_comptype = TarLib::COMPRESS_AUTO, $p_complevel = 9) {
$this->_initerror = 0;
$this->_nomf = $p_filen;
$flag=0;
@@ -127,7 +127,7 @@ class TarLib {
}
switch($p_comptype) {
- case TarLib::COMPRESS_GZIP:
+ case TarLib::COMPRESS_GZIP:
if(!extension_loaded('zlib')) $this->_initerror = -1;
$this->_comptype = TarLib::COMPRESS_GZIP;
break;
diff --git a/inc/adLDAP.php b/inc/adLDAP.php
index a64096b85..24be6e475 100644
--- a/inc/adLDAP.php
+++ b/inc/adLDAP.php
@@ -1021,6 +1021,26 @@ class adLDAP {
}
/**
+ * Return info about the domain itself
+ *
+ * @authot Andreas Gohr <gohr@cosmocode.de>
+ * @param array $fields The fields to query
+ * @return array
+ */
+ public function domain_info($fields){
+ if (!$this->_bind){ return (false); }
+
+ $sr = ldap_read($this->_conn, $this->_base_dn, 'objectclass=*', $fields);
+ if (!$sr) {
+ return false;
+ }
+ $info = ldap_get_entries($this->_conn, $sr);
+ if(count($info)) return $info[0];
+
+ return false;
+ }
+
+ /**
* Determine a user's password expiry date
*
* @param string $username The username to query
diff --git a/inc/auth.php b/inc/auth.php
index 49346a84f..ed0e2dcf7 100644
--- a/inc/auth.php
+++ b/inc/auth.php
@@ -422,7 +422,7 @@ function auth_isadmin($user=null,$groups=null){
* @param $memberlist string commaseparated list of allowed users and groups
* @param $user string user to match against
* @param $groups array groups the user is member of
- * @returns bool true for membership acknowledged
+ * @return bool true for membership acknowledged
*/
function auth_isMember($memberlist,$user,array $groups){
global $auth;
@@ -523,18 +523,19 @@ function auth_aclcheck($id,$user,$groups){
$groups[] = '@ALL';
//add User
if($user) $groups[] = $user;
- //build regexp
- $regexp = join('|',$groups);
}else{
- $regexp = '@ALL';
+ $groups[] = '@ALL';
}
//check exact match first
- $matches = preg_grep('/^'.preg_quote($id,'/').'\s+('.$regexp.')\s+/'.$ci,$AUTH_ACL);
+ $matches = preg_grep('/^'.preg_quote($id,'/').'\s+(\S+)\s+/'.$ci,$AUTH_ACL);
if(count($matches)){
foreach($matches as $match){
$match = preg_replace('/#.*$/','',$match); //ignore comments
$acl = preg_split('/\s+/',$match);
+ if (!in_array($acl[1], $groups)) {
+ continue;
+ }
if($acl[2] > AUTH_DELETE) $acl[2] = AUTH_DELETE; //no admins in the ACL!
if($acl[2] > $perm){
$perm = $acl[2];
@@ -554,20 +555,24 @@ function auth_aclcheck($id,$user,$groups){
}
do{
- $matches = preg_grep('/^'.preg_quote($path,'/').'\s+('.$regexp.')\s+/'.$ci,$AUTH_ACL);
+ $matches = preg_grep('/^'.preg_quote($path,'/').'\s+(\S+)\s+/'.$ci,$AUTH_ACL);
if(count($matches)){
foreach($matches as $match){
$match = preg_replace('/#.*$/','',$match); //ignore comments
$acl = preg_split('/\s+/',$match);
+ if (!in_array($acl[1], $groups)) {
+ continue;
+ }
if($acl[2] > AUTH_DELETE) $acl[2] = AUTH_DELETE; //no admins in the ACL!
if($acl[2] > $perm){
$perm = $acl[2];
}
}
//we had a match - return it
- return $perm;
+ if ($perm != -1) {
+ return $perm;
+ }
}
-
//get next higher namespace
$ns = getNS($ns);
@@ -582,9 +587,6 @@ function auth_aclcheck($id,$user,$groups){
return AUTH_NONE;
}
}while(1); //this should never loop endless
-
- //still here? return no permissions
- return AUTH_NONE;
}
/**
@@ -853,32 +855,59 @@ function act_resendpwd(){
$token = preg_replace('/[^a-f0-9]+/','',$_REQUEST['pwauth']);
if($token){
- // we're in token phase
+ // we're in token phase - get user info from token
$tfile = $conf['cachedir'].'/'.$token{0}.'/'.$token.'.pwauth';
if(!@file_exists($tfile)){
msg($lang['resendpwdbadauth'],-1);
+ unset($_REQUEST['pwauth']);
return false;
}
+ // token is only valid for 3 days
+ if( (time() - filemtime($tfile)) > (3*60*60*24) ){
+ msg($lang['resendpwdbadauth'],-1);
+ unset($_REQUEST['pwauth']);
+ @unlink($tfile);
+ return false;
+ }
+
$user = io_readfile($tfile);
- @unlink($tfile);
$userinfo = $auth->getUserData($user);
if(!$userinfo['mail']) {
msg($lang['resendpwdnouser'], -1);
return false;
}
- $pass = auth_pwgen();
- if (!$auth->triggerUserMod('modify', array($user,array('pass' => $pass)))) {
- msg('error modifying user data',-1);
- return false;
- }
+ if(!$conf['autopasswd']){ // we let the user choose a password
+ // password given correctly?
+ if(!isset($_REQUEST['pass']) || $_REQUEST['pass'] == '') return false;
+ if($_REQUEST['pass'] != $_REQUEST['passchk']){
+ msg($lang['regbadpass'],-1);
+ return false;
+ }
+ $pass = $_REQUEST['pass'];
- if (auth_sendPassword($user,$pass)) {
- msg($lang['resendpwdsuccess'],1);
- } else {
- msg($lang['regmailfail'],-1);
+ if (!$auth->triggerUserMod('modify', array($user,array('pass' => $pass)))) {
+ msg('error modifying user data',-1);
+ return false;
+ }
+
+ }else{ // autogenerate the password and send by mail
+
+ $pass = auth_pwgen();
+ if (!$auth->triggerUserMod('modify', array($user,array('pass' => $pass)))) {
+ msg('error modifying user data',-1);
+ return false;
+ }
+
+ if (auth_sendPassword($user,$pass)) {
+ msg($lang['resendpwdsuccess'],1);
+ } else {
+ msg($lang['regmailfail'],-1);
+ }
}
+
+ @unlink($tfile);
return true;
} else {
diff --git a/inc/auth/ad.class.php b/inc/auth/ad.class.php
index 1fddad243..bc4168527 100644
--- a/inc/auth/ad.class.php
+++ b/inc/auth/ad.class.php
@@ -26,15 +26,17 @@
* $conf['auth']['ad']['use_ssl'] = 1;
* $conf['auth']['ad']['use_tls'] = 1;
* $conf['auth']['ad']['debug'] = 1;
+ * // warn user about expiring password this many days in advance:
+ * $conf['auth']['ad']['expirywarn'] = 5;
*
* // get additional information to the userinfo array
* // add a list of comma separated ldap contact fields.
* $conf['auth']['ad']['additional'] = 'field1,field2';
*
- * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
- * @author James Van Lommel <jamesvl@gmail.com>
- * @link http://www.nosq.com/blog/2005/08/ldap-activedirectory-and-dokuwiki/
- * @author Andreas Gohr <andi@splitbrain.org>
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * @author James Van Lommel <jamesvl@gmail.com>
+ * @link http://www.nosq.com/blog/2005/08/ldap-activedirectory-and-dokuwiki/
+ * @author Andreas Gohr <andi@splitbrain.org>
*/
require_once(DOKU_INC.'inc/adLDAP.php');
@@ -44,15 +46,15 @@ class auth_ad extends auth_basic {
var $opts = null;
var $adldap = null;
var $users = null;
+ var $msgshown = false;
/**
* Constructor
*/
- function auth_ad() {
+ function __construct() {
global $conf;
$this->cnf = $conf['auth']['ad'];
-
// additional information fields
if (isset($this->cnf['additional'])) {
$this->cnf['additional'] = str_replace(' ', '', $this->cnf['additional']);
@@ -69,21 +71,21 @@ class auth_ad extends auth_basic {
// Prepare SSO
if($_SERVER['REMOTE_USER'] && $this->cnf['sso']){
- // remove possible NTLM domain
- list($dom,$usr) = explode('\\',$_SERVER['REMOTE_USER'],2);
- if(!$usr) $usr = $dom;
+ // remove possible NTLM domain
+ list($dom,$usr) = explode('\\',$_SERVER['REMOTE_USER'],2);
+ if(!$usr) $usr = $dom;
- // remove possible Kerberos domain
- list($usr,$dom) = explode('@',$usr);
+ // remove possible Kerberos domain
+ list($usr,$dom) = explode('@',$usr);
- $dom = strtolower($dom);
- $_SERVER['REMOTE_USER'] = $usr;
+ $dom = strtolower($dom);
+ $_SERVER['REMOTE_USER'] = $usr;
- // we need to simulate a login
- if(empty($_COOKIE[DOKU_COOKIE])){
- $_REQUEST['u'] = $_SERVER['REMOTE_USER'];
- $_REQUEST['p'] = 'sso_only';
- }
+ // we need to simulate a login
+ if(empty($_COOKIE[DOKU_COOKIE])){
+ $_REQUEST['u'] = $_SERVER['REMOTE_USER'];
+ $_REQUEST['p'] = 'sso_only';
+ }
}
// prepare adLDAP standard configuration
@@ -144,11 +146,15 @@ class auth_ad extends auth_basic {
*
* @author James Van Lommel <james@nosq.com>
*/
- function getUserData($user){
+ function getUserData($user){
global $conf;
+ global $lang;
+ global $ID;
if(!$this->_init()) return false;
- $fields = array('mail','displayname','samaccountname');
+ if($user == '') return array();
+
+ $fields = array('mail','displayname','samaccountname','lastpwd','pwdlastset','useraccountcontrol');
// add additional fields to read
$fields = array_merge($fields, $this->cnf['additional']);
@@ -156,11 +162,19 @@ class auth_ad extends auth_basic {
//get info for given user
$result = $this->adldap->user_info($user, $fields);
+ if($result == false){
+ return array();
+ }
+
//general user info
- $info['name'] = $result[0]['displayname'][0];
- $info['mail'] = $result[0]['mail'][0];
- $info['uid'] = $result[0]['samaccountname'][0];
- $info['dn'] = $result[0]['dn'];
+ $info['name'] = $result[0]['displayname'][0];
+ $info['mail'] = $result[0]['mail'][0];
+ $info['uid'] = $result[0]['samaccountname'][0];
+ $info['dn'] = $result[0]['dn'];
+ //last password set (Windows counts from January 1st 1601)
+ $info['lastpwd'] = $result[0]['pwdlastset'][0] / 10000000 - 11644473600;
+ //will it expire?
+ $info['expires'] = !($result[0]['useraccountcontrol'][0] & 0x10000); //ADS_UF_DONT_EXPIRE_PASSWD
// additional information
foreach ($this->cnf['additional'] as $field) {
@@ -183,6 +197,29 @@ class auth_ad extends auth_basic {
$info['grps'][] = $conf['defaultgroup'];
}
+ // check expiry time
+ if($info['expires'] && $this->cnf['expirywarn']){
+ $result = $this->adldap->domain_info(array('maxpwdage')); // maximum pass age
+ $maxage = -1 * $result['maxpwdage'][0] / 10000000; // negative 100 nanosecs
+ $timeleft = $maxage - (time() - $info['lastpwd']);
+ $timeleft = round($timeleft/(24*60*60));
+ $info['expiresin'] = $timeleft;
+
+ // if this is the current user, warn him (once per request only)
+ if( ($_SERVER['REMOTE_USER'] == $user) &&
+ ($timeleft <= $this->cnf['expirywarn']) &&
+ !$this->msgshown
+ ){
+ $msg = sprintf($lang['authpwdexpire'],$timeleft);
+ if($this->canDo('modPass')){
+ $url = wl($ID,array('do'=>'profile'));
+ $msg .= ' <a href="'.$url.'">'.$lang['btn_profile'].'</a>';
+ }
+ msg($msg);
+ $this->msgshown = true;
+ }
+ }
+
return $info;
}
@@ -259,7 +296,7 @@ class auth_ad extends auth_basic {
* @param $user nick of the user to be changed
* @param $changes array of field/value pairs to be changed
* @return bool
- */
+ */
function modifyUser($user, $changes) {
$return = true;
@@ -342,7 +379,6 @@ class auth_ad extends auth_basic {
function _constructPattern($filter) {
$this->_pattern = array();
foreach ($filter as $item => $pattern) {
-// $this->_pattern[$item] = '/'.preg_quote($pattern,"/").'/i'; // don't allow regex characters
$this->_pattern[$item] = '/'.str_replace('/','\/',$pattern).'/i'; // allow regex characters
}
}
diff --git a/inc/auth/basic.class.php b/inc/auth/basic.class.php
index c7e7031bf..7c0a5f2c9 100644
--- a/inc/auth/basic.class.php
+++ b/inc/auth/basic.class.php
@@ -9,395 +9,393 @@
*/
class auth_basic {
+ var $success = true;
- var $success = true;
-
-
- /**
- * Posible things an auth backend module may be able to
- * do. The things a backend can do need to be set to true
- * in the constructor.
- */
- var $cando = array (
- 'addUser' => false, // can Users be created?
- 'delUser' => false, // can Users be deleted?
- 'modLogin' => false, // can login names be changed?
- 'modPass' => false, // can passwords be changed?
- 'modName' => false, // can real names be changed?
- 'modMail' => false, // can emails be changed?
- 'modGroups' => false, // can groups be changed?
- 'getUsers' => false, // can a (filtered) list of users be retrieved?
- 'getUserCount'=> false, // can the number of users be retrieved?
- 'getGroups' => false, // can a list of available groups be retrieved?
- 'external' => false, // does the module do external auth checking?
- 'logout' => true, // can the user logout again? (eg. not possible with HTTP auth)
- );
+ /**
+ * Posible things an auth backend module may be able to
+ * do. The things a backend can do need to be set to true
+ * in the constructor.
+ */
+ var $cando = array (
+ 'addUser' => false, // can Users be created?
+ 'delUser' => false, // can Users be deleted?
+ 'modLogin' => false, // can login names be changed?
+ 'modPass' => false, // can passwords be changed?
+ 'modName' => false, // can real names be changed?
+ 'modMail' => false, // can emails be changed?
+ 'modGroups' => false, // can groups be changed?
+ 'getUsers' => false, // can a (filtered) list of users be retrieved?
+ 'getUserCount'=> false, // can the number of users be retrieved?
+ 'getGroups' => false, // can a list of available groups be retrieved?
+ 'external' => false, // does the module do external auth checking?
+ 'logout' => true, // can the user logout again? (eg. not possible with HTTP auth)
+ );
+ /**
+ * Constructor.
+ *
+ * Carry out sanity checks to ensure the object is
+ * able to operate. Set capabilities in $this->cando
+ * array here
+ *
+ * Set $this->success to false if checks fail
+ *
+ * @author Christopher Smith <chris@jalakai.co.uk>
+ */
+ function __construct() {
+ // the base class constructor does nothing, derived class
+ // constructors do the real work
+ }
- /**
- * Constructor.
- *
- * Carry out sanity checks to ensure the object is
- * able to operate. Set capabilities in $this->cando
- * array here
- *
- * Set $this->success to false if checks fail
- *
- * @author Christopher Smith <chris@jalakai.co.uk>
- */
- function auth_basic() {
- // the base class constructor does nothing, derived class
- // constructors do the real work
- }
+ /**
+ * Capability check. [ DO NOT OVERRIDE ]
+ *
+ * Checks the capabilities set in the $this->cando array and
+ * some pseudo capabilities (shortcutting access to multiple
+ * ones)
+ *
+ * ususal capabilities start with lowercase letter
+ * shortcut capabilities start with uppercase letter
+ *
+ * @author Andreas Gohr <andi@splitbrain.org>
+ * @return bool
+ */
+ function canDo($cap) {
+ switch($cap){
+ case 'Profile':
+ // can at least one of the user's properties be changed?
+ return ( $this->cando['modPass'] ||
+ $this->cando['modName'] ||
+ $this->cando['modMail'] );
+ break;
+ case 'UserMod':
+ // can at least anything be changed?
+ return ( $this->cando['modPass'] ||
+ $this->cando['modName'] ||
+ $this->cando['modMail'] ||
+ $this->cando['modLogin'] ||
+ $this->cando['modGroups'] ||
+ $this->cando['modMail'] );
+ break;
+ default:
+ // print a helping message for developers
+ if(!isset($this->cando[$cap])){
+ msg("Check for unknown capability '$cap' - Do you use an outdated Plugin?",-1);
+ }
+ return $this->cando[$cap];
+ }
+ }
- /**
- * Capability check. [ DO NOT OVERRIDE ]
- *
- * Checks the capabilities set in the $this->cando array and
- * some pseudo capabilities (shortcutting access to multiple
- * ones)
- *
- * ususal capabilities start with lowercase letter
- * shortcut capabilities start with uppercase letter
- *
- * @author Andreas Gohr <andi@splitbrain.org>
- * @return bool
- */
- function canDo($cap) {
- switch($cap){
- case 'Profile':
- // can at least one of the user's properties be changed?
- return ( $this->cando['modPass'] ||
- $this->cando['modName'] ||
- $this->cando['modMail'] );
- break;
- case 'UserMod':
- // can at least anything be changed?
- return ( $this->cando['modPass'] ||
- $this->cando['modName'] ||
- $this->cando['modMail'] ||
- $this->cando['modLogin'] ||
- $this->cando['modGroups'] ||
- $this->cando['modMail'] );
- break;
- default:
- // print a helping message for developers
- if(!isset($this->cando[$cap])){
- msg("Check for unknown capability '$cap' - Do you use an outdated Plugin?",-1);
+ /**
+ * Trigger the AUTH_USERDATA_CHANGE event and call the modification function. [ DO NOT OVERRIDE ]
+ *
+ * You should use this function instead of calling createUser, modifyUser or
+ * deleteUsers directly. The event handlers can prevent the modification, for
+ * example for enforcing a user name schema.
+ *
+ * @author Gabriel Birke <birke@d-scribe.de>
+ * @param string $type Modification type ('create', 'modify', 'delete')
+ * @param array $params Parameters for the createUser, modifyUser or deleteUsers method. The content of this array depends on the modification type
+ * @return mixed Result from the modification function or false if an event handler has canceled the action
+ */
+ function triggerUserMod($type, $params) {
+ $validTypes = array(
+ 'create' => 'createUser',
+ 'modify' => 'modifyUser',
+ 'delete' => 'deleteUsers'
+ );
+ if(empty($validTypes[$type]))
+ return false;
+ $eventdata = array('type' => $type, 'params' => $params, 'modification_result' => null);
+ $evt = new Doku_Event('AUTH_USER_CHANGE', $eventdata);
+ if ($evt->advise_before(true)) {
+ $result = call_user_func_array(array($this, $validTypes[$type]), $params);
+ $evt->data['modification_result'] = $result;
}
- return $this->cando[$cap];
+ $evt->advise_after();
+ unset($evt);
+ return $result;
}
- }
- /**
- * Trigger the AUTH_USERDATA_CHANGE event and call the modification function. [ DO NOT OVERRIDE ]
- *
- * You should use this function instead of calling createUser, modifyUser or
- * deleteUsers directly. The event handlers can prevent the modification, for
- * example for enforcing a user name schema.
- *
- * @author Gabriel Birke <birke@d-scribe.de>
- * @param string $type Modification type ('create', 'modify', 'delete')
- * @param array $params Parameters for the createUser, modifyUser or deleteUsers method. The content of this array depends on the modification type
- * @return mixed Result from the modification function or false if an event handler has canceled the action
- */
- function triggerUserMod($type, $params)
- {
- $validTypes = array(
- 'create' => 'createUser',
- 'modify' => 'modifyUser',
- 'delete' => 'deleteUsers'
- );
- if(empty($validTypes[$type]))
- return false;
- $eventdata = array('type' => $type, 'params' => $params, 'modification_result' => null);
- $evt = new Doku_Event('AUTH_USER_CHANGE', $eventdata);
- if ($evt->advise_before(true)) {
- $result = call_user_func_array(array($this, $validTypes[$type]), $params);
- $evt->data['modification_result'] = $result;
+ /**
+ * Log off the current user [ OPTIONAL ]
+ *
+ * Is run in addition to the ususal logoff method. Should
+ * only be needed when trustExternal is implemented.
+ *
+ * @see auth_logoff()
+ * @author Andreas Gohr <andi@splitbrain.org>
+ */
+ function logOff(){
}
- $evt->advise_after();
- unset($evt);
- return $result;
- }
- /**
- * Log off the current user [ OPTIONAL ]
- *
- * Is run in addition to the ususal logoff method. Should
- * only be needed when trustExternal is implemented.
- *
- * @see auth_logoff()
- * @author Andreas Gohr <andi@splitbrain.org>
- */
- function logOff(){
- }
+ /**
+ * Do all authentication [ OPTIONAL ]
+ *
+ * Set $this->cando['external'] = true when implemented
+ *
+ * If this function is implemented it will be used to
+ * authenticate a user - all other DokuWiki internals
+ * will not be used for authenticating, thus
+ * implementing the checkPass() function is not needed
+ * anymore.
+ *
+ * The function can be used to authenticate against third
+ * party cookies or Apache auth mechanisms and replaces
+ * the auth_login() function
+ *
+ * The function will be called with or without a set
+ * username. If the Username is given it was called
+ * from the login form and the given credentials might
+ * need to be checked. If no username was given it
+ * the function needs to check if the user is logged in
+ * by other means (cookie, environment).
+ *
+ * The function needs to set some globals needed by
+ * DokuWiki like auth_login() does.
+ *
+ * @see auth_login()
+ * @author Andreas Gohr <andi@splitbrain.org>
+ *
+ * @param string $user Username
+ * @param string $pass Cleartext Password
+ * @param bool $sticky Cookie should not expire
+ * @return bool true on successful auth
+ */
+ function trustExternal($user,$pass,$sticky=false){
+ /* some example:
+
+ global $USERINFO;
+ global $conf;
+ $sticky ? $sticky = true : $sticky = false; //sanity check
+
+ // do the checking here
- /**
- * Do all authentication [ OPTIONAL ]
- *
- * Set $this->cando['external'] = true when implemented
- *
- * If this function is implemented it will be used to
- * authenticate a user - all other DokuWiki internals
- * will not be used for authenticating, thus
- * implementing the checkPass() function is not needed
- * anymore.
- *
- * The function can be used to authenticate against third
- * party cookies or Apache auth mechanisms and replaces
- * the auth_login() function
- *
- * The function will be called with or without a set
- * username. If the Username is given it was called
- * from the login form and the given credentials might
- * need to be checked. If no username was given it
- * the function needs to check if the user is logged in
- * by other means (cookie, environment).
- *
- * The function needs to set some globals needed by
- * DokuWiki like auth_login() does.
- *
- * @see auth_login()
- * @author Andreas Gohr <andi@splitbrain.org>
- *
- * @param string $user Username
- * @param string $pass Cleartext Password
- * @param bool $sticky Cookie should not expire
- * @return bool true on successful auth
- */
- function trustExternal($user,$pass,$sticky=false){
-# // some example:
-#
-# global $USERINFO;
-# global $conf;
-# $sticky ? $sticky = true : $sticky = false; //sanity check
-#
-# // do the checking here
-#
-# // set the globals if authed
-# $USERINFO['name'] = 'FIXME';
-# $USERINFO['mail'] = 'FIXME';
-# $USERINFO['grps'] = array('FIXME');
-# $_SERVER['REMOTE_USER'] = $user;
-# $_SESSION[DOKU_COOKIE]['auth']['user'] = $user;
-# $_SESSION[DOKU_COOKIE]['auth']['pass'] = $pass;
-# $_SESSION[DOKU_COOKIE]['auth']['info'] = $USERINFO;
-# return true;
- }
+ // set the globals if authed
+ $USERINFO['name'] = 'FIXME';
+ $USERINFO['mail'] = 'FIXME';
+ $USERINFO['grps'] = array('FIXME');
+ $_SERVER['REMOTE_USER'] = $user;
+ $_SESSION[DOKU_COOKIE]['auth']['user'] = $user;
+ $_SESSION[DOKU_COOKIE]['auth']['pass'] = $pass;
+ $_SESSION[DOKU_COOKIE]['auth']['info'] = $USERINFO;
+ return true;
- /**
- * Check user+password [ MUST BE OVERRIDDEN ]
- *
- * Checks if the given user exists and the given
- * plaintext password is correct
- *
- * May be ommited if trustExternal is used.
- *
- * @author Andreas Gohr <andi@splitbrain.org>
- * @return bool
- */
- function checkPass($user,$pass){
- msg("no valid authorisation system in use", -1);
- return false;
- }
+ */
+ }
+
+ /**
+ * Check user+password [ MUST BE OVERRIDDEN ]
+ *
+ * Checks if the given user exists and the given
+ * plaintext password is correct
+ *
+ * May be ommited if trustExternal is used.
+ *
+ * @author Andreas Gohr <andi@splitbrain.org>
+ * @return bool
+ */
+ function checkPass($user,$pass){
+ msg("no valid authorisation system in use", -1);
+ return false;
+ }
- /**
- * Return user info [ MUST BE OVERRIDDEN ]
- *
- * Returns info about the given user needs to contain
- * at least these fields:
- *
- * name string full name of the user
- * mail string email addres of the user
- * grps array list of groups the user is in
- *
- * @author Andreas Gohr <andi@splitbrain.org>
- * @return array containing user data or false
- */
- function getUserData($user) {
- if(!$this->cando['external']) msg("no valid authorisation system in use", -1);
- return false;
- }
+ /**
+ * Return user info [ MUST BE OVERRIDDEN ]
+ *
+ * Returns info about the given user needs to contain
+ * at least these fields:
+ *
+ * name string full name of the user
+ * mail string email addres of the user
+ * grps array list of groups the user is in
+ *
+ * @author Andreas Gohr <andi@splitbrain.org>
+ * @return array containing user data or false
+ */
+ function getUserData($user) {
+ if(!$this->cando['external']) msg("no valid authorisation system in use", -1);
+ return false;
+ }
- /**
- * Create a new User [implement only where required/possible]
- *
- * Returns false if the user already exists, null when an error
- * occurred and true if everything went well.
- *
- * The new user HAS TO be added to the default group by this
- * function!
- *
- * Set addUser capability when implemented
- *
- * @author Andreas Gohr <andi@splitbrain.org>
- */
- function createUser($user,$pass,$name,$mail,$grps=null){
- msg("authorisation method does not allow creation of new users", -1);
- return null;
- }
+ /**
+ * Create a new User [implement only where required/possible]
+ *
+ * Returns false if the user already exists, null when an error
+ * occurred and true if everything went well.
+ *
+ * The new user HAS TO be added to the default group by this
+ * function!
+ *
+ * Set addUser capability when implemented
+ *
+ * @author Andreas Gohr <andi@splitbrain.org>
+ */
+ function createUser($user,$pass,$name,$mail,$grps=null){
+ msg("authorisation method does not allow creation of new users", -1);
+ return null;
+ }
- /**
- * Modify user data [implement only where required/possible]
- *
- * Set the mod* capabilities according to the implemented features
- *
- * @author Chris Smith <chris@jalakai.co.uk>
- * @param $user nick of the user to be changed
- * @param $changes array of field/value pairs to be changed (password will be clear text)
- * @return bool
- */
- function modifyUser($user, $changes) {
- msg("authorisation method does not allow modifying of user data", -1);
- return false;
- }
+ /**
+ * Modify user data [implement only where required/possible]
+ *
+ * Set the mod* capabilities according to the implemented features
+ *
+ * @author Chris Smith <chris@jalakai.co.uk>
+ * @param $user nick of the user to be changed
+ * @param $changes array of field/value pairs to be changed (password will be clear text)
+ * @return bool
+ */
+ function modifyUser($user, $changes) {
+ msg("authorisation method does not allow modifying of user data", -1);
+ return false;
+ }
- /**
- * Delete one or more users [implement only where required/possible]
- *
- * Set delUser capability when implemented
- *
- * @author Chris Smith <chris@jalakai.co.uk>
- * @param array $users
- * @return int number of users deleted
- */
- function deleteUsers($users) {
- msg("authorisation method does not allow deleting of users", -1);
- return false;
- }
+ /**
+ * Delete one or more users [implement only where required/possible]
+ *
+ * Set delUser capability when implemented
+ *
+ * @author Chris Smith <chris@jalakai.co.uk>
+ * @param array $users
+ * @return int number of users deleted
+ */
+ function deleteUsers($users) {
+ msg("authorisation method does not allow deleting of users", -1);
+ return false;
+ }
- /**
- * Return a count of the number of user which meet $filter criteria
- * [should be implemented whenever retrieveUsers is implemented]
- *
- * Set getUserCount capability when implemented
- *
- * @author Chris Smith <chris@jalakai.co.uk>
- */
- function getUserCount($filter=array()) {
- msg("authorisation method does not provide user counts", -1);
- return 0;
- }
+ /**
+ * Return a count of the number of user which meet $filter criteria
+ * [should be implemented whenever retrieveUsers is implemented]
+ *
+ * Set getUserCount capability when implemented
+ *
+ * @author Chris Smith <chris@jalakai.co.uk>
+ */
+ function getUserCount($filter=array()) {
+ msg("authorisation method does not provide user counts", -1);
+ return 0;
+ }
- /**
- * Bulk retrieval of user data [implement only where required/possible]
- *
- * Set getUsers capability when implemented
- *
- * @author Chris Smith <chris@jalakai.co.uk>
- * @param start index of first user to be returned
- * @param limit max number of users to be returned
- * @param filter array of field/pattern pairs, null for no filter
- * @return array of userinfo (refer getUserData for internal userinfo details)
- */
- function retrieveUsers($start=0,$limit=-1,$filter=null) {
- msg("authorisation method does not support mass retrieval of user data", -1);
- return array();
- }
+ /**
+ * Bulk retrieval of user data [implement only where required/possible]
+ *
+ * Set getUsers capability when implemented
+ *
+ * @author Chris Smith <chris@jalakai.co.uk>
+ * @param start index of first user to be returned
+ * @param limit max number of users to be returned
+ * @param filter array of field/pattern pairs, null for no filter
+ * @return array of userinfo (refer getUserData for internal userinfo details)
+ */
+ function retrieveUsers($start=0,$limit=-1,$filter=null) {
+ msg("authorisation method does not support mass retrieval of user data", -1);
+ return array();
+ }
- /**
- * Define a group [implement only where required/possible]
- *
- * Set addGroup capability when implemented
- *
- * @author Chris Smith <chris@jalakai.co.uk>
- * @return bool
- */
- function addGroup($group) {
- msg("authorisation method does not support independent group creation", -1);
- return false;
- }
+ /**
+ * Define a group [implement only where required/possible]
+ *
+ * Set addGroup capability when implemented
+ *
+ * @author Chris Smith <chris@jalakai.co.uk>
+ * @return bool
+ */
+ function addGroup($group) {
+ msg("authorisation method does not support independent group creation", -1);
+ return false;
+ }
- /**
- * Retrieve groups [implement only where required/possible]
- *
- * Set getGroups capability when implemented
- *
- * @author Chris Smith <chris@jalakai.co.uk>
- * @return array
- */
- function retrieveGroups($start=0,$limit=0) {
- msg("authorisation method does not support group list retrieval", -1);
- return array();
- }
+ /**
+ * Retrieve groups [implement only where required/possible]
+ *
+ * Set getGroups capability when implemented
+ *
+ * @author Chris Smith <chris@jalakai.co.uk>
+ * @return array
+ */
+ function retrieveGroups($start=0,$limit=0) {
+ msg("authorisation method does not support group list retrieval", -1);
+ return array();
+ }
- /**
- * Return case sensitivity of the backend [OPTIONAL]
- *
- * When your backend is caseinsensitive (eg. you can login with USER and
- * user) then you need to overwrite this method and return false
- */
- function isCaseSensitive(){
- return true;
- }
+ /**
+ * Return case sensitivity of the backend [OPTIONAL]
+ *
+ * When your backend is caseinsensitive (eg. you can login with USER and
+ * user) then you need to overwrite this method and return false
+ */
+ function isCaseSensitive(){
+ return true;
+ }
- /**
- * Sanitize a given username [OPTIONAL]
- *
- * This function is applied to any user name that is given to
- * the backend and should also be applied to any user name within
- * the backend before returning it somewhere.
- *
- * This should be used to enforce username restrictions.
- *
- * @author Andreas Gohr <andi@splitbrain.org>
- * @param string $user - username
- * @param string - the cleaned username
- */
- function cleanUser($user){
- return $user;
- }
+ /**
+ * Sanitize a given username [OPTIONAL]
+ *
+ * This function is applied to any user name that is given to
+ * the backend and should also be applied to any user name within
+ * the backend before returning it somewhere.
+ *
+ * This should be used to enforce username restrictions.
+ *
+ * @author Andreas Gohr <andi@splitbrain.org>
+ * @param string $user - username
+ * @param string - the cleaned username
+ */
+ function cleanUser($user){
+ return $user;
+ }
- /**
- * Sanitize a given groupname [OPTIONAL]
- *
- * This function is applied to any groupname that is given to
- * the backend and should also be applied to any groupname within
- * the backend before returning it somewhere.
- *
- * This should be used to enforce groupname restrictions.
- *
- * Groupnames are to be passed without a leading '@' here.
- *
- * @author Andreas Gohr <andi@splitbrain.org>
- * @param string $group - groupname
- * @param string - the cleaned groupname
- */
- function cleanGroup($group){
- return $group;
- }
+ /**
+ * Sanitize a given groupname [OPTIONAL]
+ *
+ * This function is applied to any groupname that is given to
+ * the backend and should also be applied to any groupname within
+ * the backend before returning it somewhere.
+ *
+ * This should be used to enforce groupname restrictions.
+ *
+ * Groupnames are to be passed without a leading '@' here.
+ *
+ * @author Andreas Gohr <andi@splitbrain.org>
+ * @param string $group - groupname
+ * @param string - the cleaned groupname
+ */
+ function cleanGroup($group){
+ return $group;
+ }
- /**
- * Check Session Cache validity [implement only where required/possible]
- *
- * DokuWiki caches user info in the user's session for the timespan defined
- * in $conf['auth_security_timeout'].
- *
- * This makes sure slow authentication backends do not slow down DokuWiki.
- * This also means that changes to the user database will not be reflected
- * on currently logged in users.
- *
- * To accommodate for this, the user manager plugin will touch a reference
- * file whenever a change is submitted. This function compares the filetime
- * of this reference file with the time stored in the session.
- *
- * This reference file mechanism does not reflect changes done directly in
- * the backend's database through other means than the user manager plugin.
- *
- * Fast backends might want to return always false, to force rechecks on
- * each page load. Others might want to use their own checking here. If
- * unsure, do not override.
- *
- * @param string $user - The username
- * @author Andreas Gohr <andi@splitbrain.org>
- * @return bool
- */
- function useSessionCache($user){
- global $conf;
- return ($_SESSION[DOKU_COOKIE]['auth']['time'] >= @filemtime($conf['cachedir'].'/sessionpurge'));
- }
+ /**
+ * Check Session Cache validity [implement only where required/possible]
+ *
+ * DokuWiki caches user info in the user's session for the timespan defined
+ * in $conf['auth_security_timeout'].
+ *
+ * This makes sure slow authentication backends do not slow down DokuWiki.
+ * This also means that changes to the user database will not be reflected
+ * on currently logged in users.
+ *
+ * To accommodate for this, the user manager plugin will touch a reference
+ * file whenever a change is submitted. This function compares the filetime
+ * of this reference file with the time stored in the session.
+ *
+ * This reference file mechanism does not reflect changes done directly in
+ * the backend's database through other means than the user manager plugin.
+ *
+ * Fast backends might want to return always false, to force rechecks on
+ * each page load. Others might want to use their own checking here. If
+ * unsure, do not override.
+ *
+ * @param string $user - The username
+ * @author Andreas Gohr <andi@splitbrain.org>
+ * @return bool
+ */
+ function useSessionCache($user){
+ global $conf;
+ return ($_SESSION[DOKU_COOKIE]['auth']['time'] >= @filemtime($conf['cachedir'].'/sessionpurge'));
+ }
}
//Setup VIM: ex: et ts=2 :
diff --git a/inc/auth/ldap.class.php b/inc/auth/ldap.class.php
index 8eb411995..a6a15ee3d 100644
--- a/inc/auth/ldap.class.php
+++ b/inc/auth/ldap.class.php
@@ -15,7 +15,7 @@ class auth_ldap extends auth_basic {
/**
* Constructor
*/
- function auth_ldap(){
+ function __construct(){
global $conf;
$this->cnf = $conf['auth']['ldap'];
@@ -307,8 +307,6 @@ class auth_ldap extends auth_basic {
}
}
return $result;
-
-
}
/**
@@ -360,7 +358,6 @@ class auth_ldap extends auth_basic {
function _constructPattern($filter) {
$this->_pattern = array();
foreach ($filter as $item => $pattern) {
-// $this->_pattern[$item] = '/'.preg_quote($pattern,"/").'/i'; // don't allow regex characters
$this->_pattern[$item] = '/'.str_replace('/','\/',$pattern).'/i'; // allow regex characters
}
}
diff --git a/inc/auth/mysql.class.php b/inc/auth/mysql.class.php
index 653c725a3..9dcf82a87 100644
--- a/inc/auth/mysql.class.php
+++ b/inc/auth/mysql.class.php
@@ -6,7 +6,7 @@
* @author Andreas Gohr <andi@splitbrain.org>
* @author Chris Smith <chris@jalakai.co.uk>
* @author Matthias Grimm <matthias.grimmm@sourceforge.net>
-*/
+ */
class auth_mysql extends auth_basic {
@@ -25,65 +25,74 @@ class auth_mysql extends auth_basic {
*
* @author Matthias Grimm <matthiasgrimm@users.sourceforge.net>
*/
- function auth_mysql() {
- global $conf;
- $this->cnf = $conf['auth']['mysql'];
-
- if (method_exists($this, 'auth_basic'))
- parent::auth_basic();
-
- if(!function_exists('mysql_connect')) {
- if ($this->cnf['debug'])
- msg("MySQL err: PHP MySQL extension not found.",-1,__LINE__,__FILE__);
- $this->success = false;
- return;
- }
-
- // default to UTF-8, you rarely want something else
- if(!isset($this->cnf['charset'])) $this->cnf['charset'] = 'utf8';
-
- $this->defaultgroup = $conf['defaultgroup'];
-
- // set capabilities based upon config strings set
- if (empty($this->cnf['server']) || empty($this->cnf['user']) ||
- !isset($this->cnf['password']) || empty($this->cnf['database'])){
- if ($this->cnf['debug'])
- msg("MySQL err: insufficient configuration.",-1,__LINE__,__FILE__);
- $this->success = false;
- return;
- }
-
- $this->cando['addUser'] = $this->_chkcnf(array('getUserInfo',
- 'getGroups',
- 'addUser',
- 'getUserID',
- 'getGroupID',
- 'addGroup',
- 'addUserGroup'),true);
- $this->cando['delUser'] = $this->_chkcnf(array('getUserID',
- 'delUser',
- 'delUserRefs'),true);
- $this->cando['modLogin'] = $this->_chkcnf(array('getUserID',
- 'updateUser',
- 'UpdateTarget'),true);
- $this->cando['modPass'] = $this->cando['modLogin'];
- $this->cando['modName'] = $this->cando['modLogin'];
- $this->cando['modMail'] = $this->cando['modLogin'];
- $this->cando['modGroups'] = $this->_chkcnf(array('getUserID',
- 'getGroups',
- 'getGroupID',
- 'addGroup',
- 'addUserGroup',
- 'delGroup',
- 'getGroupID',
- 'delUserGroup'),true);
- /* getGroups is not yet supported
- $this->cando['getGroups'] = $this->_chkcnf(array('getGroups',
- 'getGroupID'),false); */
- $this->cando['getUsers'] = $this->_chkcnf(array('getUsers',
- 'getUserInfo',
- 'getGroups'),false);
- $this->cando['getUserCount'] = $this->_chkcnf(array('getUsers'),false);
+ function __construct() {
+ global $conf;
+ $this->cnf = $conf['auth']['mysql'];
+
+ if (method_exists($this, 'auth_basic')){
+ parent::__construct();
+ }
+
+ if(!function_exists('mysql_connect')) {
+ if ($this->cnf['debug']){
+ msg("MySQL err: PHP MySQL extension not found.",-1,__LINE__,__FILE__);
+ }
+ $this->success = false;
+ return;
+ }
+
+ // default to UTF-8, you rarely want something else
+ if(!isset($this->cnf['charset'])) $this->cnf['charset'] = 'utf8';
+
+ $this->defaultgroup = $conf['defaultgroup'];
+
+ // set capabilities based upon config strings set
+ if (empty($this->cnf['server']) || empty($this->cnf['user']) ||
+ !isset($this->cnf['password']) || empty($this->cnf['database'])){
+
+ if ($this->cnf['debug']){
+ msg("MySQL err: insufficient configuration.",-1,__LINE__,__FILE__);
+ }
+ $this->success = false;
+ return;
+ }
+
+ $this->cando['addUser'] = $this->_chkcnf(array(
+ 'getUserInfo',
+ 'getGroups',
+ 'addUser',
+ 'getUserID',
+ 'getGroupID',
+ 'addGroup',
+ 'addUserGroup'),true);
+ $this->cando['delUser'] = $this->_chkcnf(array(
+ 'getUserID',
+ 'delUser',
+ 'delUserRefs'),true);
+ $this->cando['modLogin'] = $this->_chkcnf(array(
+ 'getUserID',
+ 'updateUser',
+ 'UpdateTarget'),true);
+ $this->cando['modPass'] = $this->cando['modLogin'];
+ $this->cando['modName'] = $this->cando['modLogin'];
+ $this->cando['modMail'] = $this->cando['modLogin'];
+ $this->cando['modGroups'] = $this->_chkcnf(array(
+ 'getUserID',
+ 'getGroups',
+ 'getGroupID',
+ 'addGroup',
+ 'addUserGroup',
+ 'delGroup',
+ 'getGroupID',
+ 'delUserGroup'),true);
+ /* getGroups is not yet supported
+ $this->cando['getGroups'] = $this->_chkcnf(array('getGroups',
+ 'getGroupID'),false); */
+ $this->cando['getUsers'] = $this->_chkcnf(array(
+ 'getUsers',
+ 'getUserInfo',
+ 'getGroups'),false);
+ $this->cando['getUserCount'] = $this->_chkcnf(array('getUsers'),false);
}
/**
@@ -93,17 +102,17 @@ class auth_mysql extends auth_basic {
* @return bool
*/
function _chkcnf($keys, $wop=false){
- foreach ($keys as $key){
- if (empty($this->cnf[$key])) return false;
- }
+ foreach ($keys as $key){
+ if (empty($this->cnf[$key])) return false;
+ }
- /* write operation and lock array filled with tables names? */
- if ($wop && (!is_array($this->cnf['TablesToLock']) ||
- !count($this->cnf['TablesToLock']))){
- return false;
- }
+ /* write operation and lock array filled with tables names? */
+ if ($wop && (!is_array($this->cnf['TablesToLock']) ||
+ !count($this->cnf['TablesToLock']))){
+ return false;
+ }
- return true;
+ return true;
}
/**
@@ -122,23 +131,23 @@ class auth_mysql extends auth_basic {
* @author Matthias Grimm <matthiasgrimm@users.sourceforge.net>
*/
function checkPass($user,$pass){
- $rc = false;
-
- if($this->_openDB()) {
- $sql = str_replace('%{user}',$this->_escape($user),$this->cnf['checkPass']);
- $sql = str_replace('%{pass}',$this->_escape($pass),$sql);
- $sql = str_replace('%{dgroup}',$this->_escape($this->defaultgroup),$sql);
- $result = $this->_queryDB($sql);
-
- if($result !== false && count($result) == 1) {
- if($this->cnf['forwardClearPass'] == 1)
- $rc = true;
- else
- $rc = auth_verifyPassword($pass,$result[0]['pass']);
+ $rc = false;
+
+ if($this->_openDB()) {
+ $sql = str_replace('%{user}',$this->_escape($user),$this->cnf['checkPass']);
+ $sql = str_replace('%{pass}',$this->_escape($pass),$sql);
+ $sql = str_replace('%{dgroup}',$this->_escape($this->defaultgroup),$sql);
+ $result = $this->_queryDB($sql);
+
+ if($result !== false && count($result) == 1) {
+ if($this->cnf['forwardClearPass'] == 1)
+ $rc = true;
+ else
+ $rc = auth_verifyPassword($pass,$result[0]['pass']);
+ }
+ $this->_closeDB();
}
- $this->_closeDB();
- }
- return $rc;
+ return $rc;
}
/**
@@ -156,14 +165,14 @@ class auth_mysql extends auth_basic {
* @author Matthias Grimm <matthiasgrimm@users.sourceforge.net>
*/
function getUserData($user){
- if($this->_openDB()) {
- $this->_lockTables("READ");
- $info = $this->_getUserInfo($user);
- $this->_unlockTables();
- $this->_closeDB();
- } else
- $info = false;
- return $info;
+ if($this->_openDB()) {
+ $this->_lockTables("READ");
+ $info = $this->_getUserInfo($user);
+ $this->_unlockTables();
+ $this->_closeDB();
+ } else
+ $info = false;
+ return $info;
}
/**
@@ -186,22 +195,22 @@ class auth_mysql extends auth_basic {
* @author Matthias Grimm <matthiasgrimm@users.sourceforge.net>
*/
function createUser($user,$pwd,$name,$mail,$grps=null){
- if($this->_openDB()) {
- if (($info = $this->_getUserInfo($user)) !== false)
- return false; // user already exists
-
- // set defaultgroup if no groups were given
- if ($grps == null)
- $grps = array($this->defaultgroup);
-
- $this->_lockTables("WRITE");
- $pwd = $this->cnf['forwardClearPass'] ? $pwd : auth_cryptPassword($pwd);
- $rc = $this->_addUser($user,$pwd,$name,$mail,$grps);
- $this->_unlockTables();
- $this->_closeDB();
- if ($rc) return true;
- }
- return null; // return error
+ if($this->_openDB()) {
+ if (($info = $this->_getUserInfo($user)) !== false)
+ return false; // user already exists
+
+ // set defaultgroup if no groups were given
+ if ($grps == null)
+ $grps = array($this->defaultgroup);
+
+ $this->_lockTables("WRITE");
+ $pwd = $this->cnf['forwardClearPass'] ? $pwd : auth_cryptPassword($pwd);
+ $rc = $this->_addUser($user,$pwd,$name,$mail,$grps);
+ $this->_unlockTables();
+ $this->_closeDB();
+ if ($rc) return true;
+ }
+ return null; // return error
}
/**
@@ -233,36 +242,36 @@ class auth_mysql extends auth_basic {
* @author Matthias Grimm <matthiasgrimm@users.sourceforge.net>
*/
function modifyUser($user, $changes) {
- $rc = false;
+ $rc = false;
- if (!is_array($changes) || !count($changes))
- return true; // nothing to change
+ if (!is_array($changes) || !count($changes))
+ return true; // nothing to change
- if($this->_openDB()) {
- $this->_lockTables("WRITE");
+ if($this->_openDB()) {
+ $this->_lockTables("WRITE");
- if (($uid = $this->_getUserID($user))) {
- $rc = $this->_updateUserInfo($changes, $uid);
+ if (($uid = $this->_getUserID($user))) {
+ $rc = $this->_updateUserInfo($changes, $uid);
- if ($rc && isset($changes['grps']) && $this->cando['modGroups']) {
- $groups = $this->_getGroups($user);
- $grpadd = array_diff($changes['grps'], $groups);
- $grpdel = array_diff($groups, $changes['grps']);
+ if ($rc && isset($changes['grps']) && $this->cando['modGroups']) {
+ $groups = $this->_getGroups($user);
+ $grpadd = array_diff($changes['grps'], $groups);
+ $grpdel = array_diff($groups, $changes['grps']);
- foreach($grpadd as $group)
- if (($this->_addUserToGroup($user, $group, 1)) == false)
- $rc = false;
+ foreach($grpadd as $group)
+ if (($this->_addUserToGroup($user, $group, 1)) == false)
+ $rc = false;
- foreach($grpdel as $group)
- if (($this->_delUserFromGroup($user, $group)) == false)
- $rc = false;
- }
- }
+ foreach($grpdel as $group)
+ if (($this->_delUserFromGroup($user, $group)) == false)
+ $rc = false;
+ }
+ }
- $this->_unlockTables();
- $this->_closeDB();
- }
- return $rc;
+ $this->_unlockTables();
+ $this->_closeDB();
+ }
+ return $rc;
}
/**
@@ -277,20 +286,20 @@ class auth_mysql extends auth_basic {
* @author Matthias Grimm <matthiasgrimm@users.sourceforge.net>
*/
function deleteUsers($users) {
- $count = 0;
-
- if($this->_openDB()) {
- if (is_array($users) && count($users)) {
- $this->_lockTables("WRITE");
- foreach ($users as $user) {
- if ($this->_delUser($user))
- $count++;
- }
- $this->_unlockTables();
- }
- $this->_closeDB();
- }
- return $count;
+ $count = 0;
+
+ if($this->_openDB()) {
+ if (is_array($users) && count($users)) {
+ $this->_lockTables("WRITE");
+ foreach ($users as $user) {
+ if ($this->_delUser($user))
+ $count++;
+ }
+ $this->_unlockTables();
+ }
+ $this->_closeDB();
+ }
+ return $count;
}
/**
@@ -304,23 +313,23 @@ class auth_mysql extends auth_basic {
* @author Matthias Grimm <matthiasgrimm@users.sourceforge.net>
*/
function getUserCount($filter=array()) {
- $rc = 0;
-
- if($this->_openDB()) {
- $sql = $this->_createSQLFilter($this->cnf['getUsers'], $filter);
-
- if ($this->dbver >= 4) {
- $sql = substr($sql, 6); /* remove 'SELECT' or 'select' */
- $sql = "SELECT SQL_CALC_FOUND_ROWS".$sql." LIMIT 1";
- $this->_queryDB($sql);
- $result = $this->_queryDB("SELECT FOUND_ROWS()");
- $rc = $result[0]['FOUND_ROWS()'];
- } else if (($result = $this->_queryDB($sql)))
- $rc = count($result);
-
- $this->_closeDB();
- }
- return $rc;
+ $rc = 0;
+
+ if($this->_openDB()) {
+ $sql = $this->_createSQLFilter($this->cnf['getUsers'], $filter);
+
+ if ($this->dbver >= 4) {
+ $sql = substr($sql, 6); /* remove 'SELECT' or 'select' */
+ $sql = "SELECT SQL_CALC_FOUND_ROWS".$sql." LIMIT 1";
+ $this->_queryDB($sql);
+ $result = $this->_queryDB("SELECT FOUND_ROWS()");
+ $rc = $result[0]['FOUND_ROWS()'];
+ } else if (($result = $this->_queryDB($sql)))
+ $rc = count($result);
+
+ $this->_closeDB();
+ }
+ return $rc;
}
/**
@@ -334,24 +343,24 @@ class auth_mysql extends auth_basic {
* @author Matthias Grimm <matthiasgrimm@users.sourceforge.net>
*/
function retrieveUsers($first=0,$limit=10,$filter=array()) {
- $out = array();
-
- if($this->_openDB()) {
- $this->_lockTables("READ");
- $sql = $this->_createSQLFilter($this->cnf['getUsers'], $filter);
- $sql .= " ".$this->cnf['SortOrder']." LIMIT $first, $limit";
- $result = $this->_queryDB($sql);
+ $out = array();
+
+ if($this->_openDB()) {
+ $this->_lockTables("READ");
+ $sql = $this->_createSQLFilter($this->cnf['getUsers'], $filter);
+ $sql .= " ".$this->cnf['SortOrder']." LIMIT $first, $limit";
+ $result = $this->_queryDB($sql);
+
+ if (!empty($result)) {
+ foreach ($result as $user)
+ if (($info = $this->_getUserInfo($user['user'])))
+ $out[$user['user']] = $info;
+ }
- if (!empty($result)) {
- foreach ($result as $user)
- if (($info = $this->_getUserInfo($user['user'])))
- $out[$user['user']] = $info;
+ $this->_unlockTables();
+ $this->_closeDB();
}
-
- $this->_unlockTables();
- $this->_closeDB();
- }
- return $out;
+ return $out;
}
/**
@@ -364,15 +373,15 @@ class auth_mysql extends auth_basic {
* @author Matthias Grimm <matthiasgrimm@users.sourceforge.net>
*/
function joinGroup($user, $group) {
- $rc = false;
-
- if ($this->_openDB()) {
- $this->_lockTables("WRITE");
- $rc = $this->_addUserToGroup($user, $group);
- $this->_unlockTables();
- $this->_closeDB();
- }
- return $rc;
+ $rc = false;
+
+ if ($this->_openDB()) {
+ $this->_lockTables("WRITE");
+ $rc = $this->_addUserToGroup($user, $group);
+ $this->_unlockTables();
+ $this->_closeDB();
+ }
+ return $rc;
}
/**
@@ -385,16 +394,16 @@ class auth_mysql extends auth_basic {
* @author Matthias Grimm <matthiasgrimm@users.sourceforge.net>
*/
function leaveGroup($user, $group) {
- $rc = false;
-
- if ($this->_openDB()) {
- $this->_lockTables("WRITE");
- $uid = $this->_getUserID($user);
- $rc = $this->_delUserFromGroup($user, $group);
- $this->_unlockTables();
- $this->_closeDB();
- }
- return $rc;
+ $rc = false;
+
+ if ($this->_openDB()) {
+ $this->_lockTables("WRITE");
+ $uid = $this->_getUserID($user);
+ $rc = $this->_delUserFromGroup($user, $group);
+ $this->_unlockTables();
+ $this->_closeDB();
+ }
+ return $rc;
}
/**
@@ -422,36 +431,36 @@ class auth_mysql extends auth_basic {
* @author Matthias Grimm <matthiasgrimm@users.sourceforge.net>
*/
function _addUserToGroup($user, $group, $force=0) {
- $newgroup = 0;
-
- if (($this->dbcon) && ($user)) {
- $gid = $this->_getGroupID($group);
- if (!$gid) {
- if ($force) { // create missing groups
- $sql = str_replace('%{group}',$this->_escape($group),$this->cnf['addGroup']);
- $gid = $this->_modifyDB($sql);
- $newgroup = 1; // group newly created
- }
- if (!$gid) return false; // group didn't exist and can't be created
- }
-
- $sql = $this->cnf['addUserGroup'];
- if(strpos($sql,'%{uid}') !== false){
- $uid = $this->_getUserID($user);
- $sql = str_replace('%{uid}', $this->_escape($uid),$sql);
- }
- $sql = str_replace('%{user}', $this->_escape($user),$sql);
- $sql = str_replace('%{gid}', $this->_escape($gid),$sql);
- $sql = str_replace('%{group}',$this->_escape($group),$sql);
- if ($this->_modifyDB($sql) !== false) return true;
+ $newgroup = 0;
+
+ if (($this->dbcon) && ($user)) {
+ $gid = $this->_getGroupID($group);
+ if (!$gid) {
+ if ($force) { // create missing groups
+ $sql = str_replace('%{group}',$this->_escape($group),$this->cnf['addGroup']);
+ $gid = $this->_modifyDB($sql);
+ $newgroup = 1; // group newly created
+ }
+ if (!$gid) return false; // group didn't exist and can't be created
+ }
- if ($newgroup) { // remove previously created group on error
- $sql = str_replace('%{gid}', $this->_escape($gid),$this->cnf['delGroup']);
- $sql = str_replace('%{group}',$this->_escape($group),$sql);
- $this->_modifyDB($sql);
+ $sql = $this->cnf['addUserGroup'];
+ if(strpos($sql,'%{uid}') !== false){
+ $uid = $this->_getUserID($user);
+ $sql = str_replace('%{uid}', $this->_escape($uid),$sql);
+ }
+ $sql = str_replace('%{user}', $this->_escape($user),$sql);
+ $sql = str_replace('%{gid}', $this->_escape($gid),$sql);
+ $sql = str_replace('%{group}',$this->_escape($group),$sql);
+ if ($this->_modifyDB($sql) !== false) return true;
+
+ if ($newgroup) { // remove previously created group on error
+ $sql = str_replace('%{gid}', $this->_escape($gid),$this->cnf['delGroup']);
+ $sql = str_replace('%{group}',$this->_escape($group),$sql);
+ $this->_modifyDB($sql);
+ }
}
- }
- return false;
+ return false;
}
/**
@@ -464,24 +473,23 @@ class auth_mysql extends auth_basic {
* @author Matthias Grimm <matthiasgrimm@users.sourceforge.net>
*/
function _delUserFromGroup($user, $group) {
- $rc = false;
+ $rc = false;
-
- if (($this->dbcon) && ($user)) {
- $sql = $this->cnf['delUserGroup'];
- if(strpos($sql,'%{uid}') !== false){
- $uid = $this->_getUserID($user);
- $sql = str_replace('%{uid}', $this->_escape($uid),$sql);
- }
- $gid = $this->_getGroupID($group);
- if ($gid) {
- $sql = str_replace('%{user}', $this->_escape($user),$sql);
- $sql = str_replace('%{gid}', $this->_escape($gid),$sql);
- $sql = str_replace('%{group}',$this->_escape($group),$sql);
- $rc = $this->_modifyDB($sql) == 0 ? true : false;
+ if (($this->dbcon) && ($user)) {
+ $sql = $this->cnf['delUserGroup'];
+ if(strpos($sql,'%{uid}') !== false){
+ $uid = $this->_getUserID($user);
+ $sql = str_replace('%{uid}', $this->_escape($uid),$sql);
+ }
+ $gid = $this->_getGroupID($group);
+ if ($gid) {
+ $sql = str_replace('%{user}', $this->_escape($user),$sql);
+ $sql = str_replace('%{gid}', $this->_escape($gid),$sql);
+ $sql = str_replace('%{group}',$this->_escape($group),$sql);
+ $rc = $this->_modifyDB($sql) == 0 ? true : false;
+ }
}
- }
- return $rc;
+ return $rc;
}
/**
@@ -498,19 +506,19 @@ class auth_mysql extends auth_basic {
* @author Matthias Grimm <matthiasgrimm@users.sourceforge.net>
*/
function _getGroups($user) {
- $groups = array();
+ $groups = array();
- if($this->dbcon) {
- $sql = str_replace('%{user}',$this->_escape($user),$this->cnf['getGroups']);
- $result = $this->_queryDB($sql);
+ if($this->dbcon) {
+ $sql = str_replace('%{user}',$this->_escape($user),$this->cnf['getGroups']);
+ $result = $this->_queryDB($sql);
- if($result !== false && count($result)) {
- foreach($result as $row)
- $groups[] = $row['group'];
+ if($result !== false && count($result)) {
+ foreach($result as $row)
+ $groups[] = $row['group'];
+ }
+ return $groups;
}
- return $groups;
- }
- return false;
+ return false;
}
/**
@@ -526,12 +534,12 @@ class auth_mysql extends auth_basic {
* @author Matthias Grimm <matthiasgrimm@users.sourceforge.net>
*/
function _getUserID($user) {
- if($this->dbcon) {
- $sql = str_replace('%{user}',$this->_escape($user),$this->cnf['getUserID']);
- $result = $this->_queryDB($sql);
- return $result === false ? false : $result[0]['id'];
- }
- return false;
+ if($this->dbcon) {
+ $sql = str_replace('%{user}',$this->_escape($user),$this->cnf['getUserID']);
+ $result = $this->_queryDB($sql);
+ return $result === false ? false : $result[0]['id'];
+ }
+ return false;
}
/**
@@ -553,33 +561,33 @@ class auth_mysql extends auth_basic {
* @author Matthias Grimm <matthiasgrimm@users.sourceforge.net>
*/
function _addUser($user,$pwd,$name,$mail,$grps){
- if($this->dbcon && is_array($grps)) {
- $sql = str_replace('%{user}', $this->_escape($user),$this->cnf['addUser']);
- $sql = str_replace('%{pass}', $this->_escape($pwd),$sql);
- $sql = str_replace('%{name}', $this->_escape($name),$sql);
- $sql = str_replace('%{email}',$this->_escape($mail),$sql);
- $uid = $this->_modifyDB($sql);
-
- if ($uid) {
- foreach($grps as $group) {
- $gid = $this->_addUserToGroup($user, $group, 1);
- if ($gid === false) break;
- }
-
- if ($gid) return true;
- else {
- /* remove the new user and all group relations if a group can't
- * be assigned. Newly created groups will remain in the database
- * and won't be removed. This might create orphaned groups but
- * is not a big issue so we ignore this problem here.
- */
- $this->_delUser($user);
- if ($this->cnf['debug'])
- msg ("MySQL err: Adding user '$user' to group '$group' failed.",-1,__LINE__,__FILE__);
- }
+ if($this->dbcon && is_array($grps)) {
+ $sql = str_replace('%{user}', $this->_escape($user),$this->cnf['addUser']);
+ $sql = str_replace('%{pass}', $this->_escape($pwd),$sql);
+ $sql = str_replace('%{name}', $this->_escape($name),$sql);
+ $sql = str_replace('%{email}',$this->_escape($mail),$sql);
+ $uid = $this->_modifyDB($sql);
+
+ if ($uid) {
+ foreach($grps as $group) {
+ $gid = $this->_addUserToGroup($user, $group, 1);
+ if ($gid === false) break;
+ }
+
+ if ($gid) return true;
+ else {
+ /* remove the new user and all group relations if a group can't
+ * be assigned. Newly created groups will remain in the database
+ * and won't be removed. This might create orphaned groups but
+ * is not a big issue so we ignore this problem here.
+ */
+ $this->_delUser($user);
+ if ($this->cnf['debug'])
+ msg ("MySQL err: Adding user '$user' to group '$group' failed.",-1,__LINE__,__FILE__);
+ }
+ }
}
- }
- return false;
+ return false;
}
/**
@@ -595,18 +603,18 @@ class auth_mysql extends auth_basic {
* @author Matthias Grimm <matthiasgrimm@users.sourceforge.net>
*/
function _delUser($user) {
- if($this->dbcon) {
- $uid = $this->_getUserID($user);
- if ($uid) {
- $sql = str_replace('%{uid}',$this->_escape($uid),$this->cnf['delUserRefs']);
- $this->_modifyDB($sql);
- $sql = str_replace('%{uid}',$this->_escape($uid),$this->cnf['delUser']);
- $sql = str_replace('%{user}', $this->_escape($user),$sql);
- $this->_modifyDB($sql);
- return true;
- }
- }
- return false;
+ if($this->dbcon) {
+ $uid = $this->_getUserID($user);
+ if ($uid) {
+ $sql = str_replace('%{uid}',$this->_escape($uid),$this->cnf['delUserRefs']);
+ $this->_modifyDB($sql);
+ $sql = str_replace('%{uid}',$this->_escape($uid),$this->cnf['delUser']);
+ $sql = str_replace('%{user}', $this->_escape($user),$sql);
+ $this->_modifyDB($sql);
+ return true;
+ }
+ }
+ return false;
}
/**
@@ -623,14 +631,14 @@ class auth_mysql extends auth_basic {
* @author Matthias Grimm <matthiasgrimm@users.sourceforge.net>
*/
function _getUserInfo($user){
- $sql = str_replace('%{user}',$this->_escape($user),$this->cnf['getUserInfo']);
- $result = $this->_queryDB($sql);
- if($result !== false && count($result)) {
- $info = $result[0];
- $info['grps'] = $this->_getGroups($user);
- return $info;
- }
- return false;
+ $sql = str_replace('%{user}',$this->_escape($user),$this->cnf['getUserInfo']);
+ $result = $this->_queryDB($sql);
+ if($result !== false && count($result)) {
+ $info = $result[0];
+ $info['grps'] = $this->_getGroups($user);
+ return $info;
+ }
+ return false;
}
/**
@@ -653,43 +661,43 @@ class auth_mysql extends auth_basic {
* @author Matthias Grimm <matthiasgrimm@users.sourceforge.net>
*/
function _updateUserInfo($changes, $uid) {
- $sql = $this->cnf['updateUser']." ";
- $cnt = 0;
- $err = 0;
-
- if($this->dbcon) {
- foreach ($changes as $item => $value) {
- if ($item == 'user') {
- if (($this->_getUserID($changes['user']))) {
- $err = 1; /* new username already exists */
- break; /* abort update */
+ $sql = $this->cnf['updateUser']." ";
+ $cnt = 0;
+ $err = 0;
+
+ if($this->dbcon) {
+ foreach ($changes as $item => $value) {
+ if ($item == 'user') {
+ if (($this->_getUserID($changes['user']))) {
+ $err = 1; /* new username already exists */
+ break; /* abort update */
+ }
+ if ($cnt++ > 0) $sql .= ", ";
+ $sql .= str_replace('%{user}',$value,$this->cnf['UpdateLogin']);
+ } else if ($item == 'name') {
+ if ($cnt++ > 0) $sql .= ", ";
+ $sql .= str_replace('%{name}',$value,$this->cnf['UpdateName']);
+ } else if ($item == 'pass') {
+ if (!$this->cnf['forwardClearPass'])
+ $value = auth_cryptPassword($value);
+ if ($cnt++ > 0) $sql .= ", ";
+ $sql .= str_replace('%{pass}',$value,$this->cnf['UpdatePass']);
+ } else if ($item == 'mail') {
+ if ($cnt++ > 0) $sql .= ", ";
+ $sql .= str_replace('%{email}',$value,$this->cnf['UpdateEmail']);
+ }
}
- if ($cnt++ > 0) $sql .= ", ";
- $sql .= str_replace('%{user}',$value,$this->cnf['UpdateLogin']);
- } else if ($item == 'name') {
- if ($cnt++ > 0) $sql .= ", ";
- $sql .= str_replace('%{name}',$value,$this->cnf['UpdateName']);
- } else if ($item == 'pass') {
- if (!$this->cnf['forwardClearPass'])
- $value = auth_cryptPassword($value);
- if ($cnt++ > 0) $sql .= ", ";
- $sql .= str_replace('%{pass}',$value,$this->cnf['UpdatePass']);
- } else if ($item == 'mail') {
- if ($cnt++ > 0) $sql .= ", ";
- $sql .= str_replace('%{email}',$value,$this->cnf['UpdateEmail']);
- }
- }
-
- if ($err == 0) {
- if ($cnt > 0) {
- $sql .= " ".str_replace('%{uid}', $uid, $this->cnf['UpdateTarget']);
- if(get_class($this) == 'auth_mysql') $sql .= " LIMIT 1"; //some PgSQL inheritance comp.
- $this->_modifyDB($sql);
- }
- return true;
- }
- }
- return false;
+
+ if ($err == 0) {
+ if ($cnt > 0) {
+ $sql .= " ".str_replace('%{uid}', $uid, $this->cnf['UpdateTarget']);
+ if(get_class($this) == 'auth_mysql') $sql .= " LIMIT 1"; //some PgSQL inheritance comp.
+ $this->_modifyDB($sql);
+ }
+ return true;
+ }
+ }
+ return false;
}
/**
@@ -705,12 +713,12 @@ class auth_mysql extends auth_basic {
* @author Matthias Grimm <matthiasgrimm@users.sourceforge.net>
*/
function _getGroupID($group) {
- if($this->dbcon) {
- $sql = str_replace('%{group}',$this->_escape($group),$this->cnf['getGroupID']);
- $result = $this->_queryDB($sql);
- return $result === false ? false : $result[0]['id'];
- }
- return false;
+ if($this->dbcon) {
+ $sql = str_replace('%{group}',$this->_escape($group),$this->cnf['getGroupID']);
+ $result = $this->_queryDB($sql);
+ return $result === false ? false : $result[0]['id'];
+ }
+ return false;
}
/**
@@ -723,32 +731,32 @@ class auth_mysql extends auth_basic {
* @author Matthias Grimm <matthiasgrimm@users.sourceforge.net>
*/
function _openDB() {
- if (!$this->dbcon) {
- $con = @mysql_connect ($this->cnf['server'], $this->cnf['user'], $this->cnf['password']);
- if ($con) {
- if ((mysql_select_db($this->cnf['database'], $con))) {
- if ((preg_match("/^(\d+)\.(\d+)\.(\d+).*/", mysql_get_server_info ($con), $result)) == 1) {
- $this->dbver = $result[1];
- $this->dbrev = $result[2];
- $this->dbsub = $result[3];
- }
- $this->dbcon = $con;
- if(!empty($this->cnf['charset'])){
- mysql_query('SET CHARACTER SET "' . $this->cnf['charset'] . '"', $con);
- }
- return true; // connection and database successfully opened
- } else {
- mysql_close ($con);
- if ($this->cnf['debug'])
- msg("MySQL err: No access to database {$this->cnf['database']}.",-1,__LINE__,__FILE__);
- }
- } else if ($this->cnf['debug'])
- msg ("MySQL err: Connection to {$this->cnf['user']}@{$this->cnf['server']} not possible.",
- -1,__LINE__,__FILE__);
-
- return false; // connection failed
- }
- return true; // connection already open
+ if (!$this->dbcon) {
+ $con = @mysql_connect ($this->cnf['server'], $this->cnf['user'], $this->cnf['password']);
+ if ($con) {
+ if ((mysql_select_db($this->cnf['database'], $con))) {
+ if ((preg_match("/^(\d+)\.(\d+)\.(\d+).*/", mysql_get_server_info ($con), $result)) == 1) {
+ $this->dbver = $result[1];
+ $this->dbrev = $result[2];
+ $this->dbsub = $result[3];
+ }
+ $this->dbcon = $con;
+ if(!empty($this->cnf['charset'])){
+ mysql_query('SET CHARACTER SET "' . $this->cnf['charset'] . '"', $con);
+ }
+ return true; // connection and database successfully opened
+ } else {
+ mysql_close ($con);
+ if ($this->cnf['debug'])
+ msg("MySQL err: No access to database {$this->cnf['database']}.",-1,__LINE__,__FILE__);
+ }
+ } else if ($this->cnf['debug'])
+ msg ("MySQL err: Connection to {$this->cnf['user']}@{$this->cnf['server']} not possible.",
+ -1,__LINE__,__FILE__);
+
+ return false; // connection failed
+ }
+ return true; // connection already open
}
/**
@@ -757,10 +765,10 @@ class auth_mysql extends auth_basic {
* @author Matthias Grimm <matthiasgrimm@users.sourceforge.net>
*/
function _closeDB() {
- if ($this->dbcon) {
- mysql_close ($this->dbcon);
- $this->dbcon = 0;
- }
+ if ($this->dbcon) {
+ mysql_close ($this->dbcon);
+ $this->dbcon = 0;
+ }
}
/**
@@ -776,23 +784,23 @@ class auth_mysql extends auth_basic {
* @author Matthias Grimm <matthiasgrimm@users.sourceforge.net>
*/
function _queryDB($query) {
- if($this->cnf['debug'] >= 2){
- msg('MySQL query: '.hsc($query),0,__LINE__,__FILE__);
- }
-
- $resultarray = array();
- if ($this->dbcon) {
- $result = @mysql_query($query,$this->dbcon);
- if ($result) {
- while (($t = mysql_fetch_assoc($result)) !== false)
- $resultarray[]=$t;
- mysql_free_result ($result);
- return $resultarray;
- }
- if ($this->cnf['debug'])
- msg('MySQL err: '.mysql_error($this->dbcon),-1,__LINE__,__FILE__);
- }
- return false;
+ if($this->cnf['debug'] >= 2){
+ msg('MySQL query: '.hsc($query),0,__LINE__,__FILE__);
+ }
+
+ $resultarray = array();
+ if ($this->dbcon) {
+ $result = @mysql_query($query,$this->dbcon);
+ if ($result) {
+ while (($t = mysql_fetch_assoc($result)) !== false)
+ $resultarray[]=$t;
+ mysql_free_result ($result);
+ return $resultarray;
+ }
+ if ($this->cnf['debug'])
+ msg('MySQL err: '.mysql_error($this->dbcon),-1,__LINE__,__FILE__);
+ }
+ return false;
}
/**
@@ -807,16 +815,16 @@ class auth_mysql extends auth_basic {
* @author Matthias Grimm <matthiasgrimm@users.sourceforge.net>
*/
function _modifyDB($query) {
- if ($this->dbcon) {
- $result = @mysql_query($query,$this->dbcon);
- if ($result) {
- $rc = mysql_insert_id($this->dbcon); //give back ID on insert
- if ($rc !== false) return $rc;
- }
- if ($this->cnf['debug'])
- msg('MySQL err: '.mysql_error($this->dbcon),-1,__LINE__,__FILE__);
- }
- return false;
+ if ($this->dbcon) {
+ $result = @mysql_query($query,$this->dbcon);
+ if ($result) {
+ $rc = mysql_insert_id($this->dbcon); //give back ID on insert
+ if ($rc !== false) return $rc;
+ }
+ if ($this->cnf['debug'])
+ msg('MySQL err: '.mysql_error($this->dbcon),-1,__LINE__,__FILE__);
+ }
+ return false;
}
/**
@@ -838,21 +846,21 @@ class auth_mysql extends auth_basic {
* @author Matthias Grimm <matthiasgrimm@users.sourceforge.net>
*/
function _lockTables($mode) {
- if ($this->dbcon) {
- if (is_array($this->cnf['TablesToLock']) && !empty($this->cnf['TablesToLock'])) {
- if ($mode == "READ" || $mode == "WRITE") {
- $sql = "LOCK TABLES ";
- $cnt = 0;
- foreach ($this->cnf['TablesToLock'] as $table) {
- if ($cnt++ != 0) $sql .= ", ";
- $sql .= "$table $mode";
+ if ($this->dbcon) {
+ if (is_array($this->cnf['TablesToLock']) && !empty($this->cnf['TablesToLock'])) {
+ if ($mode == "READ" || $mode == "WRITE") {
+ $sql = "LOCK TABLES ";
+ $cnt = 0;
+ foreach ($this->cnf['TablesToLock'] as $table) {
+ if ($cnt++ != 0) $sql .= ", ";
+ $sql .= "$table $mode";
+ }
+ $this->_modifyDB($sql);
+ return true;
+ }
}
- $this->_modifyDB($sql);
- return true;
- }
}
- }
- return false;
+ return false;
}
/**
@@ -862,11 +870,11 @@ class auth_mysql extends auth_basic {
* @author Matthias Grimm <matthiasgrimm@users.sourceforge.net>
*/
function _unlockTables() {
- if ($this->dbcon) {
- $this->_modifyDB("UNLOCK TABLES");
- return true;
- }
- return false;
+ if ($this->dbcon) {
+ $this->_modifyDB("UNLOCK TABLES");
+ return true;
+ }
+ return false;
}
/**
@@ -882,38 +890,38 @@ class auth_mysql extends auth_basic {
* @author Matthias Grimm <matthiasgrimm@users.sourceforge.net>
*/
function _createSQLFilter($sql, $filter) {
- $SQLfilter = "";
- $cnt = 0;
-
- if ($this->dbcon) {
- foreach ($filter as $item => $pattern) {
- $tmp = '%'.$this->_escape($pattern).'%';
- if ($item == 'user') {
- if ($cnt++ > 0) $SQLfilter .= " AND ";
- $SQLfilter .= str_replace('%{user}',$tmp,$this->cnf['FilterLogin']);
- } else if ($item == 'name') {
- if ($cnt++ > 0) $SQLfilter .= " AND ";
- $SQLfilter .= str_replace('%{name}',$tmp,$this->cnf['FilterName']);
- } else if ($item == 'mail') {
- if ($cnt++ > 0) $SQLfilter .= " AND ";
- $SQLfilter .= str_replace('%{email}',$tmp,$this->cnf['FilterEmail']);
- } else if ($item == 'grps') {
- if ($cnt++ > 0) $SQLfilter .= " AND ";
- $SQLfilter .= str_replace('%{group}',$tmp,$this->cnf['FilterGroup']);
- }
- }
-
- // we have to check SQLfilter here and must not use $cnt because if
- // any of cnf['Filter????'] is not defined, a malformed SQL string
- // would be generated.
-
- if (strlen($SQLfilter)) {
- $glue = strpos(strtolower($sql),"where") ? " AND " : " WHERE ";
- $sql = $sql.$glue.$SQLfilter;
- }
- }
-
- return $sql;
+ $SQLfilter = "";
+ $cnt = 0;
+
+ if ($this->dbcon) {
+ foreach ($filter as $item => $pattern) {
+ $tmp = '%'.$this->_escape($pattern).'%';
+ if ($item == 'user') {
+ if ($cnt++ > 0) $SQLfilter .= " AND ";
+ $SQLfilter .= str_replace('%{user}',$tmp,$this->cnf['FilterLogin']);
+ } else if ($item == 'name') {
+ if ($cnt++ > 0) $SQLfilter .= " AND ";
+ $SQLfilter .= str_replace('%{name}',$tmp,$this->cnf['FilterName']);
+ } else if ($item == 'mail') {
+ if ($cnt++ > 0) $SQLfilter .= " AND ";
+ $SQLfilter .= str_replace('%{email}',$tmp,$this->cnf['FilterEmail']);
+ } else if ($item == 'grps') {
+ if ($cnt++ > 0) $SQLfilter .= " AND ";
+ $SQLfilter .= str_replace('%{group}',$tmp,$this->cnf['FilterGroup']);
+ }
+ }
+
+ // we have to check SQLfilter here and must not use $cnt because if
+ // any of cnf['Filter????'] is not defined, a malformed SQL string
+ // would be generated.
+
+ if (strlen($SQLfilter)) {
+ $glue = strpos(strtolower($sql),"where") ? " AND " : " WHERE ";
+ $sql = $sql.$glue.$SQLfilter;
+ }
+ }
+
+ return $sql;
}
/**
@@ -924,15 +932,15 @@ class auth_mysql extends auth_basic {
* @param boolean $like Escape wildcard chars as well?
*/
function _escape($string,$like=false){
- if($this->dbcon){
- $string = mysql_real_escape_string($string, $this->dbcon);
- }else{
- $string = addslashes($string);
- }
- if($like){
- $string = addcslashes($string,'%_');
- }
- return $string;
+ if($this->dbcon){
+ $string = mysql_real_escape_string($string, $this->dbcon);
+ }else{
+ $string = addslashes($string);
+ }
+ if($like){
+ $string = addcslashes($string,'%_');
+ }
+ return $string;
}
}
diff --git a/inc/auth/pgsql.class.php b/inc/auth/pgsql.class.php
index cf8bf7600..b422b100d 100644
--- a/inc/auth/pgsql.class.php
+++ b/inc/auth/pgsql.class.php
@@ -9,7 +9,7 @@
* @author Andreas Gohr <andi@splitbrain.org>
* @author Chris Smith <chris@jalakai.co.uk>
* @author Matthias Grimm <matthias.grimmm@sourceforge.net>
-*/
+ */
require_once(DOKU_INC.'inc/auth/mysql.class.php');
@@ -24,63 +24,72 @@ class auth_pgsql extends auth_mysql {
* @author Matthias Grimm <matthiasgrimm@users.sourceforge.net>
* @author Andreas Gohr <andi@splitbrain.org>
*/
- function auth_pgsql() {
- global $conf;
- $this->cnf = $conf['auth']['pgsql'];
- if(!$this->cnf['port']) $this->cnf['port'] = 5432;
-
- if (method_exists($this, 'auth_basic'))
- parent::auth_basic();
-
- if(!function_exists('pg_connect')) {
- if ($this->cnf['debug'])
- msg("PgSQL err: PHP Postgres extension not found.",-1);
- $this->success = false;
- return;
- }
-
- $this->defaultgroup = $conf['defaultgroup'];
-
- // set capabilities based upon config strings set
- if (empty($this->cnf['user']) ||
- empty($this->cnf['password']) || empty($this->cnf['database'])){
- if ($this->cnf['debug'])
- msg("PgSQL err: insufficient configuration.",-1,__LINE__,__FILE__);
- $this->success = false;
- return;
- }
-
- $this->cando['addUser'] = $this->_chkcnf(array('getUserInfo',
- 'getGroups',
- 'addUser',
- 'getUserID',
- 'getGroupID',
- 'addGroup',
- 'addUserGroup'));
- $this->cando['delUser'] = $this->_chkcnf(array('getUserID',
- 'delUser',
- 'delUserRefs'));
- $this->cando['modLogin'] = $this->_chkcnf(array('getUserID',
- 'updateUser',
- 'UpdateTarget'));
- $this->cando['modPass'] = $this->cando['modLogin'];
- $this->cando['modName'] = $this->cando['modLogin'];
- $this->cando['modMail'] = $this->cando['modLogin'];
- $this->cando['modGroups'] = $this->_chkcnf(array('getUserID',
- 'getGroups',
- 'getGroupID',
- 'addGroup',
- 'addUserGroup',
- 'delGroup',
- 'getGroupID',
- 'delUserGroup'));
- /* getGroups is not yet supported
- $this->cando['getGroups'] = $this->_chkcnf(array('getGroups',
- 'getGroupID')); */
- $this->cando['getUsers'] = $this->_chkcnf(array('getUsers',
- 'getUserInfo',
- 'getGroups'));
- $this->cando['getUserCount'] = $this->_chkcnf(array('getUsers'));
+ function __construct() {
+ global $conf;
+ $this->cnf = $conf['auth']['pgsql'];
+ if(!$this->cnf['port']){
+ $this->cnf['port'] = 5432;
+ }
+
+ if (method_exists($this, 'auth_basic')){
+ parent::auth_basic();
+ }
+
+ if(!function_exists('pg_connect')) {
+ if ($this->cnf['debug'])
+ msg("PgSQL err: PHP Postgres extension not found.",-1);
+ $this->success = false;
+ return;
+ }
+
+ $this->defaultgroup = $conf['defaultgroup'];
+
+ // set capabilities based upon config strings set
+ if (empty($this->cnf['user']) ||
+ empty($this->cnf['password']) || empty($this->cnf['database'])){
+ if ($this->cnf['debug']){
+ msg("PgSQL err: insufficient configuration.",-1,__LINE__,__FILE__);
+ }
+ $this->success = false;
+ return;
+ }
+
+ $this->cando['addUser'] = $this->_chkcnf(array(
+ 'getUserInfo',
+ 'getGroups',
+ 'addUser',
+ 'getUserID',
+ 'getGroupID',
+ 'addGroup',
+ 'addUserGroup'));
+ $this->cando['delUser'] = $this->_chkcnf(array(
+ 'getUserID',
+ 'delUser',
+ 'delUserRefs'));
+ $this->cando['modLogin'] = $this->_chkcnf(array(
+ 'getUserID',
+ 'updateUser',
+ 'UpdateTarget'));
+ $this->cando['modPass'] = $this->cando['modLogin'];
+ $this->cando['modName'] = $this->cando['modLogin'];
+ $this->cando['modMail'] = $this->cando['modLogin'];
+ $this->cando['modGroups'] = $this->_chkcnf(array(
+ 'getUserID',
+ 'getGroups',
+ 'getGroupID',
+ 'addGroup',
+ 'addUserGroup',
+ 'delGroup',
+ 'getGroupID',
+ 'delUserGroup'));
+ /* getGroups is not yet supported
+ $this->cando['getGroups'] = $this->_chkcnf(array('getGroups',
+ 'getGroupID')); */
+ $this->cando['getUsers'] = $this->_chkcnf(array(
+ 'getUsers',
+ 'getUserInfo',
+ 'getGroups'));
+ $this->cando['getUserCount'] = $this->_chkcnf(array('getUsers'));
}
/**
@@ -90,10 +99,10 @@ class auth_pgsql extends auth_mysql {
* @return bool
*/
function _chkcnf($keys, $wop=false){
- foreach ($keys as $key){
- if (empty($this->cnf[$key])) return false;
- }
- return true;
+ foreach ($keys as $key){
+ if (empty($this->cnf[$key])) return false;
+ }
+ return true;
}
// @inherit function checkPass($user,$pass)
@@ -114,18 +123,18 @@ class auth_pgsql extends auth_mysql {
* @author Matthias Grimm <matthiasgrimm@users.sourceforge.net>
*/
function getUserCount($filter=array()) {
- $rc = 0;
+ $rc = 0;
- if($this->_openDB()) {
- $sql = $this->_createSQLFilter($this->cnf['getUsers'], $filter);
+ if($this->_openDB()) {
+ $sql = $this->_createSQLFilter($this->cnf['getUsers'], $filter);
- // no equivalent of SQL_CALC_FOUND_ROWS in pgsql?
- if (($result = $this->_queryDB($sql))){
- $rc = count($result);
+ // no equivalent of SQL_CALC_FOUND_ROWS in pgsql?
+ if (($result = $this->_queryDB($sql))){
+ $rc = count($result);
+ }
+ $this->_closeDB();
}
- $this->_closeDB();
- }
- return $rc;
+ return $rc;
}
/**
@@ -139,22 +148,22 @@ class auth_pgsql extends auth_mysql {
* @author Matthias Grimm <matthiasgrimm@users.sourceforge.net>
*/
function retrieveUsers($first=0,$limit=10,$filter=array()) {
- $out = array();
-
- if($this->_openDB()) {
- $this->_lockTables("READ");
- $sql = $this->_createSQLFilter($this->cnf['getUsers'], $filter);
- $sql .= " ".$this->cnf['SortOrder']." LIMIT $limit OFFSET $first";
- $result = $this->_queryDB($sql);
-
- foreach ($result as $user)
- if (($info = $this->_getUserInfo($user['user'])))
- $out[$user['user']] = $info;
-
- $this->_unlockTables();
- $this->_closeDB();
- }
- return $out;
+ $out = array();
+
+ if($this->_openDB()) {
+ $this->_lockTables("READ");
+ $sql = $this->_createSQLFilter($this->cnf['getUsers'], $filter);
+ $sql .= " ".$this->cnf['SortOrder']." LIMIT $limit OFFSET $first";
+ $result = $this->_queryDB($sql);
+
+ foreach ($result as $user)
+ if (($info = $this->_getUserInfo($user['user'])))
+ $out[$user['user']] = $info;
+
+ $this->_unlockTables();
+ $this->_closeDB();
+ }
+ return $out;
}
// @inherit function joinGroup($user, $group)
@@ -177,38 +186,38 @@ class auth_pgsql extends auth_mysql {
* @author Andreas Gohr <andi@splitbrain.org>
*/
function _addUserToGroup($user, $group, $force=0) {
- $newgroup = 0;
-
- if (($this->dbcon) && ($user)) {
- $gid = $this->_getGroupID($group);
- if (!$gid) {
- if ($force) { // create missing groups
- $sql = str_replace('%{group}',addslashes($group),$this->cnf['addGroup']);
- $this->_modifyDB($sql);
- //group should now exists try again to fetch it
- $gid = $this->_getGroupID($group);
- $newgroup = 1; // group newly created
- }
- }
- if (!$gid) return false; // group didn't exist and can't be created
+ $newgroup = 0;
- $sql = $this->cnf['addUserGroup'];
- if(strpos($sql,'%{uid}') !== false){
- $uid = $this->_getUserID($user);
- $sql = str_replace('%{uid}', addslashes($uid), $sql);
- }
- $sql = str_replace('%{user}', addslashes($user),$sql);
- $sql = str_replace('%{gid}', addslashes($gid),$sql);
- $sql = str_replace('%{group}',addslashes($group),$sql);
- if ($this->_modifyDB($sql) !== false) return true;
-
- if ($newgroup) { // remove previously created group on error
- $sql = str_replace('%{gid}', addslashes($gid),$this->cnf['delGroup']);
- $sql = str_replace('%{group}',addslashes($group),$sql);
- $this->_modifyDB($sql);
+ if (($this->dbcon) && ($user)) {
+ $gid = $this->_getGroupID($group);
+ if (!$gid) {
+ if ($force) { // create missing groups
+ $sql = str_replace('%{group}',addslashes($group),$this->cnf['addGroup']);
+ $this->_modifyDB($sql);
+ //group should now exists try again to fetch it
+ $gid = $this->_getGroupID($group);
+ $newgroup = 1; // group newly created
+ }
+ }
+ if (!$gid) return false; // group didn't exist and can't be created
+
+ $sql = $this->cnf['addUserGroup'];
+ if(strpos($sql,'%{uid}') !== false){
+ $uid = $this->_getUserID($user);
+ $sql = str_replace('%{uid}', addslashes($uid), $sql);
+ }
+ $sql = str_replace('%{user}', addslashes($user),$sql);
+ $sql = str_replace('%{gid}', addslashes($gid),$sql);
+ $sql = str_replace('%{group}',addslashes($group),$sql);
+ if ($this->_modifyDB($sql) !== false) return true;
+
+ if ($newgroup) { // remove previously created group on error
+ $sql = str_replace('%{gid}', addslashes($gid),$this->cnf['delGroup']);
+ $sql = str_replace('%{group}',addslashes($group),$sql);
+ $this->_modifyDB($sql);
+ }
}
- }
- return false;
+ return false;
}
// @inherit function _delUserFromGroup($user $group)
@@ -234,37 +243,37 @@ class auth_pgsql extends auth_mysql {
* @author Matthias Grimm <matthiasgrimm@users.sourceforge.net>
*/
function _addUser($user,$pwd,$name,$mail,$grps){
- if($this->dbcon && is_array($grps)) {
- $sql = str_replace('%{user}', addslashes($user),$this->cnf['addUser']);
- $sql = str_replace('%{pass}', addslashes($pwd),$sql);
- $sql = str_replace('%{name}', addslashes($name),$sql);
- $sql = str_replace('%{email}',addslashes($mail),$sql);
- if($this->_modifyDB($sql)){
- $uid = $this->_getUserID($user);
- }else{
- return false;
+ if($this->dbcon && is_array($grps)) {
+ $sql = str_replace('%{user}', addslashes($user),$this->cnf['addUser']);
+ $sql = str_replace('%{pass}', addslashes($pwd),$sql);
+ $sql = str_replace('%{name}', addslashes($name),$sql);
+ $sql = str_replace('%{email}',addslashes($mail),$sql);
+ if($this->_modifyDB($sql)){
+ $uid = $this->_getUserID($user);
+ }else{
+ return false;
+ }
+
+ if ($uid) {
+ foreach($grps as $group) {
+ $gid = $this->_addUserToGroup($user, $group, 1);
+ if ($gid === false) break;
+ }
+
+ if ($gid) return true;
+ else {
+ /* remove the new user and all group relations if a group can't
+ * be assigned. Newly created groups will remain in the database
+ * and won't be removed. This might create orphaned groups but
+ * is not a big issue so we ignore this problem here.
+ */
+ $this->_delUser($user);
+ if ($this->cnf['debug'])
+ msg("PgSQL err: Adding user '$user' to group '$group' failed.",-1,__LINE__,__FILE__);
+ }
+ }
}
-
- if ($uid) {
- foreach($grps as $group) {
- $gid = $this->_addUserToGroup($user, $group, 1);
- if ($gid === false) break;
- }
-
- if ($gid) return true;
- else {
- /* remove the new user and all group relations if a group can't
- * be assigned. Newly created groups will remain in the database
- * and won't be removed. This might create orphaned groups but
- * is not a big issue so we ignore this problem here.
- */
- $this->_delUser($user);
- if ($this->cnf['debug'])
- msg("PgSQL err: Adding user '$user' to group '$group' failed.",-1,__LINE__,__FILE__);
- }
- }
- }
- return false;
+ return false;
}
// @inherit function _delUser($user)
@@ -282,24 +291,24 @@ class auth_pgsql extends auth_mysql {
* @author Matthias Grimm <matthiasgrimm@users.sourceforge.net>
*/
function _openDB() {
- if (!$this->dbcon) {
- $dsn = $this->cnf['server'] ? 'host='.$this->cnf['server'] : '';
- $dsn .= ' port='.$this->cnf['port'];
- $dsn .= ' dbname='.$this->cnf['database'];
- $dsn .= ' user='.$this->cnf['user'];
- $dsn .= ' password='.$this->cnf['password'];
-
- $con = @pg_connect($dsn);
- if ($con) {
- $this->dbcon = $con;
- return true; // connection and database successfully opened
- } else if ($this->cnf['debug']){
- msg ("PgSQL err: Connection to {$this->cnf['user']}@{$this->cnf['server']} not possible.",
- -1,__LINE__,__FILE__);
+ if (!$this->dbcon) {
+ $dsn = $this->cnf['server'] ? 'host='.$this->cnf['server'] : '';
+ $dsn .= ' port='.$this->cnf['port'];
+ $dsn .= ' dbname='.$this->cnf['database'];
+ $dsn .= ' user='.$this->cnf['user'];
+ $dsn .= ' password='.$this->cnf['password'];
+
+ $con = @pg_connect($dsn);
+ if ($con) {
+ $this->dbcon = $con;
+ return true; // connection and database successfully opened
+ } else if ($this->cnf['debug']){
+ msg ("PgSQL err: Connection to {$this->cnf['user']}@{$this->cnf['server']} not possible.",
+ -1,__LINE__,__FILE__);
+ }
+ return false; // connection failed
}
- return false; // connection failed
- }
- return true; // connection already open
+ return true; // connection already open
}
/**
@@ -308,10 +317,10 @@ class auth_pgsql extends auth_mysql {
* @author Matthias Grimm <matthiasgrimm@users.sourceforge.net>
*/
function _closeDB() {
- if ($this->dbcon) {
- pg_close ($this->dbcon);
- $this->dbcon = 0;
- }
+ if ($this->dbcon) {
+ pg_close ($this->dbcon);
+ $this->dbcon = 0;
+ }
}
/**
@@ -327,17 +336,17 @@ class auth_pgsql extends auth_mysql {
* @author Matthias Grimm <matthiasgrimm@users.sourceforge.net>
*/
function _queryDB($query) {
- if ($this->dbcon) {
- $result = @pg_query($this->dbcon,$query);
- if ($result) {
- while (($t = pg_fetch_assoc($result)) !== false)
- $resultarray[]=$t;
- pg_free_result ($result);
- return $resultarray;
- }elseif ($this->cnf['debug'])
- msg('PgSQL err: '.pg_last_error($this->dbcon),-1,__LINE__,__FILE__);
- }
- return false;
+ if ($this->dbcon) {
+ $result = @pg_query($this->dbcon,$query);
+ if ($result) {
+ while (($t = pg_fetch_assoc($result)) !== false)
+ $resultarray[]=$t;
+ pg_free_result ($result);
+ return $resultarray;
+ }elseif ($this->cnf['debug'])
+ msg('PgSQL err: '.pg_last_error($this->dbcon),-1,__LINE__,__FILE__);
+ }
+ return false;
}
/**
@@ -347,17 +356,17 @@ class auth_pgsql extends auth_mysql {
* @author Andreas Gohr
*/
function _modifyDB($query) {
- if ($this->dbcon) {
- $result = @pg_query($this->dbcon,$query);
- if ($result) {
- pg_free_result ($result);
- return true;
- }
- if ($this->cnf['debug']){
- msg('PgSQL err: '.pg_last_error($this->dbcon),-1,__LINE__,__FILE__);
+ if ($this->dbcon) {
+ $result = @pg_query($this->dbcon,$query);
+ if ($result) {
+ pg_free_result ($result);
+ return true;
+ }
+ if ($this->cnf['debug']){
+ msg('PgSQL err: '.pg_last_error($this->dbcon),-1,__LINE__,__FILE__);
+ }
}
- }
- return false;
+ return false;
}
/**
@@ -367,11 +376,11 @@ class auth_pgsql extends auth_mysql {
* @author Matthias Grimm <matthiasgrimm@users.sourceforge.net>
*/
function _lockTables($mode) {
- if ($this->dbcon) {
- $this->_modifyDB('BEGIN');
- return true;
- }
- return false;
+ if ($this->dbcon) {
+ $this->_modifyDB('BEGIN');
+ return true;
+ }
+ return false;
}
/**
@@ -380,11 +389,11 @@ class auth_pgsql extends auth_mysql {
* @author Matthias Grimm <matthiasgrimm@users.sourceforge.net>
*/
function _unlockTables() {
- if ($this->dbcon) {
- $this->_modifyDB('COMMIT');
- return true;
- }
- return false;
+ if ($this->dbcon) {
+ $this->_modifyDB('COMMIT');
+ return true;
+ }
+ return false;
}
// @inherit function _createSQLFilter($sql, $filter)
@@ -398,11 +407,11 @@ class auth_pgsql extends auth_mysql {
* @param boolean $like Escape wildcard chars as well?
*/
function _escape($string,$like=false){
- $string = pg_escape_string($string);
- if($like){
- $string = addcslashes($string,'%_');
- }
- return $string;
+ $string = pg_escape_string($string);
+ if($like){
+ $string = addcslashes($string,'%_');
+ }
+ return $string;
}
}
diff --git a/inc/auth/plain.class.php b/inc/auth/plain.class.php
index 3941190e9..e682d2522 100644
--- a/inc/auth/plain.class.php
+++ b/inc/auth/plain.class.php
@@ -20,24 +20,24 @@ class auth_plain extends auth_basic {
*
* @author Christopher Smith <chris@jalakai.co.uk>
*/
- function auth_plain() {
- global $config_cascade;
-
- if (!@is_readable($config_cascade['plainauth.users']['default'])){
- $this->success = false;
- }else{
- if(@is_writable($config_cascade['plainauth.users']['default'])){
- $this->cando['addUser'] = true;
- $this->cando['delUser'] = true;
- $this->cando['modLogin'] = true;
- $this->cando['modPass'] = true;
- $this->cando['modName'] = true;
- $this->cando['modMail'] = true;
- $this->cando['modGroups'] = true;
+ function __construct() {
+ global $config_cascade;
+
+ if (!@is_readable($config_cascade['plainauth.users']['default'])){
+ $this->success = false;
+ }else{
+ if(@is_writable($config_cascade['plainauth.users']['default'])){
+ $this->cando['addUser'] = true;
+ $this->cando['delUser'] = true;
+ $this->cando['modLogin'] = true;
+ $this->cando['modPass'] = true;
+ $this->cando['modName'] = true;
+ $this->cando['modMail'] = true;
+ $this->cando['modGroups'] = true;
+ }
+ $this->cando['getUsers'] = true;
+ $this->cando['getUserCount'] = true;
}
- $this->cando['getUsers'] = true;
- $this->cando['getUserCount'] = true;
- }
}
/**
@@ -51,10 +51,10 @@ class auth_plain extends auth_basic {
*/
function checkPass($user,$pass){
- $userinfo = $this->getUserData($user);
- if ($userinfo === false) return false;
+ $userinfo = $this->getUserData($user);
+ if ($userinfo === false) return false;
- return auth_verifyPassword($pass,$this->users[$user]['pass']);
+ return auth_verifyPassword($pass,$this->users[$user]['pass']);
}
/**
@@ -71,8 +71,8 @@ class auth_plain extends auth_basic {
*/
function getUserData($user){
- if($this->users === null) $this->_loadUserData();
- return isset($this->users[$user]) ? $this->users[$user] : false;
+ if($this->users === null) $this->_loadUserData();
+ return isset($this->users[$user]) ? $this->users[$user] : false;
}
/**
@@ -88,29 +88,29 @@ class auth_plain extends auth_basic {
* @author Chris Smith <chris@jalakai.co.uk>
*/
function createUser($user,$pwd,$name,$mail,$grps=null){
- global $conf;
- global $config_cascade;
+ global $conf;
+ global $config_cascade;
- // user mustn't already exist
- if ($this->getUserData($user) !== false) return false;
+ // user mustn't already exist
+ if ($this->getUserData($user) !== false) return false;
- $pass = auth_cryptPassword($pwd);
+ $pass = auth_cryptPassword($pwd);
- // set default group if no groups specified
- if (!is_array($grps)) $grps = array($conf['defaultgroup']);
+ // set default group if no groups specified
+ if (!is_array($grps)) $grps = array($conf['defaultgroup']);
- // prepare user line
- $groups = join(',',$grps);
- $userline = join(':',array($user,$pass,$name,$mail,$groups))."\n";
+ // prepare user line
+ $groups = join(',',$grps);
+ $userline = join(':',array($user,$pass,$name,$mail,$groups))."\n";
- if (io_saveFile($config_cascade['plainauth.users']['default'],$userline,true)) {
- $this->users[$user] = compact('pass','name','mail','grps');
- return $pwd;
- }
+ if (io_saveFile($config_cascade['plainauth.users']['default'],$userline,true)) {
+ $this->users[$user] = compact('pass','name','mail','grps');
+ return $pwd;
+ }
- msg('The '.$config_cascade['plainauth.users']['default'].
- ' file is not writable. Please inform the Wiki-Admin',-1);
- return null;
+ msg('The '.$config_cascade['plainauth.users']['default'].
+ ' file is not writable. Please inform the Wiki-Admin',-1);
+ return null;
}
/**
@@ -122,78 +122,78 @@ class auth_plain extends auth_basic {
* @return bool
*/
function modifyUser($user, $changes) {
- global $conf;
- global $ACT;
- global $INFO;
- global $config_cascade;
-
- // sanity checks, user must already exist and there must be something to change
- if (($userinfo = $this->getUserData($user)) === false) return false;
- if (!is_array($changes) || !count($changes)) return true;
-
- // update userinfo with new data, remembering to encrypt any password
- $newuser = $user;
- foreach ($changes as $field => $value) {
- if ($field == 'user') {
- $newuser = $value;
- continue;
+ global $conf;
+ global $ACT;
+ global $INFO;
+ global $config_cascade;
+
+ // sanity checks, user must already exist and there must be something to change
+ if (($userinfo = $this->getUserData($user)) === false) return false;
+ if (!is_array($changes) || !count($changes)) return true;
+
+ // update userinfo with new data, remembering to encrypt any password
+ $newuser = $user;
+ foreach ($changes as $field => $value) {
+ if ($field == 'user') {
+ $newuser = $value;
+ continue;
+ }
+ if ($field == 'pass') $value = auth_cryptPassword($value);
+ $userinfo[$field] = $value;
+ }
+
+ $groups = join(',',$userinfo['grps']);
+ $userline = join(':',array($newuser, $userinfo['pass'], $userinfo['name'], $userinfo['mail'], $groups))."\n";
+
+ if (!$this->deleteUsers(array($user))) {
+ msg('Unable to modify user data. Please inform the Wiki-Admin',-1);
+ return false;
+ }
+
+ if (!io_saveFile($config_cascade['plainauth.users']['default'],$userline,true)) {
+ msg('There was an error modifying your user data. You should register again.',-1);
+ // FIXME, user has been deleted but not recreated, should force a logout and redirect to login page
+ $ACT == 'register';
+ return false;
}
- if ($field == 'pass') $value = auth_cryptPassword($value);
- $userinfo[$field] = $value;
- }
-
- $groups = join(',',$userinfo['grps']);
- $userline = join(':',array($newuser, $userinfo['pass'], $userinfo['name'], $userinfo['mail'], $groups))."\n";
-
- if (!$this->deleteUsers(array($user))) {
- msg('Unable to modify user data. Please inform the Wiki-Admin',-1);
- return false;
- }
-
- if (!io_saveFile($config_cascade['plainauth.users']['default'],$userline,true)) {
- msg('There was an error modifying your user data. You should register again.',-1);
- // FIXME, user has been deleted but not recreated, should force a logout and redirect to login page
- $ACT == 'register';
- return false;
- }
-
- $this->users[$newuser] = $userinfo;
- return true;
+
+ $this->users[$newuser] = $userinfo;
+ return true;
}
/**
- * Remove one or more users from the list of registered users
+ * Remove one or more users from the list of registered users
*
- * @author Christopher Smith <chris@jalakai.co.uk>
- * @param array $users array of users to be deleted
- * @return int the number of users deleted
+ * @author Christopher Smith <chris@jalakai.co.uk>
+ * @param array $users array of users to be deleted
+ * @return int the number of users deleted
*/
function deleteUsers($users) {
- global $config_cascade;
+ global $config_cascade;
- if (!is_array($users) || empty($users)) return 0;
+ if (!is_array($users) || empty($users)) return 0;
- if ($this->users === null) $this->_loadUserData();
+ if ($this->users === null) $this->_loadUserData();
- $deleted = array();
- foreach ($users as $user) {
- if (isset($this->users[$user])) $deleted[] = preg_quote($user,'/');
- }
+ $deleted = array();
+ foreach ($users as $user) {
+ if (isset($this->users[$user])) $deleted[] = preg_quote($user,'/');
+ }
- if (empty($deleted)) return 0;
+ if (empty($deleted)) return 0;
- $pattern = '/^('.join('|',$deleted).'):/';
+ $pattern = '/^('.join('|',$deleted).'):/';
- if (io_deleteFromFile($config_cascade['plainauth.users']['default'],$pattern,true)) {
- foreach ($deleted as $user) unset($this->users[$user]);
- return count($deleted);
- }
+ if (io_deleteFromFile($config_cascade['plainauth.users']['default'],$pattern,true)) {
+ foreach ($deleted as $user) unset($this->users[$user]);
+ return count($deleted);
+ }
- // problem deleting, reload the user list and count the difference
- $count = count($this->users);
- $this->_loadUserData();
- $count -= count($this->users);
- return $count;
+ // problem deleting, reload the user list and count the difference
+ $count = count($this->users);
+ $this->_loadUserData();
+ $count -= count($this->users);
+ return $count;
}
/**
@@ -203,18 +203,18 @@ class auth_plain extends auth_basic {
*/
function getUserCount($filter=array()) {
- if($this->users === null) $this->_loadUserData();
+ if($this->users === null) $this->_loadUserData();
- if (!count($filter)) return count($this->users);
+ if (!count($filter)) return count($this->users);
- $count = 0;
- $this->_constructPattern($filter);
+ $count = 0;
+ $this->_constructPattern($filter);
- foreach ($this->users as $user => $info) {
- $count += $this->_filter($user, $info);
- }
+ foreach ($this->users as $user => $info) {
+ $count += $this->_filter($user, $info);
+ }
- return $count;
+ return $count;
}
/**
@@ -228,27 +228,27 @@ class auth_plain extends auth_basic {
*/
function retrieveUsers($start=0,$limit=0,$filter=array()) {
- if ($this->users === null) $this->_loadUserData();
+ if ($this->users === null) $this->_loadUserData();
- ksort($this->users);
+ ksort($this->users);
- $i = 0;
- $count = 0;
- $out = array();
- $this->_constructPattern($filter);
+ $i = 0;
+ $count = 0;
+ $out = array();
+ $this->_constructPattern($filter);
- foreach ($this->users as $user => $info) {
- if ($this->_filter($user, $info)) {
- if ($i >= $start) {
- $out[$user] = $info;
- $count++;
- if (($limit > 0) && ($count >= $limit)) break;
- }
- $i++;
+ foreach ($this->users as $user => $info) {
+ if ($this->_filter($user, $info)) {
+ if ($i >= $start) {
+ $out[$user] = $info;
+ $count++;
+ if (($limit > 0) && ($count >= $limit)) break;
+ }
+ $i++;
+ }
}
- }
- return $out;
+ return $out;
}
/**
@@ -275,26 +275,26 @@ class auth_plain extends auth_basic {
* @author Andreas Gohr <andi@splitbrain.org>
*/
function _loadUserData(){
- global $config_cascade;
+ global $config_cascade;
- $this->users = array();
+ $this->users = array();
- if(!@file_exists($config_cascade['plainauth.users']['default'])) return;
+ if(!@file_exists($config_cascade['plainauth.users']['default'])) return;
- $lines = file($config_cascade['plainauth.users']['default']);
- foreach($lines as $line){
- $line = preg_replace('/#.*$/','',$line); //ignore comments
- $line = trim($line);
- if(empty($line)) continue;
+ $lines = file($config_cascade['plainauth.users']['default']);
+ foreach($lines as $line){
+ $line = preg_replace('/#.*$/','',$line); //ignore comments
+ $line = trim($line);
+ if(empty($line)) continue;
- $row = explode(":",$line,5);
- $groups = array_values(array_filter(explode(",",$row[4])));
+ $row = explode(":",$line,5);
+ $groups = array_values(array_filter(explode(",",$row[4])));
- $this->users[$row[0]]['pass'] = $row[1];
- $this->users[$row[0]]['name'] = urldecode($row[2]);
- $this->users[$row[0]]['mail'] = $row[3];
- $this->users[$row[0]]['grps'] = $groups;
- }
+ $this->users[$row[0]]['pass'] = $row[1];
+ $this->users[$row[0]]['name'] = urldecode($row[2]);
+ $this->users[$row[0]]['mail'] = $row[3];
+ $this->users[$row[0]]['grps'] = $groups;
+ }
}
/**
@@ -317,11 +317,11 @@ class auth_plain extends auth_basic {
}
function _constructPattern($filter) {
- $this->_pattern = array();
- foreach ($filter as $item => $pattern) {
-// $this->_pattern[$item] = '/'.preg_quote($pattern,"/").'/i'; // don't allow regex characters
- $this->_pattern[$item] = '/'.str_replace('/','\/',$pattern).'/i'; // allow regex characters
- }
+ $this->_pattern = array();
+ foreach ($filter as $item => $pattern) {
+ // $this->_pattern[$item] = '/'.preg_quote($pattern,"/").'/i'; // don't allow regex characters
+ $this->_pattern[$item] = '/'.str_replace('/','\/',$pattern).'/i'; // allow regex characters
+ }
}
}
diff --git a/inc/changelog.php b/inc/changelog.php
index 60f9b8657..24583b341 100644
--- a/inc/changelog.php
+++ b/inc/changelog.php
@@ -188,7 +188,7 @@ function getRecents($first,$num,$ns='',$flags=0){
// handle lines
while ($lines_position >= 0 || (($flags & RECENTS_MEDIA_PAGES_MIXED) && $media_lines_position >=0)) {
if (empty($rec) && $lines_position >= 0) {
- $rec = _handleRecent(@$lines[$lines_position], $ns, $flags & ~RECENTS_MEDIA_CHANGES, $seen);
+ $rec = _handleRecent(@$lines[$lines_position], $ns, $flags, $seen);
if (!$rec) {
$lines_position --;
continue;
@@ -197,8 +197,8 @@ function getRecents($first,$num,$ns='',$flags=0){
if (($flags & RECENTS_MEDIA_PAGES_MIXED) && empty($media_rec) && $media_lines_position >= 0) {
$media_rec = _handleRecent(@$media_lines[$media_lines_position], $ns, $flags | RECENTS_MEDIA_CHANGES, $seen);
if (!$media_rec) {
- $media_lines_position --;
- continue;
+ $media_lines_position --;
+ continue;
}
}
if (($flags & RECENTS_MEDIA_PAGES_MIXED) && @$media_rec['date'] >= @$rec['date']) {
@@ -320,8 +320,10 @@ function _handleRecent($line,$ns,$flags,&$seen){
if ($recent['perms'] < AUTH_READ) return false;
// check existance
- $fn = (($flags & RECENTS_MEDIA_CHANGES) ? mediaFN($recent['id']) : wikiFN($recent['id']));
- if((!@file_exists($fn)) && ($flags & RECENTS_SKIP_DELETED)) return false;
+ if($flags & RECENTS_SKIP_DELETED){
+ $fn = (($flags & RECENTS_MEDIA_CHANGES) ? mediaFN($recent['id']) : wikiFN($recent['id']));
+ if(!@file_exists($fn)) return false;
+ }
return $recent;
}
diff --git a/inc/cliopts.php b/inc/cliopts.php
index 588f0bc6d..9cea686a2 100644
--- a/inc/cliopts.php
+++ b/inc/cliopts.php
@@ -6,7 +6,7 @@
*
* Copyright (c) 1997-2004 The PHP Group
*
- * LICENSE: This source file is subject to the New BSD license that is
+ * LICENSE: This source file is subject to the New BSD license that is
* available through the world-wide-web at the following URI:
* http://www.opensource.org/licenses/bsd-license.php. If you did not receive
* a copy of the New BSD License and are unable to obtain it through the web,
@@ -297,9 +297,8 @@ class Doku_Cli_Opts {
* @access private
* @return bool
*/
- function _isShortOpt($arg)
- {
- return strlen($arg) == 2 && $arg[0] == '-'
+ function _isShortOpt($arg){
+ return strlen($arg) == 2 && $arg[0] == '-'
&& preg_match('/[a-zA-Z]/', $arg[1]);
}
@@ -311,8 +310,7 @@ class Doku_Cli_Opts {
* @access private
* @return bool
*/
- function _isLongOpt($arg)
- {
+ function _isLongOpt($arg){
return strlen($arg) > 2 && $arg[0] == '-' && $arg[1] == '-' &&
preg_match('/[a-zA-Z]+$/', substr($arg, 2));
}
diff --git a/inc/common.php b/inc/common.php
index d19147387..22a315901 100644
--- a/inc/common.php
+++ b/inc/common.php
@@ -1296,14 +1296,14 @@ function dformat($dt=null,$format=''){
*
* @author <ungu at terong dot com>
* @link http://www.php.net/manual/en/function.date.php#54072
+ * @param int $int_date: current date in UNIX timestamp
*/
function date_iso8601($int_date) {
- //$int_date: current date in UNIX timestamp
- $date_mod = date('Y-m-d\TH:i:s', $int_date);
- $pre_timezone = date('O', $int_date);
- $time_zone = substr($pre_timezone, 0, 3).":".substr($pre_timezone, 3, 2);
- $date_mod .= $time_zone;
- return $date_mod;
+ $date_mod = date('Y-m-d\TH:i:s', $int_date);
+ $pre_timezone = date('O', $int_date);
+ $time_zone = substr($pre_timezone, 0, 3).":".substr($pre_timezone, 3, 2);
+ $date_mod .= $time_zone;
+ return $date_mod;
}
/**
@@ -1564,10 +1564,14 @@ function valid_input_set($param, $valid_values, $array, $exc = '') {
}
}
+/**
+ * Read a preference from the DokuWiki cookie
+ */
function get_doku_pref($pref, $default) {
if (strpos($_COOKIE['DOKU_PREFS'], $pref) !== false) {
$parts = explode('#', $_COOKIE['DOKU_PREFS']);
- for ($i = 0; $i < count($parts); $i+=2){
+ $cnt = count($parts);
+ for ($i = 0; $i < $cnt; $i+=2){
if ($parts[$i] == $pref) {
return $parts[$i+1];
}
diff --git a/inc/config_cascade.php b/inc/config_cascade.php
index 443114f52..79567fc56 100644
--- a/inc/config_cascade.php
+++ b/inc/config_cascade.php
@@ -64,7 +64,7 @@ $config_cascade = array_merge(
'plainauth.users' => array(
'default' => DOKU_CONF.'users.auth.php',
),
-
+
'plugins' => array(
'local' => array(DOKU_CONF.'plugins.local.php'),
'protected' => array(
diff --git a/inc/html.php b/inc/html.php
index 1a2d7daef..b233e1d92 100644
--- a/inc/html.php
+++ b/inc/html.php
@@ -1141,8 +1141,6 @@ function html_diff($text='',$intro=true,$type=null){
$tdf = new TableDiffFormatter();
}
-
-
if($intro) print p_locale_xhtml('diff');
if (!$text) {
@@ -1165,7 +1163,6 @@ function html_diff($text='',$intro=true,$type=null){
$form->addElement(form_makeButton('submit', 'diff','Go'));
$form->printForm();
-
$diffurl = wl($ID, array(
'do' => 'diff',
'rev2[0]' => $l_rev,
@@ -1176,6 +1173,7 @@ function html_diff($text='',$intro=true,$type=null){
ptln('</div>');
}
?>
+ <div class="table">
<table class="diff diff_<?php echo $type?>">
<tr>
<th colspan="2" <?php echo $l_minor?>>
@@ -1187,6 +1185,7 @@ function html_diff($text='',$intro=true,$type=null){
</tr>
<?php echo $tdf->format($df)?>
</table>
+ </div>
<?php
}
@@ -1661,26 +1660,46 @@ function html_admin(){
* Form to request a new password for an existing account
*
* @author Benoit Chesneau <benoit@bchesneau.info>
+ * @author Andreas Gohr <gohr@cosmocode.de>
*/
function html_resendpwd() {
global $lang;
global $conf;
global $ID;
- print p_locale_xhtml('resendpwd');
- print '<div class="centeralign">'.NL;
- $form = new Doku_Form(array('id' => 'dw__resendpwd'));
- $form->startFieldset($lang['resendpwd']);
- $form->addHidden('do', 'resendpwd');
- $form->addHidden('save', '1');
- $form->addElement(form_makeTag('br'));
- $form->addElement(form_makeTextField('login', $_POST['login'], $lang['user'], '', 'block'));
- $form->addElement(form_makeTag('br'));
- $form->addElement(form_makeTag('br'));
- $form->addElement(form_makeButton('submit', '', $lang['btn_resendpwd']));
- $form->endFieldset();
- html_form('resendpwd', $form);
- print '</div>'.NL;
+ $token = preg_replace('/[^a-f0-9]+/','',$_REQUEST['pwauth']);
+
+ if(!$conf['autopasswd'] && $token){
+ print p_locale_xhtml('resetpwd');
+ print '<div class="centeralign">'.NL;
+ $form = new Doku_Form(array('id' => 'dw__resendpwd'));
+ $form->startFieldset($lang['btn_resendpwd']);
+ $form->addHidden('token', $token);
+ $form->addHidden('do', 'resendpwd');
+
+ $form->addElement(form_makePasswordField('pass', $lang['pass'], '', 'block', array('size'=>'50')));
+ $form->addElement(form_makePasswordField('passchk', $lang['passchk'], '', 'block', array('size'=>'50')));
+
+ $form->addElement(form_makeButton('submit', '', $lang['btn_resendpwd']));
+ $form->endFieldset();
+ html_form('resendpwd', $form);
+ print '</div>'.NL;
+ }else{
+ print p_locale_xhtml('resendpwd');
+ print '<div class="centeralign">'.NL;
+ $form = new Doku_Form(array('id' => 'dw__resendpwd'));
+ $form->startFieldset($lang['resendpwd']);
+ $form->addHidden('do', 'resendpwd');
+ $form->addHidden('save', '1');
+ $form->addElement(form_makeTag('br'));
+ $form->addElement(form_makeTextField('login', $_POST['login'], $lang['user'], '', 'block'));
+ $form->addElement(form_makeTag('br'));
+ $form->addElement(form_makeTag('br'));
+ $form->addElement(form_makeButton('submit', '', $lang['btn_resendpwd']));
+ $form->endFieldset();
+ html_form('resendpwd', $form);
+ print '</div>'.NL;
+ }
}
/**
diff --git a/inc/httputils.php b/inc/httputils.php
index 0ad97a9a1..b815f3ca6 100644
--- a/inc/httputils.php
+++ b/inc/httputils.php
@@ -249,3 +249,11 @@ function http_cached_finish($file, $content) {
print $content;
}
}
+
+function http_get_raw_post_data() {
+ static $postData = null;
+ if ($postData === null) {
+ $postData = file_get_contents('php://input');
+ }
+ return $postData;
+}
diff --git a/inc/indexer.php b/inc/indexer.php
index 9d8d6f99b..80d2651c2 100644
--- a/inc/indexer.php
+++ b/inc/indexer.php
@@ -291,7 +291,6 @@ class Doku_Indexer {
$val_idx = array();
}
-
foreach ($values as $val) {
$val = (string)$val;
if ($val !== "") {
@@ -351,7 +350,7 @@ class Doku_Indexer {
return "locked";
// load known documents
- $pid = $this->getIndexKey('page', '', $page);
+ $pid = $this->addIndexKey('page', '', $page);
if ($pid === false) {
$this->unlock();
return false;
@@ -389,6 +388,7 @@ class Doku_Indexer {
$val_idx = explode(':', $this->getIndexKey($metaname.'_p', '', $pid));
$meta_idx = $this->getIndex($metaname.'_i', '');
foreach ($val_idx as $id) {
+ if ($id === '') continue;
$meta_idx[$id] = $this->updateTuple($meta_idx[$id], $pid, 0);
}
$this->saveIndex($metaname.'_i', '', $meta_idx);
@@ -1174,18 +1174,8 @@ function & idx_get_stopwords() {
* @author Tom N Harris <tnharris@whoopdedo.org>
*/
function idx_addPage($page, $verbose=false, $force=false) {
- // check if indexing needed
$idxtag = metaFN($page,'.indexed');
- if(!$force && @file_exists($idxtag)){
- if(trim(io_readFile($idxtag)) == idx_get_version()){
- $last = @filemtime($idxtag);
- if($last > @filemtime(wikiFN($page))){
- if ($verbose) print("Indexer: index for $page up to date".DOKU_LF);
- return false;
- }
- }
- }
-
+ // check if page was deleted but is still in the index
if (!page_exists($page)) {
if (!@file_exists($idxtag)) {
if ($verbose) print("Indexer: $page does not exist, ignoring".DOKU_LF);
@@ -1200,6 +1190,18 @@ function idx_addPage($page, $verbose=false, $force=false) {
@unlink($idxtag);
return $result;
}
+
+ // check if indexing needed
+ if(!$force && @file_exists($idxtag)){
+ if(trim(io_readFile($idxtag)) == idx_get_version()){
+ $last = @filemtime($idxtag);
+ if($last > @filemtime(wikiFN($page))){
+ if ($verbose) print("Indexer: index for $page up to date".DOKU_LF);
+ return false;
+ }
+ }
+ }
+
$indexenabled = p_get_metadata($page, 'internal index', METADATA_RENDER_UNLIMITED);
if ($indexenabled === false) {
$result = false;
diff --git a/inc/init.php b/inc/init.php
index b3acf2e33..d57e12d7b 100644
--- a/inc/init.php
+++ b/inc/init.php
@@ -30,8 +30,8 @@ if (!defined('DOKU_E_LEVEL') && @file_exists(DOKU_CONF.'report_e_all')) {
define('DOKU_E_LEVEL', E_ALL);
}
if (!defined('DOKU_E_LEVEL')) {
- if(defined('E_DEPRECATED')){ // since php 5.3
- error_reporting(E_ALL & ~E_NOTICE & ~E_DEPRECATED);
+ if(defined('E_DEPRECATED')){ // since php 5.3, since php 5.4 E_STRICT is part of E_ALL
+ error_reporting(E_ALL & ~E_NOTICE & ~E_DEPRECATED & ~E_STRICT);
}else{
error_reporting(E_ALL ^ E_NOTICE);
}
@@ -69,16 +69,6 @@ foreach (array('default','local','protected') as $config_group) {
}
}
-//prepare language array
-global $lang;
-$lang = array();
-
-//load the language files
-require_once(DOKU_INC.'inc/lang/en/lang.php');
-if ( $conf['lang'] && $conf['lang'] != 'en' ) {
- require_once(DOKU_INC.'inc/lang/'.$conf['lang'].'/lang.php');
-}
-
//prepare license array()
global $license;
$license = array();
@@ -118,11 +108,11 @@ if (!defined('DOKU_COOKIE')) define('DOKU_COOKIE', 'DW'.md5(DOKU_REL.(($conf['se
// define main script
if(!defined('DOKU_SCRIPT')) define('DOKU_SCRIPT','doku.php');
-// define Template baseURL
+// DEPRECATED, use tpl_basedir() instead
if(!defined('DOKU_TPL')) define('DOKU_TPL',
DOKU_BASE.'lib/tpl/'.$conf['template'].'/');
-// define real Template directory
+// DEPRECATED, use tpl_incdir() instead
if(!defined('DOKU_TPLINC')) define('DOKU_TPLINC',
DOKU_INC.'lib/tpl/'.$conf['template'].'/');
@@ -200,7 +190,7 @@ init_paths();
init_files();
// setup plugin controller class (can be overwritten in preload.php)
-$plugin_types = array('admin','syntax','action','renderer', 'helper');
+$plugin_types = array('admin','syntax','action','renderer', 'helper','remote');
global $plugin_controller_class, $plugin_controller;
if (empty($plugin_controller_class)) $plugin_controller_class = 'Doku_Plugin_Controller';
@@ -214,6 +204,10 @@ $plugin_controller = new $plugin_controller_class();
global $EVENT_HANDLER;
$EVENT_HANDLER = new Doku_Event_Handler();
+$local = $conf['lang'];
+trigger_event('INIT_LANG_LOAD', $local, 'init_lang', true);
+
+
// setup authentication system
if (!defined('NOSESSION')) {
auth_setup();
@@ -256,6 +250,20 @@ function init_paths(){
$conf['media_changelog'] = $conf['metadir'].'/_media.changes';
}
+function init_lang($langCode) {
+ //prepare language array
+ global $lang;
+ $lang = array();
+
+ //load the language files
+ require_once(DOKU_INC.'inc/lang/en/lang.php');
+ if ($langCode && $langCode != 'en') {
+ if (file_exists(DOKU_INC."inc/lang/$langCode/lang.php")) {
+ require_once(DOKU_INC."inc/lang/$langCode/lang.php");
+ }
+ }
+}
+
/**
* Checks the existance of certain files and creates them if missing.
*/
diff --git a/inc/io.php b/inc/io.php
index 034ac650e..c76d2f44c 100644
--- a/inc/io.php
+++ b/inc/io.php
@@ -63,7 +63,7 @@ function io_sweepNS($id,$basedir='datadir'){
*/
function io_readWikiPage($file, $id, $rev=false) {
if (empty($rev)) { $rev = false; }
- $data = array(array($file, false), getNS($id), noNS($id), $rev);
+ $data = array(array($file, true), getNS($id), noNS($id), $rev);
return trigger_event('IO_WIKIPAGE_READ', $data, '_io_readWikiPage_action', false);
}
diff --git a/inc/lang/af/lang.php b/inc/lang/af/lang.php
index 6665196f4..6de891a63 100644
--- a/inc/lang/af/lang.php
+++ b/inc/lang/af/lang.php
@@ -25,7 +25,6 @@ $lang['btn_back'] = 'Terug';
$lang['btn_backlink'] = 'Wat skakel hierheen';
$lang['btn_subscribe'] = 'Hou bladsy dop';
$lang['btn_unsubscribe'] = 'Verwyder van bladsy dophoulys';
-$lang['btn_resendpwd'] = 'E-pos nuwe wagwoord';
$lang['btn_register'] = 'Skep gerus \'n rekening';
$lang['loggedinas'] = 'Ingeteken as';
$lang['user'] = 'Gebruikernaam';
@@ -43,7 +42,6 @@ $lang['regsuccess2'] = 'Rekening geskep';
$lang['regbadpass'] = 'Die ingetikte wagwoorde is nie dieselfde nie.';
$lang['regpwmail'] = 'Jo DokuWiki wagwoord';
$lang['profnoempty'] = 'Jy moet \'n name en a e-posadres in sit';
-$lang['resendpwd'] = 'Stuir vir a niwe wagwoord';
$lang['resendpwdmissing'] = 'Jammer, jy moet ales in fil';
$lang['resendpwdconfirm'] = '\'n Bevestigingpos is gestuur na die gekose e-posadres.';
$lang['resendpwdsuccess'] = 'Jou nuive wagwoord was deur e-pos gesteur';
@@ -71,5 +69,3 @@ $lang['img_date'] = 'Datem';
$lang['img_camera'] = 'Camera';
$lang['i_wikiname'] = 'Wiki Naam';
$lang['i_funcna'] = 'PHP funksie <code>%s</code> is nie beskibaar nie. Miskien is dit af gehaal.';
-$lang['mu_toobig'] = 'te groet';
-$lang['mu_done'] = 'klaar';
diff --git a/inc/lang/ar/lang.php b/inc/lang/ar/lang.php
index 02a62fe94..350e26695 100644
--- a/inc/lang/ar/lang.php
+++ b/inc/lang/ar/lang.php
@@ -42,12 +42,14 @@ $lang['btn_backtomedia'] = 'ارجع إلى اختيار ملف الوسا
$lang['btn_subscribe'] = 'ادر الاشتراكات';
$lang['btn_profile'] = 'حدث الملف الشخصي';
$lang['btn_reset'] = 'صفّر';
-$lang['btn_resendpwd'] = 'ارسل كلمة سر جديدة';
+$lang['btn_resendpwd'] = 'اضبط كلمة سر جديدة';
$lang['btn_draft'] = 'حرر المسودة';
$lang['btn_recover'] = 'استرجع المسودة';
$lang['btn_draftdel'] = 'احذف المسوّدة';
$lang['btn_revert'] = 'استعد';
$lang['btn_register'] = 'سجّل';
+$lang['btn_apply'] = 'طبق';
+$lang['btn_media'] = 'مدير الوسائط';
$lang['loggedinas'] = 'داخل باسم';
$lang['user'] = 'اسم المستخدم';
$lang['pass'] = 'كلمة السر';
@@ -77,7 +79,7 @@ $lang['profnoempty'] = 'غير مسموح باسم مستخدم أو
$lang['profchanged'] = 'حُدث الملف الشخصي للمستخدم بنجاح.';
$lang['pwdforget'] = 'أنسيت كلمة السر؟ احصل على واحدة جديدة';
$lang['resendna'] = 'هذه الويكي لا تدعم إعادة إرسال كلمة المرور.';
-$lang['resendpwd'] = 'إرسال كلمة مرور';
+$lang['resendpwd'] = 'اضبط كلمة سر جديدة لـ';
$lang['resendpwdmissing'] = 'عذراّ، يجب أن تملأ كل الحقول.';
$lang['resendpwdnouser'] = 'عذراً، لم نجد المستخدم هذا في قاعدة بياناتنا.';
$lang['resendpwdbadauth'] = 'عذراً، رمز التفعيل هذا غير صحيح. نأكد من استخدامك كامل وصلة التأكيد.';
@@ -92,7 +94,7 @@ $lang['txt_filename'] = 'رفع كـ (اختياري)';
$lang['txt_overwrt'] = 'اكتب على ملف موجود';
$lang['lockedby'] = 'مقفلة حاليا لـ';
$lang['lockexpire'] = 'ينتهي القفل في';
-$lang['js']['willexpire'] = 'سينتهي قفل تحرير هذه الصفحه خلال دقيقة.\nلتجنب التعارض استخدم زر المعاينة لتصفير مؤقت القفل.';
+$lang['js']['willexpire'] = 'سينتهي قفل تحرير هذه الصفحه خلال دقيقة.\nلتجنب التعارض استخدم زر المعاينة لتصفير مؤقت القفل.';
$lang['js']['notsavedyet'] = 'التعديلات غير المحفوظة ستفقد.';
$lang['js']['searchmedia'] = 'ابحث عن ملفات';
$lang['js']['keepopen'] = 'أبقي النافذة مفتوحة أثناء الاختيار';
@@ -123,6 +125,17 @@ $lang['js']['nosmblinks'] = 'الروابط لمجلدات مشاركة و
$lang['js']['linkwiz'] = 'مرشد الروابط';
$lang['js']['linkto'] = 'الرابط إلى :';
$lang['js']['del_confirm'] = 'هل حقاً تريد حذف البنود المختارة؟';
+$lang['js']['restore_confirm'] = 'أمتأكد من استرجاع هذه النسخة؟';
+$lang['js']['media_diff'] = 'عرض الفروق:';
+$lang['js']['media_diff_both'] = 'جنبا إلى جنب';
+$lang['js']['media_diff_opacity'] = 'Shine-through';
+$lang['js']['media_diff_portions'] = 'Swipe';
+$lang['js']['media_select'] = 'اختر ملفا...';
+$lang['js']['media_upload_btn'] = 'ارفع';
+$lang['js']['media_done_btn'] = 'تم';
+$lang['js']['media_drop'] = 'اسقط الملف هنا لرفعه';
+$lang['js']['media_cancel'] = 'أزل';
+$lang['js']['media_overwrt'] = 'أكتب فوق الملفات الموجودة';
$lang['rssfailed'] = 'خطأ ما حدث أثناء جلب ملف التغذية:';
$lang['nothingfound'] = 'لا يوجد شيء';
$lang['mediaselect'] = 'ملفات الوسائط';
@@ -172,11 +185,20 @@ $lang['external_edit'] = 'تحرير خارجي';
$lang['summary'] = 'ملخص التحرير';
$lang['noflash'] = 'تحتاج إلى<a href="http://www.adobe.com/products/flashplayer/">ملحق فلاش أدوبي</a> لعرض هذا المحتوى.';
$lang['download'] = 'نزل Snippet';
+$lang['tools'] = 'أدوات';
+$lang['user_tools'] = 'أدوات المستخدم';
+$lang['site_tools'] = 'أدوات الموقع';
+$lang['page_tools'] = 'أدوات الصفحة';
+$lang['skip_to_content'] = 'تجاوز إلى المحتوى';
$lang['mail_newpage'] = 'إضافة صفحة:';
$lang['mail_changed'] = 'تعديل صفحة:';
$lang['mail_subscribe_list'] = 'صفحات غيرت في النطاق:';
$lang['mail_new_user'] = 'مشترك جديد:';
$lang['mail_upload'] = 'رفع ملف:';
+$lang['changes_type'] = 'أظهر تغييرات الـ';
+$lang['pages_changes'] = 'صفحات';
+$lang['media_changes'] = 'ملفات الوسائط';
+$lang['both_changes'] = 'كلا من الصفحات وملفات الوسائط';
$lang['qb_bold'] = 'نص عريض';
$lang['qb_italic'] = 'نص مائل';
$lang['qb_underl'] = 'نص مسطر';
@@ -217,6 +239,9 @@ $lang['img_copyr'] = 'حقوق النسخ';
$lang['img_format'] = 'الهيئة';
$lang['img_camera'] = 'الكمرا';
$lang['img_keywords'] = 'كلمات مفتاحية';
+$lang['img_width'] = 'العرض';
+$lang['img_height'] = 'الإرتفاع';
+$lang['img_manager'] = 'اعرض في مدير الوسائط';
$lang['subscr_subscribe_success'] = 'اضيف %s لقائمة اشتراك %s';
$lang['subscr_subscribe_error'] = 'خطأ في إضافة %s لقائمة اشتراك %s';
$lang['subscr_subscribe_noaddress'] = 'ليس هناك عنوان مرتبط بولوجك، لا يمكن اضافتك لقائمة الاشتراك';
@@ -235,6 +260,7 @@ $lang['subscr_style_digest'] = 'بريد ملخص عن تغييرات كل ص
$lang['subscr_style_list'] = 'قائمة بالصفحات المتغيرة منذ آخر بريد';
$lang['authmodfailed'] = 'إعدادات تصريح فاسدة، يرجى مراسلة المدير.';
$lang['authtempfail'] = 'تصريح المشترك غير متوفر مؤقتاً، إن استمرت هذه الحالة يرجى مراسلة المدير';
+$lang['authpwdexpire'] = 'ستنتهي صلاحية كلمة السر في %d . عليك بتغييرها سريعا.';
$lang['i_chooselang'] = 'اختر لغتك';
$lang['i_installer'] = 'برنامج تنصيب دوكو ويكي';
$lang['i_wikiname'] = 'اسم الويكي';
@@ -266,21 +292,6 @@ $lang['i_pol1'] = 'ويكي عامة؛ أي القراءة للج
$lang['i_pol2'] = 'ويكي مغلقة؛ أي القراءة والكتابة والتحميل للمشتركين المسجلين فقط';
$lang['i_retry'] = 'إعادة المحاولة';
$lang['i_license'] = 'اختر الرخصة التي تريد وضع المحتوى تحتها:';
-$lang['mu_intro'] = 'هنا يمكنك رفع ملفات متعددة في وقت واحد. انقر على زر استعرض لاضافتهم إلى الطابور. انقر ارفع عند الانتهاء.';
-$lang['mu_gridname'] = 'اسم الملف';
-$lang['mu_gridsize'] = 'الحجم';
-$lang['mu_gridstat'] = 'الحالة';
-$lang['mu_namespace'] = 'نطاق';
-$lang['mu_browse'] = 'استعرض';
-$lang['mu_toobig'] = 'كبير جدا';
-$lang['mu_ready'] = 'جاهز للرفع';
-$lang['mu_done'] = 'اكتمل';
-$lang['mu_fail'] = 'فشل';
-$lang['mu_authfail'] = 'انتهت الجلسة';
-$lang['mu_progress'] = 'رُفع @PCT@% ';
-$lang['mu_filetypes'] = 'انواع الملفات المسموحة';
-$lang['mu_info'] = 'تم رفع الملفات';
-$lang['mu_lasterr'] = 'آخر خطأ:';
$lang['recent_global'] = 'انت تراقب حاليا التغييرات داخل نطاق <b>%s</b>. يمكنك أيضا <a href="%s">عرض أحدث تغييرات الويكي كلها</a>.';
$lang['years'] = '%d سنة مضت';
$lang['months'] = '%d شهرا مضى';
@@ -290,3 +301,27 @@ $lang['hours'] = '%d ساعة مضت';
$lang['minutes'] = '%d دقيقة مضت';
$lang['seconds'] = '%d ثانية مضت';
$lang['wordblock'] = 'لم تحفظ تغييراتك لاحتوائها على نص ممنوع )غثاء(';
+$lang['media_uploadtab'] = 'ارفع';
+$lang['media_searchtab'] = 'ابحث';
+$lang['media_file'] = 'ملف';
+$lang['media_viewtab'] = 'عرض';
+$lang['media_edittab'] = 'تحرير';
+$lang['media_historytab'] = 'التاريخ';
+$lang['media_list_thumbs'] = 'المصغرات';
+$lang['media_list_rows'] = 'صفوف';
+$lang['media_sort_name'] = 'الاسم';
+$lang['media_sort_date'] = 'التاريخ';
+$lang['media_namespaces'] = 'اختر نطاقا';
+$lang['media_files'] = 'الملفات في %s';
+$lang['media_upload'] = 'ارفع إلى %s';
+$lang['media_search'] = 'ابحث في %s';
+$lang['media_view'] = '%s';
+$lang['media_viewold'] = '%s في %s';
+$lang['media_edit'] = 'حرر %s';
+$lang['media_history'] = 'تاريخ %s';
+$lang['media_meta_edited'] = 'عُدلت الميتاداتا';
+$lang['media_perm_read'] = 'عفوا، لست مخولا بقراءة الملفات.';
+$lang['media_perm_upload'] = 'عفوا، لست مخولا برفع الملفات.';
+$lang['media_update'] = 'ارفع إصدارا أحدث';
+$lang['media_restore'] = 'استرجع هذه النسخة';
+$lang['plugin_install_err'] = 'ثبتت الإضافة بشكل خاطئ. أعد تسمية دليل الإضافة \'%s\' إلى \'%s\'.';
diff --git a/inc/lang/ar/resetpwd.txt b/inc/lang/ar/resetpwd.txt
new file mode 100644
index 000000000..2bbd4a21a
--- /dev/null
+++ b/inc/lang/ar/resetpwd.txt
@@ -0,0 +1,3 @@
+====== اضبط كلمة سر جديدة ======
+
+أدخل كلمة سر جديدة لحسابك في هذه الويكي.
diff --git a/inc/lang/az/lang.php b/inc/lang/az/lang.php
index 13ba7b3c3..fff6f34b7 100644
--- a/inc/lang/az/lang.php
+++ b/inc/lang/az/lang.php
@@ -40,7 +40,6 @@ $lang['btn_subscribe'] = 'Abunə ol (bütün dəyişiklər)';
$lang['btn_unsubscribe'] = 'Abunəlikdən çıx (bütün dəyişiklər)';
$lang['btn_profile'] = 'Profil';
$lang['btn_reset'] = 'Boşalt';
-$lang['btn_resendpwd'] = 'Yeni şifrəni göndər';
$lang['btn_draft'] = 'Qaralamada düzəliş etmək';
$lang['btn_recover'] = 'Qaralamanı qaytar';
$lang['btn_draftdel'] = 'Qaralamanı sil';
@@ -75,7 +74,6 @@ $lang['profnoempty'] = 'istifadəci adı və e-mail ünvanı boş ola
$lang['profchanged'] = 'İstifadəçi profili uğurla yeniləndi.';
$lang['pwdforget'] = 'Şifrəni yaddan çıxartmısız? Buyurun yenisini əldə edin';
$lang['resendna'] = 'Bu wiki şifrəni yenidən göndərməyi dəstəkləmir.';
-$lang['resendpwd'] = 'Yeni şifrəni göndər:';
$lang['resendpwdmissing'] = 'Formanın bütün xanəlırini doldurun.';
$lang['resendpwdnouser'] = 'Verilənlər bazasında bu ad ilə istifadəçi tapılmadı.';
$lang['resendpwdbadauth'] = 'Ativləşdirmə kodu səhvdir. Link-i tam olaraq köçürdüyünüzü yoxlayın. ';
@@ -217,21 +215,6 @@ $lang['i_pol0'] = 'Tam açıq wiki (oxumaq, yazmaq, fayl yükləm
$lang['i_pol1'] = 'Acıq wiki (oxumaq hamıya olar, yazmaq və fayl yükləmək ancaq üzv olan istifadəçilərə olar)';
$lang['i_pol2'] = 'Bağlı wiki (uxumaq, yazmaq və yükləmək ancaq üzv olan istifadəçilərə olar)';
$lang['i_retry'] = 'Cəhdi təkrarla';
-$lang['mu_intro'] = 'Burda siz bir neçə faylı birdən yükləyə bilərsiniz. Fayl əlavə etmək üçün "fayl seç" düyməsini sıxın. Sonda "yüklə" düyməsini sıxın.';
-$lang['mu_gridname'] = 'Faylın adı';
-$lang['mu_gridsize'] = 'Həcmi';
-$lang['mu_gridstat'] = 'Status';
-$lang['mu_namespace'] = 'Namespace';
-$lang['mu_browse'] = 'Fayl seç';
-$lang['mu_toobig'] = 'çox böyükdür';
-$lang['mu_ready'] = 'yükləməyə hazırdı';
-$lang['mu_done'] = 'başa çatdı';
-$lang['mu_fail'] = 'xəta baş verdi';
-$lang['mu_authfail'] = 'sessiyanın vaxtı bitdi';
-$lang['mu_progress'] = '@PCT@% yükləndi';
-$lang['mu_filetypes'] = 'İçazə olan fayl növləri';
-$lang['mu_info'] = 'fayllar yükləndi.';
-$lang['mu_lasterr'] = 'Son xəta:';
$lang['recent_global'] = '<b>%s</b> namespace-də baş vermiş dəyışıklərə baxırsınız. Siz həmçinin <a href="%s">wiki-də bu yaxında baş vermiş bütün dəyişiklərə</a> baxa bilərsiniz.';
$lang['years'] = '%d il əvvəl';
$lang['months'] = '%d ay əvvəl';
diff --git a/inc/lang/bg/lang.php b/inc/lang/bg/lang.php
index 8985e20e5..7a246024d 100644
--- a/inc/lang/bg/lang.php
+++ b/inc/lang/bg/lang.php
@@ -9,11 +9,12 @@
*/
$lang['encoding'] = 'utf-8';
$lang['direction'] = 'ltr';
-$lang['doublequoteopening'] = '“';
-$lang['doublequoteclosing'] = '”';
-$lang['singlequoteopening'] = '‘';
-$lang['singlequoteclosing'] = '’';
-$lang['apostrophe'] = '’';
+$lang['doublequoteopening'] = '“'; //&ldquo;
+$lang['doublequoteclosing'] = '”'; //&rdquo;
+$lang['singlequoteopening'] = '‘'; //&lsquo;
+$lang['singlequoteclosing'] = '’'; //&rsquo;
+$lang['apostrophe'] = '’'; //&rsquo;
+
$lang['btn_edit'] = 'Редактиране';
$lang['btn_source'] = 'Преглед на кода';
$lang['btn_show'] = 'Преглед на страницата';
@@ -41,14 +42,15 @@ $lang['btn_backtomedia'] = 'Назад към избора на файл';
$lang['btn_subscribe'] = 'Абонаменти';
$lang['btn_profile'] = 'Профил';
$lang['btn_reset'] = 'Изчистване';
-$lang['btn_resendpwd'] = 'Пращане на нова парола';
-$lang['btn_draft'] = 'Редактиране на чернова';
-$lang['btn_recover'] = 'Възстановяване на чернова';
-$lang['btn_draftdel'] = 'Изтриване на чернова';
+$lang['btn_resendpwd'] = 'Задаване на нова парола';
+$lang['btn_draft'] = 'Редактиране на черновата';
+$lang['btn_recover'] = 'Възстановяване на черновата';
+$lang['btn_draftdel'] = 'Изтриване на черновата';
$lang['btn_revert'] = 'Възстановяване';
$lang['btn_register'] = 'Регистриране';
$lang['btn_apply'] = 'Прилагане';
$lang['btn_media'] = 'Диспечер на файлове';
+
$lang['loggedinas'] = 'Вписани сте като';
$lang['user'] = 'Потребител';
$lang['pass'] = 'Парола';
@@ -60,9 +62,10 @@ $lang['fullname'] = 'Истинско име';
$lang['email'] = 'Електронна поща';
$lang['profile'] = 'Потребителски профил';
$lang['badlogin'] = 'Грешно потребителско име или парола.';
-$lang['minoredit'] = 'Незначителни промени';
-$lang['draftdate'] = 'Черновата е автоматично записана на';
+$lang['minoredit'] = 'Промените са незначителни';
+$lang['draftdate'] = 'Черновата е автоматично записана на'; // full dformat date will be added
$lang['nosecedit'] = 'Страницата бе междувременно променена, презареждане на страницата поради неактуална информация.';
+
$lang['regmissing'] = 'Моля, попълнете всички полета.';
$lang['reguexists'] = 'Вече съществува потребител с избраното име.';
$lang['regsuccess'] = 'Потребителят е създаден, а паролата е пратена по електронната поща.';
@@ -72,20 +75,24 @@ $lang['regbadmail'] = 'Въведеният адрес изглежд
$lang['regbadpass'] = 'Двете въведени пароли не съвпадат, моля опитайте отново.';
$lang['regpwmail'] = 'Паролата ви за DokuWiki';
$lang['reghere'] = 'Все още нямате профил? Направете си';
+
$lang['profna'] = 'Wiki-то не поддържа промяна на профила';
$lang['profnochange'] = 'Няма промени.';
$lang['profnoempty'] = 'Въвеждането на име и ел. поща е задължително';
$lang['profchanged'] = 'Потребителският профил е обновен успешно.';
+
$lang['pwdforget'] = 'Забравили сте паролата си? Получете нова';
$lang['resendna'] = 'Wiki-то не поддържа повторно пращане на паролата.';
-$lang['resendpwd'] = 'Изпращане на нова парола за';
+$lang['resendpwd'] = 'Задаване на нова парола за';
$lang['resendpwdmissing'] = 'Моля, попълнете всички полета.';
$lang['resendpwdnouser'] = 'Потребителят не е намерен в базата от данни.';
$lang['resendpwdbadauth'] = 'Кодът за потвърждение е невалиден. Проверете дали сте използвали целия линк за потвърждение.';
$lang['resendpwdconfirm'] = 'Линк за потвърждение е пратен по електронната поща.';
$lang['resendpwdsuccess'] = 'Новата ви паролата е пратена по електронната поща.';
+
$lang['license'] = 'Ако не е посочено друго, съдържанието на Wiki-то е лицензирано под следния лиценз:';
-$lang['licenseok'] = 'Бележка: Редактирайки страницата, вие се съгласявате да лицензирате промените (които сте направили) под следния лиценз:';
+$lang['licenseok'] = 'Бележка: Редактирайки страницата, Вие се съгласявате да лицензирате промените (които сте направили) под следния лиценз:';
+
$lang['searchmedia'] = 'Търсене на файл: ';
$lang['searchmedia_in'] = 'Търсене в %s';
$lang['txt_upload'] = 'Изберете файл за качване';
@@ -93,6 +100,7 @@ $lang['txt_filename'] = 'Качи като (незадължителн
$lang['txt_overwrt'] = 'Презапиши съществуващите файлове';
$lang['lockedby'] = 'В момента е заключена от';
$lang['lockexpire'] = 'Ще бъде отключена на';
+
$lang['js']['willexpire'] = 'Страницата ще бъде отключена за редактиране след минута.\nЗа предотвратяване на конфликти, ползвайте бутона "Преглед", за рестартиране на брояча за заключване.';
$lang['js']['notsavedyet'] = 'Незаписаните промени ще бъдат загубени. Желаете ли да продължите?';
$lang['js']['searchmedia'] = 'Търсене на файлове';
@@ -119,8 +127,7 @@ $lang['js']['medialeft'] = 'Подреди изображението от
$lang['js']['mediaright'] = 'Подреди изображението отдясно.';
$lang['js']['mediacenter'] = 'Подреди изображението по средата.';
$lang['js']['medianoalign'] = 'Без подреждане.';
-$lang['js']['nosmblinks'] = 'Връзките към Windows shares работят само под Internet Explorer.
-Можете да копирате и поставите връзката.';
+$lang['js']['nosmblinks'] = 'Връзките към Windows shares работят само под Internet Explorer.<br />Можете да копирате и поставите връзката.';
$lang['js']['linkwiz'] = 'Помощник за препратки';
$lang['js']['linkto'] = 'Препратка към: ';
$lang['js']['del_confirm'] = 'Да бъдат ли изтрити избраните елементи?';
@@ -135,8 +142,10 @@ $lang['js']['media_done_btn'] = 'Готово';
$lang['js']['media_drop'] = 'Влачете и пуснете файливе тук, за да бъдат качени';
$lang['js']['media_cancel'] = 'премахване';
$lang['js']['media_overwrt'] = 'Презапиши съществуващите файлове';
+
$lang['rssfailed'] = 'Възникна грешка при получаването на емисията: ';
$lang['nothingfound'] = 'Нищо не е открито.';
+
$lang['mediaselect'] = 'Файлове';
$lang['fileupload'] = 'Качване на файлове';
$lang['uploadsucc'] = 'Качването е успешно';
@@ -161,6 +170,7 @@ $lang['mediaextchange'] = 'Разширението на файла е с
$lang['reference'] = 'Връзки за';
$lang['ref_inuse'] = 'Файлът не може да бъде изтрит, защото все още се ползва от следните страници:';
$lang['ref_hidden'] = 'Някои връзки са към страници, които нямате права да четете';
+
$lang['hits'] = 'Съвпадения';
$lang['quickhits'] = 'Съвпадащи имена на страници';
$lang['toc'] = 'Съдържание';
@@ -184,15 +194,23 @@ $lang['external_edit'] = 'външна редакция';
$lang['summary'] = 'Обобщение';
$lang['noflash'] = 'Необходим е <a href="http://www.adobe.com/products/flashplayer/">Adobe Flash Plugin</a> за изобразяване на съдържанието.';
$lang['download'] = 'Изтегляне на фрагмент';
+$lang['tools'] = 'Инструменти';
+$lang['user_tools'] = 'Инструменти за потребители';
+$lang['site_tools'] = 'Инструменти за сайта';
+$lang['page_tools'] = 'Инструменти за страници';
+$lang['skip_to_content'] = 'към съдържанието';
+
$lang['mail_newpage'] = 'добавена страница: ';
$lang['mail_changed'] = 'променена страница: ';
$lang['mail_subscribe_list'] = 'променени страници в именно пространство: ';
$lang['mail_new_user'] = 'нов потребител: ';
$lang['mail_upload'] = 'качен файл: ';
+
$lang['changes_type'] = 'Преглед на променените';
$lang['pages_changes'] = 'Страници';
$lang['media_changes'] = 'Файлове';
$lang['both_changes'] = 'Страници и файлове';
+
$lang['qb_bold'] = 'Удебелен текст';
$lang['qb_italic'] = 'Курсив текст';
$lang['qb_underl'] = 'Подчертан текст';
@@ -217,8 +235,11 @@ $lang['qb_media'] = 'Добавяне на изображения
$lang['qb_sig'] = 'Вмъкване на подпис';
$lang['qb_smileys'] = 'Усмивчици';
$lang['qb_chars'] = 'Специални знаци';
+
$lang['upperns'] = 'към майчиното именно пространство';
+
$lang['admin_register'] = 'Добавяне на нов потребител';
+
$lang['metaedit'] = 'Редактиране на метаданни';
$lang['metasaveerr'] = 'Записването на метаданните се провали';
$lang['metasaveok'] = 'Метаданните са запазени успешно';
@@ -236,6 +257,7 @@ $lang['img_keywords'] = 'Ключови думи';
$lang['img_width'] = 'Ширина';
$lang['img_height'] = 'Височина';
$lang['img_manager'] = 'Преглед в диспечера на файлове';
+
$lang['subscr_subscribe_success'] = '%s е добавен към списъка с абониралите се за %s';
$lang['subscr_subscribe_error'] = 'Грешка при добавянето на %s към списъка с абониралите се за %s';
$lang['subscr_subscribe_noaddress'] = 'Добавянето ви към списъка с абонати не е възможно поради липсата на свързан адрес (на ел. поща) с профила ви.';
@@ -243,6 +265,7 @@ $lang['subscr_unsubscribe_success'] = '%s е премахнат от списъ
$lang['subscr_unsubscribe_error'] = 'Грешка при премахването на %s от списъка с абониралите се за %s';
$lang['subscr_already_subscribed'] = '%s е вече абониран за %s';
$lang['subscr_not_subscribed'] = '%s не е абониран за %s';
+// Manage page for subscriptions
$lang['subscr_m_not_subscribed'] = 'Не сте абониран за текущата страницата или именно пространство.';
$lang['subscr_m_new_header'] = 'Добави абонамент';
$lang['subscr_m_current_header'] = 'Текущи абонаменти';
@@ -252,15 +275,22 @@ $lang['subscr_m_receive'] = 'Получаване';
$lang['subscr_style_every'] = 'на ел. писмо при всяка промяна';
$lang['subscr_style_digest'] = 'на ел. писмо с обобщение на промените във всяка страница (всеки %.2f дни)';
$lang['subscr_style_list'] = 'на списък с променените страници от последното ел. писмо (всеки %.2f дни)';
+
+/* auth.class language support */
$lang['authmodfailed'] = 'Лоша настройки за удостоверяване. Моля, уведомете администратора на Wiki страницата.';
$lang['authtempfail'] = 'Удостоверяването на потребители не е възможно за момента. Ако продължи дълго, моля уведомете администратора на Wiki страницата.';
+$lang['authpwdexpire'] = 'Срока на паролата ви ще изтече след %d дни. Препорачително е да я смените по-скоро.';
+
+/* installer strings */
$lang['i_chooselang'] = 'Изберете вашия изик';
$lang['i_installer'] = 'Инсталатор на DokuWiki';
$lang['i_wikiname'] = 'Име на Wiki-то';
$lang['i_enableacl'] = 'Ползване на списък за достъп (ACL) [препоръчително]';
$lang['i_superuser'] = 'Супер потребител';
$lang['i_problems'] = 'Открити са проблеми, които възпрепятстват инсталирането. Ще можете да продължите след като отстраните долуизброените проблеми.';
-$lang['i_modified'] = 'Поради мерки за сигурност инсталаторът работи само с нови и непроменени инсталационни файлове. Трябва да разархивирате отново файловете от сваления архив или да се посъветвате с <a href="http://dokuwiki.org/install">Инструкциите за инсталиране на Dokuwiki</a>.';
+$lang['i_modified'] = 'Поради мерки за сигурност инсталаторът работи само с нови и непроменени инсталационни файлове.
+ Трябва да разархивирате отново файловете от сваления архив или да се посъветвате с <a href="http://dokuwiki.org/install">Инструкциите за инсталиране на Dokuwiki</a>.';
+
$lang['i_funcna'] = 'PHP функцията <code>%s</code> не е достъпна. Може би е забранена от доставчика на хостинг.';
$lang['i_phpver'] = 'Инсталираната версия <code>%s</code> на PHP е по-стара от необходимата <code>%s</code>. Актуализирайте PHP инсталацията.';
$lang['i_permfail'] = '<code>%s</code> не е достъпна за писане от DokuWiki. Трябва да промените правата за достъп до директорията!';
@@ -269,29 +299,16 @@ $lang['i_writeerr'] = '<code>%s</code> не можа да бъде с
$lang['i_badhash'] = 'Файлът dokuwiki.php не може да бъде разпознат или е променен (hash=<code>%s</code>)';
$lang['i_badval'] = '<code>%s</code> - непозволена или празна стойност';
$lang['i_success'] = 'Настройването приключи успешно. Вече можете да изтриете файла install.php. Продължете към <a href="doku.php">Вашето ново DokuWiki</a>.';
-$lang['i_failure'] = 'Възникнаха грешки при записването на файловете с настройки. Вероятно ще се наложи да ги поправите ръчно, за да можете да ползвате <a href="doku.php">Вашето ново DokuWiki</a>.';
+
+$lang['i_failure'] = 'Възникнаха грешки при записването на файловете с настройки. Вероятно ще се наложи да ги поправите ръчно,
+ за да можете да ползвате <a href="doku.php">Вашето ново DokuWiki</a>.';
$lang['i_policy'] = 'Първоначална политика за достъп';
$lang['i_pol0'] = 'Отворено Wiki (всеки може да чете, пише и качва)';
$lang['i_pol1'] = 'Публично Wiki (всеки може да чете, само регистрирани пишат и качват)';
$lang['i_pol2'] = 'Затворено Wiki (само регистрирани четат, пишат и качват)';
$lang['i_retry'] = 'Повторен опит';
$lang['i_license'] = 'Моля, изберете лиценз под който желаете да публикувате съдържанието:';
-$lang['mu_intro'] = 'От тук можете да качите няколко файла наведнъж. Натиснете бутона "Избиране", изберете файлове и натиснете "Качване".
-';
-$lang['mu_gridname'] = 'Име на файла';
-$lang['mu_gridsize'] = 'Големина';
-$lang['mu_gridstat'] = 'Състояние';
-$lang['mu_namespace'] = 'Именно пространство';
-$lang['mu_browse'] = 'Избиране';
-$lang['mu_toobig'] = 'прекалено голям';
-$lang['mu_ready'] = 'готов за качване';
-$lang['mu_done'] = 'качен';
-$lang['mu_fail'] = 'неуспешно качване';
-$lang['mu_authfail'] = 'приключила сесия';
-$lang['mu_progress'] = '@PCT@% качен';
-$lang['mu_filetypes'] = 'Позволени файлови разширения';
-$lang['mu_info'] = 'качени файла.';
-$lang['mu_lasterr'] = 'Последна грешка:';
+
$lang['recent_global'] = 'В момента преглеждате промените в именно пространство <b>%s</b>. Може да прегледате и <a href="%s">промените в цялото Wiki</a>.';
$lang['years'] = 'преди %d години';
$lang['months'] = 'преди %d месеца';
@@ -300,7 +317,9 @@ $lang['days'] = 'преди %d дни';
$lang['hours'] = 'преди %d часа';
$lang['minutes'] = 'преди %d минути';
$lang['seconds'] = 'преди %d секунди';
-$lang['wordblock'] = 'Направените от вас промени не са съхранени, защото съдържат забранен текст (SPAM).';
+
+$lang['wordblock'] = 'Направените от Вас промени не са съхранени, защото съдържат забранен текст (SPAM).';
+
$lang['media_uploadtab'] = 'Качване';
$lang['media_searchtab'] = 'Търсене';
$lang['media_file'] = 'Файл';
@@ -311,7 +330,7 @@ $lang['media_list_thumbs'] = 'Миниатюри';
$lang['media_list_rows'] = 'Редове';
$lang['media_sort_name'] = 'Име';
$lang['media_sort_date'] = 'Дата';
-$lang['media_namespaces'] = 'Изберете именно пространство';
+$lang['media_namespaces'] = 'Изберете:';
$lang['media_files'] = 'Файлове в %s';
$lang['media_upload'] = 'Качване в %s';
$lang['media_search'] = 'Търсене в %s';
@@ -324,4 +343,7 @@ $lang['media_perm_read'] = 'За съжаление нямате дост
$lang['media_perm_upload'] = 'За съжаление нямате достатъчно права, за да можете да качите файла.';
$lang['media_update'] = 'Качване на нова версия';
$lang['media_restore'] = 'Възстановяване на тази версия';
+
$lang['plugin_install_err'] = 'Неправилно инсталирана приставка. Моля, преименувайте директорията \'%s\' на \'%s\'.';
+
+//Setup VIM: ex: et ts=2 :
diff --git a/inc/lang/bg/resetpwd.txt b/inc/lang/bg/resetpwd.txt
new file mode 100644
index 000000000..caa4adfdc
--- /dev/null
+++ b/inc/lang/bg/resetpwd.txt
@@ -0,0 +1,4 @@
+====== Задаване на нова парола ======
+
+Моля, въведете нова парола за вашия акаунт в Wiki страницата.
+
diff --git a/inc/lang/ca-valencia/lang.php b/inc/lang/ca-valencia/lang.php
index eac9fc8d1..e299f6427 100644
--- a/inc/lang/ca-valencia/lang.php
+++ b/inc/lang/ca-valencia/lang.php
@@ -41,7 +41,6 @@ $lang['btn_subscribe'] = 'Subscriure\'s a la pàgina';
$lang['btn_unsubscribe'] = 'Desubscriure\'s de la pàgina';
$lang['btn_profile'] = 'Actualisar perfil';
$lang['btn_reset'] = 'Reiniciar';
-$lang['btn_resendpwd'] = 'Enviar contrasenya nova';
$lang['btn_draft'] = 'Editar borrador';
$lang['btn_recover'] = 'Recuperar borrador';
$lang['btn_draftdel'] = 'Borrar borrador';
@@ -76,7 +75,6 @@ $lang['profnoempty'] = 'No es permet deixar el nom o la direcció de c
$lang['profchanged'] = 'Perfil de l\'usuari actualisat.';
$lang['pwdforget'] = '¿Ha oblidat la contrasenya? Demane\'n una nova';
$lang['resendna'] = 'Este wiki no permet reenviar la contrasenya.';
-$lang['resendpwd'] = 'Enviar contrasenya nova per a';
$lang['resendpwdmissing'] = 'Disculpe, pero deu omplir tots els camps.';
$lang['resendpwdnouser'] = 'Disculpe, pero no trobem ad est usuari en la base de senyes.';
$lang['resendpwdbadauth'] = 'Disculpe, pero este còdic d\'autenticació no es vàlit. Verifique que haja utilisat el víncul de confirmació sancer.';
@@ -221,21 +219,6 @@ $lang['i_pol0'] = 'Wiki obert (llegir, escriure i enviar tots)';
$lang['i_pol1'] = 'Wiki públic (llegir tots, escriure i enviar només usuaris registrats)';
$lang['i_pol2'] = 'Wiki tancat (llegir, escriure i enviar només usuaris registrats)';
$lang['i_retry'] = 'Reintentar';
-$lang['mu_intro'] = 'Des d\'ací pot enviar diversos archius d\'una volta. Pulse el botó d\'examinar per a afegir-los a la coa. Pulse enviar quan ho tinga.';
-$lang['mu_gridname'] = 'Nom d\'archiu';
-$lang['mu_gridsize'] = 'Tamany';
-$lang['mu_gridstat'] = 'Estat';
-$lang['mu_namespace'] = 'Espai de noms';
-$lang['mu_browse'] = 'Examinar';
-$lang['mu_toobig'] = 'massa gran';
-$lang['mu_ready'] = 'preparat per a enviar';
-$lang['mu_done'] = 'complet';
-$lang['mu_fail'] = 'fallit';
-$lang['mu_authfail'] = 'la sessió ha vençut';
-$lang['mu_progress'] = '@PCT@% enviat';
-$lang['mu_filetypes'] = 'Classes d\'archiu permeses';
-$lang['mu_info'] = 'archius enviats.';
-$lang['mu_lasterr'] = 'Últim erro:';
$lang['recent_global'] = 'Està veent els canvis dins de l\'espai de noms <b>%s</b>. També pot <a href="%s">vore els canvis recents en el wiki sancer</a>.';
$lang['years'] = 'fa %d anys';
$lang['months'] = 'fa %d mesos';
diff --git a/inc/lang/ca/lang.php b/inc/lang/ca/lang.php
index 7094df5b4..3a1412617 100644
--- a/inc/lang/ca/lang.php
+++ b/inc/lang/ca/lang.php
@@ -41,7 +41,6 @@ $lang['btn_subscribe'] = 'Subscripció a canvis d\'aquesta pàgina';
$lang['btn_unsubscribe'] = 'Cancel·la subscripció a pàgina';
$lang['btn_profile'] = 'Actualització del perfil';
$lang['btn_reset'] = 'Reinicia';
-$lang['btn_resendpwd'] = 'Envia nova contrasenya';
$lang['btn_draft'] = 'Edita esborrany';
$lang['btn_recover'] = 'Recupera esborrany';
$lang['btn_draftdel'] = 'Suprimeix esborrany';
@@ -76,7 +75,6 @@ $lang['profnoempty'] = 'No es pot deixar en blanc el nom o l\'adreça
$lang['profchanged'] = 'El perfil d\'usuari s\'ha actualitzat correctament.';
$lang['pwdforget'] = 'Heu oblidat la contrasenya? Podeu obtenir-ne una de nova.';
$lang['resendna'] = 'Aquest wiki no permet tornar a enviar la contrasenya.';
-$lang['resendpwd'] = 'Enviament d\'una nova contrasenya per a';
$lang['resendpwdmissing'] = 'Heu d\'emplenar tots els camps.';
$lang['resendpwdnouser'] = 'No s\'ha pogut trobar aquest usuari a la base de dades.';
$lang['resendpwdbadauth'] = 'Aquest codi d\'autenticació no és vàlid. Assegureu-vos d\'utilitzar l\'enllaç de confirmació complet.';
@@ -217,21 +215,6 @@ $lang['i_pol0'] = 'Wiki obert (tothom pot llegir, escriure i penj
$lang['i_pol1'] = 'Wiki públic (tothom pot llegir, els usuaris registrats poden escriure i penjar fitxers)';
$lang['i_pol2'] = 'Wiki tancat (només els usuaris registrats poden llegir, escriure i penjar fitxers)';
$lang['i_retry'] = 'Reintenta';
-$lang['mu_intro'] = 'Aquí podeu penjar múltiples fitxers d\'una vegada. Feu clic en el botó Explora per afegir els fitxers a la cua. Després, premeu Penja.';
-$lang['mu_gridname'] = 'Nom del fitxer';
-$lang['mu_gridsize'] = 'Mida';
-$lang['mu_gridstat'] = 'Estat';
-$lang['mu_namespace'] = 'Espai';
-$lang['mu_browse'] = 'Explora';
-$lang['mu_toobig'] = 'massa gran';
-$lang['mu_ready'] = 'llest per a penjar';
-$lang['mu_done'] = 'complet';
-$lang['mu_fail'] = 'error';
-$lang['mu_authfail'] = 'la sessió ha vençut';
-$lang['mu_progress'] = 'càrrega @PCT@%';
-$lang['mu_filetypes'] = 'Tipus de fitxer permesos';
-$lang['mu_info'] = 'fitxers penjats.';
-$lang['mu_lasterr'] = 'Darrer error:';
$lang['recent_global'] = 'Esteu veient els canvis recents de l\'espai <strong>%s</strong>. També podeu veure els <a href="%s">canvis recents de tot el wiki</a>.';
$lang['years'] = 'fa %d anys';
$lang['months'] = 'fa %d mesos';
diff --git a/inc/lang/cs/lang.php b/inc/lang/cs/lang.php
index 292c2c42e..608beafd8 100644
--- a/inc/lang/cs/lang.php
+++ b/inc/lang/cs/lang.php
@@ -10,6 +10,8 @@
* @author Marek Sacha <sachamar@fel.cvut.cz>
* @author Lefty <lefty@multihost.cz>
* @author Vojta Beran <xmamut@email.cz>
+ * @author zbynek.krivka@seznam.cz
+ * @author Bohumir Zamecnik <bohumir.zamecnik@gmail.com>
*/
$lang['encoding'] = 'utf-8';
$lang['direction'] = 'ltr';
@@ -45,12 +47,13 @@ $lang['btn_backtomedia'] = 'Zpět do Výběru dokumentu';
$lang['btn_subscribe'] = 'Odebírat emailem změny stránky';
$lang['btn_profile'] = 'Upravit profil';
$lang['btn_reset'] = 'Reset';
-$lang['btn_resendpwd'] = 'Zaslat nové heslo';
$lang['btn_draft'] = 'Upravit koncept';
$lang['btn_recover'] = 'Obnovit koncept';
$lang['btn_draftdel'] = 'Vymazat koncept';
$lang['btn_revert'] = 'Vrátit zpět';
$lang['btn_register'] = 'Registrovat';
+$lang['btn_apply'] = 'Použít';
+$lang['btn_media'] = 'Správa médií';
$lang['loggedinas'] = 'Přihlášen(a) jako';
$lang['user'] = 'Uživatelské jméno';
$lang['pass'] = 'Heslo';
@@ -80,7 +83,6 @@ $lang['profnoempty'] = 'Nelze zadat prázdné jméno nebo mailová adr
$lang['profchanged'] = 'Uživatelský profil změněn.';
$lang['pwdforget'] = 'Zapomněli jste heslo? Nechte si zaslat nové';
$lang['resendna'] = 'Tato wiki neumožňuje zasílání nových hesel.';
-$lang['resendpwd'] = 'Odeslat nové heslo pro uživatele';
$lang['resendpwdmissing'] = 'Musíte vyplnit všechny položky.';
$lang['resendpwdnouser'] = 'Bohužel takový uživatel v systému není.';
$lang['resendpwdbadauth'] = 'Autorizační kód není platný. Zadali jste opravdu celý odkaz na potvrzovací stránku?';
@@ -95,7 +97,7 @@ $lang['txt_filename'] = 'Wiki jméno (volitelné)';
$lang['txt_overwrt'] = 'Přepsat existující soubor';
$lang['lockedby'] = 'Právě zamknuto:';
$lang['lockexpire'] = 'Zámek vyprší:';
-$lang['js']['willexpire'] = 'Váš zámek pro editaci za chvíli vyprší.\nAbyste předešli konfliktům, stiskněte tlačítko Náhled a zámek se prodlouží.';
+$lang['js']['willexpire'] = 'Váš zámek pro editaci za chvíli vyprší.\nAbyste předešli konfliktům, stiskněte tlačítko Náhled a zámek se prodlouží.';
$lang['js']['notsavedyet'] = 'Jsou tu neuložené změny, které budou ztraceny.
Chcete opravdu pokračovat?';
$lang['js']['searchmedia'] = 'Hledat soubory';
@@ -127,6 +129,17 @@ Přesto tento odkaz můžete zkopírovat a vložit jinde.';
$lang['js']['linkwiz'] = 'Průvodce odkazy';
$lang['js']['linkto'] = 'Odkaz na:';
$lang['js']['del_confirm'] = 'Vymazat tuto položku?';
+$lang['js']['restore_confirm'] = 'Opravdu obnovit tuto verzi?';
+$lang['js']['media_diff'] = 'Prohlédnout rozdíly:';
+$lang['js']['media_diff_both'] = 'Vedle sebe';
+$lang['js']['media_diff_opacity'] = 'Zvýraznění';
+$lang['js']['media_diff_portions'] = 'Osvědčit';
+$lang['js']['media_select'] = 'Vybrat soubory...';
+$lang['js']['media_upload_btn'] = 'Nahrát';
+$lang['js']['media_done_btn'] = 'Hotovo';
+$lang['js']['media_drop'] = 'Sem přetáhněte soubory pro nahrátí';
+$lang['js']['media_cancel'] = 'odstranit';
+$lang['js']['media_overwrt'] = 'Přepsat existující soubory';
$lang['rssfailed'] = 'Nastala chyba při vytváření tohoto RSS: ';
$lang['nothingfound'] = 'Nic nenalezeno.';
$lang['mediaselect'] = 'Výběr dokumentu';
@@ -161,7 +174,7 @@ $lang['yours'] = 'Vaše verze';
$lang['diff'] = 'Zobrazit rozdíly vůči aktuální verzi';
$lang['diff2'] = 'Zobrazit rozdíly mezi vybranými verzemi';
$lang['difflink'] = 'Odkaz na výstup diff';
-$lang['diff_type'] = 'Prohlédnout rozdíly:';
+$lang['diff_type'] = 'Zobrazit rozdíly:';
$lang['diff_inline'] = 'Vložené';
$lang['diff_side'] = 'Přidané';
$lang['line'] = 'Řádek';
@@ -176,11 +189,20 @@ $lang['external_edit'] = 'upraveno mimo DokuWiki';
$lang['summary'] = 'Komentář k úpravám';
$lang['noflash'] = 'Pro přehrání obsahu potřebujete <a href="http://www.adobe.com/products/flashplayer/">Adobe Flash Plugin</a>.';
$lang['download'] = 'Stáhnout snippet';
+$lang['tools'] = 'Nástroje';
+$lang['user_tools'] = 'Uživatelské nástroje';
+$lang['site_tools'] = 'Nástroje pro tento web';
+$lang['page_tools'] = 'Nástroje pro stránku';
+$lang['skip_to_content'] = 'jít k obsahu';
$lang['mail_newpage'] = 'nová stránka:';
$lang['mail_changed'] = 'změna stránky:';
$lang['mail_subscribe_list'] = 'stránky změněné ve jmenném prostoru:';
$lang['mail_new_user'] = 'nový uživatel:';
$lang['mail_upload'] = 'načtený dokument:';
+$lang['changes_type'] = 'Prohlednou změny ';
+$lang['pages_changes'] = 'stránek';
+$lang['media_changes'] = 'souborů médií';
+$lang['both_changes'] = 'stránek i médií';
$lang['qb_bold'] = 'Tučně';
$lang['qb_italic'] = 'Kurzíva';
$lang['qb_underl'] = 'Podtržení';
@@ -221,6 +243,9 @@ $lang['img_copyr'] = 'Copyright';
$lang['img_format'] = 'Formát';
$lang['img_camera'] = 'Typ fotoaparátu';
$lang['img_keywords'] = 'Klíčová slova';
+$lang['img_width'] = 'Šířka';
+$lang['img_height'] = 'Výška';
+$lang['img_manager'] = 'Zobrazit ve správě médií';
$lang['subscr_subscribe_success'] = '%s byl přihlášen do seznamu odběratelů %s';
$lang['subscr_subscribe_error'] = 'Došlo k chybě při přihlašování %s do seznamu odběratelů %s';
$lang['subscr_subscribe_noaddress'] = 'K Vašemu loginu neexistuje žádná adresa, nemohl jste být přihlášen do seznamu odběratelů.';
@@ -235,8 +260,8 @@ $lang['subscr_m_unsubscribe'] = 'Odhlásit z odběru změn emailem';
$lang['subscr_m_subscribe'] = 'Přihlásit se k odběru změn emailem';
$lang['subscr_m_receive'] = 'Přejete si dostávat';
$lang['subscr_style_every'] = 'email pro každou změnu';
-$lang['subscr_style_digest'] = 'souhrnný email změn pro každou stránku';
-$lang['subscr_style_list'] = 'seznam změněných stránek od posledního emailu';
+$lang['subscr_style_digest'] = 'souhrnný email změn pro každou stránku (každé %.2f dny/dní)';
+$lang['subscr_style_list'] = 'seznam změněných stránek od posledního emailu (každé %.2f dny/dní)';
$lang['authmodfailed'] = 'Autentizace uživatelů je špatně nastavena. Informujte prosím správce této wiki.';
$lang['authtempfail'] = 'Autentizace uživatelů je dočasně nedostupná. Pokud tento problém přetrvává, informujte prosím správce této wiki.';
$lang['i_chooselang'] = 'Vyberte si jazyk';
@@ -245,7 +270,7 @@ $lang['i_wikiname'] = 'Název wiki';
$lang['i_enableacl'] = 'Zapnout ACL (doporučeno)';
$lang['i_superuser'] = 'Správce';
$lang['i_problems'] = 'Instalátor narazil na níže popsané problémy. Nelze pokračovat v instalaci, dokud je neopravíte.';
-$lang['i_modified'] = 'Instalátor bude z bezpečnostních důvodů pracovat pouze s čistou a ještě neupravenou instalací DokuWiki. Buď znovu rozbalte souboru z instalačního balíčku nebo se zkuste poradit s <a href="http://dokuwiki.org/install">instrukcemi pro instalaci DokuWiki</a>.';
+$lang['i_modified'] = 'Instalátor bude z bezpečnostních důvodů pracovat pouze s čistou a ještě neupravenou instalací DokuWiki. Buď znovu rozbalte soubory z instalačního balíčku, nebo zkuste prostudovat <a href="http://dokuwiki.org/install">instrukce pro instalaci DokuWiki</a>.';
$lang['i_funcna'] = 'PHP funkce <code>%s</code> není dostupná. Váš webhosting ji možná z nějakého důvodu vypnul.';
$lang['i_phpver'] = 'Verze vaší instalace PHP <code>%s</code> je nižší než požadovaná <code>%s</code>. Budete muset aktualizovat svou instalaci PHP.';
$lang['i_permfail'] = 'DokuWiki nemůže zapisovat do <code>%s</code>. Budete muset opravit práva k tomuto adresáři.';
@@ -261,27 +286,36 @@ $lang['i_pol1'] = 'Veřejná wiki (čtení pro všechny, zápis a
$lang['i_pol2'] = 'Uzavřená wiki (čtení, zápis a upload pouze pro registrované uživatele)';
$lang['i_retry'] = 'Zkusit znovu';
$lang['i_license'] = 'Vyberte prosím licenci obsahu:';
-$lang['mu_intro'] = 'Zde můžete načíst více souborů najednou. Pro přidání souborů do fronty stiskněte tlačítko "Procházet". Až budete hotovi, stiskněte "Načíst".';
-$lang['mu_gridname'] = 'Název souboru';
-$lang['mu_gridsize'] = 'Velikost';
-$lang['mu_gridstat'] = 'Stav';
-$lang['mu_namespace'] = 'Jmenný prostor';
-$lang['mu_browse'] = 'Procházet';
-$lang['mu_toobig'] = 'příliš velké';
-$lang['mu_ready'] = 'připraveno k načtení';
-$lang['mu_done'] = 'hotovo';
-$lang['mu_fail'] = 'selhalo';
-$lang['mu_authfail'] = 'vypršela session';
-$lang['mu_progress'] = '@PCT@% načten';
-$lang['mu_filetypes'] = 'Povolené typy souborů';
-$lang['mu_info'] = 'soubory načteny.';
-$lang['mu_lasterr'] = 'Poslední chyba:';
$lang['recent_global'] = 'Právě si prohlížíte změny ve jmenném prostoru <b>%s</b>. Také si můžete <a href="%s">zobrazit změny v celé wiki</a>.';
-$lang['years'] = 'před % roky';
-$lang['months'] = 'před % měsíci';
-$lang['weeks'] = 'před % týdny';
-$lang['days'] = 'před % dny';
-$lang['hours'] = 'před % hodinami';
-$lang['minutes'] = 'před % minutami';
-$lang['seconds'] = 'před % sekundami';
+$lang['years'] = 'před %d roky';
+$lang['months'] = 'před %d měsíci';
+$lang['weeks'] = 'před %d týdny';
+$lang['days'] = 'před %d dny';
+$lang['hours'] = 'před %d hodinami';
+$lang['minutes'] = 'před %d minutami';
+$lang['seconds'] = 'před %d sekundami';
$lang['wordblock'] = 'Vaše změny nebyly uloženy, protože obsahují blokovaný text(spam).';
+$lang['media_uploadtab'] = 'Nahrát';
+$lang['media_searchtab'] = 'Hledat';
+$lang['media_file'] = 'Soubor';
+$lang['media_viewtab'] = 'Zobrazit';
+$lang['media_edittab'] = 'Upravit';
+$lang['media_historytab'] = 'Historie';
+$lang['media_list_thumbs'] = 'Zmenšeniny';
+$lang['media_list_rows'] = 'Řádky';
+$lang['media_sort_name'] = 'Jméno';
+$lang['media_sort_date'] = 'Datum';
+$lang['media_namespaces'] = 'Vyber jmenný prostor';
+$lang['media_files'] = 'Soubory v %s';
+$lang['media_upload'] = 'Upload do %s';
+$lang['media_search'] = 'Hledat v %s';
+$lang['media_view'] = '%s';
+$lang['media_viewold'] = '%s na %s';
+$lang['media_edit'] = 'Upravit %s';
+$lang['media_history'] = 'Historie %s';
+$lang['media_meta_edited'] = 'metadata upravena';
+$lang['media_perm_read'] = 'Bohužel, nemáte práva číst soubory.';
+$lang['media_perm_upload'] = 'Bohužel, nemáte práva nahrávat soubory.';
+$lang['media_update'] = 'Nahrát novou verzi';
+$lang['media_restore'] = 'Obnovit tuto verzi';
+$lang['plugin_install_err'] = 'Plugin je špatně nainstalován. Přejmenujte adresář pluginu \'%s\' na \'%s\'.';
diff --git a/inc/lang/da/lang.php b/inc/lang/da/lang.php
index 0b6961921..641ea6552 100644
--- a/inc/lang/da/lang.php
+++ b/inc/lang/da/lang.php
@@ -48,7 +48,6 @@ $lang['btn_backtomedia'] = 'Tilbage til valg af mediefil';
$lang['btn_subscribe'] = 'Abonnér på ændringer';
$lang['btn_profile'] = 'Opdatér profil';
$lang['btn_reset'] = 'Nulstil';
-$lang['btn_resendpwd'] = 'Send ny adgangskode';
$lang['btn_draft'] = 'Redigér kladde';
$lang['btn_recover'] = 'Gendan kladde';
$lang['btn_draftdel'] = 'Slet kladde';
@@ -83,7 +82,6 @@ $lang['profnoempty'] = 'Tomt navn eller e-mail adresse er ikke tilladt
$lang['profchanged'] = 'Brugerprofil opdateret korrekt.';
$lang['pwdforget'] = 'Har du glemt dit adgangskode? Få et nyt';
$lang['resendna'] = 'Denne wiki understøtter ikke udsendelse af nyt adgangskode.';
-$lang['resendpwd'] = 'Send nyt adgangskode for';
$lang['resendpwdmissing'] = 'Du skal udfylde alle felter.';
$lang['resendpwdnouser'] = 'Vi kan ikke finde denne bruger i vores database.';
$lang['resendpwdbadauth'] = 'Beklager, denne autoriseringskode er ikke gyldig. Kontroller venligst at du benyttede det fulde link til bekræftelse.';
@@ -262,21 +260,6 @@ $lang['i_pol1'] = 'Offentlig Wiki (alle kan læse, kun registrere
$lang['i_pol2'] = 'Lukket Wiki (kun for registerede brugere kan læse, skrive og overføre)';
$lang['i_retry'] = 'Forsøg igen';
$lang['i_license'] = 'Vælg venligst licensen du vil tilføje dit indhold under:';
-$lang['mu_intro'] = 'Her kan du overføre flere filer af gangen. Klik på gennemse for at tilføje dem til køen. Tryk på overføre knappen når du er klar.';
-$lang['mu_gridname'] = 'Filnavn';
-$lang['mu_gridsize'] = 'Størrelse';
-$lang['mu_gridstat'] = 'Status';
-$lang['mu_namespace'] = 'Navnerum';
-$lang['mu_browse'] = 'gennemse';
-$lang['mu_toobig'] = 'for stor';
-$lang['mu_ready'] = 'klar til overføre';
-$lang['mu_done'] = 'færdig';
-$lang['mu_fail'] = 'fejlede';
-$lang['mu_authfail'] = 'session udløb';
-$lang['mu_progress'] = '@PCT@% upload';
-$lang['mu_filetypes'] = 'Tilladte filtyper';
-$lang['mu_info'] = 'filer var overføret.';
-$lang['mu_lasterr'] = 'Sidste fejl:';
$lang['recent_global'] = 'Du ser lige nu ændringerne i <b>%s</b> navnerummet. Du kan også <a href="%s">se de sidste ændringer for hele wiki siden </a>';
$lang['years'] = '%d år siden';
$lang['months'] = '%d måned siden';
diff --git a/inc/lang/de-informal/lang.php b/inc/lang/de-informal/lang.php
index ec5e308ce..093125aa6 100644
--- a/inc/lang/de-informal/lang.php
+++ b/inc/lang/de-informal/lang.php
@@ -54,7 +54,7 @@ $lang['btn_backtomedia'] = 'Zurück zur Dateiauswahl';
$lang['btn_subscribe'] = 'Aboverwaltung';
$lang['btn_profile'] = 'Benutzerprofil';
$lang['btn_reset'] = 'Zurücksetzen';
-$lang['btn_resendpwd'] = 'Sende neues Passwort';
+$lang['btn_resendpwd'] = 'Setze neues Passwort';
$lang['btn_draft'] = 'Entwurf bearbeiten';
$lang['btn_recover'] = 'Entwurf wiederherstellen';
$lang['btn_draftdel'] = 'Entwurf löschen';
@@ -91,7 +91,7 @@ $lang['profnoempty'] = 'Es muss ein Name oder eine E-Mail Adresse ange
$lang['profchanged'] = 'Benutzerprofil erfolgreich geändert.';
$lang['pwdforget'] = 'Passwort vergessen? Fordere ein neues an';
$lang['resendna'] = 'Passwörter versenden ist in diesem Wiki nicht möglich.';
-$lang['resendpwd'] = 'Neues Passwort senden für';
+$lang['resendpwd'] = 'Neues Passwort setzen für';
$lang['resendpwdmissing'] = 'Es tut mir Leid, aber du musst alle Felder ausfüllen.';
$lang['resendpwdnouser'] = 'Es tut mir Leid, aber der Benutzer existiert nicht in unserer Datenbank.';
$lang['resendpwdbadauth'] = 'Es tut mir Leid, aber dieser Authentifizierungscode ist ungültig. Stelle sicher, dass du den kompletten Bestätigungslink verwendet haben.';
@@ -155,7 +155,7 @@ $lang['uploadsucc'] = 'Datei wurde erfolgreich hochgeladen';
$lang['uploadfail'] = 'Hochladen fehlgeschlagen. Keine Berechtigung?';
$lang['uploadwrong'] = 'Hochladen verweigert. Diese Dateiendung ist nicht erlaubt.';
$lang['uploadexist'] = 'Datei existiert bereits. Keine Änderungen vorgenommen.';
-$lang['uploadbadcontent'] = 'Die hochgeladenen Daten stimmen nicht mit der Dateiendung % überein.';
+$lang['uploadbadcontent'] = 'Die hochgeladenen Daten stimmen nicht mit der Dateiendung %s überein.';
$lang['uploadspam'] = 'Hochladen verweigert: Treffer auf der Spamliste.';
$lang['uploadxss'] = 'Hochladen verweigert: Daten scheinen Schadcode zu enthalten.';
$lang['uploadsize'] = 'Die hochgeladene Datei war zu groß. (max. %s)';
@@ -168,7 +168,7 @@ $lang['accessdenied'] = 'Du hast keinen Zugriff auf diese Seite';
$lang['mediausage'] = 'Syntax zum Verwenden dieser Datei:';
$lang['mediaview'] = 'Originaldatei öffnen';
$lang['mediaroot'] = 'Wurzel';
-$lang['mediaupload'] = 'Lade hier eine Datei in den momentanen Namensraum hoch. Um Unterordner zu erstellen, stelle diese dem Dateinamen im Feld "Hochladen als" durch Doppelpunkt getrennt voran.';
+$lang['mediaupload'] = 'Lade hier eine Datei in den momentanen Namensraum hoch. Um Unterordner zu erstellen, stelle diese dem Dateinamen durch Doppelpunkt getrennt voran, nachdem Du die Datei ausgewählt hast.';
$lang['mediaextchange'] = 'Dateiendung vom .%s nach .%s geändert!';
$lang['reference'] = 'Verwendung von';
$lang['ref_inuse'] = 'Diese Datei kann nicht gelöscht werden, da sie noch von folgenden Seiten benutzt wird:';
@@ -288,21 +288,6 @@ $lang['i_pol1'] = 'Öffentliches Wiki (lesen für alle, schreiben
$lang['i_pol2'] = 'Geschlossenes Wiki (lesen, schreiben, hochladen nur für registrierte Nutzer)';
$lang['i_retry'] = 'Wiederholen';
$lang['i_license'] = 'Bitte wähle die Lizenz aus unter der die Wiki-Inhalte veröffentlicht werden sollen:';
-$lang['mu_intro'] = 'In diesem Bereich kannst du mehrere Dateien gleichzeitig hochladen. Benutze die Schaltfläche "Durchsuchen", um sie der Warteschlange zuzufügen. Betätige die Schaltfläche "Hochladen", um die Übertragung zu starten.';
-$lang['mu_gridname'] = 'Dateiname';
-$lang['mu_gridsize'] = 'Größe';
-$lang['mu_gridstat'] = 'Status';
-$lang['mu_namespace'] = 'Namensraum';
-$lang['mu_browse'] = 'Durchsuchen';
-$lang['mu_toobig'] = 'zu groß';
-$lang['mu_ready'] = 'bereit zum Hochladen';
-$lang['mu_done'] = 'fertig';
-$lang['mu_fail'] = 'gescheitert';
-$lang['mu_authfail'] = 'Sitzung abgelaufen';
-$lang['mu_progress'] = '@PCT@% hochgeladen';
-$lang['mu_filetypes'] = 'Erlaubte Dateitypen';
-$lang['mu_info'] = 'Dateien hochgeladen.';
-$lang['mu_lasterr'] = 'Letzter Fehler:';
$lang['recent_global'] = 'Im Moment siehst du die Änderungen im Namensraum <b>%s</b>. Du kannst auch <a href="%s">die Änderungen im gesamten Wiki sehen</a>.';
$lang['years'] = 'vor %d Jahren';
$lang['months'] = 'vor %d Monaten';
diff --git a/inc/lang/de/lang.php b/inc/lang/de/lang.php
index eef2f6632..63ffd3008 100644
--- a/inc/lang/de/lang.php
+++ b/inc/lang/de/lang.php
@@ -56,7 +56,7 @@ $lang['btn_backtomedia'] = 'Zurück zur Dateiauswahl';
$lang['btn_subscribe'] = 'Aboverwaltung';
$lang['btn_profile'] = 'Benutzerprofil';
$lang['btn_reset'] = 'Zurücksetzen';
-$lang['btn_resendpwd'] = 'Sende neues Passwort';
+$lang['btn_resendpwd'] = 'Setze neues Passwort';
$lang['btn_draft'] = 'Entwurf bearbeiten';
$lang['btn_recover'] = 'Entwurf wiederherstellen';
$lang['btn_draftdel'] = 'Entwurf löschen';
@@ -93,7 +93,7 @@ $lang['profnoempty'] = 'Es muss ein Name und eine E-Mail-Adresse angeg
$lang['profchanged'] = 'Benutzerprofil erfolgreich geändert.';
$lang['pwdforget'] = 'Passwort vergessen? Fordere ein neues an';
$lang['resendna'] = 'Passwörter versenden ist in diesem Wiki nicht möglich.';
-$lang['resendpwd'] = 'Neues Passwort senden für';
+$lang['resendpwd'] = 'Neues Passwort setzen für';
$lang['resendpwdmissing'] = 'Es tut mir Leid, aber Sie müssen alle Felder ausfüllen.';
$lang['resendpwdnouser'] = 'Es tut mir Leid, aber der Benutzer existiert nicht in unserer Datenbank.';
$lang['resendpwdbadauth'] = 'Es tut mir Leid, aber dieser Authentifizierungscode ist ungültig. Stellen Sie sicher, dass Sie den kompletten Bestätigungslink verwendet haben.';
@@ -170,7 +170,7 @@ $lang['accessdenied'] = 'Es ist Ihnen nicht gestattet, diese Seite zu s
$lang['mediausage'] = 'Syntax zum Verwenden dieser Datei:';
$lang['mediaview'] = 'Originaldatei öffnen';
$lang['mediaroot'] = 'Wurzel';
-$lang['mediaupload'] = 'Laden Sie hier eine Datei in den momentanen Namensraum hoch. Um Unterordner zu erstellen, stellen Sie diese dem Dateinamen im Feld "Hochladen als" durch Doppelpunkt getrennt voran.';
+$lang['mediaupload'] = 'Laden Sie hier eine Datei in den momentanen Namensraum hoch. Um Unterordner zu erstellen, stellen Sie diese dem Dateinamen durch Doppelpunkt getrennt voran, nachdem Sie die Datei ausgewählt haben.';
$lang['mediaextchange'] = 'Dateiendung vom .%s nach .%s geändert!';
$lang['reference'] = 'Verwendung von';
$lang['ref_inuse'] = 'Diese Datei kann nicht gelöscht werden, da sie noch von folgenden Seiten benutzt wird:';
@@ -198,6 +198,11 @@ $lang['external_edit'] = 'Externe Bearbeitung';
$lang['summary'] = 'Zusammenfassung';
$lang['noflash'] = 'Das <a href="http://www.adobe.com/products/flashplayer/">Adobe Flash Plugin</a> wird benötigt, um diesen Inhalt anzuzeigen.';
$lang['download'] = 'Schnipsel herunterladen';
+$lang['tools'] = 'Werkzeuge';
+$lang['user_tools'] = 'Benutzer-Werkzeuge';
+$lang['site_tools'] = 'Webseiten-Werkzeuge';
+$lang['page_tools'] = 'Seiten-Werkzeuge';
+$lang['skip_to_content'] = 'zum Inhalt springen';
$lang['mail_newpage'] = 'Neue Seite:';
$lang['mail_changed'] = 'Seite geändert:';
$lang['mail_subscribe_list'] = 'Geänderte Seiten im Namensraum:';
@@ -268,6 +273,7 @@ $lang['subscr_style_digest'] = 'Zusammenfassung der Änderungen für jede ver
$lang['subscr_style_list'] = 'Liste der geänderten Seiten (Alle %.2f Tage)';
$lang['authmodfailed'] = 'Benutzerüberprüfung nicht möglich. Bitte wenden Sie sich an den Systembetreuer.';
$lang['authtempfail'] = 'Benutzerüberprüfung momentan nicht möglich. Falls das Problem andauert, wenden Sie sich an den Systembetreuer.';
+$lang['authpwdexpire'] = 'Ihr Passwort läuft in %d Tag(en) ab, Sie sollten es bald ändern.';
$lang['i_chooselang'] = 'Wählen Sie Ihre Sprache';
$lang['i_installer'] = 'DokuWiki Installation';
$lang['i_wikiname'] = 'Wiki-Name';
@@ -290,21 +296,6 @@ $lang['i_pol1'] = 'Öffentliches Wiki (lesen für alle, schreiben
$lang['i_pol2'] = 'Geschlossenes Wiki (lesen, schreiben, hochladen nur für registrierte Nutzer)';
$lang['i_retry'] = 'Wiederholen';
$lang['i_license'] = 'Bitte wählen Sie die Lizenz, unter die Sie Ihre Inhalte stellen möchten:';
-$lang['mu_intro'] = 'In diesem Bereich können Sie mehrere Dateien gleichzeitig hochladen. Benutzen Sie die Schaltfläche "Durchsuchen" um sie der Warteschlange zuzufügen. Betätigen Sie die Schaltfläche "Hochladen" um die Übertragung zu starten.';
-$lang['mu_gridname'] = 'Dateiname';
-$lang['mu_gridsize'] = 'Größe';
-$lang['mu_gridstat'] = 'Status';
-$lang['mu_namespace'] = 'Namensraum';
-$lang['mu_browse'] = 'Durchsuchen';
-$lang['mu_toobig'] = 'zu groß';
-$lang['mu_ready'] = 'bereit zum Hochladen';
-$lang['mu_done'] = 'fertig';
-$lang['mu_fail'] = 'gescheitert';
-$lang['mu_authfail'] = 'Sitzung abgelaufen';
-$lang['mu_progress'] = '@PCT@% hochgeladen';
-$lang['mu_filetypes'] = 'Erlaubte Dateitypen';
-$lang['mu_info'] = 'Dateien hochgeladen!';
-$lang['mu_lasterr'] = 'Letzter Fehler:';
$lang['recent_global'] = 'Im Moment sehen Sie die Änderungen im Namensraum <b>%s</b>. Sie können auch <a href="%s">die Änderungen im gesamten Wiki sehen</a>.';
$lang['years'] = 'vor %d Jahren';
$lang['months'] = 'vor %d Monaten';
@@ -330,8 +321,8 @@ $lang['media_upload'] = 'In den <strong>%s</strong> Namespace hochladen
$lang['media_search'] = 'Im Namespace <strong>%s</strong> suchen.';
$lang['media_view'] = '%s';
$lang['media_viewold'] = '%s in %s';
-$lang['media_edit'] = 'Bearbeiten';
-$lang['media_history'] = 'Versionsverlauf der Datei.';
+$lang['media_edit'] = '%s bearbeiten';
+$lang['media_history'] = 'Versionsverlauf von %s.';
$lang['media_meta_edited'] = 'Meta-Informationen bearbeitet';
$lang['media_perm_read'] = 'Sie besitzen nicht die notwendigen Berechtigungen um die Datei anzuzeigen.';
$lang['media_perm_upload'] = 'Sie besitzen nicht die notwendigen Berechtigungen um Dateien hochzuladen.';
diff --git a/inc/lang/de/resetpwd.txt b/inc/lang/de/resetpwd.txt
new file mode 100644
index 000000000..a0a55c67a
--- /dev/null
+++ b/inc/lang/de/resetpwd.txt
@@ -0,0 +1,4 @@
+====== Neues Passwort setzen ======
+
+Bitte geben Sie ein neues Passwort für Ihren Wiki-Zugang ein.
+
diff --git a/inc/lang/el/lang.php b/inc/lang/el/lang.php
index 4c334c1de..95f1a1ea5 100644
--- a/inc/lang/el/lang.php
+++ b/inc/lang/el/lang.php
@@ -43,7 +43,6 @@ $lang['btn_backtomedia'] = 'Επιστροφή στην επιλογή α
$lang['btn_subscribe'] = 'Εγγραφή σε λήψη ενημερώσεων σελίδας';
$lang['btn_profile'] = 'Επεξεργασία προφίλ';
$lang['btn_reset'] = 'Ακύρωση';
-$lang['btn_resendpwd'] = 'Αποστολή νέου κωδικού';
$lang['btn_draft'] = 'Επεξεργασία αυτόματα αποθηκευμένης σελίδας';
$lang['btn_recover'] = 'Επαναφορά αυτόματα αποθηκευμένης σελίδας';
$lang['btn_draftdel'] = 'Διαγραφή αυτόματα αποθηκευμένης σελίδας';
@@ -80,7 +79,6 @@ $lang['profnoempty'] = 'Δεν επιτρέπεται κενό όνο
$lang['profchanged'] = 'Το προφίλ χρήστη τροποποιήθηκε επιτυχώς.';
$lang['pwdforget'] = 'Ξεχάσατε το κωδικό σας; Αποκτήστε νέο.';
$lang['resendna'] = 'Αυτό το wiki δεν υποστηρίζει την εκ\' νέου αποστολή κωδικών.';
-$lang['resendpwd'] = 'Αποστολή νέων κωδικών για τον χρήστη';
$lang['resendpwdmissing'] = 'Πρέπει να συμπληρώσετε όλα τα πεδία.';
$lang['resendpwdnouser'] = 'Αυτός ο χρήστης δεν υπάρχει στα αρχεία μας.';
$lang['resendpwdbadauth'] = 'Αυτός ο κωδικός ενεργοποίησης δεν είναι έγκυρος.';
@@ -280,21 +278,6 @@ $lang['i_pol1'] = 'Δημόσιο Wiki (όλοι μπορούν
$lang['i_pol2'] = 'Κλειστό Wiki (μόνο οι εγγεγραμμένοι χρήστες μπορούν να διαβάσουν ή να δημιουργήσουν/τροποποιήσουν σελίδες και να μεταφορτώσουν αρχεία)';
$lang['i_retry'] = 'Νέα προσπάθεια';
$lang['i_license'] = 'Παρακαλώ επιλέξτε την άδεια που θα χρησιμοποιήσετε για την διάθεση του περιεχομένου σας:';
-$lang['mu_intro'] = 'Εδώ μπορείτε να φορτώσετε ταυτόχρονα πολλαπλά αρχεία. Πατήστε στο κουμπί προεπισκόπησης για να τα προσθέσετε στη λίστα. Πατήστε στο κουμπί μεταφόρτωσης όταν έχετε τελειώσει.';
-$lang['mu_gridname'] = 'Όνομα αρχείου';
-$lang['mu_gridsize'] = 'Μέγεθος';
-$lang['mu_gridstat'] = 'Κατάσταση';
-$lang['mu_namespace'] = 'Φάκελος';
-$lang['mu_browse'] = 'Επισκόπηση';
-$lang['mu_toobig'] = 'υπερβολικά μεγάλο';
-$lang['mu_ready'] = 'έτοιμο για φόρτωση';
-$lang['mu_done'] = 'ολοκληρώθηκε';
-$lang['mu_fail'] = 'απέτυχε';
-$lang['mu_authfail'] = 'η συνεδρία έληξε';
-$lang['mu_progress'] = 'φορτώθηκε @PCT@%';
-$lang['mu_filetypes'] = 'Επιτρεπτοί τύποι αρχείων';
-$lang['mu_info'] = 'τα αρχεία ανέβηκαν.';
-$lang['mu_lasterr'] = 'Τελευταίο σφάλμα:';
$lang['recent_global'] = 'Βλέπετε τις αλλαγές εντός του φακέλου <b>%s</b>. Μπορείτε επίσης να <a href="%s">δείτε τις πρόσφατες αλλαγές σε όλο το wiki</a>.';
$lang['years'] = 'πριν %d χρόνια';
$lang['months'] = 'πριν %d μήνες';
diff --git a/inc/lang/en/lang.php b/inc/lang/en/lang.php
index 89a7c4d40..2ba220e64 100644
--- a/inc/lang/en/lang.php
+++ b/inc/lang/en/lang.php
@@ -43,7 +43,7 @@ $lang['btn_backtomedia'] = 'Back to Mediafile Selection';
$lang['btn_subscribe'] = 'Manage Subscriptions';
$lang['btn_profile'] = 'Update Profile';
$lang['btn_reset'] = 'Reset';
-$lang['btn_resendpwd'] = 'Send new password';
+$lang['btn_resendpwd'] = 'Set new password';
$lang['btn_draft'] = 'Edit draft';
$lang['btn_recover'] = 'Recover draft';
$lang['btn_draftdel'] = 'Delete draft';
@@ -84,7 +84,7 @@ $lang['profchanged'] = 'User profile successfully updated.';
$lang['pwdforget'] = 'Forgotten your password? Get a new one';
$lang['resendna'] = 'This wiki does not support password resending.';
-$lang['resendpwd'] = 'Send new password for';
+$lang['resendpwd'] = 'Set new password for';
$lang['resendpwdmissing'] = 'Sorry, you must fill in all fields.';
$lang['resendpwdnouser'] = 'Sorry, we can\'t find this user in our database.';
$lang['resendpwdbadauth'] = 'Sorry, this auth code is not valid. Make sure you used the complete confirmation link.';
@@ -166,7 +166,7 @@ $lang['accessdenied'] = 'You are not allowed to view this page.';
$lang['mediausage'] = 'Use the following syntax to reference this file:';
$lang['mediaview'] = 'View original file';
$lang['mediaroot'] = 'root';
-$lang['mediaupload'] = 'Upload a file to the current namespace here. To create subnamespaces, prepend them to your "Upload as" filename separated by colons. Files also can be selected by drag and drop.';
+$lang['mediaupload'] = 'Upload a file to the current namespace here. To create subnamespaces, prepend them to your filename separated by colons after you selected the files. Files can also be selected by drag and drop.';
$lang['mediaextchange'] = 'Filextension changed from .%s to .%s!';
$lang['reference'] = 'References for';
$lang['ref_inuse'] = 'The file can\'t be deleted, because it\'s still used by the following pages:';
@@ -195,6 +195,11 @@ $lang['external_edit'] = 'external edit';
$lang['summary'] = 'Edit summary';
$lang['noflash'] = 'The <a href="http://www.adobe.com/products/flashplayer/">Adobe Flash Plugin</a> is needed to display this content.';
$lang['download'] = 'Download Snippet';
+$lang['tools'] = 'Tools';
+$lang['user_tools'] = 'User Tools';
+$lang['site_tools'] = 'Site Tools';
+$lang['page_tools'] = 'Page Tools';
+$lang['skip_to_content'] = 'skip to content';
$lang['mail_newpage'] = 'page added:';
$lang['mail_changed'] = 'page changed:';
@@ -275,6 +280,7 @@ $lang['subscr_style_list'] = 'list of changed pages since last email (e
/* auth.class language support */
$lang['authmodfailed'] = 'Bad user authentication configuration. Please inform your Wiki Admin.';
$lang['authtempfail'] = 'User authentication is temporarily unavailable. If this situation persists, please inform your Wiki Admin.';
+$lang['authpwdexpire'] = 'Your password will expire in %d days, you should change it soon.';
/* installer strings */
$lang['i_chooselang'] = 'Choose your language';
@@ -304,22 +310,6 @@ $lang['i_pol2'] = 'Closed Wiki (read, write, upload for registere
$lang['i_retry'] = 'Retry';
$lang['i_license'] = 'Please choose the license you want to put your content under:';
-$lang['mu_intro'] = 'Here you can upload multiple files at once. Click the browse button to add them to the queue. Press upload when done.';
-$lang['mu_gridname'] = 'Filename';
-$lang['mu_gridsize'] = 'Size';
-$lang['mu_gridstat'] = 'Status';
-$lang['mu_namespace'] = 'Namespace';
-$lang['mu_browse'] = 'Browse';
-$lang['mu_toobig'] = 'too big';
-$lang['mu_ready'] = 'ready for upload';
-$lang['mu_done'] = 'complete';
-$lang['mu_fail'] = 'failed';
-$lang['mu_authfail'] = 'session expired';
-$lang['mu_progress'] = '@PCT@% uploaded';
-$lang['mu_filetypes'] = 'Allowed Filetypes';
-$lang['mu_info'] = 'files uploaded.';
-$lang['mu_lasterr'] = 'Last error:';
-
$lang['recent_global'] = 'You\'re currently watching the changes inside the <b>%s</b> namespace. You can also <a href="%s">view the recent changes of the whole wiki</a>.';
$lang['years'] = '%d years ago';
$lang['months'] = '%d months ago';
diff --git a/inc/lang/en/resetpwd.txt b/inc/lang/en/resetpwd.txt
new file mode 100644
index 000000000..993b48765
--- /dev/null
+++ b/inc/lang/en/resetpwd.txt
@@ -0,0 +1,4 @@
+====== Set new password ======
+
+Please enter a new password for your account in this wiki.
+
diff --git a/inc/lang/eo/lang.php b/inc/lang/eo/lang.php
index abb6bf7d7..41c6b80d1 100644
--- a/inc/lang/eo/lang.php
+++ b/inc/lang/eo/lang.php
@@ -26,8 +26,8 @@ $lang['btn_search'] = 'Serĉi';
$lang['btn_save'] = 'Konservi';
$lang['btn_preview'] = 'Antaŭrigardi';
$lang['btn_top'] = 'Supren';
-$lang['btn_newer'] = '&lt;&lt; pli freŝe';
-$lang['btn_older'] = 'malpli freŝe &gt;&gt;';
+$lang['btn_newer'] = '<< pli freŝe';
+$lang['btn_older'] = 'malpli freŝe >>';
$lang['btn_revs'] = 'Malnovaj revizioj';
$lang['btn_recent'] = 'Freŝaj ŝanĝoj';
$lang['btn_upload'] = 'Alŝuti';
@@ -45,7 +45,6 @@ $lang['btn_backtomedia'] = 'Retroiri al elekto de dosiero';
$lang['btn_subscribe'] = 'Aliĝi al paĝaj modifoj';
$lang['btn_profile'] = 'Ĝisdatigi profilon';
$lang['btn_reset'] = 'Rekomenci';
-$lang['btn_resendpwd'] = 'Sendi novan pasvorton';
$lang['btn_draft'] = 'Redakti skizon';
$lang['btn_recover'] = 'Restarigi skizon';
$lang['btn_draftdel'] = 'Forigi skizon';
@@ -82,7 +81,6 @@ $lang['profnoempty'] = 'Malplena nomo aŭ retadreso ne estas permesata
$lang['profchanged'] = 'La profilo de la uzanto estas sukcese ĝisdatigita.';
$lang['pwdforget'] = 'Ĉu vi forgesis vian pasvorton? Prenu novan';
$lang['resendna'] = 'Tiu ĉi vikio ne ebligas resendon de la pasvortoj.';
-$lang['resendpwd'] = 'Sendi novan pasvorton al';
$lang['resendpwdmissing'] = 'Pardonu, vi devas plenigi ĉiujn kampojn.';
$lang['resendpwdnouser'] = 'Pardonu, ni ne trovas tiun uzanton en nia datenbazo.';
$lang['resendpwdbadauth'] = 'Pardonu, tiu aŭtentiga kodo ne validas. Certiĝu, ke vi uzis la kompletan konfirmigan ligilon.';
@@ -124,8 +122,7 @@ $lang['js']['medialeft'] = 'Meti la bildon maldekstren.';
$lang['js']['mediaright'] = 'Meti la bildon dekstren.';
$lang['js']['mediacenter'] = 'Meti la bildon mezen.';
$lang['js']['medianoalign'] = 'Ne uzi poziciigon.';
-$lang['js']['nosmblinks'] = 'Tio ĉi nur funkcias en la Vindozaĉa &quot;Microsoft Internet Explorer&quot;.
-Vi ankoraŭ povas kopii kaj almeti la ligilon.';
+$lang['js']['nosmblinks'] = 'Tio ĉi nur funkcias en la Vindozaĉa "Microsoft Internet Explorer".\nVi ankoraŭ povas kopii kaj almeti la ligilon.';
$lang['js']['linkwiz'] = 'Ligil-Asistanto';
$lang['js']['linkto'] = 'Ligilo al:';
$lang['js']['del_confirm'] = 'Ĉu vere forigi elektitajn ero(j)n?';
@@ -152,16 +149,16 @@ $lang['uploadbadcontent'] = 'La alŝutita enhavo ne kongruas al la sufikso
$lang['uploadspam'] = 'La alŝutaĵo estis blokita de kontraŭspama vortlisto.';
$lang['uploadxss'] = 'La alŝutajo estis blokita pro ebla malica enhavo.';
$lang['uploadsize'] = 'La alŝutita dosiero estis tro granda. (maks. %s)';
-$lang['deletesucc'] = 'La dosiero &quot;%s%quot; estas forigita.';
-$lang['deletefail'] = '&quot;%s&quot; ne povis esti forigita - kontrolu permes-atributojn.';
-$lang['mediainuse'] = 'La dosiero &quot;%s&quot; ne estis forigita - ĝi ankoraŭ estas uzata.';
+$lang['deletesucc'] = 'La dosiero "%s" estas forigita.';
+$lang['deletefail'] = '"%s" ne povis esti forigita - kontrolu permes-atributojn.';
+$lang['mediainuse'] = 'La dosiero "%s" ne estis forigita - ĝi ankoraŭ estas uzata.';
$lang['namespaces'] = 'Nomspacoj';
$lang['mediafiles'] = 'Disponeblaj dosieroj';
$lang['accessdenied'] = 'Vi ne rajtas vidi tiun paĝon.';
$lang['mediausage'] = 'Uzu la jenan sintakson por referenci tiun ĉi dosieron:';
$lang['mediaview'] = 'Rigardi originalan dosieron';
$lang['mediaroot'] = 'ĉefo (root)';
-$lang['mediaupload'] = 'Alŝutu dosieron al la kuranta nomspaco tien ĉi. Por krei subnomspacojn, antaŭmetu ilin al via &quot;Alŝuti kiel&quot; dosiernomo, apartigante per dupunktoj (:).';
+$lang['mediaupload'] = 'Alŝutu dosieron al la kuranta nomspaco tien ĉi. Por krei subnomspacojn, antaŭmetu ilin al via "Alŝuti kiel" dosiernomo, apartigante per dupunktoj (:).';
$lang['mediaextchange'] = 'La dosiersufikso ŝanĝis de .%s al .%s!';
$lang['reference'] = 'Referencoj por';
$lang['ref_inuse'] = 'La dosiero ne povas esti forigita, ĉar ĝi ankoraŭ estas uzata de la jenaj paĝoj:';
@@ -187,7 +184,7 @@ $lang['created'] = 'kreita';
$lang['restored'] = 'malnova revizio restarigita';
$lang['external_edit'] = 'ekstera redakto';
$lang['summary'] = 'Bulteno de ŝanĝoj';
-$lang['noflash'] = 'La &lt;a href=&quot;http://www.adobe.com/products/flashplayer/&quot;&gt;Adobe Flash Plugin&lt;/a&gt; estas bezonata por montrigi tiun ĉi enhavon.';
+$lang['noflash'] = 'La <a href="http://www.adobe.com/products/flashplayer/">Adobe Flash Plugin</a> estas bezonata por montrigi tiun ĉi enhavon.';
$lang['download'] = 'Elŝuti eltiraĵon';
$lang['mail_newpage'] = 'paĝo aldonita:';
$lang['mail_changed'] = 'paĝo modifita:';
@@ -255,49 +252,34 @@ $lang['subscr_m_unsubscribe'] = 'Malaboni';
$lang['subscr_m_subscribe'] = 'Aboni';
$lang['subscr_m_receive'] = 'Ricevi';
$lang['subscr_style_every'] = 'retpoŝtaĵo pro ĉiu ŝanĝo';
-$lang['subscr_style_digest'] = 'kolekta retpoŝtaĵo de ŝanĝoj por ĉiu paĝo';
-$lang['subscr_style_list'] = 'listo de ŝanĝitaj paĝoj ekde la lasta retpoŝtaĵo';
+$lang['subscr_style_digest'] = 'resuma retpoŝtaĵo de ŝanĝoj por ĉiu paĝo (je %.2f tagoj)';
+$lang['subscr_style_list'] = 'listo de ŝanĝitaj paĝoj ekde la lasta retpoŝtaĵo (je %.2f tagoj)';
$lang['authmodfailed'] = 'Malbona agordo por identigi la uzanton. Bonvolu informi la administranton de la vikio.';
$lang['authtempfail'] = 'La identigo de via uzantonomo estas intertempe maldisponebla. Se tiu ĉi situacio daŭros, bonvolu informi la adminstranton de la vikio.';
$lang['i_chooselang'] = 'Elektu vian lingvon';
$lang['i_installer'] = 'Instalilo de DokuWiki';
$lang['i_wikiname'] = 'Nomo de la vikio';
-$lang['i_enableacl'] = 'Ebligi &quot;ACL&quot; (alirkontrolo, rekomendinde)';
+$lang['i_enableacl'] = 'Ebligi "ACL" (alirkontrolo, rekomendinde)';
$lang['i_superuser'] = 'Superuzanto';
$lang['i_problems'] = 'La instalilo trovis kelkajn problemojn, indikitaj sube. Vi ne povas pluiri ĝis ili estos iel korektitaj.';
$lang['i_modified'] = 'Pro sekureco tiu ĉi instalilo nur funkcias por nova kaj nemodifita DokuWiki-pakaĵo.
Vi devas aŭ redemeti la dosierojn el la elŝutita pakaĵo aŭ plibone informiĝi pri la instalada procezo.';
-$lang['i_funcna'] = 'La PHP-a funkcio &lt;code&gt;%s&lt;/code&gt; ne estas uzebla. Eble via retprovizanto ial malpermesis tion?';
-$lang['i_phpver'] = 'La versio de la PHP &lt;code&gt;%s&lt;/code&gt; estas pli malnova ol la bezonata &lt;code&gt;%s&lt;/code&gt;. Vi bezonas ĝisdatigi la PHP-an instalon.';
-$lang['i_permfail'] = '&lt;code&gt;%s&lt;/code&gt; ne estas skribebla por DokuWiki. Vi devas redifini la permes-atributojn de tiu ĉi dosierujo!';
-$lang['i_confexists'] = '&lt;code&gt;%s&lt;/code&gt; jam ekzistas';
-$lang['i_writeerr'] = 'Ne eblas krei &quot;&lt;code&gt;%s&lt;/code&gt;&quot;. Vi bezonas kontroli la permesojn de la dosier(uj)oj kaj mem krej la dosieron.';
-$lang['i_badhash'] = 'dokuwiki.php ne estas rekonebla aŭ ĝi estas modifita (hash=&lt;code&gt;%s&lt;/code&gt;)';
-$lang['i_badval'] = '&lt;code&gt;%s&lt;/code&gt; - malvalida aŭ malplena valoro';
-$lang['i_success'] = 'La agordado estas sukcese kompletita. Vi povas forigi la dosieron nun. Pluiru al &lt;a href=&quot;doku.php&quot;&gt;via nova DokuWiki&lt;/a&gt;.';
-$lang['i_failure'] = 'Kelkaj eraroj okazis dum la konservo de la agordaj dosieroj. Vi devas senpere korekti ilin antaŭ ol vi povos uzi &lt;a href=&quot;doku.php&quot;&gt;vian novan DokuWiki-on&lt;/a&gt;. ';
+$lang['i_funcna'] = 'La PHP-a funkcio <code>%s</code> ne estas uzebla. Eble via retprovizanto ial malpermesis tion?';
+$lang['i_phpver'] = 'La versio de la PHP <code>%s</code> estas pli malnova ol la bezonata <code>%s</code>. Vi bezonas ĝisdatigi la PHP-an instalon.';
+$lang['i_permfail'] = '<code>%s</code> ne estas skribebla por DokuWiki. Vi devas redifini la permes-atributojn de tiu ĉi dosierujo!';
+$lang['i_confexists'] = '<code>%s</code> jam ekzistas';
+$lang['i_writeerr'] = 'Ne eblas krei "<code>%s</code>". Vi bezonas kontroli la permesojn de la dosier(uj)oj kaj mem krej la dosieron.';
+$lang['i_badhash'] = 'dokuwiki.php ne estas rekonebla aŭ ĝi estas modifita (hash=<code>%s</code>)';
+$lang['i_badval'] = '<code>%s</code> - malvalida aŭ malplena valoro';
+$lang['i_success'] = 'La agordado estas sukcese kompletita. Vi povas forigi la dosieron nun. Pluiru al <a href="doku.php">via nova DokuWiki</a>.';
+$lang['i_failure'] = 'Kelkaj eraroj okazis dum la konservo de la agordaj dosieroj. Vi devas senpere korekti ilin antaŭ ol vi povos uzi <a href="doku.php">vian novan DokuWiki-on</a>. ';
$lang['i_policy'] = 'Komenca ACL-a agordo';
$lang['i_pol0'] = 'Malferma Vikio (legi, skribi, alŝuti povas ĉiuj)';
$lang['i_pol1'] = 'Publika Vikio (legi povas ĉiuj, skribi kaj alŝuti povas registritaj uzantoj)';
$lang['i_pol2'] = 'Ferma Vikio (legi, skribi, alŝuti nur povas registritaj uzantoj)';
$lang['i_retry'] = 'Reprovi';
$lang['i_license'] = 'Bonvolu elekti la permesilon, sub kiun vi volas meti vian enhavon:';
-$lang['mu_intro'] = 'Ĉi tie vi povas alŝuti plurajn dosierojn multope. Klaku la esplor-butonon por aldoni ilin al la vico. Premu alŝuti kiam prete.';
-$lang['mu_gridname'] = 'Dosiernomo';
-$lang['mu_gridsize'] = 'Grandeco';
-$lang['mu_gridstat'] = 'Stato';
-$lang['mu_namespace'] = 'Nomspaco';
-$lang['mu_browse'] = 'Esplori';
-$lang['mu_toobig'] = 'tro granda';
-$lang['mu_ready'] = 'preta por alŝuti';
-$lang['mu_done'] = 'plenumite';
-$lang['mu_fail'] = 'malsukcesinte';
-$lang['mu_authfail'] = 'sekcio tro longdaŭris';
-$lang['mu_progress'] = '@PCT@&#37; alŝutite';
-$lang['mu_filetypes'] = 'Permesitaj dosiertipoj';
-$lang['mu_info'] = 'alŝutitaj dosieroj.';
-$lang['mu_lasterr'] = 'Lasta eraro:';
-$lang['recent_global'] = 'Vi nun rigardas la ŝanĝojn ene de la nomspaco &lt;b&gt;%s&lt;/b&gt;. Vi povas ankaŭ &lt;a href=&quot;%s&quot;&gt;vidi la freŝajn ŝanĝojn de la tuta vikio&lt;/a&gt;.';
+$lang['recent_global'] = 'Vi nun rigardas la ŝanĝojn ene de la nomspaco <b>%s</b>. Vi povas ankaŭ <a href="%s">vidi la freŝajn ŝanĝojn de la tuta vikio</a>.';
$lang['years'] = 'antaŭ %d jaroj';
$lang['months'] = 'antaŭ %d monatoj';
$lang['weeks'] = 'antaŭ %d semajnoj';
@@ -318,12 +300,12 @@ $lang['media_sort_name'] = 'per nomo';
$lang['media_sort_date'] = 'per dato';
$lang['media_namespaces'] = 'Elektu nomspacon';
$lang['media_files'] = 'Dosieroj en %s';
-$lang['media_upload'] = 'Alŝuti al la nomspaco &lt;strong&gt;%s&lt;/strong&gt;.';
-$lang['media_search'] = 'Serĉi en la nomspaco &lt;strong&gt;%s&lt;/strong&gt;.';
+$lang['media_upload'] = 'Alŝuti al la nomspaco <strong>%s</strong>.';
+$lang['media_search'] = 'Serĉi en la nomspaco <strong>%s</strong>.';
$lang['media_view'] = '%s';
$lang['media_viewold'] = '%s ĉe %s';
-$lang['media_edit'] = 'Modifi';
-$lang['media_history'] = 'Tiuj estas la pli malnovaj revizioj de la dosiero.';
+$lang['media_edit'] = 'Modifi %s';
+$lang['media_history'] = 'Protokolo de %s';
$lang['media_meta_edited'] = 'metadatumoj ŝanĝitaj';
$lang['media_perm_read'] = 'Bedaûrinde viaj rajtoj ne sufiĉas por legi dosierojn.';
$lang['media_perm_upload'] = 'Bedaûrinde viaj rajtoj ne sufiĉas por alŝuti dosierojn.';
diff --git a/inc/lang/es/lang.php b/inc/lang/es/lang.php
index 5164c3243..ee3da258b 100644
--- a/inc/lang/es/lang.php
+++ b/inc/lang/es/lang.php
@@ -61,7 +61,6 @@ $lang['btn_backtomedia'] = 'Volver a la selección de archivos multimedia'
$lang['btn_subscribe'] = 'Suscribirse a cambios de la página';
$lang['btn_profile'] = 'Actualizar perfil';
$lang['btn_reset'] = 'Restablecer';
-$lang['btn_resendpwd'] = 'Enviar nueva contraseña';
$lang['btn_draft'] = 'Editar borrador';
$lang['btn_recover'] = 'Recuperar borrador';
$lang['btn_draftdel'] = 'Eliminar borrador';
@@ -98,7 +97,6 @@ $lang['profnoempty'] = 'No se permite que el nombre o la dirección de
$lang['profchanged'] = 'Se actualizó correctamente el perfil del usuario.';
$lang['pwdforget'] = '¿Has olvidado tu contraseña? Consigue una nueva';
$lang['resendna'] = 'Este wiki no brinda la posibilidad de reenvío de contraseña.';
-$lang['resendpwd'] = 'Enviar una nueva contraseña para';
$lang['resendpwdmissing'] = 'Lo siento, debes completar todos los campos.';
$lang['resendpwdnouser'] = 'Lo siento, no se encuentra este usuario en nuestra base de datos.';
$lang['resendpwdbadauth'] = 'Lo siento, este código de autenticación no es válido. Asegúrate de haber usado el enlace de confirmación entero.';
@@ -282,9 +280,9 @@ $lang['i_enableacl'] = 'Habilitar ACL (recomendado) (ACL: lista de con
$lang['i_superuser'] = 'Super-usuario';
$lang['i_problems'] = 'El instalador encontró algunos problemas, se muestran abajo. No se puede continuar la instalación hasta que usted no los corrija.';
$lang['i_modified'] = 'Por razones de seguridad este script sólo funcionará con una instalación nueva y no modificada de Dokuwiki. Usted debe extraer nuevamente los ficheros del paquete bajado, o bien consultar las <a href="http://dokuwiki.org/install">instrucciones de instalación de Dokuwiki</a> completas.';
-$lang['i_funcna'] = 'La función de PHP <code>%s</code> no está disponible. Tal vez su proveedor de hosting la ha deshabilitado por alguna razón?';
+$lang['i_funcna'] = 'La función de PHP <code>%s</code> no está disponible. ¿Tal vez su proveedor de hosting la ha deshabilitado por alguna razón?';
$lang['i_phpver'] = 'Su versión de PHP <code>%s</code> es menor que la necesaria <code>%s</code>. Es necesario que actualice su instalación de PHP.';
-$lang['i_permfail'] = 'DokuWili no puede escribir <code>%s</code>. Es necesario establecer correctamente los permisos de este directorio!';
+$lang['i_permfail'] = 'DokuWili no puede escribir <code>%s</code>. ¡Es necesario establecer correctamente los permisos de este directorio!';
$lang['i_confexists'] = '<code>%s</code> ya existe';
$lang['i_writeerr'] = 'Imposible crear <code>%s</code>. Se necesita que usted controle los permisos del fichero/directorio y que cree el fichero manualmente.';
$lang['i_badhash'] = 'dokuwiki.php no reconocido o modificado (hash=<code>%s</code>)';
@@ -297,21 +295,6 @@ $lang['i_pol1'] = 'Wiki público (leer para todos, escribir y sub
$lang['i_pol2'] = 'Wiki cerrado (leer, escribir y subir archivos para usuarios registrados únicamente)';
$lang['i_retry'] = 'Reintentar';
$lang['i_license'] = 'Por favor escoja una licencia bajo la que publicar su contenido:';
-$lang['mu_intro'] = 'Puedes subir varios archivos a la vez desde aquí. Pulsa el botón del navegador para agregarlos a la cola. Pulsa "subir archivo" para proceder.';
-$lang['mu_gridname'] = 'Nombre de archivo';
-$lang['mu_gridsize'] = 'Tamaño';
-$lang['mu_gridstat'] = 'Estado';
-$lang['mu_namespace'] = 'Espacio de nombres';
-$lang['mu_browse'] = 'Buscar';
-$lang['mu_toobig'] = 'demasiado grande';
-$lang['mu_ready'] = 'listo para subir';
-$lang['mu_done'] = 'completado';
-$lang['mu_fail'] = 'falló';
-$lang['mu_authfail'] = 'la sesión caducó';
-$lang['mu_progress'] = '@PCT@% transferido';
-$lang['mu_filetypes'] = 'Tipos de archivos permitidos';
-$lang['mu_info'] = 'Archivos subidos:';
-$lang['mu_lasterr'] = 'Último error:';
$lang['recent_global'] = 'Actualmente estás viendo los cambios dentro del namespace <b>%s</b>. También puedes <a href="%s">ver los cambios recientes en el wiki completo</a>.';
$lang['years'] = '%d años atrás';
$lang['months'] = '%d meses atrás';
diff --git a/inc/lang/et/lang.php b/inc/lang/et/lang.php
index 6cd2f437d..5e5caa1c8 100644
--- a/inc/lang/et/lang.php
+++ b/inc/lang/et/lang.php
@@ -43,7 +43,6 @@ $lang['btn_backtomedia'] = 'Tagasi faili valikusse';
$lang['btn_subscribe'] = 'Jälgi seda lehte (teated meilile)';
$lang['btn_profile'] = 'Minu info';
$lang['btn_reset'] = 'Taasta';
-$lang['btn_resendpwd'] = 'Saada uus parool';
$lang['btn_draft'] = 'Toimeta mustandit';
$lang['btn_recover'] = 'Taata mustand';
$lang['btn_draftdel'] = 'Kustuta mustand';
@@ -79,7 +78,6 @@ $lang['profnoempty'] = 'Tühi nimi ega meiliaadress pole lubatud.';
$lang['profchanged'] = 'Kasutaja info edukalt muudetud';
$lang['pwdforget'] = 'Unustasid parooli? Tee uus';
$lang['resendna'] = 'See wiki ei toeta parooli taassaatmist.';
-$lang['resendpwd'] = 'Saada uus parool';
$lang['resendpwdmissing'] = 'Khmm... Sa pead täitma kõik väljad.';
$lang['resendpwdnouser'] = 'Aga sellist kasutajat ei ole.';
$lang['resendpwdbadauth'] = 'See autentimiskood ei ole õige. Kontrolli, et kopeerisid terve lingi.';
@@ -232,12 +230,3 @@ $lang['i_pol0'] = 'Avatud (lugemine, kirjutamine ja üleslaadimin
$lang['i_pol1'] = 'Avalikuks lugemiseks (lugeda saavad kõik, kirjutada ja üles laadida vaid registreeritud kasutajad)';
$lang['i_pol2'] = 'Suletud (kõik õigused, kaasaarvatud lugemine on lubatud vaid registreeritud kasutajatele)';
$lang['i_retry'] = 'Proovi uuesti';
-$lang['mu_gridname'] = 'Failinimi';
-$lang['mu_gridsize'] = 'Suurus';
-$lang['mu_gridstat'] = 'Staatus';
-$lang['mu_browse'] = 'Sirvi';
-$lang['mu_toobig'] = 'liiga suur';
-$lang['mu_ready'] = 'valmis üleslaadimiseks';
-$lang['mu_done'] = 'valmis';
-$lang['mu_fail'] = 'ebaõnnestus';
-$lang['mu_lasterr'] = 'Viimane viga:';
diff --git a/inc/lang/eu/lang.php b/inc/lang/eu/lang.php
index d02f281c3..f7a517fe4 100644
--- a/inc/lang/eu/lang.php
+++ b/inc/lang/eu/lang.php
@@ -40,7 +40,6 @@ $lang['btn_backtomedia'] = 'Atzera Multimedia Fitxategiaren Aukeraketara';
$lang['btn_subscribe'] = 'Harpidetu Orri Aldaketetara';
$lang['btn_profile'] = 'Eguneratu Profila ';
$lang['btn_reset'] = 'Aldaketak Desegin';
-$lang['btn_resendpwd'] = 'Pasahitz berria bidali';
$lang['btn_draft'] = 'Editatu zirriborroa';
$lang['btn_recover'] = 'Berreskuratu zirriborroa';
$lang['btn_draftdel'] = 'Ezabatu zirriborroa';
@@ -75,7 +74,6 @@ $lang['profnoempty'] = 'Izen edota e-posta hutsa ez dago onartua.';
$lang['profchanged'] = 'Erabiltzaile profila arrakastaz eguneratua.';
$lang['pwdforget'] = 'Pasahitza ahaztu duzu? Eskuratu berri bat';
$lang['resendna'] = 'Wiki honek ez du pasahitz berbidalketa onartzen.';
-$lang['resendpwd'] = 'Bidali pasahitz berria honentzat:';
$lang['resendpwdmissing'] = 'Barkatu, eremu guztiak bete behar dituzu.';
$lang['resendpwdnouser'] = 'Barkatu, ez dugu erabiltzaile hori datu-basean aurkitzen';
$lang['resendpwdbadauth'] = 'Barkatu, kautotze kodea ez da baliozkoa. Ziurtatu baieztapen esteka osoa erabili duzula.';
@@ -256,21 +254,6 @@ $lang['i_pol1'] = 'Wiki Publikoa (irakurri edonorentzat, idatzi e
$lang['i_pol2'] = 'Wiki Itxia (irakurri, idatzi, fitxategiak igo erregistratutako erabiltzaileentzat soilik)';
$lang['i_retry'] = 'Berriz saiatu';
$lang['i_license'] = 'Mesedez, aukeratu zein lizentzipean ezarri nahi duzun zure edukia:';
-$lang['mu_intro'] = 'Hemen hainbat fitxategi aldi berean igo ditzakezu. Egin klik nabigazio botoian hauek ilarara gehitzeko. Sakatu igo botoia prest egotean.';
-$lang['mu_gridname'] = 'Fitxategi izena';
-$lang['mu_gridsize'] = 'Tamaina';
-$lang['mu_gridstat'] = 'Egoera';
-$lang['mu_namespace'] = 'Izen-espazioa';
-$lang['mu_browse'] = 'Nabigatu';
-$lang['mu_toobig'] = 'handiegia';
-$lang['mu_ready'] = 'igotzeko prest';
-$lang['mu_done'] = 'amaitua';
-$lang['mu_fail'] = 'hutsegitea';
-$lang['mu_authfail'] = 'saioa iraungita';
-$lang['mu_progress'] = '@PCT@% igota';
-$lang['mu_filetypes'] = 'Onartutako Fitxategi Motak';
-$lang['mu_info'] = 'igotako fitxategiak.';
-$lang['mu_lasterr'] = 'Azken errorea;';
$lang['recent_global'] = 'Une honetan <b>%s</b> izen-espazioaren barneko aldaketak ikusten ari zara.<a href="%s"> Wiki osoaren azken aldaketak</a> ere ikusi ditzakezu.';
$lang['years'] = 'duela %d urte';
$lang['months'] = 'duela %d hilabete';
diff --git a/inc/lang/fa/lang.php b/inc/lang/fa/lang.php
index ac14ce07a..c55c3efdd 100644
--- a/inc/lang/fa/lang.php
+++ b/inc/lang/fa/lang.php
@@ -47,7 +47,6 @@ $lang['btn_backtomedia'] = 'بازگشت به انتخاب فایل';
$lang['btn_subscribe'] = 'عضویت در تغییرات صفحه';
$lang['btn_profile'] = 'به روز رسانی پروفایل';
$lang['btn_reset'] = 'بازنشاندن';
-$lang['btn_resendpwd'] = 'یک گذرواژه‌ی جدید برای شما فرستاده شود';
$lang['btn_draft'] = 'ویرایش پیش‌نویس';
$lang['btn_recover'] = 'بازیابی پیش‌نویس';
$lang['btn_draftdel'] = 'حذف پیش‌نویس';
@@ -82,7 +81,6 @@ $lang['profnoempty'] = 'نام و آدرس ایمیل باید پر ش
$lang['profchanged'] = 'پروفایل کاربر با موفقیت به روز شد';
$lang['pwdforget'] = 'گذرواژه‌ی خود را فراموش کرده‌اید؟ جدید دریافت کنید';
$lang['resendna'] = 'این ویکی ارسال مجدد گذرواژه را پشتیبانی نمی‌کند';
-$lang['resendpwd'] = 'گذرواژه‌ی جدید ارسال شد';
$lang['resendpwdmissing'] = 'متاسفم، شما باید تمام قسمت‌ها را پر کنید';
$lang['resendpwdnouser'] = 'متاسفم، ما نتوانستیم این نام کاربری را در بانک خود پیدا کنیم';
$lang['resendpwdbadauth'] = 'متاسفم، کد شناسایی معتبر نیست. از صحت لینک تاییدیه اطمینان حاصل کنید.';
@@ -263,21 +261,6 @@ $lang['i_pol1'] = 'ویکی عمومی (همه می‌توانن
$lang['i_pol2'] = 'ویکی بسته (فقط کاربران ثبت شده می‌توانند بخوانند، بنویسند و فایل ارسال کنند)';
$lang['i_retry'] = 'تلاش مجدد';
$lang['i_license'] = 'لطفن مجوز این محتوا را وارد کنید:';
-$lang['mu_intro'] = 'شما می‌توانید چندین فایل را با یک حرکت ارسال کنید. روی دکمه‌ی «بچر» کلیک کنید و فایل‌ها را به صف ارسال اضافه نمایید. سپس دکمه‌ی «ارسال» را فشار دهید. ';
-$lang['mu_gridname'] = 'نام فایل';
-$lang['mu_gridsize'] = 'اندازه';
-$lang['mu_gridstat'] = 'وضعیت';
-$lang['mu_namespace'] = 'فضای‌نام';
-$lang['mu_browse'] = 'بچر';
-$lang['mu_toobig'] = 'خیلی بزرگ';
-$lang['mu_ready'] = 'آماده‌ی ارسال';
-$lang['mu_done'] = 'کامل';
-$lang['mu_fail'] = 'شکست خورد';
-$lang['mu_authfail'] = 'سشن به پایان رسید';
-$lang['mu_progress'] = '@PCT@% ارسال شد';
-$lang['mu_filetypes'] = 'توسعه‌های مجاز';
-$lang['mu_info'] = 'فایل ارسال گردید';
-$lang['mu_lasterr'] = 'آخرین خطا:';
$lang['recent_global'] = 'شما هم‌اکنون تغییرات فضای‌نام <b>%s</b> را مشاهده می‌کنید. شما هم‌چنین می‌توانید <a href="%s">تغییرات اخیر در کل ویکی را مشاهده نمایید</a>.';
$lang['years'] = '%d سال پیش';
$lang['months'] = '%d ماه پیش';
diff --git a/inc/lang/fi/lang.php b/inc/lang/fi/lang.php
index 8d671a4cb..ce15f68d0 100644
--- a/inc/lang/fi/lang.php
+++ b/inc/lang/fi/lang.php
@@ -43,7 +43,6 @@ $lang['btn_backtomedia'] = 'Takaisin mediatiedostojen valintaan';
$lang['btn_subscribe'] = 'Tilaa muutokset';
$lang['btn_profile'] = 'Päivitä profiili';
$lang['btn_reset'] = 'Tyhjennä';
-$lang['btn_resendpwd'] = 'Lähetä uusi salasana';
$lang['btn_draft'] = 'Muokkaa luonnosta';
$lang['btn_recover'] = 'Palauta luonnos';
$lang['btn_draftdel'] = 'Poista luonnos';
@@ -80,7 +79,6 @@ $lang['profnoempty'] = 'Tyhjä nimi tai sähköpostiosoite ei ole sall
$lang['profchanged'] = 'Käyttäjän profiilin päivitys onnistui.';
$lang['pwdforget'] = 'Unohtuiko salasana? Hanki uusi';
$lang['resendna'] = 'Tämä wiki ei tue salasanan uudelleenlähettämistä.';
-$lang['resendpwd'] = 'Lähetä uusi salasana käyttäjälle';
$lang['resendpwdmissing'] = 'Kaikki kentät on täytettävä.';
$lang['resendpwdnouser'] = 'Käyttäjää ei löydy tietokannastamme.';
$lang['resendpwdbadauth'] = 'Tunnistuskoodi on virheellinen. Varmista, että käytit koko varmistuslinkkiä.';
@@ -242,7 +240,7 @@ $lang['img_manager'] = 'Näytä mediamanagerissa';
$lang['subscr_subscribe_success'] = '%s lisätty %s tilauslistalle';
$lang['subscr_subscribe_error'] = 'Virhe lisättäessä %s tilauslistalle %s';
$lang['subscr_subscribe_noaddress'] = 'Login tiedoissasi ei ole sähköpostiosoitetta. Sinua ei voi lisätä tilaukseen';
-$lang['subscr_unsubscribe_success'] = '% poistettu tilauslistalta %s';
+$lang['subscr_unsubscribe_success'] = '%s poistettu tilauslistalta %s';
$lang['subscr_unsubscribe_error'] = 'Virhe tapahtui poistaessa %s tilauslistalta %s';
$lang['subscr_already_subscribed'] = '%s on jo tilannut %s';
$lang['subscr_not_subscribed'] = '%s ei ole tilannut %s';
@@ -253,8 +251,8 @@ $lang['subscr_m_unsubscribe'] = 'Poista tilaus';
$lang['subscr_m_subscribe'] = 'Tilaa';
$lang['subscr_m_receive'] = 'Vastaanota';
$lang['subscr_style_every'] = 'Sähköposti joka muutoksesta';
-$lang['subscr_style_digest'] = 'yhteenveto sähköposti joka sivusta';
-$lang['subscr_style_list'] = 'lista muuttuneista sivuista edellisen sähköpostin jälkeen';
+$lang['subscr_style_digest'] = 'yhteenveto-sähköposti joka sivusta (joka %.2f. päivä)';
+$lang['subscr_style_list'] = 'lista muuttuneista sivuista edellisen sähköpostin jälkeen (joka %.2f. päivä)';
$lang['authmodfailed'] = 'Käyttäjien autentikoinnin asetukset ovat virheelliset. Ilmoita asiasta wikin ylläpitäjälle.';
$lang['authtempfail'] = 'Käyttäjien autentikointi ei tällä hetkellä onnistu. Jos ongelma jatkuu, ota yhteyttä wikin ylläpitäjään.';
$lang['i_chooselang'] = 'Valitse kieli';
@@ -279,21 +277,6 @@ $lang['i_pol1'] = 'Julkinen Wiki (luku kaikilla, kirjoitus ja tie
$lang['i_pol2'] = 'Suljettu Wiki (luku, kirjoitus ja tiedostojen lähetys vain rekisteröityneillä käyttäjillä)';
$lang['i_retry'] = 'Yritä uudelleen';
$lang['i_license'] = 'Valitse lisenssi, jonka alle haluat sisältösi laittaa:';
-$lang['mu_intro'] = 'Täällä voit lähettää useampia tiedostoja kerralla. Klikkaa Selaa-nappia lisätäksesi ne jonoon. Paina lähetä, kun olet valmis.';
-$lang['mu_gridname'] = 'Tiedoston nimi';
-$lang['mu_gridsize'] = 'Koko';
-$lang['mu_gridstat'] = 'Tilanne';
-$lang['mu_namespace'] = 'Nimiavaruus';
-$lang['mu_browse'] = 'Selaa';
-$lang['mu_toobig'] = 'liian iso';
-$lang['mu_ready'] = 'valmis lähetettäväksi';
-$lang['mu_done'] = 'valmis';
-$lang['mu_fail'] = 'epäonnistui';
-$lang['mu_authfail'] = 'istunto on vanhentunut';
-$lang['mu_progress'] = '@PCT@% lähetetty';
-$lang['mu_filetypes'] = 'Sallitut tyypit';
-$lang['mu_info'] = 'tiedostoa ladattu.';
-$lang['mu_lasterr'] = 'Edellinen virhe:';
$lang['recent_global'] = 'Seuraat tällä hetkellä muutoksia nimiavaruuden <b>%s</b> sisällä. Voit myös <a href="%s">katsoa muutoksia koko wikissä</a>';
$lang['years'] = '%d vuotta sitten';
$lang['months'] = '%d kuukautta sitten';
@@ -301,22 +284,26 @@ $lang['weeks'] = '%d viikkoa sitten';
$lang['days'] = '%d päivää sitten';
$lang['hours'] = '%d tuntia sitten';
$lang['minutes'] = '%d minuuttia sitten';
-$lang['seconds'] = '% sekuntia sitten';
+$lang['seconds'] = '%d sekuntia sitten';
$lang['wordblock'] = 'Muutostasi ei talletettu, koska se sisältää estettyä tekstiä (spam).';
$lang['media_uploadtab'] = 'Lähetä';
$lang['media_searchtab'] = 'Etsi';
+$lang['media_file'] = 'Tiedosto';
$lang['media_viewtab'] = 'Näytä';
$lang['media_edittab'] = 'Muokkaa';
$lang['media_historytab'] = 'Historia';
-$lang['media_thumbsview'] = 'Pikkukuvat';
-$lang['media_listview'] = 'Lista';
-$lang['media_sort'] = 'Järjestä';
+$lang['media_list_thumbs'] = 'Thumbnails';
+$lang['media_list_rows'] = 'Rivit';
$lang['media_sort_name'] = 'nimen mukaan';
$lang['media_sort_date'] = 'päivämäärän mukaan';
+$lang['media_namespaces'] = 'Valitse nimiavaruus';
+$lang['media_files'] = 'Tiedostoja %s';
$lang['media_upload'] = 'Lähetä <strong>%s</strong> nimiavaruuteen';
$lang['media_search'] = 'Etsi <strong>%s</strong> nimiavaruudesta';
-$lang['media_edit'] = 'Muokkaa';
-$lang['media_history'] = 'Nämä ovat vanhat versiot tiedostosta.';
+$lang['media_view'] = '%s';
+$lang['media_viewold'] = '%s at %s';
+$lang['media_edit'] = 'Muokkaa %s';
+$lang['media_history'] = 'Nämä ovat vanhat versiot tiedostosta %s';
$lang['media_meta_edited'] = 'Metadataa muokattu';
$lang['media_perm_read'] = 'Anteeksi. Sinulla ei ole riittävästi oikeuksia lukeaksesi tiedostoja.';
$lang['media_perm_upload'] = 'Anteeksi. Sinulla ei ole riittävästi oikeuksia lähettääksesi tiedostoja.';
diff --git a/inc/lang/fo/lang.php b/inc/lang/fo/lang.php
index 4cb895f72..14ec8c56b 100644
--- a/inc/lang/fo/lang.php
+++ b/inc/lang/fo/lang.php
@@ -40,7 +40,6 @@ $lang['btn_backtomedia'] = 'Aftur til val av miðlafílu';
$lang['btn_subscribe'] = 'Tilmelda broytingar';
$lang['btn_profile'] = 'Dagføra vangamynd';
$lang['btn_reset'] = 'Nullstilla';
-$lang['btn_resendpwd'] = 'Send nýtt loyniorð';
$lang['btn_draft'] = 'Broyt kladdu';
$lang['btn_recover'] = 'Endurbygg kladdu';
$lang['btn_draftdel'] = 'Sletta';
@@ -75,7 +74,6 @@ $lang['profnoempty'] = 'Tómt navn ella t-post adressa er ikki loyvt.'
$lang['profchanged'] = 'Brúkara vangamynd dagført rætt.';
$lang['pwdforget'] = 'Gloymt títt loyniorð? Fá eitt nýtt';
$lang['resendna'] = 'Tað er ikki møguligt at fá sent nýtt loyniorð við hesu wiki.';
-$lang['resendpwd'] = 'Send nýtt loyniorð til';
$lang['resendpwdmissing'] = 'Tú skal filla út øll økir.';
$lang['resendpwdnouser'] = 'Vit kunna ikki finna hendan brúkara í okkara dátagrunni.';
$lang['resendpwdbadauth'] = 'Hald til góðar, hendan góðkenningar kodan er ikki gildug. Kanna eftir at tú nýtti tað fulfíggjaðu góðkenningarleinkjuna';
diff --git a/inc/lang/fr/index.txt b/inc/lang/fr/index.txt
index 14446681e..c66c656ab 100644
--- a/inc/lang/fr/index.txt
+++ b/inc/lang/fr/index.txt
@@ -1,4 +1,4 @@
====== Index ======
-Voici un index de toutes les pages disponibles, triées par [[doku>namespaces|catégorie]].
+Voici un index de toutes les pages disponibles, triées par [[doku>fr:namespaces|catégorie]].
diff --git a/inc/lang/fr/lang.php b/inc/lang/fr/lang.php
index 60b86b346..140c584c3 100644
--- a/inc/lang/fr/lang.php
+++ b/inc/lang/fr/lang.php
@@ -22,6 +22,7 @@
* @author Samuel Dorsaz <samuel.dorsaz@novelion.net>
* @author Johan Guilbaud <guilbaud.johan@gmail.com>
* @author schplurtz@laposte.net
+ * @author skimpax@gmail.com
*/
$lang['encoding'] = 'utf-8';
$lang['direction'] = 'ltr';
@@ -57,7 +58,6 @@ $lang['btn_backtomedia'] = 'Retour à la sélection du fichier média';
$lang['btn_subscribe'] = 'S\'abonner à la page';
$lang['btn_profile'] = 'Mettre à jour le profil';
$lang['btn_reset'] = 'Réinitialiser';
-$lang['btn_resendpwd'] = 'Envoyer le mot de passe';
$lang['btn_draft'] = 'Modifier le brouillon';
$lang['btn_recover'] = 'Récupérer le brouillon';
$lang['btn_draftdel'] = 'Effacer le brouillon';
@@ -94,7 +94,6 @@ $lang['profnoempty'] = 'Un nom ou une adresse de courriel vide n\'est
$lang['profchanged'] = 'Mise à jour du profil réussie.';
$lang['pwdforget'] = 'Mot de passe oublié ? Faites-vous envoyer votre mot de passe ';
$lang['resendna'] = 'Ce wiki ne permet pas le renvoi de mot de passe.';
-$lang['resendpwd'] = 'Renvoyer le mot de passe de';
$lang['resendpwdmissing'] = 'Désolé, vous devez remplir tous les champs.';
$lang['resendpwdnouser'] = 'Désolé, cet utilisateur est introuvable dans notre base.';
$lang['resendpwdbadauth'] = 'Désolé, ce code d\'authentification est invalide. Assurez-vous d\'avoir utilisé le lien de confirmation.';
@@ -112,7 +111,7 @@ $lang['lockexpire'] = 'Le blocage expire à';
$lang['js']['willexpire'] = 'Votre verrouillage pour la modification de cette page expire dans une minute.\nPour éviter les conflits, utilisez le bouton « Aperçu » pour réinitialiser le minuteur.';
$lang['js']['notsavedyet'] = 'Les modifications non enregistrées seront perdues. Voulez-vous vraiment continuer ?';
$lang['js']['searchmedia'] = 'Chercher des fichiers';
-$lang['js']['keepopen'] = 'Gardez la fenêtre ouverte pendant la sélection';
+$lang['js']['keepopen'] = 'Gardez cette fenêtre toujours ouverte';
$lang['js']['hidedetails'] = 'Masquer détails';
$lang['js']['mediatitle'] = 'Paramètres de lien';
$lang['js']['mediadisplay'] = 'Type de lien';
@@ -135,12 +134,10 @@ $lang['js']['medialeft'] = 'Aligner l\'image sur la gauche.';
$lang['js']['mediaright'] = 'Aligner l\'image sur la droite.';
$lang['js']['mediacenter'] = 'Centrer l\'image';
$lang['js']['medianoalign'] = 'Ne pas aligner.';
-$lang['js']['nosmblinks'] = 'Les liens vers les partages Windows ne fonctionnent qu\'avec Microsoft Internet Explorer.
- Vous pouvez toujours copier puis coller le lien.';
+$lang['js']['nosmblinks'] = 'Les liens vers les partages Windows ne fonctionnent qu\'avec Microsoft Internet Explorer.\nVous pouvez toujours copier puis coller le lien.';
$lang['js']['linkwiz'] = 'Assistant Lien';
$lang['js']['linkto'] = 'Lien vers :';
$lang['js']['del_confirm'] = 'Effacer cette entrée ?';
-$lang['js']['mu_btn'] = 'Envoyer plusieurs fichiers en même temps';
$lang['js']['restore_confirm'] = 'Voulez vous vraiment restaurer cette version ?';
$lang['js']['media_diff'] = 'Voir les différences:';
$lang['js']['media_diff_both'] = 'Côte à côte';
@@ -267,8 +264,8 @@ $lang['subscr_m_unsubscribe'] = 'Annuler la souscription';
$lang['subscr_m_subscribe'] = 'Souscrire';
$lang['subscr_m_receive'] = 'Recevoir';
$lang['subscr_style_every'] = 'Envoyer un courriel à chaque modification';
-$lang['subscr_style_digest'] = 'Courriel résumant les modifications de chaque page';
-$lang['subscr_style_list'] = 'Liste des pages modifiées depuis le dernier courriel';
+$lang['subscr_style_digest'] = 'Courriel, tous les %.2f jours, résumant les modifications de chaque page';
+$lang['subscr_style_list'] = 'Liste des pages modifiées depuis le dernier courriel (tous les %.2f jours)';
$lang['authmodfailed'] = 'Mauvais paramétrage de l\'authentification. Merci d\'informer l\'administrateur du Wiki.';
$lang['authtempfail'] = 'L\'authentification est temporairement indisponible. Si cela perdure, merci d\'informer l\'administrateur du Wiki.';
$lang['i_chooselang'] = 'Choisissez votre langue';
@@ -293,21 +290,6 @@ $lang['i_pol1'] = 'Wiki public (lecture pour tout le monde, écri
$lang['i_pol2'] = 'Wiki fermé (lecture, écriture, envoi de fichiers pour les utilisateurs enregistrés uniquement)';
$lang['i_retry'] = 'Réessayer';
$lang['i_license'] = 'Veuillez choisir la licence sous laquelle placer votre contenu :';
-$lang['mu_intro'] = 'Ici vous pouvez envoyer plusieurs fichiers en même temps. Cliquez sur le bouton parcourir pour les ajouter. Cliquez sur envoyer lorsque c\'est prêt. ';
-$lang['mu_gridname'] = 'Nom du fichier';
-$lang['mu_gridsize'] = 'Taille';
-$lang['mu_gridstat'] = 'État';
-$lang['mu_namespace'] = 'Catégorie';
-$lang['mu_browse'] = 'Parcourir';
-$lang['mu_toobig'] = 'Trop gros';
-$lang['mu_ready'] = 'Prêt à envoyer';
-$lang['mu_done'] = 'Terminé';
-$lang['mu_fail'] = 'Échoué';
-$lang['mu_authfail'] = 'Session expirée';
-$lang['mu_progress'] = '@PCT@% envoyé';
-$lang['mu_filetypes'] = 'Types de fichiers acceptés';
-$lang['mu_info'] = 'fichiers envoyés.';
-$lang['mu_lasterr'] = 'Dernière erreur : ';
$lang['recent_global'] = 'Vous êtes actuellement en train de regarder les modifications au sein de la catégorie <strong>%s</strong>. Vous pouvez aussi <a href="%s">voir les récentes modifications sur tout le wiki</a>.';
$lang['years'] = 'il y a %d ans';
$lang['months'] = 'il y a %d mois';
@@ -328,13 +310,13 @@ $lang['media_list_rows'] = 'Lignes';
$lang['media_sort_name'] = 'Tri par nom';
$lang['media_sort_date'] = 'Tri par date';
$lang['media_namespaces'] = 'Choisissez un espace de nom';
-$lang['media_files'] = 'Fichiers présents dans';
-$lang['media_upload'] = 'Télécharger dans la catégorie <strong>%s</strong>.';
-$lang['media_search'] = 'Chercher dans la catégorie <strong>%s</strong>.';
+$lang['media_files'] = 'Fichiers de %s';
+$lang['media_upload'] = 'Télécharger dans %s.';
+$lang['media_search'] = 'Chercher dans %s.';
$lang['media_view'] = '%s';
$lang['media_viewold'] = '%s dans %s';
$lang['media_edit'] = 'Éditer %s';
-$lang['media_history'] = 'Historique du %s';
+$lang['media_history'] = 'Historique de %s';
$lang['media_meta_edited'] = 'métadonnées éditées';
$lang['media_perm_read'] = 'Désolé, vous n\'avez pas les droits pour lire les fichiers.';
$lang['media_perm_upload'] = 'Désolé, vous n\'avez pas les droits pour télécharger des fichiers.';
diff --git a/inc/lang/gl/lang.php b/inc/lang/gl/lang.php
index 01938b3a0..9636d6c15 100644
--- a/inc/lang/gl/lang.php
+++ b/inc/lang/gl/lang.php
@@ -4,6 +4,7 @@
*
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
* @author Medúlio <medulio@ciberirmandade.org>
+ * @author Oscar M. Lage <r0sk10@gmail.com>
*/
$lang['encoding'] = 'utf-8';
$lang['direction'] = 'ltr';
@@ -39,12 +40,13 @@ $lang['btn_backtomedia'] = 'Volver á Selección de Arquivos-Media';
$lang['btn_subscribe'] = 'Avísame dos trocos na páxina';
$lang['btn_profile'] = 'Actualizar Perfil';
$lang['btn_reset'] = 'Reiniciar';
-$lang['btn_resendpwd'] = 'Envíame un novo contrasinal';
$lang['btn_draft'] = 'Editar borrador';
$lang['btn_recover'] = 'Recuperar borrador';
$lang['btn_draftdel'] = 'Eliminar borrador';
$lang['btn_revert'] = 'Restaurar';
$lang['btn_register'] = 'Rexístrate';
+$lang['btn_apply'] = 'Aplicar';
+$lang['btn_media'] = 'Xestor de Arquivos-Media';
$lang['loggedinas'] = 'Iniciaches sesión como';
$lang['user'] = 'Nome de Usuario';
$lang['pass'] = 'Contrasinal';
@@ -74,7 +76,6 @@ $lang['profnoempty'] = 'Non se permite un nome ou un enderezo de corre
$lang['profchanged'] = 'Perfil de usuario actualizado correctamente.';
$lang['pwdforget'] = 'Esqueceches o teu contrasinal? Consegue un novo';
$lang['resendna'] = 'Este wiki non permite o reenvío de contrasinais.';
-$lang['resendpwd'] = 'Enviar novo contrasinal para';
$lang['resendpwdmissing'] = 'Sentímolo, tes que cubrir todos os campos.';
$lang['resendpwdnouser'] = 'Sentímolo, non atopamos este usuario no noso banco de datos.';
$lang['resendpwdbadauth'] = 'Sentímolo, mais este código de autorización non é válido. Asegúrate de que usaches a ligazón completa de confirmación.';
@@ -89,25 +90,9 @@ $lang['txt_filename'] = 'Subir como (opcional)';
$lang['txt_overwrt'] = 'Sobrescribir arquivo existente';
$lang['lockedby'] = 'Bloqueado actualmente por';
$lang['lockexpire'] = 'O bloqueo remata o';
-$lang['js']['willexpire'] = 'O teu bloqueo para editares esta páxina vai caducar nun minuto.\nPara de evitar conflitos, emprega o botón de previsualización para reiniciares o contador do tempo de bloqueo.';
-$lang['js']['notsavedyet'] = "Perderanse os trocos non gardados.\nEstá certo de quereres continuar?";
-$lang['rssfailed'] = 'Houbo un erro ao tentar obter esta corrente RSS: ';
-$lang['nothingfound'] = 'Non se atopou nada.';
-$lang['mediaselect'] = 'Arquivos-Media';
-$lang['fileupload'] = 'Subida de Arquivos-Media';
-$lang['uploadsucc'] = 'Subida correcta';
-$lang['uploadfail'] = 'Erra na subida. Pode que sexa un problema de permisos?';
-$lang['uploadwrong'] = 'Subida denegada. Esta extensión de arquivo non está permitida!';
-$lang['uploadexist'] = 'Xa existe o arquivo. Non se fixo nada.';
-$lang['uploadbadcontent'] = 'O contido subido non concorda coa extensión do arquivo %s.';
-$lang['uploadspam'] = 'A subida foi bloqueada pola lista negra de correo-lixo.';
-$lang['uploadxss'] = 'A subida foi bloqueada por un posíbel contido malicioso.';
-$lang['uploadsize'] = 'O arquivo subido é grande de máis. (máx. %s)';
-$lang['deletesucc'] = 'O arquivo "%s" foi eliminado.';
-$lang['deletefail'] = '"%s" non puido ser eliminado - comproba os permisos.';
-$lang['mediainuse'] = 'O arquivo "%s" non foi eliminado - aínda está en uso.';
-$lang['namespaces'] = 'Nomes de espazos';
-$lang['mediafiles'] = 'Arquivos dispoñíbeis en';
+$lang['js']['willexpire'] = 'O teu bloqueo para editares esta páxina vai caducar nun minuto.\nPara de evitar conflitos, emprega o botón de previsualización para reiniciares o contador do tempo de bloqueo.';
+$lang['js']['notsavedyet'] = 'Perderanse os trocos non gardados.
+Está certo de quereres continuar?';
$lang['js']['searchmedia'] = 'Procurar ficheiros';
$lang['js']['keepopen'] = 'Manter a fiestra aberta na selección';
$lang['js']['hidedetails'] = 'Agochar Pormenores';
@@ -137,6 +122,35 @@ Sempre podes copiar e colar a ligazón.';
$lang['js']['linkwiz'] = 'Asistente de ligazóns';
$lang['js']['linkto'] = 'Ligazón para:';
$lang['js']['del_confirm'] = 'Estás certo de quereres eliminar os elementos seleccionados?';
+$lang['js']['restore_confirm'] = 'Realmente desexas restaurar esta versión?';
+$lang['js']['media_diff'] = 'Ver as diferencias:';
+$lang['js']['media_diff_both'] = 'Cara a Cara';
+$lang['js']['media_diff_opacity'] = 'Opacidade';
+$lang['js']['media_diff_portions'] = 'Porcións';
+$lang['js']['media_select'] = 'Selecciona arquivos...';
+$lang['js']['media_upload_btn'] = 'Subir';
+$lang['js']['media_done_btn'] = 'Feito';
+$lang['js']['media_drop'] = 'Solta aquí os arquivos a subir';
+$lang['js']['media_cancel'] = 'eliminar';
+$lang['js']['media_overwrt'] = 'Sobreescribir os arquivos existentes';
+$lang['rssfailed'] = 'Houbo un erro ao tentar obter esta corrente RSS: ';
+$lang['nothingfound'] = 'Non se atopou nada.';
+$lang['mediaselect'] = 'Arquivos-Media';
+$lang['fileupload'] = 'Subida de Arquivos-Media';
+$lang['uploadsucc'] = 'Subida correcta';
+$lang['uploadfail'] = 'Erra na subida. Pode que sexa un problema de permisos?';
+$lang['uploadwrong'] = 'Subida denegada. Esta extensión de arquivo non está permitida!';
+$lang['uploadexist'] = 'Xa existe o arquivo. Non se fixo nada.';
+$lang['uploadbadcontent'] = 'O contido subido non concorda coa extensión do arquivo %s.';
+$lang['uploadspam'] = 'A subida foi bloqueada pola lista negra de correo-lixo.';
+$lang['uploadxss'] = 'A subida foi bloqueada por un posíbel contido malicioso.';
+$lang['uploadsize'] = 'O arquivo subido é grande de máis. (máx. %s)';
+$lang['deletesucc'] = 'O arquivo "%s" foi eliminado.';
+$lang['deletefail'] = '"%s" non puido ser eliminado - comproba os permisos.';
+$lang['mediainuse'] = 'O arquivo "%s" non foi eliminado - aínda está en uso.';
+$lang['namespaces'] = 'Nomes de espazos';
+$lang['mediafiles'] = 'Arquivos dispoñíbeis en';
+$lang['accessdenied'] = 'Non tes permitido ver esta páxina.';
$lang['mediausage'] = 'Emprega a seguinte sintaxe para inserires unha referencia a este arquivo:';
$lang['mediaview'] = 'Ver arquivo orixinal';
$lang['mediaroot'] = 'raigaña';
@@ -152,6 +166,10 @@ $lang['current'] = 'actual';
$lang['yours'] = 'A túa Versión';
$lang['diff'] = 'Amosar diferenzas coa versión actual';
$lang['diff2'] = 'Amosar diferenzas entre as revisións seleccionadas';
+$lang['difflink'] = 'Enlazar a esta vista de comparación';
+$lang['diff_type'] = 'Ver diferenzas:';
+$lang['diff_inline'] = 'Por liña';
+$lang['diff_side'] = 'Cara a Cara';
$lang['line'] = 'Liña';
$lang['breadcrumb'] = 'Trazado';
$lang['youarehere'] = 'Estás aquí';
@@ -169,6 +187,10 @@ $lang['mail_changed'] = 'páxina mudada:';
$lang['mail_subscribe_list'] = 'páxinas mudadas en nome de espazo:';
$lang['mail_new_user'] = 'Novo usuario:';
$lang['mail_upload'] = 'arquivo subido:';
+$lang['changes_type'] = 'Ver cambios';
+$lang['pages_changes'] = 'Páxinas';
+$lang['media_changes'] = 'Arquivos-Media';
+$lang['both_changes'] = 'Ambos, páxinas e arquivos-media';
$lang['qb_bold'] = 'Texto Resaltado';
$lang['qb_italic'] = 'Texto en Cursiva';
$lang['qb_underl'] = 'Texto Subliñado';
@@ -209,6 +231,9 @@ $lang['img_copyr'] = 'Copyright';
$lang['img_format'] = 'Formato';
$lang['img_camera'] = 'Cámara';
$lang['img_keywords'] = 'Verbas chave';
+$lang['img_width'] = 'Ancho';
+$lang['img_height'] = 'Alto';
+$lang['img_manager'] = 'Ver no xestor de arquivos-media';
$lang['subscr_subscribe_success'] = 'Engadido %s á lista de subscrición para %s';
$lang['subscr_subscribe_error'] = 'Erro ao tentar engadir %s á lista de subscrición para %s';
$lang['subscr_subscribe_noaddress'] = 'Non hai enderezos asociados co teu inicio de sesión, non é posíbel engadirte á lista de subscrición';
@@ -252,21 +277,7 @@ $lang['i_pol0'] = 'Wiki Aberto (lectura, escritura, subida de arq
$lang['i_pol1'] = 'Wiki Público (lectura para todas as persoas, escritura e subida de arquivos para usuarios rexistrados)';
$lang['i_pol2'] = 'Wiki Fechado (lectura, escritura, subida de arquivos só para usuarios rexistrados)';
$lang['i_retry'] = 'Tentar de novo';
-$lang['mu_intro'] = 'Aquí podes subir varios arquivos de vez. Preme o botón Navegar para engadilos á cola. Preme en Subir cando remates.';
-$lang['mu_gridname'] = 'Nome de Arquivo';
-$lang['mu_gridsize'] = 'Tamaño';
-$lang['mu_gridstat'] = 'Estado';
-$lang['mu_namespace'] = 'Nome de Espazo';
-$lang['mu_browse'] = 'Navegar';
-$lang['mu_toobig'] = 'grande de máis';
-$lang['mu_ready'] = 'disposto para subir';
-$lang['mu_done'] = 'feito';
-$lang['mu_fail'] = 'fallou';
-$lang['mu_authfail'] = 'sesión expirada';
-$lang['mu_progress'] = '@PCT@% subido';
-$lang['mu_filetypes'] = 'Tipos de arquivo Permitidos';
-$lang['mu_info'] = 'arquivos subidos.';
-$lang['mu_lasterr'] = 'Último erro:';
+$lang['i_license'] = 'Por favor escolla a licenza para o contido:';
$lang['recent_global'] = 'Agora mesmo estás a ver os trocos no nome de espazo <b>%s</b>. Tamén podes <a href="%s">ver os trocos recentes no Wiki enteiro</a>.';
$lang['years'] = 'hai %d anos';
$lang['months'] = 'hai %d meses';
@@ -275,3 +286,28 @@ $lang['days'] = 'hai %d días';
$lang['hours'] = 'hai %d horas';
$lang['minutes'] = 'hai %d minutos';
$lang['seconds'] = 'hai %d segundos';
+$lang['wordblock'] = 'Non se gardaron os cambios porque conteñen texto bloqueado (spam).';
+$lang['media_uploadtab'] = 'Subir';
+$lang['media_searchtab'] = 'Buscar';
+$lang['media_file'] = 'Arquivo';
+$lang['media_viewtab'] = 'Ver';
+$lang['media_edittab'] = 'Editar';
+$lang['media_historytab'] = 'Histórico';
+$lang['media_list_thumbs'] = 'Miniaturas';
+$lang['media_list_rows'] = 'Filas';
+$lang['media_sort_name'] = 'Nome';
+$lang['media_sort_date'] = 'Data';
+$lang['media_namespaces'] = 'Escolla espazo';
+$lang['media_files'] = 'Arquivos en %s';
+$lang['media_upload'] = 'Subir a %s';
+$lang['media_search'] = 'Buscar en %s';
+$lang['media_view'] = '%s';
+$lang['media_viewold'] = '%s en %s';
+$lang['media_edit'] = 'Editar %s';
+$lang['media_history'] = 'Historia de %s';
+$lang['media_meta_edited'] = 'datos meta editados';
+$lang['media_perm_read'] = 'Sentímolo, non tes permisos suficientes para ler arquivos.';
+$lang['media_perm_upload'] = 'Sentímolo, non tes permisos suficientes para subir arquivos.';
+$lang['media_update'] = 'Subir nova versión';
+$lang['media_restore'] = 'Restaurar esta versión';
+$lang['plugin_install_err'] = 'Extensión instalada correctamente. Re-nomea o directorio da extensión de \'%s\' a \'%s\'.';
diff --git a/inc/lang/he/lang.php b/inc/lang/he/lang.php
index f295e44a9..00eb4549b 100644
--- a/inc/lang/he/lang.php
+++ b/inc/lang/he/lang.php
@@ -45,7 +45,6 @@ $lang['btn_backtomedia'] = 'חזרה לבחירת קובץ מדיה';
$lang['btn_subscribe'] = 'מעקב אחרי שינוים';
$lang['btn_profile'] = 'עדכון הפרופיל';
$lang['btn_reset'] = 'איפוס';
-$lang['btn_resendpwd'] = 'שליחת ססמה חדשה';
$lang['btn_draft'] = 'עריכת טיוטה';
$lang['btn_recover'] = 'שחזור טיוטה';
$lang['btn_draftdel'] = 'מחיקת טיוטה';
@@ -80,7 +79,6 @@ $lang['profnoempty'] = 'השם וכתובת הדוא״ל לא יכול
$lang['profchanged'] = 'הפרופיל עודכן בהצלחה';
$lang['pwdforget'] = 'שכחת את הססמה שלך? ניתן לקבל חדשה';
$lang['resendna'] = 'הוויקי הזה אינו תומך בחידוש ססמה';
-$lang['resendpwd'] = 'שליחת ססמה חדשה עבור';
$lang['resendpwdmissing'] = 'עליך למלא את כל השדות, עמך הסליחה.';
$lang['resendpwdnouser'] = 'משתמש בשם זה לא נמצא במסד הנתונים, עמך הסליחה.';
$lang['resendpwdbadauth'] = 'קוד אימות זה אינו תקף. יש לוודא כי נעשה שימוש בקישור האימות המלא, עמך הסליחה.';
@@ -259,21 +257,6 @@ $lang['i_pol1'] = ' ויקי ציבורי (קריאה לכולם,
$lang['i_pol2'] = 'ויקי סגור (קריאה, כתיבה והעלאה למשתמשים רשומים בלבד)';
$lang['i_retry'] = 'ניסיון נוסף';
$lang['i_license'] = 'נא לבחור את הרישיון שיחול על התוכן שבוויקי שלך:';
-$lang['mu_intro'] = 'דרך כאן ניתן להעלות מספר קבצים בבת אחת. יש ללחוץ על לחצן החיפוש להוסיף אותם למחסנית. ניתן ללחוץ על העלאה לסיום.';
-$lang['mu_gridname'] = 'שם הקובץ';
-$lang['mu_gridsize'] = 'גודל';
-$lang['mu_gridstat'] = 'מצב';
-$lang['mu_namespace'] = 'מרחב שם';
-$lang['mu_browse'] = 'חיפוש';
-$lang['mu_toobig'] = 'גדול מדי';
-$lang['mu_ready'] = 'בהמתנה להעלאה';
-$lang['mu_done'] = 'הסתיים';
-$lang['mu_fail'] = 'נכשל';
-$lang['mu_authfail'] = 'תוקף ההפעלה פג';
-$lang['mu_progress'] = '@PCT@% הועלה';
-$lang['mu_filetypes'] = 'סוגי קבצים מורשים';
-$lang['mu_info'] = 'הקבצים הועלו';
-$lang['mu_lasterr'] = 'שגיאה אחרונה:';
$lang['recent_global'] = 'נכון לעכשיו מתנהל על ידיך מעקב אחר מרחב השם <b>%s</b>. כמו כן, באפשרותך <a href="%s">לצפות בשינויים האחרונים בוויקי כולו</a>.';
$lang['years'] = 'לפני %d שנים';
$lang['months'] = 'לפני %d חודשים';
diff --git a/inc/lang/hi/lang.php b/inc/lang/hi/lang.php
index 00e5589d8..893457066 100644
--- a/inc/lang/hi/lang.php
+++ b/inc/lang/hi/lang.php
@@ -59,7 +59,6 @@ $lang['regpwmail'] = 'आपकी डोकुविकी का
$lang['reghere'] = 'आपके पास अभी तक कोई खाता नहीं है? बस एक लें |';
$lang['profna'] = 'यह विकी प्रोफ़ाइल संशोधन का समर्थन नहीं करता |';
$lang['profnochange'] = 'कोई परिवर्तन नहीं, कुछ नहीं करना |';
-$lang['resendpwd'] = 'नवगुप्तशब्द भेजें';
$lang['resendpwdmissing'] = 'छमा करें, आपको सारे रिक्त स्थान भरने पड़ेंगे |';
$lang['resendpwdsuccess'] = 'आपका नवगुप्तशब्द ईमेल द्वारा सम्प्रेषित कर दिया गया है |';
$lang['txt_upload'] = 'अपलोड करने के लिए फ़ाइल चुनें';
@@ -116,10 +115,3 @@ $lang['i_installer'] = 'डोकुविकी इंस्टॉल
$lang['i_wikiname'] = 'विकी का नाम';
$lang['i_superuser'] = 'महाउपयोगकर्ता';
$lang['i_retry'] = 'पुनःप्रयास';
-$lang['mu_gridsize'] = 'आकार';
-$lang['mu_gridstat'] = 'स्थिति';
-$lang['mu_browse'] = 'ब्राउज़';
-$lang['mu_toobig'] = 'बहुत बड़ा';
-$lang['mu_ready'] = 'अपलोड करने के लिए तैयार';
-$lang['mu_done'] = 'पूर्ण';
-$lang['mu_fail'] = 'असफल';
diff --git a/inc/lang/hr/lang.php b/inc/lang/hr/lang.php
index ef10d7720..a0438d915 100644
--- a/inc/lang/hr/lang.php
+++ b/inc/lang/hr/lang.php
@@ -42,7 +42,6 @@ $lang['btn_backtomedia'] = 'Povratak na Mediafile izbornik';
$lang['btn_subscribe'] = 'Pretplati se na promjene dokumenta';
$lang['btn_profile'] = 'Ažuriraj profil';
$lang['btn_reset'] = 'Poništi promjene';
-$lang['btn_resendpwd'] = 'Pošalji novu lozinku';
$lang['btn_draft'] = 'Uredi nacrt dokumenta';
$lang['btn_recover'] = 'Vrati prijašnji nacrt dokumenta';
$lang['btn_draftdel'] = 'Obriši nacrt dokumenta';
@@ -77,7 +76,6 @@ $lang['profnoempty'] = 'Prazno korisničko ime ili email nisu dopušte
$lang['profchanged'] = 'Korisnički profil je uspješno izmijenjen.';
$lang['pwdforget'] = 'Izgubili ste lozinku? Zatražite novu';
$lang['resendna'] = 'Ovaj wiki ne podržava ponovno slanje lozinke emailom.';
-$lang['resendpwd'] = 'Poslati novu lozinku za';
$lang['resendpwdmissing'] = 'Ispunite sva polja.';
$lang['resendpwdnouser'] = 'Nije moguće pronaći korisnika.';
$lang['resendpwdbadauth'] = 'Neispravan autorizacijski kod. Provjerite da li ste koristili potpun potvrdni link.';
@@ -257,21 +255,6 @@ $lang['i_pol1'] = 'Javni Wiki (čitanje za sve, pisanje i učitav
$lang['i_pol2'] = 'Zatvoreni Wiki (čitanje, pisanje, učitavanje samo za registrirane korisnike)';
$lang['i_retry'] = 'Pokušaj ponovo';
$lang['i_license'] = 'Molim odaberite licencu pod kojom želite postavljati vaš sadržaj:';
-$lang['mu_intro'] = 'Ovdje možeš učitati više datoteka odjednom. Klikni gumb pregled te ih dodajte u red. Pritisnite učitaj kad ste gotovi.';
-$lang['mu_gridname'] = 'Naziv datoteke';
-$lang['mu_gridsize'] = 'Veličina';
-$lang['mu_gridstat'] = 'Status';
-$lang['mu_namespace'] = 'Imenski prostor';
-$lang['mu_browse'] = 'Pregled';
-$lang['mu_toobig'] = 'prevelik';
-$lang['mu_ready'] = 'spremno za učitavanje';
-$lang['mu_done'] = 'gotovo';
-$lang['mu_fail'] = 'nije uspio';
-$lang['mu_authfail'] = 'sjednica istekla';
-$lang['mu_progress'] = '@PCT@% učitan';
-$lang['mu_filetypes'] = 'Dozvoljeni tipovi datoteka';
-$lang['mu_info'] = 'datoteke učitane.';
-$lang['mu_lasterr'] = 'Posljednja greška:';
$lang['recent_global'] = 'Trenutno gledate promjene unutar <b>%s</b> imenskog prostora. Također možete <a href="%s">vidjeti zadnje promjene cijelog wiki-a</a>';
$lang['years'] = '%d godina prije';
$lang['months'] = '%d mjeseci prije';
diff --git a/inc/lang/hu/lang.php b/inc/lang/hu/lang.php
index 23419a2bd..671b225f2 100644
--- a/inc/lang/hu/lang.php
+++ b/inc/lang/hu/lang.php
@@ -45,7 +45,6 @@ $lang['btn_backtomedia'] = 'Vissza a médiafájlok kezeléséhez';
$lang['btn_subscribe'] = 'Oldalváltozások-hírlevél feliratkozás';
$lang['btn_profile'] = 'Személyes beállítások';
$lang['btn_reset'] = 'Alaphelyzet';
-$lang['btn_resendpwd'] = 'Új jelszó küldése';
$lang['btn_draft'] = 'Piszkozat szerkesztése';
$lang['btn_recover'] = 'Piszkozat folytatása';
$lang['btn_draftdel'] = 'Piszkozat törlése';
@@ -80,7 +79,6 @@ $lang['profnoempty'] = 'A név és e-mail mező nem maradhat üresen!'
$lang['profchanged'] = 'A személyes beállítások változtatása megtörtént.';
$lang['pwdforget'] = 'Elfelejtetted a jelszavad? Itt kérhetsz újat';
$lang['resendna'] = 'Ez a wiki nem támogatja a jelszó újraküldést.';
-$lang['resendpwd'] = 'Új jelszó kiküldése ennek a felhasználónak';
$lang['resendpwdmissing'] = 'Sajnáljuk, az összes mezőt ki kell töltened.';
$lang['resendpwdnouser'] = 'Sajnáljuk, ilyen azonosítójú felhasználónk nem létezik.';
$lang['resendpwdbadauth'] = 'Sajnáljuk, ez a megerősítő kód nem helyes. Biztos, hogy a teljes megerősítés linket beírtad pontosan?';
@@ -262,21 +260,6 @@ $lang['i_pol1'] = 'Publikus Wiki (mindenki olvashatja, de csak re
$lang['i_pol2'] = 'Zárt Wiki (csak regisztrált felhasználók olvashatják, írhatják és tölthetnek fel fájlokat)';
$lang['i_retry'] = 'Újra';
$lang['i_license'] = 'Kérlek válassz licenszt a feltöltött tartalomhoz:';
-$lang['mu_intro'] = 'Itt több fájlt is fel tudsz tölteni egyszerre. Kattints a "Kiválaszt" gombra és add hozzá a listához. Nyomd meg a Feltöltés gombot, amikor elkészültél.';
-$lang['mu_gridname'] = 'Fájlnév';
-$lang['mu_gridsize'] = 'Méret';
-$lang['mu_gridstat'] = 'Állapot';
-$lang['mu_namespace'] = 'Névtér';
-$lang['mu_browse'] = 'Kiválaszt';
-$lang['mu_toobig'] = 'túl nagy';
-$lang['mu_ready'] = 'feltöltésre kész';
-$lang['mu_done'] = 'kész';
-$lang['mu_fail'] = 'hibás';
-$lang['mu_authfail'] = 'session lejárt';
-$lang['mu_progress'] = '@PCT@% feltöltve';
-$lang['mu_filetypes'] = 'Megengedett fájltípusok';
-$lang['mu_info'] = 'Fájlok feltöltve.';
-$lang['mu_lasterr'] = 'Utolsó hiba:';
$lang['recent_global'] = 'Jelenleg csak a <b>%s</b> névtér friss változásai látszanak. Megtekinthetők <a href="%s">a teljes wiki friss változásai</a> is.';
$lang['years'] = '%d évvel ezelőtt';
$lang['months'] = '%d hónappal ezelőtt';
diff --git a/inc/lang/ia/lang.php b/inc/lang/ia/lang.php
index 8398f29f0..d7be1eff3 100644
--- a/inc/lang/ia/lang.php
+++ b/inc/lang/ia/lang.php
@@ -45,7 +45,6 @@ $lang['btn_backtomedia'] = 'Retornar al selection de files multimedia';
$lang['btn_subscribe'] = 'Gerer subscriptiones';
$lang['btn_profile'] = 'Actualisar profilo';
$lang['btn_reset'] = 'Reinitialisar';
-$lang['btn_resendpwd'] = 'Inviar nove contrasigno';
$lang['btn_draft'] = 'Modificar version provisori';
$lang['btn_recover'] = 'Recuperar version provisori';
$lang['btn_draftdel'] = 'Deler version provisori';
@@ -80,7 +79,6 @@ $lang['profnoempty'] = 'Un nomine o adresse de e-mail vacue non es per
$lang['profchanged'] = 'Actualisation del profilo de usator succedite.';
$lang['pwdforget'] = 'Contrasigno oblidate? Obtene un altere';
$lang['resendna'] = 'Iste wiki non supporta le invio de un nove contrasigno.';
-$lang['resendpwd'] = 'Inviar nove contrasigno pro';
$lang['resendpwdmissing'] = 'Es necessari completar tote le campos.';
$lang['resendpwdnouser'] = 'Iste usator non ha essite trovate in le base de datos.';
$lang['resendpwdbadauth'] = 'Iste codice de authentication non es valide. Assecura te que tu ha usate le ligamine de confirmation complete.';
@@ -257,21 +255,6 @@ $lang['i_pol0'] = 'Wiki aperte (lectura, scriptura, incargamento
$lang['i_pol1'] = 'Wiki public (lectura pro omnes, scriptura e incargamento pro usatores registrate)';
$lang['i_pol2'] = 'Wiki claudite (lectura, scriptura e incargamento solmente pro usatores registrate)';
$lang['i_retry'] = 'Reprobar';
-$lang['mu_intro'] = 'Hic tu pote incargar plure files insimul. Clicca super le button Navigar pro adder los al cauda. Preme Incargar quando tu ha finite.';
-$lang['mu_gridname'] = 'Nomine de file';
-$lang['mu_gridsize'] = 'Dimension';
-$lang['mu_gridstat'] = 'Stato';
-$lang['mu_namespace'] = 'Spatio de nomines';
-$lang['mu_browse'] = 'Navigar';
-$lang['mu_toobig'] = 'troppo grande';
-$lang['mu_ready'] = 'preste pro incargamento';
-$lang['mu_done'] = 'complete';
-$lang['mu_fail'] = 'fallite';
-$lang['mu_authfail'] = 'session expirate';
-$lang['mu_progress'] = '@PCT@% incargate';
-$lang['mu_filetypes'] = 'Typos de file permittite';
-$lang['mu_info'] = 'files incargate.';
-$lang['mu_lasterr'] = 'Ultime error:';
$lang['recent_global'] = 'Tu observa actualmente le modificationes intra le spatio de nomines <b>%s</b>. Tu pote etiam <a href="%s">vider le modificationes recente de tote le wiki</a>.';
$lang['years'] = '%d annos retro';
$lang['months'] = '%d menses retro';
diff --git a/inc/lang/id-ni/lang.php b/inc/lang/id-ni/lang.php
index 9c04f0259..1a4d03498 100644
--- a/inc/lang/id-ni/lang.php
+++ b/inc/lang/id-ni/lang.php
@@ -38,7 +38,6 @@ $lang['btn_backlink'] = 'Link fangawuli';
$lang['btn_backtomedia'] = 'Angawuli ba filianö Mediafile';
$lang['btn_profile'] = 'Famohouni pörofile';
$lang['btn_reset'] = 'Fawu\'a';
-$lang['btn_resendpwd'] = 'Fa\'ohe\'ö kode sibohou';
$lang['btn_draft'] = 'Fawu\'a wanura';
$lang['btn_draftdel'] = 'Heta zura';
$lang['btn_register'] = 'Fasura\'ö';
@@ -69,7 +68,6 @@ $lang['profnoempty'] = 'Lö tetehegö na lö hadöi töi ma imele.';
$lang['profchanged'] = 'Pörofile zangoguna\'ö no tebohouni.';
$lang['pwdforget'] = 'Hadia olifu\'ö kode? Fuli halö kode';
$lang['resendna'] = 'Lö tetehegi ba wiki da\'a wama\'ohe\'ö kode dua kali.';
-$lang['resendpwd'] = 'Tefa\'ohe\'ö kode sibahou khö';
$lang['resendpwdmissing'] = 'Bologö dödöu, si lö tola lö\'ö öfo\'ösi fefu nahia si tohöna.';
$lang['resendpwdnouser'] = 'Bologö dödöu, lö masöndra zangoguna da\'a ba database.';
$lang['resendpwdconfirm'] = 'No tefaohe\'ö link famaduhu\'ö ba imele.';
diff --git a/inc/lang/id/lang.php b/inc/lang/id/lang.php
index e8026acee..2302d4f6f 100644
--- a/inc/lang/id/lang.php
+++ b/inc/lang/id/lang.php
@@ -42,7 +42,6 @@ $lang['btn_subscribe'] = 'Ikuti Perubahan';
$lang['btn_unsubscribe'] = 'Berhenti Ikuti Perubahan';
$lang['btn_profile'] = 'Ubah Profil';
$lang['btn_reset'] = 'Reset';
-$lang['btn_resendpwd'] = 'Kirim password baru';
$lang['btn_draft'] = 'Edit draft';
$lang['btn_draftdel'] = 'Hapus draft';
$lang['btn_register'] = 'Daftar';
@@ -74,7 +73,6 @@ $lang['profnoempty'] = 'Mohon mengisikan nama atau alamat email.';
$lang['profchanged'] = 'Profil User berhasil diubah.';
$lang['pwdforget'] = 'Lupa Password? Dapatkan yang baru';
$lang['resendna'] = 'Wiki ini tidak mendukung pengiriman ulang password.';
-$lang['resendpwd'] = 'Kirim password baru untuk';
$lang['resendpwdmissing'] = 'Maaf, Anda harus mengisikan semua field.';
$lang['resendpwdnouser'] = 'Maaf, user ini tidak ditemukan.';
$lang['resendpwdbadauth'] = 'Maaf, kode autentikasi tidak valid. Pastikan Anda menggunakan keseluruhan link konfirmasi.';
@@ -197,14 +195,3 @@ $lang['i_pol0'] = 'Wiki Terbuka (baca, tulis, upload untuk semua
$lang['i_pol1'] = 'Wiki Publik (baca untuk semua orang, tulis dan upload untuk pengguna terdaftar)';
$lang['i_pol2'] = 'Wiki Privat (baca, tulis dan upload hanya untuk pengguna terdaftar)';
$lang['i_retry'] = 'Coba Lagi';
-$lang['mu_gridname'] = 'Nama file';
-$lang['mu_gridsize'] = 'Ukuran';
-$lang['mu_gridstat'] = 'Status';
-$lang['mu_namespace'] = 'Namaspace';
-$lang['mu_browse'] = 'Jelajah';
-$lang['mu_ready'] = 'Siap untuk uplod';
-$lang['mu_done'] = 'Selesai';
-$lang['mu_fail'] = 'Gagal';
-$lang['mu_authfail'] = 'sesi habis';
-$lang['mu_progress'] = '@PCT@% uploaded';
-$lang['mu_filetypes'] = 'Izinkan tipe file';
diff --git a/inc/lang/is/lang.php b/inc/lang/is/lang.php
index 0e281e58d..be20da6b3 100644
--- a/inc/lang/is/lang.php
+++ b/inc/lang/is/lang.php
@@ -47,7 +47,6 @@ $lang['btn_subscribe'] = 'Vakta';
$lang['btn_unsubscribe'] = 'Afvakta';
$lang['btn_profile'] = 'Uppfæra notanda';
$lang['btn_reset'] = 'Endurstilla';
-$lang['btn_resendpwd'] = 'Senda nýtt aðgangsorð með tölvupósti';
$lang['btn_draft'] = 'Breyta uppkasti';
$lang['btn_recover'] = 'Endurheimta uppkast';
$lang['btn_draftdel'] = 'Eyða uppkasti';
@@ -82,7 +81,6 @@ $lang['profnoempty'] = 'Það er ekki leyfilegt að skilja nafn og pó
$lang['profchanged'] = 'Notendaupplýsingum breytt';
$lang['pwdforget'] = 'Gleymt aðgangsorð? Fáðu nýtt';
$lang['resendna'] = 'Þessi wiki styður ekki endursendingar aðgangsorðs';
-$lang['resendpwd'] = 'Senda nýtt aðgangsorð fyrir';
$lang['resendpwdmissing'] = 'Afsakið, þú verður að út eyðublaðið allt';
$lang['resendpwdnouser'] = 'Afsakið, notandi finnst ekki.';
$lang['resendpwdbadauth'] = 'Afsakið, þessi sannvottunorð er ekki gild. Gakktu úr skugga um að þú notaðir að ljúka staðfesting hlekkur.';
@@ -185,10 +183,3 @@ $lang['img_format'] = 'Forsnið';
$lang['img_camera'] = 'Myndavél';
$lang['img_keywords'] = 'Lykilorðir';
$lang['i_retry'] = 'Reyna aftur';
-$lang['mu_gridsize'] = 'Stærð';
-$lang['mu_toobig'] = 'of stór';
-$lang['mu_ready'] = 'tilbúin til upphleðslu';
-$lang['mu_done'] = 'lokið';
-$lang['mu_fail'] = 'mistókst';
-$lang['mu_info'] = 'Skrár innhlaðnar.';
-$lang['mu_lasterr'] = 'Síðasta villa:';
diff --git a/inc/lang/it/lang.php b/inc/lang/it/lang.php
index 9f4d42004..eda33898b 100644
--- a/inc/lang/it/lang.php
+++ b/inc/lang/it/lang.php
@@ -48,7 +48,6 @@ $lang['btn_backtomedia'] = 'Torna alla selezione file';
$lang['btn_subscribe'] = 'Sottoscrivi modifiche';
$lang['btn_profile'] = 'Aggiorna profilo';
$lang['btn_reset'] = 'Annulla';
-$lang['btn_resendpwd'] = 'Invia nuova password';
$lang['btn_draft'] = 'Modifica bozza';
$lang['btn_recover'] = 'Ripristina bozza';
$lang['btn_draftdel'] = 'Elimina bozza';
@@ -83,7 +82,6 @@ $lang['profnoempty'] = 'Nome o indirizzo email vuoti non sono consenti
$lang['profchanged'] = 'Aggiornamento del profilo utente riuscito.';
$lang['pwdforget'] = 'Hai dimenticato la password? Richiedine una nuova';
$lang['resendna'] = 'Questo wiki non supporta l\'invio di nuove password.';
-$lang['resendpwd'] = 'Invia nuova password per';
$lang['resendpwdmissing'] = 'Devi riempire tutti i campi.';
$lang['resendpwdnouser'] = 'Impossibile trovare questo utente nel database.';
$lang['resendpwdbadauth'] = 'Spiacenti, questo codice di autorizzazione non è valido. Assicurati di aver usato il link completo di conferma.';
@@ -92,7 +90,7 @@ $lang['resendpwdsuccess'] = 'La nuova password è stata spedita via email.'
$lang['license'] = 'Ad eccezione da dove è diversamente indicato, il contenuto di questo wiki è soggetto alla seguente licenza:';
$lang['licenseok'] = 'Nota: modificando questa pagina accetti di rilasciare il contenuto sotto la seguente licenza:';
$lang['searchmedia'] = 'Cerca file di nome:';
-$lang['searchmedia_in'] = 'Cerca in &s';
+$lang['searchmedia_in'] = 'Cerca in %s';
$lang['txt_upload'] = 'Seleziona un file da caricare';
$lang['txt_filename'] = 'Carica come (opzionale)';
$lang['txt_overwrt'] = 'Sovrascrivi file esistente';
@@ -225,8 +223,8 @@ $lang['subscr_subscribe_error'] = 'Impossibile aggiungere %s alla lista di sotto
$lang['subscr_subscribe_noaddress'] = 'Non esiste alcun indirizzo associato al tuo account, non puoi essere aggiunto alla lista di sottoscrizioni';
$lang['subscr_unsubscribe_success'] = 'Rimosso %s dalla lista di sottoscrizioni %s';
$lang['subscr_unsubscribe_error'] = 'Impossibile rimuovere %s dalla lista di sottoscrizioni %s';
-$lang['subscr_already_subscribed'] = '% è già iscritto a %s';
-$lang['subscr_not_subscribed'] = '% non è iscritto a %s';
+$lang['subscr_already_subscribed'] = '%s è già iscritto a %s';
+$lang['subscr_not_subscribed'] = '%s non è iscritto a %s';
$lang['subscr_m_not_subscribed'] = 'Attualmente non sei iscritto alla pagina o categoria corrente';
$lang['subscr_m_new_header'] = 'Aggiungi sottoscrizione';
$lang['subscr_m_current_header'] = 'Sottoscrizioni attuali';
@@ -262,21 +260,6 @@ $lang['i_pol1'] = 'Wiki Pubblico (lettura per tutti, scrittura e
$lang['i_pol2'] = 'Wiki Chiuso (lettura, scrittura, caricamento file solamente per gli utenti registrati)';
$lang['i_retry'] = 'Riprova';
$lang['i_license'] = 'Per favore scegli la licenza sotto cui vuoi rilasciare il contenuto:';
-$lang['mu_intro'] = 'Qui si possono caricare più di un file alla volta. Scegliere "Sfoglia..." per aggiungere file alla coda. Alla fine, fai click su "Invia file".';
-$lang['mu_gridname'] = 'Nome file';
-$lang['mu_gridsize'] = 'Dimensione';
-$lang['mu_gridstat'] = 'Stato';
-$lang['mu_namespace'] = 'Categoria';
-$lang['mu_browse'] = 'Sfoglia';
-$lang['mu_toobig'] = 'troppo grande';
-$lang['mu_ready'] = 'pronto per caricare';
-$lang['mu_done'] = 'completo';
-$lang['mu_fail'] = 'fallito';
-$lang['mu_authfail'] = 'sessione scaduta';
-$lang['mu_progress'] = '@PCT@% caricato';
-$lang['mu_filetypes'] = 'Tipi di file permessi';
-$lang['mu_info'] = 'file caricati.';
-$lang['mu_lasterr'] = 'Ultimo errore:';
$lang['recent_global'] = 'Stai attualmente vedendo le modifiche effettuate nell\'area <b>%s</b>. Puoi anche <a href="%s">vedere le modifiche recenti dell\'intero wiki</a>.';
$lang['years'] = '%d anni fa';
$lang['months'] = '%d mesi fa';
diff --git a/inc/lang/ja/index.txt b/inc/lang/ja/index.txt
index b5fbac97d..b0447899d 100644
--- a/inc/lang/ja/index.txt
+++ b/inc/lang/ja/index.txt
@@ -1,4 +1,4 @@
-====== 索引 ======
+====== サイトマップ ======
[[doku>namespaces|名前空間]] に基づく、全ての文書の索引です。
diff --git a/inc/lang/ja/lang.php b/inc/lang/ja/lang.php
index 1eeb6bb73..057fa5a54 100644
--- a/inc/lang/ja/lang.php
+++ b/inc/lang/ja/lang.php
@@ -7,6 +7,7 @@
* @author Ikuo Obataya <i.obataya@gmail.com>
* @author Daniel Dupriest <kououken@gmail.com>
* @author Kazutaka Miyasaka <kazmiya@gmail.com>
+ * @author Taisuke Shimamoto <dentostar@gmail.com>
*/
$lang['encoding'] = 'utf-8';
$lang['direction'] = 'ltr';
@@ -29,7 +30,7 @@ $lang['btn_revs'] = '以前のリビジョン';
$lang['btn_recent'] = '最近の変更';
$lang['btn_upload'] = 'アップロード';
$lang['btn_cancel'] = 'キャンセル';
-$lang['btn_index'] = '索引';
+$lang['btn_index'] = 'サイトマップ';
$lang['btn_secedit'] = '編集';
$lang['btn_login'] = 'ログイン';
$lang['btn_logout'] = 'ログアウト';
@@ -42,12 +43,14 @@ $lang['btn_backtomedia'] = 'メディアファイル選択に戻る';
$lang['btn_subscribe'] = '変更履歴配信の登録';
$lang['btn_profile'] = 'ユーザー情報の更新';
$lang['btn_reset'] = 'リセット';
-$lang['btn_resendpwd'] = 'パスワード再発行';
+$lang['btn_resendpwd'] = '新しいパスワードをセット';
$lang['btn_draft'] = 'ドラフトを編集';
$lang['btn_recover'] = 'ドラフトを復元';
$lang['btn_draftdel'] = 'ドラフトを削除';
$lang['btn_revert'] = '元に戻す';
$lang['btn_register'] = 'ユーザー登録';
+$lang['btn_apply'] = '適用';
+$lang['btn_media'] = 'メディアマネージャー';
$lang['loggedinas'] = 'ようこそ';
$lang['user'] = 'ユーザー名';
$lang['pass'] = 'パスワード';
@@ -77,7 +80,7 @@ $lang['profnoempty'] = 'ユーザー名とメールアドレスを入
$lang['profchanged'] = 'ユーザー情報は更新されました。';
$lang['pwdforget'] = 'パスワードをお忘れですか?パスワード再発行';
$lang['resendna'] = 'パスワードの再発行は出来ません。';
-$lang['resendpwd'] = '新しいパスワードを送信します:';
+$lang['resendpwd'] = '新しいパスワードをセット';
$lang['resendpwdmissing'] = '全ての項目を入力して下さい。';
$lang['resendpwdnouser'] = '入力されたユーザーが見つかりませんでした。';
$lang['resendpwdbadauth'] = '申し訳ありません。この確認コードは有効ではありません。メール内に記載されたリンクを確認してください。';
@@ -92,7 +95,7 @@ $lang['txt_filename'] = '名前を変更してアップロード(オ
$lang['txt_overwrt'] = '既存のファイルを上書き';
$lang['lockedby'] = 'この文書は次のユーザによってロックされています';
$lang['lockexpire'] = 'ロック期限:';
-$lang['js']['willexpire'] = '編集中の文書はロック期限を過ぎようとしています。このままロックする場合は、一度文書の確認を行って期限をリセットしてください。';
+$lang['js']['willexpire'] = '編集中の文書はロック期限を過ぎようとしています。このままロックする場合は、一度文書の確認を行って期限をリセットしてください。';
$lang['js']['notsavedyet'] = '変更は保存されません。このまま処理を続けてよろしいですか?';
$lang['js']['searchmedia'] = 'ファイル検索';
$lang['js']['keepopen'] = '選択中はウィンドウを閉じない';
@@ -123,9 +126,20 @@ $lang['js']['nosmblinks'] = 'ウィンドウズの共有フォルダへリ
$lang['js']['linkwiz'] = 'リンクウィザード';
$lang['js']['linkto'] = 'リンク先:';
$lang['js']['del_confirm'] = '選択した項目を本当に削除しますか?';
+$lang['js']['restore_confirm'] = '本当にこのバージョンを復元しますか?';
+$lang['js']['media_diff'] = '差分の表示方法:';
+$lang['js']['media_diff_both'] = '並べて表示';
+$lang['js']['media_diff_opacity'] = '重ねて透過表示';
+$lang['js']['media_diff_portions'] = '重ねて切替表示';
+$lang['js']['media_select'] = 'ファイルを選択...';
+$lang['js']['media_upload_btn'] = 'アップロード';
+$lang['js']['media_done_btn'] = '完了';
+$lang['js']['media_drop'] = 'ここにファイルをドロップするとアップロードします';
+$lang['js']['media_cancel'] = '削除';
+$lang['js']['media_overwrt'] = '既存のファイルを上書きする';
$lang['rssfailed'] = 'RSSの取得に失敗しました:';
$lang['nothingfound'] = '該当文書はありませんでした。';
-$lang['mediaselect'] = 'メディアファイルを選択';
+$lang['mediaselect'] = 'メディアファイル';
$lang['fileupload'] = 'メディアファイルをアップロード';
$lang['uploadsucc'] = 'アップロード完了';
$lang['uploadfail'] = 'アップロードに失敗しました。権限がありません。';
@@ -172,11 +186,20 @@ $lang['external_edit'] = '外部編集';
$lang['summary'] = '編集の概要';
$lang['noflash'] = 'この内容を表示するためには <a href="http://www.adobe.com/products/flashplayer/">Adobe Flash Plugin</a> が必要です。';
$lang['download'] = 'この部分をダウンロード';
+$lang['tools'] = 'ツール';
+$lang['user_tools'] = 'ユーザ用ツール';
+$lang['site_tools'] = 'サイト用ツール';
+$lang['page_tools'] = 'ページ用ツール';
+$lang['skip_to_content'] = '内容へ移動';
$lang['mail_newpage'] = '文書の追加:';
$lang['mail_changed'] = '文書の変更:';
$lang['mail_subscribe_list'] = '名前空間内でページが変更:';
$lang['mail_new_user'] = '新規ユーザー:';
$lang['mail_upload'] = 'ファイルのアップロード:';
+$lang['changes_type'] = '表示する変更のタイプ:';
+$lang['pages_changes'] = 'ページの変更';
+$lang['media_changes'] = 'メディアファイルの変更';
+$lang['both_changes'] = 'ページとメディアファイルの変更';
$lang['qb_bold'] = '太字';
$lang['qb_italic'] = '斜体';
$lang['qb_underl'] = '下線';
@@ -217,6 +240,9 @@ $lang['img_copyr'] = '著作権';
$lang['img_format'] = 'フォーマット';
$lang['img_camera'] = '使用カメラ';
$lang['img_keywords'] = 'キーワード';
+$lang['img_width'] = '幅';
+$lang['img_height'] = '高さ';
+$lang['img_manager'] = 'メディアマネージャーで閲覧';
$lang['subscr_subscribe_success'] = '%sが%sの購読リストに登録されました。';
$lang['subscr_subscribe_error'] = '%sを%sの購読リストへの追加に失敗しました。';
$lang['subscr_subscribe_noaddress'] = 'あなたのログインに対応するアドレスがないため、購読リストへ追加することができません。';
@@ -259,21 +285,6 @@ $lang['i_pol1'] = 'パブリック Wiki(閲覧は全ての人
$lang['i_pol2'] = 'クローズド Wiki (登録ユーザーにのみ使用を許可)';
$lang['i_retry'] = '再試行';
$lang['i_license'] = 'あなたが作成したコンテンツが属するライセンスを選択してください:';
-$lang['mu_intro'] = '複数のファイルを一度にアップロードできます。ブラウズボタンをクリックしてファイルを追加してください。追加したら、アップロードボタンをクリックしてください。';
-$lang['mu_gridname'] = 'ファイル名';
-$lang['mu_gridsize'] = 'サイズ';
-$lang['mu_gridstat'] = 'ステータス';
-$lang['mu_namespace'] = '名前空間';
-$lang['mu_browse'] = 'ブラウズ';
-$lang['mu_toobig'] = '大きすぎます';
-$lang['mu_ready'] = 'アップロードできます';
-$lang['mu_done'] = '完了';
-$lang['mu_fail'] = '失敗';
-$lang['mu_authfail'] = 'セッション期限切れ';
-$lang['mu_progress'] = '@PCT@% アップロード完了';
-$lang['mu_filetypes'] = '使用できるファイル形式';
-$lang['mu_info'] = 'ファイルアップロード完了';
-$lang['mu_lasterr'] = '直近のエラー:';
$lang['recent_global'] = '現在、<b>%s</b> 名前空間内の変更点を閲覧中です。<a href="%s">Wiki全体の最近の変更点を確認する</a>ことも可能です。';
$lang['years'] = '%d年前';
$lang['months'] = '%dカ月前';
@@ -283,3 +294,27 @@ $lang['hours'] = '%d時間前';
$lang['minutes'] = '%d分前';
$lang['seconds'] = '%d秒前';
$lang['wordblock'] = 'スパムと認識されるテキストが含まれているため、変更は保存されませんでした。';
+$lang['media_uploadtab'] = 'アップロード';
+$lang['media_searchtab'] = '検索';
+$lang['media_file'] = 'ファイル';
+$lang['media_viewtab'] = '詳細';
+$lang['media_edittab'] = '編集';
+$lang['media_historytab'] = '履歴';
+$lang['media_list_thumbs'] = 'サムネイル';
+$lang['media_list_rows'] = '行';
+$lang['media_sort_name'] = '名前';
+$lang['media_sort_date'] = '日付';
+$lang['media_namespaces'] = '名前空間を選択';
+$lang['media_files'] = '%s 内のファイル';
+$lang['media_upload'] = '%s にアップロード';
+$lang['media_search'] = '%s 内で検索';
+$lang['media_view'] = '%s';
+$lang['media_viewold'] = '%s at %s';
+$lang['media_edit'] = '%s を編集';
+$lang['media_history'] = '%s の履歴';
+$lang['media_meta_edited'] = 'メタデータが編集されました';
+$lang['media_perm_read'] = 'ファイルを閲覧する権限がありません。';
+$lang['media_perm_upload'] = 'ファイルをアップロードする権限がありません。';
+$lang['media_update'] = '新しいバージョンをアップロード';
+$lang['media_restore'] = 'このバージョンを復元';
+$lang['plugin_install_err'] = 'プラグインが正しくインストールされませんでした。プラグインのディレクトリ名を \'%s\' から \'%s\' に変更してください。';
diff --git a/inc/lang/ja/resetpwd.txt b/inc/lang/ja/resetpwd.txt
new file mode 100644
index 000000000..a414af991
--- /dev/null
+++ b/inc/lang/ja/resetpwd.txt
@@ -0,0 +1,3 @@
+====== 新しいパスワードをセット ======
+
+このWikiでの、あなたのアカウント用の新しいパスワードを入力して下さい \ No newline at end of file
diff --git a/inc/lang/kk/lang.php b/inc/lang/kk/lang.php
index f9ea0bced..3ff5ae455 100644
--- a/inc/lang/kk/lang.php
+++ b/inc/lang/kk/lang.php
@@ -38,7 +38,6 @@ $lang['btn_backtomedia'] = 'Медиафайлды таңдауға қай
$lang['btn_subscribe'] = 'Жазылуларды басқару';
$lang['btn_profile'] = 'Профильді жаңарту';
$lang['btn_reset'] = 'Түсіру';
-$lang['btn_resendpwd'] = 'Жаңа құпиясөзді жіберу';
$lang['btn_draft'] = 'Шимайды өңдеу';
$lang['btn_recover'] = 'Шимайды қайтару';
$lang['btn_draftdel'] = 'Шимайды өшіру';
@@ -73,7 +72,6 @@ $lang['profnoempty'] = 'Бос есім не email рұқсат еті
$lang['profchanged'] = 'Пайдаланушы профилі сәтті жаңартылған.';
$lang['pwdforget'] = 'Құпиясөзіңізді ұмыттыңызба? Жаңадан біреуін алыңыз';
$lang['resendna'] = 'Бұл wiki құпиясөзді қайта жіберуді қолдамайды.';
-$lang['resendpwd'] = 'Келесіге жаңа құпиясөзді жіберу ';
$lang['resendpwdmissing'] = 'Кешіріңіз, барлық тармақтары толтыруыңыз керек.';
$lang['resendpwdnouser'] = 'Кешіріңіз, бұл пайдаланушыны дерекқорымызда тапқан жоқпыз.';
$lang['resendpwdbadauth'] = 'Кешіріңіз, бұл түпнұсқалық коды бұрыс. Толық растау сілтемені пайдалануыңызды тексеріңіз.';
@@ -82,7 +80,7 @@ $lang['resendpwdsuccess'] = 'Сіздің жаңа құпиясөзіңіз
$lang['license'] = 'Басқаша көрсетілген болмаса, бұл wiki-дің мазмұны келесі лицензия бойынша беріледі:';
$lang['licenseok'] = 'Ескерту: бұл бетті өңдеуіңізбен мазмұныңыз келесі лицензия бойынша беруге келесесіз:';
$lang['searchmedia'] = 'Іздеу файлдың атауы:';
-$lang['searchmedia_in'] = '%-мен іздеу:';
+$lang['searchmedia_in'] = '%s-мен іздеу:';
$lang['txt_upload'] = 'Еңгізетін файлды таңдау';
$lang['txt_filename'] = 'Келесідей еңгізу (қалауынша)';
$lang['txt_overwrt'] = 'Бар файлды қайта жазу';
diff --git a/inc/lang/km/lang.php b/inc/lang/km/lang.php
index 68587e90f..6a5fa223f 100644
--- a/inc/lang/km/lang.php
+++ b/inc/lang/km/lang.php
@@ -39,7 +39,6 @@ $lang['btn_subscribe'] = 'ដាក់ដំណឹងផ្លស់ប្ត
$lang['btn_unsubscribe'] = 'ដកដំណឹងផ្លស់ប្តូរ';
$lang['btn_profile'] = 'កែប្រវត្តិរូប';
$lang['btn_reset'] = 'កមណត់ឡើងរិញ';
-$lang['btn_resendpwd'] = 'ផ្ញើពាក្សសម្ងាត់';
$lang['btn_draft'] = 'កែគំរោង';
$lang['btn_recover'] = 'ស្រោះគំរោងឡើង';
$lang['btn_draftdel'] = 'លុបគំរោង';
@@ -76,7 +75,6 @@ $lang['profchanged'] = 'ប្រវត្តិរូបអ្នកប្រ
$lang['pwdforget'] = 'ភ្លិចពាក្សសម្ងាត់ យកមួយទាត។';
$lang['resendna'] = 'វីគីនេះមិនឧបរំផ្ញើពាក្សសម្ងាតម្ដងទៀតទេ។';
-$lang['resendpwd'] = 'ផ្ញើពាក្សសម្ងាតឲ្យ';
$lang['resendpwdmissing'] = 'សុំអាទោស​ អ្នកត្រវបំពេញវាល។';
$lang['resendpwdnouser'] = 'សុំអាទោស​ យាងរកអ្នកប្រើមិនឃើងទេ។';
$lang['resendpwdbadauth'] = 'សុំអាទោស​ រហស្សលេខអនុញ្ញាតពំអាចប្រើបានទេ។ ខ្សែបន្ត';
diff --git a/inc/lang/ko/lang.php b/inc/lang/ko/lang.php
index 91825c797..84fdb3c48 100644
--- a/inc/lang/ko/lang.php
+++ b/inc/lang/ko/lang.php
@@ -8,6 +8,7 @@
* @author dongnak@gmail.com
* @author Song Younghwan <purluno@gmail.com>
* @author Seung-Chul Yoo <dryoo@live.com>
+ * @author erial2@gmail.com
*/
$lang['encoding'] = 'utf-8';
$lang['direction'] = 'ltr';
@@ -43,13 +44,15 @@ $lang['btn_backtomedia'] = '미디어 파일 선택으로 돌아가기';
$lang['btn_subscribe'] = '구독 신청';
$lang['btn_profile'] = '개인정보 변경';
$lang['btn_reset'] = '초기화';
-$lang['btn_resendpwd'] = '새 패스워드 보내기';
+$lang['btn_resendpwd'] = '새 암호 설정';
$lang['btn_draft'] = '문서초안 편집';
$lang['btn_recover'] = '문서초안 복구';
$lang['btn_draftdel'] = '문서초안 삭제';
$lang['btn_revert'] = '복원';
$lang['btn_register'] = '등록';
-$lang['loggedinas'] = '다음 사용자로 로그인';
+$lang['btn_apply'] = '적용';
+$lang['btn_media'] = '미디어 관리';
+$lang['loggedinas'] = '다른 사용자로 로그인';
$lang['user'] = '사용자';
$lang['pass'] = '패스워드';
$lang['newpass'] = '새로운 패스워드';
@@ -78,7 +81,7 @@ $lang['profnoempty'] = '이름이나 이메일 주소가 비었습니
$lang['profchanged'] = '개인정보 변경이 성공했습니다.';
$lang['pwdforget'] = '패스워드를 잊어버린 경우 새로 발급받을 수 있습니다.';
$lang['resendna'] = '이 위키는 패스워드 재발급을 지원하지 않습니다.';
-$lang['resendpwd'] = '새로운 패스워드를 보냅니다.';
+$lang['resendpwd'] = '새 암호 다음으로 전송 : ';
$lang['resendpwdmissing'] = '새로운 패스워드를 입력해야햡니다.';
$lang['resendpwdnouser'] = '등록된 사용자가 아닙니다. 다시 확인 바랍니다.';
$lang['resendpwdbadauth'] = '인증 코드가 틀립니다. 잘못된 링크인지 확인 바랍니다.';
@@ -93,7 +96,7 @@ $lang['txt_filename'] = '업로드 파일 이름을 입력합니다.(
$lang['txt_overwrt'] = '새로운 파일로 이전 파일을 교체합니다.';
$lang['lockedby'] = '현재 잠금 사용자';
$lang['lockexpire'] = '잠금 해제 시간';
-$lang['js']['willexpire'] = '잠시 후 편집 잠금이 해제됩니다.\n편집 충돌을 피하려면 미리보기를 눌러 잠금 시간을 다시 설정하기 바랍니다.';
+$lang['js']['willexpire'] = '잠시 후 편집 잠금이 해제됩니다.\n편집 충돌을 피하려면 미리보기를 눌러 잠금 시간을 다시 설정하기 바랍니다.';
$lang['js']['notsavedyet'] = '저장하지 않은 변경은 지워집니다.
계속하시겠습니까?';
$lang['js']['searchmedia'] = '파일 찾기';
@@ -125,6 +128,17 @@ $lang['js']['nosmblinks'] = '윈도우 공유 파일과의 연결은 MS 인
$lang['js']['linkwiz'] = '링크 마법사';
$lang['js']['linkto'] = '다음으로 연결:';
$lang['js']['del_confirm'] = '정말로 선택된 항목(들)을 삭제하시겠습니까?';
+$lang['js']['restore_confirm'] = '정말 이 버전으로 되돌리시겠습니까?';
+$lang['js']['media_diff'] = '차이점 보기 :';
+$lang['js']['media_diff_both'] = '나란히 보기';
+$lang['js']['media_diff_opacity'] = '겹쳐 보기';
+$lang['js']['media_diff_portions'] = '쪼개 보기';
+$lang['js']['media_select'] = '파일 선택';
+$lang['js']['media_upload_btn'] = '업로드';
+$lang['js']['media_done_btn'] = '완료';
+$lang['js']['media_drop'] = '업로드할 파일을 끌어넣으세요';
+$lang['js']['media_cancel'] = '삭제';
+$lang['js']['media_overwrt'] = '이미있는 파일 덮어쓰기';
$lang['rssfailed'] = 'feed 가져오기 실패: ';
$lang['nothingfound'] = '아무 것도 없습니다.';
$lang['mediaselect'] = '미디어 파일 선택';
@@ -174,11 +188,20 @@ $lang['external_edit'] = '외부 편집기';
$lang['summary'] = '편집 요약';
$lang['noflash'] = '이 컨텐츠를 표시하기 위해서 <a href="http://www.adobe.com/products/flashplayer/">Adobe Flash Plugin</a>이 필요합니다.';
$lang['download'] = '조각 다운로드';
+$lang['tools'] = '도구';
+$lang['user_tools'] = '사용자 도구';
+$lang['site_tools'] = '사이트 도구';
+$lang['page_tools'] = '페이지 도구';
+$lang['skip_to_content'] = '컨텐츠 넘기기';
$lang['mail_newpage'] = '페이지 추가:';
$lang['mail_changed'] = '페이지 변경:';
$lang['mail_subscribe_list'] = '네임스페이스에서 변경된 페이지:';
$lang['mail_new_user'] = '새로운 사용자:';
$lang['mail_upload'] = '파일 첨부:';
+$lang['changes_type'] = '차이점 보기';
+$lang['pages_changes'] = '페이지';
+$lang['media_changes'] = '미디어 파일';
+$lang['both_changes'] = '미디어 파일과 페이지 양쪽';
$lang['qb_bold'] = '굵은 글';
$lang['qb_italic'] = '이탤릭체 글';
$lang['qb_underl'] = '밑줄 그어진 글';
@@ -219,6 +242,9 @@ $lang['img_copyr'] = '저작권';
$lang['img_format'] = '포맷';
$lang['img_camera'] = '카메라';
$lang['img_keywords'] = '키워드';
+$lang['img_width'] = '너비';
+$lang['img_height'] = '높이';
+$lang['img_manager'] = '미디어 관리자에서 보기';
$lang['subscr_subscribe_success'] = '%s을(를) 구독목록 %s에 추가하였습니다';
$lang['subscr_subscribe_error'] = '%s을(를) 구독목록 %s에 추가하는데 실패했습니다';
$lang['subscr_subscribe_noaddress'] = '등록된 주소가 없기 때문에 구독목록에 등록되지 않았습니다';
@@ -237,6 +263,7 @@ $lang['subscr_style_digest'] = '각 페이지의 변화를 요약 (매 %.2f
$lang['subscr_style_list'] = '마지막 이메일 이후 변화된 페이지의 목록 (매 %.2f 일 마다)';
$lang['authmodfailed'] = '잘못된 사용자 인증 설정입니다. 관리자에게 문의하기 바랍니다.';
$lang['authtempfail'] = '사용자 인증이 일시적으로 불가능합니다. 만일 계속해서 문제가 발생하면 관리자에게 문의하기 바랍니다.';
+$lang['authpwdexpire'] = '현재 암호를 설정하신지 %d 일이 지났습니다. 새로 설정해주시기 바랍니다.';
$lang['i_chooselang'] = '사용하는 언어를 선택합니다.';
$lang['i_installer'] = 'DokuWiki 설치';
$lang['i_wikiname'] = '위키 이름';
@@ -262,21 +289,6 @@ $lang['i_pol1'] = '공개형 위키 (누구나 읽을 수 있지
$lang['i_pol2'] = '폐쇄형 위키 (등록된 사용자만 읽기/쓰기/업로드가 가능합니다.)';
$lang['i_retry'] = '다시 시도';
$lang['i_license'] = '내용의 배포를 위한 라이센스를 선택하세요.';
-$lang['mu_intro'] = '여러 파일을 한번에 업로드할 수 있습니다. 파일 목록에 추가하려면 "찾기" 버튼을 클릭합니다. 파일 목록 추가 작업이 끝나면 "업로드" 버튼을 클릭하기 바랍니다. ';
-$lang['mu_gridname'] = '파일명';
-$lang['mu_gridsize'] = '크기';
-$lang['mu_gridstat'] = '상태';
-$lang['mu_namespace'] = '네임스페이스';
-$lang['mu_browse'] = '찾기';
-$lang['mu_toobig'] = '업로드 가능 크기를 초과했습니다.';
-$lang['mu_ready'] = '업로드가 가능합니다.';
-$lang['mu_done'] = '업로드가 완료되었습니다.';
-$lang['mu_fail'] = '업로드가 실패했습니다.';
-$lang['mu_authfail'] = '세션 기간이 종료되었습니다.';
-$lang['mu_progress'] = '@PCT@% 업로드되었습니다.';
-$lang['mu_filetypes'] = '허용된 파일타입';
-$lang['mu_info'] = '업로드 되었습니다.';
-$lang['mu_lasterr'] = '마지막 에러:';
$lang['recent_global'] = '<b>%s</b> 네임스페이스를 구독중입니다. <a href="%s">전체위키 변경사항 </a>도 보실수 있습니다.';
$lang['years'] = '%d 년 전';
$lang['months'] = '%d 개월 전';
@@ -286,3 +298,27 @@ $lang['hours'] = '%d 시간 전';
$lang['minutes'] = '%d 분 전';
$lang['seconds'] = '%d 초 전';
$lang['wordblock'] = '스팸 문구를 포함하고 있어서 저장되지 않았습니다.';
+$lang['media_uploadtab'] = '업로드';
+$lang['media_searchtab'] = '검색';
+$lang['media_file'] = '파일';
+$lang['media_viewtab'] = '보기';
+$lang['media_edittab'] = '수정';
+$lang['media_historytab'] = '변경사항';
+$lang['media_list_thumbs'] = '썸네일';
+$lang['media_list_rows'] = '목록';
+$lang['media_sort_name'] = '이름';
+$lang['media_sort_date'] = '날짜';
+$lang['media_namespaces'] = '네임스페이스 선택';
+$lang['media_files'] = '%s 의 파일';
+$lang['media_upload'] = '%s 에 업로드';
+$lang['media_search'] = '%s 를 검색';
+$lang['media_view'] = '%s';
+$lang['media_viewold'] = '%s 의 %s';
+$lang['media_edit'] = '%s 수정';
+$lang['media_history'] = '%s 변경사항';
+$lang['media_meta_edited'] = '메타데이터 수정됨';
+$lang['media_perm_read'] = '죄송합니다, 이 파일을 읽을 권한이 없습니다.';
+$lang['media_perm_upload'] = '죄송합니다. 파일을 업로드할 권한이 없습니다.';
+$lang['media_update'] = '새 버전 올리기';
+$lang['media_restore'] = '이 버전으로 되돌리기';
+$lang['plugin_install_err'] = '플러그인 설치가 비정상적으로 이뤄졌습니다. 플러그인 디렉토리 \'%s\'를 \'%s\'로 변경하십시오.';
diff --git a/inc/lang/ko/resetpwd.txt b/inc/lang/ko/resetpwd.txt
new file mode 100644
index 000000000..b84674b82
--- /dev/null
+++ b/inc/lang/ko/resetpwd.txt
@@ -0,0 +1,3 @@
+====== 새 암호 설정 ======
+
+이 위키의 계정의 새 암호를 입력해주세요. \ No newline at end of file
diff --git a/inc/lang/la/lang.php b/inc/lang/la/lang.php
index fd34a4ef8..3970f453a 100644
--- a/inc/lang/la/lang.php
+++ b/inc/lang/la/lang.php
@@ -44,7 +44,6 @@ $lang['btn_backtomedia'] = 'Ad media redire';
$lang['btn_subscribe'] = 'Custodire';
$lang['btn_profile'] = 'Tabellam nouare';
$lang['btn_reset'] = 'Abrogare';
-$lang['btn_resendpwd'] = 'Tesseram nouam cursu interretiali petere';
$lang['btn_draft'] = 'Propositum recensere';
$lang['btn_recover'] = 'Propositum reficere';
$lang['btn_draftdel'] = 'Propositum delere';
@@ -79,7 +78,6 @@ $lang['profnoempty'] = 'Omnes campi complendi sunt.';
$lang['profchanged'] = 'Tabella Sodalis feliciter nouatur';
$lang['pwdforget'] = 'Tesseram amisistine? Nouam petere';
$lang['resendna'] = 'Tesseram non mutare potest.';
-$lang['resendpwd'] = 'Tesseram mitte';
$lang['resendpwdmissing'] = 'Omnes campi complendi sunt.';
$lang['resendpwdnouser'] = 'In tabellis Sodalium nomen non inuentum est.';
$lang['resendpwdbadauth'] = 'Tesseram non legitima est.';
@@ -222,7 +220,7 @@ $lang['subscr_subscribe_noaddress'] = 'Cursus interretialis tuus deest, sic in i
$lang['subscr_unsubscribe_success'] = 'A subscriptione %s deletur quod %s';
$lang['subscr_unsubscribe_error'] = 'Error delendi %s a subscriptione quod %s';
$lang['subscr_already_subscribed'] = '%s iam subscriptus\a est in %s';
-$lang['subscr_not_subscribed'] = '%s non subscriptus\a est in %n';
+$lang['subscr_not_subscribed'] = '%s non subscriptus\a est in %s';
$lang['subscr_m_not_subscribed'] = 'Non hanc paginam uel genus subscribere potes.';
$lang['subscr_m_new_header'] = 'Subscriptionem addere';
$lang['subscr_m_current_header'] = 'haec subscriptio:';
@@ -256,21 +254,6 @@ $lang['i_pol1'] = 'Publicus uicis (omnes legere, Sodales scribere
$lang['i_pol2'] = 'Clausus uicis (Soli Sodales legere scribere et onerare poccunt)';
$lang['i_retry'] = 'Rursum temptas';
$lang['i_license'] = 'Elige facultatem sub qua tuus uicis est:';
-$lang['mu_intro'] = 'Plura documenta uno tempore onerare potes.';
-$lang['mu_gridname'] = 'Documenti nomen';
-$lang['mu_gridsize'] = 'Pondus';
-$lang['mu_gridstat'] = 'Status';
-$lang['mu_namespace'] = 'Genus';
-$lang['mu_browse'] = 'Euoluere';
-$lang['mu_toobig'] = 'Ponderosius';
-$lang['mu_ready'] = 'Aptus ad onerandum';
-$lang['mu_done'] = 'Perfectum';
-$lang['mu_fail'] = 'Error';
-$lang['mu_authfail'] = 'Sessio exit';
-$lang['mu_progress'] = '@PCT@% oneratum';
-$lang['mu_filetypes'] = 'Genera documenti apta facere';
-$lang['mu_info'] = 'Documenta onerare';
-$lang['mu_lasterr'] = 'Extremus error:';
$lang['recent_global'] = 'Mutatione in hoc genere uides. Recentiores mutationes quoque uidere <a href="%s">potes</a>';
$lang['years'] = 'ab annis %d';
$lang['months'] = 'a mensibus %d';
diff --git a/inc/lang/lb/lang.php b/inc/lang/lb/lang.php
index 191a9bab5..e6409b7ff 100644
--- a/inc/lang/lb/lang.php
+++ b/inc/lang/lb/lang.php
@@ -37,7 +37,6 @@ $lang['btn_backlink'] = 'Linker zeréck';
$lang['btn_backtomedia'] = 'Zeréck bei d\'Auswiel vun de Mediadateien';
$lang['btn_profile'] = 'Profil aktualiséieren';
$lang['btn_reset'] = 'Zerécksetzen';
-$lang['btn_resendpwd'] = 'Nei Passwuert schécken';
$lang['btn_draft'] = 'Entworf änneren';
$lang['btn_recover'] = 'Entworf zeréckhuelen';
$lang['btn_draftdel'] = 'Entworf läschen';
@@ -71,7 +70,6 @@ $lang['profnoempty'] = 'En eidele Numm oder Emailadress ass net erlaab
$lang['profchanged'] = 'Benotzerprofil erfollegräicht aktualiséiert.';
$lang['pwdforget'] = 'Passwuert vergiess? Fro der e Neit';
$lang['resendna'] = 'Dëse Wiki ënnerstëtzt net d\'Neiverschécke vu Passwieder.';
-$lang['resendpwd'] = 'Nei Passwuert schécke fir';
$lang['resendpwdmissing'] = 'Du muss all Felder ausfëllen.';
$lang['resendpwdnouser'] = 'Kann dëse Benotzer net an der Datebank fannen.';
$lang['resendpwdbadauth'] = 'Den "Auth"-Code ass ongëlteg. Kuck no obs de dee ganze Konfirmationslink benotzt hues.';
@@ -189,24 +187,9 @@ $lang['i_pol0'] = 'Oppene Wiki (liese, schreiwen an eroplueden fi
$lang['i_pol1'] = 'Ëffentleche Wiki (liesen fir jidfereen, schreiwen an eroplueden fir registréiert Benotzer)';
$lang['i_pol2'] = 'Zouene Wiki (liesen, schreiwen, eroplueden nëmme fir registréiert Benotzer)';
$lang['i_retry'] = 'Nach eng Kéier probéieren';
-$lang['mu_intro'] = 'Hei kanns de méi Dateie mateneen eroplueden. Klick op den Duerchsiche-Knäppchen fir se an d\'Schlaang ze setzen. Dréck op Eroplueden wanns de fäerdeg bass.';
-$lang['mu_gridname'] = 'Dateinumm';
-$lang['mu_gridsize'] = 'Gréisst';
-$lang['mu_gridstat'] = 'Status';
-$lang['mu_namespace'] = 'Namespace';
-$lang['mu_browse'] = 'Duerchsichen';
-$lang['mu_toobig'] = 'ze grouss';
-$lang['mu_ready'] = 'prett fir eropzelueden';
-$lang['mu_done'] = 'fäerdeg';
-$lang['mu_fail'] = 'feelgeschloen';
-$lang['mu_authfail'] = 'Sessioun ofgelaf';
-$lang['mu_progress'] = '@PCT@% eropgelueden';
-$lang['mu_filetypes'] = 'Erlaabten Dateitypen';
-$lang['mu_info'] = 'Dateien eropgelueden.';
-$lang['mu_lasterr'] = 'Leschte Feeler:';
$lang['recent_global'] = 'Du kucks am Moment d\'Ännerungen innerhalb vum <b>%s</b> Namespace. Du kanns och <a href="%s">d\'Kierzilech Ännerungen vum ganze Wiki kucken</a>.';
$lang['years'] = 'virun %d Joer';
-$lang['months'] = 'virun % Méint';
+$lang['months'] = 'virun %d Méint';
$lang['weeks'] = 'virun %d Wochen';
$lang['days'] = 'virun %d Deeg';
$lang['hours'] = 'virun %d Stonnen';
diff --git a/inc/lang/lt/lang.php b/inc/lang/lt/lang.php
index d14a0695a..13ff8c305 100644
--- a/inc/lang/lt/lang.php
+++ b/inc/lang/lt/lang.php
@@ -43,7 +43,6 @@ $lang['btn_subscribe'] = 'Užsisakyti keitimų prenumeratą';
$lang['btn_unsubscribe'] = 'Atsisakyti keitimų prenumeratos';
$lang['btn_profile'] = 'Atnaujinti profilį';
$lang['btn_reset'] = 'Atstata';
-$lang['btn_resendpwd'] = 'Išsiųsti naują slaptažodį';
$lang['btn_draft'] = 'Redaguoti juodraštį';
$lang['btn_recover'] = 'Atkurti juodraštį';
$lang['btn_draftdel'] = 'Šalinti juodraštį';
@@ -77,7 +76,6 @@ $lang['profnoempty'] = 'Tuščias vardo arba el. pašto adreso laukas
$lang['profchanged'] = 'Vartotojo profilis sėkmingai atnaujintas.';
$lang['pwdforget'] = 'Pamiršote slaptažodį? Gaukite naują';
$lang['resendna'] = 'Ši vikisvetainė neleidžia persiųsti slaptažodžių.';
-$lang['resendpwd'] = 'Atsiųsti naują slaptažodį';
$lang['resendpwdmissing'] = 'Jūs turite užpildyti visus laukus.';
$lang['resendpwdnouser'] = 'Tokio vartotojo nėra duomenų bazėje.';
$lang['resendpwdbadauth'] = 'Atsiprašome, bet šis tapatybės nustatymo kodas netinkamas. Įsitikinkite, kad panaudojote pilną patvirtinimo nuorodą.';
@@ -190,14 +188,3 @@ $lang['i_wikiname'] = 'Wiki vardas';
$lang['i_enableacl'] = 'Įjungti ACL (rekomenduojama)';
$lang['i_superuser'] = 'Supervartotojas';
$lang['i_problems'] = 'Instaliavimo metu buvo klaidų, kurios pateiktos žemiau. Tęsti negalima, kol nebus pašalintos priežastys.';
-$lang['mu_gridname'] = 'Failo vardas';
-$lang['mu_gridsize'] = 'Dydis';
-$lang['mu_gridstat'] = 'Statusas';
-$lang['mu_namespace'] = 'Vardų sritis';
-$lang['mu_browse'] = 'Browse';
-$lang['mu_toobig'] = 'perdidelis';
-$lang['mu_ready'] = 'paruošta įkrovimui';
-$lang['mu_done'] = 'užbaigta';
-$lang['mu_fail'] = 'nepavyko';
-$lang['mu_authfail'] = 'sesija nutraukta';
-$lang['mu_filetypes'] = 'Leidžiami failų tipai';
diff --git a/inc/lang/lv/lang.php b/inc/lang/lv/lang.php
index 205d2e56d..b02e7f471 100644
--- a/inc/lang/lv/lang.php
+++ b/inc/lang/lv/lang.php
@@ -39,7 +39,6 @@ $lang['btn_backtomedia'] = 'Atpakaļ uz mēdiju failu izvēli';
$lang['btn_subscribe'] = 'Abonēt izmaiņu paziņojumus';
$lang['btn_profile'] = 'Labot savu profilu';
$lang['btn_reset'] = 'Atsaukt izmaiņas';
-$lang['btn_resendpwd'] = 'Nosūtīt jaunu paroli';
$lang['btn_draft'] = 'Labot melnrakstu';
$lang['btn_recover'] = 'Atjaunot melnrakstu';
$lang['btn_draftdel'] = 'Dzēst melnrakstu';
@@ -76,7 +75,6 @@ $lang['profnoempty'] = 'Bez vārda vai e-pasta adreses nevar.';
$lang['profchanged'] = 'Profils veiksmīgi izlabots.';
$lang['pwdforget'] = 'Aizmirsi paroli? Saņem jaunu';
$lang['resendna'] = 'Paroļu izsūtīšanu nepiedāvāju.';
-$lang['resendpwd'] = 'Nosūtīt jaunu paroli lietotājam';
$lang['resendpwdmissing'] = 'Atvaino, jāizpilda visas ailes.';
$lang['resendpwdnouser'] = 'Atvaino, tāda lietotāja nav.';
$lang['resendpwdbadauth'] = 'Atvaino, šis autorizācijas kods nav derīgs. Pārliecinies, ka lietoji pilnu apstiprināšanas adresi.';
@@ -123,7 +121,6 @@ Protams, ka vari saiti kopēt un iespraust citā programmā.';
$lang['js']['linkwiz'] = 'Saišu vednis';
$lang['js']['linkto'] = 'Saite uz: ';
$lang['js']['del_confirm'] = 'Dzēst šo šķirkli?';
-$lang['js']['mu_btn'] = 'Augšuplādēt uzreiz vairākus failus.';
$lang['js']['restore_confirm'] = 'Tiešām atjaunot šo versiju';
$lang['js']['media_diff'] = 'Skatīt atšķirību';
$lang['js']['media_diff_both'] = 'Blakus';
@@ -248,9 +245,9 @@ $lang['subscr_m_unsubscribe'] = 'Atteikties no abonēšanas';
$lang['subscr_m_subscribe'] = 'Abonēt';
$lang['subscr_m_receive'] = 'Saņemt';
$lang['subscr_style_every'] = 'vēstuli par katru izmaiņu';
-$lang['subscr_style_digest'] = 'kopsavilkumu par katru lapu';
-$lang['subscr_style_list'] = 'kopš pēdējās vēstules notikušo labojumu sarakstu';
-$lang['authmodfailed'] = 'Aplami konfigurēta lietotāju autentifikācija. Lūdzo ziņo Wiki administratoram.';
+$lang['subscr_style_digest'] = 'kopsavilkumu par katru lapu (reizi %.2f dienās)';
+$lang['subscr_style_list'] = 'kopš pēdējās vēstules notikušo labojumu sarakstu (reizi %.2f dienās)';
+$lang['authmodfailed'] = 'Aplami konfigurēta lietotāju autentifikācija. Lūdzu ziņo Wiki administratoram.';
$lang['authtempfail'] = 'Lietotāju autentifikācija pašlaik nedarbojas. Ja tas turpinās ilgstoši, lūduz ziņo Wiki administratoram.';
$lang['i_chooselang'] = 'Izvēlies valodu';
$lang['i_installer'] = 'DokuWiki instalētājs';
@@ -275,25 +272,10 @@ $lang['i_pol1'] = 'Publisks Wiki (lasa ikviens, raksta un augšup
$lang['i_pol2'] = 'Slēgts Wiki (raksta, lasa un augšupielādē tikai reģistrēti lietotāji)';
$lang['i_retry'] = 'Atkārtot';
$lang['i_license'] = 'Ar kādu licenci saturs tiks publicēts:';
-$lang['mu_intro'] = 'Šeit var augšupielādēt uzreiz vairāku failus. Uzklikšķini Pārlūkot pogai, lai tos ieliktu rindā. Nospied Augšupielādēt, kad rinda sastādīta.';
-$lang['mu_gridname'] = 'Faila vārds';
-$lang['mu_gridsize'] = 'Izmērs';
-$lang['mu_gridstat'] = 'Statuss';
-$lang['mu_namespace'] = 'Nodaļa';
-$lang['mu_browse'] = 'Pārlūkot';
-$lang['mu_toobig'] = 'par lielu';
-$lang['mu_ready'] = 'gatavs augšupielādei';
-$lang['mu_done'] = 'pabeigts';
-$lang['mu_fail'] = 'neizdevās';
-$lang['mu_authfail'] = 'sesijas laiks iztecējis';
-$lang['mu_progress'] = '@PCT@% augšupielādēts';
-$lang['mu_filetypes'] = 'Atļautie failu tipi';
-$lang['mu_info'] = 'faili ir augšupielādēti.';
-$lang['mu_lasterr'] = 'Pēdējā ķļūda.';
$lang['recent_global'] = 'Tu skati izmaiņas nodaļā <b>%s</b>. Ir iespējams <a href="%s">skatīt jaunākos grozījums visā viki</a>. ';
$lang['years'] = 'pirms %d gadiem';
$lang['months'] = 'pirms %d mēnešiem';
-$lang['weeks'] = 'pirms % nedēļām';
+$lang['weeks'] = 'pirms %d nedēļām';
$lang['days'] = 'pirms %d dienām';
$lang['hours'] = 'pirms %d stundām';
$lang['minutes'] = 'pirms %d minūtēm';
@@ -310,16 +292,16 @@ $lang['media_list_rows'] = 'Rindas';
$lang['media_sort_name'] = 'Nosaukums';
$lang['media_sort_date'] = 'Datums';
$lang['media_namespaces'] = 'Norādīt nodaļu';
-$lang['media_files'] = 'Faili nodaļā s%';
-$lang['media_upload'] = 'Augšuplādēt nodaļā s%';
-$lang['media_search'] = 'Meklēt nodaļā s%';
-$lang['media_view'] = 's%';
-$lang['media_viewold'] = 's% nodaļā s%';
+$lang['media_files'] = 'Faili nodaļā %s';
+$lang['media_upload'] = 'Augšuplādēt nodaļā %s';
+$lang['media_search'] = 'Meklēt nodaļā %s';
+$lang['media_view'] = '%s';
+$lang['media_viewold'] = '%s nodaļā %s';
$lang['media_edit'] = 'Labot %s';
-$lang['media_history'] = 's% vēsture';
+$lang['media_history'] = '%s vēsture';
$lang['media_meta_edited'] = 'metadati laboti';
$lang['media_perm_read'] = 'Atvainojiet, jums nav tiesību skatīt failus. ';
$lang['media_perm_upload'] = 'Atvainojiet, jums nav tiesību augšupielādēt. ';
$lang['media_update'] = 'Augšupielādēt jaunu versiju';
$lang['media_restore'] = 'Atjaunot šo versiju';
-$lang['plugin_install_err'] = 'Modulis aplami instalēts. Pārdēvē moduļa direktoriju s% par s%.';
+$lang['plugin_install_err'] = 'Modulis aplami instalēts. Pārdēvē moduļa direktoriju %s par %s.';
diff --git a/inc/lang/mk/lang.php b/inc/lang/mk/lang.php
index ca4a746cd..62400063c 100644
--- a/inc/lang/mk/lang.php
+++ b/inc/lang/mk/lang.php
@@ -42,7 +42,6 @@ $lang['btn_backtomedia'] = 'Назад до изборот за медиа
$lang['btn_subscribe'] = 'Менаџирај претплати';
$lang['btn_profile'] = 'Ажурирај профил';
$lang['btn_reset'] = 'Ресет';
-$lang['btn_resendpwd'] = 'Испрати нов пасворд';
$lang['btn_draft'] = 'Уреди скица';
$lang['btn_recover'] = 'Поврати скица';
$lang['btn_draftdel'] = 'Избриши скица';
@@ -77,7 +76,6 @@ $lang['profnoempty'] = 'Празно име или адреса за
$lang['profchanged'] = 'Корисничкиот профил е успешно ажуриран.';
$lang['pwdforget'] = 'Ја заборавивте лозинката? Добијте нова';
$lang['resendna'] = 'Ова вики не поддржува повторно испраќање на лозинка.';
-$lang['resendpwd'] = 'Испрати нова лозинка за';
$lang['resendpwdmissing'] = 'Жалам, морате да ги пополните сите полиња.';
$lang['resendpwdnouser'] = 'Жалам, таков корисник не постои во нашата база со податоци.';
$lang['resendpwdbadauth'] = 'Жалам, овај код за валидација не е валиден. Проверете повторно дали ја искористивте целосната врска за потврда.';
@@ -223,20 +221,6 @@ $lang['i_pol0'] = 'Отвори вики (читај, запиш
$lang['i_pol1'] = 'Јавно вики (читај за сите, запиши и качи за регистрирани корисници)';
$lang['i_pol2'] = 'Затворено вики (читај, запиши, качи само за регистрирани корисници)';
$lang['i_retry'] = 'Пробај повторно';
-$lang['mu_intro'] = 'Овде можете да прикачите повеќе датотеки од еднаш. Кликнете на копчето за пребарување за да ги додадете во редица. Притиснете на качи кога е готово.';
-$lang['mu_gridname'] = 'Име на датотека';
-$lang['mu_gridsize'] = 'Големина';
-$lang['mu_gridstat'] = 'Состојба';
-$lang['mu_browse'] = 'Пребарај';
-$lang['mu_toobig'] = 'премногу голема';
-$lang['mu_ready'] = 'спремна за качување';
-$lang['mu_done'] = 'комплетно';
-$lang['mu_fail'] = 'неуспешно';
-$lang['mu_authfail'] = 'сесијата истече';
-$lang['mu_progress'] = '@PCT@% качено';
-$lang['mu_filetypes'] = 'Дозволено типови на датотеки';
-$lang['mu_info'] = 'качени датотеки.';
-$lang['mu_lasterr'] = 'Последна грешка: ';
$lang['years'] = 'пред %d години';
$lang['months'] = 'пред %d месеци';
$lang['weeks'] = 'пред %d недели';
diff --git a/inc/lang/mr/lang.php b/inc/lang/mr/lang.php
index 63fda3e5a..32781e6d4 100644
--- a/inc/lang/mr/lang.php
+++ b/inc/lang/mr/lang.php
@@ -44,14 +44,16 @@ $lang['btn_back'] = 'मागॆ';
$lang['btn_backlink'] = 'येथे काय जोडले आहे';
$lang['btn_backtomedia'] = 'परत माध्यम फाइल निवडीकड़े';
$lang['btn_subscribe'] = 'पृष्ठाच्या बदलांची पुरवणी (फीड) लावा ';
-$lang['btn_unsubscribe'] = 'पृष्ठाच्या बदलांची पुरवणी (फीड) बंद करा';
$lang['btn_profile'] = 'प्रोफाइल अद्ययावत करा';
$lang['btn_reset'] = 'रिसेट';
-$lang['btn_resendpwd'] = 'कृपया परवलीचा नवीन शब्द माझ्या इमेल पत्त्यावर पाठविणे.';
+$lang['btn_resendpwd'] = 'नवीन पासवर्ड';
$lang['btn_draft'] = 'प्रत संपादन';
$lang['btn_recover'] = 'प्रत परत मिळवा';
$lang['btn_draftdel'] = 'प्रत रद्द';
+$lang['btn_revert'] = 'पुनर्स्थापन';
$lang['btn_register'] = 'नोंदणी';
+$lang['btn_apply'] = 'लागू';
+$lang['btn_media'] = 'मिडिया व्यवस्थापक';
$lang['loggedinas'] = 'लॉगिन नाव';
$lang['user'] = 'वापरकर्ता';
$lang['pass'] = 'परवलीचा शब्द';
@@ -82,20 +84,58 @@ $lang['profchanged'] = 'सदस्याची प्रोफाइ
$lang['pwdforget'] = 'परवलीचा शब्द विसरला आहे का? नविन मागवा.';
$lang['resendna'] = 'ह्या विकी मधे परवलीचा शब्द परत पाथाव्न्याची सुविधा नाही.';
$lang['resendpwd'] = 'नविन परवली इच्छुक';
-$lang['resendpwdmissing'] = 'कृपया सर्व रकाने भरा.';
+$lang['resendpwdmissing'] = 'माफ करा, पण सर्व जागा भरल्या पाहिजेत.';
$lang['resendpwdnouser'] = 'माफ़ करा, हा सदस्य आमच्या माहितिसंग्रहात सापडला नाही.';
$lang['resendpwdbadauth'] = 'माफ़ करा, हा अधिकार कोड बरोबर नाही. कृपया आपण पूर्ण शिकामोर्तबाची लिंक वापरल्याची खात्री करा.';
$lang['resendpwdconfirm'] = 'शिक्कामोर्तबाची लिंक ईमेल द्वारा पाठवली आहे.';
$lang['resendpwdsuccess'] = 'शिक्कामोर्तबाची लिंक ईमेल द्वारा पाठवली आहे.';
$lang['license'] = 'विशिष्ठ नोंद केलि नसल्यास ह्या विकी वरील सर्व मजकूर खालील लायसन्स मधे मोडतो : ';
$lang['licenseok'] = 'नोंद : हे पृष्ठ संपादित केल्यास तुम्ही तुमचे योगदान खालील लायसन्स अंतर्गत येइल : ';
+$lang['searchmedia'] = 'फाईल शोधा:';
+$lang['searchmedia_in'] = '%s मधे शोधा';
$lang['txt_upload'] = 'अपलोड करण्याची फाइल निवडा';
$lang['txt_filename'] = 'अपलोड उर्फ़ ( वैकल्पिक )';
$lang['txt_overwrt'] = 'अस्तित्वात असलेल्या फाइलवरच सुरक्षित करा.';
$lang['lockedby'] = 'सध्या लॉक करणारा :';
$lang['lockexpire'] = 'सध्या लॉक करणारा :';
-$lang['js']['willexpire'] = 'हे पृष्ठ संपादित करण्यासाठी मिळालेले लॉक एखाद्या मिनिटात संपणार आहे.\n चुका होऊ नयेत म्हणुन कृपया प्रीव्यू बटन दाबुन लॉक ची वेळ पुन्हा चालू करा.';
-$lang['js']['notsavedyet'] = "सुरक्षित न केलेले बदल नष्ट होतील. नक्की करू का ?";
+$lang['js']['willexpire'] = 'हे पृष्ठ संपादित करण्यासाठी मिळालेले लॉक एखाद्या मिनिटात संपणार आहे.\n चुका होऊ नयेत म्हणुन कृपया प्रीव्यू बटन दाबुन लॉक ची वेळ पुन्हा चालू करा.';
+$lang['js']['notsavedyet'] = 'सुरक्षित न केलेले बदल नष्ट होतील. नक्की करू का ?';
+$lang['js']['searchmedia'] = 'फाईल्ससाठी शोधा';
+$lang['js']['keepopen'] = 'निवड केल्यावर विण्डो उघडी ठेवा';
+$lang['js']['hidedetails'] = 'सविस्तर मजकूर लपवा';
+$lang['js']['mediatitle'] = 'लिंक सेटिंग';
+$lang['js']['mediadisplay'] = 'लिंकचा प्रकार';
+$lang['js']['mediaalign'] = 'जुळवणी';
+$lang['js']['mediasize'] = 'प्रतिमेचा आकार';
+$lang['js']['mediatarget'] = 'लिंकचे लक्ष्य';
+$lang['js']['mediaclose'] = 'बंद';
+$lang['js']['mediadisplayimg'] = 'प्रतिमा दाखवा.';
+$lang['js']['mediadisplaylnk'] = 'फक्त लिंक दाखवा.';
+$lang['js']['mediasmall'] = 'लहान आवृत्ती';
+$lang['js']['mediamedium'] = 'माध्यम आवृत्ती';
+$lang['js']['medialarge'] = 'मोठी आवृत्ती';
+$lang['js']['mediaoriginal'] = 'मूळ आवृत्ती';
+$lang['js']['medialnk'] = 'सविस्तर माहितीकडेची लिंक';
+$lang['js']['mediadirect'] = 'मूळ मजकुराकडे थेट लिंक';
+$lang['js']['medianolnk'] = 'लिंक नको';
+$lang['js']['medianolink'] = 'प्रतिमा लिंक करू नका';
+$lang['js']['medialeft'] = 'प्रतिमा डाव्या बाजूला जुळवून घ्या.';
+$lang['js']['mediaright'] = 'प्रतिमा उजव्या बाजूला जुळवून घ्या.';
+$lang['js']['mediacenter'] = 'प्रतिमा मध्यभागी जुळवून घ्या.';
+$lang['js']['medianoalign'] = 'जुळवाजुळव वापरू नका.';
+$lang['js']['nosmblinks'] = 'विन्डोज़ शेअर ला लिंक केल्यास ते फक्त मायक्रोसॉफ़्ट इन्टरनेट एक्स्प्लोरर वरच चालते. तरी तुम्ही लिंक कॉपी करू शकता.';
+$lang['js']['linkwiz'] = 'लिंक जादूगार';
+$lang['js']['linkto'] = 'याला लिंक करा:';
+$lang['js']['del_confirm'] = 'निवडलेल्या गोष्टी नक्की नष्ट करू का ?';
+$lang['js']['restore_confirm'] = 'हि आवृत्ती खरोखर पुनर्स्थापित करू का?';
+$lang['js']['media_diff'] = 'फरक बघू:';
+$lang['js']['media_diff_both'] = 'बाजूबाजूला';
+$lang['js']['media_diff_portions'] = 'स्वाईप';
+$lang['js']['media_select'] = 'फाईल निवड...';
+$lang['js']['media_upload_btn'] = 'अपलोड';
+$lang['js']['media_done_btn'] = 'झालं';
+$lang['js']['media_drop'] = 'अपलोड करण्यासाठी इथे फाईल टाका';
+$lang['js']['media_cancel'] = 'काढा';
$lang['rssfailed'] = 'ही पुरवणी आणण्यात काही चूक झाली:';
$lang['nothingfound'] = 'काही सापडला नाही.';
$lang['mediaselect'] = 'दृकश्राव्य फाइल';
@@ -113,9 +153,7 @@ $lang['deletefail'] = '%s ही फाइल नष्ट करू
$lang['mediainuse'] = '%s ही फाइल नष्ट केली नाही - ती अजुन वापरात आहे.';
$lang['namespaces'] = 'नेमस्पेस';
$lang['mediafiles'] = 'मध्ये उपलब्ध असलेल्या फाइल';
-$lang['js']['keepopen'] = 'निवड केल्यावर विण्डो उघडी ठेवा';
-$lang['js']['hidedetails'] = 'सविस्तर मजकूर लपवा';
-$lang['js']['nosmblinks'] = 'विन्डोज़ शेअर ला लिंक केल्यास ते फक्त मायक्रोसॉफ़्ट इन्टरनेट एक्स्प्लोरर वरच चालते. तरी तुम्ही लिंक कॉपी करू शकता.';
+$lang['accessdenied'] = 'तुम्हाला हे पान बघायची परवानगी नाही.';
$lang['mediausage'] = 'ह्या फाइलचा संदर्भ देण्यासाठी खालील सिन्टॅक्स वापरा :';
$lang['mediaview'] = 'मूळ फाइल बघू ';
$lang['mediaroot'] = 'रूट';
@@ -131,6 +169,10 @@ $lang['current'] = 'चालू';
$lang['yours'] = 'तुमची आवृत्ति';
$lang['diff'] = 'सध्याच्या आवृत्तिंशी फरक दाखवा';
$lang['diff2'] = 'निवडलेल्या आवृत्तिंमधील फरक दाखवा';
+$lang['difflink'] = 'ह्या तुलना दृष्टीकोनाला लिंक करा';
+$lang['diff_type'] = 'फरक बघू:';
+$lang['diff_inline'] = 'एका ओळीत';
+$lang['diff_side'] = 'बाजूबाजूला';
$lang['line'] = 'ओळ';
$lang['breadcrumb'] = 'मागमूस';
$lang['youarehere'] = 'तुम्ही इथे आहात';
@@ -142,10 +184,21 @@ $lang['restored'] = 'जुनी आवृत्ति पुन
$lang['external_edit'] = 'बाहेरून संपादित';
$lang['summary'] = 'सारांश बदला';
$lang['noflash'] = 'ही माहिती दाखवण्यासाठी <a href="http://www.adobe.com/products/flashplayer/">अडोब फ्लॅश प्लेअर</a> ची गरज आहे.';
+$lang['download'] = 'तुकडा डाउनलोड करा';
+$lang['tools'] = 'साधने';
+$lang['user_tools'] = 'युजरची साधने';
+$lang['site_tools'] = 'साईटची साधने';
+$lang['page_tools'] = 'पानाची साधने';
+$lang['skip_to_content'] = 'सरळ मजकुराकडे ';
$lang['mail_newpage'] = 'पृष्ठ जोडले : ';
$lang['mail_changed'] = 'पृष्ठ बदलले : ';
+$lang['mail_subscribe_list'] = 'ह्या नेमस्पेस नाढे बदललेली पाने:';
$lang['mail_new_user'] = 'नवीन सदस्य : ';
$lang['mail_upload'] = 'फाइल अपलोड केली : ';
+$lang['changes_type'] = 'ह्याचे बदल बघू';
+$lang['pages_changes'] = 'पाने';
+$lang['media_changes'] = 'मिडिया फाईल';
+$lang['both_changes'] = 'पाने आणि मिडिया फाईल दोन्ही';
$lang['qb_bold'] = 'ठळक मजकूर';
$lang['qb_italic'] = 'तिरका मजकूर';
$lang['qb_underl'] = 'अधोरेखित मजकूर';
@@ -156,6 +209,11 @@ $lang['qb_h2'] = 'दुसर्या पातळीचे
$lang['qb_h3'] = 'तिसर्या पातळीचे शीर्षक';
$lang['qb_h4'] = 'चवथ्या पातळीचे शीर्षक';
$lang['qb_h5'] = 'पाचव्या पातळीचे शीर्षक';
+$lang['qb_h'] = 'शीर्षक';
+$lang['qb_hs'] = 'शीर्षक निवड';
+$lang['qb_hplus'] = 'उंच शीर्षक';
+$lang['qb_hminus'] = 'खालचं शीर्षक';
+$lang['qb_hequal'] = 'समान लेवलचे शीर्षक';
$lang['qb_link'] = 'अंतर्गत लिंक';
$lang['qb_extlink'] = 'बाह्य लिंक';
$lang['qb_hr'] = 'आडवी पट्टी';
@@ -165,7 +223,7 @@ $lang['qb_media'] = 'प्रतिमा आणि इतर फ
$lang['qb_sig'] = 'स्वाक्षरी टाका';
$lang['qb_smileys'] = 'स्माइली';
$lang['qb_chars'] = 'ख़ास चिन्ह';
-$lang['js']['del_confirm'] = 'निवडलेल्या गोष्टी नक्की नष्ट करू का ?';
+$lang['upperns'] = 'ह्यावरच्या नेमस्पेसकडे उडी मारा';
$lang['admin_register'] = 'नवीन सदस्य';
$lang['metaedit'] = 'मेटाडेटा बदला';
$lang['metasaveerr'] = 'मेटाडेटा सुरक्षित झाला नाही';
@@ -181,11 +239,9 @@ $lang['img_copyr'] = 'कॉपीराइट';
$lang['img_format'] = 'प्रकार';
$lang['img_camera'] = 'कॅमेरा';
$lang['img_keywords'] = 'मुख्य शब्द';
-$lang['subscribe_success'] = '%s ला %s च्या पुरवणिसाठि नोंदवले';
-$lang['subscribe_error'] = '%s ला %s च्या पुरवणिसाठि नोंदवताना चूक झाली';
-$lang['subscribe_noaddress'] = 'तुमच्या लॉगिनशी सम्बंधित कुठलाही पत्ता नाही , त्यामुळे पुरवणिसाठि नोंद केली जाऊ शकत नाही';
-$lang['unsubscribe_success'] = '%s ला %s च्या पुरवणी यादी मधून काढून टाकले';
-$lang['unsubscribe_error'] = '%s ला %s च्या पुरवणी यादी मधून काढून टाकण्यात चूक झाली';
+$lang['img_width'] = 'रुंदी';
+$lang['img_height'] = 'उंची';
+$lang['img_manager'] = 'मिडिया व्यवस्थापकात बघू';
$lang['authmodfailed'] = 'सदस्य अधिकृत करण्याची व्यवस्था चुकीची आहे. कृपया तुमच्या विकीच्या व्यवस्थापकाशी सम्पर्क साधा.';
$lang['authtempfail'] = 'सदस्य अधिकृत करण्याची सुविधा सध्या चालू नाही. सतत हा मजकूर दिसल्यास कृपया तुमच्या विकीच्या व्यवस्थापकाशी सम्पर्क साधा.';
$lang['i_chooselang'] = 'तुमची भाषा निवडा';
@@ -209,17 +265,4 @@ $lang['i_pol0'] = 'मुक्त विकी ( सर्वा
$lang['i_pol1'] = 'सार्वजनिक विकी ( सर्वांना वाचण्याची मुभा , लेखन व अपलोडची परवानगी फक्त नोंदणीकृत सदस्यांना )';
$lang['i_pol2'] = 'बंदिस्त विकी ( वाचन , लेखन व अपलोडची परवानगी फक्त नोंदणीकृत सदस्यांना ) ';
$lang['i_retry'] = 'पुन्हा प्रयत्न';
-$lang['mu_intro'] = 'इथे तुम्ही एकापेक्षा अधिक फाइल अपलोड करू शकता. ब्राउझ च्या बटणावर क्लिक करून त्याना लिस्ट मधे टाका. सगळ्या टाकुन झाल्यावर अपलोड च्या बटणावर क्लिक करा.';
-$lang['mu_gridname'] = 'फाइल नाम';
-$lang['mu_gridsize'] = 'साइज';
-$lang['mu_gridstat'] = 'स्थिति';
-$lang['mu_namespace'] = 'नेमस्पेस';
-$lang['mu_browse'] = 'ब्राउझ';
-$lang['mu_toobig'] = 'अति मोठे';
-$lang['mu_ready'] = 'अपलोडसाठी तयार';
-$lang['mu_done'] = 'पूर्ण';
-$lang['mu_fail'] = 'अयशस्वी';
-$lang['mu_authfail'] = 'सेशन संपला';
-$lang['mu_progress'] = '@PCT@% अपलोड झाले';
-$lang['mu_filetypes'] = 'मान्य फाइल टाइप';
$lang['recent_global'] = 'तुम्ही सध्या <b>%s</b> या नेमस्पेस मधील बदल पाहात आहात.तुम्ही <a href="%s">पूर्ण विकी मधले बदल </a> सुद्धा पाहू शकता.';
diff --git a/inc/lang/ms/lang.php b/inc/lang/ms/lang.php
new file mode 100644
index 000000000..92dc86b5a
--- /dev/null
+++ b/inc/lang/ms/lang.php
@@ -0,0 +1,97 @@
+<?php
+/**
+ * ms language file
+ *
+ * This file was initially built by fetching translations from other
+ * Wiki projects. See the @url lines below. Additional translations
+ * and fixes where done for DokuWiki by the people mentioned in the
+ * lines starting with @author
+ *
+ * @url http://svn.wikimedia.org/viewvc/mediawiki/trunk/phase3/languages/messages/MessagesMs.php?view=co
+ * @author Markos
+ */
+$lang['encoding'] = 'utf-8';
+$lang['direction'] = 'ltr';
+$lang['apostrophe'] = '\'';
+$lang['btn_edit'] = 'Sunting halaman ini';
+$lang['btn_source'] = 'Lihat sumber';
+$lang['btn_show'] = 'Baca';
+$lang['btn_create'] = 'Cipta halaman';
+$lang['btn_search'] = 'Cari';
+$lang['btn_save'] = 'Simpan';
+$lang['btn_preview'] = 'Pratonton';
+$lang['btn_top'] = 'Balik ke mula';
+$lang['btn_newer'] = '<< lebih kini';
+$lang['btn_older'] = 'lebih awal >>';
+$lang['btn_revs'] = 'Sejarah';
+$lang['btn_recent'] = 'Perubahan Terkini';
+$lang['btn_upload'] = 'Unggah (upload)';
+$lang['btn_cancel'] = 'Batal';
+$lang['btn_secedit'] = 'Sunting';
+$lang['btn_login'] = 'Masuk';
+$lang['btn_logout'] = 'Keluar';
+$lang['btn_admin'] = 'Admin';
+$lang['btn_update'] = 'Kemaskini';
+$lang['btn_delete'] = 'Hapus';
+$lang['btn_back'] = 'Balik';
+$lang['btn_backlink'] = 'Pautan ke halaman ini';
+$lang['btn_backtomedia'] = 'Balik ke rangkaian pilihan fail media';
+$lang['btn_subscribe'] = 'Pantau';
+$lang['btn_profile'] = 'Kemaskinikan profil';
+$lang['btn_reset'] = 'Batalkan suntingan';
+$lang['btn_resendpwd'] = 'Emel kata laluan baru';
+$lang['btn_draft'] = 'Sunting draf';
+$lang['btn_recover'] = 'Pulihkan draf';
+$lang['btn_draftdel'] = 'Hapuskan draf';
+$lang['btn_revert'] = 'Pulihkan';
+$lang['btn_register'] = 'Daftaran';
+$lang['btn_apply'] = 'Simpan';
+$lang['btn_media'] = 'Manager media';
+$lang['loggedinas'] = 'Log masuk sebagai';
+$lang['user'] = 'Nama pengguna';
+$lang['pass'] = 'Kata laluan';
+$lang['newpass'] = 'Kata laluan baru';
+$lang['oldpass'] = 'Kata laluan lama';
+$lang['passchk'] = 'sekali lagi';
+$lang['remember'] = 'Sentiasa ingati kata laluan saya.';
+$lang['fullname'] = 'Nama sebenar';
+$lang['email'] = 'E-mel';
+$lang['profile'] = 'Profil pengguna';
+$lang['badlogin'] = 'Maaf, ralat log masuk. Nama pengguna atau kata laluan salah.';
+$lang['minoredit'] = 'Suntingan Kecil';
+$lang['draftdate'] = 'Draf automatik disimpan pada';
+$lang['nosecedit'] = 'Halaman ini telah bertukar pada waktu sementara dan info bahagian ini telah luput. Seluruh halaman telah disarat.';
+$lang['regmissing'] = 'Maaf, semua medan mesti diisi';
+$lang['reguexists'] = 'Maaf, nama pengguna yang dimasukkan telah diguna. Sila pilih nama yang lain.';
+$lang['regsuccess'] = 'Akaun pengguna telah dicipta dan kata laluan telah dikirim kepada e-mel anda.';
+$lang['regsuccess2'] = 'Akaun pegguna telah dicipta.';
+$lang['regbadmail'] = 'Format alamat e-mel tidak sah. Sila masukkan semula ataupun kosongkan sahaja medan tersebut.';
+$lang['regbadpass'] = 'Kedua-dua kata laluan tidak sama. Sila masukkan semula.';
+$lang['regpwmail'] = 'Kata laluan Dokuwiki anda';
+$lang['reghere'] = 'Belum mendaftar akaun? Dapat akaun baru';
+$lang['profna'] = 'Wiki ini tidak menyokong modifikasi profil';
+$lang['profnoempty'] = 'Medan nama pengguna atau e-mel yang kosong tidak dibenarkan.';
+$lang['profchanged'] = 'Profil pengguna telah dikemaskini.';
+$lang['pwdforget'] = 'Terlupa kata laluan? Dapatkan yang baru';
+$lang['resendpwd'] = 'Kirimkan kata laluan baru untuk';
+$lang['resendpwdmissing'] = 'Maaf, semua medan perlu diisi.';
+$lang['resendpwdnouser'] = 'Maaf, nama pengguna ini tidak dapat dicari dalam database kami.';
+$lang['resendpwdbadauth'] = 'Maaf, kod authorasi ini tidak sah. Semak bahawa anda telah menggunakan seluruh pautan pengesahan yang dikirim.';
+$lang['resendpwdconfirm'] = 'Pautan pengesahan telah dikirimkan ke e-mel anda.';
+$lang['resendpwdsuccess'] = 'Kata laluan baru telah dikirimkan ke e-mel anda.';
+$lang['license'] = 'Selain daripada yang dinyata, isi wiki ini disediakan dengan lesen berikut:';
+$lang['licenseok'] = 'Perhatian: Dengan menyunting halaman ini, anda setuju untuk isi-isi anda dilesen menggunakan lesen berikut:';
+$lang['searchmedia'] = 'Cari nama fail:';
+$lang['searchmedia_in'] = 'Cari di %s';
+$lang['txt_upload'] = 'Pilih fail untuk diunggah';
+$lang['txt_filename'] = 'Unggah fail dengan nama (tidak wajib)';
+$lang['txt_overwrt'] = 'Timpa fail sekarang';
+$lang['lockedby'] = 'Halaman ini telah di';
+$lang['fileupload'] = 'Muat naik fail';
+$lang['uploadsucc'] = 'Pemuatan naik berjaya';
+$lang['uploadfail'] = 'Ralat muat naik';
+$lang['uploadxss'] = 'Fail ini mengandungi kod HTML atau kod skrip yang mungkin boleh disalah tafsir oleh pelayar web.';
+$lang['toc'] = 'Jadual Kandungan';
+$lang['current'] = 'kini';
+$lang['restored'] = 'Telah dikembalikan ke semakan sebelumnya';
+$lang['summary'] = 'Paparan';
diff --git a/inc/lang/ne/lang.php b/inc/lang/ne/lang.php
index 97e2dde5c..82ca389f7 100644
--- a/inc/lang/ne/lang.php
+++ b/inc/lang/ne/lang.php
@@ -40,7 +40,6 @@ $lang['btn_subscribe'] = 'पृष्ठ परिवर्तन ग
$lang['btn_unsubscribe'] = 'पृष्ठ परिवर्तन अग्राह्य गर्नुहोस्';
$lang['btn_profile'] = 'प्रोफाइल अध्यावधिक गर्नुहोस् ';
$lang['btn_reset'] = 'पूर्वरुपमा फर्काउनुहोस';
-$lang['btn_resendpwd'] = 'नयाँ प्रवेश शव्द(पासवर्ड) पठाउनुहोस् ';
$lang['btn_draft'] = ' ड्राफ्ट सम्पादन गर्नुहोस् ';
$lang['btn_recover'] = 'पहिलेको ड्राफ्ट हासिल गर्नुहोस ';
$lang['btn_draftdel'] = ' ड्राफ्ट मेटाउनुहोस् ';
@@ -75,7 +74,6 @@ $lang['profchanged'] = 'प्रयोगकर्ताको प्
$lang['pwdforget'] = 'आफ्नो पासवर्ड भुल्नु भयो ? नयाँ हासिल गर्नुहोस् ';
$lang['resendna'] = 'यो विकिबाट प्रवेशशव्द पठाउन समर्थित छैन ।';
$lang['resendpwd'] = 'नयाँ प्रवेशशव्द पठाउनुहोस् ';
-$lang['resendpwdmissing'] = 'माफ गर्नुहोस् , तपाईले सबै ठाउ भर्नुपर्छ। ';
$lang['resendpwdnouser'] = 'माफ गर्नुहोस्, हाम्रो डेटावेसमा यो प्रयोगकर्ता भेटिएन ।';
$lang['resendpwdbadauth'] = 'माफ गर्नुहोस् , यो अनुमति चिन्ह गलत छ। तपाईले पूरै जानकारी लिङ्क प्रयोग गर्नु पर्नेछ। ';
$lang['resendpwdconfirm'] = 'तपाईको इमेलमा कन्फरमेशन लिङ्क पठाइएको छ। ';
@@ -200,17 +198,4 @@ $lang['i_pol0'] = 'खुल्ला विकि (पठन,
$lang['i_pol1'] = 'Public विकि (पठन सवैका लागि,लेखन र अपलोड दर्ता गरिएका प्रयपगकर्ताका लागि ) ';
$lang['i_pol2'] = 'बन्द विकि (पठन , लेखन, अपलोड ) दर्ता भएका प्रयोगकर्ताका लागि मात्र ।';
$lang['i_retry'] = 'पुन: प्रयास गर्नुहोस् ';
-$lang['mu_intro'] = 'तपाईले धेरै वटा फाइलहरु एकै पटक अपलोड गर्न सक्नुहुन्छ । browse थिच्नुहोस् अनि सुचीमा थप्नुहोस् । सकिएपछि अपलोड थिछ्चुहोस् ।';
-$lang['mu_gridname'] = 'फाइलनाम ';
-$lang['mu_gridsize'] = 'आकार';
-$lang['mu_gridstat'] = 'स्थिति';
-$lang['mu_namespace'] = 'नेमस्पेस';
-$lang['mu_browse'] = 'Browse';
-$lang['mu_toobig'] = 'धेरै ठूलो';
-$lang['mu_ready'] = 'अपलोडको लागि तयार';
-$lang['mu_done'] = 'पूरा';
-$lang['mu_fail'] = 'असफल';
-$lang['mu_authfail'] = 'सत्र सकियो ';
-$lang['mu_progress'] = '@PCT@% अपलोड भयो ';
-$lang['mu_filetypes'] = 'समर्थित फाइल प्रकार';
$lang['recent_global'] = 'तपाई अहिले <b>%s</b> नेमस्पेस भित्र भएका परिवर्तन हेर्दैहुनुहुन्छ। तपाई <a href="%s">पुरै विकिमा भएको परिवर्तन हेर्न सक्नुहुन्छ</a>.';
diff --git a/inc/lang/nl/lang.php b/inc/lang/nl/lang.php
index 62d23b0d2..4644f5e5d 100644
--- a/inc/lang/nl/lang.php
+++ b/inc/lang/nl/lang.php
@@ -15,6 +15,7 @@
* @author Marijn Hofstra <hofstra.m@gmail.com>
* @author Timon Van Overveldt <timonvo@gmail.com>
* @author Jeroen
+ * @author Ricardo Guijt <ricardoguijt@gmail.com>
*/
$lang['encoding'] = 'utf-8';
$lang['direction'] = 'ltr';
@@ -50,7 +51,6 @@ $lang['btn_backtomedia'] = 'Terug naar Bestandsselectie';
$lang['btn_subscribe'] = 'Inschrijven wijzigingen';
$lang['btn_profile'] = 'Profiel aanpassen';
$lang['btn_reset'] = 'Wissen';
-$lang['btn_resendpwd'] = 'Stuur een nieuw wachtwoord';
$lang['btn_draft'] = 'Bewerk concept';
$lang['btn_recover'] = 'Herstel concept';
$lang['btn_draftdel'] = 'Verwijder concept';
@@ -87,7 +87,6 @@ $lang['profnoempty'] = 'Een lege gebruikersnaam of e-mailadres is niet
$lang['profchanged'] = 'Gebruikersprofiel succesvol aangepast';
$lang['pwdforget'] = 'Je wachtwoord vergeten? Vraag een nieuw wachtwoord aan';
$lang['resendna'] = 'Deze wiki ondersteunt het verzenden van wachtwoorden niet';
-$lang['resendpwd'] = 'Stuur een nieuw wachtwoord voor';
$lang['resendpwdmissing'] = 'Sorry, je moet alle velden invullen.';
$lang['resendpwdnouser'] = 'Sorry, we kunnen deze gebruikersnaam niet vinden in onze database.';
$lang['resendpwdbadauth'] = 'Sorry, deze authentiecatiecode is niet geldig. Controleer of je de volledige bevestigings-link hebt gebruikt.';
@@ -138,8 +137,11 @@ $lang['js']['restore_confirm'] = 'Werkelijk deze versie terugzetten?';
$lang['js']['media_diff'] = 'Verschillen bekijken:';
$lang['js']['media_diff_both'] = 'Naast elkaar';
$lang['js']['media_diff_opacity'] = 'Doorschijnend';
+$lang['js']['media_diff_portions'] = 'Swipe';
$lang['js']['media_select'] = 'Selecteer bestanden';
+$lang['js']['media_upload_btn'] = 'Uploaden';
$lang['js']['media_done_btn'] = 'Klaar';
+$lang['js']['media_drop'] = 'Sleep bestanden hierheen om ze te uploaden';
$lang['js']['media_cancel'] = 'Verwijderen';
$lang['js']['media_overwrt'] = 'Bestaande bestanden overschrijven';
$lang['rssfailed'] = 'Er is een fout opgetreden bij het ophalen van de feed: ';
@@ -196,6 +198,7 @@ $lang['mail_changed'] = 'pagina aangepast:';
$lang['mail_subscribe_list'] = 'Pagina\'s veranderd in namespace:';
$lang['mail_new_user'] = 'nieuwe gebruiker:';
$lang['mail_upload'] = 'bestand geüpload:';
+$lang['changes_type'] = 'Bekijk wijzigingen van';
$lang['pages_changes'] = 'Pagina\'s';
$lang['media_changes'] = 'Media bestanden';
$lang['both_changes'] = 'Zowel pagina\'s als media bestanden';
@@ -282,21 +285,6 @@ $lang['i_pol1'] = 'Publieke wiki (lezen voor iedereen, schrijven
$lang['i_pol2'] = 'Besloten wiki (lezen, schrijven en uploaden alleen voor geregistreerde gebruikers)';
$lang['i_retry'] = 'Opnieuw';
$lang['i_license'] = 'Kies a.u.b. een licentie die u voor uw inhoud wilt gebruiken:';
-$lang['mu_intro'] = 'Hiier kun je meerdere bestanden tegelijk uploaden. Klik de blader-knop om ze aan de lijst toe te voegen. Klik Upload als je klaar bent.';
-$lang['mu_gridname'] = 'Bestandsnaam';
-$lang['mu_gridsize'] = 'Grootte';
-$lang['mu_gridstat'] = 'Status';
-$lang['mu_namespace'] = 'Namespace';
-$lang['mu_browse'] = 'Blader';
-$lang['mu_toobig'] = 'te groot';
-$lang['mu_ready'] = 'Klaar om te uploaden';
-$lang['mu_done'] = 'klaar';
-$lang['mu_fail'] = 'mislukt';
-$lang['mu_authfail'] = 'sessie beëindigd';
-$lang['mu_progress'] = '@PCT@% geüpload';
-$lang['mu_filetypes'] = 'Toegestane bestandstypes';
-$lang['mu_info'] = 'bestanden geüpload.';
-$lang['mu_lasterr'] = 'Laatste foutmelding:';
$lang['recent_global'] = 'Je bekijkt momenteel de wijzigingen binnen de <b>%s</b> namespace. Je kunt ook de <a href="%s">recente wijzigingen van de hele wiki</a> bekijken.';
$lang['years'] = '%d jaar geleden';
$lang['months'] = '%d maand geleden';
@@ -306,22 +294,27 @@ $lang['hours'] = '%d uren geleden';
$lang['minutes'] = '%d minuten geleden';
$lang['seconds'] = '%d seconden geleden';
$lang['wordblock'] = 'Uw wijziging is niet opgeslagen omdat deze niet-toegestane tekst bevat (spam).';
+$lang['media_uploadtab'] = 'Uploaden';
$lang['media_searchtab'] = 'Zoeken';
$lang['media_file'] = 'Bestand';
$lang['media_viewtab'] = 'Beeld';
$lang['media_edittab'] = 'Bewerken';
$lang['media_historytab'] = 'Geschiedenis';
+$lang['media_list_thumbs'] = 'Miniatuurweergaven';
$lang['media_list_rows'] = 'Regels';
$lang['media_sort_name'] = 'Naam';
$lang['media_sort_date'] = 'Datum';
$lang['media_namespaces'] = 'Kies naamruimte';
$lang['media_files'] = 'Bestanden in %s';
+$lang['media_upload'] = 'Upload naar %s';
$lang['media_search'] = 'Zoeken in %s';
$lang['media_view'] = '%s';
+$lang['media_viewold'] = '%s bij %s';
$lang['media_edit'] = '%s bewerken';
$lang['media_history'] = 'Geschiedenis van %s';
$lang['media_meta_edited'] = 'Metagegevens bewerkt';
$lang['media_perm_read'] = 'Sorry, u heeft niet voldoende rechten om bestanden te lezen.';
$lang['media_perm_upload'] = 'Sorry, u heeft niet voldoende rechten om bestanden te uploaden.';
+$lang['media_update'] = 'Upload nieuwe versie';
$lang['media_restore'] = 'Deze versie terugzetten';
$lang['plugin_install_err'] = 'Plugin is juist geinstalleerd. Hernoem plugin map \'%s\' naar \'%s\'.';
diff --git a/inc/lang/no/admin.txt b/inc/lang/no/admin.txt
index 99289a18b..765177fb3 100644
--- a/inc/lang/no/admin.txt
+++ b/inc/lang/no/admin.txt
@@ -1,3 +1,3 @@
====== Administrasjon ======
-Nedenfor finner du en liste over administrative oppgaver tilgjengelig i DokuWiki.
+Nedenfor finner du en liste over administrative oppgaver i DokuWiki.
diff --git a/inc/lang/no/adminplugins.txt b/inc/lang/no/adminplugins.txt
index 091ae4d7e..df78672d7 100644
--- a/inc/lang/no/adminplugins.txt
+++ b/inc/lang/no/adminplugins.txt
@@ -1 +1 @@
-====== Ekstra tillegg ====== \ No newline at end of file
+====== Ekstra programtillegg ====== \ No newline at end of file
diff --git a/inc/lang/no/conflict.txt b/inc/lang/no/conflict.txt
index 855034685..49961d0df 100644
--- a/inc/lang/no/conflict.txt
+++ b/inc/lang/no/conflict.txt
@@ -1,6 +1,6 @@
====== Det finnes en nyere versjon ======
-Det fins en nyere versjon av dokumentet du har redigert. Dette kan skje når en annen bruker redigerer dokumentet samtidig med deg.
+Det fins en nyere utgave av dokumentet du har redigert. Dette kan skje når en annen bruker redigerer dokumentet samtidig med deg.
Legg nøye merke til forskjellene som vises under, og velg deretter hvilken versjon du vil beholde. Om du velger ''**Lagre**'', så kommer din versjon til å lagres. Velg ''**Avbryt**'' for å beholde den nyeste versjonen (ikke din).
diff --git a/inc/lang/no/denied.txt b/inc/lang/no/denied.txt
index 4f8c9a188..6e7f1f28b 100644
--- a/inc/lang/no/denied.txt
+++ b/inc/lang/no/denied.txt
@@ -1,3 +1,3 @@
====== Adgang forbudt ======
-Adgang forbudt. Kanskje du har glemt å logge deg inn?
+Beklager, men du har ikke rettigheter til dette. Kanskje du har glemt å logge inn?
diff --git a/inc/lang/no/lang.php b/inc/lang/no/lang.php
index 88d21b536..97ef741ef 100644
--- a/inc/lang/no/lang.php
+++ b/inc/lang/no/lang.php
@@ -17,6 +17,7 @@
* @author Erik Pedersen <erik.pedersen@shaw.ca>
* @author Rune Rasmussen syntaxerror.no@gmail.com
* @author Jon Bøe <jonmagneboe@hotmail.com>
+ * @author Egil Hansen <egil@rosetta.no>
*/
$lang['encoding'] = 'utf-8';
$lang['direction'] = 'ltr';
@@ -26,7 +27,7 @@ $lang['singlequoteopening'] = '‘';
$lang['singlequoteclosing'] = '’';
$lang['apostrophe'] = '\'';
$lang['btn_edit'] = 'Rediger denne siden';
-$lang['btn_source'] = 'Vis kildetekst';
+$lang['btn_source'] = 'Vis kildekode';
$lang['btn_show'] = 'Vis siden';
$lang['btn_create'] = 'Lag denne siden';
$lang['btn_search'] = 'Søk';
@@ -49,10 +50,9 @@ $lang['btn_delete'] = 'Slett';
$lang['btn_back'] = 'Tilbake';
$lang['btn_backlink'] = 'Tilbakelenker';
$lang['btn_backtomedia'] = 'Tilbake til valg av mediafil';
-$lang['btn_subscribe'] = 'Abonner på endringer';
+$lang['btn_subscribe'] = 'Abonnér på endringer';
$lang['btn_profile'] = 'Oppdater profil';
$lang['btn_reset'] = 'Tilbakestill';
-$lang['btn_resendpwd'] = 'Send nytt passord';
$lang['btn_draft'] = 'Rediger kladd';
$lang['btn_recover'] = 'Gjennvinn kladd';
$lang['btn_draftdel'] = 'Slett kladd';
@@ -86,28 +86,27 @@ $lang['reghere'] = 'Har du ikke en konto ennå? Lag deg en';
$lang['profna'] = 'Denne wikien støtter ikke profilendringer';
$lang['profnochange'] = 'Ingen endringer, ingenting å gjøre.';
$lang['profnoempty'] = 'Tomt navn- eller e-postfelt er ikke tillatt.';
-$lang['profchanged'] = 'Brukerprofil ble vellykket oppdatert.';
-$lang['pwdforget'] = 'Glemt ditt passord? Få deg et nytt';
-$lang['resendna'] = 'Denne wikien støtter ikke nyutsending.';
-$lang['resendpwd'] = 'Send nytt passord for';
+$lang['profchanged'] = 'Brukerprofilen ble vellykket oppdatert.';
+$lang['pwdforget'] = 'Glemt passordet ditt? Få deg et nytt';
+$lang['resendna'] = 'Denne wikien støtter ikke nyutsending av passord.';
$lang['resendpwdmissing'] = 'Beklager, du må fylle inn alle felt.';
$lang['resendpwdnouser'] = 'Beklager, vi kan ikke finne denne brukeren i vår database.';
$lang['resendpwdbadauth'] = 'Beklager, denne autorisasjonskoden er ikke gyldig. Sjekk at du brukte hele bekreftelseslenken.';
$lang['resendpwdconfirm'] = 'En bekreftelseslenke er blitt sendt på e-post.';
$lang['resendpwdsuccess'] = 'Ditt nye passord er blitt sendt på e-post.';
-$lang['license'] = 'Der annet ikke er særskilt beskrevet, er innholdet på denne wiki regulert av følgende lisens:';
-$lang['licenseok'] = 'Merk: Ved å endre på denne siden godtar du at ditt innhold blir regulert av følgende lisens:';
+$lang['license'] = 'Der annet ikke er angitt, er innholdet på denne wiki utgitt under følgende lisens:';
+$lang['licenseok'] = 'Merk: Ved å endre på denne siden godtar du at ditt innhold utgis under følgende lisens:';
$lang['searchmedia'] = 'Søk filnavn';
$lang['searchmedia_in'] = 'Søk i %s';
$lang['txt_upload'] = 'Velg fil som skal lastes opp';
$lang['txt_filename'] = 'Skriv inn wikinavn (alternativt)';
$lang['txt_overwrt'] = 'Overskriv eksisterende fil';
-$lang['lockedby'] = 'Stengt av';
-$lang['lockexpire'] = 'Avstengningen opphører';
-$lang['js']['willexpire'] = 'Din redigeringslås for dette dokumentet kommer snart til å opphøre.\nFor å unngå versjonskonflikter bør du forhåndsvise dokumentet ditt for å forlenge redigeringslåsen.';
-$lang['js']['notsavedyet'] = 'Ulagrede endringer vil gå tapt.
+$lang['lockedby'] = 'Låst av';
+$lang['lockexpire'] = 'Låsingen utløper';
+$lang['js']['willexpire'] = 'Din redigeringslås for dette dokumentet kommer snart til å utløpe.\nFor å unngå versjonskonflikter bør du forhåndsvise dokumentet ditt for å forlenge redigeringslåsen.';
+$lang['js']['notsavedyet'] = 'Ulagrede endringer vil gå tapt!
Vil du fortsette?';
-$lang['js']['searchmedia'] = 'Søk for filer';
+$lang['js']['searchmedia'] = 'Søk etter filer';
$lang['js']['keepopen'] = 'Hold vindu åpent ved valg';
$lang['js']['hidedetails'] = 'Skjul detaljer';
$lang['js']['mediatitle'] = 'Lenkeinnstillinger';
@@ -117,16 +116,16 @@ $lang['js']['mediasize'] = 'Bildestørrelse';
$lang['js']['mediatarget'] = 'Lenkemål';
$lang['js']['mediaclose'] = 'Lukk';
$lang['js']['mediainsert'] = 'Sett inn';
-$lang['js']['mediadisplayimg'] = 'Vis bilde';
-$lang['js']['mediadisplaylnk'] = 'Vis bare lenken';
+$lang['js']['mediadisplayimg'] = 'Vis bilde.';
+$lang['js']['mediadisplaylnk'] = 'Vis bare lenken.';
$lang['js']['mediasmall'] = 'Liten versjon';
$lang['js']['mediamedium'] = 'Medium versjon';
$lang['js']['medialarge'] = 'Stor versjon';
$lang['js']['mediaoriginal'] = 'Original versjon';
-$lang['js']['medialnk'] = 'Lenke til detaljeside';
+$lang['js']['medialnk'] = 'Lenke til detaljside';
$lang['js']['mediadirect'] = 'Direktelenke til original';
$lang['js']['medianolnk'] = 'Ingen lenke';
-$lang['js']['medianolink'] = 'Ikke lenk bilde';
+$lang['js']['medianolink'] = 'Ikke lenk bildet';
$lang['js']['medialeft'] = 'Venstrejuster bilde';
$lang['js']['mediaright'] = 'Høyrejuster bilde';
$lang['js']['mediacenter'] = 'Midtstill bilde';
@@ -165,13 +164,13 @@ $lang['mediainuse'] = 'Filen "%s" har ikke biltt slettet - den er for
$lang['namespaces'] = 'Navnerom';
$lang['mediafiles'] = 'Tilgjengelige filer i';
$lang['accessdenied'] = 'Du har ikke tilgang til å se denne siden';
-$lang['mediausage'] = 'Bruk følgende syntaks til å refferer til denne filen:';
+$lang['mediausage'] = 'Bruk følgende syntaks til å referere til denne filen:';
$lang['mediaview'] = 'Vis original fil';
$lang['mediaroot'] = 'rot';
$lang['mediaupload'] = 'Last opp en fil til gjeldende navnerom her. For å opprette undernavnerom, før dem opp før filnavn i "Last opp som" adskilt med kolon.';
$lang['mediaextchange'] = 'Filendelse endret fra .%s til .%s!';
$lang['reference'] = 'Referanser for';
-$lang['ref_inuse'] = 'Denne filen kan ikke slettes fordi den er fortsatt i bruk av følgende sider:';
+$lang['ref_inuse'] = 'Denne filen kan ikke slettes fordi den er fortsatt i bruk på følgende sider:';
$lang['ref_hidden'] = 'Noen referanser er på sider du ikke har tilgang til å lese';
$lang['hits'] = 'Treff';
$lang['quickhits'] = 'Matchende wikinavn';
@@ -187,7 +186,7 @@ $lang['diff_side'] = 'Side ved side';
$lang['line'] = 'Linje';
$lang['breadcrumb'] = 'Spor';
$lang['youarehere'] = 'Du er her';
-$lang['lastmod'] = 'Sist modifisert';
+$lang['lastmod'] = 'Sist endret';
$lang['by'] = 'av';
$lang['deleted'] = 'fjernet';
$lang['created'] = 'opprettet';
@@ -258,15 +257,15 @@ $lang['subscr_not_subscribed'] = '%s abonnerer ikke på %s';
$lang['subscr_m_not_subscribed'] = 'Du abonnerer ikke på denne sida eller dette navnerommet';
$lang['subscr_m_new_header'] = 'Legg til abonnement';
$lang['subscr_m_current_header'] = 'Gjeldende abonnementer';
-$lang['subscr_m_unsubscribe'] = 'Avmeld';
-$lang['subscr_m_subscribe'] = 'Påmeld';
+$lang['subscr_m_unsubscribe'] = 'Stoppe abonnement';
+$lang['subscr_m_subscribe'] = 'Abonnere på';
$lang['subscr_m_receive'] = 'Motta';
$lang['subscr_style_every'] = 'e-post for alle endringer';
$lang['subscr_style_digest'] = 'e-post med sammendrag av endringer for hver side (%.2f dager mellom hver)';
$lang['subscr_style_list'] = 'liste med sider som er endra siden forrige e-post (%.2f dager mellom hver)';
$lang['authmodfailed'] = 'Feilkonfigurert brukerautorisasjon. Vennligst innformer Wiki-admin.';
$lang['authtempfail'] = 'Brukerautorisasjon er midlertidig utilgjengelig. Om dette vedvarer, vennligst informer Wiki-admin.';
-$lang['i_chooselang'] = 'Velg ditt språk';
+$lang['i_chooselang'] = 'Velg språk';
$lang['i_installer'] = 'DokuWiki-installasjon';
$lang['i_wikiname'] = 'Wikinavn';
$lang['i_enableacl'] = 'Aktiver ACL (anbefalt)';
@@ -276,7 +275,7 @@ $lang['i_modified'] = 'For sikkerhets skyld vil dette skriptet bare v
Du bør enten pakke ut filene på nytt fra den nedlastede pakken, eller konsultere den komplette
<a href="http://dokuwiki.org/install">Dokuwiki-installasjonsinstruksen</a>';
$lang['i_funcna'] = 'PHP-funksjonen <code>%s</code> er ikke tilgjengelig. Kanskje din leverandør har deaktivert den av noen grunn?';
-$lang['i_phpver'] = 'Your PHP version <code>%s</code> is lower than the needed <code>%s</code>. You need to upgrade your PHP install.';
+$lang['i_phpver'] = 'Din PHP versjon <code>%s</code> er lavere enn kravet <code>%s</code>. Du må oppgradere PHP installasjonen. ';
$lang['i_permfail'] = '<code>%s</code> er ikke skrivbar for DokuWiki. Du må fikse rettighetene for denne mappen!';
$lang['i_confexists'] = '<code>%s</code> eksisterer allerede';
$lang['i_writeerr'] = 'Kunne ikke opprette <code>%s</code>. Du må sjekke mappe-/filrettigheter og opprette filen manuelt.';
@@ -292,21 +291,6 @@ $lang['i_pol1'] = 'Offentlig Wiki (les for alle, skriving og oppl
$lang['i_pol2'] = 'Lukket Wiki (les, skriv og opplasting bare for registrerte brukere)';
$lang['i_retry'] = 'Prøv igjen';
$lang['i_license'] = 'Velg lisens som du vil legge ut innholdet under:';
-$lang['mu_intro'] = 'Her kan du laste opp flere filer samtidig. Klikk på utforsk-knappen for å legge dem til i køen. Klikk på "last opp" når du er ferdig med å velge filene. ';
-$lang['mu_gridname'] = 'Filnavn';
-$lang['mu_gridsize'] = 'Størrelse';
-$lang['mu_gridstat'] = 'Status';
-$lang['mu_namespace'] = 'Navnerom (Namespace)';
-$lang['mu_browse'] = 'Utforsk';
-$lang['mu_toobig'] = 'for stor';
-$lang['mu_ready'] = 'klar for opplasting';
-$lang['mu_done'] = 'komplett';
-$lang['mu_fail'] = 'feilet';
-$lang['mu_authfail'] = 'sesjonen har utløpt';
-$lang['mu_progress'] = '@PCT@% lastet opp';
-$lang['mu_filetypes'] = 'Tillatte filtyper';
-$lang['mu_info'] = 'filer lastet opp.';
-$lang['mu_lasterr'] = 'Siste feilen:';
$lang['recent_global'] = 'Du ser nå på endringene i navnerommet <b>%s</b>. Du kan også<a href="%s">se på nylig foretatte endringer for hele wikien</a>.';
$lang['years'] = '%d år siden';
$lang['months'] = '%d måneder siden';
@@ -333,10 +317,10 @@ $lang['media_search'] = 'Søk i navnerommet <strong>%s</strong>.';
$lang['media_view'] = '%s';
$lang['media_viewold'] = '%s på %s';
$lang['media_edit'] = 'Rediger';
-$lang['media_history'] = 'Dette er de tidligere versjonene av fila.';
+$lang['media_history'] = 'Dette er de tidligere versjonene av filen.';
$lang['media_meta_edited'] = 'metadata er endra';
$lang['media_perm_read'] = 'Beklager, du har ikke tilgang til å lese filer.';
$lang['media_perm_upload'] = 'Beklager, du har ikke tilgang til å laste opp filer.';
$lang['media_update'] = 'Last opp ny versjon';
$lang['media_restore'] = 'Gjenopprett denne versjonen';
-$lang['plugin_install_err'] = 'Tillegget ble feil installert. Skift navn på mappa \'%s\' til \'%s\'.';
+$lang['plugin_install_err'] = 'Tillegget ble feil installert. Skift navn på mappen \'%s\' til \'%s\'.';
diff --git a/inc/lang/no/newpage.txt b/inc/lang/no/newpage.txt
index f712998d2..86cad00ed 100644
--- a/inc/lang/no/newpage.txt
+++ b/inc/lang/no/newpage.txt
@@ -1,3 +1,3 @@
====== Dette emnet har ikke noe innhold ======
-Du har klikket på en lenke til et emne som ikke finnes ennå. Du kan skape det gjennom å klikke på ''**Lag denne siden**''.
+Du har klikket på en lenke til et emne som ikke finnes ennå. Du kan opprette det ved å klikke på ''**Lag denne siden**''.
diff --git a/inc/lang/no/pwconfirm.txt b/inc/lang/no/pwconfirm.txt
index 9b8a0ab3e..36163c6e7 100644
--- a/inc/lang/no/pwconfirm.txt
+++ b/inc/lang/no/pwconfirm.txt
@@ -3,7 +3,7 @@ Hei @FULLNAME@!
Noen har bedt om nytt passord for din @TITLE@ innlogging
på @DOKUWIKIURL@
-Om du ikke bad om nytt passord kan du bare overse denne e-posten.
+Om du ikke ba om nytt passord kan du bare overse denne e-posten.
For å bekrefte at forespørselen virkelig kom fra deg kan du bruke
følgende lenke:
diff --git a/inc/lang/no/recent.txt b/inc/lang/no/recent.txt
index d9357b1a4..857013c32 100644
--- a/inc/lang/no/recent.txt
+++ b/inc/lang/no/recent.txt
@@ -1,5 +1,5 @@
====== Siste nytt ======
-Følgende sider/dokumenter har nylig blitt oppdatert.
+Følgende sider har nylig blitt oppdatert.
diff --git a/inc/lang/no/register.txt b/inc/lang/no/register.txt
index 1ce95c44d..160e47364 100644
--- a/inc/lang/no/register.txt
+++ b/inc/lang/no/register.txt
@@ -1,4 +1,4 @@
====== Registrer deg som bruker ======
-Angi all informasjon som det blir spurt om nedenfor for å skape en ny brukerkonto for denne wiki. Vær spesielt nøye med å angi en **gyldig e-postadresse** - ditt passord vil bli sendt til den e-postadressen du angir. Brukernavnet må være et gyldig [[doku>pagename|sidenavn]].
+Angi all informasjon som det blir spurt om nedenfor for å lage en ny brukerkonto for denne wikien. Vær spesielt nøye med å angi en **gyldig e-postadresse** - ditt passord vil bli sendt til den e-postadressen du angir. Brukernavnet må være et gyldig [[doku>pagename|sidenavn]].
diff --git a/inc/lang/no/showrev.txt b/inc/lang/no/showrev.txt
index 556896437..06514f2bd 100644
--- a/inc/lang/no/showrev.txt
+++ b/inc/lang/no/showrev.txt
@@ -1,2 +1,2 @@
-**Dette er en gammel revisjon av dokumentet!**
+**Dette er en gammel utgave av dokumentet!**
----
diff --git a/inc/lang/no/subscr_form.txt b/inc/lang/no/subscr_form.txt
index c3df69e02..f62b25bec 100644
--- a/inc/lang/no/subscr_form.txt
+++ b/inc/lang/no/subscr_form.txt
@@ -1,3 +1,3 @@
====== Administrere abonnement ======
-Denne sida lar deg administrere abonnementene dine for denne sida og dette navnerommet. \ No newline at end of file
+Denne siden lar deg administrere abonnementene dine for denne siden og dette navnerommet. \ No newline at end of file
diff --git a/inc/lang/pl/lang.php b/inc/lang/pl/lang.php
index a6fc3d52e..3bde240d9 100644
--- a/inc/lang/pl/lang.php
+++ b/inc/lang/pl/lang.php
@@ -12,6 +12,7 @@
* @author maros <dobrimaros@yahoo.pl>
* @author Grzegorz Widła <dzesdzes@gmail.com>
* @author Łukasz Chmaj <teachmeter@gmail.com>
+ * @author Begina Felicysym <begina.felicysym@wp.eu>
*/
$lang['encoding'] = 'utf-8';
$lang['direction'] = 'ltr';
@@ -47,12 +48,13 @@ $lang['btn_backtomedia'] = 'Powrót do wyboru pliku';
$lang['btn_subscribe'] = 'Subskrybuj zmiany';
$lang['btn_profile'] = 'Aktualizuj profil';
$lang['btn_reset'] = 'Resetuj';
-$lang['btn_resendpwd'] = 'Prześlij nowe hasło';
$lang['btn_draft'] = 'Edytuj szkic';
$lang['btn_recover'] = 'Przywróć szkic';
$lang['btn_draftdel'] = 'Usuń szkic';
$lang['btn_revert'] = 'Przywróć';
$lang['btn_register'] = 'Zarejestruj się!';
+$lang['btn_apply'] = 'Zastosuj';
+$lang['btn_media'] = 'Menadżer multimediów';
$lang['loggedinas'] = 'Zalogowany jako';
$lang['user'] = 'Użytkownik';
$lang['pass'] = 'Hasło';
@@ -82,7 +84,6 @@ $lang['profnoempty'] = 'Pusta nazwa lub adres e-mail nie dozwolone.';
$lang['profchanged'] = 'Zaktualizowano profil użytkownika.';
$lang['pwdforget'] = 'Nie pamiętasz hasła? Zdobądź nowe!';
$lang['resendna'] = 'To wiki nie pozwala na powtórne przesyłanie hasła.';
-$lang['resendpwd'] = 'Prześlij nowe hasło dla';
$lang['resendpwdmissing'] = 'Wypełnij wszystkie pola.';
$lang['resendpwdnouser'] = 'Nie można znaleźć tego użytkownika w bazie danych.';
$lang['resendpwdbadauth'] = 'Błędny kod autoryzacji! Upewnij się, że użyłeś(aś) właściwego odnośnika.';
@@ -97,7 +98,7 @@ $lang['txt_filename'] = 'Nazwa pliku (opcjonalnie)';
$lang['txt_overwrt'] = 'Nadpisać istniejący plik?';
$lang['lockedby'] = 'Aktualnie zablokowane przez';
$lang['lockexpire'] = 'Blokada wygasa';
-$lang['willexpire'] = 'Za minutę Twoja blokada tej strony wygaśnie.\nW celu uniknięcia konfliktów wyświetl podgląd aby odnowić blokadę.';
+$lang['js']['willexpire'] = 'Twoja blokada edycji tej strony wygaśnie w ciągu minuty. \nW celu uniknięcia konfliktów użyj przycisku podglądu aby odnowić blokadę.';
$lang['js']['notsavedyet'] = 'Nie zapisane zmiany zostaną utracone.
Czy na pewno kontynuować?';
$lang['js']['searchmedia'] = 'Szukaj plików';
@@ -129,6 +130,17 @@ Możesz skopiować odnośnik.';
$lang['js']['linkwiz'] = 'Tworzenie odnośników';
$lang['js']['linkto'] = 'Link do';
$lang['js']['del_confirm'] = 'Czy na pewno usunąć?';
+$lang['js']['restore_confirm'] = 'Naprawdę przywrócić tą wersję?';
+$lang['js']['media_diff'] = 'Pokaż różnice:';
+$lang['js']['media_diff_both'] = 'Obok siebie';
+$lang['js']['media_diff_opacity'] = 'Przezroczystość';
+$lang['js']['media_diff_portions'] = 'Przesunięcie';
+$lang['js']['media_select'] = 'Wybierz pliki...';
+$lang['js']['media_upload_btn'] = 'Przesłanie plików';
+$lang['js']['media_done_btn'] = 'Zrobione';
+$lang['js']['media_drop'] = 'Upuść tutaj pliki do przesłania';
+$lang['js']['media_cancel'] = 'usuń';
+$lang['js']['media_overwrt'] = 'Nadpisz istniejące pliki';
$lang['rssfailed'] = 'Wystąpił błąd przy pobieraniu tych danych: ';
$lang['nothingfound'] = 'Nic nie znaleziono.';
$lang['mediaselect'] = 'Wysyłanie pliku';
@@ -178,11 +190,20 @@ $lang['external_edit'] = 'edycja zewnętrzna';
$lang['summary'] = 'Opis zmian';
$lang['noflash'] = 'Plugin <a href="http://www.adobe.com/products/flashplayer/">Adobe Flash Plugin</a> jest niezbędny do obejrzenia tej zawartości.';
$lang['download'] = 'Pobierz zrzut';
+$lang['tools'] = 'Narzędzia';
+$lang['user_tools'] = 'Narzędzia użytkownika';
+$lang['site_tools'] = 'Narzędzia witryny';
+$lang['page_tools'] = 'Narzędzia strony';
+$lang['skip_to_content'] = 'przejście do zawartości';
$lang['mail_newpage'] = 'Strona dodana:';
$lang['mail_changed'] = 'Strona zmieniona:';
$lang['mail_subscribe_list'] = 'Zmienione strony w katalogu:';
$lang['mail_new_user'] = 'Nowy użytkownik:';
$lang['mail_upload'] = 'Umieszczono plik:';
+$lang['changes_type'] = 'Zobacz zmiany';
+$lang['pages_changes'] = 'Strony';
+$lang['media_changes'] = 'Pliki multimediów';
+$lang['both_changes'] = 'Zarówno strony jak i pliki multimediów';
$lang['qb_bold'] = 'Pogrubienie';
$lang['qb_italic'] = 'Pochylenie';
$lang['qb_underl'] = 'Podkreślenie';
@@ -223,6 +244,9 @@ $lang['img_copyr'] = 'Prawa autorskie';
$lang['img_format'] = 'Format';
$lang['img_camera'] = 'Aparat';
$lang['img_keywords'] = 'Słowa kluczowe';
+$lang['img_width'] = 'Szerokość';
+$lang['img_height'] = 'Wysokość';
+$lang['img_manager'] = 'Zobacz w menadżerze multimediów';
$lang['subscr_subscribe_success'] = 'Dodano %s do listy subskrypcji %s';
$lang['subscr_subscribe_error'] = 'Błąd podczas dodawania %s do listy subskrypcji %s';
$lang['subscr_subscribe_noaddress'] = 'Brak adresu skojarzonego z twoim loginem, nie możesz zostać dodany(a) do listy subskrypcji';
@@ -264,21 +288,6 @@ $lang['i_pol1'] = 'Publiczne Wiki (odczyt dla wszystkich, zapis i
$lang['i_pol2'] = 'Zamknięte Wiki (odczyt, zapis i dodawanie plików tylko dla zarejestrowanych użytkowników)';
$lang['i_retry'] = 'Spróbuj ponownie';
$lang['i_license'] = 'Wybierz licencję, na warunkach której chcesz udostępniać treści:';
-$lang['mu_intro'] = 'Możesz tutaj wysłać wiele plików na raz. Kliknij przycisk "Przeglądaj" aby dodać je do kolejki. Kliknij "Wyślij" gdy skończysz.';
-$lang['mu_gridname'] = 'Nazwa pliku';
-$lang['mu_gridsize'] = 'Rozmiar';
-$lang['mu_gridstat'] = 'Stan';
-$lang['mu_namespace'] = 'Katalog';
-$lang['mu_browse'] = 'Przeglądaj';
-$lang['mu_toobig'] = 'za duży';
-$lang['mu_ready'] = 'gotowy do wysłania';
-$lang['mu_done'] = 'zakończono';
-$lang['mu_fail'] = 'nie powiodło się';
-$lang['mu_authfail'] = 'sesja wygasła';
-$lang['mu_progress'] = '@PCT@% wysłano';
-$lang['mu_filetypes'] = 'Dozwolone typy plików';
-$lang['mu_info'] = 'wysłanych plików.';
-$lang['mu_lasterr'] = 'Ostatni błąd:';
$lang['recent_global'] = 'W tej chwili przeglądasz zmiany w katalogu <b>%s</b>. Możesz przejrzeć także <a href="%s">zmiany w całym wiki</a>.';
$lang['years'] = '%d lat temu';
$lang['months'] = '%d miesięcy temu';
@@ -288,3 +297,27 @@ $lang['hours'] = '%d godzin temu';
$lang['minutes'] = '%d minut temu';
$lang['seconds'] = '%d sekund temu';
$lang['wordblock'] = 'Twoje ustawienia nie zostały zapisane ponieważ zawierają niedozwoloną treść (spam).';
+$lang['media_uploadtab'] = 'Przesyłanie plików';
+$lang['media_searchtab'] = 'Szukaj';
+$lang['media_file'] = 'Plik';
+$lang['media_viewtab'] = 'Widok';
+$lang['media_edittab'] = 'Zmiana';
+$lang['media_historytab'] = 'Historia';
+$lang['media_list_thumbs'] = 'Miniatury';
+$lang['media_list_rows'] = 'Wiersze';
+$lang['media_sort_name'] = 'Nazwa';
+$lang['media_sort_date'] = 'Data';
+$lang['media_namespaces'] = 'Wybierz przestrzeń nazw';
+$lang['media_files'] = 'Pliki w %s';
+$lang['media_upload'] = 'Przesyłanie plików na %s';
+$lang['media_search'] = 'Znajdź w %s';
+$lang['media_view'] = '%s';
+$lang['media_viewold'] = '%s na %s';
+$lang['media_edit'] = 'Zmień %s';
+$lang['media_history'] = 'Historia dla %s';
+$lang['media_meta_edited'] = 'zmienione metadane';
+$lang['media_perm_read'] = 'Przepraszamy, nie masz wystarczających uprawnień do odczytu plików.';
+$lang['media_perm_upload'] = 'Przepraszamy, nie masz wystarczających uprawnień do przesyłania plików.';
+$lang['media_update'] = 'Prześlij nową wersję';
+$lang['media_restore'] = 'Odtwórz tą wersję';
+$lang['plugin_install_err'] = 'Wtyczka zainstalowana nieprawidłowo. Zmień nazwę katalogu wtyczki \'%s\' na \'%s\'.';
diff --git a/inc/lang/pt-br/lang.php b/inc/lang/pt-br/lang.php
index 066b3acaa..d6dc8f96b 100644
--- a/inc/lang/pt-br/lang.php
+++ b/inc/lang/pt-br/lang.php
@@ -54,7 +54,6 @@ $lang['btn_backtomedia'] = 'Voltar à seleção do arquivo de mídia';
$lang['btn_subscribe'] = 'Monitorar alterações';
$lang['btn_profile'] = 'Atualizar o perfil';
$lang['btn_reset'] = 'Limpar';
-$lang['btn_resendpwd'] = 'Envie-me uma nova senha';
$lang['btn_draft'] = 'Editar o rascunho';
$lang['btn_recover'] = 'Recuperar o rascunho';
$lang['btn_draftdel'] = 'Excluir o rascunho';
@@ -89,7 +88,6 @@ $lang['profnoempty'] = 'Não são permitidos nomes ou endereços de e-
$lang['profchanged'] = 'O perfil do usuário foi atualizado com sucesso.';
$lang['pwdforget'] = 'Esqueceu sua senha? Solicite outra';
$lang['resendna'] = 'Esse wiki não tem suporte para o reenvio de senhas.';
-$lang['resendpwd'] = 'Enviar a nova senha para';
$lang['resendpwdmissing'] = 'Desculpe, você deve preencher todos os campos.';
$lang['resendpwdnouser'] = 'Desculpe, não foi possível encontrar esse usuário no nosso banco de dados.';
$lang['resendpwdbadauth'] = 'Desculpe, esse código de autorização é inválido. Certifique-se de que você usou o link de confirmação inteiro.';
@@ -235,8 +233,8 @@ $lang['subscr_subscribe_error'] = 'Ocorreu um erro na adição de %s à lista de
$lang['subscr_subscribe_noaddress'] = 'Como não há nenhum endereço associado ao seu usuário, você não pode ser adicionado à lista de monitoramento';
$lang['subscr_unsubscribe_success'] = '%s foi removido da lista de monitoramento de %s';
$lang['subscr_unsubscribe_error'] = 'Ocorreu um erro na remoção de %s da lista de monitoramentos de %s';
-$lang['subscr_already_subscribed'] = '%s já está monitorando s%';
-$lang['subscr_not_subscribed'] = 's% não está monitorando s%';
+$lang['subscr_already_subscribed'] = '%s já está monitorando %s';
+$lang['subscr_not_subscribed'] = '%s não está monitorando %s';
$lang['subscr_m_not_subscribed'] = 'Você não está monitorando nem a página atual nem o espaço de nomes.';
$lang['subscr_m_new_header'] = 'Adicionar monitoramento';
$lang['subscr_m_current_header'] = 'Monitoramentos atuais';
@@ -271,21 +269,6 @@ $lang['i_pol1'] = 'Wiki público (leitura por todos, escrita e en
$lang['i_pol2'] = 'Wiki fechado (leitura, escrita e envio de arquivos somente por usuários registrados)';
$lang['i_retry'] = 'Tentar novamente';
$lang['i_license'] = 'Por favor escolha a licença que voce deseja utilizar para seu conteúdo:';
-$lang['mu_intro'] = 'Aqui você pode enviar vários arquivos de uma só vez. Clique no botão de navegação e adicione-os à fila. Pressione Enviar quando estiver pronto.';
-$lang['mu_gridname'] = 'Nome do arquivo';
-$lang['mu_gridsize'] = 'Tamanho';
-$lang['mu_gridstat'] = 'Status';
-$lang['mu_namespace'] = 'Espaço de nomes';
-$lang['mu_browse'] = 'Navegar';
-$lang['mu_toobig'] = 'muito grande';
-$lang['mu_ready'] = 'pronto para enviar';
-$lang['mu_done'] = 'completo';
-$lang['mu_fail'] = 'falhou';
-$lang['mu_authfail'] = 'a sessão expirou';
-$lang['mu_progress'] = '@PCT@% enviado';
-$lang['mu_filetypes'] = 'Tipos de arquivo permitidos';
-$lang['mu_info'] = 'arquivos enviados.';
-$lang['mu_lasterr'] = 'Erro mais recente:';
$lang['recent_global'] = 'Você está observando as alterações dentro do espaço de nomes <b>%s</b>. Também é possível ver as <a href="%s">modificações recentes no wiki inteiro</a>.';
$lang['years'] = '%d anos atrás';
$lang['months'] = '%d meses atrás';
diff --git a/inc/lang/pt/lang.php b/inc/lang/pt/lang.php
index 3c3a8d9da..a0b0f57e8 100644
--- a/inc/lang/pt/lang.php
+++ b/inc/lang/pt/lang.php
@@ -45,7 +45,6 @@ $lang['btn_backtomedia'] = 'Voltar à Selecção de Media';
$lang['btn_subscribe'] = 'Subscrever Alterações';
$lang['btn_profile'] = 'Actualizar Perfil';
$lang['btn_reset'] = 'Limpar';
-$lang['btn_resendpwd'] = 'Enviar nova senha';
$lang['btn_draft'] = 'Editar rascunho';
$lang['btn_recover'] = 'Recuperar rascunho';
$lang['btn_draftdel'] = 'Apagar rascunho';
@@ -86,7 +85,6 @@ $lang['profchanged'] = 'Perfil do utilizador actualizado com sucesso.'
$lang['pwdforget'] = 'Esqueceu a sua senha? Pedir nova senha';
$lang['resendna'] = 'Este wiki não suporta reenvio de senhas.';
-$lang['resendpwd'] = 'Enviar nova senha para';
$lang['resendpwdmissing'] = 'É preciso preencher todos os campos.';
$lang['resendpwdnouser'] = 'Não foi possível encontrar este utilizador.';
$lang['resendpwdbadauth'] = 'O código de autenticação não é válido. Por favor, assegure-se de que o link de confirmação está completo.';
@@ -161,7 +159,7 @@ $lang['mediaroot'] = 'root';
$lang['mediaupload'] = 'Carregar ficheiros para o grupo actual aqui. Para criar sub-grupos: escrever o nome do sub-grupo seguido de : antes do nome do ficheiro no campo "Carregar como".';
$lang['mediaextchange'] = 'Extensão alterada de .%s para .%s!';
$lang['reference'] = 'Referências para';
-$lang['ref_inuse'] = 'O ficheiro "%s" não pode ser removido, porque está ainda a ser usado nestes documentos:';
+$lang['ref_inuse'] = 'O ficheiro não pode ser removido, porque está ainda a ser usado nestes documentos:';
$lang['ref_hidden'] = 'Algumas referências estão em documentos para os quais não tem permissão para ler';
$lang['hits'] = 'Resultados';
$lang['quickhits'] = 'Documentos encontrados';
@@ -278,21 +276,6 @@ $lang['i_pol1'] = 'Wiki Público (ler para todos, escrever e carr
$lang['i_pol2'] = 'Wiki Fechado (ler, escrever e carregar somente para utilizadores inscritos)';
$lang['i_retry'] = 'Repetir';
$lang['i_license'] = 'Por favor escolha a licença sob a qual quer colocar o seu conteúdo:';
-$lang['mu_intro'] = 'Aqui podes enviar múltiplos ficheiros de uma vez. Clique no botão de navegação para adicioná-los na fila. Premir upload quando pronto.';
-$lang['mu_gridname'] = 'Nome do ficheiro';
-$lang['mu_gridsize'] = 'Tamanho';
-$lang['mu_gridstat'] = 'Estado';
-$lang['mu_namespace'] = 'Espaço de Nomes';
-$lang['mu_browse'] = 'Navegar';
-$lang['mu_toobig'] = 'demasiado grande';
-$lang['mu_ready'] = 'pronto para upload';
-$lang['mu_done'] = 'completo';
-$lang['mu_fail'] = 'falhou';
-$lang['mu_authfail'] = 'sessão expirada';
-$lang['mu_progress'] = '@PCT@% transferido';
-$lang['mu_filetypes'] = 'Tipos de Ficheiros Permitidos';
-$lang['mu_info'] = 'Ficheiros carregados.';
-$lang['mu_lasterr'] = 'Último erro:';
$lang['recent_global'] = 'Você está a observar as alterações dentro do espaço de nomes <b>%s</b>. Também é possível ver as <a href="%s">modificações recentes no wiki inteiro</a>.';
$lang['years'] = '%d anos atrás';
$lang['months'] = '%d meses atrás';
diff --git a/inc/lang/ro/lang.php b/inc/lang/ro/lang.php
index 91f8ebb97..41727e521 100644
--- a/inc/lang/ro/lang.php
+++ b/inc/lang/ro/lang.php
@@ -8,6 +8,8 @@
* @author Emanuel-Emeric Andrași <n30@mandrivausers.ro>
* @author Emanuel-Emeric Andraşi <em.andrasi@mandrivausers.ro>
* @author Marius OLAR <olarmariusalex@gmail.com>
+ * @author Marius Olar <olarmariusalex@yahoo.com>
+ * @author Emanuel-Emeric Andrași <em.andrasi@mandrivausers.ro>
*/
$lang['encoding'] = 'utf-8';
$lang['direction'] = 'ltr';
@@ -43,7 +45,7 @@ $lang['btn_backtomedia'] = 'Înapoi la Selecţia Mediafile';
$lang['btn_subscribe'] = 'Subscrie Modificarea Paginii';
$lang['btn_profile'] = 'Actualizează Profil';
$lang['btn_reset'] = 'Resetează';
-$lang['btn_resendpwd'] = 'Trimite parola nouă';
+$lang['btn_resendpwd'] = 'Setează o parolă nouă';
$lang['btn_draft'] = 'Editează schiţă';
$lang['btn_recover'] = 'Recuperează schiţă';
$lang['btn_draftdel'] = 'Şterge schiţă';
@@ -80,7 +82,7 @@ $lang['profnoempty'] = 'Nu sunt admise numele sau adresa de email neco
$lang['profchanged'] = 'Profilul de utilizator a fost actualizat succes.';
$lang['pwdforget'] = 'Parola uitată? Luaţi una nouă';
$lang['resendna'] = 'Această wiki nu suportă retrimiterea parolei.';
-$lang['resendpwd'] = 'Trimite parola nouă pentru';
+$lang['resendpwd'] = 'Setează o parolă nouă pentru';
$lang['resendpwdmissing'] = 'Ne pare rău, trebuie completate toate câmpurile.';
$lang['resendpwdnouser'] = 'Ne pare rău, acest utilizator nu poate fi găsit în baza de date.';
$lang['resendpwdbadauth'] = 'Ne pare rău, acest cod de autorizare nu este corect. Verificaţi dacă aţi folosit tot link-ul de confirmare.';
@@ -187,6 +189,11 @@ $lang['external_edit'] = 'editare externă';
$lang['summary'] = 'Editează sumarul';
$lang['noflash'] = 'Plugin-ul <a href="http://www.adobe.com/products/flashplayer/">Adobe Flash Plugin</a> este necesar pentru afişarea corectă a conţinutului.';
$lang['download'] = 'Bloc descărcări';
+$lang['tools'] = 'Unelte';
+$lang['user_tools'] = 'Unelte utilizator';
+$lang['site_tools'] = 'Unelte Site';
+$lang['page_tools'] = 'Unelte Pagină';
+$lang['skip_to_content'] = 'sari la conținut';
$lang['mail_newpage'] = 'pagina adăugată:';
$lang['mail_changed'] = 'page schimbată:';
$lang['mail_subscribe_list'] = 'pagini modificate în spaţiul de nume:';
@@ -257,6 +264,7 @@ $lang['subscr_style_digest'] = 'digerează email la schimbări pentru fiecare
$lang['subscr_style_list'] = 'lista paginilor schimbate de la ultimul email (la fiecare %.2f zile)';
$lang['authmodfailed'] = 'Configuraţia autentificării utilizatorului este eronată. Anunţaţi Wiki Admin-ul.';
$lang['authtempfail'] = 'Autentificarea utilizatorului este temporar indisponibilă. Anunţaţi Wiki Admin-ul.';
+$lang['authpwdexpire'] = 'Parola vă va expira în %d zile, ar trebui să o schimbați curând.';
$lang['i_chooselang'] = 'Alegeţi limba';
$lang['i_installer'] = 'DokuWiki Installer';
$lang['i_wikiname'] = 'Numele Wiki';
@@ -280,21 +288,6 @@ $lang['i_pol1'] = 'Wiki Deschisă (citeste oricine, scrie şi în
$lang['i_pol2'] = 'Wiki Închisă (citeşte, scrie şi încarcă doar utilizatorul înregistrat)';
$lang['i_retry'] = 'Încearcă din nou';
$lang['i_license'] = 'Vă rugăm alegeţi licenţa sub care doriţi să vă licenţiaţi materialul:';
-$lang['mu_intro'] = 'Aici poţi încărca mai multe fişiere simultan. Apasă butonul Răsfoieşte pentru a le adăuga. Apasă Încarcă când ai terminat.';
-$lang['mu_gridname'] = 'Numele fişierului';
-$lang['mu_gridsize'] = 'Mărime';
-$lang['mu_gridstat'] = 'Stare';
-$lang['mu_namespace'] = 'Spaţiu de nume';
-$lang['mu_browse'] = 'Răsfoieşte';
-$lang['mu_toobig'] = 'prea mare';
-$lang['mu_ready'] = 'pregătit pentru încărcare';
-$lang['mu_done'] = 'complet';
-$lang['mu_fail'] = 'eşuat';
-$lang['mu_authfail'] = 'sesiunea a expirat';
-$lang['mu_progress'] = '@PCT@% încărcat';
-$lang['mu_filetypes'] = 'Tipuri de fişiere permise';
-$lang['mu_info'] = 'fişiere încărcate';
-$lang['mu_lasterr'] = 'Ultima eroare:';
$lang['recent_global'] = 'Acum vizualizaţi modificările în interiorul numelui de spaţiu <b>%s</b>. De asemenea puteţi <a href="%s">vizualiza modificările recente ale întregului wiki</a>.';
$lang['years'] = 'acum %d ani';
$lang['months'] = 'acum %d luni';
diff --git a/inc/lang/ro/resetpwd.txt b/inc/lang/ro/resetpwd.txt
new file mode 100644
index 000000000..2eb8052f1
--- /dev/null
+++ b/inc/lang/ro/resetpwd.txt
@@ -0,0 +1,3 @@
+====== Setează parolă nouă ======
+
+Vă rugăm să introduceți o nouă parolă pentru contul dvs. pe acest wiki. \ No newline at end of file
diff --git a/inc/lang/ru/lang.php b/inc/lang/ru/lang.php
index eda838451..94af441b7 100644
--- a/inc/lang/ru/lang.php
+++ b/inc/lang/ru/lang.php
@@ -19,15 +19,15 @@
* @author Aleksandr Selivanov <alexgearbox@gmail.com>
* @author Ladyko Andrey <fylh@succexy.spb.ru>
* @author Eugene <windy.wanderer@gmail.com>
+ * @author Johnny Utah <pcpa@cyberpunk.su>
*/
$lang['encoding'] = ' utf-8';
$lang['direction'] = 'ltr';
-$lang['doublequoteopening'] = '«'; //&ldquo;
-$lang['doublequoteclosing'] = '»'; //&rdquo;
-$lang['singlequoteopening'] = '„'; //&lsquo;
-$lang['singlequoteclosing'] = '“'; //&rsquo;
-$lang['apostrophe'] = '’'; //&rsquo;
-
+$lang['doublequoteopening'] = '«';
+$lang['doublequoteclosing'] = '»';
+$lang['singlequoteopening'] = '„';
+$lang['singlequoteclosing'] = '“';
+$lang['apostrophe'] = '’';
$lang['btn_edit'] = 'Править страницу';
$lang['btn_source'] = 'Показать исходный текст';
$lang['btn_show'] = 'Показать страницу';
@@ -55,7 +55,6 @@ $lang['btn_backtomedia'] = 'Вернуться к выбору медиа
$lang['btn_subscribe'] = 'Подписаться (все правки)';
$lang['btn_profile'] = 'Профиль';
$lang['btn_reset'] = 'Сброс';
-$lang['btn_resendpwd'] = 'Выслать новый пароль';
$lang['btn_draft'] = 'Править черновик';
$lang['btn_recover'] = 'Восстановить черновик';
$lang['btn_draftdel'] = 'Удалить черновик';
@@ -63,7 +62,6 @@ $lang['btn_revert'] = 'Восстановить';
$lang['btn_register'] = 'Зарегистрироваться';
$lang['btn_apply'] = 'Применить';
$lang['btn_media'] = 'Media Manager';
-
$lang['loggedinas'] = 'Зашли как';
$lang['user'] = 'Логин';
$lang['pass'] = 'Пароль';
@@ -78,7 +76,6 @@ $lang['badlogin'] = 'Извините, неверное имя по
$lang['minoredit'] = 'Небольшие изменения';
$lang['draftdate'] = 'Черновик сохранён';
$lang['nosecedit'] = 'За это время страница была изменена и информация о секции устарела. Загружена полная версия страницы.';
-
$lang['regmissing'] = 'Извините, вам следует заполнить все поля.';
$lang['reguexists'] = 'Извините, пользователь с таким логином уже существует.';
$lang['regsuccess'] = 'Пользователь создан, пароль выслан на адрес электронной почты.';
@@ -88,24 +85,19 @@ $lang['regbadmail'] = 'Данный вами адрес электр
$lang['regbadpass'] = 'Два введённых пароля не идентичны. Пожалуйста, попробуйте ещё раз.';
$lang['regpwmail'] = 'Ваш пароль для системы «ДокуВики»';
$lang['reghere'] = 'У вас ещё нет аккаунта? Зарегистрируйтесь';
-
$lang['profna'] = 'Данная вики не поддерживает изменение профиля';
$lang['profnochange'] = 'Изменений не было внесено, профиль не обновлён.';
$lang['profnoempty'] = 'Логин и адрес электронной почты не могут быть пустыми.';
$lang['profchanged'] = 'Профиль пользователя успешно обновлён.';
-
$lang['pwdforget'] = 'Забыли пароль? Получите новый';
$lang['resendna'] = 'Данная вики не поддерживает повторную отправку пароля.';
-$lang['resendpwd'] = 'Выслать пароль для';
$lang['resendpwdmissing'] = 'Вы должны заполнить все поля формы.';
$lang['resendpwdnouser'] = 'Пользователь с таким логином не обнаружен в нашей базе данных.';
$lang['resendpwdbadauth'] = 'Извините, неверный код авторизации. Убедитесь, что вы полностью скопировали ссылку. ';
$lang['resendpwdconfirm'] = 'Ссылка для подтверждения пароля была выслана по электронной почте. ';
$lang['resendpwdsuccess'] = 'Ваш новый пароль был выслан по электронной почте.';
-
$lang['license'] = 'За исключением случаев, когда указано иное, содержимое этой вики предоставляется на условиях следующей лицензии:';
$lang['licenseok'] = 'Примечание: редактируя эту страницу, вы соглашаетесь на использование своего вклада на условиях следующей лицензии:';
-
$lang['searchmedia'] = 'Поиск по имени файла:';
$lang['searchmedia_in'] = 'Поиск в %s';
$lang['txt_upload'] = 'Выберите файл для загрузки';
@@ -113,7 +105,7 @@ $lang['txt_filename'] = 'Введите имя файла в вики (
$lang['txt_overwrt'] = 'Перезаписать существующий файл';
$lang['lockedby'] = 'В данный момент заблокирован';
$lang['lockexpire'] = 'Блокировка истекает в';
-$lang['js']['willexpire'] = 'Ваша блокировка редактирования этой страницы истекает в течение минуты.\nЧтобы избежать конфликтов и сбросить таймер блокировки, нажмите кнопку просмотра.';
+$lang['js']['willexpire'] = 'Ваша блокировка этой страницы на редактирование истекает в течении минуты.\nЧтобы предотвратить конфликты используйте кнопку "Просмотр" для сброса таймера блокировки.';
$lang['js']['notsavedyet'] = 'Несохранённые изменения будут потеряны. Вы действительно хотите продолжить?';
$lang['js']['searchmedia'] = 'Поиск файлов';
$lang['js']['keepopen'] = 'Не закрывать окно после выбора';
@@ -143,22 +135,19 @@ $lang['js']['nosmblinks'] = 'Ссылка на сетевые катало
$lang['js']['linkwiz'] = 'Мастер ссылок';
$lang['js']['linkto'] = 'Ссылка на:';
$lang['js']['del_confirm'] = 'Вы на самом деле желаете удалить выбранное?';
-$lang['js']['willexpire'] = 'Ваша блокировка этой страницы на редактирование истекает в течении минуты.\nЧтобы предотвратить конфликты используйте кнопку "Просмотр" для сброса таймера блокировки.';
-$lang['js']['restore_confirm'] = 'Действительно восстановить эту версию?';
-$lang['js']['media_diff'] = 'Просмотр отличий:';
-$lang['js']['media_diff_both'] = 'Рядом';
-$lang['js']['media_diff_opacity'] = 'Наложением';
+$lang['js']['restore_confirm'] = 'Действительно восстановить эту версию?';
+$lang['js']['media_diff'] = 'Просмотр отличий:';
+$lang['js']['media_diff_both'] = 'Рядом';
+$lang['js']['media_diff_opacity'] = 'Наложением';
$lang['js']['media_diff_portions'] = 'Частями';
-$lang['js']['media_select'] = 'Выбрать файлы…';
-$lang['js']['media_upload_btn'] = 'Загрузить';
-$lang['js']['media_done_btn'] = 'Готово';
-$lang['js']['media_drop'] = 'Переместите файлы сюда для загрузки';
-$lang['js']['media_cancel'] = 'отменить';
-$lang['js']['media_overwrt'] = 'Перезаписать существующие файлы';
-
+$lang['js']['media_select'] = 'Выбрать файлы…';
+$lang['js']['media_upload_btn'] = 'Загрузить';
+$lang['js']['media_done_btn'] = 'Готово';
+$lang['js']['media_drop'] = 'Переместите файлы сюда для загрузки';
+$lang['js']['media_cancel'] = 'отменить';
+$lang['js']['media_overwrt'] = 'Перезаписать существующие файлы';
$lang['rssfailed'] = 'Произошла ошибка при получении следующей новостной ленты: ';
$lang['nothingfound'] = 'Ничего не найдено.';
-
$lang['mediaselect'] = 'Выбор медиафайла';
$lang['fileupload'] = 'Загрузка медиафайла';
$lang['uploadsucc'] = 'Загрузка произведена успешно';
@@ -183,7 +172,6 @@ $lang['mediaextchange'] = 'Расширение изменилось: с
$lang['reference'] = 'Ссылки для';
$lang['ref_inuse'] = 'Этот файл не может быть удалён, так как он используется на следующих страницах:';
$lang['ref_hidden'] = 'Некоторые ссылки находятся на страницах, на чтение которых у вас нет прав доступа';
-
$lang['hits'] = 'соответствий';
$lang['quickhits'] = 'Соответствия в названиях страниц';
$lang['toc'] = 'Содержание';
@@ -207,18 +195,20 @@ $lang['external_edit'] = 'внешнее изменение';
$lang['summary'] = 'Сводка изменений';
$lang['noflash'] = 'Для просмотра этого содержимого требуется <a href="http://www.adobe.com/products/flashplayer/">Adobe Flash Plugin</a>.';
$lang['download'] = 'Скачать код';
-
+$lang['tools'] = 'Инструменты';
+$lang['user_tools'] = 'Инструменты пользователя';
+$lang['site_tools'] = 'Инструменты сайта';
+$lang['page_tools'] = 'Инструменты страницы';
+$lang['skip_to_content'] = 'Перейти к содержанию';
$lang['mail_newpage'] = 'страница добавлена:';
$lang['mail_changed'] = 'страница изменена:';
$lang['mail_subscribe_list'] = 'изменились страницы в пространстве имён:';
$lang['mail_new_user'] = 'новый пользователь:';
$lang['mail_upload'] = 'файл закачан:';
-
$lang['changes_type'] = 'Посмотреть изменения';
$lang['pages_changes'] = 'Страниц';
$lang['media_changes'] = 'Медиа файлов';
$lang['both_changes'] = 'И страниц и медиа файлов';
-
$lang['qb_bold'] = 'Полужирный';
$lang['qb_italic'] = 'Курсив';
$lang['qb_underl'] = 'Подчёркнутый';
@@ -243,11 +233,8 @@ $lang['qb_media'] = 'Добавить изображения или
$lang['qb_sig'] = 'Вставить подпись';
$lang['qb_smileys'] = 'Смайлики';
$lang['qb_chars'] = 'Специальные символы';
-
$lang['upperns'] = 'Перейти в родительское пространство имён';
-
$lang['admin_register'] = 'Добавить пользователя';
-
$lang['metaedit'] = 'Править метаданные';
$lang['metasaveerr'] = 'Ошибка записи метаданных';
$lang['metasaveok'] = 'Метаданные сохранены';
@@ -265,30 +252,24 @@ $lang['img_keywords'] = 'Ключевые слова';
$lang['img_width'] = 'Ширина';
$lang['img_height'] = 'Высота';
$lang['img_manager'] = 'Просмотр в media manager';
-
-$lang['subscr_subscribe_success'] = 'Добавлен %s в подписку на %s';
-$lang['subscr_subscribe_error'] = 'Невозможно добавить %s в подписку на %s';
+$lang['subscr_subscribe_success'] = 'Добавлен %s в подписку на %s';
+$lang['subscr_subscribe_error'] = 'Невозможно добавить %s в подписку на %s';
$lang['subscr_subscribe_noaddress'] = 'Нет адреса электронной почты, сопоставленного с вашей учётной записью. Вы не можете подписаться на рассылку';
$lang['subscr_unsubscribe_success'] = 'Удалён %s из подписки на %s';
-$lang['subscr_unsubscribe_error'] = 'Ошибка удаления %s из подписки на %s';
-$lang['subscr_already_subscribed'] = '%s уже подписан на %s';
-$lang['subscr_not_subscribed'] = '%s не подписан на %s';
-// Manage page for subscriptions
-$lang['subscr_m_not_subscribed'] = 'Вы не подписаны на текущую страницу или пространство имён.';
-$lang['subscr_m_new_header'] = 'Добавить подписку';
-$lang['subscr_m_current_header'] = 'Текущие подписки';
-$lang['subscr_m_unsubscribe'] = 'Отменить подписку';
-$lang['subscr_m_subscribe'] = 'Подписаться';
-$lang['subscr_m_receive'] = 'Получить';
-$lang['subscr_style_every'] = 'уведомлять о каждом изменении';
-$lang['subscr_style_digest'] = 'сводка изменений по каждой странице';
-$lang['subscr_style_list'] = 'перечислять изменившиеся страницы с прошлого уведомления';
-
-/* auth.class language support */
+$lang['subscr_unsubscribe_error'] = 'Ошибка удаления %s из подписки на %s';
+$lang['subscr_already_subscribed'] = '%s уже подписан на %s';
+$lang['subscr_not_subscribed'] = '%s не подписан на %s';
+$lang['subscr_m_not_subscribed'] = 'Вы не подписаны на текущую страницу или пространство имён.';
+$lang['subscr_m_new_header'] = 'Добавить подписку';
+$lang['subscr_m_current_header'] = 'Текущие подписки';
+$lang['subscr_m_unsubscribe'] = 'Отменить подписку';
+$lang['subscr_m_subscribe'] = 'Подписаться';
+$lang['subscr_m_receive'] = 'Получить';
+$lang['subscr_style_every'] = 'уведомлять о каждом изменении';
+$lang['subscr_style_digest'] = 'сводка изменений по каждой странице';
+$lang['subscr_style_list'] = 'перечислять изменившиеся страницы с прошлого уведомления';
$lang['authmodfailed'] = 'Неправильная конфигурация аутентификации пользователя. Пожалуйста, сообщите об этом своему администратору вики.';
$lang['authtempfail'] = 'Аутентификация пользователей временно недоступна. Если проблема продолжается какое-то время, пожалуйста, сообщите об этом своему администратору вики.';
-
-/* installer strings */
$lang['i_chooselang'] = 'Выберите свой язык/Choose your language';
$lang['i_installer'] = 'Установка «ДокуВики»';
$lang['i_wikiname'] = 'Название вики';
@@ -314,23 +295,6 @@ $lang['i_pol1'] = 'Общедоступная вики (чтен
$lang['i_pol2'] = 'Закрытая вики (чтение, запись и загрузка файлов только для зарегистрированных пользователей)';
$lang['i_retry'] = 'Повторить попытку';
$lang['i_license'] = 'Пожалуйста, выберите тип лицензии для своей вики:';
-
-$lang['mu_intro'] = 'Здесь вы можете загрузить несколько файлов сразу. Кликните на «обзор», чтобы добавить их в список. Нажмите «загрузить», когда будете готовы.';
-$lang['mu_gridname'] = 'Имя файла';
-$lang['mu_gridsize'] = 'Размер';
-$lang['mu_gridstat'] = 'Статус';
-$lang['mu_namespace'] = 'Пространство имён';
-$lang['mu_browse'] = 'Обзор';
-$lang['mu_toobig'] = 'слишком большой';
-$lang['mu_ready'] = 'готово к загрузке';
-$lang['mu_done'] = 'завершено';
-$lang['mu_fail'] = 'провалено';
-$lang['mu_authfail'] = 'истекло время сессии';
-$lang['mu_progress'] = '@PCT@% загружено';
-$lang['mu_filetypes'] = 'Допустимые типы файлов';
-$lang['mu_info'] = 'файлов загружено.';
-$lang['mu_lasterr'] = 'Последняя ошибка:';
-
$lang['recent_global'] = 'Вы просматриваете изменения в пространстве имён <b>%s</b>. Вы можете также <a href="%s">просмотреть недавние изменения во всей вики</a>.';
$lang['years'] = '%d лет назад';
$lang['months'] = '%d месяц(ев) назад';
@@ -339,24 +303,29 @@ $lang['days'] = '%d дней назад';
$lang['hours'] = '%d час(ов) назад';
$lang['minutes'] = '%d минут назад';
$lang['seconds'] = '%d секунд назад';
-
$lang['wordblock'] = 'Ваши изменения не сохранены, поскольку они содержат блокируемые слова (спам).';
-
$lang['media_uploadtab'] = 'Загрузка';
$lang['media_searchtab'] = 'Поиск';
+$lang['media_file'] = 'Файл';
$lang['media_viewtab'] = 'Просмотр';
$lang['media_edittab'] = 'Правка';
$lang['media_historytab'] = 'История';
+$lang['media_list_thumbs'] = 'Миниатюры';
+$lang['media_list_rows'] = 'Строки';
$lang['media_sort_name'] = 'Сортировка по имени';
$lang['media_sort_date'] = 'Сортировка по дате';
+$lang['media_namespaces'] = 'Выберите каталог';
+$lang['media_files'] = 'Файлы в %s';
$lang['media_upload'] = 'Загрузка в пространство имён <strong>%s</strong>.';
$lang['media_search'] = 'Поиск в пространстве имён <strong>%s</strong>.';
$lang['media_view'] = '%s';
+$lang['media_viewold'] = '%s в %s
+';
$lang['media_edit'] = 'Правка %s';
+$lang['media_history'] = 'История %s';
$lang['media_meta_edited'] = 'метаданные изменены';
$lang['media_perm_read'] = 'Извините, у Вас недостаточно прав для чтения файлов.';
$lang['media_perm_upload'] = 'Извините, у Вас недостаточно прав для загрузки файлов.';
$lang['media_update'] = 'Загрузить новую версию';
$lang['media_restore'] = 'Восстановить эту версию';
-
-$lang['plugin_install_err'] = "Плагин установлен некорректно. Переименуйте папку плагина из '%s' в '%s'.";
+$lang['plugin_install_err'] = 'Плагин установлен некорректно. Переименуйте папку плагина из \'%s\' в \'%s\'.';
diff --git a/inc/lang/sk/lang.php b/inc/lang/sk/lang.php
index c0d45da58..85e899b06 100644
--- a/inc/lang/sk/lang.php
+++ b/inc/lang/sk/lang.php
@@ -38,11 +38,10 @@ $lang['btn_update'] = 'Aktualizovať';
$lang['btn_delete'] = 'Zmazať';
$lang['btn_back'] = 'Späť';
$lang['btn_backlink'] = 'Spätné odkazy';
-$lang['btn_backtomedia'] = 'Späť na výber média';
+$lang['btn_backtomedia'] = 'Späť na výber súboru';
$lang['btn_subscribe'] = 'Sledovať zmeny';
$lang['btn_profile'] = 'Aktualizovať profil';
$lang['btn_reset'] = 'Zrušiť';
-$lang['btn_resendpwd'] = 'Poslať nové heslo';
$lang['btn_draft'] = 'Upraviť koncept';
$lang['btn_recover'] = 'Obnoviť koncept';
$lang['btn_draftdel'] = 'Zmazať koncept';
@@ -79,7 +78,6 @@ $lang['profnoempty'] = 'Prázdne meno alebo mailová adresa nie sú po
$lang['profchanged'] = 'Užívateľský účet úspešne zmenený.';
$lang['pwdforget'] = 'Zabudli ste heslo? Získajte nové!';
$lang['resendna'] = 'Táto wiki nepodporuje opätovné zasielanie hesla.';
-$lang['resendpwd'] = 'Pošli nové heslo pre';
$lang['resendpwdmissing'] = 'Prepáčte, musíte vyplniť všetky polia.';
$lang['resendpwdnouser'] = 'Prepáčte, nemôžeme nájsť zadaného užívateľa v databáze.';
$lang['resendpwdbadauth'] = 'Prepáčte, tento autorizačný kód nie je platný. Uistite sa, či ste použili celý autorizačný odkaz.';
@@ -139,8 +137,8 @@ $lang['js']['media_cancel'] = 'odstrániť';
$lang['js']['media_overwrt'] = 'Prepísať existujúce súbory';
$lang['rssfailed'] = 'Nastala chyba pri vytváraní tohto RSS: ';
$lang['nothingfound'] = 'Nič nenájdené.';
-$lang['mediaselect'] = 'Výber dokumentu';
-$lang['fileupload'] = 'Nahrávanie dokumentu';
+$lang['mediaselect'] = 'Výber súboru';
+$lang['fileupload'] = 'Nahrávanie súboru';
$lang['uploadsucc'] = 'Prenos prebehol v poriadku';
$lang['uploadfail'] = 'Chyba pri nahrávaní. Možno kvôli zle nastaveným právam?';
$lang['uploadwrong'] = 'Prenos súboru s takouto príponou nie je dovolený.';
@@ -193,7 +191,7 @@ $lang['mail_new_user'] = 'nový užívateľ:';
$lang['mail_upload'] = 'nahraný súbor:';
$lang['changes_type'] = 'Prehľad zmien';
$lang['pages_changes'] = 'Stránok';
-$lang['media_changes'] = 'Média súborov';
+$lang['media_changes'] = 'Súbory';
$lang['both_changes'] = 'Stránok spolu s média súbormi';
$lang['qb_bold'] = 'Tučné';
$lang['qb_italic'] = 'Kurzíva';
@@ -278,21 +276,6 @@ $lang['i_pol1'] = 'Verejná Wiki (čítanie pre každého, zápis
$lang['i_pol2'] = 'Uzatvorená Wiki (čítanie, zápis a nahrávanie len pre registrovaných užívateľov)';
$lang['i_retry'] = 'Skúsiť znovu';
$lang['i_license'] = 'Vyberte licenciu, pod ktorou chcete uložiť váš obsah:';
-$lang['mu_intro'] = 'Na tomto mieste môžete nahrávať viac súborov súčasne. Tlačidlom Prehľadávať pridáte súbory do zoznamu. Tlačidlom Nahrať vykonáte prenos súborov.';
-$lang['mu_gridname'] = 'Názov súboru';
-$lang['mu_gridsize'] = 'Veľkosť';
-$lang['mu_gridstat'] = 'Status';
-$lang['mu_namespace'] = 'Menný priestor';
-$lang['mu_browse'] = 'Prehľadávať';
-$lang['mu_toobig'] = 'príliš veľký';
-$lang['mu_ready'] = 'pripravený na nahratie';
-$lang['mu_done'] = 'dokončený';
-$lang['mu_fail'] = 'neúspešný';
-$lang['mu_authfail'] = 'spojenie stratilo platnosť';
-$lang['mu_progress'] = '@PCT@% nahraných';
-$lang['mu_filetypes'] = 'Povolené typy súborov';
-$lang['mu_info'] = 'nahraných súborov.';
-$lang['mu_lasterr'] = 'Posledná chyba:';
$lang['recent_global'] = 'Práve prehliadate zmeny v mennom priestore <b>%s</b>. Môžete si tiež pozrieť <a href="%s">aktuálne zmeny celej wiki</a>.';
$lang['years'] = 'pred %d rokmi';
$lang['months'] = 'pred %d mesiacmi';
diff --git a/inc/lang/sl/lang.php b/inc/lang/sl/lang.php
index 9acf13504..b34ab67e4 100644
--- a/inc/lang/sl/lang.php
+++ b/inc/lang/sl/lang.php
@@ -43,11 +43,13 @@ $lang['btn_backtomedia'] = 'Nazaj na izbiro predstavnih datotek';
$lang['btn_subscribe'] = 'Urejanje naročnin';
$lang['btn_profile'] = 'Posodobi profil';
$lang['btn_reset'] = 'Ponastavi';
-$lang['btn_resendpwd'] = 'Pošlji novo geslo';
$lang['btn_draft'] = 'Uredi osnutek';
$lang['btn_recover'] = 'Obnovi osnutek';
$lang['btn_draftdel'] = 'Izbriši osnutek';
$lang['btn_revert'] = 'Povrni';
+$lang['btn_register'] = 'Prijava';
+$lang['btn_apply'] = 'Uveljavi';
+$lang['btn_media'] = 'Urejevalnik predstavnih vsebin';
$lang['loggedinas'] = 'Prijava kot';
$lang['user'] = 'Uporabniško ime';
$lang['pass'] = 'Geslo';
@@ -57,7 +59,6 @@ $lang['passchk'] = 'Ponovi novo geslo';
$lang['remember'] = 'Zapomni si me';
$lang['fullname'] = 'Pravo ime';
$lang['email'] = 'Elektronski naslov';
-$lang['register'] = 'Vpis računa';
$lang['profile'] = 'Uporabniški profil';
$lang['badlogin'] = 'Uporabniško ime ali geslo je napačno.';
$lang['minoredit'] = 'Manjše spremembe';
@@ -72,13 +73,12 @@ $lang['regbadmail'] = 'Videti je, da je naveden elektronski naslov ne
$lang['regbadpass'] = 'Gesli nista enaki. Poskusite znova.';
$lang['regpwmail'] = 'Geslo za DokuWiki';
$lang['reghere'] = 'Nimate še računa? Vpišite se za nov račun.';
-$lang['profna'] = 'Wiki ne podpira spreminjanja profila.';
+$lang['profna'] = 'DokuWiki ne podpira spreminjanja profila.';
$lang['profnochange'] = 'Brez sprememb.';
$lang['profnoempty'] = 'Prazno polje elektronskega naslova ali imena ni dovoljeno.';
$lang['profchanged'] = 'Uporabniški profil je uspešno posodobljen.';
$lang['pwdforget'] = 'Ali ste pozabili geslo? Pridobite si novo geslo.';
-$lang['resendna'] = 'Wiki ne podpira možnosti ponovnega pošiljanja gesel.';
-$lang['resendpwd'] = 'Pošlji novo geslo za';
+$lang['resendna'] = 'DokuWiki ne podpira možnosti ponovnega pošiljanja gesel.';
$lang['resendpwdmissing'] = 'Izpolniti je treba vsa polja.';
$lang['resendpwdnouser'] = 'Podanega uporabniškega imena v podatkovni zbirki ni mogoče najti.';
$lang['resendpwdbadauth'] = 'Koda za overitev ni prava. Prepričajte se, da ste uporabili celotno povezavo za potrditev.';
@@ -93,7 +93,7 @@ $lang['txt_filename'] = 'Pošlji z imenom (izborno)';
$lang['txt_overwrt'] = 'Prepiši obstoječo datoteko';
$lang['lockedby'] = 'Trenutno je zaklenjeno s strani';
$lang['lockexpire'] = 'Zaklep preteče ob';
-$lang['js']['willexpire'] = 'Zaklep za urejevanje bo pretekel čez eno minuto.\nV izogib sporom, uporabite predogled, da se merilnik časa za zaklep ponastavi.';
+$lang['js']['willexpire'] = 'Zaklep za urejevanje bo pretekel čez eno minuto.\nV izogib sporom, uporabite predogled, da se merilnik časa za zaklep ponastavi.';
$lang['js']['notsavedyet'] = 'Neshranjene spremembe bodo izgubljene.';
$lang['js']['searchmedia'] = 'Poišči datoteke';
$lang['js']['keepopen'] = 'Od izbiri ohrani okno odprto';
@@ -123,6 +123,16 @@ $lang['js']['nosmblinks'] = 'Povezovanje do souporabnih datotek sistema Win
$lang['js']['linkwiz'] = 'Čarovnik za povezave';
$lang['js']['linkto'] = 'Poveži na:';
$lang['js']['del_confirm'] = 'Ali naj se res izbrišejo izbrani predmeti?';
+$lang['js']['restore_confirm'] = 'Ali naj se koda obnovi na to različico?';
+$lang['js']['media_diff'] = 'Razlike:';
+$lang['js']['media_diff_both'] = 'Eno ob drugem';
+$lang['js']['media_diff_opacity'] = 'Prosojno';
+$lang['js']['media_select'] = 'Izbor datotek ...';
+$lang['js']['media_upload_btn'] = 'Naloži';
+$lang['js']['media_done_btn'] = 'Končano';
+$lang['js']['media_drop'] = 'Spusti datoteke za nalaganje.';
+$lang['js']['media_cancel'] = 'odstrani';
+$lang['js']['media_overwrt'] = 'Prepiši obstoječe datoteke';
$lang['rssfailed'] = 'Prišlo je do napake med pridobivanjem vira: ';
$lang['nothingfound'] = 'Ni najdenih predmetov.';
$lang['mediaselect'] = 'Predstavne datoteke';
@@ -157,6 +167,9 @@ $lang['yours'] = 'Vaša različica';
$lang['diff'] = 'Pokaži razlike s trenutno različico';
$lang['diff2'] = 'Pokaži razlike med izbranimi različicami.';
$lang['difflink'] = 'Poveži s tem pogledom primerjave.';
+$lang['diff_type'] = 'Razlike:';
+$lang['diff_inline'] = 'V besedilu';
+$lang['diff_side'] = 'Eno ob drugem';
$lang['line'] = 'Vrstica';
$lang['breadcrumb'] = 'Sled';
$lang['youarehere'] = 'Trenutno dejavna stran';
@@ -169,11 +182,20 @@ $lang['external_edit'] = 'urejanje v zunanjem urejevalniku';
$lang['summary'] = 'Povzetek urejanja';
$lang['noflash'] = 'Za prikaz vsebine je treba namestiti <a href="http://www.adobe.com/products/flashplayer/">Adobe Flash Plugin</a>';
$lang['download'] = 'Naloži izrezek';
+$lang['tools'] = 'Orodja';
+$lang['user_tools'] = 'Uporabniška orodja';
+$lang['site_tools'] = 'Orodja spletišča';
+$lang['page_tools'] = 'Orodja strani';
+$lang['skip_to_content'] = 'preskoči na vsebino';
$lang['mail_newpage'] = '[DokuWiki] stran dodana:';
$lang['mail_changed'] = '[DokuWiki] stran spremenjena:';
$lang['mail_subscribe_list'] = 'strani s spremenjenim imenom:';
$lang['mail_new_user'] = 'nov uporabnik:';
$lang['mail_upload'] = 'naložena datoteka:';
+$lang['changes_type'] = 'Poglej spremembe';
+$lang['pages_changes'] = 'Strani';
+$lang['media_changes'] = 'Predstavne datoteke';
+$lang['both_changes'] = 'Strani in predstavne datoteke';
$lang['qb_bold'] = 'Krepko besedilo';
$lang['qb_italic'] = 'Ležeče besedilo';
$lang['qb_underl'] = 'Podčrtano besedilo';
@@ -214,6 +236,9 @@ $lang['img_copyr'] = 'Avtorska pravica';
$lang['img_format'] = 'Zapis';
$lang['img_camera'] = 'Fotoaparat';
$lang['img_keywords'] = 'Ključne besede';
+$lang['img_width'] = 'Širina';
+$lang['img_height'] = 'Višina';
+$lang['img_manager'] = 'Poglej v urejevalniku predstavnih vsebin';
$lang['subscr_subscribe_success'] = 'Uporabniški račun %s je dodan na seznam naročnin na %s';
$lang['subscr_subscribe_error'] = 'Napaka med dodajanjem %s na seznam naročnin na %s';
$lang['subscr_subscribe_noaddress'] = 'S trenutnimi prijavnimi podatki ni povezanega elektronskega naslova, zato uporabniškega računa ni mogoče dodati na seznam naročnikov.';
@@ -254,21 +279,6 @@ $lang['i_pol1'] = 'Javni Wiki (branje za vse, zapis in nalaganje
$lang['i_pol2'] = 'Zaprt Wiki (berejo in urejajo lahko le prijavljeni uporabniki)';
$lang['i_retry'] = 'Ponovni poskus';
$lang['i_license'] = 'Izbor dovoljenja objave vsebine:';
-$lang['mu_intro'] = 'Naložiti je mogoče več datotek hkrati. S klikom na gumb "Prebrskaj", jih je mogoče dodati v vrsto. S klikom na povezavo "naloži" bodo datoteke poslane na strežnik.';
-$lang['mu_gridname'] = 'Ime datoteke';
-$lang['mu_gridsize'] = 'Velikost';
-$lang['mu_gridstat'] = 'Stanje';
-$lang['mu_namespace'] = 'Imenski prostor';
-$lang['mu_browse'] = 'Prebrskaj';
-$lang['mu_toobig'] = 'prevelika datoteka';
-$lang['mu_ready'] = 'pripravljena na pošiljanje';
-$lang['mu_done'] = 'končano';
-$lang['mu_fail'] = 'ni uspelo';
-$lang['mu_authfail'] = 'seja je potekla';
-$lang['mu_progress'] = '@PCT@% je poslano';
-$lang['mu_filetypes'] = 'Dovoljene vrste datotek';
-$lang['mu_info'] = 'poslanih datotek.';
-$lang['mu_lasterr'] = 'Zadnja napaka:';
$lang['recent_global'] = 'Trenutno so prikazane spremembe znotraj imenskega prostora <b>%s</b>. Mogoče si je ogledati tudi spremembe <a href="%s">celotnega sistema Wiki</a>.';
$lang['years'] = '%d let nazaj';
$lang['months'] = '%d mesecev nazaj';
@@ -278,3 +288,27 @@ $lang['hours'] = '%d ur nazaj';
$lang['minutes'] = '%d minut nazaj';
$lang['seconds'] = '%d sekund nazaj';
$lang['wordblock'] = 'Spremembe niso shranjene, ker je v vsebini navedeno neželeno besedilo (spam).';
+$lang['media_uploadtab'] = 'Naloži';
+$lang['media_searchtab'] = 'Poišči';
+$lang['media_file'] = 'Datoteka';
+$lang['media_viewtab'] = 'Pogled';
+$lang['media_edittab'] = 'Uredi';
+$lang['media_historytab'] = 'Zgodovina';
+$lang['media_list_thumbs'] = 'Sličice';
+$lang['media_list_rows'] = 'Vrstice';
+$lang['media_sort_name'] = 'Ime';
+$lang['media_sort_date'] = 'Datum';
+$lang['media_namespaces'] = 'Izbor imenskega prostora';
+$lang['media_files'] = 'Datoteke v %s';
+$lang['media_upload'] = 'Naloži v %s';
+$lang['media_search'] = 'Poišči v %s';
+$lang['media_view'] = '%s';
+$lang['media_viewold'] = '%s pri %s';
+$lang['media_edit'] = 'Uredi %s';
+$lang['media_history'] = 'Zgodovina %s';
+$lang['media_meta_edited'] = 'metapodatki so urejeni';
+$lang['media_perm_read'] = 'Ni ustreznih dovoljenj za branje datotek.';
+$lang['media_perm_upload'] = 'Ni ustreznih dovoljenj za nalaganje datotek.';
+$lang['media_update'] = 'Naloži novo različico';
+$lang['media_restore'] = 'Obnovi to različico';
+$lang['plugin_install_err'] = 'Vstavek ni pravilno nameščen. Preimenujte mapo vstavka\'%s\' v \'%s\'.';
diff --git a/inc/lang/sl/locked.txt b/inc/lang/sl/locked.txt
index d51e940b7..cc693d3fa 100644
--- a/inc/lang/sl/locked.txt
+++ b/inc/lang/sl/locked.txt
@@ -1,3 +1,3 @@
====== Stran je zaklenjena ======
-Stran je zaklenjenjena za urejanje. Počakati je treba, da zaklep strani poteče.
+Stran je zaklenjena za urejanje. Počakati je treba, da zaklep strani poteče.
diff --git a/inc/lang/sl/stopwords.txt b/inc/lang/sl/stopwords.txt
index 5d61539e7..8eed2daa6 100644
--- a/inc/lang/sl/stopwords.txt
+++ b/inc/lang/sl/stopwords.txt
@@ -1,7 +1,7 @@
# To je seznam besed, ki jih ustvarjalnik kazala prezre. Seznam je sestavljen iz
-# besede, ki so zapisane vsaka v svoji vrstici. Datoteka mora biti zapisana s konnim
-# UNIX znakom vrstice. Besede kraje od treh znakov so iz kazala izloene samodejno
-# zaradi preglednosti. Seznam se s bo s asom spreminjal in dopolnjeval.
+# besede, ki so zapisane vsaka v svoji vrstici. Datoteka mora biti zapisana s končnim
+# UNIX znakom vrstice. Besede krajše od treh znakov so iz kazala izločene samodejno
+# zaradi preglednosti. Seznam se s bo s časom spreminjal in dopolnjeval.
moja
moje
moji
diff --git a/inc/lang/sq/lang.php b/inc/lang/sq/lang.php
index 87d0f30b5..0e56b89d9 100644
--- a/inc/lang/sq/lang.php
+++ b/inc/lang/sq/lang.php
@@ -44,7 +44,6 @@ $lang['btn_backtomedia'] = 'Mbrapa tek Përzgjedhja e Media-ve';
$lang['btn_subscribe'] = 'Menaxho Abonimet';
$lang['btn_profile'] = 'Përditëso Profilin';
$lang['btn_reset'] = 'Rivendos';
-$lang['btn_resendpwd'] = 'Dërgo fjalëkalim të ri';
$lang['btn_draft'] = 'Redakto skicën';
$lang['btn_recover'] = 'Rekupero skicën';
$lang['btn_draftdel'] = 'Fshi skicën';
@@ -79,7 +78,6 @@ $lang['profnoempty'] = 'Një emër bosh ose adresë email-i bosh nuk l
$lang['profchanged'] = 'Profili i përdoruesit u përditësua me sukses.';
$lang['pwdforget'] = 'E harruat fjalëkalimin? Merni një të ri';
$lang['resendna'] = 'Ky wiki nuk e lejon ridërgimin e fjalëkalimeve.';
-$lang['resendpwd'] = 'Dërgo një fjalëkalim të ri për';
$lang['resendpwdmissing'] = 'Na vjen keq, duhet t\'i plotësoni të gjitha fushat.';
$lang['resendpwdnouser'] = 'Na vjen keq, nuk mund ta gjejmë këtë përdorues në bazën tonë të të dhënave.';
$lang['resendpwdbadauth'] = 'Na vjen keq, ky kod autorizimi nuk është i vlefshëm. Sigurohuni që përdoret linkun e plotë të konfirmimit.';
@@ -232,21 +230,6 @@ $lang['i_pol0'] = 'Wiki i Hapur (lexim, shkrim, ngarkim për këd
$lang['i_pol1'] = 'Wiki Publike (lexim për këdo, shkrim dhe ngarkim për përdoruesit e regjistruar)';
$lang['i_pol2'] = 'Wiki e Mbyllur (lexim, shkrim, ngarkim vetëm për përdoruesit e regjistruar)';
$lang['i_retry'] = 'Provo Përsëri';
-$lang['mu_intro'] = 'Këtu mund të ngarkoni disa skedarë njëkohësisht. Klikoni butonin e shfletuesit për t\'i shtuar ata në radhë. Klikoni Ngarko kur të keni mbaruar.';
-$lang['mu_gridname'] = 'Emri Skedari';
-$lang['mu_gridsize'] = 'Madhësia';
-$lang['mu_gridstat'] = 'Statusi';
-$lang['mu_namespace'] = 'Hapësira Emrit';
-$lang['mu_browse'] = 'Shfleto';
-$lang['mu_toobig'] = 'shumë i/e madhe';
-$lang['mu_ready'] = 'gati për ngarkim';
-$lang['mu_done'] = 'përfundoi';
-$lang['mu_fail'] = 'dështoi';
-$lang['mu_authfail'] = 'sesioni skadoi';
-$lang['mu_progress'] = '@PCT@% u ngarkua';
-$lang['mu_filetypes'] = 'Tipet e Skedarëve të Lejuar';
-$lang['mu_info'] = 'skedarët e ngarkuar';
-$lang['mu_lasterr'] = 'Gabimi i fundit:';
$lang['recent_global'] = 'Momentalisht jeni duke parë ndryshimet brenda hapësirës së emrit <b>%s</b>. Gjithashtu mund <a href="%s">të shihni ndryshimet më të fundit në të gjithë wiki-n</a>.';
$lang['years'] = '%d vite më parë';
$lang['months'] = '%d muaj më parë';
diff --git a/inc/lang/sr/lang.php b/inc/lang/sr/lang.php
index 22bcf4e33..a53f14ac9 100644
--- a/inc/lang/sr/lang.php
+++ b/inc/lang/sr/lang.php
@@ -41,7 +41,6 @@ $lang['btn_backtomedia'] = 'Врати се на избор медијск
$lang['btn_subscribe'] = 'Пријави се на измене';
$lang['btn_profile'] = 'Ажурирај профил';
$lang['btn_reset'] = 'Поништи';
-$lang['btn_resendpwd'] = 'Пошаљи нову лозинку';
$lang['btn_draft'] = 'Измени нацрт';
$lang['btn_recover'] = 'Опорави нацрт';
$lang['btn_draftdel'] = 'Обриши нацрт';
@@ -76,7 +75,6 @@ $lang['profnoempty'] = 'Није дозвољено оставити
$lang['profchanged'] = 'Кориснички профил је ажуриран.';
$lang['pwdforget'] = 'Заборавили сте лозинку? Направите нову';
$lang['resendna'] = 'Овај вики не дозвољава слање лозинки.';
-$lang['resendpwd'] = 'Пошаљи нову лозинку за';
$lang['resendpwdmissing'] = 'Жао ми је, сва поља морају бити попуњена.';
$lang['resendpwdnouser'] = 'Жао ми је, овај корисник не постоји у нашој бази.';
$lang['resendpwdbadauth'] = 'Жао ми је, потврдни код није исправан. Проверите да ли сте користили комплетан потврдни линк.';
@@ -254,21 +252,6 @@ $lang['i_pol1'] = 'Јавни вики (читање за све,
$lang['i_pol2'] = 'Затворени вики (читање, писање и слање датотека само за регистроване кориснике)';
$lang['i_retry'] = 'Понови';
$lang['i_license'] = 'Молимо вас, одаберите лиценцу под коју желите да ставите свој садржај:';
-$lang['mu_intro'] = 'Одавде можете послати више датотека одједном. Кликните на дугме Тражи да бисте додали датотеке на листу. Када завршите са одабирањем кликните на Пошаљи.';
-$lang['mu_gridname'] = 'Назив датотеке';
-$lang['mu_gridsize'] = 'Величина';
-$lang['mu_gridstat'] = 'Статус';
-$lang['mu_namespace'] = 'Именски простор';
-$lang['mu_browse'] = 'Тражи';
-$lang['mu_toobig'] = 'превелико';
-$lang['mu_ready'] = 'спремно за слање';
-$lang['mu_done'] = 'завршено';
-$lang['mu_fail'] = 'није успело';
-$lang['mu_authfail'] = 'сесија је истекла';
-$lang['mu_progress'] = '@PCT@% послато';
-$lang['mu_filetypes'] = 'Дозвољени типови датотека';
-$lang['mu_info'] = 'Фајлови послати';
-$lang['mu_lasterr'] = 'Последња грешка:';
$lang['recent_global'] = 'Тренутно пратите промене у именском простору <b>%s</b>. Такође, можете пратити <a href="%s">прмене на целом викију</a>.';
$lang['years'] = 'Пре %d година';
$lang['months'] = 'Пре %d месеци';
diff --git a/inc/lang/sv/lang.php b/inc/lang/sv/lang.php
index 943509fed..0c8f3276d 100644
--- a/inc/lang/sv/lang.php
+++ b/inc/lang/sv/lang.php
@@ -52,7 +52,6 @@ $lang['btn_backtomedia'] = 'Tillbaka till val av Mediafil';
$lang['btn_subscribe'] = 'Prenumerera på ändringar';
$lang['btn_profile'] = 'Uppdatera profil';
$lang['btn_reset'] = 'Återställ';
-$lang['btn_resendpwd'] = 'Skicka nytt lösenord';
$lang['btn_draft'] = 'Redigera utkast';
$lang['btn_recover'] = 'Återskapa utkast';
$lang['btn_draftdel'] = 'Radera utkast';
@@ -87,7 +86,6 @@ $lang['profnoempty'] = 'Namn och e-postadress måste fyllas i.';
$lang['profchanged'] = 'Användarprofilen uppdaterad.';
$lang['pwdforget'] = 'Glömt ditt lösenord? Ordna ett nytt';
$lang['resendna'] = 'Den här wikin stödjer inte utskick av lösenord.';
-$lang['resendpwd'] = 'Skicka nytt lösenord för';
$lang['resendpwdmissing'] = 'Du måste fylla i alla fält.';
$lang['resendpwdnouser'] = 'Den här användaren hittas inte i databasen.';
$lang['resendpwdbadauth'] = 'Den här verifieringskoden är inte giltig. Kontrollera att du använde hela verifieringslänken.';
@@ -256,21 +254,6 @@ $lang['i_pol0'] = 'Öppen wiki (alla får läsa, skriva och ladda
$lang['i_pol1'] = 'Publik wiki (alla får läsa, registrerade användare för skriva och ladda upp filer)';
$lang['i_pol2'] = 'Sluten wiki (endast registrerade användare får läsa, skriva och ladda upp filer)';
$lang['i_retry'] = 'Försök igen';
-$lang['mu_intro'] = 'Här kan du ladda upp flera filer på en gång. Klicka på bläddra-knappen för att lägga till dem i kön. Tryck på ladda upp när du är klar.';
-$lang['mu_gridname'] = 'Filnamn';
-$lang['mu_gridsize'] = 'Storlek';
-$lang['mu_gridstat'] = 'Status';
-$lang['mu_namespace'] = 'Namnrymd';
-$lang['mu_browse'] = 'Bläddra';
-$lang['mu_toobig'] = 'för stor';
-$lang['mu_ready'] = 'redo att ladda upp';
-$lang['mu_done'] = 'komplett';
-$lang['mu_fail'] = 'misslyckades';
-$lang['mu_authfail'] = 'sessionen över tid';
-$lang['mu_progress'] = '@PCT@% uppladdade';
-$lang['mu_filetypes'] = 'Tillåtna filtyper';
-$lang['mu_info'] = 'filerna uppladdade.';
-$lang['mu_lasterr'] = 'Senaste fel:';
$lang['recent_global'] = 'Du bevakar ändringar i namnrymden <b>%s</b>. Du kan också titta på <a href="%s">senaste ändringar för hela wikin</a>.';
$lang['years'] = '%d år sedan';
$lang['months'] = '%d månader sedan';
diff --git a/inc/lang/th/lang.php b/inc/lang/th/lang.php
index 0d0613961..c9d526436 100644
--- a/inc/lang/th/lang.php
+++ b/inc/lang/th/lang.php
@@ -48,7 +48,6 @@ $lang['btn_subscribe'] = 'เฝ้าดู';
$lang['btn_unsubscribe'] = 'เลิกเฝ้าดู';
$lang['btn_profile'] = 'แก้ข้อมูลผู้ใช้';
$lang['btn_reset'] = 'เริ่มใหม่';
-$lang['btn_resendpwd'] = 'ลืมรหัส ส่งให้ใหม่ทางอีเมล';
$lang['btn_draft'] = 'แก้ไขเอกสารฉบับร่าง';
$lang['btn_recover'] = 'กู้คืนเอกสารฉบับร่าง';
$lang['btn_draftdel'] = 'ลบเอกสารฉบับร่าง';
@@ -83,7 +82,6 @@ $lang['profnoempty'] = 'ไม่อนุญาติให้เว
$lang['profchanged'] = 'ปรับปรุงข้อมูลส่วนตัวผู้ใช้สำเร็จ';
$lang['pwdforget'] = 'ลืมรหัสผ่านหรือ? เอาอันใหม่สิ';
$lang['resendna'] = 'วิกินี้ไม่รองรับการส่งรหัสผ่านซ้ำ';
-$lang['resendpwd'] = 'ส่งรหัสผ่านใหม่ให้กับ';
$lang['resendpwdmissing'] = 'ขออภัย, คุณต้องกรอกทุกช่อง';
$lang['resendpwdnouser'] = 'ขออภัย, เราไม่พบผู้ใช้คนนี้ในฐานข้อมูลของเรา';
$lang['resendpwdbadauth'] = 'ขออภัย, รหัสนี้ยังใช้ไม่ได้ กรุณาตรวจสอบว่าคุณกดลิ้งค์ยืนยันแล้ว';
@@ -221,21 +219,6 @@ $lang['i_pol0'] = 'วิกิเปิดกว้าง (ใ
$lang['i_pol1'] = 'วิกิสาธารณะ (ทุกคนอ่านได้, เขียน และ อัพโหลดเฉพาะผู้ใช้ที่ลงทะเบียนแล้ว)';
$lang['i_pol2'] = 'วิกิภายใน (อ่าน, เขียน, อัพโหลด สำหรับผู้ใช้ที่ลงทะเบียนแล้วเท่านั้น)';
$lang['i_retry'] = 'ลองใหม่';
-$lang['mu_intro'] = 'ที่นี่คุณสามารถอัพโหลดหลายๆไฟล์ได้พร้อมๆกัน คลิ๊กปุ่มบราวซ์เพื่อเพิ่มมันเข้าไปในคิว กดปุ่มอัพโหลดเมื่อเสร็จแล้ว';
-$lang['mu_gridname'] = 'ชื่อไฟล์';
-$lang['mu_gridsize'] = 'ขนาด';
-$lang['mu_gridstat'] = 'สถานะ';
-$lang['mu_namespace'] = 'เนมสเปซ';
-$lang['mu_browse'] = 'เรียกดู';
-$lang['mu_toobig'] = 'ใหญ่ไป';
-$lang['mu_ready'] = 'พร้อมอัปโหลด';
-$lang['mu_done'] = 'เสร็จสิ้น';
-$lang['mu_fail'] = 'ล้มเหลว';
-$lang['mu_authfail'] = 'วาระหมดอายุ';
-$lang['mu_progress'] = '@PCT@% อัปโหลดแล้ว';
-$lang['mu_filetypes'] = 'ชนิดแฟ้มที่อนุญาต';
-$lang['mu_info'] = 'แฟ้มอัปโหลดแล้ว';
-$lang['mu_lasterr'] = 'ผิดพลาดล่าสุด:';
$lang['years'] = '%d ปีก่อน';
$lang['months'] = '%d เดือนก่อน';
$lang['weeks'] = '%d สัปดาห์ก่อน';
diff --git a/inc/lang/tr/lang.php b/inc/lang/tr/lang.php
index 94b1c951a..77518ac36 100644
--- a/inc/lang/tr/lang.php
+++ b/inc/lang/tr/lang.php
@@ -43,7 +43,6 @@ $lang['btn_backtomedia'] = 'Çokluortam dosyası seçimine dön';
$lang['btn_subscribe'] = 'Sayfa Değişikliklerini Bildir';
$lang['btn_profile'] = 'Kullanıcı Bilgilerini Güncelle';
$lang['btn_reset'] = 'Sıfırla';
-$lang['btn_resendpwd'] = 'Yeni parola gönder';
$lang['btn_draft'] = 'Taslağı düzenle';
$lang['btn_recover'] = 'Taslağı geri yükle';
$lang['btn_draftdel'] = 'Taslağı sil';
@@ -78,7 +77,6 @@ $lang['profnoempty'] = 'Boş isim veya e-posta adresine izin verilmiyo
$lang['profchanged'] = 'Kullanıcı bilgileri başarıyla değiştirildi.';
$lang['pwdforget'] = 'Parolanızı mı unuttunuz? Yeni bir parola alın';
$lang['resendna'] = 'Bu wiki parolayı tekrar göndermeyi desteklememektedir.';
-$lang['resendpwd'] = 'Yeni parolayı gönder:';
$lang['resendpwdmissing'] = 'Üzgünüz, tüm alanları doldurmalısınız.';
$lang['resendpwdnouser'] = 'Üzgünüz, veritabanımızda bu kullanıcıyı bulamadık.';
$lang['resendpwdbadauth'] = 'Üzgünüz, bu doğrulama kodu doğru değil. Doğrulama linkini tam olarak kullandığınıza emin olun.';
@@ -234,17 +232,4 @@ $lang['i_pol0'] = 'Tamamen Açık Wiki (herkes okuyabilir, yazabi
$lang['i_pol1'] = 'Açık Wiki (herkes okuyabilir, ancak sadece üye olanlar yazabilir ve dosya yükleyebilir)';
$lang['i_pol2'] = 'Kapalı Wiki (sadece üye olanlar okuyabilir, yazabilir ve dosya yükleyebilir)';
$lang['i_retry'] = 'Tekrar Dene';
-$lang['mu_intro'] = 'Burada birden fazla dosyayı bir seferde yükleyebilirsiniz. Sıraya eklemek için Gözat butonuna tıklayın. Bitince yükleye tıklayın';
-$lang['mu_gridname'] = 'Dosya Adı';
-$lang['mu_gridsize'] = 'Boyutu';
-$lang['mu_gridstat'] = 'Durumu';
-$lang['mu_namespace'] = 'Namespace';
-$lang['mu_browse'] = 'Gözat';
-$lang['mu_toobig'] = 'çok büyük';
-$lang['mu_ready'] = 'yüklenmeye hazır';
-$lang['mu_done'] = 'tamamlandı';
-$lang['mu_fail'] = 'başarısız';
-$lang['mu_authfail'] = 'oturum zaman aşımına uğradı';
-$lang['mu_progress'] = '@PCT@% yüklendi';
-$lang['mu_filetypes'] = 'İzin verilen Dosya Türleri';
$lang['recent_global'] = '<b>%s</b> namespace\'i içerisinde yapılan değişiklikleri görüntülemektesiniz. Wiki\'deki tüm değişiklikleri de <a href="%s">bu adresten</a> görebilirsiniz. ';
diff --git a/inc/lang/uk/lang.php b/inc/lang/uk/lang.php
index 22d61c9bf..28756e2a1 100644
--- a/inc/lang/uk/lang.php
+++ b/inc/lang/uk/lang.php
@@ -44,7 +44,6 @@ $lang['btn_backtomedia'] = 'Назад до вибору медіа-фай
$lang['btn_subscribe'] = 'Підписатися';
$lang['btn_profile'] = 'Оновити профіль';
$lang['btn_reset'] = 'Очистити';
-$lang['btn_resendpwd'] = 'Надіслати новий пароль';
$lang['btn_draft'] = 'Редагувати чернетку';
$lang['btn_recover'] = 'Відновити чернетку';
$lang['btn_draftdel'] = 'Знищити чернетку';
@@ -79,7 +78,6 @@ $lang['profnoempty'] = 'Ім’я або e-mail не можуть бу
$lang['profchanged'] = 'Профіль успішно змінено.';
$lang['pwdforget'] = 'Забули пароль? Отримайте новий';
$lang['resendna'] = 'Ця Вікі не підтримує повторне відправлення пароля.';
-$lang['resendpwd'] = 'Надіслати пароль для';
$lang['resendpwdmissing'] = 'Необхідно заповнити усі поля.';
$lang['resendpwdnouser'] = 'Такий користувач не існує.';
$lang['resendpwdbadauth'] = 'Код автентифікації невірний. Перевірте, чи ви використали повне посилання для підтвердження.';
@@ -263,21 +261,6 @@ $lang['i_pol1'] = 'Публічна Вікі (читання дл
$lang['i_pol2'] = 'Закрита Вікі (читання, запис та завантаження тільки для зареєстрованих користувачів)';
$lang['i_retry'] = 'Повторити';
$lang['i_license'] = 'Будь ласка, виберіть тип ліцензії, під якою Ві бажаєте опублікувати матеріал:';
-$lang['mu_intro'] = 'Тут ви можете завантажити одночасно кілька файлів. Натисніть кнопку "Вибрати", щоб додати файли в чергу. Після закінчення натисніть кнопку "Завантажити"';
-$lang['mu_gridname'] = 'Ім’я файлу';
-$lang['mu_gridsize'] = 'Розмір';
-$lang['mu_gridstat'] = 'Статус';
-$lang['mu_namespace'] = 'Простір імен';
-$lang['mu_browse'] = 'Вибрати';
-$lang['mu_toobig'] = 'надто великий';
-$lang['mu_ready'] = 'готовий до завантаження';
-$lang['mu_done'] = 'закінчено';
-$lang['mu_fail'] = 'невдале';
-$lang['mu_authfail'] = 'закінчено термін дії сесії';
-$lang['mu_progress'] = 'Завантаження @PCT@%';
-$lang['mu_filetypes'] = 'Дозволені типи файлів';
-$lang['mu_info'] = 'Файли завантажено';
-$lang['mu_lasterr'] = 'Остання помилка:';
$lang['recent_global'] = 'Ви переглядаєте зміни в межах простору імен <b>%s</b>. Також можна <a href="%s">переглянути зміни в межах усієї Вікі</a>.';
$lang['years'] = '%d років тому';
$lang['months'] = '%d місяців тому';
diff --git a/inc/lang/zh-tw/lang.php b/inc/lang/zh-tw/lang.php
index a46869d6c..bbbbb71a6 100644
--- a/inc/lang/zh-tw/lang.php
+++ b/inc/lang/zh-tw/lang.php
@@ -45,12 +45,13 @@ $lang['btn_backtomedia'] = '重新選擇圖檔';
$lang['btn_subscribe'] = '訂閱更動通知';
$lang['btn_profile'] = '更新個人資料';
$lang['btn_reset'] = '資料重設';
-$lang['btn_resendpwd'] = '寄新密碼';
$lang['btn_draft'] = '編輯草稿';
$lang['btn_recover'] = '復原草稿';
$lang['btn_draftdel'] = '捨棄草稿';
$lang['btn_revert'] = '復原';
$lang['btn_register'] = '註冊';
+$lang['btn_apply'] = '套用';
+$lang['btn_media'] = '多媒體管理器';
$lang['loggedinas'] = '登入為';
$lang['user'] = '帳號';
$lang['pass'] = '密碼';
@@ -80,7 +81,6 @@ $lang['profnoempty'] = '帳號或 email 地址不可空白!';
$lang['profchanged'] = '個人資料已成功更新囉。';
$lang['pwdforget'] = '忘記密碼了?索取新密碼!';
$lang['resendna'] = '本維基不開放重寄密碼';
-$lang['resendpwd'] = '寄新密碼給';
$lang['resendpwdmissing'] = '抱歉,您必須填寫所有欄位。';
$lang['resendpwdnouser'] = '抱歉,資料庫內找不到這個使用者';
$lang['resendpwdbadauth'] = '抱歉,認證碼無效。請確認您使用了完整的確認連結。';
@@ -95,7 +95,7 @@ $lang['txt_filename'] = '請輸入要存在維基內的檔案名稱 (
$lang['txt_overwrt'] = '是否要覆蓋原有檔案';
$lang['lockedby'] = '目前已被下列人員鎖定';
$lang['lockexpire'] = '預計解除鎖定於';
-$lang['js']['willexpire'] = '本頁的編輯鎖定將在一分鐘內到期。要避免發生衝突,請按「預覽」鍵重設鎖定計時。';
+$lang['js']['willexpire'] = '本頁的編輯鎖定將在一分鐘內到期。要避免發生衝突,請按「預覽」鍵重設鎖定計時。';
$lang['js']['notsavedyet'] = '未儲存的變更將會遺失,繼續嗎?';
$lang['js']['searchmedia'] = '搜尋檔案';
$lang['js']['keepopen'] = '選擇時保持視窗開啟';
@@ -126,6 +126,17 @@ $lang['js']['nosmblinks'] = '只有在 Microsoft IE 下才能執行「連
$lang['js']['linkwiz'] = '建立連結精靈';
$lang['js']['linkto'] = '連結至:';
$lang['js']['del_confirm'] = '確定刪除選取的項目?';
+$lang['js']['restore_confirm'] = '確定還原到這個版本?';
+$lang['js']['media_diff'] = '檢視差異:';
+$lang['js']['media_diff_both'] = '並排';
+$lang['js']['media_diff_opacity'] = '重疊';
+$lang['js']['media_diff_portions'] = '滑動';
+$lang['js']['media_select'] = '選擇檔案…';
+$lang['js']['media_upload_btn'] = '上傳';
+$lang['js']['media_done_btn'] = '完成';
+$lang['js']['media_drop'] = '拖拉檔案到此上傳';
+$lang['js']['media_cancel'] = '刪除';
+$lang['js']['media_overwrt'] = '覆蓋已存在的檔案';
$lang['rssfailed'] = '擷取 RSS 饋送檔時發生錯誤:';
$lang['nothingfound'] = '沒找到任何結果。';
$lang['mediaselect'] = '媒體檔案';
@@ -180,6 +191,10 @@ $lang['mail_changed'] = '變更的頁面:';
$lang['mail_subscribe_list'] = '命名空間中更動的頁面:';
$lang['mail_new_user'] = '新使用者:';
$lang['mail_upload'] = '已上傳檔案:';
+$lang['changes_type'] = '檢視最近更新類型';
+$lang['pages_changes'] = '頁面';
+$lang['media_changes'] = '多媒體檔案';
+$lang['both_changes'] = '頁面和多媒體檔案';
$lang['qb_bold'] = '粗體';
$lang['qb_italic'] = '斜體';
$lang['qb_underl'] = '底線';
@@ -220,6 +235,9 @@ $lang['img_copyr'] = '版權';
$lang['img_format'] = '格式';
$lang['img_camera'] = '相機';
$lang['img_keywords'] = '關鍵字';
+$lang['img_width'] = '寬度';
+$lang['img_height'] = '高度';
+$lang['img_manager'] = '在多媒體管理器中檢視';
$lang['subscr_subscribe_success'] = '已將 %s 加入至 %s 的訂閱列表';
$lang['subscr_subscribe_error'] = '將 %s 加入至 %s 的訂閱列表時發生錯誤';
$lang['subscr_subscribe_noaddress'] = '沒有與您登入相關的地址,無法將您加入訂閱列表';
@@ -262,21 +280,6 @@ $lang['i_pol1'] = '公開的維基 (任何人可讀取,註冊
$lang['i_pol2'] = '封閉的維基 (只有註冊使用者可讀取、寫入、上傳)';
$lang['i_retry'] = '重試';
$lang['i_license'] = '請選擇您想要的內容發布許可協議:';
-$lang['mu_intro'] = '您可以在這裡一次上傳多個檔案。按下瀏覽按鈕加入檔案,然後按上傳按鈕開始上傳。';
-$lang['mu_gridname'] = '檔案名稱';
-$lang['mu_gridsize'] = '檔案大小';
-$lang['mu_gridstat'] = '狀態';
-$lang['mu_namespace'] = '命名空間';
-$lang['mu_browse'] = '瀏覽';
-$lang['mu_toobig'] = '太大';
-$lang['mu_ready'] = '準備上傳';
-$lang['mu_done'] = '完成';
-$lang['mu_fail'] = '失敗';
-$lang['mu_authfail'] = '作業階段逾時';
-$lang['mu_progress'] = '@PCT@% 已上傳';
-$lang['mu_filetypes'] = '接受的檔案類型';
-$lang['mu_info'] = '檔案已上傳。';
-$lang['mu_lasterr'] = '最新一筆錯誤紀錄:';
$lang['recent_global'] = '您正在閱讀命名空間: <b>%s</b> 中的變更。您亦可觀看整個維基的<a href="%s">最近更新</a>。';
$lang['years'] = '%d 年前';
$lang['months'] = '%d 個月前';
@@ -286,3 +289,27 @@ $lang['hours'] = '%d 個小時前';
$lang['minutes'] = '%d 分鐘前';
$lang['seconds'] = '%s 秒鐘前';
$lang['wordblock'] = '您的更改沒有被儲存,因为它包含被阻擋的文字 (垃圾訊息)。';
+$lang['media_uploadtab'] = '上傳';
+$lang['media_searchtab'] = '搜尋';
+$lang['media_file'] = '檔案';
+$lang['media_viewtab'] = '檢視';
+$lang['media_edittab'] = '編輯';
+$lang['media_historytab'] = '歷史紀錄';
+$lang['media_list_thumbs'] = '縮圖';
+$lang['media_list_rows'] = '列表';
+$lang['media_sort_name'] = '名稱';
+$lang['media_sort_date'] = '日期';
+$lang['media_namespaces'] = '選擇命名空間';
+$lang['media_files'] = '在 %s 中的檔案';
+$lang['media_upload'] = '上傳至 %s';
+$lang['media_search'] = '在 %s 中搜尋';
+$lang['media_view'] = '%s';
+$lang['media_viewold'] = '%s 在 %s';
+$lang['media_edit'] = '編輯 %s';
+$lang['media_history'] = '%s 的歷史紀錄';
+$lang['media_meta_edited'] = '元資料已編輯';
+$lang['media_perm_read'] = '抱歉,您沒有足夠權限讀取檔案';
+$lang['media_perm_upload'] = '抱歉,您沒有足夠權限上傳檔案。';
+$lang['media_update'] = '上傳新的版本';
+$lang['media_restore'] = '還原這個版本';
+$lang['plugin_install_err'] = '插件安裝錯誤。將插件目錄 "%s" 重新命名為 "%s"';
diff --git a/inc/lang/zh/lang.php b/inc/lang/zh/lang.php
index 6e6dff6f4..9d125ce44 100644
--- a/inc/lang/zh/lang.php
+++ b/inc/lang/zh/lang.php
@@ -14,6 +14,7 @@
* @author Hiphen Lee <jacob.b.leung@gmail.com>
* @author caii, patent agent in China <zhoucaiqi@gmail.com>
* @author lainme993@gmail.com
+ * @author Shuo-Ting Jian <shoting@gmail.com>
*/
$lang['encoding'] = 'utf-8';
$lang['direction'] = 'ltr';
@@ -49,7 +50,6 @@ $lang['btn_backtomedia'] = '返回到媒体文件选择工具';
$lang['btn_subscribe'] = '订阅本页更改';
$lang['btn_profile'] = '更新个人信息';
$lang['btn_reset'] = '重设';
-$lang['btn_resendpwd'] = '发送新密码';
$lang['btn_draft'] = '编辑草稿';
$lang['btn_recover'] = '恢复草稿';
$lang['btn_draftdel'] = '删除草稿';
@@ -86,7 +86,6 @@ $lang['profnoempty'] = '不允许使用空的用户名或邮件地址
$lang['profchanged'] = '用户信息更新成功。';
$lang['pwdforget'] = '忘记密码?立即获取新密码';
$lang['resendna'] = '本维基不支持二次发送密码。';
-$lang['resendpwd'] = '发送新密码给';
$lang['resendpwdmissing'] = '对不起,您必须填写所有的区域。';
$lang['resendpwdnouser'] = '对不起,在我们的用户数据中找不到该用户。';
$lang['resendpwdbadauth'] = '对不起,该认证码错误。请使用完整的确认链接。';
@@ -289,21 +288,7 @@ $lang['i_pol1'] = '公共的维基(任何人都有读的权限
$lang['i_pol2'] = '关闭的维基(只有注册用户才有读、写、上传的权限)';
$lang['i_retry'] = '重试';
$lang['i_license'] = '请选择您希望的内容发布许可协议:';
-$lang['mu_intro'] = '您可以在此一次上传多个文件。点按浏览按钮添加文件到上传队列中,先好后按上传钮。';
-$lang['mu_gridname'] = '文件名';
-$lang['mu_gridsize'] = '大小';
-$lang['mu_gridstat'] = '状态';
-$lang['mu_namespace'] = '名称空间';
-$lang['mu_browse'] = '浏览';
-$lang['mu_toobig'] = '过大';
-$lang['mu_ready'] = '准备好上传';
-$lang['mu_done'] = '完成';
-$lang['mu_fail'] = '失败';
-$lang['mu_authfail'] = '会话过期';
-$lang['mu_progress'] = '@PCT@% 上传完成';
-$lang['mu_filetypes'] = '允许的文件类型';
-$lang['mu_info'] = '文件已上传。';
-$lang['mu_lasterr'] = '最后一个错误:';
+
$lang['recent_global'] = '您当前看到的是<b>%s</b> 名称空间的变动。你还可以在<a href="%s">查看整个维基的近期变动</a>。';
$lang['years'] = '%d年前';
$lang['months'] = '%d月前';
@@ -315,18 +300,22 @@ $lang['seconds'] = '%d秒前';
$lang['wordblock'] = '您的更改没有被保存,因为它包含被屏蔽的文字(垃圾信息)。';
$lang['media_uploadtab'] = '上传';
$lang['media_searchtab'] = '搜索';
+$lang['media_file'] = '文件';
$lang['media_viewtab'] = '查看';
$lang['media_edittab'] = '编辑';
$lang['media_historytab'] = '历史';
-$lang['media_thumbsview'] = '缩略图';
-$lang['media_listview'] = '列表';
-$lang['media_sort'] = '排序';
+$lang['media_list_thumbs'] = '缩图';
+$lang['media_list_rows'] = '列表';
$lang['media_sort_name'] = '按名称';
$lang['media_sort_date'] = '按日期';
+$lang['media_namespaces'] = '选择命名空间';
+$lang['media_files'] = '在 %s 中的文件';
$lang['media_upload'] = '上传到 <strong>%s</strong> 命名空间。';
$lang['media_search'] = '在 <strong>%s</strong> 命名空间中搜索。';
-$lang['media_edit'] = '编辑';
-$lang['media_history'] = '这些是文件的旧版本。';
+$lang['media_view'] = '%s 在 %s';
+$lang['media_viewold'] = '%s ';
+$lang['media_edit'] = '编辑 %s';
+$lang['media_history'] = '%s 的历史纪录';
$lang['media_meta_edited'] = '元数据已编辑';
$lang['media_perm_read'] = '抱歉,您没有足够权限读取这些文件。';
$lang['media_perm_upload'] = '抱歉,您没有足够权限来上传文件。';
diff --git a/inc/load.php b/inc/load.php
index b5cfd4273..0572b5760 100644
--- a/inc/load.php
+++ b/inc/load.php
@@ -77,10 +77,13 @@ function load_autoload($name){
'Sitemapper' => DOKU_INC.'inc/Sitemapper.php',
'PassHash' => DOKU_INC.'inc/PassHash.class.php',
'Mailer' => DOKU_INC.'inc/Mailer.class.php',
+ 'RemoteAPI' => DOKU_INC.'inc/remote.php',
+ 'RemoteAPICore' => DOKU_INC.'inc/RemoteAPICore.php',
'DokuWiki_Action_Plugin' => DOKU_PLUGIN.'action.php',
'DokuWiki_Admin_Plugin' => DOKU_PLUGIN.'admin.php',
'DokuWiki_Syntax_Plugin' => DOKU_PLUGIN.'syntax.php',
+ 'DokuWiki_Remote_Plugin' => DOKU_PLUGIN.'remote.php',
);
@@ -90,7 +93,7 @@ function load_autoload($name){
}
// Plugin loading
- if(preg_match('/^(helper|syntax|action|admin|renderer)_plugin_([^_]+)(?:_([^_]+))?$/',
+ if(preg_match('/^(helper|syntax|action|admin|renderer|remote)_plugin_([^_]+)(?:_([^_]+))?$/',
$name, $m)) {
//try to load the wanted plugin file
// include, but be silent. Maybe some other autoloader has an idea
diff --git a/inc/mail.php b/inc/mail.php
index 01b2895e1..bec0c5b10 100644
--- a/inc/mail.php
+++ b/inc/mail.php
@@ -106,7 +106,7 @@ function _mail_send_action($data) {
// discard mail request if no recipients are available
if(trim($to) === '' && trim($cc) === '' && trim($bcc) === '') return false;
-
+
// end additional code to support event ... original mail_send() code from here
if(defined('MAILHEADER_ASCIIONLY')){
@@ -208,9 +208,9 @@ function mail_encode_address($string,$header='',$names=true){
if(!utf8_isASCII($text)){
// put the quotes outside as in =?UTF-8?Q?"Elan Ruusam=C3=A4e"?= vs "=?UTF-8?Q?Elan Ruusam=C3=A4e?="
if (preg_match('/^"(.+)"$/', $text, $matches)) {
- $text = '"=?UTF-8?Q?'.mail_quotedprintable_encode($matches[1], 0).'?="';
+ $text = '"=?UTF-8?Q?'.mail_quotedprintable_encode($matches[1], 0).'?="';
} else {
- $text = '=?UTF-8?Q?'.mail_quotedprintable_encode($text, 0).'?=';
+ $text = '=?UTF-8?Q?'.mail_quotedprintable_encode($text, 0).'?=';
}
// additionally the space character should be encoded as =20 (or each
// word QP encoded separately).
diff --git a/inc/media.php b/inc/media.php
index 4e014877b..66984e957 100644
--- a/inc/media.php
+++ b/inc/media.php
@@ -108,7 +108,7 @@ function media_metaform($id,$auth){
$src = mediaFN($id);
// output
- $form = new Doku_Form(array('action' => media_managerURL(array('tab_details' => 'view')),
+ $form = new Doku_Form(array('action' => media_managerURL(array('tab_details' => 'view'), '&'),
'class' => 'meta'));
$form->addHidden('img', $id);
$form->addHidden('mediado', 'save');
@@ -175,10 +175,10 @@ define('DOKU_MEDIA_EMPTY_NS', 8);
*
* @author Andreas Gohr <andi@splitbrain.org>
* @return int One of: 0,
- DOKU_MEDIA_DELETED,
- DOKU_MEDIA_DELETED | DOKU_MEDIA_EMPTY_NS,
- DOKU_MEDIA_NOT_AUTH,
- DOKU_MEDIA_INUSE
+ * DOKU_MEDIA_DELETED,
+ * DOKU_MEDIA_DELETED | DOKU_MEDIA_EMPTY_NS,
+ * DOKU_MEDIA_NOT_AUTH,
+ * DOKU_MEDIA_INUSE
*/
function media_delete($id,$auth){
global $lang;
@@ -230,16 +230,18 @@ function media_upload_xhr($ns,$auth){
$id = $_GET['qqfile'];
list($ext,$mime,$dl) = mimetype($id);
$input = fopen("php://input", "r");
- $temp = tmpfile();
- $realSize = stream_copy_to_stream($input, $temp);
- fclose($input);
- if ($realSize != (int)$_SERVER["CONTENT_LENGTH"]) return false;
if (!($tmp = io_mktmpdir())) return false;
$path = $tmp.'/'.md5($id);
$target = fopen($path, "w");
- fseek($temp, 0, SEEK_SET);
- stream_copy_to_stream($temp, $target);
+ $realSize = stream_copy_to_stream($input, $target);
fclose($target);
+ fclose($input);
+ if ($realSize != (int)$_SERVER["CONTENT_LENGTH"]){
+ unlink($target);
+ unlink($path);
+ return false;
+ }
+
$res = media_save(
array('name' => $path,
'mime' => $mime,
@@ -332,7 +334,7 @@ function media_save($file, $id, $ow, $auth, $move) {
global $lang, $conf;
// get filename
- $id = cleanID($id,false,true);
+ $id = cleanID($id);
$fn = mediaFN($id);
// get filetype regexp
@@ -751,7 +753,7 @@ function media_tab_search($ns,$auth=null) {
echo '<div class="search">'.NL;
media_searchform($ns, $query, true);
- if ($do == 'searchlist') {
+ if ($do == 'searchlist' || $query) {
media_searchlist($query,$ns,$auth,true,_media_get_sort_type());
}
echo '</div>'.NL;
@@ -824,6 +826,7 @@ function media_preview($image, $auth, $rev=false, $meta=false) {
$size = media_image_preview_size($image, $rev, $meta);
if ($size) {
+ global $lang;
echo '<div class="image">';
$more = array();
@@ -837,7 +840,10 @@ function media_preview($image, $auth, $rev=false, $meta=false) {
$more['w'] = $size[0];
$more['h'] = $size[1];
$src = ml($image, $more);
+
+ echo '<a href="'.$src.'" target="_blank" title="'.$lang['mediaview'].'">';
echo '<img src="'.$src.'" alt="" style="max-width: '.$size[0].'px;" />';
+ echo '</a>';
echo '</div>'.NL;
}
@@ -1104,6 +1110,7 @@ function media_file_diff($image, $l_rev, $r_rev, $ns, $auth, $fromajax){
list($l_head, $r_head) = html_diff_head($l_rev, $r_rev, $image, true);
?>
+ <div class="table">
<table>
<tr>
<th><?php echo $l_head; ?></th>
@@ -1171,6 +1178,7 @@ function media_file_diff($image, $l_rev, $r_rev, $ns, $auth, $fromajax){
echo '</tr>'.NL;
echo '</table>'.NL;
+ echo '</div>'.NL;
if ($is_img && !$fromajax) echo '</div>';
}
@@ -1344,7 +1352,7 @@ function media_printfile($item,$auth,$jump,$display_namespace=false){
$info .= filesize_h($item['size']);
// output
- echo '<div class="'.$zebra.'"'.$jump.'>'.NL;
+ echo '<div class="'.$zebra.'"'.$jump.' title="'.hsc($item['id']).'">'.NL;
if (!$display_namespace) {
echo '<a name="h_:'.$item['id'].'" class="'.$class.'">'.hsc($file).'</a> ';
} else {
@@ -1358,7 +1366,7 @@ function media_printfile($item,$auth,$jump,$display_namespace=false){
'alt="'.$lang['mediaview'].'" title="'.$lang['mediaview'].'" class="btn" /></a>';
// mediamanager button
- $link = wl('',array('do'=>'media','image'=>$item['id']));
+ $link = wl('',array('do'=>'media','image'=>$item['id'],'ns'=>getNS($item['id'])));
echo ' <a href="'.$link.'" target="_blank"><img src="'.DOKU_BASE.'lib/images/mediamanager.png" '.
'alt="'.$lang['btn_media'].'" title="'.$lang['btn_media'].'" class="btn" /></a>';
@@ -1405,7 +1413,7 @@ function media_printfile_thumbs($item,$auth,$jump=false,$display_namespace=false
$file = utf8_decodeFN($item['file']);
// output
- echo '<li><dl>'.NL;
+ echo '<li><dl title="'.hsc($item['id']).'">'.NL;
echo '<dt>';
if($item['isimg']) {
@@ -1668,7 +1676,7 @@ function media_nstree_item($item){
$ret = '';
if (!($_REQUEST['do'] == 'media'))
$ret .= '<a href="'.DOKU_BASE.'lib/exe/mediamanager.php?ns='.idfilter($item['id']).'" class="idx_dir">';
- else $ret .= '<a href="'.media_managerURL(array('ns' => idfilter($item['id']), 'tab_files' => 'files'))
+ else $ret .= '<a href="'.media_managerURL(array('ns' => idfilter($item['id'], false), 'tab_files' => 'files'))
.'" class="idx_dir">';
$ret .= $item['label'];
$ret .= '</a>';
@@ -1772,7 +1780,7 @@ function media_crop_image($file, $ext, $w, $h=0){
$local = getCacheName($file,'.media.'.$cw.'x'.$ch.'.crop.'.$ext);
$mtime = @filemtime($local); // 0 if not exists
- if( $mtime > filemtime($file) ||
+ if( $mtime > @filemtime($file) ||
media_crop_imageIM($ext,$file,$info[0],$info[1],$local,$cw,$ch,$cx,$cy) ||
media_resize_imageGD($ext,$file,$cw,$ch,$local,$cw,$ch,$cx,$cy) ){
if($conf['fperm']) chmod($local, $conf['fperm']);
diff --git a/inc/pageutils.php b/inc/pageutils.php
index c355d4894..c94d14624 100644
--- a/inc/pageutils.php
+++ b/inc/pageutils.php
@@ -92,7 +92,7 @@ function getID($param='id',$clean=true){
* @author Andreas Gohr <andi@splitbrain.org>
* @param string $raw_id The pageid to clean
* @param boolean $ascii Force ASCII
- * @param boolean $media Allow leading or trailing _ for media files
+ * @param boolean $media DEPRECATED
*/
function cleanID($raw_id,$ascii=false,$media=false){
global $conf;
@@ -132,7 +132,7 @@ function cleanID($raw_id,$ascii=false,$media=false){
//clean up
$id = preg_replace($sepcharpat,$sepchar,$id);
$id = preg_replace('#:+#',':',$id);
- $id = ($media ? trim($id,':.-') : trim($id,':._-'));
+ $id = trim($id,':._-');
$id = preg_replace('#:[:\._\-]+#',':',$id);
$id = preg_replace('#[:\._\-]+:#',':',$id);
@@ -213,9 +213,9 @@ function sectionID($title,&$check) {
if(is_array($check)){
// make sure tiles are unique
if (!array_key_exists ($title,$check)) {
- $check[$title] = 0;
+ $check[$title] = 0;
} else {
- $title .= ++ $check[$title];
+ $title .= ++ $check[$title];
}
}
diff --git a/inc/parser/metadata.php b/inc/parser/metadata.php
index 136c37531..8bfdc3b9c 100644
--- a/inc/parser/metadata.php
+++ b/inc/parser/metadata.php
@@ -455,16 +455,16 @@ class Doku_Renderer_metadata extends Doku_Renderer {
global $conf;
$isImage = false;
- if (is_null($title)){
+ if (is_array($title)){
+ if($title['title']) return '['.$title['title'].']';
+ } else if (is_null($title) || trim($title)==''){
if (useHeading('content') && $id){
$heading = p_get_first_heading($id,METADATA_DONT_RENDER);
if ($heading) return $heading;
}
return $default;
- } else if (is_string($title)){
+ } else {
return $title;
- } else if (is_array($title)){
- if($title['title']) return '['.$title['title'].']';
}
}
diff --git a/inc/parser/parser.php b/inc/parser/parser.php
index 68d4e4569..cf132ce97 100644
--- a/inc/parser/parser.php
+++ b/inc/parser/parser.php
@@ -929,7 +929,7 @@ class Doku_Parser_Mode_windowssharelink extends Doku_Parser_Mode {
var $pattern;
function preConnect() {
- $this->pattern = "\\\\\\\\\w+?(?:\\\\[\w$]+)+";
+ $this->pattern = "\\\\\\\\\w+?(?:\\\\[\w-$]+)+";
}
function connectTo($mode) {
diff --git a/inc/parser/xhtml.php b/inc/parser/xhtml.php
index ea1756803..4345b494f 100644
--- a/inc/parser/xhtml.php
+++ b/inc/parser/xhtml.php
@@ -29,7 +29,7 @@ class Doku_Renderer_xhtml extends Doku_Renderer {
var $doc = ''; // will contain the whole document
var $toc = array(); // will contain the Table of Contents
- private $sectionedits = array(); // A stack of section edit data
+ var $sectionedits = array(); // A stack of section edit data
var $headers = array();
var $footnotes = array();
@@ -566,6 +566,7 @@ class Doku_Renderer_xhtml extends Doku_Renderer {
function internallink($id, $name = NULL, $search=NULL,$returnonly=false,$linktype='content') {
global $conf;
global $ID;
+ global $INFO;
$params = '';
$parts = explode('?', $id, 2);
@@ -610,7 +611,7 @@ class Doku_Renderer_xhtml extends Doku_Renderer {
$link['pre'] = '';
$link['suf'] = '';
// highlight link to current page
- if ($id == $ID) {
+ if ($id == $INFO['id']) {
$link['pre'] = '<span class="curid">';
$link['suf'] = '</span>';
}
@@ -807,7 +808,6 @@ class Doku_Renderer_xhtml extends Doku_Renderer {
//markup non existing files
if (!$exists) {
$link['class'] .= ' wikilink2';
- $link['url'] = media_managerURL(array('tab_details' => 'view', 'image' => $src, 'ns' => getNS($src)), '&');
}
//output formatted
diff --git a/inc/plugincontroller.class.php b/inc/plugincontroller.class.php
index 734331c94..208d7dae9 100644
--- a/inc/plugincontroller.class.php
+++ b/inc/plugincontroller.class.php
@@ -137,6 +137,7 @@ class Doku_Plugin_Controller {
// the plugin was disabled by rc2009-01-26
// disabling mechanism was changed back very soon again
// to keep everything simple we just skip the plugin completely
+ continue;
} elseif (@file_exists(DOKU_PLUGIN.$plugin.'/disabled')) {
// treat this as a default disabled plugin(over-rideable by the plugin manager)
// deprecated 2011-09-10 (usage of disabled files)
diff --git a/inc/remote.php b/inc/remote.php
new file mode 100644
index 000000000..2ef28afd2
--- /dev/null
+++ b/inc/remote.php
@@ -0,0 +1,253 @@
+<?php
+
+if (!defined('DOKU_INC')) die();
+
+class RemoteException extends Exception {}
+class RemoteAccessDeniedException extends RemoteException {}
+
+/**
+ * This class provides information about remote access to the wiki.
+ *
+ * == Types of methods ==
+ * There are two types of remote methods. The first is the core methods.
+ * These are always available and provided by dokuwiki.
+ * The other is plugin methods. These are provided by remote plugins.
+ *
+ * == Information structure ==
+ * The information about methods will be given in an array with the following structure:
+ * array(
+ * 'method.remoteName' => array(
+ * 'args' => array(
+ * 'type eg. string|int|...|date|file',
+ * )
+ * 'name' => 'method name in class',
+ * 'return' => 'type',
+ * 'public' => 1/0 - method bypass default group check (used by login)
+ * ['doc' = 'method documentation'],
+ * )
+ * )
+ *
+ * plugin names are formed the following:
+ * core methods begin by a 'dokuwiki' or 'wiki' followed by a . and the method name itself.
+ * i.e.: dokuwiki.version or wiki.getPage
+ *
+ * plugin methods are formed like 'plugin.<plugin name>.<method name>'.
+ * i.e.: plugin.clock.getTime or plugin.clock_gmt.getTime
+ *
+ * @throws RemoteException
+ */
+class RemoteAPI {
+
+ /**
+ * @var RemoteAPICore
+ */
+ private $coreMethods = null;
+
+ /**
+ * @var array remote methods provided by dokuwiki plugins - will be filled lazy via
+ * {@see RemoteAPI#getPluginMethods}
+ */
+ private $pluginMethods = null;
+
+ /**
+ * @var array contains custom calls to the api. Plugins can use the XML_CALL_REGISTER event.
+ * The data inside is 'custom.call.something' => array('plugin name', 'remote method name')
+ *
+ * The remote method name is the same as in the remote name returned by _getMethods().
+ */
+ private $pluginCustomCalls = null;
+
+ private $dateTransformation;
+ private $fileTransformation;
+
+ public function __construct() {
+ $this->dateTransformation = array($this, 'dummyTransformation');
+ $this->fileTransformation = array($this, 'dummyTransformation');
+ }
+
+ /**
+ * Get all available methods with remote access.
+ *
+ * @return array with information to all available methods
+ */
+ public function getMethods() {
+ return array_merge($this->getCoreMethods(), $this->getPluginMethods());
+ }
+
+ /**
+ * call a method via remote api.
+ *
+ * @param string $method name of the method to call.
+ * @param array $args arguments to pass to the given method
+ * @return mixed result of method call, must be a primitive type.
+ */
+ public function call($method, $args = array()) {
+ if ($args === null) {
+ $args = array();
+ }
+ list($type, $pluginName, $call) = explode('.', $method, 3);
+ if ($type === 'plugin') {
+ return $this->callPlugin($pluginName, $method, $args);
+ }
+ if ($this->coreMethodExist($method)) {
+ return $this->callCoreMethod($method, $args);
+ }
+ return $this->callCustomCallPlugin($method, $args);
+ }
+
+ private function coreMethodExist($name) {
+ $coreMethods = $this->getCoreMethods();
+ return array_key_exists($name, $coreMethods);
+ }
+
+ private function callCustomCallPlugin($method, $args) {
+ $customCalls = $this->getCustomCallPlugins();
+ if (!array_key_exists($method, $customCalls)) {
+ throw new RemoteException('Method does not exist', -32603);
+ }
+ $customCall = $customCalls[$method];
+ return $this->callPlugin($customCall[0], $customCall[1], $args);
+ }
+
+ private function getCustomCallPlugins() {
+ if ($this->pluginCustomCalls === null) {
+ $data = array();
+ trigger_event('RPC_CALL_ADD', $data);
+ $this->pluginCustomCalls = $data;
+ }
+ return $this->pluginCustomCalls;
+ }
+
+ private function callPlugin($pluginName, $method, $args) {
+ $plugin = plugin_load('remote', $pluginName);
+ $methods = $this->getPluginMethods();
+ if (!$plugin) {
+ throw new RemoteException('Method does not exist', -32603);
+ }
+ $this->checkAccess($methods[$method]);
+ $name = $this->getMethodName($methods, $method);
+ return call_user_func_array(array($plugin, $name), $args);
+ }
+
+ private function callCoreMethod($method, $args) {
+ $coreMethods = $this->getCoreMethods();
+ $this->checkAccess($coreMethods[$method]);
+ if (!isset($coreMethods[$method])) {
+ throw new RemoteException('Method does not exist', -32603);
+ }
+ $this->checkArgumentLength($coreMethods[$method], $args);
+ return call_user_func_array(array($this->coreMethods, $this->getMethodName($coreMethods, $method)), $args);
+ }
+
+ private function checkAccess($methodMeta) {
+ if (!isset($methodMeta['public'])) {
+ $this->forceAccess();
+ } else{
+ if ($methodMeta['public'] == '0') {
+ $this->forceAccess();
+ }
+ }
+ }
+
+ private function checkArgumentLength($method, $args) {
+ if (count($method['args']) < count($args)) {
+ throw new RemoteException('Method does not exist - wrong parameter count.', -32603);
+ }
+ }
+
+ private function getMethodName($methodMeta, $method) {
+ if (isset($methodMeta[$method]['name'])) {
+ return $methodMeta[$method]['name'];
+ }
+ $method = explode('.', $method);
+ return $method[count($method)-1];
+ }
+
+ /**
+ * @return bool true if the current user has access to remote api.
+ */
+ public function hasAccess() {
+ global $conf;
+ global $USERINFO;
+ if (!$conf['remote']) {
+ return false;
+ }
+ if(!$conf['useacl']) {
+ return true;
+ }
+ if(trim($conf['remoteuser']) == '') {
+ return true;
+ }
+
+ return auth_isMember($conf['remoteuser'], $_SERVER['REMOTE_USER'], (array) $USERINFO['grps']);
+ }
+
+ /**
+ * @throws RemoteException On denied access.
+ * @return void
+ */
+ public function forceAccess() {
+ if (!$this->hasAccess()) {
+ throw new RemoteAccessDeniedException('server error. not authorized to call method', -32604);
+ }
+ }
+
+ /**
+ * @return array all plugin methods.
+ */
+ public function getPluginMethods() {
+ if ($this->pluginMethods === null) {
+ $this->pluginMethods = array();
+ $plugins = plugin_list('remote');
+
+ foreach ($plugins as $pluginName) {
+ $plugin = plugin_load('remote', $pluginName);
+ if (!is_subclass_of($plugin, 'DokuWiki_Remote_Plugin')) {
+ throw new RemoteException("Plugin $pluginName does not implement DokuWiki_Remote_Plugin");
+ }
+
+ $methods = $plugin->_getMethods();
+ foreach ($methods as $method => $meta) {
+ $this->pluginMethods["plugin.$pluginName.$method"] = $meta;
+ }
+ }
+ }
+ return $this->pluginMethods;
+ }
+
+ /**
+ * @param RemoteAPICore $apiCore this parameter is used for testing. Here you can pass a non-default RemoteAPICore
+ * instance. (for mocking)
+ * @return array all core methods.
+ */
+ public function getCoreMethods($apiCore = null) {
+ if ($this->coreMethods === null) {
+ if ($apiCore === null) {
+ $this->coreMethods = new RemoteAPICore($this);
+ } else {
+ $this->coreMethods = $apiCore;
+ }
+ }
+ return $this->coreMethods->__getRemoteInfo();
+ }
+
+ public function toFile($data) {
+ return call_user_func($this->fileTransformation, $data);
+ }
+
+ public function toDate($data) {
+ return call_user_func($this->dateTransformation, $data);
+ }
+
+ public function dummyTransformation($data) {
+ return $data;
+ }
+
+ public function setDateTransformation($dateTransformation) {
+ $this->dateTransformation = $dateTransformation;
+ }
+
+ public function setFileTransformation($fileTransformation) {
+ $this->fileTransformation = $fileTransformation;
+ }
+}
diff --git a/inc/template.php b/inc/template.php
index c70e407d6..ab6aa925f 100644
--- a/inc/template.php
+++ b/inc/template.php
@@ -23,6 +23,31 @@ function template($tpl){
return DOKU_INC.'lib/tpl/default/'.$tpl;
}
+
+/**
+ * Convenience function to access template dir from local FS
+ *
+ * This replaces the deprecated DOKU_TPLINC constant
+ *
+ * @author Andreas Gohr <andi@splitbrain.org>
+ */
+function tpl_incdir(){
+ global $conf;
+ return DOKU_INC.'lib/tpl/'.$conf['template'].'/';
+}
+
+/**
+ * Convenience function to access template dir from web
+ *
+ * This replaces the deprecated DOKU_TPL constant
+ *
+ * @author Andreas Gohr <andi@splitbrain.org>
+ */
+function tpl_basedir(){
+ global $conf;
+ return DOKU_BASE.'lib/tpl/'.$conf['template'].'/';
+}
+
/**
* Print the content
*
@@ -969,10 +994,11 @@ function tpl_img($maxwidth=0,$maxheight=0,$link=true,$params=null){
/**
* Default action for TPL_IMG_DISPLAY
*/
-function _tpl_img_action($data, $param=NULL) {
+function _tpl_img_action($data, $param=null) {
+ global $lang;
$p = buildAttributes($data['params']);
- if($data['url']) print '<a href="'.hsc($data['url']).'">';
+ if($data['url']) print '<a href="'.hsc($data['url']).'" title="'.$lang['mediaview'].'">';
print '<img '.$p.'/>';
if($data['url']) print '</a>';
return true;
@@ -986,8 +1012,6 @@ function _tpl_img_action($data, $param=NULL) {
*/
function tpl_indexerWebBug(){
global $ID;
- global $INFO;
- if(!$INFO['exists']) return false;
$p = array();
$p['src'] = DOKU_BASE.'lib/exe/indexer.php?id='.rawurlencode($ID).
@@ -1033,7 +1057,7 @@ function tpl_getConf($id){
*/
function tpl_loadConfig(){
- $file = DOKU_TPLINC.'/conf/default.php';
+ $file = tpl_incdir().'/conf/default.php';
$conf = array();
if (!@file_exists($file)) return false;
@@ -1054,7 +1078,7 @@ function tpl_getLang($id){
static $lang = array();
if (count($lang) === 0){
- $path = DOKU_TPLINC.'lang/';
+ $path = tpl_incdir().'lang/';
$lang = array();
@@ -1206,12 +1230,13 @@ function tpl_mediaFileDetails($image, $rev){
list($ext,$mime,$dl) = mimetype($image,false);
$class = preg_replace('/[^_\-a-z0-9]+/i','_',$ext);
$class = 'select mediafile mf_'.$class;
- $tabTitle = '<strong class="'.$class.'">'.$image.'</strong>';
+ $tabTitle = '<strong class="'.$class.'"><a href="'.ml($image).'" title="'.$lang['mediaview'].'">'.$image.'</a>'.'</strong>';
if ($opened_tab === 'view' && $rev) {
printf($lang['media_viewold'], $tabTitle, dformat($rev));
} else {
printf($lang['media_' . $opened_tab], $tabTitle);
}
+
echo '</h3></div>'.NL;
echo '<div class="panelContent">'.NL;
@@ -1261,6 +1286,7 @@ function tpl_actiondropdown($empty='',$button='&gt;'){
global $auth;
echo '<form action="' . DOKU_SCRIPT . '" method="post" accept-charset="utf-8">';
+ echo '<div class="no">';
echo '<input type="hidden" name="id" value="'.$ID.'" />';
if($REV) echo '<input type="hidden" name="rev" value="'.$REV.'" />';
echo '<input type="hidden" name="sectok" value="'.getSecurityToken().'" />';
@@ -1268,36 +1294,42 @@ function tpl_actiondropdown($empty='',$button='&gt;'){
echo '<select name="do" class="edit quickselect">';
echo '<option value="">'.$empty.'</option>';
- echo '<optgroup label=" &mdash; ">';
+ echo '<optgroup label="'.$lang['page_tools'].'">';
$act = tpl_get_action('edit');
if($act) echo '<option value="'.$act['params']['do'].'">'.$lang['btn_'.$act['type']].'</option>';
- $act = tpl_get_action('revisions');
+ $act = tpl_get_action('revert');
if($act) echo '<option value="'.$act['params']['do'].'">'.$lang['btn_'.$act['type']].'</option>';
- $act = tpl_get_action('revert');
+ $act = tpl_get_action('revisions');
if($act) echo '<option value="'.$act['params']['do'].'">'.$lang['btn_'.$act['type']].'</option>';
$act = tpl_get_action('backlink');
if($act) echo '<option value="'.$act['params']['do'].'">'.$lang['btn_'.$act['type']].'</option>';
- echo '</optgroup>';
- echo '<optgroup label=" &mdash; ">';
+ $act = tpl_get_action('subscribe');
+ if($act) echo '<option value="'.$act['params']['do'].'">'.$lang['btn_'.$act['type']].'</option>';
+ echo '</optgroup>';
+
+ echo '<optgroup label="'.$lang['site_tools'].'">';
$act = tpl_get_action('recent');
if($act) echo '<option value="'.$act['params']['do'].'">'.$lang['btn_'.$act['type']].'</option>';
+ $act = tpl_get_action('media');
+ if($act) echo '<option value="'.$act['params']['do'].'">'.$lang['btn_'.$act['type']].'</option>';
+
$act = tpl_get_action('index');
if($act) echo '<option value="'.$act['params']['do'].'">'.$lang['btn_'.$act['type']].'</option>';
echo '</optgroup>';
- echo '<optgroup label=" &mdash; ">';
+ echo '<optgroup label="'.$lang['user_tools'].'">';
$act = tpl_get_action('login');
if($act) echo '<option value="'.$act['params']['do'].'">'.$lang['btn_'.$act['type']].'</option>';
- $act = tpl_get_action('profile');
+ $act = tpl_get_action('register');
if($act) echo '<option value="'.$act['params']['do'].'">'.$lang['btn_'.$act['type']].'</option>';
- $act = tpl_get_action('subscribe');
+ $act = tpl_get_action('profile');
if($act) echo '<option value="'.$act['params']['do'].'">'.$lang['btn_'.$act['type']].'</option>';
$act = tpl_get_action('admin');
@@ -1306,6 +1338,7 @@ function tpl_actiondropdown($empty='',$button='&gt;'){
echo '</select>';
echo '<input type="submit" value="'.$button.'" />';
+ echo '</div>';
echo '</form>';
}
@@ -1315,31 +1348,33 @@ function tpl_actiondropdown($empty='',$button='&gt;'){
* @author Andreas Gohr <andi@splitbrain.org>
* @param string $img - print image? (|button|badge)
* @param bool $return - when true don't print, but return HTML
+ * @param bool $wrap - wrap in div with class="license"?
*/
-function tpl_license($img='badge',$imgonly=false,$return=false){
+function tpl_license($img='badge',$imgonly=false,$return=false,$wrap=true){
global $license;
global $conf;
global $lang;
if(!$conf['license']) return '';
if(!is_array($license[$conf['license']])) return '';
$lic = $license[$conf['license']];
+ $target = ($conf['target']['extern']) ? ' target="'.$conf['target']['extern'].'"' : '';
- $out = '<div class="license">';
+ $out = '';
+ if($wrap) $out .= '<div class="license">';
if($img){
$src = license_img($img);
if($src){
- $out .= '<a href="'.$lic['url'].'" rel="license"';
- if($conf['target']['extern']) $out .= ' target="'.$conf['target']['extern'].'"';
- $out .= '><img src="'.DOKU_BASE.$src.'" class="medialeft lic'.$img.'" alt="'.$lic['name'].'" /></a> ';
+ $out .= '<a href="'.$lic['url'].'" rel="license"'.$target;
+ $out .= '><img src="'.DOKU_BASE.$src.'" alt="'.$lic['name'].'" /></a>';
+ if(!$imgonly) $out .= ' ';
}
}
if(!$imgonly) {
- $out .= $lang['license'];
- $out .= ' <a href="'.$lic['url'].'" rel="license" class="urlextern"';
- if($conf['target']['extern']) $out .= ' target="'.$conf['target']['extern'].'"';
+ $out .= $lang['license'].' ';
+ $out .= '<a href="'.$lic['url'].'" rel="license" class="urlextern"'.$target;
$out .= '>'.$lic['name'].'</a>';
}
- $out .= '</div>';
+ if($wrap) $out .= '</div>';
if($return) return $out;
echo $out;
@@ -1354,9 +1389,12 @@ function tpl_license($img='badge',$imgonly=false,$return=false){
*/
function tpl_include_page($pageid,$print=true){
global $ID;
- $oldid = $ID;
+ global $TOC;
+ $oldid = $ID;
+ $oldtoc = $TOC;
$html = p_wiki_xhtml($pageid,'',false);
- $ID = $oldid;
+ $ID = $oldid;
+ $TOC = $oldtoc;
if(!$print) return $html;
echo $html;
@@ -1445,24 +1483,93 @@ function tpl_flush(){
flush();
}
+/**
+ * Tries to find a ressource file in the given locations.
+ *
+ * If a given location starts with a colon it is assumed to be a media
+ * file, otherwise it is assumed to be relative to the current template
+ *
+ * @param array $search locations to look at
+ * @param bool $abs if to use absolute URL
+ * @param arrayref $imginfo filled with getimagesize()
+ * @author Andreas Gohr <andi@splitbrain.org>
+ */
+function tpl_getMediaFile($search, $abs=false, &$imginfo=null){
+ // loop through candidates until a match was found:
+ foreach($search as $img){
+ if(substr($img,0,1) == ':'){
+ $file = mediaFN($img);
+ $ismedia = true;
+ }else{
+ $file = tpl_incdir().$img;
+ $ismedia = false;
+ }
+
+ if(file_exists($file)) break;
+ }
+
+ // fetch image data if requested
+ if(!is_null($imginfo)){
+ $imginfo = getimagesize($file);
+ }
+
+ // build URL
+ if($ismedia){
+ $url = ml($img, '', true, '', $abs);
+ }else{
+ $url = tpl_basedir().$img;
+ if($abs) $url = DOKU_URL.substr($url, strlen(DOKU_REL));
+ }
+
+ return $url;
+}
/**
- * Returns icon from data/media root directory if it exists, otherwise
- * the one in the template's image directory.
+ * PHP include a file
+ *
+ * either from the conf directory if it exists, otherwise use
+ * file in the template's root directory.
+ *
+ * The function honours config cascade settings and looks for the given
+ * file next to the ´main´ config files, in the order protected, local,
+ * default.
+ *
+ * Note: no escaping or sanity checking is done here. Never pass user input
+ * to this function!
*
- * @param bool $abs - if to use absolute URL
- * @param string $fileName - file name of icon
* @author Anika Henke <anika@selfthinker.org>
+ * @author Andreas Gohr <andi@splitbrain.org>
*/
-function tpl_getFavicon($abs=false, $fileName='favicon.ico') {
- if (file_exists(mediaFN($fileName))) {
- return ml($fileName, '', true, '', $abs);
+function tpl_includeFile($file){
+ global $config_cascade;
+ foreach (array('protected','local','default') as $config_group) {
+ if (empty($config_cascade['main'][$config_group])) continue;
+ foreach ($config_cascade['main'][$config_group] as $conf_file) {
+ $dir = dirname($conf_file);
+ if(file_exists("$dir/$file")){
+ include("$dir/$file");
+ return;
+ }
+ }
}
- if($abs) {
- return DOKU_URL.substr(DOKU_TPL.'images/'.$fileName, strlen(DOKU_REL));
+ // still here? try the template dir
+ $file = tpl_incdir().$file;
+ if(file_exists($file)){
+ include($file);
}
- return DOKU_TPL.'images/'.$fileName;
+}
+
+/**
+ * Returns icon from data/media root directory if it exists, otherwise
+ * the one in the template's image directory.
+ *
+ * @deprecated Use tpl_getMediaFile() instead
+ * @author Anika Henke <anika@selfthinker.org>
+ */
+function tpl_getFavicon($abs=false, $fileName='favicon.ico') {
+ $look = array(":wiki:$fileName", ":$fileName", "images/$fileName");
+ return tpl_getMediaFile($look, $abs);
}
/**
@@ -1478,14 +1585,17 @@ function tpl_favicon($types=array('favicon')) {
foreach ($types as $type) {
switch($type) {
case 'favicon':
- $return .= '<link rel="shortcut icon" href="'.tpl_getFavicon().'" />'.NL;
+ $look = array(':wiki:favicon.ico', ':favicon.ico', 'images/favicon.ico');
+ $return .= '<link rel="shortcut icon" href="'.tpl_getMediaFile($look).'" />'.NL;
break;
case 'mobile':
- $return .= '<link rel="apple-touch-icon" href="'.tpl_getFavicon(false, 'apple-touch-icon.png').'" />'.NL;
+ $look = array(':wiki:apple-touch-icon.png', ':apple-touch-icon.png', 'images/apple-touch-icon.ico');
+ $return .= '<link rel="apple-touch-icon" href="'.tpl_getMediaFile($look).'" />'.NL;
break;
case 'generic':
// ideal world solution, which doesn't work in any browser yet
- $return .= '<link rel="icon" href="'.tpl_getFavicon(false, 'icon.svg').'" type="image/svg+xml" />'.NL;
+ $look = array(':wiki:favicon.svg', ':favicon.svg', 'images/favicon.svg');
+ $return .= '<link rel="icon" href="'.tpl_getMediaFile($look).'" type="image/svg+xml" />'.NL;
break;
}
}
diff --git a/inc/toolbar.php b/inc/toolbar.php
index 02172510e..b588d4477 100644
--- a/inc/toolbar.php
+++ b/inc/toolbar.php
@@ -243,7 +243,7 @@ function toolbar_signature(){
global $INFO;
$sig = $conf['signature'];
- $sig = strftime($sig);
+ $sig = dformat(null,$sig);
$sig = str_replace('@USER@',$_SERVER['REMOTE_USER'],$sig);
$sig = str_replace('@NAME@',$INFO['userinfo']['name'],$sig);
$sig = str_replace('@MAIL@',$INFO['userinfo']['mail'],$sig);
diff --git a/inc/utf8.php b/inc/utf8.php
index 9d0d17f78..54986e14e 100644
--- a/inc/utf8.php
+++ b/inc/utf8.php
@@ -526,7 +526,7 @@ if(!function_exists('utf8_decode_numeric')){
if(!class_exists('utf8_entity_decoder')){
class utf8_entity_decoder {
var $table;
- function utf8_entity_decoder() {
+ function __construct() {
$table = get_html_translation_table(HTML_ENTITIES);
$table = array_flip($table);
$this->table = array_map(array(&$this,'makeutf8'), $table);
diff --git a/install.php b/install.php
index 2f600c925..61db2be9f 100644
--- a/install.php
+++ b/install.php
@@ -49,6 +49,7 @@ $dokuwiki_hash = array(
'2010-11-07' => '7921d48195f4db21b8ead6d9bea801b8',
'2011-05-25' => '4241865472edb6fa14a1227721008072',
'2011-11-10' => 'b46ff19a7587966ac4df61cbab1b8b31',
+ '2012-01-25' => '72c083c73608fc43c586901fd5dabb74',
);
@@ -419,16 +420,18 @@ function check_permissions(){
global $lang;
$dirs = array(
- 'conf' => DOKU_LOCAL,
- 'data' => DOKU_INC.'data',
- 'pages' => DOKU_INC.'data/pages',
- 'attic' => DOKU_INC.'data/attic',
- 'media' => DOKU_INC.'data/media',
- 'meta' => DOKU_INC.'data/meta',
- 'cache' => DOKU_INC.'data/cache',
- 'locks' => DOKU_INC.'data/locks',
- 'index' => DOKU_INC.'data/index',
- 'tmp' => DOKU_INC.'data/tmp'
+ 'conf' => DOKU_LOCAL,
+ 'data' => DOKU_INC.'data',
+ 'pages' => DOKU_INC.'data/pages',
+ 'attic' => DOKU_INC.'data/attic',
+ 'media' => DOKU_INC.'data/media',
+ 'media_attic' => DOKU_INC.'data/media_attic',
+ 'media_meta' => DOKU_INC.'data/media_meta',
+ 'meta' => DOKU_INC.'data/meta',
+ 'cache' => DOKU_INC.'data/cache',
+ 'locks' => DOKU_INC.'data/locks',
+ 'index' => DOKU_INC.'data/index',
+ 'tmp' => DOKU_INC.'data/tmp'
);
$ok = true;
diff --git a/lib/exe/ajax.php b/lib/exe/ajax.php
index f8d62cb57..3d1584244 100644
--- a/lib/exe/ajax.php
+++ b/lib/exe/ajax.php
@@ -6,11 +6,6 @@
* @author Andreas Gohr <andi@splitbrain.org>
*/
-//fix for Opera XMLHttpRequests
-if(!count($_POST) && !empty($HTTP_RAW_POST_DATA)){
- parse_str($HTTP_RAW_POST_DATA, $_POST);
-}
-
if(!defined('DOKU_INC')) define('DOKU_INC',dirname(__FILE__).'/../../');
require_once(DOKU_INC.'inc/init.php');
//close session
@@ -54,6 +49,8 @@ function ajax_qsearch(){
if(empty($query)) $query = $_GET['q'];
if(empty($query)) return;
+ $query = urldecode($query);
+
$data = ft_pageLookup($query, true, useHeading('navigation'));
if(!count($data)) return;
@@ -257,7 +254,7 @@ function ajax_mediaupload(){
$id = $_GET['qqfile'];
}
- $id = cleanID($id, false, true);
+ $id = cleanID($id);
$NS = $_REQUEST['ns'];
$ns = $NS.':'.getNS($id);
diff --git a/lib/exe/css.php b/lib/exe/css.php
index d54e2e46c..69b512205 100644
--- a/lib/exe/css.php
+++ b/lib/exe/css.php
@@ -41,8 +41,8 @@ function css_out(){
$tplinc = DOKU_INC.'lib/tpl/'.$tpl.'/';
$tpldir = DOKU_BASE.'lib/tpl/'.$tpl.'/';
}else{
- $tplinc = DOKU_TPLINC;
- $tpldir = DOKU_TPL;
+ $tplinc = tpl_incdir();
+ $tpldir = tpl_basedir();
}
// The generated script depends on some dynamic options
diff --git a/lib/exe/js.php b/lib/exe/js.php
index b7f2fd222..4b72014b2 100644
--- a/lib/exe/js.php
+++ b/lib/exe/js.php
@@ -32,8 +32,8 @@ function js_out(){
global $config_cascade;
// The generated script depends on some dynamic options
- $cache = new cache('scripts'.$_SERVER['HTTP_HOST'].$_SERVER['SERVER_PORT'],
- '.js');
+ $cache = new cache('scripts'.$_SERVER['HTTP_HOST'].$_SERVER['SERVER_PORT'],'.js');
+ $cache->_event = 'JS_CACHE_USE';
// load minified version for some files
$min = $conf['compress'] ? '.min' : '';
@@ -65,7 +65,7 @@ function js_out(){
# disabled for FS#1958 DOKU_INC.'lib/scripts/hotkeys.js',
DOKU_INC.'lib/scripts/behaviour.js',
DOKU_INC.'lib/scripts/page.js',
- DOKU_TPLINC.'script.js',
+ tpl_incdir().'script.js',
);
// add possible plugin scripts and userscript
@@ -79,15 +79,15 @@ function js_out(){
// check cache age & handle conditional request
// This may exit if a cache can be used
- http_cached($cache->cache,
- $cache->useCache(array('files' => $cache_files)));
+ $cache_ok = $cache->useCache(array('files' => $cache_files));
+ http_cached($cache->cache, $cache_ok);
// start output buffering and build the script
ob_start();
// add some global variables
print "var DOKU_BASE = '".DOKU_BASE."';";
- print "var DOKU_TPL = '".DOKU_TPL."';";
+ print "var DOKU_TPL = '".tpl_basedir()."';";
// FIXME: Move those to JSINFO
print "var DOKU_UHN = ".((int) useHeading('navigation')).";";
print "var DOKU_UHC = ".((int) useHeading('content')).";";
diff --git a/lib/exe/opensearch.php b/lib/exe/opensearch.php
index 03a1632c4..73939c347 100644
--- a/lib/exe/opensearch.php
+++ b/lib/exe/opensearch.php
@@ -16,9 +16,9 @@ require_once(DOKU_INC.'inc/init.php');
// try to be clever about the favicon location
if(file_exists(DOKU_INC.'favicon.ico')){
$ico = DOKU_URL.'favicon.ico';
-}elseif(file_exists(DOKU_TPLINC.'images/favicon.ico')){
+}elseif(file_exists(tpl_incdir().'images/favicon.ico')){
$ico = DOKU_URL.'lib/tpl/'.$conf['template'].'/images/favicon.ico';
-}elseif(file_exists(DOKU_TPLINC.'favicon.ico')){
+}elseif(file_exists(tpl_incdir().'favicon.ico')){
$ico = DOKU_URL.'lib/tpl/'.$conf['template'].'/favicon.ico';
}else{
$ico = DOKU_URL.'lib/tpl/default/images/favicon.ico';
diff --git a/lib/exe/xmlrpc.php b/lib/exe/xmlrpc.php
index e5e3298ae..cf3682f11 100644
--- a/lib/exe/xmlrpc.php
+++ b/lib/exe/xmlrpc.php
@@ -1,886 +1,51 @@
<?php
if(!defined('DOKU_INC')) define('DOKU_INC',dirname(__FILE__).'/../../');
-// fix when '< ?xml' isn't on the very first line
-if(isset($HTTP_RAW_POST_DATA)) $HTTP_RAW_POST_DATA = trim($HTTP_RAW_POST_DATA);
-
-/**
- * Increased whenever the API is changed
- */
-define('DOKU_XMLRPC_API_VERSION', 6);
-
require_once(DOKU_INC.'inc/init.php');
session_write_close(); //close session
-if(!$conf['xmlrpc']) die('XML-RPC server not enabled.');
+if(!$conf['remote']) die('XML-RPC server not enabled.');
/**
* Contains needed wrapper functions and registers all available
* XMLRPC functions.
*/
-class dokuwiki_xmlrpc_server extends IXR_IntrospectionServer {
- var $methods = array();
- var $public_methods = array();
-
- /**
- * Checks if the current user is allowed to execute non anonymous methods
- */
- function checkAuth(){
- global $conf;
- global $USERINFO;
-
- if(!$conf['useacl']) return true; //no ACL - then no checks
- if(trim($conf['xmlrpcuser']) == '') return true; //no restrictions
-
- return auth_isMember($conf['xmlrpcuser'],$_SERVER['REMOTE_USER'],(array) $USERINFO['grps']);
- }
+class dokuwiki_xmlrpc_server extends IXR_Server {
+ var $remote;
/**
- * Adds a callback, extends parent method
- *
- * add another parameter to define if anonymous access to
- * this method should be granted.
+ * Constructor. Register methods and run Server
*/
- function addCallback($method, $callback, $args, $help, $public=false){
- if($public) $this->public_methods[] = $method;
- return parent::addCallback($method, $callback, $args, $help);
+ function dokuwiki_xmlrpc_server(){
+ $this->remote = new RemoteAPI();
+ $this->remote->setDateTransformation(array($this, 'toDate'));
+ $this->remote->setFileTransformation(array($this, 'toFile'));
+ $this->IXR_Server();
}
- /**
- * Execute a call, extends parent method
- *
- * Checks for authentication first
- */
function call($methodname, $args){
- if(!in_array($methodname,$this->public_methods) && !$this->checkAuth()){
+ try {
+ $result = $this->remote->call($methodname, $args);
+ return $result;
+ } catch (RemoteAccessDeniedException $e) {
if (!isset($_SERVER['REMOTE_USER'])) {
header('HTTP/1.1 401 Unauthorized');
} else {
header('HTTP/1.1 403 Forbidden');
}
- return new IXR_Error(-32603, 'server error. not authorized to call method "'.$methodname.'".');
- }
- return parent::call($methodname, $args);
- }
-
- /**
- * Constructor. Register methods and run Server
- */
- function dokuwiki_xmlrpc_server(){
- $this->IXR_IntrospectionServer();
-
- /* DokuWiki's own methods */
- $this->addCallback(
- 'dokuwiki.getXMLRPCAPIVersion',
- 'this:getAPIVersion',
- array('integer'),
- 'Returns the XMLRPC API version.',
- true
- );
-
- $this->addCallback(
- 'dokuwiki.getVersion',
- 'getVersion',
- array('string'),
- 'Returns the running DokuWiki version.',
- true
- );
-
- $this->addCallback(
- 'dokuwiki.login',
- 'this:login',
- array('integer','string','string'),
- 'Tries to login with the given credentials and sets auth cookies.',
- true
- );
-
- $this->addCallback(
- 'dokuwiki.getPagelist',
- 'this:readNamespace',
- array('struct','string','struct'),
- 'List all pages within the given namespace.'
- );
-
- $this->addCallback(
- 'dokuwiki.search',
- 'this:search',
- array('struct','string'),
- 'Perform a fulltext search and return a list of matching pages'
- );
-
- $this->addCallback(
- 'dokuwiki.getTime',
- 'time',
- array('int'),
- 'Return the current time at the wiki server.'
- );
-
- $this->addCallback(
- 'dokuwiki.setLocks',
- 'this:setLocks',
- array('struct','struct'),
- 'Lock or unlock pages.'
- );
-
-
- $this->addCallback(
- 'dokuwiki.getTitle',
- 'this:getTitle',
- array('string'),
- 'Returns the wiki title.',
- true
- );
-
- $this->addCallback(
- 'dokuwiki.appendPage',
- 'this:appendPage',
- array('int', 'string', 'string', 'struct'),
- 'Append text to a wiki page.'
- );
-
- /* Wiki API v2 http://www.jspwiki.org/wiki/WikiRPCInterface2 */
- $this->addCallback(
- 'wiki.getRPCVersionSupported',
- 'this:wiki_RPCVersion',
- array('int'),
- 'Returns 2 with the supported RPC API version.',
- true
- );
- $this->addCallback(
- 'wiki.getPage',
- 'this:rawPage',
- array('string','string'),
- 'Get the raw Wiki text of page, latest version.'
- );
- $this->addCallback(
- 'wiki.getPageVersion',
- 'this:rawPage',
- array('string','string','int'),
- 'Get the raw Wiki text of page.'
- );
- $this->addCallback(
- 'wiki.getPageHTML',
- 'this:htmlPage',
- array('string','string'),
- 'Return page in rendered HTML, latest version.'
- );
- $this->addCallback(
- 'wiki.getPageHTMLVersion',
- 'this:htmlPage',
- array('string','string','int'),
- 'Return page in rendered HTML.'
- );
- $this->addCallback(
- 'wiki.getAllPages',
- 'this:listPages',
- array('struct'),
- 'Returns a list of all pages. The result is an array of utf8 pagenames.'
- );
- $this->addCallback(
- 'wiki.getAttachments',
- 'this:listAttachments',
- array('struct', 'string', 'struct'),
- 'Returns a list of all media files.'
- );
- $this->addCallback(
- 'wiki.getBackLinks',
- 'this:listBackLinks',
- array('struct','string'),
- 'Returns the pages that link to this page.'
- );
- $this->addCallback(
- 'wiki.getPageInfo',
- 'this:pageInfo',
- array('struct','string'),
- 'Returns a struct with infos about the page.'
- );
- $this->addCallback(
- 'wiki.getPageInfoVersion',
- 'this:pageInfo',
- array('struct','string','int'),
- 'Returns a struct with infos about the page.'
- );
- $this->addCallback(
- 'wiki.getPageVersions',
- 'this:pageVersions',
- array('struct','string','int'),
- 'Returns the available revisions of the page.'
- );
- $this->addCallback(
- 'wiki.putPage',
- 'this:putPage',
- array('int', 'string', 'string', 'struct'),
- 'Saves a wiki page.'
- );
- $this->addCallback(
- 'wiki.listLinks',
- 'this:listLinks',
- array('struct','string'),
- 'Lists all links contained in a wiki page.'
- );
- $this->addCallback(
- 'wiki.getRecentChanges',
- 'this:getRecentChanges',
- array('struct','int'),
- 'Returns a struct about all recent changes since given timestamp.'
- );
- $this->addCallback(
- 'wiki.getRecentMediaChanges',
- 'this:getRecentMediaChanges',
- array('struct','int'),
- 'Returns a struct about all recent media changes since given timestamp.'
- );
- $this->addCallback(
- 'wiki.aclCheck',
- 'this:aclCheck',
- array('int', 'string'),
- 'Returns the permissions of a given wiki page.'
- );
- $this->addCallback(
- 'wiki.putAttachment',
- 'this:putAttachment',
- array('struct', 'string', 'base64', 'struct'),
- 'Upload a file to the wiki.'
- );
- $this->addCallback(
- 'wiki.deleteAttachment',
- 'this:deleteAttachment',
- array('int', 'string'),
- 'Delete a file from the wiki.'
- );
- $this->addCallback(
- 'wiki.getAttachment',
- 'this:getAttachment',
- array('base64', 'string'),
- 'Download a file from the wiki.'
- );
- $this->addCallback(
- 'wiki.getAttachmentInfo',
- 'this:getAttachmentInfo',
- array('struct', 'string'),
- 'Returns a struct with infos about the attachment.'
- );
-
- /**
- * Trigger XMLRPC_CALLBACK_REGISTER, action plugins can use this event
- * to extend the XMLRPC interface and register their own callbacks.
- *
- * Event data:
- * The XMLRPC server object:
- *
- * $event->data->addCallback() - register a callback, the second
- * paramter has to be of the form "plugin:<pluginname>:<plugin
- * method>"
- *
- * $event->data->callbacks - an array which holds all awaylable
- * callbacks
- */
- trigger_event('XMLRPC_CALLBACK_REGISTER', $this);
-
- $this->serve();
- }
-
- /**
- * Return a raw wiki page
- */
- function rawPage($id,$rev=''){
- $id = cleanID($id);
- if(auth_quickaclcheck($id) < AUTH_READ){
- return new IXR_Error(1, 'You are not allowed to read this page');
- }
- $text = rawWiki($id,$rev);
- if(!$text) {
- return pageTemplate($id);
- } else {
- return $text;
- }
- }
-
- /**
- * Return a media file encoded in base64
- *
- * @author Gina Haeussge <osd@foosel.net>
- */
- function getAttachment($id){
- $id = cleanID($id);
- if (auth_quickaclcheck(getNS($id).':*') < AUTH_READ)
- return new IXR_Error(1, 'You are not allowed to read this file');
-
- $file = mediaFN($id);
- if (!@ file_exists($file))
- return new IXR_Error(1, 'The requested file does not exist');
-
- $data = io_readFile($file, false);
- $base64 = base64_encode($data);
- return $base64;
- }
-
- /**
- * Return info about a media file
- *
- * @author Gina Haeussge <osd@foosel.net>
- */
- function getAttachmentInfo($id){
- $id = cleanID($id);
- $info = array(
- 'lastModified' => 0,
- 'size' => 0,
- );
-
- $file = mediaFN($id);
- if ((auth_quickaclcheck(getNS($id).':*') >= AUTH_READ) && file_exists($file)){
- $info['lastModified'] = new IXR_Date(filemtime($file));
- $info['size'] = filesize($file);
- }
-
- return $info;
- }
-
- /**
- * Return a wiki page rendered to html
- */
- function htmlPage($id,$rev=''){
- $id = cleanID($id);
- if(auth_quickaclcheck($id) < AUTH_READ){
- return new IXR_Error(1, 'You are not allowed to read this page');
- }
- return p_wiki_xhtml($id,$rev,false);
- }
-
- /**
- * List all pages - we use the indexer list here
- */
- function listPages(){
- $list = array();
- $pages = idx_get_indexer()->getPages();
- $pages = array_filter(array_filter($pages,'isVisiblePage'),'page_exists');
-
- foreach(array_keys($pages) as $idx) {
- $perm = auth_quickaclcheck($pages[$idx]);
- if($perm < AUTH_READ) {
- continue;
- }
- $page = array();
- $page['id'] = trim($pages[$idx]);
- $page['perms'] = $perm;
- $page['size'] = @filesize(wikiFN($pages[$idx]));
- $page['lastModified'] = new IXR_Date(@filemtime(wikiFN($pages[$idx])));
- $list[] = $page;
- }
-
- return $list;
- }
-
- /**
- * List all pages in the given namespace (and below)
- */
- function readNamespace($ns,$opts){
- global $conf;
-
- if(!is_array($opts)) $opts=array();
-
- $ns = cleanID($ns);
- $dir = utf8_encodeFN(str_replace(':', '/', $ns));
- $data = array();
- $opts['skipacl'] = 0; // no ACL skipping for XMLRPC
- search($data, $conf['datadir'], 'search_allpages', $opts, $dir);
- return $data;
- }
-
- /**
- * List all pages in the given namespace (and below)
- */
- function search($query){
- require_once(DOKU_INC.'inc/fulltext.php');
-
- $regex = '';
- $data = ft_pageSearch($query,$regex);
- $pages = array();
-
- // prepare additional data
- $idx = 0;
- foreach($data as $id => $score){
- $file = wikiFN($id);
-
- if($idx < FT_SNIPPET_NUMBER){
- $snippet = ft_snippet($id,$regex);
- $idx++;
- }else{
- $snippet = '';
- }
-
- $pages[] = array(
- 'id' => $id,
- 'score' => $score,
- 'rev' => filemtime($file),
- 'mtime' => filemtime($file),
- 'size' => filesize($file),
- 'snippet' => $snippet,
- );
- }
- return $pages;
- }
-
- /**
- * Returns the wiki title.
- */
- function getTitle(){
- global $conf;
- return $conf['title'];
- }
-
- /**
- * List all media files.
- *
- * Available options are 'recursive' for also including the subnamespaces
- * in the listing, and 'pattern' for filtering the returned files against
- * a regular expression matching their name.
- *
- * @author Gina Haeussge <osd@foosel.net>
- */
- function listAttachments($ns, $options = array()) {
- global $conf;
- global $lang;
-
- $ns = cleanID($ns);
-
- if (!is_array($options)) $options = array();
- $options['skipacl'] = 0; // no ACL skipping for XMLRPC
-
-
- if(auth_quickaclcheck($ns.':*') >= AUTH_READ) {
- $dir = utf8_encodeFN(str_replace(':', '/', $ns));
-
- $data = array();
- search($data, $conf['mediadir'], 'search_media', $options, $dir);
- $len = count($data);
- if(!$len) return array();
-
- for($i=0; $i<$len; $i++) {
- unset($data[$i]['meta']);
- $data[$i]['lastModified'] = new IXR_Date($data[$i]['mtime']);
- }
- return $data;
- } else {
- return new IXR_Error(1, 'You are not allowed to list media files.');
- }
- }
-
- /**
- * Return a list of backlinks
- */
- function listBackLinks($id){
- return ft_backlinks(cleanID($id));
- }
-
- /**
- * Return some basic data about a page
- */
- function pageInfo($id,$rev=''){
- $id = cleanID($id);
- if(auth_quickaclcheck($id) < AUTH_READ){
- return new IXR_Error(1, 'You are not allowed to read this page');
- }
- $file = wikiFN($id,$rev);
- $time = @filemtime($file);
- if(!$time){
- return new IXR_Error(10, 'The requested page does not exist');
- }
-
- $info = getRevisionInfo($id, $time, 1024);
-
- $data = array(
- 'name' => $id,
- 'lastModified' => new IXR_Date($time),
- 'author' => (($info['user']) ? $info['user'] : $info['ip']),
- 'version' => $time
- );
-
- return ($data);
- }
-
- /**
- * Save a wiki page
- *
- * @author Michael Klier <chi@chimeric.de>
- */
- function putPage($id, $text, $params) {
- global $TEXT;
- global $lang;
- global $conf;
-
- $id = cleanID($id);
- $TEXT = cleanText($text);
- $sum = $params['sum'];
- $minor = $params['minor'];
-
- if(empty($id))
- return new IXR_Error(1, 'Empty page ID');
-
- if(!page_exists($id) && trim($TEXT) == '' ) {
- return new IXR_ERROR(1, 'Refusing to write an empty new wiki page');
- }
-
- if(auth_quickaclcheck($id) < AUTH_EDIT)
- return new IXR_Error(1, 'You are not allowed to edit this page');
-
- // Check, if page is locked
- if(checklock($id))
- return new IXR_Error(1, 'The page is currently locked');
-
- // SPAM check
- if(checkwordblock())
- return new IXR_Error(1, 'Positive wordblock check');
-
- // autoset summary on new pages
- if(!page_exists($id) && empty($sum)) {
- $sum = $lang['created'];
- }
-
- // autoset summary on deleted pages
- if(page_exists($id) && empty($TEXT) && empty($sum)) {
- $sum = $lang['deleted'];
- }
-
- lock($id);
-
- saveWikiText($id,$TEXT,$sum,$minor);
-
- unlock($id);
-
- // run the indexer if page wasn't indexed yet
- idx_addPage($id);
-
- return 0;
- }
-
- /**
- * Appends text to a wiki page.
- */
- function appendPage($id, $text, $params) {
- $currentpage = $this->rawPage($id);
- if (!is_string($currentpage)) {
- return $currentpage;
- }
- return $this->putPage($id, $currentpage.$text, $params);
- }
-
- /**
- * Uploads a file to the wiki.
- *
- * Michael Klier <chi@chimeric.de>
- */
- function putAttachment($id, $file, $params) {
- $id = cleanID($id);
- $auth = auth_quickaclcheck(getNS($id).':*');
-
- if(!isset($id)) {
- return new IXR_ERROR(1, 'Filename not given.');
- }
-
- global $conf;
-
- $ftmp = $conf['tmpdir'] . '/' . md5($id.clientIP());
-
- // save temporary file
- @unlink($ftmp);
- if (preg_match('/^[A-Za-z0-9\+\/]*={0,2}$/', $file) === 1) {
- // DEPRECATED: Double-decode file if it still looks like base64
- // after first decoding (which is done by the library)
- $file = base64_decode($file);
- }
- io_saveFile($ftmp, $file);
-
- $res = media_save(array('name' => $ftmp), $id, $params['ow'], $auth, 'rename');
- if (is_array($res)) {
- return new IXR_ERROR(-$res[1], $res[0]);
- } else {
- return $res;
- }
- }
-
- /**
- * Deletes a file from the wiki.
- *
- * @author Gina Haeussge <osd@foosel.net>
- */
- function deleteAttachment($id){
- $id = cleanID($id);
- $auth = auth_quickaclcheck(getNS($id).':*');
- $res = media_delete($id, $auth);
- if ($res & DOKU_MEDIA_DELETED) {
- return 0;
- } elseif ($res & DOKU_MEDIA_NOT_AUTH) {
- return new IXR_ERROR(1, "You don't have permissions to delete files.");
- } elseif ($res & DOKU_MEDIA_INUSE) {
- return new IXR_ERROR(1, 'File is still referenced');
- } else {
- return new IXR_ERROR(1, 'Could not delete file');
- }
- }
-
- /**
- * Returns the permissions of a given wiki page
- */
- function aclCheck($id) {
- $id = cleanID($id);
- return auth_quickaclcheck($id);
- }
-
- /**
- * Lists all links contained in a wiki page
- *
- * @author Michael Klier <chi@chimeric.de>
- */
- function listLinks($id) {
- $id = cleanID($id);
- if(auth_quickaclcheck($id) < AUTH_READ){
- return new IXR_Error(1, 'You are not allowed to read this page');
- }
- $links = array();
-
- // resolve page instructions
- $ins = p_cached_instructions(wikiFN($id));
-
- // instantiate new Renderer - needed for interwiki links
- include(DOKU_INC.'inc/parser/xhtml.php');
- $Renderer = new Doku_Renderer_xhtml();
- $Renderer->interwiki = getInterwiki();
-
- // parse parse instructions
- foreach($ins as $in) {
- $link = array();
- switch($in[0]) {
- case 'internallink':
- $link['type'] = 'local';
- $link['page'] = $in[1][0];
- $link['href'] = wl($in[1][0]);
- array_push($links,$link);
- break;
- case 'externallink':
- $link['type'] = 'extern';
- $link['page'] = $in[1][0];
- $link['href'] = $in[1][0];
- array_push($links,$link);
- break;
- case 'interwikilink':
- $url = $Renderer->_resolveInterWiki($in[1][2],$in[1][3]);
- $link['type'] = 'extern';
- $link['page'] = $url;
- $link['href'] = $url;
- array_push($links,$link);
- break;
- }
- }
-
- return ($links);
- }
-
- /**
- * Returns a list of recent changes since give timestamp
- *
- * @author Michael Hamann <michael@content-space.de>
- * @author Michael Klier <chi@chimeric.de>
- */
- function getRecentChanges($timestamp) {
- if(strlen($timestamp) != 10)
- return new IXR_Error(20, 'The provided value is not a valid timestamp');
-
- $recents = getRecentsSince($timestamp);
-
- $changes = array();
-
- foreach ($recents as $recent) {
- $change = array();
- $change['name'] = $recent['id'];
- $change['lastModified'] = new IXR_Date($recent['date']);
- $change['author'] = $recent['user'];
- $change['version'] = $recent['date'];
- $change['perms'] = $recent['perms'];
- $change['size'] = @filesize(wikiFN($recent['id']));
- array_push($changes, $change);
- }
-
- if (!empty($changes)) {
- return $changes;
- } else {
- // in case we still have nothing at this point
- return new IXR_Error(30, 'There are no changes in the specified timeframe');
- }
- }
-
- /**
- * Returns a list of recent media changes since give timestamp
- *
- * @author Michael Hamann <michael@content-space.de>
- * @author Michael Klier <chi@chimeric.de>
- */
- function getRecentMediaChanges($timestamp) {
- if(strlen($timestamp) != 10)
- return new IXR_Error(20, 'The provided value is not a valid timestamp');
-
- $recents = getRecentsSince($timestamp, null, '', RECENTS_MEDIA_CHANGES);
-
- $changes = array();
-
- foreach ($recents as $recent) {
- $change = array();
- $change['name'] = $recent['id'];
- $change['lastModified'] = new IXR_Date($recent['date']);
- $change['author'] = $recent['user'];
- $change['version'] = $recent['date'];
- $change['perms'] = $recent['perms'];
- $change['size'] = @filesize(mediaFN($recent['id']));
- array_push($changes, $change);
- }
-
- if (!empty($changes)) {
- return $changes;
- } else {
- // in case we still have nothing at this point
- return new IXR_Error(30, 'There are no changes in the specified timeframe');
- }
- }
-
- /**
- * Returns a list of available revisions of a given wiki page
- *
- * @author Michael Klier <chi@chimeric.de>
- */
- function pageVersions($id, $first) {
- $id = cleanID($id);
- if(auth_quickaclcheck($id) < AUTH_READ){
- return new IXR_Error(1, 'You are not allowed to read this page');
- }
- global $conf;
-
- $versions = array();
-
- if(empty($id))
- return new IXR_Error(1, 'Empty page ID');
-
- $revisions = getRevisions($id, $first, $conf['recent']+1);
-
- if(count($revisions)==0 && $first!=0) {
- $first=0;
- $revisions = getRevisions($id, $first, $conf['recent']+1);
- }
-
- if(count($revisions)>0 && $first==0) {
- array_unshift($revisions, ''); // include current revision
- array_pop($revisions); // remove extra log entry
- }
-
- $hasNext = false;
- if(count($revisions)>$conf['recent']) {
- $hasNext = true;
- array_pop($revisions); // remove extra log entry
- }
-
- if(!empty($revisions)) {
- foreach($revisions as $rev) {
- $file = wikiFN($id,$rev);
- $time = @filemtime($file);
- // we check if the page actually exists, if this is not the
- // case this can lead to less pages being returned than
- // specified via $conf['recent']
- if($time){
- $info = getRevisionInfo($id, $time, 1024);
- if(!empty($info)) {
- $data['user'] = $info['user'];
- $data['ip'] = $info['ip'];
- $data['type'] = $info['type'];
- $data['sum'] = $info['sum'];
- $data['modified'] = new IXR_Date($info['date']);
- $data['version'] = $info['date'];
- array_push($versions, $data);
- }
- }
- }
- return $versions;
- } else {
- return array();
- }
- }
-
- /**
- * The version of Wiki RPC API supported
- */
- function wiki_RPCVersion(){
- return 2;
- }
-
-
- /**
- * Locks or unlocks a given batch of pages
- *
- * Give an associative array with two keys: lock and unlock. Both should contain a
- * list of pages to lock or unlock
- *
- * Returns an associative array with the keys locked, lockfail, unlocked and
- * unlockfail, each containing lists of pages.
- */
- function setLocks($set){
- $locked = array();
- $lockfail = array();
- $unlocked = array();
- $unlockfail = array();
-
- foreach((array) $set['lock'] as $id){
- $id = cleanID($id);
- if(auth_quickaclcheck($id) < AUTH_EDIT || checklock($id)){
- $lockfail[] = $id;
- }else{
- lock($id);
- $locked[] = $id;
- }
- }
-
- foreach((array) $set['unlock'] as $id){
- $id = cleanID($id);
- if(auth_quickaclcheck($id) < AUTH_EDIT || !unlock($id)){
- $unlockfail[] = $id;
- }else{
- $unlocked[] = $id;
- }
+ return new IXR_Error(-32603, "server error. not authorized to call method $methodname");
+ } catch (RemoteException $e) {
+ return new IXR_Error($e->getCode(), $e->getMessage());
}
-
- return array(
- 'locked' => $locked,
- 'lockfail' => $lockfail,
- 'unlocked' => $unlocked,
- 'unlockfail' => $unlockfail,
- );
}
- function getAPIVersion(){
- return DOKU_XMLRPC_API_VERSION;
+ function toDate($data) {
+ return new IXR_Date($data);
}
- function login($user,$pass){
- global $conf;
- global $auth;
- if(!$conf['useacl']) return 0;
- if(!$auth) return 0;
-
- @session_start(); // reopen session for login
- if($auth->canDo('external')){
- $ok = $auth->trustExternal($user,$pass,false);
- }else{
- $evdata = array(
- 'user' => $user,
- 'password' => $pass,
- 'sticky' => false,
- 'silent' => true,
- );
- $ok = trigger_event('AUTH_LOGIN_CHECK', $evdata, 'auth_login_wrapper');
- }
- session_write_close(); // we're done with the session
-
- return $ok;
+ function toFile($data) {
+ return new IXR_Base64($data);
}
-
-
}
$server = new dokuwiki_xmlrpc_server();
diff --git a/lib/images/arrow_down.gif b/lib/images/arrow_down.gif
deleted file mode 100644
index ff13b9585..000000000
--- a/lib/images/arrow_down.gif
+++ /dev/null
Binary files differ
diff --git a/lib/images/arrow_up.gif b/lib/images/arrow_up.gif
deleted file mode 100644
index d491c18db..000000000
--- a/lib/images/arrow_up.gif
+++ /dev/null
Binary files differ
diff --git a/lib/images/at.gif b/lib/images/at.gif
deleted file mode 100644
index 8bdf40d54..000000000
--- a/lib/images/at.gif
+++ /dev/null
Binary files differ
diff --git a/lib/images/close.png b/lib/images/close.png
deleted file mode 100644
index 4ccef0603..000000000
--- a/lib/images/close.png
+++ /dev/null
Binary files differ
diff --git a/lib/images/del.png b/lib/images/del.png
deleted file mode 100644
index e59ded55f..000000000
--- a/lib/images/del.png
+++ /dev/null
Binary files differ
diff --git a/lib/images/edit.gif b/lib/images/edit.gif
deleted file mode 100644
index a2a23de7b..000000000
--- a/lib/images/edit.gif
+++ /dev/null
Binary files differ
diff --git a/lib/images/icon-file.png b/lib/images/icon-file.png
deleted file mode 100644
index d350c8c31..000000000
--- a/lib/images/icon-file.png
+++ /dev/null
Binary files differ
diff --git a/lib/images/icon-thumb.png b/lib/images/icon-thumb.png
deleted file mode 100644
index ccc7a101d..000000000
--- a/lib/images/icon-thumb.png
+++ /dev/null
Binary files differ
diff --git a/lib/images/list-minus.gif b/lib/images/list-minus.gif
deleted file mode 100644
index 36902f159..000000000
--- a/lib/images/list-minus.gif
+++ /dev/null
Binary files differ
diff --git a/lib/images/list-plus.gif b/lib/images/list-plus.gif
deleted file mode 100644
index adc3fac8a..000000000
--- a/lib/images/list-plus.gif
+++ /dev/null
Binary files differ
diff --git a/lib/images/pencil.png b/lib/images/pencil.png
deleted file mode 100644
index 78142b61e..000000000
--- a/lib/images/pencil.png
+++ /dev/null
Binary files differ
diff --git a/lib/plugins/acl/admin.php b/lib/plugins/acl/admin.php
index a6b0624bc..c3461b78b 100644
--- a/lib/plugins/acl/admin.php
+++ b/lib/plugins/acl/admin.php
@@ -597,6 +597,7 @@ class admin_plugin_acl extends DokuWiki_Admin_Plugin {
echo '<input type="hidden" name="do" value="admin" />'.NL;
echo '<input type="hidden" name="page" value="acl" />'.NL;
echo '<input type="hidden" name="sectok" value="'.getSecurityToken().'" />'.NL;
+ echo '<div class="table">';
echo '<table class="inline">';
echo '<tr>';
echo '<th>'.$this->getLang('where').'</th>';
@@ -642,6 +643,7 @@ class admin_plugin_acl extends DokuWiki_Admin_Plugin {
echo '</th>';
echo '</tr>';
echo '</table>';
+ echo '</div>';
echo '</div></form>'.NL;
}
diff --git a/lib/plugins/acl/ajax.php b/lib/plugins/acl/ajax.php
index d704fa8c9..3a5d89c08 100644
--- a/lib/plugins/acl/ajax.php
+++ b/lib/plugins/acl/ajax.php
@@ -6,16 +6,17 @@
* @author Andreas Gohr <andi@splitbrain.org>
*/
-//fix for Opera XMLHttpRequests
-if(!count($_POST) && $HTTP_RAW_POST_DATA){
- parse_str($HTTP_RAW_POST_DATA, $_POST);
-}
-
if(!defined('DOKU_INC')) define('DOKU_INC',dirname(__FILE__).'/../../../');
require_once(DOKU_INC.'inc/init.php');
//close session
session_write_close();
+//fix for Opera XMLHttpRequests
+$postData = http_get_raw_post_data();
+if(!count($_POST) && !empty($postData)){
+ parse_str($postData, $_POST);
+}
+
if(!auth_isadmin()) die('for admins only');
if(!checkSecurityToken()) die('CRSF Attack');
diff --git a/lib/plugins/acl/lang/cs/lang.php b/lib/plugins/acl/lang/cs/lang.php
index 7c1efbd4c..a1dce0369 100644
--- a/lib/plugins/acl/lang/cs/lang.php
+++ b/lib/plugins/acl/lang/cs/lang.php
@@ -9,6 +9,8 @@
* @author Marek Sacha <sachamar@fel.cvut.cz>
* @author Lefty <lefty@multihost.cz>
* @author Vojta Beran <xmamut@email.cz>
+ * @author zbynek.krivka@seznam.cz
+ * @author Bohumir Zamecnik <bohumir.zamecnik@gmail.com>
*/
$lang['admin_acl'] = 'Správa přístupových práv';
$lang['acl_group'] = 'Skupina';
diff --git a/lib/plugins/acl/lang/fr/help.txt b/lib/plugins/acl/lang/fr/help.txt
index f748f6b23..158ec92ed 100644
--- a/lib/plugins/acl/lang/fr/help.txt
+++ b/lib/plugins/acl/lang/fr/help.txt
@@ -2,8 +2,8 @@
Cette page vous permet d'ajouter ou de supprimer des permissions pour les catégories et les pages de votre wiki. Le panneau de gauche liste toutes les catégories et les pages disponibles.
-Le formulaire au-dessus permet d'afficher et de modifier les permissions d'un utilisateur ou d'un groupe sélectionné.
+Le formulaire ci-dessus permet d'afficher et de modifier les permissions d'un utilisateur ou d'un groupe sélectionné.
Dans le tableau ci-dessous, toutes les listes de contrôle d'accès actuelles sont affichées. Vous pouvez l'utiliser pour supprimer ou modifier rapidement plusieurs ACL.
-La lecture de [[doku>acl|la documentation officielle des ACL]] pourra vous permettre de bien comprendre le fonctionnement du contrôle d'accès dans DokuWiki.
+La lecture de [[doku>fr:acl|la documentation officielle des ACL]] pourra vous permettre de bien comprendre le fonctionnement du contrôle d'accès dans DokuWiki.
diff --git a/lib/plugins/acl/lang/fr/lang.php b/lib/plugins/acl/lang/fr/lang.php
index 86f493b52..a33a52bf0 100644
--- a/lib/plugins/acl/lang/fr/lang.php
+++ b/lib/plugins/acl/lang/fr/lang.php
@@ -21,6 +21,7 @@
* @author Samuel Dorsaz samuel.dorsaz@novelion.net
* @author Johan Guilbaud <guilbaud.johan@gmail.com>
* @author schplurtz@laposte.net
+ * @author skimpax@gmail.com
*/
$lang['admin_acl'] = 'Gestion de la liste des contrôles d\'accès (ACL)';
$lang['acl_group'] = 'Groupe';
diff --git a/lib/plugins/acl/lang/gl/lang.php b/lib/plugins/acl/lang/gl/lang.php
index 774bf207a..db57598e6 100644
--- a/lib/plugins/acl/lang/gl/lang.php
+++ b/lib/plugins/acl/lang/gl/lang.php
@@ -3,6 +3,7 @@
* Galicianlanguage file
*
* @author Medúlio <medulio@ciberirmandade.org>
+ * @author Oscar M. Lage <r0sk10@gmail.com>
*/
$lang['admin_acl'] = 'Xestión da Lista de Control de Acceso (ACL)';
$lang['acl_group'] = 'Grupo';
diff --git a/lib/plugins/acl/lang/ja/lang.php b/lib/plugins/acl/lang/ja/lang.php
index 831fd2d5c..5bebb58a9 100644
--- a/lib/plugins/acl/lang/ja/lang.php
+++ b/lib/plugins/acl/lang/ja/lang.php
@@ -8,6 +8,7 @@
* @author Ikuo Obataya <i.obataya@gmail.com>
* @author Daniel Dupriest <kououken@gmail.com>
* @author Kazutaka Miyasaka <kazmiya@gmail.com>
+ * @author Taisuke Shimamoto <dentostar@gmail.com>
*/
$lang['admin_acl'] = 'アクセスコントロール管理';
$lang['acl_group'] = 'グループ';
diff --git a/lib/plugins/acl/lang/ko/lang.php b/lib/plugins/acl/lang/ko/lang.php
index 6f4e991cb..6b1e77cf8 100644
--- a/lib/plugins/acl/lang/ko/lang.php
+++ b/lib/plugins/acl/lang/ko/lang.php
@@ -11,6 +11,7 @@
* @author Song Younghwan <purluno@gmail.com>
* @author SONG Younghwan <purluno@gmail.com>
* @author Seung-Chul Yoo <dryoo@live.com>
+ * @author erial2@gmail.com
*/
$lang['admin_acl'] = '접근 제어 목록 관리';
$lang['acl_group'] = '그룹';
diff --git a/lib/plugins/acl/lang/ms/lang.php b/lib/plugins/acl/lang/ms/lang.php
new file mode 100644
index 000000000..77ad2a1c1
--- /dev/null
+++ b/lib/plugins/acl/lang/ms/lang.php
@@ -0,0 +1,6 @@
+<?php
+/**
+ * Malay language file
+ *
+ * @author Markos
+ */
diff --git a/lib/plugins/acl/lang/nl/lang.php b/lib/plugins/acl/lang/nl/lang.php
index 686909644..cb0765505 100644
--- a/lib/plugins/acl/lang/nl/lang.php
+++ b/lib/plugins/acl/lang/nl/lang.php
@@ -17,6 +17,7 @@
* @author Marijn Hofstra <hofstra.m@gmail.com>
* @author Timon Van Overveldt <timonvo@gmail.com>
* @author Jeroen
+ * @author Ricardo Guijt <ricardoguijt@gmail.com>
*/
$lang['admin_acl'] = 'Toegangsrechten';
$lang['acl_group'] = 'Groep';
diff --git a/lib/plugins/acl/lang/no/help.txt b/lib/plugins/acl/lang/no/help.txt
index f02b6bdbd..c3d3688a9 100644
--- a/lib/plugins/acl/lang/no/help.txt
+++ b/lib/plugins/acl/lang/no/help.txt
@@ -1,4 +1,4 @@
-===Lynhjelp===
+=== Hurtighjelp: ===
På denne siden kan du legge til og fjerne tillatelser for navnerom og sider i din wiki.
diff --git a/lib/plugins/acl/lang/no/lang.php b/lib/plugins/acl/lang/no/lang.php
index 587f9c2fc..09d71937a 100644
--- a/lib/plugins/acl/lang/no/lang.php
+++ b/lib/plugins/acl/lang/no/lang.php
@@ -17,6 +17,7 @@
* @author Erik Bjørn Pedersen <erik.pedersen@shaw.ca>
* @author Rune Rasmussen syntaxerror.no@gmail.com
* @author Jon Bøe <jonmagneboe@hotmail.com>
+ * @author Egil Hansen <egil@rosetta.no>
*/
$lang['admin_acl'] = 'Administrasjon av lister for adgangskontroll (ACL)';
$lang['acl_group'] = 'Gruppe';
@@ -34,10 +35,10 @@ $lang['p_choose_ns'] = '<b>Før inn en bruker eller gruppe</b> i skjem
$lang['p_inherited'] = 'Merk: Disse tillatelser ble ikke eksplisitt satt, men ble arvet fra andre grupper eller høyere navnerom.';
$lang['p_isadmin'] = 'Merk: Den valgte gruppen eller bruker har altid fulle tillatelser fordi vedkommende er konfigurert som superbruker.';
$lang['p_include'] = 'Høyere tillgangsrettigheter inkluderer lavere. Rettigheter for å opprette, laste opp og slette gjelder bare for navnerom, ikke enkeltsider.';
-$lang['current'] = 'Någjeldende ACL-regler';
+$lang['current'] = 'Gjeldende ACL-regler';
$lang['where'] = 'Side/Navnerom';
$lang['who'] = 'Bruker/Gruppe';
-$lang['perm'] = 'Tillatelser';
+$lang['perm'] = 'Rettigheter';
$lang['acl_perm0'] = 'Ingen';
$lang['acl_perm1'] = 'Lese';
$lang['acl_perm2'] = 'Redigere';
@@ -45,4 +46,4 @@ $lang['acl_perm4'] = 'Opprette';
$lang['acl_perm8'] = 'Laste opp';
$lang['acl_perm16'] = 'Slette';
$lang['acl_new'] = 'Legg til ny oppføring';
-$lang['acl_mod'] = 'Modifiser oppføring';
+$lang['acl_mod'] = 'Endre oppføring';
diff --git a/lib/plugins/acl/lang/pl/lang.php b/lib/plugins/acl/lang/pl/lang.php
index a72b6af11..1b10b5232 100644
--- a/lib/plugins/acl/lang/pl/lang.php
+++ b/lib/plugins/acl/lang/pl/lang.php
@@ -12,6 +12,7 @@
* @author maros <dobrimaros@yahoo.pl>
* @author Grzegorz Widła <dzesdzes@gmail.com>
* @author Łukasz Chmaj <teachmeter@gmail.com>
+ * @author Begina Felicysym <begina.felicysym@wp.eu>
*/
$lang['admin_acl'] = 'Zarządzanie uprawnieniami';
$lang['acl_group'] = 'Grupa';
diff --git a/lib/plugins/acl/lang/ro/lang.php b/lib/plugins/acl/lang/ro/lang.php
index 0c13d7223..4d093216b 100644
--- a/lib/plugins/acl/lang/ro/lang.php
+++ b/lib/plugins/acl/lang/ro/lang.php
@@ -9,6 +9,8 @@
* @author Emanuel-Emeric Andraşi <em.andrasi@mandrivausers.ro>
* @author Emanuel-Emeric Andrasi <em.andrasi@mandrivausers.ro>
* @author Marius OLAR <olarmariusalex@gmail.com>
+ * @author Marius Olar <olarmariusalex@yahoo.com>
+ * @author Emanuel-Emeric Andrași <em.andrasi@mandrivausers.ro>
*/
$lang['admin_acl'] = 'Managementul Listei de Control a Accesului';
$lang['acl_group'] = 'Grup';
diff --git a/lib/plugins/acl/lang/ru/lang.php b/lib/plugins/acl/lang/ru/lang.php
index 6d04dde21..15ba78ef6 100644
--- a/lib/plugins/acl/lang/ru/lang.php
+++ b/lib/plugins/acl/lang/ru/lang.php
@@ -15,6 +15,7 @@
* @author Aleksandr Selivanov <alexgearbox@gmail.com>
* @author Ladyko Andrey <fylh@succexy.spb.ru>
* @author Eugene <windy.wanderer@gmail.com>
+ * @author Johnny Utah <pcpa@cyberpunk.su>
*/
$lang['admin_acl'] = 'Управление списками контроля доступа';
$lang['acl_group'] = 'Группа';
diff --git a/lib/plugins/acl/lang/sl/help.txt b/lib/plugins/acl/lang/sl/help.txt
index eada41c29..ff096ae0e 100644
--- a/lib/plugins/acl/lang/sl/help.txt
+++ b/lib/plugins/acl/lang/sl/help.txt
@@ -1,11 +1,11 @@
-=== Hitra pomo ===
+=== Hitra pomoč ===
-Na tej strani je mogoe dodajati, odstranjevati in spreminjati dovoljenja za delo z wiki stranmi in imenskimi prostori.
+Na tej strani je mogoče dodajati, odstranjevati in spreminjati dovoljenja za delo z wiki stranmi in imenskimi prostori.
Na veli strani so izpisani vsi imenski prostori in strani.
-Na obrazcu zgoraj je mogoe pregledovati in spreminjati dovoljenja za izbranega uporabnika ali skupino.
+Na obrazcu zgoraj je mogoče pregledovati in spreminjati dovoljenja za izbranega uporabnika ali skupino.
-V preglednici spodaj so prikazana vsa pravila nadzora. Ta je mogoe hitro spreminjati ali brisati.
+V preglednici spodaj so prikazana vsa pravila nadzora. Ta je mogoče hitro spreminjati ali brisati.
-Ve podrobnosti o delovanju nadzora dostopa sistema DokuWiki je mogoe najti v [[doku>acl|uradni dokumentaciji ACL]].
+Več podrobnosti o delovanju nadzora dostopa sistema DokuWiki je mogoče najti v [[doku>acl|uradni dokumentaciji ACL]].
diff --git a/lib/plugins/acl/lang/sl/lang.php b/lib/plugins/acl/lang/sl/lang.php
index 3fb391570..44e45e491 100644
--- a/lib/plugins/acl/lang/sl/lang.php
+++ b/lib/plugins/acl/lang/sl/lang.php
@@ -5,7 +5,7 @@
* @author Dejan Levec <webphp@gmail.com>
* @author Boštjan Seničar <senicar@gmail.com>
* @author Gregor Skumavc (grega.skumavc@gmail.com)
- * @author Matej Urbančič (mateju@svn.gnome.org)
+ * @author Matej Urbančič (mateju@svn.gnome.org)
*/
$lang['admin_acl'] = 'Upravljanje dostopa';
$lang['acl_group'] = 'Skupina';
diff --git a/lib/plugins/acl/lang/zh/lang.php b/lib/plugins/acl/lang/zh/lang.php
index 986fa769a..983882eaf 100644
--- a/lib/plugins/acl/lang/zh/lang.php
+++ b/lib/plugins/acl/lang/zh/lang.php
@@ -14,6 +14,7 @@
* @author Hiphen Lee <jacob.b.leung@gmail.com>
* @author caii, patent agent in China <zhoucaiqi@gmail.com>
* @author lainme993@gmail.com
+ * @author Shuo-Ting Jian <shoting@gmail.com>
*/
$lang['admin_acl'] = '访问控制列表(ACL)管理器';
$lang['acl_group'] = '组';
diff --git a/lib/plugins/acl/rtl.css b/lib/plugins/acl/rtl.css
deleted file mode 100644
index e79abe596..000000000
--- a/lib/plugins/acl/rtl.css
+++ /dev/null
@@ -1,40 +0,0 @@
-div#acl_manager div#acl__tree {
- float: right;
- text-align: right;
-}
-
-div#acl_manager div#acl__tree li {
- padding-left: 0em;
- padding-right: 1em;
-}
-
-div#acl_manager div#acl__tree ul img {
- margin-left: 0.25em;
- margin-right: 0em;
-}
-
-
-div#acl_manager div#acl__detail {
- float: left;
-}
-
-div#acl_manager .aclgroup {
- background: transparent url(pix/group.png) right 1px no-repeat;
- padding: 1px 18px 1px 0px;
-}
-
-div#acl_manager .acluser {
- background: transparent url(pix/user.png) right 1px no-repeat;
- padding: 1px 18px 1px 0px;
-}
-
-div#acl_manager .aclpage {
- background: transparent url(pix/page.png) right 1px no-repeat;
- padding: 1px 18px 1px 0px;
-}
-
-div#acl_manager .aclns {
- background: transparent url(pix/ns.png) right 1px no-repeat;
- padding: 1px 18px 1px 0px;
-}
-
diff --git a/lib/plugins/acl/script.js b/lib/plugins/acl/script.js
index d912a2407..0ba91cdc9 100644
--- a/lib/plugins/acl/script.js
+++ b/lib/plugins/acl/script.js
@@ -60,10 +60,12 @@ var dw_acl = {
* Load the current permission info and edit form
*/
loadinfo: function () {
- jQuery('#acl__info').load(
- DOKU_BASE + 'lib/plugins/acl/ajax.php',
- jQuery('#acl__detail form').serialize() + '&ajax=info'
- );
+ jQuery('#acl__info')
+ .html('<img src="'+DOKU_BASE+'lib/images/throbber.gif" alt="..." />')
+ .load(
+ DOKU_BASE + 'lib/plugins/acl/ajax.php',
+ jQuery('#acl__detail form').serialize() + '&ajax=info'
+ );
return false;
},
diff --git a/lib/plugins/acl/style.css b/lib/plugins/acl/style.css
index b7154aa78..2eee4f41c 100644
--- a/lib/plugins/acl/style.css
+++ b/lib/plugins/acl/style.css
@@ -8,6 +8,10 @@ div#acl_manager div#acl__tree {
border: 1px solid __border__;
text-align: left;
}
+[dir=rtl] div#acl_manager div#acl__tree {
+ float: right;
+ text-align: right;
+}
div#acl_manager div#acl__tree a.cur {
background-color: __highlight__;
@@ -24,11 +28,19 @@ div#acl_manager div#acl__tree li {
padding-left: 1em;
list-style-image: none;
}
+[dir=rtl] div#acl_manager div#acl__tree li {
+ padding-left: 0em;
+ padding-right: 1em;
+}
div#acl_manager div#acl__tree ul img {
margin-right: 0.25em;
cursor: pointer;
}
+[dir=rtl] div#acl_manager div#acl__tree ul img {
+ margin-left: 0.25em;
+ margin-right: 0em;
+}
div#acl_manager div#acl__detail {
width: 73%;
@@ -36,6 +48,9 @@ div#acl_manager div#acl__detail {
float: right;
overflow: auto;
}
+[dir=rtl] div#acl_manager div#acl__detail {
+ float: left;
+}
div#acl_manager div#acl__detail fieldset {
width: 90%;
@@ -56,21 +71,37 @@ div#acl_manager .aclgroup {
background: transparent url(pix/group.png) 0px 1px no-repeat;
padding: 1px 0px 1px 18px;
}
+[dir=rtl] div#acl_manager .aclgroup {
+ background: transparent url(pix/group.png) right 1px no-repeat;
+ padding: 1px 18px 1px 0px;
+}
div#acl_manager .acluser {
background: transparent url(pix/user.png) 0px 1px no-repeat;
padding: 1px 0px 1px 18px;
}
+[dir=rtl] div#acl_manager .acluser {
+ background: transparent url(pix/user.png) right 1px no-repeat;
+ padding: 1px 18px 1px 0px;
+}
div#acl_manager .aclpage {
background: transparent url(pix/page.png) 0px 1px no-repeat;
padding: 1px 0px 1px 18px;
}
+[dir=rtl] div#acl_manager .aclpage {
+ background: transparent url(pix/page.png) right 1px no-repeat;
+ padding: 1px 18px 1px 0px;
+}
div#acl_manager .aclns {
background: transparent url(pix/ns.png) 0px 1px no-repeat;
padding: 1px 0px 1px 18px;
}
+[dir=rtl] div#acl_manager .aclns {
+ background: transparent url(pix/ns.png) right 1px no-repeat;
+ padding: 1px 18px 1px 0px;
+}
div#acl_manager label.disabled {
color: __text_neu__!important;
diff --git a/lib/plugins/config/admin.php b/lib/plugins/config/admin.php
index 64906171d..9a9bb5329 100644
--- a/lib/plugins/config/admin.php
+++ b/lib/plugins/config/admin.php
@@ -131,6 +131,7 @@ class admin_plugin_config extends DokuWiki_Admin_Plugin {
}
ptln(' <fieldset id="'.$setting->_key.'">');
ptln(' <legend>'.$setting->prompt($this).'</legend>');
+ ptln(' <div class="table">');
ptln(' <table class="inline">');
} else {
// config settings
@@ -151,6 +152,7 @@ class admin_plugin_config extends DokuWiki_Admin_Plugin {
}
ptln(' </table>');
+ ptln(' </div>');
if ($in_fieldset) {
ptln(' </fieldset>');
}
@@ -161,6 +163,7 @@ class admin_plugin_config extends DokuWiki_Admin_Plugin {
usort($undefined_settings, '_setting_natural_comparison');
$this->_print_h1('undefined_settings', $this->getLang('_header_undefined'));
ptln('<fieldset>');
+ ptln('<div class="table">');
ptln('<table class="inline">');
$undefined_setting_match = array();
foreach($undefined_settings as $setting) {
@@ -175,6 +178,7 @@ class admin_plugin_config extends DokuWiki_Admin_Plugin {
ptln(' </tr>');
}
ptln('</table>');
+ ptln('</div>');
ptln('</fieldset>');
}
@@ -270,10 +274,10 @@ class admin_plugin_config extends DokuWiki_Admin_Plugin {
// the same for the active template
$tpl = $conf['template'];
- if (@file_exists(DOKU_TPLINC.$enlangfile)){
+ if (@file_exists(tpl_incdir().$enlangfile)){
$lang = array();
- @include(DOKU_TPLINC.$enlangfile);
- if ($conf['lang'] != 'en') @include(DOKU_TPLINC.$langfile);
+ @include(tpl_incdir().$enlangfile);
+ if ($conf['lang'] != 'en') @include(tpl_incdir().$langfile);
foreach ($lang as $key => $value){
$this->lang['tpl'.CM_KEYMARKER.$tpl.CM_KEYMARKER.$key] = $value;
}
diff --git a/lib/plugins/config/lang/ar/lang.php b/lib/plugins/config/lang/ar/lang.php
index 63d258485..2e55446ec 100644
--- a/lib/plugins/config/lang/ar/lang.php
+++ b/lib/plugins/config/lang/ar/lang.php
@@ -41,9 +41,13 @@ $lang['lang'] = 'لغة الواجهة';
$lang['basedir'] = 'مسار الخادوم (مثال. <code>/dokuwiki/</code>) اترك فارغا للاكتشاف التلقائي.';
$lang['baseurl'] = 'عنوان الخادوم (مثال. <code>http://www.yourserver.com</code>). اترك فارغا للاكتشاف التلقائي.';
$lang['savedir'] = 'دليل حفظ البيانات';
+$lang['cookiedir'] = 'مسار الكعكات. اترك فارغا لاستخدام baseurl.';
$lang['start'] = 'اسم صفحة البداية';
$lang['title'] = 'عنوان الويكي';
$lang['template'] = 'القالب';
+$lang['tagline'] = 'Tagline (في حال دعم القالب له)
+';
+$lang['sidebar'] = 'اسم صفحة الشريط الجانبي (في حال دعم القالب له). تركه فارغا يعطل الشريط الجانبي.';
$lang['license'] = 'تحت أي رخصة تريد اصدار المحتوى؟';
$lang['fullpath'] = 'اظهر المحتوى الكامل للصفحات في ';
$lang['recent'] = 'أحدث التغييرات';
@@ -64,6 +68,7 @@ $lang['useheading'] = 'استخدم اول ترويسة كأسم لل
$lang['refcheck'] = 'التحقق من مرجع الوسائط';
$lang['refshow'] = 'عدد مراجع الوسائط لتعرض';
$lang['allowdebug'] = 'مكّن التنقيح <b>عطّلها إن لم تكن بحاجلة لها!</b>';
+$lang['mediarevisions'] = 'تفعيل إصدارات الوسائط؟';
$lang['usewordblock'] = 'احجز الغثاء بناء على قائمة كلمات';
$lang['indexdelay'] = 'التأخير قبل الفهرسة (ثوان)';
$lang['relnofollow'] = 'استخدم rel="nofollow" للروابط الخارجية';
@@ -86,8 +91,8 @@ $lang['disableactions_other'] = 'اجراءات أخرى (مفصولة بالف
$lang['sneaky_index'] = 'افتراضيا، ستعرض دوكو ويكي كل اسماء النطاقات في عرض الفهرس. تفعيل هذا الخيار سيخفي مالا يملك المستخدم صلاحية قراءته. قد يؤدي هذا إلى اخفاء نطاقات فرعية متاحة. وقد يؤدي لجعل صفحة الفهرس معطلة في بعض اعدادات ACL.';
$lang['auth_security_timeout'] = 'زمن انتهاء أمان المواثقة (ثوان)';
$lang['securecookie'] = 'هل يفرض على كعكات التصفح المعدة عبر HTTPS ان ترسل فقط عبر HTTPS من قبل المتصفح؟ عطل هذا إن كان الولوج للويكي مؤمنا فقط عبر SSL لكن تصفح الويكي غير مؤمن.';
-$lang['xmlrpc'] = 'مكّن/عطل واجهة XML-RPC.';
-$lang['xmlrpcuser'] = 'احصر الوصول لـ XML-RPC بمستخدمين أو مجموعات مفصولة بالفاصلة هنا. اتركها فارغة لتمكين الوصول للجميع.';
+$lang['remote'] = 'مكّن نظام API البعيد. يسمح هذا لبرامج أخرى بالوصول للويكي عبر XML-RPC أو آليات أخرى.';
+$lang['remoteuser'] = 'احصر الوصول البعيد ل API لمستخدمين ومجموعات يفصل بينها بالفاصلة هنا. اترك فارغا لتمكين الجميع.';
$lang['updatecheck'] = 'تحقق من التحديثات و تنبيهات الأمان؟ دوكو ويكي ستحتاج للاتصال ب update.dokuwiki.org لأجل ذلك';
$lang['userewrite'] = 'استعمل عناوين URLs جميلة';
$lang['useslash'] = 'استخدم الشرطة كفاصل النطاق في العناوين';
@@ -111,10 +116,13 @@ $lang['jpg_quality'] = 'دقة ضغط JPG (0-100)';
$lang['subscribers'] = 'مكن دعم اشتراك الصفحة';
$lang['subscribe_time'] = 'المهلة بعد ارسال قوائم الاشتراكات والملخصات (ثوان); هذا يجب أن يكون أقل من الوقت المخصص في أيام أحدث التغييرات.';
$lang['compress'] = 'رُص مخرجات CSS و جافا سكربت';
+$lang['cssdatauri'] = 'الحجم بالبايتات للصور المذكورة في CSS التي ستُضمن في صفحة-التنسيق لخفض طلبات HTTP. لن تعمل هذه التقنية في IE 7 أو أقل! <code>400</code> إلى <code>600</code> بايت تعد قيمة جيدة. اضبط إلى <code>0</code> لتعطلها.';
$lang['hidepages'] = 'أخف الصفحات المنطبق عليها (تعابير شرطية)';
$lang['send404'] = 'ارسل "HTTP 404/Page Not Found" للصفحات غير الموجودة';
$lang['sitemap'] = 'ولد خرائط موقع جوجل (أيام)';
+$lang['broken_iua'] = 'هل الوظيفة ignore_user_abort معطلة على جهازك؟ قد يؤدي ذلك لتعطيل فهرسة البحث. IIS+PHP/CGI تعرف بأنها لاتعمل. أنظر <a href="http://bugs.splitbrain.org/?do=details&amp;task_id=852">العلة 852</a> لمزيد من المعلومات.';
$lang['xsendfile'] = 'استخدم ترويسة X-Sendfile لتمكين خادم الوب من تقديم ملفات ثابتة؟ يجب أن يكون خادم الوب داعما له.';
+$lang['renderer_xhtml'] = 'المحرك ليستخدم لمخرجات الويكي الأساسية وفق (xhtml).';
$lang['renderer__core'] = '%s (نواة دوكو ويكي)';
$lang['renderer__plugin'] = '%s (ملحق)';
$lang['rememberme'] = 'اسمح بكعكات الدخول الدائم (تذكرني)';
@@ -124,6 +132,7 @@ $lang['rss_content'] = 'مالذي يعرض في عناصر تلقيم
$lang['rss_update'] = 'تحديث تلقيم XML (ثوان)';
$lang['recent_days'] = 'مدة إبقاء أحدث التغييرات (ايام)';
$lang['rss_show_summary'] = 'تلقيم XML يظهر ملخصا في العنوان';
+$lang['rss_media'] = 'مانوع التغييرات التي ستدرج في تغذية XML؟';
$lang['target____wiki'] = 'النافذة الهدف للروابط الداخلية';
$lang['target____interwiki'] = 'النافذة الهدف للروابط الممرة interwiki';
$lang['target____extern'] = 'النافذة الهدف للروابط الخارجية';
diff --git a/lib/plugins/config/lang/bg/lang.php b/lib/plugins/config/lang/bg/lang.php
index ff03fd9e2..0bc25a8e5 100644
--- a/lib/plugins/config/lang/bg/lang.php
+++ b/lib/plugins/config/lang/bg/lang.php
@@ -7,19 +7,28 @@
* @author Viktor Usunov <usun0v@mail.bg>
* @author Kiril <neohidra@gmail.com>
*/
+
+// for admin plugins, the menu prompt to be displayed in the admin menu
+// if set here, the plugin doesn't need to override the getMenuText() method
$lang['menu'] = 'Настройки';
+
$lang['error'] = 'Обновяването на настройките не е възможно, поради невалидна стойност, моля, прегледайте промените си и пробвайте отново.
-<br />Неверните стойности ще бъдат обградени с червена рамка.';
+ <br />Неверните стойности ще бъдат обградени с червена рамка.';
$lang['updated'] = 'Обновяването на настройките е успешно.';
$lang['nochoice'] = '(няма друг възможен избор)';
-$lang['locked'] = 'Обновяването на файла с настройките не е възможно, ако това не е нарочно, проверете,<br /> дали името на локалния файл с настройки и правата са верни.';
-$lang['danger'] = 'Внимание: промяна на опцията може да направи wiki-то и менюто за настройване недостъпни.';
+$lang['locked'] = 'Обновяването на файла с настройките не е възможно, ако това не е нарочно, проверете,<br />
+ дали името на локалния файл с настройки и правата са верни.';
+$lang['danger'] = 'Внимание: промяна на опцията може да направи Wiki-то и менюто за настройване недостъпни.';
$lang['warning'] = 'Предупреждение: промяна на опцията може предизвика нежелани последици.';
$lang['security'] = 'Предупреждение: промяна на опцията може да представлява риск за сигурността.';
-$lang['_configuration_manager'] = 'Диспечер на настройките';
+
+/* --- Config Setting Headers --- */
+$lang['_configuration_manager'] = 'Диспечер на настройките'; //same as heading in intro.txt
$lang['_header_dokuwiki'] = 'Настройки на DokuWiki';
$lang['_header_plugin'] = 'Настройки на приставки';
$lang['_header_template'] = 'Настройки на шаблони';
+
+/* --- Config Setting Groups --- */
$lang['_header_undefined'] = 'Неопределени настройки';
$lang['_basic'] = 'Основни настройки';
$lang['_display'] = 'Настройки за изобразяване';
@@ -30,11 +39,20 @@ $lang['_links'] = 'Настройки на препратките
$lang['_media'] = 'Настройки на медията';
$lang['_advanced'] = 'Допълнителни настройки';
$lang['_network'] = 'Мрежови настройки';
+// The settings group name for plugins and templates can be set with
+// plugin_settings_name and template_settings_name respectively. If one
+// of these lang properties is not set, the group name will be generated
+// from the plugin or template name and the localized suffix.
$lang['_plugin_sufix'] = ' - настройки на приставката';
$lang['_template_sufix'] = ' - настройки на шаблона';
+
+/* --- Undefined Setting Messages --- */
$lang['_msg_setting_undefined'] = 'Няма метаданни за настройките.';
$lang['_msg_setting_no_class'] = 'Няма клас настройки.';
$lang['_msg_setting_no_default'] = 'Няма стандартна стойност.';
+
+/* -------------------- Config Options --------------------------- */
+
$lang['fmode'] = 'Режим (права) за създаване на файлове';
$lang['dmode'] = 'Режим (права) за създаване на директории';
$lang['lang'] = 'Език';
@@ -45,6 +63,8 @@ $lang['cookiedir'] = 'Път за бисквитките. Остав
$lang['start'] = 'Име на началната страница';
$lang['title'] = 'Име на Wiki-то';
$lang['template'] = 'Шаблон';
+$lang['tagline'] = 'Подзаглавие - изобразява се под името на Wiki страницата (ако се поддържа от шаблона)';
+$lang['sidebar'] = 'Име на страницата за страничната лента (ако се поддържа от шаблона). Ако оставите полето празно лентата ще бъде изключена';
$lang['license'] = 'Под какъв лиценз да бъде публикувано съдържанието?';
$lang['fullpath'] = 'Показване на пълния път до страниците в долния колонтитул.';
$lang['recent'] = 'Скорошни промени';
@@ -65,12 +85,16 @@ $lang['useheading'] = 'Ползване на първото загл
$lang['refcheck'] = 'Проверка за препратка към медия, преди да бъде изтрита';
$lang['refshow'] = 'Брой на показваните медийни препратки';
$lang['allowdebug'] = 'Включване на режи debug - <b>изключете, ако не е нужен!</b>';
+$lang['mediarevisions'] = 'Да се пазят ли стари версии на качените файлове (Mediarevisions)?';
+
$lang['usewordblock'] = 'Блокиране на SPAM въз основа на на списък от думи';
$lang['indexdelay'] = 'Забавяне преди индексиране (сек)';
$lang['relnofollow'] = 'Ползване на rel="nofollow" за външни препратки';
$lang['mailguard'] = 'Промяна на адресите на ел. поща (във форма непозволяваща пращането на SPAM)';
$lang['iexssprotect'] = 'Проверяване на качените файлове за вероятен зловреден JavaScript и HTML код';
$lang['showuseras'] = 'Какво да се показва за потребителя, който последно е променил страницата';
+
+/* Authentication Options */
$lang['useacl'] = 'Ползване на списъци за достъп';
$lang['autopasswd'] = 'Автоматично генериране на пароли, на нови потребители и пращане по пощата';
$lang['authtype'] = 'Метод за удостоверяване';
@@ -86,10 +110,11 @@ $lang['disableactions_wikicode'] = 'Преглед на кода/Експорт
$lang['disableactions_other'] = 'Други действия (разделени със запетая)';
$lang['sneaky_index'] = 'Стандартно DokuWiki ще показва всички именни пространства в индекса. Опцията скрива тези, за които потребителят няма права за четене. Това може да доведе и до скриване на иначе достъпни подименни пространства. С определени настройки на списъците за контрол на достъпа (ACL) може да направи индекса неизползваем. ';
$lang['auth_security_timeout'] = 'Автоматично проверяване на удостоверяването всеки (сек)';
-$lang['securecookie'] = 'Да се изпращат ли бисквитките зададени чрез HTTPS, само чрез HTTPS от браузъра? Изключете опцията, когато SSL се ползва само за вписване, а четенето е без SSL.
-';
-$lang['xmlrpc'] = 'Включване/Изключване на интерфейса XML-RPC.';
-$lang['xmlrpcuser'] = 'Ограничаване на XML-RPC достъпа до отделени със запетая групи или потребители. Оставете празно, за да даде достъп на всеки.';
+$lang['securecookie'] = 'Да се изпращат ли бисквитките зададени чрез HTTPS, само чрез HTTPS от браузъра? Изключете опцията, когато SSL се ползва само за вписване, а четенето е без SSL.';
+$lang['remote'] = 'Включване на системата за отдалечен API достъп. Това ще позволи на приложения да се свързват с DokuWiki чрез XML-RPC или друг механизъм.';
+$lang['remoteuser'] = 'Ограничаване на отдалечения API достъп - активиране само за следните групи и потребители (отделени със запетая). Ако оставите полето празно всеки ще има достъп достъп.';
+
+/* Advanced Options */
$lang['updatecheck'] = 'Проверяване за за нови версии и предупреждения за сигурността? Необходимо е Dokiwiki да може да се свързва със update.dokuwiki.org за тази функционалност.';
$lang['userewrite'] = 'Ползване на nice URL адреси';
$lang['useslash'] = 'Ползване на наклонена черта за разделител на именните пространства в URL';
@@ -119,72 +144,104 @@ $lang['send404'] = 'Пращане на "HTTP 404/Page Not Found"
$lang['sitemap'] = 'Генериране на Google sitemap (дни)';
$lang['broken_iua'] = 'Отметнете, ако ignore_user_abort функцията не работи. Може да попречи на търсенето в страниците. Знае се, че комбинацията IIS+PHP/CGI е лоша. Вижте <a href="http://bugs.splitbrain.org/?do=details&amp;task_id=852">Грешка 852</a> за повече информация.';
$lang['xsendfile'] = 'Ползване на Х-Sendfile header, за да може уебсървъра да дава статични файлове? Вашият уебсървър трябва да го поддържа.';
-$lang['renderer_xhtml'] = 'Представяне на основните изходни данни (xhtml) от wiki-то с';
+$lang['renderer_xhtml'] = 'Представяне на основните изходни данни (xhtml) от Wiki-то с';
$lang['renderer__core'] = '%s (ядрото на DokuWiki)';
$lang['renderer__plugin'] = '%s (приставка)';
$lang['rememberme'] = 'Ползване на постоянни бисквитки за вписване (за функцията "Запомни ме")';
+
$lang['rss_type'] = 'Тип на XML емисията';
$lang['rss_linkto'] = 'XML емисията препраща към';
$lang['rss_content'] = 'Какво да показват елементите на XML емисията?';
$lang['rss_update'] = 'Интервал на актуализиране на XML емисията (сек)';
$lang['recent_days'] = 'Колко от скорошните промени да се пазят (дни)';
$lang['rss_show_summary'] = 'Показване на обобщение в заглавието на XML емисията';
+$lang['rss_media'] = 'Кой тип промени да се включват в XML мисията?';
+
+/* Target options */
$lang['target____wiki'] = 'Прозорец за вътрешни препратки';
-$lang['target____interwiki'] = 'Прозорец за препратки в wiki-то';
+$lang['target____interwiki'] = 'Прозорец за препратки към други Wiki сайтове';
$lang['target____extern'] = 'Прозорец за външни препратки';
$lang['target____media'] = 'Прозорец за медийни препратки';
$lang['target____windows'] = 'Прозорец за препратки към Windows';
+
+/* Proxy Options */
$lang['proxy____host'] = 'Име на прокси сървър';
$lang['proxy____port'] = 'Порт за проксито';
$lang['proxy____user'] = 'Потребител за проксито';
$lang['proxy____pass'] = 'Парола за проксито';
$lang['proxy____ssl'] = 'Ползване на SSL при свързване с проксито';
$lang['proxy____except'] = 'Регулярен израз определящ за кои URL адреси да не се ползва прокси сървър.';
+
+/* Safemode Hack */
$lang['safemodehack'] = 'Ползване на хака safemode';
$lang['ftp____host'] = 'FTP сървър за хака safemode';
$lang['ftp____port'] = 'FTP порт за хака safemode';
$lang['ftp____user'] = 'FTP потребител за хака safemode';
$lang['ftp____pass'] = 'FTP парола за хака safemode';
$lang['ftp____root'] = 'FTP главна директория за хака safemode';
+
$lang['license_o_'] = 'Нищо не е избрано';
+
+/* typography options */
$lang['typography_o_0'] = 'без';
$lang['typography_o_1'] = 'с изключение на единични кавички';
$lang['typography_o_2'] = 'включително единични кавички (не винаги работи)';
+
+/* userewrite options */
$lang['userewrite_o_0'] = 'без';
$lang['userewrite_o_1'] = 'файлът .htaccess';
$lang['userewrite_o_2'] = 'вътрешно от DokuWiki ';
+
+/* deaccent options */
$lang['deaccent_o_0'] = 'изключено';
$lang['deaccent_o_1'] = 'премахване на акценти';
$lang['deaccent_o_2'] = 'транслитерация';
+
+/* gdlib options */
$lang['gdlib_o_0'] = 'GD Lib не е достъпна';
$lang['gdlib_o_1'] = 'Версия 1.x';
$lang['gdlib_o_2'] = 'Автоматично разпознаване';
+
+/* rss_type options */
$lang['rss_type_o_rss'] = 'RSS версия 0.91';
$lang['rss_type_o_rss1'] = 'RSS версия 1.0';
$lang['rss_type_o_rss2'] = 'RSS версия 2.0';
$lang['rss_type_o_atom'] = 'Atom версия 0.3';
$lang['rss_type_o_atom1'] = 'Atom версия 1.0';
+
+/* rss_content options */
$lang['rss_content_o_abstract'] = 'Извлечение';
$lang['rss_content_o_diff'] = 'Обединени разлики';
$lang['rss_content_o_htmldiff'] = 'Таблица с разликите в HTML формат';
$lang['rss_content_o_html'] = 'Цялото съдържание на HTML страницата';
+
+/* rss_linkto options */
$lang['rss_linkto_o_diff'] = 'изглед на разликите';
$lang['rss_linkto_o_page'] = 'променената страница';
$lang['rss_linkto_o_rev'] = 'списък на версиите';
$lang['rss_linkto_o_current'] = 'текущата страница';
+
+/* compression options */
$lang['compression_o_0'] = 'без';
$lang['compression_o_gz'] = 'gzip';
$lang['compression_o_bz2'] = 'bz2';
+
+/* xsendfile header */
$lang['xsendfile_o_0'] = 'не използвайте';
$lang['xsendfile_o_1'] = 'Специфичен lighttpd header (преди версия 1.5)';
$lang['xsendfile_o_2'] = 'Стандартен X-Sendfile header';
$lang['xsendfile_o_3'] = 'Специфичен Nginx X-Accel-Redirect header за пренасочване';
+
+/* Display user info */
$lang['showuseras_o_loginname'] = 'Име за вписване';
$lang['showuseras_o_username'] = 'Пълно потребителско име';
$lang['showuseras_o_email'] = 'Ел, поща (променени според настройките на mailguard)';
$lang['showuseras_o_email_link'] = 'Ел. поща под формата на връзка тип mailto:';
+
+/* useheading options */
$lang['useheading_o_0'] = 'Никога';
$lang['useheading_o_navigation'] = 'Само за навигация';
$lang['useheading_o_content'] = 'Само за съдържанието на Wiki-то';
$lang['useheading_o_1'] = 'Винаги';
+
$lang['readdircache'] = 'Максимален период за съхраняване кеша на readdir (сек)';
diff --git a/lib/plugins/config/lang/ca-valencia/lang.php b/lib/plugins/config/lang/ca-valencia/lang.php
index 76f11a4a5..4a8c10895 100644
--- a/lib/plugins/config/lang/ca-valencia/lang.php
+++ b/lib/plugins/config/lang/ca-valencia/lang.php
@@ -86,8 +86,6 @@ $lang['disableactions_other'] = 'Atres accions (separades per comes)';
$lang['sneaky_index'] = 'Normalment, DokuWiki mostra tots els espais de noms en la vista d\'índex. Activant esta opció s\'ocultaran aquells per als que l\'usuari no tinga permís de llectura. Açò pot ocultar subespais accessibles i inutilisar l\'índex per a certes configuracions del ACL.';
$lang['auth_security_timeout'] = 'Temps de seguritat màxim per a l\'autenticació (segons)';
$lang['securecookie'] = '¿El navegador deuria enviar per HTTPS només les galletes que s\'han generat per HTTPS? Desactive esta opció quan utilise SSL només en la pàgina d\'inici de sessió.';
-$lang['xmlrpc'] = 'Activar/desactivar interfaç XML-RPC.';
-$lang['xmlrpcuser'] = 'Restringir l\'accés XML-RPC a la llista d\'usuaris i grups separada per comes definida ací. Deixar buit per a donar accés a tots.';
$lang['updatecheck'] = '¿Buscar actualisacions i advertències de seguritat? DokuWiki necessita conectar a update.dokuwiki.org per ad açò.';
$lang['userewrite'] = 'Utilisar URL millorades';
$lang['useslash'] = 'Utilisar \'/\' per a separar espais de noms en les URL';
diff --git a/lib/plugins/config/lang/ca/lang.php b/lib/plugins/config/lang/ca/lang.php
index d53cf1031..84680450a 100644
--- a/lib/plugins/config/lang/ca/lang.php
+++ b/lib/plugins/config/lang/ca/lang.php
@@ -86,8 +86,6 @@ $lang['disableactions_other'] = 'Altres accions (separades per comes)';
$lang['sneaky_index'] = 'Per defecte, DokuWiki mostrarà tots els espai en la visualització d\'índex. Si activeu aquest paràmetre, s\'ocultaran aquells espais en els quals l\'usuari no té accés de lectura. Això pot fer que s\'ocultin subespais que sí que són accessibles. En algunes configuracions ACL pot fer que l\'índex resulti inutilitzable.';
$lang['auth_security_timeout'] = 'Temps d\'espera de seguretat en l\'autenticació (segons)';
$lang['securecookie'] = 'Les galetes que s\'han creat via HTTPS, només s\'han d\'enviar des del navegador per HTTPS? Inhabiliteu aquesta opció si només l\'inici de sessió del wiki es fa amb SSL i la navegació del wiki es fa sense seguretat.';
-$lang['xmlrpc'] = 'Habilita/inhabilita la interfície XML-RPC';
-$lang['xmlrpcuser'] = 'Restringeix l\'accés per XML-RPC als usuaris o grups següents, separats per comes. Deixeu aquest camp en blanc per donar accés a tothom.';
$lang['updatecheck'] = 'Comprova actualitzacions i avisos de seguretat. DokuWiki necessitarà contactar amb update.dokuwiki.org per utilitzar aquesta característica.';
$lang['userewrite'] = 'Utilitza URL nets';
$lang['useslash'] = 'Utilitza la barra / com a separador d\'espais en els URL';
@@ -114,8 +112,8 @@ $lang['sitemap'] = 'Genera mapa del lloc en format Google (dies)';
$lang['broken_iua'] = 'No funciona en el vostre sistema la funció ignore_user_abort? Això podria malmetre l\'índex de cerques. Amb IIS+PHP/CGI se sap que no funciona. Vg. <a href="http://bugs.splitbrain.org/?do=details&amp;task_id=852">Bug 852</a> per a més informació.';
$lang['xsendfile'] = 'Utilitza la capçalera X-Sendfile perquè el servidor web distribueixi fitxers estàtics. No funciona amb tots els servidors web.';
$lang['renderer_xhtml'] = 'Renderitzador que cal utilitzar per a la sortida principal (xhtml) del wiki';
-$lang['renderer__core'] = '% (ànima del dokuwiki)';
-$lang['renderer__plugin'] = '% (connector)';
+$lang['renderer__core'] = '%s (ànima del dokuwiki)';
+$lang['renderer__plugin'] = '%s (connector)';
$lang['rememberme'] = 'Permet galetes de sessió permanents ("recorda\'m")';
$lang['rss_type'] = 'Tipus de canal XML';
$lang['rss_linkto'] = 'Destinació dels enllaços en el canal XML';
diff --git a/lib/plugins/config/lang/cs/lang.php b/lib/plugins/config/lang/cs/lang.php
index 9126a041a..091604aea 100644
--- a/lib/plugins/config/lang/cs/lang.php
+++ b/lib/plugins/config/lang/cs/lang.php
@@ -9,6 +9,8 @@
* @author Marek Sacha <sachamar@fel.cvut.cz>
* @author Lefty <lefty@multihost.cz>
* @author Vojta Beran <xmamut@email.cz>
+ * @author zbynek.krivka@seznam.cz
+ * @author Bohumir Zamecnik <bohumir.zamecnik@gmail.com>
*/
$lang['menu'] = 'Správa nastavení';
$lang['error'] = 'Nastavení nebyla změněna kvůli alespoň jedné neplatné položce,
@@ -44,10 +46,11 @@ $lang['_msg_setting_no_default'] = 'Chybí výchozí hodnota položky.';
$lang['fmode'] = 'Přístupová práva pro vytváření souborů';
$lang['dmode'] = 'Přístupová práva pro vytváření adresářů';
$lang['lang'] = 'Jazyk';
-$lang['basedir'] = 'Kořenový adresář';
-$lang['baseurl'] = 'Kořenové URL';
+$lang['basedir'] = 'Kořenový adresář (např. <code>/dokuwiki/</code>). Pro autodetekci nechte prázdné.';
+$lang['baseurl'] = 'Kořenové URL (např. <code>http://www.yourserver.com</code>). Pro autodetekci nechte prázdné.';
$lang['savedir'] = 'Adresář pro ukládání dat';
-$lang['start'] = 'Název úvodních stránek';
+$lang['cookiedir'] = 'Cesta pro cookie. Není-li vyplněno, použije se kořenové URL.';
+$lang['start'] = 'Název úvodní stránky';
$lang['title'] = 'Název celé wiki';
$lang['template'] = 'Šablona';
$lang['license'] = 'Pod jakou licencí má být tento obsah publikován?';
@@ -97,8 +100,6 @@ To může mít za následek, že index bude při některých
nastaveních ACL nepoužitelný.';
$lang['auth_security_timeout'] = 'Časový limit pro autentikaci (v sekundách)';
$lang['securecookie'] = 'Má prohlížeč posílat cookies nastavené přes HTTPS opět jen přes HTTPS? Vypněte tuto volbu, pokud chcete, aby bylo pomocí SSL zabezpečeno pouze přihlašování do wiki, ale obsah budete prohlížet nezabezpečeně.';
-$lang['xmlrpc'] = 'Povolit/Zakázat rozhraní XML-RPC.';
-$lang['xmlrpcuser'] = 'Omezit přístup pomocí XML-RPC pouze na zde zadané skupiny či uživatele (oddělené čárkami). Necháte-li pole prázdné, dáte přístup komukoliv.';
$lang['updatecheck'] = 'Kontrolovat aktualizace a bezpečnostní varování? DokuWiki potřebuje pro tuto funkci přístup k update.dokuwiki.org';
$lang['userewrite'] = 'Používat "pěkná" URL';
$lang['useslash'] = 'Používat lomítko jako oddělovač jmenných prostorů v URL';
@@ -122,6 +123,7 @@ $lang['jpg_quality'] = 'Kvalita komprese JPEG (0-100)';
$lang['subscribers'] = 'Možnost přihlásit se k odběru novinek stránky';
$lang['subscribe_time'] = 'Časový interval v sekundách, ve kterém jsou posílány změny a souhrny změn. Interval by neměl být kratší než čas uvedený v recent_days.';
$lang['compress'] = 'Zahustit CSS a JavaScript výstup';
+$lang['cssdatauri'] = 'Velikost [v bajtech] obrázků odkazovaných v CSS souborech, které budou pro ušetření HTTP požadavku vestavěny do stylu. Tato technika nefunguje v IE 7 a starším. Doporučená hodnota je mezi <code>400</code> a <code>600</code> bajty. Pro vypnutí nastavte na <code>0</code>.';
$lang['hidepages'] = 'Skrýt stránky odpovídající vzoru (regulární výrazy)';
$lang['send404'] = 'Posílat "HTTP 404/Page Not Found" pro neexistují stránky';
$lang['sitemap'] = 'Generovat Google sitemap (interval ve dnech)';
diff --git a/lib/plugins/config/lang/da/lang.php b/lib/plugins/config/lang/da/lang.php
index a4c0bba75..7e8fe95af 100644
--- a/lib/plugins/config/lang/da/lang.php
+++ b/lib/plugins/config/lang/da/lang.php
@@ -92,8 +92,6 @@ $lang['disableactions_other'] = 'Andre muligheder (kommasepareret)';
$lang['sneaky_index'] = 'DokuWiki vil som standard vise alle navnerum i indholdsfortegnelsen. Ved at slå denne valgmulighed til vil skjule de navnerum, hvor brugeren ikke har læsetilladelse. Dette kan føre til, at tilgængelige undernavnerum bliver skjult. Ligeledes kan det også gøre indholdsfortegnelsen ubrugelig med visse ACL-opsætninger.';
$lang['auth_security_timeout'] = 'Tidsudløb for bekræftelse (sekunder)';
$lang['securecookie'] = 'Skal datafiler skabt af HTTPS kun sendes af HTTPS gennem browseren? Slå denne valgmulighed fra hvis kun brugen af din wiki er SSL-beskyttet, mens den almindelige tilgang udefra ikke er sikret.';
-$lang['xmlrpc'] = 'Slå XML-RPC-grænseflade til/fra.';
-$lang['xmlrpcuser'] = 'Begræns XML-RPC-adgang til de nævnte og med komma adskilte grupper eller brugere. Lad den stå tom for at give alle adgang.';
$lang['updatecheck'] = 'Kig efter opdateringer og sikkerhedsadvarsler? DokuWiki er nødt til at kontakte update.dokuwiki.org for at tilgå denne funktion.';
$lang['userewrite'] = 'Brug pæne netadresser';
$lang['useslash'] = 'Brug skråstreg som navnerumsdeler i netadresser';
diff --git a/lib/plugins/config/lang/de-informal/lang.php b/lib/plugins/config/lang/de-informal/lang.php
index e63735edf..52c705b4f 100644
--- a/lib/plugins/config/lang/de-informal/lang.php
+++ b/lib/plugins/config/lang/de-informal/lang.php
@@ -66,6 +66,7 @@ $lang['useheading'] = 'Erste Überschrift als Seitennamen verwenden';
$lang['refcheck'] = 'Auf Verwendung beim Löschen von Media-Dateien testen';
$lang['refshow'] = 'Wie viele Verwendungsorte der Media-Datei zeigen';
$lang['allowdebug'] = 'Debug-Ausgaben erlauben <b>Abschalten wenn nicht benötigt!</b>';
+$lang['mediarevisions'] = 'Media-Revisionen (ältere Versionen) aktivieren?';
$lang['usewordblock'] = 'Blockiere Spam basierend auf der Wortliste';
$lang['indexdelay'] = 'Zeit bevor Suchmaschinenindexierung erlaubt ist';
$lang['relnofollow'] = 'rel="nofollow" verwenden';
@@ -88,8 +89,6 @@ $lang['disableactions_other'] = 'Weitere Aktionen (durch Komma getrennt)';
$lang['sneaky_index'] = 'Standardmäßig zeigt DokuWiki alle Namensräume in der Indexansicht an. Bei Aktivierung dieser Einstellung werden alle Namensräume versteckt, in welchen der Benutzer keine Leserechte hat. Dies könnte dazu führen, dass lesbare Unternamensräume versteckt werden. Dies kann die Indexansicht bei bestimmten Zugangskontrolleinstellungen unbenutzbar machen.';
$lang['auth_security_timeout'] = 'Zeitüberschreitung bei der Authentifizierung (Sekunden)';
$lang['securecookie'] = 'Sollen Cookies, die via HTTPS gesetzt wurden nur per HTTPS versendet werden? Deaktiviere diese Option, wenn nur der Login deines Wikis mit SSL gesichert ist, aber das Betrachten des Wikis ungesichert geschieht.';
-$lang['xmlrpc'] = 'Aktiviere/Deaktiviere die XML-RPC-Schnittstelle';
-$lang['xmlrpcuser'] = 'XML-RPC-Zugriff auf folgende Gruppen oder Benutzer (kommasepariert) beschränken. Wenn du dieses Feld leer lässt, wir der Zugriff jedem gewährt.';
$lang['updatecheck'] = 'Automatisch auf Updates und Sicherheitswarnungen prüfen? DokuWiki muss sich dafür mit update.dokuwiki.org verbinden.';
$lang['userewrite'] = 'Benutze schöne URLs';
$lang['useslash'] = 'Benutze Schrägstrich als Namensraumtrenner in URLs';
diff --git a/lib/plugins/config/lang/de/lang.php b/lib/plugins/config/lang/de/lang.php
index 1fb549597..1cc4e0a8a 100644
--- a/lib/plugins/config/lang/de/lang.php
+++ b/lib/plugins/config/lang/de/lang.php
@@ -77,6 +77,7 @@ $lang['useheading'] = 'Erste Überschrift als Seitennamen verwenden';
$lang['refcheck'] = 'Auf Verwendung beim Löschen von Media-Dateien testen';
$lang['refshow'] = 'Wiev iele Verwendungsorte der Media-Datei zeigen';
$lang['allowdebug'] = 'Debug-Ausgaben erlauben <b>Abschalten wenn nicht benötigt!</b>';
+$lang['mediarevisions'] = 'Media-Revisionen (ältere Versionen) aktivieren?';
$lang['usewordblock'] = 'Spam-Blocking benutzen';
$lang['indexdelay'] = 'Zeit bevor Suchmaschinenindexierung erlaubt ist';
$lang['relnofollow'] = 'rel="nofollow" verwenden';
@@ -99,8 +100,6 @@ $lang['disableactions_other'] = 'Andere Aktionen (durch Komma getrennt)';
$lang['sneaky_index'] = 'Standardmäßig zeigt DokuWiki alle Namensräume in der Übersicht. Wenn diese Option aktiviert wird, werden alle Namensräume, für die der Benutzer keine Lese-Rechte hat, nicht angezeigt. Dies kann unter Umständen dazu führen, das lesbare Unter-Namensräume nicht angezeigt werden und macht die Übersicht evtl. unbrauchbar in Kombination mit bestimmten ACL Einstellungen.';
$lang['auth_security_timeout'] = 'Authentifikations-Timeout (Sekunden)';
$lang['securecookie'] = 'Sollen Cookies, die via HTTPS gesetzt wurden nur per HTTPS versendet werden? Deaktivieren Sie diese Option, wenn nur der Login Ihres Wikis mit SSL gesichert ist, aber das Betrachten des Wikis ungesichert geschieht.';
-$lang['xmlrpc'] = 'XML-RPC-Zugriff erlauben.';
-$lang['xmlrpcuser'] = 'XML-RPC-Zugriff auf folgende Gruppen oder Benutzer (kommasepariert) beschränken. Wenn Sie dieses Feld leer lassen, wir der Zugriff jedem gewährt.';
$lang['updatecheck'] = 'Automatisch auf Updates und Sicherheitswarnungen prüfen? DokuWiki muss sich dafür mit update.dokuwiki.org verbinden.';
$lang['userewrite'] = 'URL rewriting';
$lang['useslash'] = 'Schrägstrich (/) als Namensraumtrenner in URLs verwenden';
diff --git a/lib/plugins/config/lang/el/lang.php b/lib/plugins/config/lang/el/lang.php
index 9f5d121de..093212664 100644
--- a/lib/plugins/config/lang/el/lang.php
+++ b/lib/plugins/config/lang/el/lang.php
@@ -93,8 +93,6 @@ $lang['disableactions_other'] = 'Άλλες λειτουργίες (διαχω
$lang['sneaky_index'] = 'Εξ ορισμού, η εφαρμογή DokuWiki δείχνει όλους τους φακέλους στην προβολή Καταλόγου. Ενεργοποιώντας αυτή την επιλογή, δεν θα εμφανίζονται οι φάκελοι για τους οποίους ο χρήστης δεν έχει δικαιώματα ανάγνωσης αλλά και οι υπο-φάκελοί τους ανεξαρτήτως δικαιωμάτων πρόσβασης.';
$lang['auth_security_timeout'] = 'Διάρκεια χρόνου για ασφάλεια πιστοποίησης (δευτερόλεπτα)';
$lang['securecookie'] = 'Τα cookies που έχουν οριστεί μέσω HTTPS πρέπει επίσης να αποστέλλονται μόνο μέσω HTTPS από τον φυλλομετρητή? Απενεργοποιήστε αυτή την επιλογή όταν μόνο η είσοδος στο wiki σας διασφαλίζεται μέσω SSL αλλά η περιήγηση γίνεται και χωρίς αυτό.';
-$lang['xmlrpc'] = 'Ενεργοποίηση/Απενεργοποίηση της διασύνδεσης XML-RPC ';
-$lang['xmlrpcuser'] = 'Περιορισμός XML-RPC πρόσβασης στις ομάδες η τους χρήστες (διαχωριζόμενοι με κόμμα). Αφήστε το κενό για πρόσβαση από όλους.';
$lang['updatecheck'] = 'Έλεγχος για ύπαρξη νέων εκδόσεων και ενημερώσεων ασφαλείας της εφαρμογής? Απαιτείται η σύνδεση με το update.dokuwiki.org για να λειτουργήσει σωστά αυτή η επιλογή.';
$lang['userewrite'] = 'Χρήση ωραίων URLs';
$lang['useslash'] = 'Χρήση slash σαν διαχωριστικό φακέλων στα URLs';
@@ -118,7 +116,7 @@ $lang['jpg_quality'] = 'Ποιότητα συμπίεσης JPG (0-100
$lang['subscribers'] = 'Να επιτρέπεται η εγγραφή στην ενημέρωση αλλαγών σελίδας';
$lang['subscribe_time'] = 'Χρόνος μετά τον οποίο οι λίστες ειδοποιήσεων και τα συνοπτικά θα αποστέλλονται (δευτερόλεπτα). Αυτό θα πρέπει να είναι μικρότερο από τον χρόνο που έχει η ρύθμιση recent_days.';
$lang['compress'] = 'Συμπίεση αρχείων CSS και javascript';
-$lang['cssdatauri'] = 'Το μέγεθος σε bytes στο οποίο οι εικόνες που αναφέρονται σε CSS αρχεία θα πρέπει να είναι ενσωματωμένες για τη μείωση των απαιτήσεων μιας κεφαλίδας αίτησης HTTP . Αυτή η τεχνική δεν θα λειτουργήσει σε IE <8! <code> 400 </ code> με <code> 600 </ code> bytes είναι μια καλή τιμή. Ορίστε την τιμή <code> 0 </ code> για να το απενεργοποιήσετε.';
+$lang['cssdatauri'] = 'Το μέγεθος σε bytes στο οποίο οι εικόνες που αναφέρονται σε CSS αρχεία θα πρέπει να είναι ενσωματωμένες για τη μείωση των απαιτήσεων μιας κεφαλίδας αίτησης HTTP . Αυτή η τεχνική δεν θα λειτουργήσει σε IE <8! <code> 400 </code> με <code> 600 </code> bytes είναι μια καλή τιμή. Ορίστε την τιμή <code> 0 </code> για να το απενεργοποιήσετε.';
$lang['hidepages'] = 'Φίλτρο απόκρυψης σελίδων (regular expressions)';
$lang['send404'] = 'Αποστολή "HTTP 404/Page Not Found" για σελίδες που δεν υπάρχουν';
$lang['sitemap'] = 'Δημιουργία Google sitemap (ημέρες)';
diff --git a/lib/plugins/config/lang/en/lang.php b/lib/plugins/config/lang/en/lang.php
index fc27e5158..2a35200bd 100644
--- a/lib/plugins/config/lang/en/lang.php
+++ b/lib/plugins/config/lang/en/lang.php
@@ -62,6 +62,8 @@ $lang['cookiedir'] = 'Cookie path. Leave blank for using baseurl.';
$lang['start'] = 'Start page name';
$lang['title'] = 'Wiki title';
$lang['template'] = 'Template';
+$lang['tagline'] = 'Tagline (if template supports it)';
+$lang['sidebar'] = 'Sidebar page name (if template supports it), empty field disables the sidebar';
$lang['license'] = 'Under which license should your content be released?';
$lang['fullpath'] = 'Reveal full path of pages in the footer';
$lang['recent'] = 'Recent changes';
@@ -82,6 +84,7 @@ $lang['useheading'] = 'Use first heading for pagenames';
$lang['refcheck'] = 'Media reference check';
$lang['refshow'] = 'Number of media references to show';
$lang['allowdebug'] = 'Allow debug <b>disable if not needed!</b>';
+$lang['mediarevisions'] = 'Enable Mediarevisions?';
$lang['usewordblock']= 'Block spam based on wordlist';
$lang['indexdelay'] = 'Time delay before indexing (sec)';
@@ -107,8 +110,8 @@ $lang['disableactions_other'] = 'Other actions (comma separated)';
$lang['sneaky_index'] = 'By default, DokuWiki will show all namespaces in the index view. Enabling this option will hide those where the user doesn\'t have read permissions. This might result in hiding of accessable subnamespaces. This may make the index unusable with certain ACL setups.';
$lang['auth_security_timeout'] = 'Authentication Security Timeout (seconds)';
$lang['securecookie'] = 'Should cookies set via HTTPS only be sent via HTTPS by the browser? Disable this option when only the login of your wiki is secured with SSL but browsing the wiki is done unsecured.';
-$lang['xmlrpc'] = 'Enable/disable XML-RPC interface.';
-$lang['xmlrpcuser'] = 'Restrict XML-RPC access to the comma separated groups or users given here. Leave empty to give access to everyone.';
+$lang['remote'] = 'Enable the remote API system. This allows other applications to access the wiki via XML-RPC or other mechanisms.';
+$lang['remoteuser'] = 'Restrict remote API access to the comma separated groups or users given here. Leave empty to give access to everyone.';
/* Advanced Options */
$lang['updatecheck'] = 'Check for updates and security warnings? DokuWiki needs to contact update.dokuwiki.org for this feature.';
@@ -152,6 +155,7 @@ $lang['rss_content'] = 'What to display in the XML feed items?';
$lang['rss_update'] = 'XML feed update interval (sec)';
$lang['recent_days'] = 'How many recent changes to keep (days)';
$lang['rss_show_summary'] = 'XML feed show summary in title';
+$lang['rss_media'] = 'What kind of changes should be listed in the XML feed?';
/* Target options */
$lang['target____wiki'] = 'Target window for internal links';
diff --git a/lib/plugins/config/lang/eo/lang.php b/lib/plugins/config/lang/eo/lang.php
index b0411ec14..3acb00545 100644
--- a/lib/plugins/config/lang/eo/lang.php
+++ b/lib/plugins/config/lang/eo/lang.php
@@ -93,8 +93,6 @@ $lang['disableactions_other'] = 'Aliaj agoj (apartite per komoj)';
$lang['sneaky_index'] = 'Apriore, DokuWiki montras ĉiujn nomspacojn en la indeksa modo. Ebligi tiun ĉi elekteblon kaŝus tion, kion la uzanto ne rajtas legi laŭ ACL. Tio povus rezulti ankaŭan kaŝon de alireblaj subnomspacoj. Kaj tiel la indekso estus neuzebla por kelkaj agordoj de ACL.';
$lang['auth_security_timeout'] = 'Sekureca Templimo por aŭtentigo (sekundoj)';
$lang['securecookie'] = 'Ĉu kuketoj difinitaj per HTTPS nur estu senditaj de la foliumilo per HTTPS? Malebligu tiun ĉi opcion kiam nur la ensaluto al via vikio estas sekurigita per SSL, sed foliumado de la vikio estas farita malsekure.';
-$lang['xmlrpc'] = 'Ebligi/malebligi la interfacon XML-RPC.';
-$lang['xmlrpcuser'] = 'Permesi XML-RPC-an aliron al certaj grupoj aŭ uzantoj, bonvolu meti iliajn komoseparitajn nomojn tie ĉi. Alirebli de ĉiu, ĝin lasu malplena.';
$lang['updatecheck'] = 'Ĉu kontroli aktualigojn kaj sekurecajn avizojn? DokuWiki bezonas kontakti update.dokuwiki.org por tiu ĉi trajto.';
$lang['userewrite'] = 'Uzi netajn URL-ojn';
$lang['useslash'] = 'Uzi frakcistrekon kiel apartigsignaĵo por nomspacoj en URL-oj';
diff --git a/lib/plugins/config/lang/es/lang.php b/lib/plugins/config/lang/es/lang.php
index 1189a6781..66d075d6b 100644
--- a/lib/plugins/config/lang/es/lang.php
+++ b/lib/plugins/config/lang/es/lang.php
@@ -80,6 +80,7 @@ $lang['useheading'] = 'Usar el primer encabezado para nombres de pág
$lang['refcheck'] = 'Control de referencia a medios';
$lang['refshow'] = 'Número de referencias a medios a mostrar';
$lang['allowdebug'] = 'Permitir debug <b>deshabilítelo si no lo necesita!</b>';
+$lang['mediarevisions'] = '¿Habilitar Mediarevisions?';
$lang['usewordblock'] = 'Bloquear spam usando una lista de palabras';
$lang['indexdelay'] = 'Intervalo de tiempo antes de indexar (segundos)';
$lang['relnofollow'] = 'Usar rel="nofollow" en enlaces externos';
@@ -102,8 +103,6 @@ $lang['disableactions_other'] = 'Otras acciones (separadas por coma)';
$lang['sneaky_index'] = 'Por defecto, DokuWiki mostrará todos los namespaces en el index. Habilitando esta opción los ocultará si el usuario no tiene permisos de lectura. Los sub-namespaces pueden resultar inaccesibles. El index puede hacerse poco usable dependiendo de las configuraciones ACL.';
$lang['auth_security_timeout'] = 'Tiempo de Autenticación (en segundos), por motivos de seguridad';
$lang['securecookie'] = 'Las cookies establecidas por HTTPS, ¿el naveagdor solo puede enviarlas por HTTPS? Inhabilite esta opción cuando solo se asegure con SSL la entrada, pero no la navegación de su wiki.';
-$lang['xmlrpc'] = 'Habilitar/Deshabilitar interfaz XML-RPC';
-$lang['xmlrpcuser'] = 'Restringir el acceso XML-RPC a los grupos o usuarios separados por coma mencionados aquí. Dejar en blanco para dar acceso a todo el mundo. ';
$lang['updatecheck'] = '¿Comprobar actualizaciones y advertencias de seguridad? Esta característica requiere que DokuWiki se conecte a update.dokuwiki.org.';
$lang['userewrite'] = 'Usar URLs bonitas';
$lang['useslash'] = 'Usar barra (/) como separador de espacios de nombres en las URLs';
@@ -132,14 +131,14 @@ $lang['hidepages'] = 'Ocultar páginas con coincidencias (expresione
$lang['send404'] = 'Enviar "HTTP 404/Page Not Found" para páginas no existentes';
$lang['sitemap'] = 'Generar sitemap de Google (días)';
$lang['broken_iua'] = '¿Se ha roto (broken) la función ignore_user_abort en su sistema? Esto puede causar que no funcione el index de búsqueda. Se sabe que IIS+PHP/CGI está roto. Vea <a href="http://bugs.splitbrain.org/?do=details&amp;task_id=852">Bug 852</a>para más información.';
-$lang['xsendfile'] = 'Utilice el X-Sendfile header para permitirle sl servidor web enviar archivos estáticos? Su servidor web necesita tener la capacidad para hacerlo.';
+$lang['xsendfile'] = '¿Utilizar la cabecera X-Sendfile para permitirle al servidor web enviar archivos estáticos? Su servidor web necesita tener la capacidad para hacerlo.';
$lang['renderer_xhtml'] = 'Visualizador a usar para salida (xhtml) principal del wiki';
$lang['renderer__core'] = '%s (núcleo dokuwiki)';
$lang['renderer__plugin'] = '%s (plugin)';
$lang['rememberme'] = 'Permitir cookies para acceso permanente (recordarme)';
$lang['rss_type'] = 'Tipo de resumen (feed) XML';
$lang['rss_linkto'] = 'Feed XML enlaza a';
-$lang['rss_content'] = 'Que mostrar en los itemes del archivo XML?';
+$lang['rss_content'] = '¿Qué mostrar en los items del archivo XML?';
$lang['rss_update'] = 'Intervalo de actualización de feed XML (segundos)';
$lang['recent_days'] = 'Cuántos cambios recientes mantener (días)';
$lang['rss_show_summary'] = 'Feed XML muestra el resumen en el título';
diff --git a/lib/plugins/config/lang/eu/lang.php b/lib/plugins/config/lang/eu/lang.php
index 9d001d494..97addbb50 100644
--- a/lib/plugins/config/lang/eu/lang.php
+++ b/lib/plugins/config/lang/eu/lang.php
@@ -83,8 +83,6 @@ $lang['disableactions_other'] = 'Beste ekintzak (komaz bereiztuak)';
$lang['sneaky_index'] = 'Lehenespenez, DokuWiki-k izen-espazio guztiak indize bistan erakutsiko ditu. Aukera hau gaituta, erabiltzaieak irakurtzeko baimenik ez dituen izen-espazioak ezkutatuko dira. Honek atzigarriak diren azpi izen-espazioak ezkutatzen ditu. Agian honek indizea erabili ezin ahal izatea eragingo du AKL ezarpen batzuetan.';
$lang['auth_security_timeout'] = 'Kautotze Segurtasun Denbora-Muga (segunduak)';
$lang['securecookie'] = 'HTTPS bidez ezarritako cookie-ak HTTPS bidez bakarrik bidali beharko lituzke nabigatzaileak? Ezgaitu aukera hau bakarrik saio hasierak SSL bidezko segurtasuna badu baina wiki-areb nabigazioa modu ez seguruan egiten bada. ';
-$lang['xmlrpc'] = 'Gaitu/ezgaitu XML-RPC interfazea.';
-$lang['xmlrpcuser'] = 'XML-RPC atzipena mugatu hemen emandako komaz bereiztutako talde eta erabiltzaileei. Utzi hutsik atzipena guztiei emateko.';
$lang['updatecheck'] = 'Konprobatu eguneratze eta segurtasun oharrak? DokuWiki-k honetarako update.dokuwiki.org kontaktatu behar du.';
$lang['userewrite'] = 'Erabili URL politak';
$lang['useslash'] = 'Erabili barra (/) izen-espazio banatzaile moduan URLetan';
diff --git a/lib/plugins/config/lang/fa/lang.php b/lib/plugins/config/lang/fa/lang.php
index 42cc3ed05..c1a112365 100644
--- a/lib/plugins/config/lang/fa/lang.php
+++ b/lib/plugins/config/lang/fa/lang.php
@@ -86,8 +86,6 @@ $lang['disableactions_other'] = 'فعالیت‌های دیگر (با ویرگ
$lang['sneaky_index'] = 'به طور پیش‌فرض، DokuWiki در فهرست تمامی فضای‌نام‌ها را نمایش می‌دهد. فعال کردن این گزینه، مواردی را که کاربر حق خواندنشان را ندارد مخفی می‌کند. این گزینه ممکن است باعث دیده نشدن زیرفضای‌نام‌هایی شود که دسترسی خواندن به آن‌ها وجود دارد. و ممکن است باعث شود که فهرست در حالاتی از دسترسی‌ها، غیرقابل استفاده شود.';
$lang['auth_security_timeout'] = 'زمان انقضای معتبرسازی به ثانیه';
$lang['securecookie'] = 'آیا کوکی‌ها باید با قرارداد HTTPS ارسال شوند؟ این گزینه را زمانی که فقط صفحه‌ی ورود ویکی‌تان با SSL امن شده است، اما ویکی را ناامن مرور می‌کنید، غیرفعال نمایید.';
-$lang['xmlrpc'] = 'فعال/غیرفعال کردن XML-RPC';
-$lang['xmlrpcuser'] = 'محمدود کردن دسترسی به XML-RPC توسط گروه های جدا شده توسط ویرگول ویا اعضای داده شده در اینجا. این مکان را خالی بگزارید تا به همه دسترسی داده شود.';
$lang['updatecheck'] = 'هشدارهای به روز رسانی و امنیتی بررسی شود؟ برای این‌کار DokuWiki با سرور update.dokuwiki.org تماس خواهد گرفت.';
$lang['userewrite'] = 'از زیباکننده‌ی آدرس‌ها استفاده شود';
$lang['useslash'] = 'از اسلش «/» برای جداکننده‌ی آدرس فضای‌نام‌ها استفاده شود';
diff --git a/lib/plugins/config/lang/fi/lang.php b/lib/plugins/config/lang/fi/lang.php
index 9598a0d93..f75a18ecd 100644
--- a/lib/plugins/config/lang/fi/lang.php
+++ b/lib/plugins/config/lang/fi/lang.php
@@ -88,8 +88,6 @@ $lang['disableactions_other'] = 'Muut toiminnot (pilkulla erotettuna)';
$lang['sneaky_index'] = 'Oletuksena DokuWiki näyttää kaikki nimiavaruudet index-näkymäsä. Tämä asetus piilottaa ne, joihin käyttäjällä ei ole lukuoikeuksia. Tämä voi piilottaa joitakin sallittuja alinimiavaruuksia. Tästä johtuen index-näkymä voi olla käyttökelvoton joillakin ACL-asetuksilla';
$lang['auth_security_timeout'] = 'Autentikoinnin aikakatkaisu (sekunteja)';
$lang['securecookie'] = 'Lähetetäänkö HTTPS:n kautta asetetut evästetiedot HTTPS-yhteydellä? Kytke pois, jos vain wikisi kirjautuminen on suojattu SSL:n avulla, mutta muuten wikiä käytetään ilman suojausta.';
-$lang['xmlrpc'] = 'Käytä/poista XML-RPC liityntää';
-$lang['xmlrpcuser'] = 'Estä XML-RPC:n käyttö pilkulla erotetun listan ryhmille tai käyttäjille. Jätä tyhjäksi salliaksesi käyttö kaikille.';
$lang['updatecheck'] = 'Tarkista päivityksiä ja turvavaroituksia? Tätä varten DokuWikin pitää ottaa yhteys update.dokuwiki.orgiin.';
$lang['userewrite'] = 'Käytä siivottuja URLeja';
$lang['useslash'] = 'Käytä kauttaviivaa nimiavaruuksien erottimena URL-osoitteissa';
diff --git a/lib/plugins/config/lang/fr/intro.txt b/lib/plugins/config/lang/fr/intro.txt
index de8a965d8..2a59b34d1 100644
--- a/lib/plugins/config/lang/fr/intro.txt
+++ b/lib/plugins/config/lang/fr/intro.txt
@@ -1,6 +1,6 @@
====== Gestionnaire de configuration ======
-Utilisez cette page pour contrôler les paramètres de votre installation de DokuWiki. Pour de l'aide sur chaque paramètre, reportez vous à [[doku>config]]. Pour d'autres détails concernant ce module, reportez vous à [[doku>plugin:config]].
+Utilisez cette page pour contrôler les paramètres de votre installation de DokuWiki. Pour de l'aide sur chaque paramètre, reportez vous à [[doku>fr:config]]. Pour d'autres détails concernant ce module, reportez vous à [[doku>fr:plugin:config]].
Les paramètres affichés sur un fond rouge sont protégés et ne peuvent être modifiés avec ce module. Les paramètres affichés sur un fond bleu sont les valeurs par défaut et les valeurs affectées à votre installation sont affichées sur un fond blanc. Les paramètres bleus et blancs peuvent être modifiés.
diff --git a/lib/plugins/config/lang/fr/lang.php b/lib/plugins/config/lang/fr/lang.php
index 8f669a629..4a67a0fc8 100644
--- a/lib/plugins/config/lang/fr/lang.php
+++ b/lib/plugins/config/lang/fr/lang.php
@@ -16,6 +16,7 @@
* @author Samuel Dorsaz samuel.dorsaz@novelion.net
* @author Johan Guilbaud <guilbaud.johan@gmail.com>
* @author schplurtz@laposte.net
+ * @author skimpax@gmail.com
*/
$lang['menu'] = 'Paramètres de configuration';
$lang['error'] = 'Paramètres non modifiés en raison d\'une valeur non valide, vérifiez vos réglages et réessayez. <br />Les valeurs erronées sont entourées d\'une bordure rouge.';
@@ -62,7 +63,7 @@ $lang['youarehere'] = 'Traces hiérarchiques';
$lang['typography'] = 'Effectuer des améliorations typographiques';
$lang['htmlok'] = 'Permettre HTML dans les pages';
$lang['phpok'] = 'Permettre PHP dans les pages';
-$lang['dformat'] = 'Format de date (cf. fonction <a href="http://www.php.net/strftime">strftime</a> de PHP)';
+$lang['dformat'] = 'Format de date (cf. fonction <a href="http://fr.php.net/strftime">strftime</a> de PHP)';
$lang['signature'] = 'Signature';
$lang['toptoclevel'] = 'Niveau le plus haut à afficher dans la table des matières';
$lang['tocminheads'] = 'Nombre minimum de titres pour qu\'une table des matières soit construite';
@@ -74,6 +75,7 @@ $lang['useheading'] = 'Utiliser le titre de premier niveau';
$lang['refcheck'] = 'Vérifier les références de média';
$lang['refshow'] = 'Nombre de références de média à montrer';
$lang['allowdebug'] = 'Debug (<strong>Ne l\'activez que si vous en avez besoin !</strong>)';
+$lang['mediarevisions'] = 'Activer les révisions (gestion de versions) des médias';
$lang['usewordblock'] = 'Bloquer le spam selon les mots utilisés';
$lang['indexdelay'] = 'Délai avant l\'indexation (en secondes)';
$lang['relnofollow'] = 'Utiliser rel="nofollow" sur les liens extérieurs';
@@ -96,8 +98,6 @@ $lang['disableactions_other'] = 'Autres actions (séparées par des virgules)';
$lang['sneaky_index'] = 'Par défaut, DokuWiki affichera toutes les catégories dans la vue par index. Activer cette option permet de cacher celles pour lesquelles l\'utilisateur n\'a pas la permission de lecture. Il peut en résulter le masquage de sous-catégories accessibles. Ceci peut rendre l\'index inutilisable avec certaines ACL.';
$lang['auth_security_timeout'] = 'Délai d\'expiration de sécurité (secondes)';
$lang['securecookie'] = 'Les cookies mis via HTTPS doivent-ils n\'être envoyé par le navigateur que via HTTPS ? Ne désactivez cette option que si la connexion à votre wiki est sécurisée avec SSL mais que la navigation sur le wiki n\'est pas sécurisée.';
-$lang['xmlrpc'] = 'Activer l\'interface XML-RPC.';
-$lang['xmlrpcuser'] = 'Restreindre l\'accès à XML-RPC aux groupes et utilisateurs indiqués ici. Laisser vide afin que tout le monde y ait accès.';
$lang['updatecheck'] = 'Vérifier les mises à jour ? DokuWiki doit pouvoir contacter update.dokuwiki.org.';
$lang['userewrite'] = 'URL esthétiques';
$lang['useslash'] = 'Utiliser « / » comme séparateur de catégorie dans les URL';
diff --git a/lib/plugins/config/lang/gl/lang.php b/lib/plugins/config/lang/gl/lang.php
index 07d62b7af..97b7ecdc8 100644
--- a/lib/plugins/config/lang/gl/lang.php
+++ b/lib/plugins/config/lang/gl/lang.php
@@ -3,6 +3,7 @@
* Galicianlanguage file
*
* @author Medúlio <medulio@ciberirmandade.org>
+ * @author Oscar M. Lage <r0sk10@gmail.com>
*/
$lang['menu'] = 'Opcións de Configuración';
$lang['error'] = 'Configuración non actualizada debido a un valor inválido, por favor revisa os teus trocos e volta envialos de novo.
@@ -39,6 +40,7 @@ $lang['lang'] = 'Idioma';
$lang['basedir'] = 'Directorio base';
$lang['baseurl'] = 'URL base';
$lang['savedir'] = 'Directorio no que se gardarán os datos';
+$lang['cookiedir'] = 'Ruta das cookies. Deixar en blanco para usar a url de base.';
$lang['start'] = 'Nome da páxina inicial';
$lang['title'] = 'Título do Wiki';
$lang['template'] = 'Sobreplanta';
@@ -62,6 +64,7 @@ $lang['useheading'] = 'Utilizar a primeira cabeceira para os nomes de
$lang['refcheck'] = 'Comprobar a referencia media';
$lang['refshow'] = 'Número de referencias media a amosar';
$lang['allowdebug'] = 'Permitir o depurado <b>desactívao se non o precisas!</b>';
+$lang['mediarevisions'] = 'Habilitar revisións dos arquivos-media?';
$lang['usewordblock'] = 'Bloquear correo-lixo segundo unha lista de verbas';
$lang['indexdelay'] = 'Retardo denantes de indexar (seg)';
$lang['relnofollow'] = 'Utilizar rel="nofollow" nas ligazóns externas';
@@ -84,14 +87,13 @@ $lang['disableactions_other'] = 'Outras accións (separadas por comas)';
$lang['sneaky_index'] = 'O DokuWiki amosará por defecto todos os nomes de espazo na vista de índice. Se activas isto agocharanse aqueles onde o usuario non teña permisos de lectura.';
$lang['auth_security_timeout'] = 'Tempo Límite de Seguridade de Autenticación (segundos)';
$lang['securecookie'] = 'Deben enviarse só vía HTTPS polo navegador as cookies configuradas vía HTTPS? Desactiva esta opción cando só o inicio de sesión do teu wiki estea asegurado con SSL pero a navegación do mesmo se faga de xeito inseguro.';
-$lang['xmlrpc'] = 'Activar/Desactivar interface XML-RPC';
-$lang['xmlrpcuser'] = 'Restrinxir o acceso mediante XML-RPC á lista separada por comas dos grupos e/ou usuarios proporcionados aquí. Déixao baleiro para darlle acceso a todas as persoas.';
$lang['updatecheck'] = 'Comprobar se hai actualizacións e avisos de seguridade? O DokuWiki precisa contactar con update.dokuwiki.org para executar esta característica.';
$lang['userewrite'] = 'Utilizar URLs amigábeis';
$lang['useslash'] = 'Utilizar a barra inclinada (/) como separador de nome de espazo nos URLs';
$lang['usedraft'] = 'Gardar un borrador automaticamente no tempo da edición';
$lang['sepchar'] = 'Verba separadora do nome de páxina';
$lang['canonical'] = 'Utilizar URLs completamente canónicos';
+$lang['fnencode'] = 'Método para codificar os nomes de arquivo non-ASCII.';
$lang['autoplural'] = 'Comprobar formas plurais nas ligazóns';
$lang['compression'] = 'Método de compresión para arquivos attic';
$lang['cachetime'] = 'Tempo máximo para a caché (seg.)';
@@ -100,6 +102,7 @@ $lang['fetchsize'] = 'Tamaño máximo (en bytes) que pode descargar
$lang['notify'] = 'Enviar notificacións de trocos a este enderezo de correo-e';
$lang['registernotify'] = 'Enviar información de novos usuarios rexistrados a este enderezo de correo-e';
$lang['mailfrom'] = 'Enderezo de correo-e a usar para as mensaxes automáticas';
+$lang['mailprefix'] = 'Prefixo de asunto de correo-e para as mensaxes automáticas';
$lang['gzip_output'] = 'Utilizar Contido-Codificación gzip para o xhtml';
$lang['gdlib'] = 'Versión da Libraría GD';
$lang['im_convert'] = 'Ruta deica a ferramenta de conversión ImageMagick';
@@ -132,6 +135,7 @@ $lang['proxy____port'] = 'Porto do Proxy';
$lang['proxy____user'] = 'Nome de usuario do Proxy';
$lang['proxy____pass'] = 'Contrasinal do Proxy';
$lang['proxy____ssl'] = 'Utilizar ssl para conectar ao Proxy';
+$lang['proxy____except'] = 'Expresión regular para atopar URLs que deban ser omitidas polo Proxy.';
$lang['safemodehack'] = 'Activar hack de modo seguro (safemode)';
$lang['ftp____host'] = 'Servidor FTP para o hack de modo seguro (safemode)';
$lang['ftp____port'] = 'Porto FTP para o hack de modo seguro(safemode)';
@@ -179,3 +183,4 @@ $lang['useheading_o_0'] = 'Endexamais';
$lang['useheading_o_navigation'] = 'Só Navegación';
$lang['useheading_o_content'] = 'Só Contido do Wiki';
$lang['useheading_o_1'] = 'Sempre';
+$lang['readdircache'] = 'Edad máxima para o directorio de caché (seg)';
diff --git a/lib/plugins/config/lang/he/lang.php b/lib/plugins/config/lang/he/lang.php
index e80a1bd7a..b200082c9 100644
--- a/lib/plugins/config/lang/he/lang.php
+++ b/lib/plugins/config/lang/he/lang.php
@@ -82,7 +82,6 @@ $lang['disableactions_wikicode'] = 'הצגת המקור/יצוא גולמי';
$lang['disableactions_other'] = 'פעולות אחרות (מופרדות בפסיק)';
$lang['sneaky_index'] = 'כברירת מחדל, דוקוויקי יציג את כל מרחבי השמות בתצוגת תוכן הענינים. בחירה באפשרות זאת תסתיר את אלו שבהם למשתמש אין הרשאות קריאה. התוצאה עלולה להיות הסתרת תת מרחבי שמות אליהם יש למשתמש גישה. באופן זה תוכן הענינים עלול להפוך לחסר תועלת עם הגדרות ACL מסוימות';
$lang['auth_security_timeout'] = 'מגבלת אבטח פסק הזמן להזדהות (שניות)';
-$lang['xmlrpc'] = 'לאפשר.לחסום את מנשק XML-RPC';
$lang['updatecheck'] = 'בדיקת עידכוני אבטחה והתראות? על DokuWiki להתקשר אל update.dokuwiki.org לצורך כך.';
$lang['userewrite'] = 'השתמש בכתובות URL יפות';
$lang['useslash'] = 'השתמש בלוכסן להגדרת מרחבי שמות בכתובות';
diff --git a/lib/plugins/config/lang/hu/lang.php b/lib/plugins/config/lang/hu/lang.php
index f991b7c95..a1de94160 100644
--- a/lib/plugins/config/lang/hu/lang.php
+++ b/lib/plugins/config/lang/hu/lang.php
@@ -89,8 +89,6 @@ $lang['disableactions_other'] = 'Egyéb tevékenységek (vesszővel elválasztv
$lang['sneaky_index'] = 'Alapértelmezetten minden névtér látszik a DokuWiki áttekintő (index) oldalán. Ezen opció bekapcsolása után azok nem jelennek meg, melyekhez a felhasználónak nincs olvasás joga. De ezzel eltakarhatunk egyébként elérhető al-névtereket is, így bizonyos ACL beállításoknál használhatatlan indexet eredményez ez a beállítás.';
$lang['auth_security_timeout'] = 'Authentikációs biztonsági időablak (másodperc)';
$lang['securecookie'] = 'A böngészők a HTTPS felett beállított sütijüket csak HTTPS felett küldhetik? Kapcsoljuk ki ezt az opciót, ha csak a bejelentkezést védjük SSL-lel, a wiki tartalmának böngészése nyílt forgalommal történik.';
-$lang['xmlrpc'] = 'XML-RPC interfész engedélyezése/tiltása';
-$lang['xmlrpcuser'] = 'Korlátozza XML-RPC hozzáférést az itt megadott vesszővel elválasztott csoportok vagy felhasználók számára. Hagyja üresen, ha mindenki számára biztosítja a hozzáférést.';
$lang['updatecheck'] = 'Frissítések és biztonsági figyelmeztetések figyelése. Ehhez a DokuWikinek kapcsolatba kell lépnie a update.dokuwiki.org-gal.';
$lang['userewrite'] = 'Szép URL-ek használata';
$lang['useslash'] = 'Per-jel használata névtér-elválasztóként az URL-ekben';
diff --git a/lib/plugins/config/lang/ia/lang.php b/lib/plugins/config/lang/ia/lang.php
index 689869b89..fdb9d954e 100644
--- a/lib/plugins/config/lang/ia/lang.php
+++ b/lib/plugins/config/lang/ia/lang.php
@@ -83,8 +83,6 @@ $lang['disableactions_other'] = 'Altere actiones (separate per commas)';
$lang['sneaky_index'] = 'Normalmente, DokuWiki monstra tote le spatios de nomines in le vista del indice. Si iste option es active, illos ubi le usator non ha le permission de lectura essera celate. Isto pote resultar in le celamento de subspatios de nomines accessibile. Isto pote render le indice inusabile con certe configurationes de ACL.';
$lang['auth_security_timeout'] = 'Expiration pro securitate de authentication (secundas)';
$lang['securecookie'] = 'Debe le cookies definite via HTTPS solmente esser inviate via HTTPS per le navigator? Disactiva iste option si solmente le apertura de sessiones a tu wiki es protegite con SSL ma le navigation del wiki es facite sin securitate.';
-$lang['xmlrpc'] = 'Activar/disactivar interfacie XML-RPC.';
-$lang['xmlrpcuser'] = 'Limitar le accesso a XML-RPC al gruppos o usatores date hic, separate per commas. Lassa isto vacue pro dar accesso a omnes.';
$lang['updatecheck'] = 'Verificar si existe actualisationes e advertimentos de securitate? DokuWiki debe contactar update.dokuwiki.org pro exequer iste function.';
$lang['userewrite'] = 'Usar URLs nette';
$lang['useslash'] = 'Usar le barra oblique ("/") como separator de spatios de nomines in URLs';
diff --git a/lib/plugins/config/lang/id-ni/lang.php b/lib/plugins/config/lang/id-ni/lang.php
index edde733fb..7b7e14ce5 100644
--- a/lib/plugins/config/lang/id-ni/lang.php
+++ b/lib/plugins/config/lang/id-ni/lang.php
@@ -5,7 +5,6 @@
* @author Harefa <fidelis@harefa.com>
* @author Yustinus Waruwu <juswaruwu@gmail.com>
*/
-$lang['xmlrpc'] = 'Orifi/böi\'orifi XML-RPC interface.';
$lang['renderer_xhtml'] = 'Fake Renderer ba zito\'ölö (XHTML) Wiki-output.';
$lang['renderer__core'] = '%s (dokuwiki core)';
$lang['renderer__plugin'] = '%s (plugin)';
diff --git a/lib/plugins/config/lang/it/lang.php b/lib/plugins/config/lang/it/lang.php
index c4dd433ed..9c348dcee 100644
--- a/lib/plugins/config/lang/it/lang.php
+++ b/lib/plugins/config/lang/it/lang.php
@@ -94,8 +94,6 @@ $lang['disableactions_other'] = 'Altre azioni (separate da virgola)';
$lang['sneaky_index'] = 'Normalmente, DokuWiki mostra tutte le categorie nella vista indice. Abilitando questa opzione, saranno nascoste quelle per cui l\'utente non ha il permesso in lettura. Questo potrebbe far sì che alcune sottocategorie accessibili siano nascoste. La pagina indice potrebbe quindi diventare inutilizzabile con alcune configurazioni dell\'ACL.';
$lang['auth_security_timeout'] = 'Tempo di sicurezza per l\'autenticazione (secondi)';
$lang['securecookie'] = 'Devono i cookies impostati tramite HTTPS essere inviati al browser solo tramite HTTPS? Disattiva questa opzione solo quando l\'accesso al tuo wiki viene effettuato con il protocollo SSL ma la navigazione del wiki non risulta sicura.';
-$lang['xmlrpc'] = 'Abilita/disabilita interfaccia XML-RPC.';
-$lang['xmlrpcuser'] = 'Limita l\'accesso XML-RPC ai gruppi o utenti indicati qui (separati da virgola). Lascia il campo vuoto per dare accesso a tutti.';
$lang['updatecheck'] = 'Controllare aggiornamenti e avvisi di sicurezza? DokuWiki deve contattare update.dokuwiki.org per questa funzione.';
$lang['userewrite'] = 'Usa il rewrite delle URL';
$lang['useslash'] = 'Usa la barra rovescia (slash) come separatore nelle URL';
diff --git a/lib/plugins/config/lang/ja/lang.php b/lib/plugins/config/lang/ja/lang.php
index 19f10af48..fb263fe00 100644
--- a/lib/plugins/config/lang/ja/lang.php
+++ b/lib/plugins/config/lang/ja/lang.php
@@ -8,6 +8,7 @@
* @author Ikuo Obataya <i.obataya@gmail.com>
* @author Daniel Dupriest <kououken@gmail.com>
* @author Kazutaka Miyasaka <kazmiya@gmail.com>
+ * @author Taisuke Shimamoto <dentostar@gmail.com>
*/
$lang['menu'] = 'サイト設定';
$lang['error'] = '不正な値が存在するため、設定は更新されませんでした。入力値を確認してから、再度更新してください。
@@ -41,12 +42,15 @@ $lang['_msg_setting_no_default'] = '初期値が設定されていません。';
$lang['fmode'] = 'ファイル作成マスク';
$lang['dmode'] = 'フォルダ作成マスク';
$lang['lang'] = '使用言語';
-$lang['basedir'] = 'ベースディレクトリ';
-$lang['baseurl'] = 'ベースURL';
+$lang['basedir'] = 'サーバのパス (例: <code>/dokuwiki/</code>)。空欄にすると自動的に検出します。';
+$lang['baseurl'] = 'サーバの URL (例: <code>http://www.yourserver.com</code>)。空欄にすると自動的に検出します。';
$lang['savedir'] = '保存ディレクトリ';
+$lang['cookiedir'] = 'Cookie のパス。空欄にすると baseurl を使用します。';
$lang['start'] = 'スタートページ名';
$lang['title'] = 'WIKIタイトル';
$lang['template'] = 'テンプレート';
+$lang['tagline'] = 'キャッチフレーズ (テンプレートが対応していれば)';
+$lang['sidebar'] = 'サイドバー用ページ名 (テンプレートが対応していれば)。空欄でサイドバー無効。';
$lang['license'] = '作成した内容をどのライセンスでリリースしますか?';
$lang['fullpath'] = 'ページのフッターに絶対パスを表示';
$lang['recent'] = '最近の変更表示数';
@@ -67,6 +71,7 @@ $lang['useheading'] = '最初の見出しをページ名とする';
$lang['refcheck'] = 'メディア参照元チェック';
$lang['refshow'] = 'メディア参照元表示数';
$lang['allowdebug'] = 'デバッグモード(<b>必要で無いときは無効にしてください</b>)';
+$lang['mediarevisions'] = 'メディアファイルの履歴を有効にしますか?';
$lang['usewordblock'] = '単語リストに基づくスパムブロック';
$lang['indexdelay'] = 'インデックスを許可(何秒後)';
$lang['relnofollow'] = 'rel="nofollow"を付加';
@@ -114,6 +119,7 @@ $lang['jpg_quality'] = 'JPG圧縮品質(0-100)';
$lang['subscribers'] = '更新通知機能';
$lang['subscribe_time'] = '購読リストと概要を送信する期間(秒)。「最近の変更とする期間」で指定した期間より小さくしてください。';
$lang['compress'] = 'CSSとJavaScriptを圧縮';
+$lang['cssdatauri'] = 'HTTP リクエスト数によるオーバーヘッドを減らすため、CSS ファイルから参照される画像ファイルのサイズがここで指定するバイト数以内の場合は CSS ファイル内に Data URI として埋め込みます。このテクニックは IE7 以下では動作しません! <code>400</code> から <code>600</code> バイトがちょうどよい値です。<code>0</code> を指定すると埋め込み処理は行われません。';
$lang['hidepages'] = '非公開ページ(Regex)';
$lang['send404'] = '文書が存在しないページに"HTTP404/Page Not Found"を使用';
$lang['sitemap'] = 'Googleサイトマップ作成頻度(日数)';
@@ -129,6 +135,7 @@ $lang['rss_content'] = 'XMLフィードに何を表示させますか
$lang['rss_update'] = 'RSSフィードの更新間隔(秒)';
$lang['recent_days'] = '最近の変更とする期間(日数)';
$lang['rss_show_summary'] = 'フィードのタイトルにサマリーを表示';
+$lang['rss_media'] = 'XMLフィードで、どんな種類の変更を記載するか';
$lang['target____wiki'] = '内部リンクの表示先';
$lang['target____interwiki'] = 'InterWikiリンクの表示先';
$lang['target____extern'] = '外部リンクの表示先';
diff --git a/lib/plugins/config/lang/ko/lang.php b/lib/plugins/config/lang/ko/lang.php
index 20cfcdcfe..82863b684 100644
--- a/lib/plugins/config/lang/ko/lang.php
+++ b/lib/plugins/config/lang/ko/lang.php
@@ -8,6 +8,7 @@
* @author Song Younghwan <purluno@gmail.com>
* @author SONG Younghwan <purluno@gmail.com>
* @author Seung-Chul Yoo <dryoo@live.com>
+ * @author erial2@gmail.com
*/
$lang['menu'] = '환경 설정';
$lang['error'] = '잘못된 값때문에 설정들을 변경할 수 없습니다. 수정한 값들을 검사하고 확인을 누르기 바랍니다.
@@ -43,9 +44,12 @@ $lang['lang'] = '언어';
$lang['basedir'] = '기본 디렉토리';
$lang['baseurl'] = '기본 URL';
$lang['savedir'] = '데이타 저장 디렉토리';
+$lang['cookiedir'] = '쿠키 위치. 비워두면 기본 url 위치로 지정됩니다.';
$lang['start'] = '시작 페이지 이름';
$lang['title'] = '위키 제목';
$lang['template'] = '템플릿';
+$lang['tagline'] = '태그 라인 (템플릿이 지원할 때에 한해)';
+$lang['sidebar'] = '사이드바 페이지 이름(템플릿이 지원할 때에 한해). 비워두면 사이드바를 비활성화함';
$lang['license'] = '컨텐트에 어떤 라이센스 정책을 적용하시겠습니까?';
$lang['fullpath'] = '페이지 하단에 전체 경로 보여주기';
$lang['recent'] = '최근에 바뀐 것';
@@ -66,6 +70,7 @@ $lang['useheading'] = '페이지 이름으로 첫 헤드라인 사용
$lang['refcheck'] = '미디어 참조 검사';
$lang['refshow'] = '보여줄 미디어 참조 수';
$lang['allowdebug'] = '디버그 허용 <b>필요하지 않으면 금지!</b>';
+$lang['mediarevisions'] = '미디어 버전 관리를 사용하시겠습니까?';
$lang['usewordblock'] = '금지단어를 사용해 스팸 막기';
$lang['indexdelay'] = '색인 연기 시간(초)';
$lang['relnofollow'] = '외부 링크에 rel="nofollow" 사용';
@@ -115,6 +120,7 @@ $lang['jpg_quality'] = 'JPG 압축 품질 (0-100)';
$lang['subscribers'] = '페이지 갱신 알람 기능';
$lang['subscribe_time'] = ' 구독 목록과 요약이 보내질 경과 시간 (초); 이 것은 recent_days에서 설정된 시간보다 작아야 합니다.';
$lang['compress'] = '최적화된 CSS, javascript 출력';
+$lang['cssdatauri'] = '이미지가 렌더링될 최대 용량 크기를 CSS에 규정해야 HTTP request 헤더 오버헤드 크기를 감소시킬 수 있습니다. 이 기술은 IE 7 이하에서는 작동하지 않습니다! <code>400</code> 에서 <code>600></code> 정도면 좋은 효율을 가져옵니다. <code>0</code>로 지정할 경우 비활성화 됩니다.';
$lang['hidepages'] = '매칭된 페이지 숨기기(정규표현식)';
$lang['send404'] = '존재하지 않는 페이지에 대해 "HTTP 404/Page Not Found" 응답';
$lang['sitemap'] = '구글 사이트맵 생성(날짜)';
@@ -131,6 +137,7 @@ $lang['rss_content'] = 'XML feed 항목들에 표시되는 내용은?'
$lang['rss_update'] = 'XML feed 갱신 주기(초)';
$lang['recent_days'] = '최근 바뀐 페이지 기준 시간(날짜)';
$lang['rss_show_summary'] = 'XML feed 제목에서 요약정보 보여주기';
+$lang['rss_media'] = '어떤 규격으로 XML 피드를 받아보시겠습니까?';
$lang['target____wiki'] = '내부 링크들에 대한 타겟 윈도우 ';
$lang['target____interwiki'] = 'InterWiki 링크들에 대한 타겟 윈도우';
$lang['target____extern'] = '외부 링크들에 대한 타겟 윈도우';
diff --git a/lib/plugins/config/lang/la/lang.php b/lib/plugins/config/lang/la/lang.php
index 07d92ae36..057e69974 100644
--- a/lib/plugins/config/lang/la/lang.php
+++ b/lib/plugins/config/lang/la/lang.php
@@ -82,8 +82,6 @@ $lang['disableactions_other'] = 'Aliae actiones (uirgulis diuisae)';
$lang['sneaky_index'] = 'Hic uicis omnia genera in indice inserit. Si ineptam hanc optionem facias, solum ea, quae Sodales uidere possunt, in indice erunt. Hoc suggreges et suggenera abscondere potest.';
$lang['auth_security_timeout'] = 'Confirmationis Tempus (secundis)';
$lang['securecookie'] = 'Formulae HTTPS mittine solum per HTTPS possunt? Ineptam hanc optio facias, si accessus uicis tutus est, sed interretis non.';
-$lang['xmlrpc'] = 'Aptam\Ineptam XML-RPC administrationem facere';
-$lang['xmlrpcuser'] = 'Accessus XML-RPC gregibus uel Sodalibus in hoc indice astringere. Nihil scribere ut omnes accessum habeant';
$lang['updatecheck'] = 'Nouationes et fiducias inspicerene? Hic uicis connectere update.dokuwiki.org debes.';
$lang['userewrite'] = 'VRL formosis uti';
$lang['useslash'] = 'Repagula in URL, ut genera diuidas, uti';
diff --git a/lib/plugins/config/lang/lv/lang.php b/lib/plugins/config/lang/lv/lang.php
index 2f5883269..f95697c46 100644
--- a/lib/plugins/config/lang/lv/lang.php
+++ b/lib/plugins/config/lang/lv/lang.php
@@ -84,8 +84,6 @@ $lang['disableactions_other'] = 'citas darbības (atdalīt ar komatiem)';
$lang['sneaky_index'] = 'Pēc noklusētā DokuWiki lapu sarakstā parāda visu nodaļu lapas. Ieslēdzot šo parametru, noslēps tās nodaļas, kuras apmeklētājam nav tiesības lasīt. Bet tad tiks arī paslēptas dziļākas, bet atļautas nodaļas. Atsevišķos pieejas tiesību konfigurācijas gadījumos lapu saraksts var nedarboties.';
$lang['auth_security_timeout'] = 'Autorizācijas drošības intervāls (sekundēs)';
$lang['securecookie'] = 'Vai pa HTTPS sūtāmās sīkdatnes sūtīt tikai pa HTTPS? Atslēdz šo iespēju, kad tikai pieteikšanās wiki sistēmā notiek pa SSL šifrētu savienojumu, bet skatīšana - pa nešifrētu.';
-$lang['xmlrpc'] = 'Ieslēgt/izslēgt XML-RPC interfeisu.';
-$lang['xmlrpcuser'] = 'Ierobežot XML-RPC piekļuvi norādītām lietotāju grupām vai lietotājiem (atdalīt ar komatiem!). Atstāt tukšu, lai piekļuve būtu visiem.';
$lang['updatecheck'] = 'Pārbaudīt, vai pieejami atjauninājumi un drošības brīdinājumi? Dokuwiki sazināsies ar update.dokuwiki.org';
$lang['userewrite'] = 'Ērti lasāmas adreses (URL)';
$lang['useslash'] = 'Lietot slīpiņu par URL atdalītāju';
diff --git a/lib/plugins/config/lang/mr/lang.php b/lib/plugins/config/lang/mr/lang.php
index 321e05546..4f33bfa7c 100644
--- a/lib/plugins/config/lang/mr/lang.php
+++ b/lib/plugins/config/lang/mr/lang.php
@@ -86,8 +86,6 @@ $lang['disableactions_other'] = 'इतर क्रिया ( स्वल्
$lang['sneaky_index'] = 'सूची दृश्यामधे डिफॉल्ट स्वरूपात डॉक्युविकी सगळे नेमस्पेस दाखवते. हा पर्याय चालू केल्यास सदस्याला वाचण्याची परवानगी नसलेले नेमस्पेस दिसणार नाहीत. यामुळे परवानगी असलेले उप - नेमस्पेस न दिसण्याची शक्यता आहे. यामुळे काही विशिष्ठ ACL सेटिंगसाठी सूची वापरता येण्यासारखी राहणार नाही.';
$lang['auth_security_timeout'] = 'अधिकृत करण्याच्या प्रक्रियेची कालमर्यादा';
$lang['securecookie'] = 'HTTPS वापरून सेट केलेले कूकीज ब्राउजरने HTTPS द्वाराच पाठवले पाहिजेत का? जर तुमच्या विकीचं फ़क्त लॉगिन पानच SSL वापरून सुरक्षित केलं असेल व पानांचं ब्राउजिंग असुरक्षित असेल तर हा पर्याय चालू करू नका.';
-$lang['xmlrpc'] = 'XML-RPC इंटरफेस चालू/बंद करा';
-$lang['xmlrpcuser'] = 'XML-RPC सुविधा फ़क्त इथे स्वल्पविरामाने अलग करून दिलेल्या गट किंवा वापरकर्त्याला उपलब्ध आहेत. सर्वाना ही सुविधा देण्यासाठी ही जागा रिकामी सोडा.';
$lang['updatecheck'] = 'अपडेट आणि सुरक्षिततेविशयी सूचनान्वर पाळत ठेऊ का? या सुविधेसाठी डॉक्युविकीला update.dokuwiki.org शी संपर्क साधावा लागेल.';
$lang['userewrite'] = 'छान छान URL वापर';
$lang['useslash'] = 'URL मधे नेमस्पेस अलग करण्यासाठी \'/\' चिह्न वापरा';
diff --git a/lib/plugins/config/lang/ms/lang.php b/lib/plugins/config/lang/ms/lang.php
new file mode 100644
index 000000000..77ad2a1c1
--- /dev/null
+++ b/lib/plugins/config/lang/ms/lang.php
@@ -0,0 +1,6 @@
+<?php
+/**
+ * Malay language file
+ *
+ * @author Markos
+ */
diff --git a/lib/plugins/config/lang/nl/lang.php b/lib/plugins/config/lang/nl/lang.php
index f6574ee2c..77b8d6a1a 100644
--- a/lib/plugins/config/lang/nl/lang.php
+++ b/lib/plugins/config/lang/nl/lang.php
@@ -14,6 +14,7 @@
* @author Marijn Hofstra <hofstra.m@gmail.com>
* @author Timon Van Overveldt <timonvo@gmail.com>
* @author Jeroen
+ * @author Ricardo Guijt <ricardoguijt@gmail.com>
*/
$lang['menu'] = 'Configuratie-instellingen';
$lang['error'] = 'De instellingen zijn niet gewijzigd wegens een incorrecte waarde, kijk je wijzigingen na en sla dan opnieuw op.<br />Je kunt de incorrecte waarde(s) herkennen aan de rode rand.';
@@ -72,6 +73,7 @@ $lang['useheading'] = 'Eerste kopje voor paginanaam gebruiken';
$lang['refcheck'] = 'Controleer verwijzingen naar media';
$lang['refshow'] = 'Aantal te tonen mediaverwijzingen';
$lang['allowdebug'] = 'Debug toestaan <b>uitzetten indien niet noodzakelijk!</b>';
+$lang['mediarevisions'] = 'Media revisies activeren?';
$lang['usewordblock'] = 'Blokkeer spam op basis van woordenlijst';
$lang['indexdelay'] = 'Uitstel voor indexeren (sec)';
$lang['relnofollow'] = 'Gebruik rel="nofollow" voor externe links';
@@ -94,8 +96,6 @@ $lang['disableactions_other'] = 'Andere akties (gescheiden door komma\'s)';
$lang['sneaky_index'] = 'Met de standaardinstellingen zal DokuWiki alle namespaces laten zien in de index. Het inschakelen van deze optie zorgt ervoor dat de namespaces waar de gebruiker geen leestoegang tot heeft, verborgen worden. Dit kan resulteren in het verbergen van subnamespaces waar de gebruiker wel toegang to heeft. Dit kan de index onbruikbaar maken met bepaalde ACL-instellingen.';
$lang['auth_security_timeout'] = 'Authenticatiebeveiligings-timeout (seconden)';
$lang['securecookie'] = 'Moeten cookies die via HTTPS gezet zijn alleen via HTTPS verzonden worden door de browser? Zet deze optie uit als alleen het inloggen op de wiki beveiligd is, maar het gebruik verder niet.';
-$lang['xmlrpc'] = 'Inschakelen/uitschakelen XML-RPC interface.';
-$lang['xmlrpcuser'] = 'Beperk XML-RPC toegang tot de lijst met kommagescheiden groepen of gebruikers die hier zijn opgegeven. Laat leeg om iedereen toegang te geven.';
$lang['updatecheck'] = 'Controleer op nieuwe versies en beveiligingswaarschuwingen? DokuWiki moet hiervoor contact opnemen met update.dokuwiki.org.';
$lang['userewrite'] = 'Gebruik nette URL\'s';
$lang['useslash'] = 'Gebruik slash (/) als scheiding tussen namepaces in URL\'s';
@@ -119,6 +119,7 @@ $lang['jpg_quality'] = 'JPG compressiekwaliteit (0-100)';
$lang['subscribers'] = 'Ondersteuning pagina-inschrijving aanzetten';
$lang['subscribe_time'] = 'Inschrijvingsmeldingen en samenvattingen worden na deze tijdsduur (in seconden) verzonden. Deze waarde dient kleiner te zijn dan de tijd ingevuld bij "Hoeveel recente wijzigingen bewaren (dagen)"';
$lang['compress'] = 'Compacte CSS en javascript output';
+$lang['cssdatauri'] = 'Maximale omvang in bytes van in CSS gelinkte afbeeldingen die bij de stylesheet moeten worden ingesloten ter reductie van de HTTP request header overhead. Deze techniek werkt niet in IE7 en ouder! <code>400</code> tot <code>600</code> is een geschikte omvang. Stel de omvang in op <code>0</code> om deze functionaliteit uit te schakelen.';
$lang['hidepages'] = 'Verberg deze pagina\'s (regular expressions)';
$lang['send404'] = 'Stuur "HTTP 404/Page Not Found" voor niet-bestaande pagina\'s';
$lang['sitemap'] = 'Genereer Google sitemap (dagen)';
diff --git a/lib/plugins/config/lang/no/lang.php b/lib/plugins/config/lang/no/lang.php
index 3c4890149..ec97fe966 100644
--- a/lib/plugins/config/lang/no/lang.php
+++ b/lib/plugins/config/lang/no/lang.php
@@ -14,6 +14,7 @@
* @author Erik Bjørn Pedersen <erik.pedersen@shaw.ca>
* @author Rune Rasmussen syntaxerror.no@gmail.com
* @author Jon Bøe <jonmagneboe@hotmail.com>
+ * @author Egil Hansen <egil@rosetta.no>
*/
$lang['menu'] = 'Konfigurasjonsinnstillinger';
$lang['error'] = 'Innstillingene ble ikke oppdatert på grunn av en eller flere ugyldig verdier. Vennligst se gjennom endringene og prøv på nytt.
@@ -24,10 +25,10 @@ $lang['locked'] = 'Innstillingene kan ikke oppdateres. Hvis dette
forsikre deg om at fila med de lokale innstillingene har korrekt filnavn<br/>
og tillatelser.';
$lang['danger'] = 'Advarsel: Endrig av dette valget kan føre til at wiki og konfigurasjon menyen ikke blir tilgjengelig.';
-$lang['warning'] = 'Advarsel: Endring av dette valget kan føre til utilsiktede atferd.
+$lang['warning'] = 'Advarsel: Endring av dette valget kan føre til utilsiktet atferd.
';
-$lang['security'] = 'Sikkerhets Advarsel: Endring av dette valget kan føre til sikkerhetsrisiko.';
+$lang['security'] = 'Sikkerhetsadvarsel: Endring av dette valget kan innebære en sikkerhetsrisiko.';
$lang['_configuration_manager'] = 'Konfigurasjonsinnstillinger';
$lang['_header_dokuwiki'] = 'Innstillinger for DokuWiki';
$lang['_header_plugin'] = 'Innstillinger for tillegg';
@@ -36,10 +37,10 @@ $lang['_header_undefined'] = 'Udefinerte innstillinger';
$lang['_basic'] = 'Grunnleggende innstillinger';
$lang['_display'] = 'Innstillinger for visning av sider';
$lang['_authentication'] = 'Innstillinger for autentisering';
-$lang['_anti_spam'] = 'Motsøppel-innstillinger';
+$lang['_anti_spam'] = 'Anti-Spam innstillinger';
$lang['_editing'] = 'Innstillinger for redigering';
$lang['_links'] = 'Innstillinger for lenker';
-$lang['_media'] = 'Innstillinger for media-filer';
+$lang['_media'] = 'Innstillinger for mediafiler';
$lang['_advanced'] = 'Avanserte innstillinger';
$lang['_network'] = 'Nettverksinnstillinger';
$lang['_plugin_sufix'] = '&ndash; innstillinger for tillegg';
@@ -77,6 +78,7 @@ $lang['useheading'] = 'Bruk første overskrift som tittel';
$lang['refcheck'] = 'Sjekk referanser før mediafiler slettes';
$lang['refshow'] = 'Antall viste referanser til mediafiler';
$lang['allowdebug'] = 'Tillat feilsøking <b>skru av om det ikke behøves!</b>';
+$lang['mediarevisions'] = 'Slå på mediaversjonering?';
$lang['usewordblock'] = 'Blokker søppel basert på ordliste';
$lang['indexdelay'] = 'Forsinkelse før indeksering (sekunder)';
$lang['relnofollow'] = 'Bruk rel="nofollow" på eksterne lenker';
@@ -99,9 +101,6 @@ $lang['disableactions_other'] = 'Andre kommandoer (kommaseparert)';
$lang['sneaky_index'] = 'DokuWiki vil som standard vise alle navnerom i innholdsfortegnelsen. Hvis du skrur på dette alternativet vil brukere bare se de navnerommene der de har lesetilgang. Dette kan føre til at tilgjengelige undernavnerom skjules. Det kan gjøre innholdsfortegnelsen ubrukelig med enkelte ACL-oppsett.';
$lang['auth_security_timeout'] = 'Autentisering utløper etter (sekunder)';
$lang['securecookie'] = 'Skal informasjonskapsler satt via HTTPS kun sendes via HTTPS av nettleseren? Skal ikke velges dersom bare innloggingen til din wiki er sikret med SSL, og annen navigering på wikien er usikret.';
-$lang['xmlrpc'] = 'Slå på/slå av XML-RPC-grensesnitt';
-$lang['xmlrpcuser'] = 'Å tillate XML-RPC-adgang til bestemte grupper eller brukere, sette deres navne (kommaseparert) her. Slik får du tilgang til alle, la feltet tomt.
-';
$lang['updatecheck'] = 'Se etter oppdateringer og sikkerhetsadvarsler? Denne funksjonen er avhengig av å kontakte update.dokuwiki.org.';
$lang['userewrite'] = 'Bruk pene URLer';
$lang['useslash'] = 'Bruk / som skilletegn mellom navnerom i URLer';
@@ -193,10 +192,10 @@ $lang['xsendfile_o_2'] = 'Standard X-Sendfile header';
$lang['xsendfile_o_3'] = 'Priprietær Nginx X-Accel-Redirect header';
$lang['showuseras_o_loginname'] = 'Brukernavn';
$lang['showuseras_o_username'] = 'Brukerens fulle navn';
-$lang['showuseras_o_email'] = 'Brukerens epostadresse (tilpasset i henhold til mailguar-instilling)';
+$lang['showuseras_o_email'] = 'Brukerens e-postadresse (tilpasset i henhold til mailguar-instilling)';
$lang['showuseras_o_email_link'] = 'Brukerens epost-addresse som "mailto:"-lenke';
$lang['useheading_o_0'] = 'Aldri';
$lang['useheading_o_navigation'] = 'Kun navigering';
$lang['useheading_o_content'] = 'Kun wiki-innhold';
$lang['useheading_o_1'] = 'Alltid';
-$lang['readdircache'] = 'Maksimal alder for mellomlagring av mappa med søkeindekser (sekunder)';
+$lang['readdircache'] = 'Maksimal alder for mellomlagring av mappen med søkeindekser (sekunder)';
diff --git a/lib/plugins/config/lang/pl/lang.php b/lib/plugins/config/lang/pl/lang.php
index 6e94a2e3d..7ebe5ba92 100644
--- a/lib/plugins/config/lang/pl/lang.php
+++ b/lib/plugins/config/lang/pl/lang.php
@@ -13,6 +13,7 @@
* @author maros <dobrimaros@yahoo.pl>
* @author Grzegorz Widła <dzesdzes@gmail.com>
* @author Łukasz Chmaj <teachmeter@gmail.com>
+ * @author Begina Felicysym <begina.felicysym@wp.eu>
*/
$lang['menu'] = 'Ustawienia';
$lang['error'] = 'Ustawienia nie zostały zapisane z powodu błędnych wartości, przejrzyj je i ponów próbę zapisu. <br/> Niepoprawne wartości są wyróżnione kolorem czerwonym.';
@@ -47,9 +48,12 @@ $lang['lang'] = 'Język';
$lang['basedir'] = 'Katalog główny';
$lang['baseurl'] = 'Główny URL';
$lang['savedir'] = 'Katalog z danymi';
+$lang['cookiedir'] = 'Ścieżka plików ciasteczek. Zostaw puste by użyć baseurl.';
$lang['start'] = 'Tytuł strony początkowej';
$lang['title'] = 'Tytuł wiki';
$lang['template'] = 'Motyw';
+$lang['tagline'] = 'Motto (jeśli szablon daje taką możliwość)';
+$lang['sidebar'] = 'Nazwa strony paska bocznego (jeśli szablon je obsługuje), puste pole wyłącza pasek boczny';
$lang['license'] = 'Pod jaką licencją publikować treści wiki?';
$lang['fullpath'] = 'Wyświetlanie pełnych ścieżek';
$lang['recent'] = 'Ilość ostatnich zmian';
@@ -70,6 +74,7 @@ $lang['useheading'] = 'Pierwszy nagłówek jako tytuł';
$lang['refcheck'] = 'Sprawdzanie odwołań przed usunięciem pliku';
$lang['refshow'] = 'Ilość pokazywanych odwołań do pliku';
$lang['allowdebug'] = 'Debugowanie (niebezpieczne!)';
+$lang['mediarevisions'] = 'Włączyć wersjonowanie multimediów?';
$lang['usewordblock'] = 'Blokowanie spamu na podstawie słów';
$lang['indexdelay'] = 'Okres indeksowania w sekundach';
$lang['relnofollow'] = 'Nagłówek rel="nofollow" dla odnośników zewnętrznych';
@@ -92,8 +97,6 @@ $lang['disableactions_other'] = 'Inne akcje (oddzielone przecinkiem)';
$lang['sneaky_index'] = 'Domyślnie, Dokuwiki pokazuje wszystkie katalogi w indeksie. Włączenie tej opcji ukryje katalogi, do których użytkownik nie ma praw. Może to spowodować ukrycie podkatalogów, do których użytkownik ma prawa. Ta opcja może spowodować błędne działanie indeksu w połączeniu z pewnymi konfiguracjami praw dostępu.';
$lang['auth_security_timeout'] = 'Czas wygaśnięcia uwierzytelnienia (w sekundach)';
$lang['securecookie'] = 'Czy ciasteczka wysłane do przeglądarki przez HTTPS powinny być przez nią odsyłane też tylko przez HTTPS? Odznacz tę opcję tylko wtedy, gdy logowanie użytkowników jest zabezpieczone SSL, ale przeglądanie stron odbywa się bez zabezpieczenia.';
-$lang['xmlrpc'] = 'Włącz/wyłącz interfejs XML-RPC';
-$lang['xmlrpcuser'] = 'Lista użytkowników i grup, którzy mogą korzystać z protokołu XML-RPC. Nazwy grup i użytkowników rozdziel przecinkami, puste pole oznacza dostęp dla wszystkich.';
$lang['updatecheck'] = 'Sprawdzanie aktualizacji i bezpieczeństwa. DokuWiki będzie kontaktować się z serwerem update.dokuwiki.org.';
$lang['userewrite'] = 'Proste adresy URL';
$lang['useslash'] = 'Używanie ukośnika jako separatora w adresie URL';
@@ -109,13 +112,15 @@ $lang['fetchsize'] = 'Maksymalny rozmiar pliku (w bajtach) jaki moż
$lang['notify'] = 'Wysyłanie powiadomień na adres e-mail';
$lang['registernotify'] = 'Prześlij informacje o nowych użytkownikach na adres e-mail';
$lang['mailfrom'] = 'Adres e-mail tego wiki';
-$lang['gzip_output'] = 'Używaj GZIP dla XHTML';
+$lang['mailprefix'] = 'Prefiks tematu e-mail do automatycznych wiadomości';
+$lang['gzip_output'] = 'Używaj kodowania GZIP dla zawartości XHTML';
$lang['gdlib'] = 'Wersja biblioteki GDLib';
$lang['im_convert'] = 'Ścieżka do programu imagemagick';
$lang['jpg_quality'] = 'Jakość kompresji JPG (0-100)';
$lang['subscribers'] = 'Subskrypcja';
$lang['subscribe_time'] = 'Czas po którym są wysyłane listy subskrypcji i streszczenia (sek.); Powinna być to wartość większa niż podana w zmiennej recent_days.';
$lang['compress'] = 'Kompresja arkuszy CSS i plików JavaScript';
+$lang['cssdatauri'] = 'Rozmiar w bajtach, poniżej którego odwołania do obrazów w plikach CSS powinny być osadzone bezpośrednio w arkuszu stylów by zmniejszyć ogólne żądania nagłówków HTTP. Technika ta nie działa w IE 7 i poniżej! <code>400</code> do <code>600</code> bajtów jest dobrą wartością. Ustaw <code>0</code> aby wyłączyć.';
$lang['hidepages'] = 'Ukrywanie stron pasujących do wzorca (wyrażenie regularne)';
$lang['send404'] = 'Nagłówek "HTTP 404/Page Not Found" dla nieistniejących stron';
$lang['sitemap'] = 'Okres generowania Google Sitemap (w dniach)';
diff --git a/lib/plugins/config/lang/pt-br/lang.php b/lib/plugins/config/lang/pt-br/lang.php
index 093e60ff8..8c0ef713a 100644
--- a/lib/plugins/config/lang/pt-br/lang.php
+++ b/lib/plugins/config/lang/pt-br/lang.php
@@ -98,8 +98,6 @@ $lang['disableactions_other'] = 'Outras ações (separadas por vírgula)';
$lang['sneaky_index'] = 'Por padrão, o DokuWiki irá exibir todos os espaços de nomes na visualização do índice. Ao habilitar essa opção, serão escondidos aqueles que o usuário não tiver permissão de leitura. Isso pode resultar na omissão de subespaços de nomes, tornando o índice inútil para certas configurações de ACL.';
$lang['auth_security_timeout'] = 'Tempo limite de segurança para autenticações (seg)';
$lang['securecookie'] = 'Os cookies definidos via HTTPS devem ser enviados para o navegador somente via HTTPS? Desabilite essa opção quando somente a autenticação do seu wiki for realizada de maneira segura via SSL e a navegação, de maneira insegura.';
-$lang['xmlrpc'] = 'Habilitar/desabilitar interface XML-RPC.';
-$lang['xmlrpcuser'] = 'Acesso Restrito ao XML-RPC para grupos separados por virgula ou usuários aqui. Deixe em branco para conveder acesso a todos.';
$lang['updatecheck'] = 'Verificar atualizações e avisos de segurança? O DokuWiki precisa contactar o "splitbrain.org" para efetuar esse recurso.';
$lang['userewrite'] = 'Usar URLs "limpas"';
$lang['useslash'] = 'Usar a barra como separador de espaços de nomes nas URLs';
diff --git a/lib/plugins/config/lang/pt/lang.php b/lib/plugins/config/lang/pt/lang.php
index fe05bd281..d0fe0ac0d 100644
--- a/lib/plugins/config/lang/pt/lang.php
+++ b/lib/plugins/config/lang/pt/lang.php
@@ -87,8 +87,6 @@ $lang['disableactions_other'] = 'Outras acções (separadas por vírgula)';
$lang['sneaky_index'] = 'Por norma, o DokuWiki irá exibir todos os espaços de nomes na visualização do índice. Ao habilitar essa opção, serão escondidos aqueles em que o utilizador não tenha permissão de leitura. Isto pode resultar na omissão de sub-ramos acessíveis, que poderá tornar o índice inútil para certas configurações de ACL.';
$lang['auth_security_timeout'] = 'Tempo limite de segurança para autenticações (seg)';
$lang['securecookie'] = 'Os cookies definidos via HTTPS deverão ser enviados para o navegador somente via HTTPS? Desabilite essa opção quando somente a autenticação do seu wiki for realizada de maneira segura via SSL e a navegação de maneira insegura.';
-$lang['xmlrpc'] = 'Habilitar/desabilitar interface XML-RPC.';
-$lang['xmlrpcuser'] = 'Restringir acesso XML-RPC para os grupos separados por vírgula ou utilizadores inseridos aqui. Deixar vazio para dar acesso a todos.';
$lang['updatecheck'] = 'Verificar por actualizações e avisos de segurança? O DokuWiki precisa contactar o "splitbrain.org" para efectuar esta verificação.';
$lang['userewrite'] = 'Usar URLs SEO';
$lang['useslash'] = 'Usar a barra como separador de espaços de nomes nas URLs';
diff --git a/lib/plugins/config/lang/ro/lang.php b/lib/plugins/config/lang/ro/lang.php
index 6b0a0e91a..72b205b90 100644
--- a/lib/plugins/config/lang/ro/lang.php
+++ b/lib/plugins/config/lang/ro/lang.php
@@ -9,6 +9,8 @@
* @author Emanuel-Emeric Andraşi <em.andrasi@mandrivausers.ro>
* @author Emanuel-Emeric Andrasi <em.andrasi@mandrivausers.ro>
* @author Marius OLAR <olarmariusalex@gmail.com>
+ * @author Marius Olar <olarmariusalex@yahoo.com>
+ * @author Emanuel-Emeric Andrași <em.andrasi@mandrivausers.ro>
*/
$lang['menu'] = 'Setări de Configurare';
$lang['error'] = 'Setări nu au fost actualizate datorită unei valori incorecte; verificaţi modificările şi încercaţi din nou. <br /> Valorile incorecte vor apărea într-un chenar roşu.';
@@ -47,6 +49,8 @@ $lang['cookiedir'] = 'Cale Cookie. Lăsați gol pentru a utiliza bas
$lang['start'] = 'Numele paginii de start';
$lang['title'] = 'Titlul wiki';
$lang['template'] = 'Şablon';
+$lang['tagline'] = 'Slogan (dacă templateul suportă opțiunea)';
+$lang['sidebar'] = 'Numele paginii barei laterale (dacă templateul suportă opțiunea), câmpul lăsat gol dezactivează bara laterală';
$lang['license'] = 'Sub ce licenţă va fi publicat conţinutul?';
$lang['fullpath'] = 'Arată calea completă a paginii în subsol';
$lang['recent'] = 'Modificări recente';
@@ -67,6 +71,7 @@ $lang['useheading'] = 'Foloseşte primul titlu pentru numele paginii'
$lang['refcheck'] = 'Verificare referinţă media';
$lang['refshow'] = 'Numărul de referinţe media de arătat';
$lang['allowdebug'] = 'Permite depanarea <b>dezactivaţi dacă cu e necesar!</b>';
+$lang['mediarevisions'] = 'Activare Revizii Media?';
$lang['usewordblock'] = 'Blochează spam-ul pe baza listei de cuvinte';
$lang['indexdelay'] = 'Timpul de întârziere înainte de indexare (sec)';
$lang['relnofollow'] = 'Folosiţi rel="nofollow" pentru legăturile externe';
@@ -89,8 +94,8 @@ $lang['disableactions_other'] = 'Alte acţiuni (separate prin virgulă)';
$lang['sneaky_index'] = 'Implicit, DokuWiki va arăta toate numele de spaţii la vizualizarea indexului. Activând această opţiune vor fi ascunse acelea la care utilizatorul nu are drepturi de citire. Aceasta poate determina ascunderea sub-numelor de spaţii accesibile. Aceasta poate face index-ul inutilizabil cu anumite setări ale ACL';
$lang['auth_security_timeout'] = 'Timpul de expirare al Autentificării Securizate (secunde)';
$lang['securecookie'] = 'Cookies-urile setate via HTTPS să fie trimise doar via HTTPS de către browser? Dezactivaţi această opţiune numai când login-ul wiki-ului este securizat cu SSL dar navigarea wiki-ului se realizează nesecurizat.';
-$lang['xmlrpc'] = 'Activează/dezactivează interfaţa XML-RPC';
-$lang['xmlrpcuser'] = 'Restricţionaţi accesul XML-RPC la grupurile sau utilizatorii separaţi prin virgulă daţi aici. Lasaţi gol pentru a da acces tuturor.';
+$lang['remote'] = 'Activează sistemul remote API. Acesta permite altor aplicații să acceseze wiki-ul via XML-RPC sau alte mecanisme.';
+$lang['remoteuser'] = 'Restricționează accesul sistemului remote API la grupurile sau utilizatorii următori (separați prin virgulă). Lăsați câmpul gol pentru a da acces către toți.';
$lang['updatecheck'] = 'Verificare actualizări şi avertismente privind securitatea? DokuWiki trebuie să contacteze update.dokuwiki.org pentru această facilitate.';
$lang['userewrite'] = 'Folosire URL-uri "nice"';
$lang['useslash'] = 'Foloseşte slash-ul ca separator de spaţii de nume în URL-uri';
@@ -130,6 +135,7 @@ $lang['rss_content'] = 'Ce să afişez în obiectele fluxurilor XML';
$lang['rss_update'] = 'Intervalul de actualizare a fluxului XML (sec)';
$lang['recent_days'] = 'Câte modificări recente să se păstreze?';
$lang['rss_show_summary'] = 'Fluxul XML arată rezumat în titlu';
+$lang['rss_media'] = 'Ce fel de modificări ar trebui afișate în fluxul XML?';
$lang['target____wiki'] = 'Fereastra ţintă pentru legăturile interne';
$lang['target____interwiki'] = 'Fereastra ţintă pentru legăturile interwiki';
$lang['target____extern'] = 'Fereastra ţintă pentru legăturile externe';
diff --git a/lib/plugins/config/lang/ru/lang.php b/lib/plugins/config/lang/ru/lang.php
index f29257a28..098cff534 100644
--- a/lib/plugins/config/lang/ru/lang.php
+++ b/lib/plugins/config/lang/ru/lang.php
@@ -16,6 +16,7 @@
* @author Aleksandr Selivanov <alexgearbox@gmail.com>
* @author Ladyko Andrey <fylh@succexy.spb.ru>
* @author Eugene <windy.wanderer@gmail.com>
+ * @author Johnny Utah <pcpa@cyberpunk.su>
*/
$lang['menu'] = 'Настройки вики';
$lang['error'] = 'Настройки не были сохранены из-за ошибки в одном из значений. Пожалуйста, проверьте свои изменения и попробуйте ещё раз.<br />Неправильные значения будут обведены красной рамкой.';
@@ -50,9 +51,12 @@ $lang['lang'] = 'Язык';
$lang['basedir'] = 'Корневая директория (например, <code>/dokuwiki/</code>). Оставьте пустым для автоопределения.';
$lang['baseurl'] = 'Корневой адрес (URL) (например, <code>http://www.yourserver.ru</code>). Оставьте пустым для автоопределения.';
$lang['savedir'] = 'Директория для данных';
+$lang['cookiedir'] = 'Cookie директория. Оставьте пустым для автоопределения.';
$lang['start'] = 'Имя стартовой страницы';
$lang['title'] = 'Название вики';
$lang['template'] = 'Шаблон';
+$lang['tagline'] = 'Слоган (если поддерживается шаблоном)';
+$lang['sidebar'] = 'Боковая панель, пустое поле отключает боковую панель.';
$lang['license'] = 'На условиях какой лицензии будет предоставляться содержимое вики?';
$lang['fullpath'] = 'Полный путь к документу';
$lang['recent'] = 'Недавние изменения (кол-во)';
@@ -73,6 +77,7 @@ $lang['useheading'] = 'Первый заголовок вместо
$lang['refcheck'] = 'Проверять ссылки на медиафайлы';
$lang['refshow'] = 'Показывать ссылок на медиафайлы';
$lang['allowdebug'] = 'Включить отладку (отключите!)';
+$lang['mediarevisions'] = 'Включение версий медиафайлов';
$lang['usewordblock'] = 'Блокировать спам по ключевым словам';
$lang['indexdelay'] = 'Задержка перед индексированием';
$lang['relnofollow'] = 'rel="nofollow" для внешних ссылок';
@@ -95,8 +100,6 @@ $lang['disableactions_other'] = 'Другие операции (через за
$lang['sneaky_index'] = 'По умолчанию, «ДокуВики» показывает в индексе страниц все пространства имён. Включение этой опции скроет пространства имён, для которых пользователь не имеет прав чтения. Это может привести к скрытию доступных вложенных пространств имён и потере функциональности индекса страниц при некоторых конфигурациях прав доступа.';
$lang['auth_security_timeout'] = 'Интервал для безопасности авторизации (сек.)';
$lang['securecookie'] = 'Должны ли куки (cookies), выставленные через HTTPS, отправляться браузером только через HTTPS. Отключите эту опцию в случае, когда только логин вашей вики передаётся через SSL, а обычный просмотр осуществляется в небезопасном режиме.';
-$lang['xmlrpc'] = 'Включить/выключить XML-RPC интерфейс.';
-$lang['xmlrpcuser'] = 'Запретить XML-RPC-доступ для списка групп и пользователей, перечисленных через запятую. Оставьте пустым, если хотите оставить доступ всем.';
$lang['updatecheck'] = 'Проверять наличие обновлений и предупреждений о безопасности? Для этого «ДокуВики» потребуется связываться с сайтом <a href="http://www.splitbrain.org/">splitbrain.org</a>.';
$lang['userewrite'] = 'Удобочитаемые адреса (URL)';
$lang['useslash'] = 'Использовать слэш';
@@ -120,6 +123,7 @@ $lang['jpg_quality'] = 'Качество сжатия JPG (0–100).
$lang['subscribers'] = 'Разрешить подписку на изменения';
$lang['subscribe_time'] = 'Интервал рассылки подписок и сводок (сек.). Должен быть меньше, чем значение, указанное в recent_days.';
$lang['compress'] = 'Сжимать файлы CSS и javascript';
+$lang['cssdatauri'] = 'Размер в байтах до которого изображения, указанные в CSS-файлах, должны быть встроены прямо в таблицу стилей, для уменьшения избычтоных HTTP-запросов. Этот метод не будет работать в IE версии 7 и ниже! Установка от <code>400</code> до <code>600</code> байт является хорошим показателем. Установите <code>0</code>, чтобы отключить.';
$lang['hidepages'] = 'Скрыть страницы (рег. выражение)';
$lang['send404'] = 'Посылать «HTTP404/Page Not Found»';
$lang['sitemap'] = 'Число дней, через которое нужно создавать (обновлять) карту сайта для поисковиков (Гугл, Яндекс и др.)';
diff --git a/lib/plugins/config/lang/sk/lang.php b/lib/plugins/config/lang/sk/lang.php
index 72ce10775..cbd69eb9e 100644
--- a/lib/plugins/config/lang/sk/lang.php
+++ b/lib/plugins/config/lang/sk/lang.php
@@ -64,6 +64,7 @@ $lang['useheading'] = 'Použiť nadpis pre názov stránky';
$lang['refcheck'] = 'Kontrolovať odkazy na médiá (pred vymazaním)';
$lang['refshow'] = 'Počet zobrazených odkazov na médiá';
$lang['allowdebug'] = 'Povoliť ladenie chýb <b>deaktivujte, ak nie je potrebné!</b>';
+$lang['mediarevisions'] = 'Povoliť verzie súborov?';
$lang['usewordblock'] = 'Blokovať spam na základe zoznamu známych slov';
$lang['indexdelay'] = 'Časové oneskorenie pred indexovaním (sek)';
$lang['relnofollow'] = 'Používať rel="nofollow" pre externé odkazy';
@@ -86,8 +87,6 @@ $lang['disableactions_other'] = 'Iné akcie (oddelené čiarkou)';
$lang['sneaky_index'] = 'DokuWiki implicitne ukazuje v indexe všetky menné priestory. Povolením tejto voľby sa nezobrazia menné priestory, ku ktorým nemá používateľ právo na čítanie. Dôsledkom môže byť nezobrazenie vnorených prístupných menných priestorov. Táto voľba môže mať za následok nepoužiteľnosť indexu s určitými ACL nastaveniami.';
$lang['auth_security_timeout'] = 'Časový limit pri prihlasovaní (v sekundách)';
$lang['securecookie'] = 'Mal by prehliadač posielať cookies nastavené cez HTTPS posielať iba cez HTTPS (bezpečné) pripojenie? Vypnite túto voľbu iba v prípade, ak je prihlasovanie do Vašej wiki zabezpečené SSL, ale prezeranie wiki je nezabezpečené.';
-$lang['xmlrpc'] = 'Povoliť/zakázať XML-RPC rozhranie.';
-$lang['xmlrpcuser'] = 'Obmedziť XML-RPC prístup iba pre uvedené skupiny alebo používateľov (oddelených čiarkami).';
$lang['updatecheck'] = 'Kontrolovať aktualizácie a bezpečnostné upozornenia? DokuWiki potrebuje pre túto funkciu prístup k update.dokuwiki.org.';
$lang['userewrite'] = 'Používať nice URLs';
$lang['useslash'] = 'Používať lomku (/) ako oddeľovač v URL';
diff --git a/lib/plugins/config/lang/sl/lang.php b/lib/plugins/config/lang/sl/lang.php
index dadd01595..364e0fd7f 100644
--- a/lib/plugins/config/lang/sl/lang.php
+++ b/lib/plugins/config/lang/sl/lang.php
@@ -7,7 +7,6 @@
* @author Gregor Skumavc (grega.skumavc@gmail.com)
* @author Matej Urbančič (mateju@svn.gnome.org)
*/
-
$lang['menu'] = 'Splošne nastavitve';
$lang['error'] = 'Nastavitve niso shranjene zaradi neveljavne vrednosti.<br />Neveljavna vrednost je označena z rdečim robom vnosnega polja.';
$lang['updated'] = 'Nastavitve so uspešno posodobljene.';
@@ -27,7 +26,7 @@ $lang['_authentication'] = 'Nastavitve overjanja';
$lang['_anti_spam'] = 'Nastavitve neželenih sporočil (Anti-Spam)';
$lang['_editing'] = 'Nastavitve urejanja';
$lang['_links'] = 'Nastavitve povezav';
-$lang['_media'] = 'Predstavnostne nastavitve';
+$lang['_media'] = 'Predstavne nastavitve';
$lang['_advanced'] = 'Napredne nastavitve';
$lang['_network'] = 'Omrežne nastavitve';
$lang['_plugin_sufix'] = 'nastavitve';
@@ -41,9 +40,12 @@ $lang['lang'] = 'Jezik vmesnika';
$lang['basedir'] = 'Pot do strežnika (npr. /dokuwiki/). Prazno polje določa samodejno zaznavanje';
$lang['baseurl'] = 'Naslov URL strežnika (npr. http://www.streznik.si). Prazno polje določa samodejno zaznavanje';
$lang['savedir'] = 'Mapa za shranjevanje podatkov';
+$lang['cookiedir'] = 'Pot do piškotka. Prazno polje določa uporabo osnovnega naslova (baseurl)';
$lang['start'] = 'Ime začetne strani wiki';
$lang['title'] = 'Naslov Wiki spletišča';
$lang['template'] = 'Predloga';
+$lang['tagline'] = 'Označna vrstica (ob podpori predloge)';
+$lang['sidebar'] = 'Ime strani stranske vrstice (ob podpori predloge); prazno polje onemogoči stransko vrstico.';
$lang['license'] = 'Pod pogoji katerega dovoljenja je objavljena vsebina?';
$lang['fullpath'] = 'Pokaži polno pot strani v nogi strani';
$lang['recent'] = 'Nedavne spremembe';
@@ -62,8 +64,9 @@ $lang['camelcase'] = 'Uporabi EnoBesedni zapisa za povezave';
$lang['deaccent'] = 'Počisti imena strani';
$lang['useheading'] = 'Uporabi prvi naslov za ime strani';
$lang['refcheck'] = 'Preverjanje sklica predstavnih datotek';
-$lang['refshow'] = 'Število predstavnostnih sklicev za prikaz';
+$lang['refshow'] = 'Število predstavih sklicev za prikaz';
$lang['allowdebug'] = 'Dovoli razhroščevanje (po potrebi!)';
+$lang['mediarevisions'] = 'Ali naj se omogočijo objave predstavnih vsebin?';
$lang['usewordblock'] = 'Zaustavi neželeno besedilo glede na seznam besed';
$lang['indexdelay'] = 'Časovni zamik pred ustvarjanjem kazala (v sekundah)';
$lang['relnofollow'] = 'Uporabni možnost rel="nofollow" pri zunanjih povezavah';
@@ -86,8 +89,6 @@ $lang['disableactions_other'] = 'Druga dejanja (z vejico ločen seznam)';
$lang['sneaky_index'] = 'Privzeto pokaže sistem DokuWiki vse imenske prostore v pogledu kazala. Z omogočanjem te možnosti bodo skriti vsi imenski prostori, v katere prijavljen uporabnik nima dovoljenj dostopa. S tem je mogoče preprečiti dostop do podrejenih strani. Možnost lahko vpliva na uporabnost nastavitev nadzora dostopa ACL.';
$lang['auth_security_timeout'] = 'Varnostna časovna omejitev overitve (v sekundah)';
$lang['securecookie'] = 'Ali naj se piškotki poslani preko varne povezave HTTPS v brskalniku pošiljajo le preko HTTPS? Onemogočanje možnosti je priporočljivo le takrat, ko je prijava varovana s protokolom SSL, brskanje po strani pa ni posebej zavarovano.';
-$lang['xmlrpc'] = 'Omogoči/Onemogoči vmesnik XML-RPC.';
-$lang['xmlrpcuser'] = 'Omejitev dostopa do vmesnika XML-RPC z vejico ločenim seznamom skupin in uporabnikov. Prazno polje pomeni, prost dostop za vse uporabnike.';
$lang['updatecheck'] = 'Ali naj sistem preveri za posodobitve in varnostna opozorila.';
$lang['userewrite'] = 'Uporabi olepšan zapis naslovov URL';
$lang['useslash'] = 'Uporabi poševnico kot ločilnik imenskih prostorov v naslovih URL';
@@ -103,6 +104,7 @@ $lang['fetchsize'] = 'največja dovoljena velikost zunanjega prejema
$lang['notify'] = 'Pošlji obvestila o spremembah na določen elektronski naslov';
$lang['registernotify'] = 'Pošlji obvestila o novih vpisanih uporabnikih na določen elektronski naslov';
$lang['mailfrom'] = 'Elektronski naslov za samodejno poslana sporočila';
+$lang['mailprefix'] = 'Predpona zadeve elektronskega sporočila za samodejna sporočila.';
$lang['gzip_output'] = 'Uporabi stiskanje gzip vsebine za xhtml';
$lang['gdlib'] = 'Različica GD Lib';
$lang['im_convert'] = 'Pot do orodja za pretvarjanje slik ImageMagick';
@@ -110,6 +112,7 @@ $lang['jpg_quality'] = 'Kakovost stiskanja datotek JPG (0-100)';
$lang['subscribers'] = 'Omogoči podporo naročanju na strani';
$lang['subscribe_time'] = 'Čas po katerem so poslani povzetki sprememb (v sekundah); Vrednost mora biti krajša od časa, ki je določen z nedavno_dni.';
$lang['compress'] = 'Združi odvod CSS in JavaScript v brskalniku';
+$lang['cssdatauri'] = 'Velikost sklicanih slik v bajtih, ki so navedene v datotekah CSS za zmanjšanje zahtev osveževanja strežnika HTTP. Ta možnost ni podprta v brskalniku MS IE 7 in nižjih različicah! Ustrezne vrednosti so <code>400</code> do <code>600</code> bajtov. Vrednost <code>0</code> onemogoči možnost.';
$lang['hidepages'] = 'Skrij skladne strani (logični izraz)';
$lang['send404'] = 'Pošlji "HTTP 404/Strani ni mogoče najti" pri dostopu do neobstoječih strani';
$lang['sitemap'] = 'Ustvari Google kazalo strani (v dnevih)';
@@ -172,9 +175,9 @@ $lang['compression_o_0'] = 'brez';
$lang['compression_o_gz'] = 'gzip';
$lang['compression_o_bz2'] = 'bz2';
$lang['xsendfile_o_0'] = 'ne uporabi';
-$lang['xsendfile_o_1'] = 'plačniška glava lighttpd (pred različico 1.5)';
+$lang['xsendfile_o_1'] = 'lastniška glava lighttpd (pred različico 1.5)';
$lang['xsendfile_o_2'] = 'običajna glava X-Sendfile';
-$lang['xsendfile_o_3'] = 'plačniška glava Nginx X-Accel-Redirect';
+$lang['xsendfile_o_3'] = 'lastniška glava Nginx X-Accel-Redirect';
$lang['showuseras_o_loginname'] = 'Prijavno ime';
$lang['showuseras_o_username'] = 'Polno ime uporabnika';
$lang['showuseras_o_email'] = 'Elektronski naslov uporabnika (šifriran po določilih varovanja)';
diff --git a/lib/plugins/config/lang/sq/lang.php b/lib/plugins/config/lang/sq/lang.php
index adeb2a47d..69e283b11 100644
--- a/lib/plugins/config/lang/sq/lang.php
+++ b/lib/plugins/config/lang/sq/lang.php
@@ -83,8 +83,6 @@ $lang['disableactions_other'] = 'Veprime të tjera (të ndarë me presje)';
$lang['sneaky_index'] = 'Vetiu DokuWiki tregon të gjithë hapësirat e emrit në shikimin e index-it. Aktivizimi i kësaj alternative do të fshehë ato ku përdoruesi nuk ka të drejta leximi. Kjo mund të përfundojë në fshehje të nënhapësirave të emrit të aksesueshme. Kjo mund ta bëjë index-in të papërdorshëm me disa konfigurime të caktuara të ACL-së.';
$lang['auth_security_timeout'] = 'Koha e Përfundimit për Autentikim (sekonda)';
$lang['securecookie'] = 'A duhet që cookies të vendosura nëpërmjet HTTPS të dërgohen vetëm nëpërmjet HTTPS nga shfletuesit? Caktivizojeni këtë alternativë kur vetëm hyrja në wiki-n tuaj sigurohet me SSL por shfletimi i wiki-t bëhet në mënyrë të pasigurtë.';
-$lang['xmlrpc'] = 'Aktivizo/Caktivizo ndërfaqen XML-RPC';
-$lang['xmlrpcuser'] = 'Kufizo aksesin XML-RPC vetëm tek grupet ose përdoruesit e ndarë me presje të dhënë këtu. Lëre bosh për t\'i dhënë akses të gjithëve.';
$lang['updatecheck'] = 'Kontrollo për përditësime dhe paralajmërime sigurie? DokuWiki duhet të kontaktojë me update.dokuwiki.org për këtë veti.';
$lang['userewrite'] = 'Përdor URL të këndshme.';
$lang['useslash'] = 'Përdor / si ndarës të hapësirave të emrit në URL';
diff --git a/lib/plugins/config/lang/sr/lang.php b/lib/plugins/config/lang/sr/lang.php
index 5906dcd7e..c675b84e6 100644
--- a/lib/plugins/config/lang/sr/lang.php
+++ b/lib/plugins/config/lang/sr/lang.php
@@ -84,8 +84,6 @@ $lang['disableactions_other'] = 'Остале наредбе (раздвоје
$lang['sneaky_index'] = 'По инсталацији DokuWiki ће у индексу приказати све именске просторе. Укључивањем ове опције именски простори у којима корисник нема право читања ће бити сакривени. Консеквенца је да ће и доступни подпростори бити сакривени. Ово доводи до неупотребљивости Права приступа у неким поставкама.';
$lang['auth_security_timeout'] = 'Временска пауза у аутентификацији (секунде)';
$lang['securecookie'] = 'Да ли колачићи који су постављени преко ХТТПС треба слати веб читачу само преко ХТТПС? Искључите ову опцију само ако је пријављивање на вики заштићено ССЛом а остали део викија незаштићен.';
-$lang['xmlrpc'] = 'Укључи/искључи ИксМЛ-РПЦ интерфејс';
-$lang['xmlrpcuser'] = 'Ограничи ИксМЛ-РПЦ приступ на наведене групе корисника раздвојене зарезом. Остави празно да би свима дао приступ.';
$lang['updatecheck'] = 'Провера надоградњи и сигурносних упозорења? Dokuwiki мора да контактира update.dokuwiki.org ради добијања информација.';
$lang['userewrite'] = 'Направи леп УРЛ';
$lang['useslash'] = 'Користи косу црту у УРЛу за раздвајање именских простора ';
diff --git a/lib/plugins/config/lang/sv/lang.php b/lib/plugins/config/lang/sv/lang.php
index dfd93d37d..3d8392840 100644
--- a/lib/plugins/config/lang/sv/lang.php
+++ b/lib/plugins/config/lang/sv/lang.php
@@ -97,8 +97,6 @@ $lang['disableactions_other'] = 'Andra funktioner (kommaseparerade)';
$lang['sneaky_index'] = 'Som standard visar DokuWiki alla namnrymder på indexsidan. Genom att aktivera det här valet döljer man namnrymder som användaren inte har behörighet att läsa. Det kan leda till att man döljer åtkomliga undernamnrymder, och gör indexet oanvändbart med vissa ACL-inställningar.';
$lang['auth_security_timeout'] = 'Autentisieringssäkerhets timeout (sekunder)';
$lang['securecookie'] = 'Skall cookies som sätts via HTTPS endast skickas via HTTPS från webbläsaren? Avaktivera detta alternativ endast om inloggningen till din wiki är säkrad med SSL men läsning av wikin är osäkrad.';
-$lang['xmlrpc'] = 'Aktivera/avaktivera XML-RPC-gränssnitt';
-$lang['xmlrpcuser'] = 'Begränsa XML-RPC tillträde till komma separerade grupper eller användare som ges här. Lämna tomt för att ge tillgång till alla.';
$lang['updatecheck'] = 'Kontrollera uppdateringar och säkerhetsvarningar? DokuWiki behöver kontakta update.dokuwiki.org för den här funktionen.';
$lang['userewrite'] = 'Använd rena webbadresser';
$lang['useslash'] = 'Använd snedstreck för att separera namnrymder i webbadresser';
diff --git a/lib/plugins/config/lang/th/lang.php b/lib/plugins/config/lang/th/lang.php
index ce7c55e91..140a287df 100644
--- a/lib/plugins/config/lang/th/lang.php
+++ b/lib/plugins/config/lang/th/lang.php
@@ -41,7 +41,6 @@ $lang['defaultgroup'] = 'กลุ่มมาตรฐาน';
$lang['profileconfirm'] = 'ใส่รหัสผ่านเพื่อยืนยันการเปลี่ยนแปลงข้อมูล';
$lang['disableactions_check'] = 'ตรวจสอบ';
$lang['auth_security_timeout'] = 'ระยะเวลาที่จะตัดการเชื่อมต่อแบบการใช้งานด้วยสิทธิ์ผู้ใช้ (วินาที)';
-$lang['xmlrpc'] = 'ใช้งาน/ยกเลิก การเชื่อมต่อแบบ XML-RPC';
$lang['userewrite'] = 'แสดงที่อยู่เว็บ (URL) แบบอ่านเข้าใจง่าย';
$lang['cachetime'] = 'ระยะเวลาสำหรับการเก็บแคช (วินาที)';
$lang['locktime'] = 'ระยะเวลานานสุด ที่จะล็อคไม่ให้แก้ไขไฟล์ (วินาที)';
diff --git a/lib/plugins/config/lang/uk/lang.php b/lib/plugins/config/lang/uk/lang.php
index 72d7e12f5..375c5d3bf 100644
--- a/lib/plugins/config/lang/uk/lang.php
+++ b/lib/plugins/config/lang/uk/lang.php
@@ -91,8 +91,6 @@ $lang['disableactions_other'] = 'Інші дії (розділені комам
$lang['sneaky_index'] = 'За замовчуванням, ДокуВікі показує всі простори імен в змісті. Активація цієї опції сховає ті простори, де користувач не має прав на читання. Результатом може бути неможливість доступу до певних відкритих просторів імен. Це зробить неможливим використання змісту при певних конфігураціях.';
$lang['auth_security_timeout'] = 'Таймаут аутентифікації (в секундах)';
$lang['securecookie'] = 'Чи повинен браузер надсилати файли cookies тільки через HTTPS? Вимкніть цей параметр, лише тоді, якщо вхід до Вікі захищено SSL, але перегляд сторінок відбувається у незахищеному режимі.';
-$lang['xmlrpc'] = 'Дозволити/заборонити XML-RPC інтерфейс';
-$lang['xmlrpcuser'] = 'Заборонити XML-RPC доступ до користувачів або груп поданих тут та розділених комою. Залишіть поле незаповненим, щоб дозволити доступ усім.';
$lang['updatecheck'] = 'Перевірити наявність оновлень чи попереджень безпеки? Для цього ДокуВікі необхідно зв\'язатися зі update.dokuwiki.org.';
$lang['userewrite'] = 'Красиві URL';
$lang['useslash'] = 'Слеш, як розділювач просторів імен в URL';
diff --git a/lib/plugins/config/lang/zh-tw/lang.php b/lib/plugins/config/lang/zh-tw/lang.php
index 29aeaec3b..dd5f287b9 100644
--- a/lib/plugins/config/lang/zh-tw/lang.php
+++ b/lib/plugins/config/lang/zh-tw/lang.php
@@ -44,6 +44,7 @@ $lang['lang'] = '語系';
$lang['basedir'] = '根目錄';
$lang['baseurl'] = '根路徑 (URL)';
$lang['savedir'] = '儲存資料的目錄';
+$lang['cookiedir'] = 'Cookie 路徑。設定空白則使用 baseurl。';
$lang['start'] = '開始頁面的名稱';
$lang['title'] = '維基標題';
$lang['template'] = '樣板';
@@ -89,8 +90,6 @@ $lang['disableactions_other'] = '其他功能 (逗號分隔)';
$lang['sneaky_index'] = '預設情況下,DokuWiki 會在索引頁會顯示所有命名空間。啟用此選項會隱藏用戶沒有閱讀權限的頁面,但也可能將能閱讀的子頁面一併隱藏。在特定 ACL 設定下,這可能導致索引無法使用。';
$lang['auth_security_timeout'] = '安全認證的計時 (秒)';
$lang['securecookie'] = 'HTTPS 頁面設定的 cookie 是否只能由瀏覽器經 HTTPS 傳送?取消此選項後,只有登入維基會被 SSL 保護而瀏覽時不會。';
-$lang['xmlrpc'] = '啟用/停用 XML-RPC 介面';
-$lang['xmlrpcuser'] = 'XML-RPC 存取權限將局限於在此提供的群組或使用者 (逗號分隔)。若要開放權限給所有人請留白。';
$lang['updatecheck'] = '檢查更新與安全性警告?DokuWiki 需要聯繫 update.dokuwiki.org 才能使用此功能。';
$lang['userewrite'] = '使用好看的 URL';
$lang['useslash'] = '在 URL 中使用斜線作為命名空間的分隔字元';
@@ -114,6 +113,7 @@ $lang['jpg_quality'] = 'JPG 壓縮品質(0-100)';
$lang['subscribers'] = '啟用頁面訂閱';
$lang['subscribe_time'] = '訂閱列表和摘要發送的時間間隔 (秒);這個值應該小於指定的最近更改保留時間 (recent_days)。';
$lang['compress'] = '壓縮 CSS 與 JavaScript 的輸出';
+$lang['cssdatauri'] = 'CSS 中所引用的圖片假如小於該數字大小(bytes),將會被直接嵌入 CSS 中來減少 HTTP Request 的發送。此功能在 IE 7 及之下版本不支援。推薦使用 <code>400</code> 到 <code>600</code> 之間。設定為<code>0</code> 則停用。';
$lang['hidepages'] = '隱藏匹配的界面 (正規式)';
$lang['send404'] = '存取不存在的頁面時送出 "HTTP 404/Page Not Found"';
$lang['sitemap'] = '產生 Google 站台地圖 (天)';
diff --git a/lib/plugins/config/lang/zh/lang.php b/lib/plugins/config/lang/zh/lang.php
index 7a7f0f504..5b7229c62 100644
--- a/lib/plugins/config/lang/zh/lang.php
+++ b/lib/plugins/config/lang/zh/lang.php
@@ -14,6 +14,7 @@
* @author Hiphen Lee <jacob.b.leung@gmail.com>
* @author caii, patent agent in China <zhoucaiqi@gmail.com>
* @author lainme993@gmail.com
+ * @author Shuo-Ting Jian <shoting@gmail.com>
*/
$lang['menu'] = '配置设置';
$lang['error'] = '由于非法参数,设置没有更新。请检查您做的改动并重新提交。
@@ -96,8 +97,6 @@ $lang['disableactions_other'] = '其他功能(用英文逗号分隔)';
$lang['sneaky_index'] = '默认情况下,DokuWiki 在索引页会显示所有 namespace。启用该选项能隐藏那些用户没有权限阅读的页面。但也可能将用户能够阅读的子页面一并隐藏。这有可能导致在特定 ACL 设置下,索引功能不可用。';
$lang['auth_security_timeout'] = '认证安全超时(秒)';
$lang['securecookie'] = '要让浏览器须以HTTPS方式传送在HTTPS会话中设置的cookies吗?请只在登录过程为SSL加密而浏览维基为明文的情况下打开此选项。';
-$lang['xmlrpc'] = '启用/禁用 XML-RPC 交互界面。';
-$lang['xmlrpcuser'] = '将 XML-RPC 连接限制在用逗号分隔的组或用户中。留空对所有人开启连接权限。';
$lang['updatecheck'] = '自动检查更新并接收安全警告吗?开启该功能后 DokuWiki 将自动访问 splitbrain.org。';
$lang['userewrite'] = '使用更整洁的 URL';
$lang['useslash'] = '在 URL 中使用斜杠作为命名空间的分隔符';
diff --git a/lib/plugins/config/rtl.css b/lib/plugins/config/rtl.css
deleted file mode 100644
index b8b9660e2..000000000
--- a/lib/plugins/config/rtl.css
+++ /dev/null
@@ -1,45 +0,0 @@
-#config__manager fieldset {
- clear: both;
-}
-
-#config__manager fieldset td {
- text-align: right;
-}
-
-#config__manager label {
- text-align: right;
-}
-
-#config__manager td.value input.checkbox {
- float: right;
- padding-left: 0;
- padding-right: 0.7em;
-}
-
-#config__manager td.value label {
- float: left;
-}
-
-#config__manager td.label {
- padding: 0.8em 1em 0.6em 0;
-}
-
-#config__manager td.label span.outkey {
- float: right;
- margin-right: 1em;
-}
-
-#config__manager td.label label {
- clear: right;
-}
-
-#config__manager td.label img {
- float: left;
-}
-
-#config__manager .selection {
- width: 14.8em;
- float: right;
- margin: 0 0 2px 0.3em;
-}
-
diff --git a/lib/plugins/config/settings/config.class.php b/lib/plugins/config/settings/config.class.php
index adf7d217a..1cdab607f 100644
--- a/lib/plugins/config/settings/config.class.php
+++ b/lib/plugins/config/settings/config.class.php
@@ -279,10 +279,10 @@ if (!class_exists('configuration')) {
}
// the same for the active template
- if (@file_exists(DOKU_TPLINC.$file)){
+ if (@file_exists(tpl_incdir().$file)){
$meta = array();
- @include(DOKU_TPLINC.$file);
- @include(DOKU_TPLINC.$class);
+ @include(tpl_incdir().$file);
+ @include(tpl_incdir().$class);
if (!empty($meta)) {
$metadata['tpl'.CM_KEYMARKER.$tpl.CM_KEYMARKER.'template_settings_name'] = array('fieldset');
}
@@ -314,9 +314,9 @@ if (!class_exists('configuration')) {
}
// the same for the active template
- if (@file_exists(DOKU_TPLINC.$file)){
+ if (@file_exists(tpl_incdir().$file)){
$conf = array();
- @include(DOKU_TPLINC.$file);
+ @include(tpl_incdir().$file);
foreach ($conf as $key => $value){
$default['tpl'.CM_KEYMARKER.$tpl.CM_KEYMARKER.$key] = $value;
}
diff --git a/lib/plugins/config/settings/config.metadata.php b/lib/plugins/config/settings/config.metadata.php
index 60ea6a4c2..fa3597970 100644
--- a/lib/plugins/config/settings/config.metadata.php
+++ b/lib/plugins/config/settings/config.metadata.php
@@ -91,6 +91,8 @@ $meta['title'] = array('string');
$meta['start'] = array('string','_pattern' => '!^[^:;/]+$!'); // don't accept namespaces
$meta['lang'] = array('dirchoice','_dir' => DOKU_INC.'inc/lang/');
$meta['template'] = array('dirchoice','_dir' => DOKU_INC.'lib/tpl/','_pattern' => '/^[\w-]+$/');
+$meta['tagline'] = array('string');
+$meta['sidebar'] = array('string');
$meta['license'] = array('license');
$meta['savedir'] = array('savedir');
$meta['basedir'] = array('string');
@@ -123,7 +125,7 @@ $meta['_authentication'] = array('fieldset');
$meta['useacl'] = array('onoff');
$meta['autopasswd'] = array('onoff');
$meta['authtype'] = array('authtype');
-$meta['passcrypt'] = array('multichoice','_choices' => array('smd5','md5','apr1','sha1','ssha','crypt','mysql','my411','kmd5','pmd5','hmd5'));
+$meta['passcrypt'] = array('multichoice','_choices' => array('smd5','md5','apr1','sha1','ssha','lsmd5','crypt','mysql','my411','kmd5','pmd5','hmd5','bcrypt'));
$meta['defaultgroup']= array('string');
$meta['superuser'] = array('string');
$meta['manager'] = array('string');
@@ -136,8 +138,8 @@ $meta['disableactions'] = array('disableactions',
$meta['sneaky_index'] = array('onoff');
$meta['auth_security_timeout'] = array('numeric');
$meta['securecookie'] = array('onoff');
-$meta['xmlrpc'] = array('onoff');
-$meta['xmlrpcuser'] = array('string');
+$meta['remote'] = array('onoff');
+$meta['remoteuser'] = array('string');
$meta['_anti_spam'] = array('fieldset');
$meta['usewordblock']= array('onoff');
@@ -164,6 +166,7 @@ $meta['target____media'] = array('string');
$meta['target____windows'] = array('string');
$meta['_media'] = array('fieldset');
+$meta['mediarevisions'] = array('onoff');
$meta['gdlib'] = array('multichoice','_choices' => array(0,1,2));
$meta['im_convert'] = array('im_convert');
$meta['jpg_quality'] = array('numeric','_pattern' => '/^100$|^[1-9]?[0-9]$/'); //(0-100)
@@ -190,9 +193,10 @@ $meta['sitemap'] = array('numeric');
$meta['rss_type'] = array('multichoice','_choices' => array('rss','rss1','rss2','atom','atom1'));
$meta['rss_linkto'] = array('multichoice','_choices' => array('diff','page','rev','current'));
$meta['rss_content'] = array('multichoice','_choices' => array('abstract','diff','htmldiff','html'));
+$meta['rss_media'] = array('multichoice','_choices' => array('both','pages','media'));
$meta['rss_update'] = array('numeric');
-$meta['recent_days'] = array('numeric');
$meta['rss_show_summary'] = array('onoff');
+$meta['recent_days'] = array('numeric');
$meta['broken_iua'] = array('onoff');
$meta['xsendfile'] = array('multichoice','_choices' => array(0,1,2,3));
$meta['renderer_xhtml'] = array('renderer','_format' => 'xhtml','_choices' => array('xhtml'));
diff --git a/lib/plugins/config/style.css b/lib/plugins/config/style.css
index 65c44a758..1be94feb9 100644
--- a/lib/plugins/config/style.css
+++ b/lib/plugins/config/style.css
@@ -15,6 +15,9 @@
color: __text__;
padding: 0 1em;
}
+[dir=rtl] #config__manager fieldset {
+ clear: both;
+}
#config__manager legend {
font-size: 1.25em;
}
@@ -28,25 +31,49 @@
#config__manager fieldset td {
text-align: left;
}
+[dir=rtl] #config__manager fieldset td {
+ text-align: right;
+}
#config__manager fieldset td.value {
/* fixed data column width */
width: 31em;
}
+[dir=rtl] #config__manager label {
+ text-align: right;
+}
+[dir=rtl] #config__manager td.value input.checkbox {
+ float: right;
+ padding-left: 0;
+ padding-right: 0.7em;
+}
+[dir=rtl] #config__manager td.value label {
+ float: left;
+}
+
#config__manager td.label {
padding: 0.8em 0 0.6em 1em;
vertical-align: top;
}
+[dir=rtl] #config__manager td.label {
+ padding: 0.8em 1em 0.6em 0;
+}
#config__manager td.label label {
clear: left;
display: block;
}
+[dir=rtl] #config__manager td.label label {
+ clear: right;
+}
#config__manager td.label img {
padding: 0 10px;
vertical-align: middle;
float: right;
}
+[dir=rtl] #config__manager td.label img {
+ float: left;
+}
#config__manager td.label span.outkey {
font-size: 70%;
@@ -60,6 +87,10 @@
position: relative;
z-index: 1;
}
+[dir=rtl] #config__manager td.label span.outkey {
+ float: right;
+ margin-right: 1em;
+}
#config__manager td input.edit {
width: 30em;
@@ -106,6 +137,11 @@
float: left;
margin: 0 0.3em 2px 0;
}
+[dir=rtl] #config__manager .selection {
+ width: 14.8em;
+ float: right;
+ margin: 0 0 2px 0.3em;
+}
#config__manager .selection label {
float: right;
diff --git a/lib/plugins/info/syntax.php b/lib/plugins/info/syntax.php
index 026a438bb..9aedbf0aa 100644
--- a/lib/plugins/info/syntax.php
+++ b/lib/plugins/info/syntax.php
@@ -174,7 +174,7 @@ class syntax_plugin_info extends DokuWiki_Syntax_Plugin {
$hid = $this->_addToTOC($title, 3, $renderer);
$doc .= '<h3><a name="'.$hid.'" id="'.$hid.'">'.hsc($title).'</a></h3>';
$doc .= '<div class="level3">';
- $doc .= '<table class="inline"><tbody>';
+ $doc .= '<div class="table"><table class="inline"><tbody>';
$doc .= '<tr><th>Description</th><td colspan="2">'.$method['desc'].
'</td></tr>';
if ($method['params']){
@@ -190,7 +190,7 @@ class syntax_plugin_info extends DokuWiki_Syntax_Plugin {
$doc .= '<tr><th>Return value</th><td>'.hsc(key($method['return'])).
'</td><td>'.hsc(current($method['return'])).'</td></tr>';
}
- $doc .= '</tbody></table>';
+ $doc .= '</tbody></table></div>';
$doc .= '</div>';
}
unset($po);
@@ -206,7 +206,7 @@ class syntax_plugin_info extends DokuWiki_Syntax_Plugin {
global $PARSER_MODES;
$doc = '';
- $doc .= '<table class="inline"><tbody>';
+ $doc .= '<div class="table"><table class="inline"><tbody>';
foreach($PARSER_MODES as $mode => $modes){
$doc .= '<tr>';
$doc .= '<td class="leftalign">';
@@ -217,7 +217,7 @@ class syntax_plugin_info extends DokuWiki_Syntax_Plugin {
$doc .= '</td>';
$doc .= '</tr>';
}
- $doc .= '</tbody></table>';
+ $doc .= '</tbody></table></div>';
return $doc;
}
diff --git a/lib/plugins/plugin/classes/ap_download.class.php b/lib/plugins/plugin/classes/ap_download.class.php
index 6aab4ba3c..b2571f632 100644
--- a/lib/plugins/plugin/classes/ap_download.class.php
+++ b/lib/plugins/plugin/classes/ap_download.class.php
@@ -59,7 +59,7 @@ class ap_download extends ap_manage {
return false;
}
- if (!$file = io_download($url, "$tmp/", true, $file)) {
+ if (!$file = io_download($url, "$tmp/", true, $file, 0)) {
$this->manager->error = sprintf($this->lang['error_download'],$url)."\n";
}
diff --git a/lib/plugins/plugin/classes/ap_manage.class.php b/lib/plugins/plugin/classes/ap_manage.class.php
index fb148f263..12480e922 100644
--- a/lib/plugins/plugin/classes/ap_manage.class.php
+++ b/lib/plugins/plugin/classes/ap_manage.class.php
@@ -90,8 +90,8 @@ class ap_manage {
ptln(' <fieldset'.$class.'>');
ptln(' <legend>'.$plugin.'</legend>');
- ptln(' <input type="checkbox" class="enable" name="enabled[]" value="'.$plugin.'"'.$checked.$check_disabled.' />');
- ptln(' <h3 class="legend">'.$plugin.'</h3>');
+ ptln(' <input type="checkbox" class="enable" name="enabled[]" id="dw__p_'.$plugin.'" value="'.$plugin.'"'.$checked.$check_disabled.' />');
+ ptln(' <h3 class="legend"><label for="dw__p_'.$plugin.'">'.$plugin.'</label></h3>');
$this->html_button($plugin, 'info', false, 6);
if (in_array('settings', $this->manager->functions)) {
diff --git a/lib/plugins/plugin/lang/ar/lang.php b/lib/plugins/plugin/lang/ar/lang.php
index fbc6d3c36..8327e5ce3 100644
--- a/lib/plugins/plugin/lang/ar/lang.php
+++ b/lib/plugins/plugin/lang/ar/lang.php
@@ -50,3 +50,4 @@ $lang['enabled'] = 'الاضافة %s فُعلت. ';
$lang['notenabled'] = 'تعذر تفعيل الاضافة %s، تحقق من اذونات الملف.';
$lang['disabled'] = 'عُطلت الإضافة %s.';
$lang['notdisabled'] = 'تعذر تعطيل الإضافة %s، تحقق من اذونات الملف.';
+$lang['packageinstalled'] = 'حزمة الإضافة (%d plugin(s): %Xs) ثبتت بنجاج.';
diff --git a/lib/plugins/plugin/lang/bg/lang.php b/lib/plugins/plugin/lang/bg/lang.php
index 79f6e081f..09ac35229 100644
--- a/lib/plugins/plugin/lang/bg/lang.php
+++ b/lib/plugins/plugin/lang/bg/lang.php
@@ -51,4 +51,4 @@ $lang['enabled'] = 'Приставката %s е включена.
$lang['notenabled'] = 'Приставката %s не може да бъде включена, моля проверете правата за файловете.';
$lang['disabled'] = 'Приставката %s е изключена.';
$lang['notdisabled'] = 'Приставката %s не е изключена, моля проверете правата за файловете.';
-$lang['packageinstalled'] = 'Пакетът е инсталиран успешно (%d приставка%s: %s).';
+$lang['packageinstalled'] = 'Пакетът е инсталиран успешно (%d приставка: %s).';
diff --git a/lib/plugins/plugin/lang/cs/lang.php b/lib/plugins/plugin/lang/cs/lang.php
index 7c0fb3468..1fd360dca 100644
--- a/lib/plugins/plugin/lang/cs/lang.php
+++ b/lib/plugins/plugin/lang/cs/lang.php
@@ -10,6 +10,8 @@
* @author Marek Sacha <sachamar@fel.cvut.cz>
* @author Lefty <lefty@multihost.cz>
* @author Vojta Beran <xmamut@email.cz>
+ * @author zbynek.krivka@seznam.cz
+ * @author Bohumir Zamecnik <bohumir.zamecnik@gmail.com>
*/
$lang['menu'] = 'Správa pluginů';
$lang['download'] = 'Stáhnout a instalovat plugin';
@@ -56,4 +58,4 @@ $lang['enabled'] = 'Plugin %s aktivován.';
$lang['notenabled'] = 'Plugin %s nelze aktivovat, zkontrolujte práva k souborům.';
$lang['disabled'] = 'Plugin %s deaktivován.';
$lang['notdisabled'] = 'Plugin %s nelze deaktivovat, zkontrolujte práva k souborům.';
-$lang['packageinstalled'] = 'Plugin package (%d plugin%s: %s) úspěšně nainstalován.';
+$lang['packageinstalled'] = 'Balíček pluginů (%d plugin(ů): %s) úspěšně nainstalován.';
diff --git a/lib/plugins/plugin/lang/de-informal/lang.php b/lib/plugins/plugin/lang/de-informal/lang.php
index 0c7fb5cdf..abcdf2c83 100644
--- a/lib/plugins/plugin/lang/de-informal/lang.php
+++ b/lib/plugins/plugin/lang/de-informal/lang.php
@@ -53,4 +53,4 @@ $lang['enabled'] = 'Erweiterung %s aktiviert.';
$lang['notenabled'] = 'Erweiterung %s konnte nicht aktiviert werden. Überprüfen sie die Zugriffsberechtigung der Datei.';
$lang['disabled'] = 'Erweiterung %s deaktiviert.';
$lang['notdisabled'] = 'Erweiterung %s konnte nicht deaktiviert werden - überprüfe Dateiberechtigungen';
-$lang['packageinstalled'] = 'Plugin-Paket (%d Plugin%s: %s) erfolgreich installiert.';
+$lang['packageinstalled'] = 'Plugin-Paket (%d Plugin(s): %s) erfolgreich installiert.';
diff --git a/lib/plugins/plugin/lang/de/lang.php b/lib/plugins/plugin/lang/de/lang.php
index 75d3eaa93..8708d7836 100644
--- a/lib/plugins/plugin/lang/de/lang.php
+++ b/lib/plugins/plugin/lang/de/lang.php
@@ -63,4 +63,4 @@ $lang['enabled'] = 'Plugin %s wurde aktiviert.';
$lang['notenabled'] = 'Plugin %s konnte nicht aktiviert werden, überprüfen Sie die Dateirechte.';
$lang['disabled'] = 'Plugin %s wurde deaktiviert.';
$lang['notdisabled'] = 'Plugin %s konnte nicht deaktiviert werden, überprüfen Sie die Dateirechte.';
-$lang['packageinstalled'] = 'Plugin-Paket (%d Plugin%s: %s) erfolgreich installiert.';
+$lang['packageinstalled'] = 'Plugin-Paket (%d Plugin(s): %s) erfolgreich installiert.';
diff --git a/lib/plugins/plugin/lang/es/lang.php b/lib/plugins/plugin/lang/es/lang.php
index 53d6d63fd..ac548245b 100644
--- a/lib/plugins/plugin/lang/es/lang.php
+++ b/lib/plugins/plugin/lang/es/lang.php
@@ -67,4 +67,4 @@ $lang['enabled'] = 'Plugin %s habilitado.';
$lang['notenabled'] = 'Plugin %s no puede ser habilitado, verifica los permisos del archivo.';
$lang['disabled'] = 'Plugin %s desabilitado.';
$lang['notdisabled'] = 'Plugin %s no puede ser desabilitado, verifica los permisos de archivo.';
-$lang['packageinstalled'] = 'Plugin (%d plugin%s: %s) instalado exitosamente.';
+$lang['packageinstalled'] = 'Plugin (%d plugin(s): %s) instalado exitosamente.';
diff --git a/lib/plugins/plugin/lang/eu/lang.php b/lib/plugins/plugin/lang/eu/lang.php
index ebcda7e16..56c03325f 100644
--- a/lib/plugins/plugin/lang/eu/lang.php
+++ b/lib/plugins/plugin/lang/eu/lang.php
@@ -48,4 +48,4 @@ $lang['enabled'] = '%s Plugin-a gaitua.';
$lang['notenabled'] = '%s Plugin-a ezin izan da gaitu, egiaztatu fitxategi baimenak.';
$lang['disabled'] = '%s Plugin-a ezgaitua.';
$lang['notdisabled'] = '%s Plugin-a ezin izan da ezgaitu, egiaztatu fitxategi baimenak. ';
-$lang['packageinstalled'] = 'Plugin paketea (%d plugin%s: %s) arrakastaz instalatua izan da.';
+$lang['packageinstalled'] = 'Plugin paketea (%d plugin(s): %s) arrakastaz instalatua izan da.';
diff --git a/lib/plugins/plugin/lang/fa/lang.php b/lib/plugins/plugin/lang/fa/lang.php
index 19a839660..8f3fb8a41 100644
--- a/lib/plugins/plugin/lang/fa/lang.php
+++ b/lib/plugins/plugin/lang/fa/lang.php
@@ -52,4 +52,4 @@ $lang['enabled'] = 'افزونه‌ی %s فعال شد.';
$lang['notenabled'] = 'افزونه‌ی %s قابلیت فعال کردن ندارد، دسترسی‌ها را چک کنید.';
$lang['disabled'] = 'افزونه‌ی %s غیرفعال شد.';
$lang['notdisabled'] = 'افزونه‌ی %s قابلیت غیرفعال کردن ندارد، دسترسی‌ها را چک کنید.';
-$lang['packageinstalled'] = 'بسته افزونه (%d افزونه%s: %s) به درستی نصب شد.';
+$lang['packageinstalled'] = 'بسته افزونه (%d افزونه: %s) به درستی نصب شد.';
diff --git a/lib/plugins/plugin/lang/fi/lang.php b/lib/plugins/plugin/lang/fi/lang.php
index c348a2331..923029a6f 100644
--- a/lib/plugins/plugin/lang/fi/lang.php
+++ b/lib/plugins/plugin/lang/fi/lang.php
@@ -51,4 +51,4 @@ $lang['enabled'] = 'Liitännäinen %s käytössä';
$lang['notenabled'] = 'Liitännäistä %s ei voitu ottaa käyttöön. Tarkista tiedostojen oikeudet.';
$lang['disabled'] = 'Liitännäinen %s pois käytössä';
$lang['notdisabled'] = 'Liitännäistä %s ei voitu ottaa pois käytöstä. Tarkista tiedostojen oikeudet.';
-$lang['packageinstalled'] = 'Pluginpaketti (%d plugin%s: %s:) asennettu onnistuneesti.';
+$lang['packageinstalled'] = 'Pluginpaketti (%d plugin: %s:) asennettu onnistuneesti.';
diff --git a/lib/plugins/plugin/lang/fr/admin_plugin.txt b/lib/plugins/plugin/lang/fr/admin_plugin.txt
index c43e44684..f90b627f3 100644
--- a/lib/plugins/plugin/lang/fr/admin_plugin.txt
+++ b/lib/plugins/plugin/lang/fr/admin_plugin.txt
@@ -1,4 +1,4 @@
====== Gestion des modules externes ======
-Cette page vous permet de gérer tout ce qui a trait aux [[doku>plugins|modules externes]] de DokuWiki. Pour télécharger et installer un module, le répertoire « ''plugin'' » doit être accessible en écriture pour le serveur Web.
+Cette page vous permet de gérer tout ce qui a trait aux [[doku>fr:plugins|modules externes]] de DokuWiki. Pour télécharger et installer un module, le répertoire « ''plugin'' » doit être accessible en écriture pour le serveur Web.
diff --git a/lib/plugins/plugin/lang/fr/lang.php b/lib/plugins/plugin/lang/fr/lang.php
index b86c57b53..bb0b49872 100644
--- a/lib/plugins/plugin/lang/fr/lang.php
+++ b/lib/plugins/plugin/lang/fr/lang.php
@@ -16,6 +16,7 @@
* @author Samuel Dorsaz samuel.dorsaz@novelion.net
* @author Johan Guilbaud <guilbaud.johan@gmail.com>
* @author schplurtz@laposte.net
+ * @author skimpax@gmail.com
*/
$lang['menu'] = 'Gestion des modules externes';
$lang['download'] = 'Télécharger et installer un nouveau module';
diff --git a/lib/plugins/plugin/lang/gl/lang.php b/lib/plugins/plugin/lang/gl/lang.php
index 157911a62..a314b71b9 100644
--- a/lib/plugins/plugin/lang/gl/lang.php
+++ b/lib/plugins/plugin/lang/gl/lang.php
@@ -3,6 +3,7 @@
* Galicianlanguage file
*
* @author Medúlio <medulio@ciberirmandade.org>
+ * @author Oscar M. Lage <r0sk10@gmail.com>
*/
$lang['menu'] = 'Xestionar Extensións';
$lang['download'] = 'Descargar e instalar unha nova extensión';
@@ -48,3 +49,4 @@ $lang['enabled'] = 'Extensión %s activado.';
$lang['notenabled'] = 'A extensión %s non puido ser activada, comproba os permisos de arquivo.';
$lang['disabled'] = 'Extensión %s desactivada.';
$lang['notdisabled'] = 'A extensión %s non puido ser desactivada, comproba os permisos de arquivo.';
+$lang['packageinstalled'] = 'Paquete de extensión (%d plugin(s): %s) instalado axeitadamente.';
diff --git a/lib/plugins/plugin/lang/hu/lang.php b/lib/plugins/plugin/lang/hu/lang.php
index 25c7b6322..34309a53f 100644
--- a/lib/plugins/plugin/lang/hu/lang.php
+++ b/lib/plugins/plugin/lang/hu/lang.php
@@ -53,4 +53,4 @@ $lang['enabled'] = 'A(z) %s bővítmény bekapcsolva.';
$lang['notenabled'] = 'A(z) %s bővítmény engedélyezése nem sikerült. Ellenőrizze a fájl-hozzáférési engedélyeket.';
$lang['disabled'] = 'A(z) %s bővítmény kikapcsolva.';
$lang['notdisabled'] = 'A(z) %s bővítmény kikapcsolása nem sikerült. Ellenőrizze a fájl-hozzáférési engedélyeket.';
-$lang['packageinstalled'] = 'A bővítmény csomag(ok) feltelepült(ek): %d plugin%s: %s';
+$lang['packageinstalled'] = 'A bővítmény csomag(ok) feltelepült(ek): %d plugin(s): %s';
diff --git a/lib/plugins/plugin/lang/ja/lang.php b/lib/plugins/plugin/lang/ja/lang.php
index 56a827b7e..d366806c3 100644
--- a/lib/plugins/plugin/lang/ja/lang.php
+++ b/lib/plugins/plugin/lang/ja/lang.php
@@ -8,6 +8,7 @@
* @author Ikuo Obataya <i.obataya@gmail.com>
* @author Daniel Dupriest <kououken@gmail.com>
* @author Kazutaka Miyasaka <kazmiya@gmail.com>
+ * @author Taisuke Shimamoto <dentostar@gmail.com>
*/
$lang['menu'] = 'プラグイン管理';
$lang['download'] = 'プラグインのダウンロードとインストール';
@@ -53,4 +54,4 @@ $lang['enabled'] = 'プラグイン %s が有効です。';
$lang['notenabled'] = 'プラグイン %s を有効にすることができません。権限を確認してください。';
$lang['disabled'] = 'プラグイン %s が無効です。';
$lang['notdisabled'] = 'プラグイン %s を無効にすることができません。権限を確認してください。';
-$lang['packageinstalled'] = 'プラグインパッケージ(%d plugin%s: %s)は正しくインストールされました。';
+$lang['packageinstalled'] = 'プラグインパッケージ(%d plugin(s): %s)は正しくインストールされました。';
diff --git a/lib/plugins/plugin/lang/ko/lang.php b/lib/plugins/plugin/lang/ko/lang.php
index ab305dcd8..b15b377a6 100644
--- a/lib/plugins/plugin/lang/ko/lang.php
+++ b/lib/plugins/plugin/lang/ko/lang.php
@@ -8,6 +8,7 @@
* @author Song Younghwan <purluno@gmail.com>
* @author SONG Younghwan <purluno@gmail.com>
* @author Seung-Chul Yoo <dryoo@live.com>
+ * @author erial2@gmail.com
*/
$lang['menu'] = '플러그인 관리자';
$lang['download'] = '새로운 플러그인 다운로드 및 설치';
@@ -53,4 +54,4 @@ $lang['enabled'] = '%s 플러그인을 켰습니다.';
$lang['notenabled'] = '%s 플러그인을 킬 수 없습니다. 파일 권한을 확인하십시오.';
$lang['disabled'] = '%s 플러그인을 껐습니다.';
$lang['notdisabled'] = '%s 플러그인을 끌 수 없습니다. 파일 권한을 확인하십시오.';
-$lang['packageinstalled'] = '플러그인 패키지(%d 개의 플러그인%s: %s)가 성공적으로 설치되었습니다.';
+$lang['packageinstalled'] = '플러그인 패키지(%d 개의 플러그인: %s)가 성공적으로 설치되었습니다.';
diff --git a/lib/plugins/plugin/lang/mk/lang.php b/lib/plugins/plugin/lang/mk/lang.php
index 85f73a09f..747d61638 100644
--- a/lib/plugins/plugin/lang/mk/lang.php
+++ b/lib/plugins/plugin/lang/mk/lang.php
@@ -19,13 +19,13 @@ $lang['lastupdate'] = 'Последно ажурирани:';
$lang['source'] = 'Извор:';
$lang['unknown'] = 'непознат';
$lang['updating'] = 'Ажурирам...';
-$lang['updated'] = 'Приклучокот % е успешно ажуриран';
+$lang['updated'] = 'Приклучокот %s е успешно ажуриран';
$lang['updates'] = 'Следниве приклучоци се успешно ажурирани';
$lang['update_none'] = 'Нема потребни ажурирања.';
$lang['deleting'] = 'Бришам...';
$lang['deleted'] = 'Приклучокот %s е избришан.';
$lang['downloading'] = 'Симнувам...';
-$lang['downloaded'] = 'Приклучокот % е успешно инсталиран';
+$lang['downloaded'] = 'Приклучокот %s е успешно инсталиран';
$lang['downloads'] = 'Следниве приклучоци се успешно инсталирани';
$lang['download_none'] = 'Нема пронајдени приклучоци, или имаше непознат проблем при симнување и инсталирање.';
$lang['plugin'] = 'Приклучок:';
diff --git a/lib/plugins/plugin/lang/ms/lang.php b/lib/plugins/plugin/lang/ms/lang.php
new file mode 100644
index 000000000..77ad2a1c1
--- /dev/null
+++ b/lib/plugins/plugin/lang/ms/lang.php
@@ -0,0 +1,6 @@
+<?php
+/**
+ * Malay language file
+ *
+ * @author Markos
+ */
diff --git a/lib/plugins/plugin/lang/nl/lang.php b/lib/plugins/plugin/lang/nl/lang.php
index d13e46ff8..0599c3184 100644
--- a/lib/plugins/plugin/lang/nl/lang.php
+++ b/lib/plugins/plugin/lang/nl/lang.php
@@ -12,6 +12,7 @@
* @author Marijn Hofstra <hofstra.m@gmail.com>
* @author Timon Van Overveldt <timonvo@gmail.com>
* @author Jeroen
+ * @author Ricardo Guijt <ricardoguijt@gmail.com>
*/
$lang['menu'] = 'Plugins beheren';
$lang['download'] = 'Download en installeer een nieuwe plugin';
diff --git a/lib/plugins/plugin/lang/no/admin_plugin.txt b/lib/plugins/plugin/lang/no/admin_plugin.txt
index f1b63b992..1765b671d 100644
--- a/lib/plugins/plugin/lang/no/admin_plugin.txt
+++ b/lib/plugins/plugin/lang/no/admin_plugin.txt
@@ -1,3 +1,3 @@
-====== Behandle tillegg ======
+====== Behandle programtillegg ======
På denne siden kan du behandle alt som har å gjøre med DokuWikis [[doku>plugins|tillegg]]. For å kunne laste ned og installere et tillegg må webserveren ha skrivetilgang til mappen for tillegg.
diff --git a/lib/plugins/plugin/lang/no/lang.php b/lib/plugins/plugin/lang/no/lang.php
index 41f6d1153..829d29387 100644
--- a/lib/plugins/plugin/lang/no/lang.php
+++ b/lib/plugins/plugin/lang/no/lang.php
@@ -14,10 +14,11 @@
* @author Erik Bjørn Pedersen <erik.pedersen@shaw.ca>
* @author Rune Rasmussen syntaxerror.no@gmail.com
* @author Jon Bøe <jonmagneboe@hotmail.com>
+ * @author Egil Hansen <egil@rosetta.no>
*/
-$lang['menu'] = 'Behandle tillegg';
-$lang['download'] = 'Last ned og installer et tillegg';
-$lang['manage'] = 'Installerte tillegg';
+$lang['menu'] = 'Behandle programtillegg';
+$lang['download'] = 'Last ned og installer et programtillegg';
+$lang['manage'] = 'Installerte programtillegg';
$lang['btn_info'] = 'informasjon';
$lang['btn_update'] = 'oppdater';
$lang['btn_delete'] = 'slett';
@@ -31,7 +32,7 @@ $lang['source'] = 'Kilde:';
$lang['unknown'] = 'ukjent';
$lang['updating'] = 'Oppdaterer ...';
$lang['updated'] = 'Tillegget %s er oppdatert';
-$lang['updates'] = 'De følgende tilleggene har blitt oppdatert';
+$lang['updates'] = 'Følgende programtillegg har blitt oppdatert';
$lang['update_none'] = 'Ingen oppdateringer funnet.';
$lang['deleting'] = 'Sletter ...';
$lang['deleted'] = 'Tillegget %s ble slettet.';
diff --git a/lib/plugins/plugin/lang/pl/lang.php b/lib/plugins/plugin/lang/pl/lang.php
index f48426bf6..02459f1de 100644
--- a/lib/plugins/plugin/lang/pl/lang.php
+++ b/lib/plugins/plugin/lang/pl/lang.php
@@ -13,6 +13,7 @@
* @author maros <dobrimaros@yahoo.pl>
* @author Grzegorz Widła <dzesdzes@gmail.com>
* @author Łukasz Chmaj <teachmeter@gmail.com>
+ * @author Begina Felicysym <begina.felicysym@wp.eu>
*/
$lang['menu'] = 'Menadżer wtyczek';
$lang['download'] = 'Ściągnij i zainstaluj nową wtyczkę';
@@ -56,5 +57,6 @@ $lang['error_copy'] = 'Wystąpił błąd podczas kopiowania pliku w t
$lang['error_delete'] = 'Wystąpił błąd przy próbie usunięcia wtyczki <em>%s</em>. Prawdopodobną przyczyną są niewystarczające uprawnienia do katalogu.';
$lang['enabled'] = 'Wtyczka %s włączona.';
$lang['notenabled'] = 'Nie udało się uruchomić wtyczki %s, sprawdź uprawnienia dostępu do plików.';
-$lang['disabled'] = 'Wtyczka % wyłączona.';
+$lang['disabled'] = 'Wtyczka %s wyłączona.';
$lang['notdisabled'] = 'Nie udało się wyłączyć wtyczki %s, sprawdź uprawnienia dostępu do plików.';
+$lang['packageinstalled'] = 'Pakiet wtyczek (%d wtyczki:% s) zainstalowany pomyślnie.';
diff --git a/lib/plugins/plugin/lang/pt-br/lang.php b/lib/plugins/plugin/lang/pt-br/lang.php
index e8b23dae9..26e73f4fc 100644
--- a/lib/plugins/plugin/lang/pt-br/lang.php
+++ b/lib/plugins/plugin/lang/pt-br/lang.php
@@ -61,4 +61,4 @@ $lang['enabled'] = 'O plug-in %s foi habilitado.';
$lang['notenabled'] = 'Não foi possível habilitar o plug-in %s. Verifique as permissões de acesso.';
$lang['disabled'] = 'O plug-in %s foi desabilitado.';
$lang['notdisabled'] = 'Não foi possível desabilitar o plug-in %s. Verifique as permissões de acesso.';
-$lang['packageinstalled'] = 'O pacote do plugin (%d plugin%s: %s) foi instalado com sucesso.';
+$lang['packageinstalled'] = 'O pacote do plugin (%d plugin(s): %s) foi instalado com sucesso.';
diff --git a/lib/plugins/plugin/lang/pt/lang.php b/lib/plugins/plugin/lang/pt/lang.php
index 1567741f9..dccd4f738 100644
--- a/lib/plugins/plugin/lang/pt/lang.php
+++ b/lib/plugins/plugin/lang/pt/lang.php
@@ -52,4 +52,4 @@ $lang['enabled'] = 'Plugin %s habilitado.';
$lang['notenabled'] = 'Plugin %s não pôde ser habilitado, verifique as permissões.';
$lang['disabled'] = 'Plugin %s desabilitado.';
$lang['notdisabled'] = 'Plugin %s não pôde ser desabilitado, verifique as permissões.';
-$lang['packageinstalled'] = 'Pacote de Plugins (%d plugin%s: %s) instalado com sucesso.';
+$lang['packageinstalled'] = 'Pacote de Plugins (%d plugin(s): %s) instalado com sucesso.';
diff --git a/lib/plugins/plugin/lang/ro/lang.php b/lib/plugins/plugin/lang/ro/lang.php
index 9c90f77a3..c57647e0b 100644
--- a/lib/plugins/plugin/lang/ro/lang.php
+++ b/lib/plugins/plugin/lang/ro/lang.php
@@ -9,6 +9,8 @@
* @author Emanuel-Emeric Andraşi <em.andrasi@mandrivausers.ro>
* @author Emanuel-Emeric Andrasi <em.andrasi@mandrivausers.ro>
* @author Marius OLAR <olarmariusalex@gmail.com>
+ * @author Marius Olar <olarmariusalex@yahoo.com>
+ * @author Emanuel-Emeric Andrași <em.andrasi@mandrivausers.ro>
*/
$lang['menu'] = 'Administrează plugin-uri';
$lang['download'] = 'Descarcă şi instalează un nou plugin';
diff --git a/lib/plugins/plugin/lang/ru/lang.php b/lib/plugins/plugin/lang/ru/lang.php
index 757b607f5..f011c9954 100644
--- a/lib/plugins/plugin/lang/ru/lang.php
+++ b/lib/plugins/plugin/lang/ru/lang.php
@@ -16,6 +16,7 @@
* @author Aleksandr Selivanov <alexgearbox@gmail.com>
* @author Ladyko Andrey <fylh@succexy.spb.ru>
* @author Eugene <windy.wanderer@gmail.com>
+ * @author Johnny Utah <pcpa@cyberpunk.su>
*/
$lang['menu'] = 'Управление плагинами';
$lang['download'] = 'Скачать и установить новый плагин';
@@ -61,3 +62,4 @@ $lang['enabled'] = 'Плагин %s включён.';
$lang['notenabled'] = 'Не удалось включить плагин %s. Проверьте системные права доступа к файлам.';
$lang['disabled'] = 'Плагин %s отключён.';
$lang['notdisabled'] = 'Не удалось отключить плагин %s. Проверьте системные права доступа к файлам.';
+$lang['packageinstalled'] = 'Пакет (%d плагин(а): %s) успешно установлен.';
diff --git a/lib/plugins/plugin/lang/sk/lang.php b/lib/plugins/plugin/lang/sk/lang.php
index 7a8f32a53..5024872f1 100644
--- a/lib/plugins/plugin/lang/sk/lang.php
+++ b/lib/plugins/plugin/lang/sk/lang.php
@@ -51,4 +51,4 @@ $lang['enabled'] = 'Plugin %s aktivovaný.';
$lang['notenabled'] = 'Plugin %s nemôže byť aktivovaný, skontrolujte prístupové práva.';
$lang['disabled'] = 'Plugin %s deaktivovaný.';
$lang['notdisabled'] = 'Plugin %s nemôže byť deaktivovaný, skontrolujte prístupové práva.';
-$lang['packageinstalled'] = 'Plugin package (%d plugin%s: %s) úspešne inštalovaný.';
+$lang['packageinstalled'] = 'Plugin package (%d plugin(s): %s) úspešne inštalovaný.';
diff --git a/lib/plugins/plugin/lang/sl/admin_plugin.txt b/lib/plugins/plugin/lang/sl/admin_plugin.txt
index 2e99c6297..5fd02e1ba 100644
--- a/lib/plugins/plugin/lang/sl/admin_plugin.txt
+++ b/lib/plugins/plugin/lang/sl/admin_plugin.txt
@@ -1,3 +1,3 @@
====== Upravljanje vstavkov ======
-Na tej strani je mogoe spreminjati in prilagajati nastavitve Dokuwiki [[doku>plugins|vstavkov]]. Za prejemanje in nameanje vstavkov v ustrezne mape, morajo imeti te doloena ustrezna dovoljenja za pisanje spletnega strenika.
+Na tej strani je mogoče spreminjati in prilagajati nastavitve DokuWiki [[doku>plugins|vstavkov]]. Za prejemanje in nameščanje vstavkov v ustrezne mape, morajo imeti te določena ustrezna dovoljenja za pisanje spletnega strežnika.
diff --git a/lib/plugins/plugin/lang/sl/lang.php b/lib/plugins/plugin/lang/sl/lang.php
index 39ba20139..3e5f8c8af 100644
--- a/lib/plugins/plugin/lang/sl/lang.php
+++ b/lib/plugins/plugin/lang/sl/lang.php
@@ -7,7 +7,6 @@
* @author Gregor Skumavc (grega.skumavc@gmail.com)
* @author Matej Urbančič (mateju@svn.gnome.org)
*/
-
$lang['menu'] = 'Upravljanje vstavkov';
$lang['download'] = 'Prejmi in namesti nov vstavek';
$lang['manage'] = 'Nameščeni vstavki';
@@ -52,3 +51,4 @@ $lang['enabled'] = 'Vstavek %s je omogočen.';
$lang['notenabled'] = 'Vstavka %s ni mogoče omogočiti zaradi neustreznih dovoljen.';
$lang['disabled'] = 'Vstavek %s je onemogočen.';
$lang['notdisabled'] = 'Vstavka %s ni mogoče onemogočiti zaradi neustreznih dovoljen.';
+$lang['packageinstalled'] = 'Paket vstavka (%d vstavkov: %s) je uspešno nameščen.';
diff --git a/lib/plugins/plugin/lang/uk/lang.php b/lib/plugins/plugin/lang/uk/lang.php
index 69ee9ded1..036900f4e 100644
--- a/lib/plugins/plugin/lang/uk/lang.php
+++ b/lib/plugins/plugin/lang/uk/lang.php
@@ -55,4 +55,4 @@ $lang['enabled'] = 'Доданок %s увімкнено.';
$lang['notenabled'] = 'Не вдається увімкнути доданок %s. Перевірте права доступу до файлу.';
$lang['disabled'] = 'Доданок %s вимкнено.';
$lang['notdisabled'] = 'Не вдається вимкнути доданок %s. Перевірте права доступу до файлу.';
-$lang['packageinstalled'] = 'Пакет плагінів (%d plugin%s: %s) успішно встановлений.';
+$lang['packageinstalled'] = 'Пакет плагінів (%d plugin(s): %s) успішно встановлений.';
diff --git a/lib/plugins/plugin/lang/zh/lang.php b/lib/plugins/plugin/lang/zh/lang.php
index f8e0b5568..58f05fbd9 100644
--- a/lib/plugins/plugin/lang/zh/lang.php
+++ b/lib/plugins/plugin/lang/zh/lang.php
@@ -14,6 +14,7 @@
* @author Hiphen Lee <jacob.b.leung@gmail.com>
* @author caii, patent agent in China <zhoucaiqi@gmail.com>
* @author lainme993@gmail.com
+ * @author Shuo-Ting Jian <shoting@gmail.com>
*/
$lang['menu'] = '插件管理器';
$lang['download'] = '下载并安装新的插件';
diff --git a/lib/plugins/plugin/rtl.css b/lib/plugins/plugin/rtl.css
deleted file mode 100644
index 6ababd8e0..000000000
--- a/lib/plugins/plugin/rtl.css
+++ /dev/null
@@ -1,51 +0,0 @@
-
-#plugin__manager .pm_menu,
-#plugin__manager .pm_info,
-#plugin__manager p,
-#plugin__manager label {
- text-align: right;
-}
-
-#plugin__manager .pm_menu {
- float: right;
-}
-
-#plugin__manager .pm_info {
- float: left;
-}
-
-#plugin__manager .pm_info dt {
- float: right;
- clear: right;
-}
-
-#plugin__manager .pm_info dd {
- margin: 0 7em 0 0;
-}
-
-#plugin__manager .common fieldset {
- text-align: right;
-}
-
-
-#plugin__manager .plugins .legend {
- text-align: right;
- float: right;
-}
-
-#plugin__manager .plugins .enable {
- float: right;
- margin-right: 0;
- margin-left: 0.5em;
-}
-
-#plugin__manager .plugins .button {
- float: left;
- margin-right: 0.5em;
-}
-
-
-#plugin__manager .plugins fieldset.buttons .button {
- float: right;
-}
-
diff --git a/lib/plugins/plugin/style.css b/lib/plugins/plugin/style.css
index de6cca579..9433e6001 100644
--- a/lib/plugins/plugin/style.css
+++ b/lib/plugins/plugin/style.css
@@ -52,15 +52,28 @@
text-align: left;
}
+[dir=rtl] #plugin__manager .pm_menu,
+[dir=rtl] #plugin__manager .pm_info,
+[dir=rtl] #plugin__manager p,
+[dir=rtl] #plugin__manager label {
+ text-align: right;
+}
+
#plugin__manager .pm_menu {
float: left;
width: 48%;
}
+[dir=rtl] #plugin__manager .pm_menu {
+ float: right;
+}
#plugin__manager .pm_info {
float: right;
width: 50%;
}
+[dir=rtl] #plugin__manager .pm_info {
+ float: left;
+}
#plugin__manager .common fieldset {
margin: 0;
@@ -68,6 +81,9 @@
text-align: left;
border: none;
}
+[dir=rtl] #plugin__manager .common fieldset {
+ text-align: right;
+}
#plugin__manager .common label {
padding: 0 0 0.5em 0;
@@ -111,6 +127,10 @@
padding: 0;
clear: none;
}
+[dir=rtl] #plugin__manager .plugins .legend {
+ text-align: right;
+ float: right;
+}
#plugin__manager .plugins .button {
font-size: 95%;
@@ -123,6 +143,13 @@
#plugin__manager .plugins fieldset.buttons .button {
float: left;
}
+[dir=rtl] #plugin__manager .plugins .button {
+ float: left;
+ margin-right: 0.5em;
+}
+[dir=rtl] #plugin__manager .plugins fieldset.buttons .button {
+ float: right;
+}
#plugin__manager .pm_info h3 {
margin-left: 0;
@@ -140,17 +167,29 @@
margin: 0;
padding: 0;
}
+[dir=rtl] #plugin__manager .pm_info dt {
+ float: right;
+ clear: right;
+}
#plugin__manager .pm_info dd {
margin: 0 0 0 7em;
padding: 0;
background: none;
}
+[dir=rtl] #plugin__manager .pm_info dd {
+ margin: 0 7em 0 0;
+}
#plugin__manager .plugins .enable {
float: left;
width: auto;
margin-right: 0.5em;
}
+[dir=rtl] #plugin__manager .plugins .enable {
+ float: right;
+ margin-right: 0;
+ margin-left: 0.5em;
+}
/* end admin plugin styles */
diff --git a/lib/plugins/popularity/lang/cs/lang.php b/lib/plugins/popularity/lang/cs/lang.php
index b0dc4d1a8..d7c58af2e 100644
--- a/lib/plugins/popularity/lang/cs/lang.php
+++ b/lib/plugins/popularity/lang/cs/lang.php
@@ -7,6 +7,8 @@
* @author Marek Sacha <sachamar@fel.cvut.cz>
* @author Lefty <lefty@multihost.cz>
* @author Vojta Beran <xmamut@email.cz>
+ * @author zbynek.krivka@seznam.cz
+ * @author Bohumir Zamecnik <bohumir.zamecnik@gmail.com>
*/
$lang['name'] = 'Průzkum používání (může chviličku trvat, než se natáhne)';
$lang['submit'] = 'Odeslat data';
diff --git a/lib/plugins/popularity/lang/fr/lang.php b/lib/plugins/popularity/lang/fr/lang.php
index ae12c6683..9ff7a7e8b 100644
--- a/lib/plugins/popularity/lang/fr/lang.php
+++ b/lib/plugins/popularity/lang/fr/lang.php
@@ -13,11 +13,12 @@
* @author Samuel Dorsaz samuel.dorsaz@novelion.net
* @author Johan Guilbaud <guilbaud.johan@gmail.com>
* @author schplurtz@laposte.net
+ * @author skimpax@gmail.com
*/
$lang['name'] = 'Enquête de popularité (peut nécessiter un certain temps pour être chargée)';
$lang['submit'] = 'Envoyer les données';
$lang['autosubmit'] = 'Envoyer les données automatiquement chaque mois';
$lang['submissionFailed'] = 'Les données ne peuvent pas être envoyées à cause des erreurs suivantes :';
-$lang['submitDirectly'] = 'Vous pouvez envoyer le données manuellement en soumettant ce formulaire.';
+$lang['submitDirectly'] = 'Vous pouvez envoyer le données manuellement en soumettant ce formulaire.';
$lang['autosubmitError'] = 'La dernière soumission automatique a échoué pour les raisons suivantes :';
-$lang['lastSent'] = 'Les données ont été envoyées';
+$lang['lastSent'] = 'Les données ont été envoyées ';
diff --git a/lib/plugins/popularity/lang/gl/lang.php b/lib/plugins/popularity/lang/gl/lang.php
index 3e7d9275b..34bd3935f 100644
--- a/lib/plugins/popularity/lang/gl/lang.php
+++ b/lib/plugins/popularity/lang/gl/lang.php
@@ -3,6 +3,12 @@
* Galician language file
*
* @author Medúlio <medulio@ciberirmandade.org>
+ * @author Oscar M. Lage <r0sk10@gmail.com>
*/
$lang['name'] = 'Resposta de Popularidade (pode demorar un tempo a cargar)';
$lang['submit'] = 'Enviar Datos';
+$lang['autosubmit'] = 'Enviar datos automáticamente unha vez por mes';
+$lang['submissionFailed'] = 'Os datos non se poden enviar debido ao seguinte erro:';
+$lang['submitDirectly'] = 'Podes enviar os datos de forma manual co seguinte formulario.';
+$lang['autosubmitError'] = 'O último envío automático fallou debido ao seguinte erro:';
+$lang['lastSent'] = 'Os datos foron enviados';
diff --git a/lib/plugins/popularity/lang/gl/submitted.txt b/lib/plugins/popularity/lang/gl/submitted.txt
new file mode 100644
index 000000000..0dec55eef
--- /dev/null
+++ b/lib/plugins/popularity/lang/gl/submitted.txt
@@ -0,0 +1,3 @@
+====== Resposta de Popularidade ======
+
+Os datos foron enviados satisfactoriamente. \ No newline at end of file
diff --git a/lib/plugins/popularity/lang/ja/lang.php b/lib/plugins/popularity/lang/ja/lang.php
index 736924bb1..f5e280db5 100644
--- a/lib/plugins/popularity/lang/ja/lang.php
+++ b/lib/plugins/popularity/lang/ja/lang.php
@@ -6,6 +6,7 @@
* @author Daniel Dupriest <kououken@gmail.com>
* @author Kazutaka Miyasaka <kazmiya@gmail.com>
* @author Yuji Takenaka <webmaster@davilin.com>
+ * @author Taisuke Shimamoto <dentostar@gmail.com>
*/
$lang['name'] = '利用状況調査(ロードに少し時間が掛かります)';
$lang['submit'] = 'データ送信';
diff --git a/lib/plugins/popularity/lang/ko/lang.php b/lib/plugins/popularity/lang/ko/lang.php
index 0f1442d53..01bc51044 100644
--- a/lib/plugins/popularity/lang/ko/lang.php
+++ b/lib/plugins/popularity/lang/ko/lang.php
@@ -7,6 +7,7 @@
* @author Song Younghwan <purluno@gmail.com>
* @author SONG Younghwan <purluno@gmail.com>
* @author Seung-Chul Yoo <dryoo@live.com>
+ * @author erial2@gmail.com
*/
$lang['name'] = '인기도 조사 (불러오는데 시간이 걸릴 수 있습니다.)';
$lang['submit'] = '자료 보내기';
diff --git a/lib/plugins/popularity/lang/ms/lang.php b/lib/plugins/popularity/lang/ms/lang.php
new file mode 100644
index 000000000..77ad2a1c1
--- /dev/null
+++ b/lib/plugins/popularity/lang/ms/lang.php
@@ -0,0 +1,6 @@
+<?php
+/**
+ * Malay language file
+ *
+ * @author Markos
+ */
diff --git a/lib/plugins/popularity/lang/nl/lang.php b/lib/plugins/popularity/lang/nl/lang.php
index 75c13013b..e5e94aab4 100644
--- a/lib/plugins/popularity/lang/nl/lang.php
+++ b/lib/plugins/popularity/lang/nl/lang.php
@@ -11,6 +11,7 @@
* @author Marijn Hofstra <hofstra.m@gmail.com>
* @author Timon Van Overveldt <timonvo@gmail.com>
* @author Jeroen
+ * @author Ricardo Guijt <ricardoguijt@gmail.com>
*/
$lang['name'] = 'Populariteitsfeedback (kan even duren om in te laden)';
$lang['submit'] = 'Verstuur';
diff --git a/lib/plugins/popularity/lang/no/intro.txt b/lib/plugins/popularity/lang/no/intro.txt
index 3e67d793c..a0f360157 100644
--- a/lib/plugins/popularity/lang/no/intro.txt
+++ b/lib/plugins/popularity/lang/no/intro.txt
@@ -1,9 +1,9 @@
====== Popularitetsfeedback ======
-Dette verktøyet samler anonyme data om din wiki og lar deg sende det tilbake til DokuWikis utviklere. Dette hjelper utviklerne å forstå hvordan DokuWiki blir brukt av dets brukere, og gjør at fremtidig beslutninger om videre utvikling kan tuftes på statistikk fra virkelig bruk.
+Dette verktøyet samler anonyme data om din wiki og lar deg sende det tilbake til DokuWikis utviklere. Dette hjelper utviklerne å forstå hvordan DokuWiki blir brukt av brukerne, og gjør at fremtidig beslutninger om videre utvikling kan baseres på statistikk fra virkelig bruk.
Du oppfordres herved til å gjenta dette skrittet fra tid til annen for å holde utviklerne informert når din wiki vokser. Ditt gjentatte datasett blir identifisert vha en anonym ID.
De data som samles inn inneholder informasjon som din DokuWiki-versjon, antallet og størrelsen på sider og filer, installerte plugins og informasjon om din installerte PHP.
-Rådata som blir sendt vises nedenfor. Vennligst bruk knappen "Send data" for å overføre informasjonen. \ No newline at end of file
+Rådata som blir sendt vises nedenfor. Bruk knappen "Send data" for å overføre informasjonen. \ No newline at end of file
diff --git a/lib/plugins/popularity/lang/no/lang.php b/lib/plugins/popularity/lang/no/lang.php
index e283fc371..df38f6e0e 100644
--- a/lib/plugins/popularity/lang/no/lang.php
+++ b/lib/plugins/popularity/lang/no/lang.php
@@ -12,11 +12,12 @@
* @author Rune Rasmussen syntaxerror.no@gmail.com
* @author Thomas Nygreen <nygreen@gmail.com>
* @author Jon Bøe <jonmagneboe@hotmail.com>
+ * @author Egil Hansen <egil@rosetta.no>
*/
$lang['name'] = 'Popularitetsfeedback (kan ta litt tid å laste)';
$lang['submit'] = 'Send data';
$lang['autosubmit'] = 'Send data automatisk en gang i måneden';
$lang['submissionFailed'] = 'Kunne ikke sende dataene på grunn av følgende feil:';
$lang['submitDirectly'] = 'Du kan sende dataene manuelt ved å sende inn dette skjemaet.';
-$lang['autosubmitError'] = 'Den siste automatiske innsendinga feilet på grunn av følgende feil:';
+$lang['autosubmitError'] = 'Den siste automatiske innsendingen feilet på grunn av følgende feil:';
$lang['lastSent'] = 'Dataene er sendt';
diff --git a/lib/plugins/popularity/lang/no/submitted.txt b/lib/plugins/popularity/lang/no/submitted.txt
index 239676a9d..ccec7674e 100644
--- a/lib/plugins/popularity/lang/no/submitted.txt
+++ b/lib/plugins/popularity/lang/no/submitted.txt
@@ -1,3 +1,3 @@
====== Tilbakemelding om popularitet ======
-Innsending av dataene var vellykka. \ No newline at end of file
+Innsending av dataene var vellykket. \ No newline at end of file
diff --git a/lib/plugins/popularity/lang/pl/lang.php b/lib/plugins/popularity/lang/pl/lang.php
index d96254fd8..64d772d54 100644
--- a/lib/plugins/popularity/lang/pl/lang.php
+++ b/lib/plugins/popularity/lang/pl/lang.php
@@ -11,6 +11,7 @@
* @author maros <dobrimaros@yahoo.pl>
* @author Grzegorz Widła <dzesdzes@gmail.com>
* @author Łukasz Chmaj <teachmeter@gmail.com>
+ * @author Begina Felicysym <begina.felicysym@wp.eu>
*/
$lang['name'] = 'Informacja o popularności (ładowanie może zająć dłuższą chwilę)';
$lang['submit'] = 'Wyślij dane';
diff --git a/lib/plugins/popularity/lang/ro/lang.php b/lib/plugins/popularity/lang/ro/lang.php
index 7f3508362..8ba119dcb 100644
--- a/lib/plugins/popularity/lang/ro/lang.php
+++ b/lib/plugins/popularity/lang/ro/lang.php
@@ -7,6 +7,8 @@
* @author Emanuel-Emeric Andraşi <em.andrasi@mandrivausers.ro>
* @author Emanuel-Emeric Andrasi <em.andrasi@mandrivausers.ro>
* @author Marius OLAR <olarmariusalex@gmail.com>
+ * @author Marius Olar <olarmariusalex@yahoo.com>
+ * @author Emanuel-Emeric Andrași <em.andrasi@mandrivausers.ro>
*/
$lang['name'] = 'Feedback de popularitate (încărcarea poate dura mai mult)';
$lang['submit'] = 'Trimite datele';
diff --git a/lib/plugins/popularity/lang/ru/lang.php b/lib/plugins/popularity/lang/ru/lang.php
index 79b3e224d..0e29c795d 100644
--- a/lib/plugins/popularity/lang/ru/lang.php
+++ b/lib/plugins/popularity/lang/ru/lang.php
@@ -13,6 +13,7 @@
* @author Aleksandr Selivanov <alexgearbox@gmail.com>
* @author Ladyko Andrey <fylh@succexy.spb.ru>
* @author Eugene <windy.wanderer@gmail.com>
+ * @author Johnny Utah <pcpa@cyberpunk.su>
*/
$lang['name'] = 'Сбор информации о популярности (для загрузки может потребоваться некоторое время)';
$lang['submit'] = 'Отправить данные';
diff --git a/lib/plugins/popularity/lang/sl/intro.txt b/lib/plugins/popularity/lang/sl/intro.txt
index ceb0e61e6..2c029db63 100644
--- a/lib/plugins/popularity/lang/sl/intro.txt
+++ b/lib/plugins/popularity/lang/sl/intro.txt
@@ -1,9 +1,9 @@
-====== Poroilo o uporabi ======
+====== Poročilo o uporabi ======
-To orodje je namenjeno zbiranju brezimnih podatkov o postavljeni Dokuwiki strani in omogoa poiljanje nekaterih podatkov neposredno razvijalcem sistema. S temi podatki lahko razvijalci razumejo naine uporabe sistema, zahteve uporabnikov in pogostost uporabe, kar s statistinimi podatki vpliva tudi na nadaljnji razvoj sistema.
+To orodje je namenjeno zbiranju brezimnih podatkov o postavljeni DokuWiki strani in omogoča pošiljanje nekaterih podatkov neposredno razvijalcem sistema. S temi podatki lahko razvijalci razumejo načine uporabe sistema, zahteve uporabnikov in pogostost uporabe, kar s statističnimi podatki vpliva tudi na nadaljnji razvoj sistema.
-Priporoeno je, da poroilo o uporabi poljete vsake toliko asa, saj lahko le tako razvijalci dobijo podatke o hitrosti rasti spletia in pogostosti uporabe. Vsi podatki so poslani oznaeni s posebno vpisno tevilko, ki omogoa brezimno sledenje.
+Priporočeno je, da poročilo o uporabi pošljete vsake toliko časa, saj lahko le tako razvijalci dobijo podatke o hitrosti rasti spletišča in pogostosti uporabe. Vsi podatki so poslani označeni s posebno vpisno številko, ki omogoča brezimno sledenje.
-Zbrani podatki vsebujejo podrobnosti o razliici uporabljenega sistema DokuWiki, tevilo in velikost wiki strani, datotekah, ki so naloene na sistem in podatke o vstavkih ter PHP namestitvi in razliici.
+Zbrani podatki vsebujejo podrobnosti o različici uporabljenega sistema DokuWiki, število in velikost wiki strani, datotekah, ki so naložene na sistem in podatke o vstavkih ter PHP namestitvi in različici.
-Surovi podatki, ki bodo poslani so prikazani spodaj. S pritiskom na gumb "Polji podatke", bodo ti poslani na strenik razvijalcev.
+Surovi podatki, ki bodo poslani so prikazani spodaj. S pritiskom na gumb "Pošlji podatke", bodo ti poslani na strežnik razvijalcev.
diff --git a/lib/plugins/popularity/lang/sl/submitted.txt b/lib/plugins/popularity/lang/sl/submitted.txt
index 988afd837..11ae052f7 100644
--- a/lib/plugins/popularity/lang/sl/submitted.txt
+++ b/lib/plugins/popularity/lang/sl/submitted.txt
@@ -1,3 +1,3 @@
-====== Poroilo o uporabi ======
+====== Poročilo o uporabi ======
-Podatki so bili uspeno poslani.
+Podatki so bili uspešno poslani.
diff --git a/lib/plugins/popularity/lang/zh/lang.php b/lib/plugins/popularity/lang/zh/lang.php
index f45aaf4ff..9c916c2a5 100644
--- a/lib/plugins/popularity/lang/zh/lang.php
+++ b/lib/plugins/popularity/lang/zh/lang.php
@@ -13,6 +13,7 @@
* @author Hiphen Lee <jacob.b.leung@gmail.com>
* @author caii, patent agent in China <zhoucaiqi@gmail.com>
* @author lainme993@gmail.com
+ * @author Shuo-Ting Jian <shoting@gmail.com>
*/
$lang['name'] = '人气反馈(载入可能需要一些时间)';
$lang['submit'] = '发送数据';
diff --git a/lib/plugins/remote.php b/lib/plugins/remote.php
new file mode 100644
index 000000000..a51f701fb
--- /dev/null
+++ b/lib/plugins/remote.php
@@ -0,0 +1,21 @@
+<?php
+
+abstract class DokuWiki_Remote_Plugin extends DokuWiki_Plugin {
+
+ private $api;
+
+ public function __construct() {
+ $this->api = new RemoteAPI();
+ }
+
+ /**
+ * @abstract
+ * @return array Information to all provided methods. {@see RemoteAPI}.
+ */
+ public abstract function _getMethods();
+
+ protected function getApi() {
+ return $this->api;
+ }
+
+}
diff --git a/lib/plugins/revert/lang/cs/lang.php b/lib/plugins/revert/lang/cs/lang.php
index 5c8899200..5414ea1e5 100644
--- a/lib/plugins/revert/lang/cs/lang.php
+++ b/lib/plugins/revert/lang/cs/lang.php
@@ -10,6 +10,8 @@
* @author Marek Sacha <sachamar@fel.cvut.cz>
* @author Lefty <lefty@multihost.cz>
* @author Vojta Beran <xmamut@email.cz>
+ * @author zbynek.krivka@seznam.cz
+ * @author Bohumir Zamecnik <bohumir.zamecnik@gmail.com>
*/
$lang['menu'] = 'Obnova zaspamovaných stránek';
$lang['filter'] = 'Hledat zaspamované stránky';
@@ -21,5 +23,5 @@ skriptu vyprší čas, budete muset obnovovat po menších blocích
stránek.';
$lang['revstop'] = 'Proces obnovy stránek byl úspěšně dokončen.';
$lang['note1'] = 'Poznámka: toto vyhledávání je citlivé na velikost písmen';
-$lang['note2'] = 'Poznámka: tato stránka bude obnovena na poslední verze, která
+$lang['note2'] = 'Poznámka: tato stránka bude obnovena na poslední verzi, která
neobsahovala dané spamové slovo <i>%s</i>.';
diff --git a/lib/plugins/revert/lang/fr/lang.php b/lib/plugins/revert/lang/fr/lang.php
index 15d4d39c3..9c5194b31 100644
--- a/lib/plugins/revert/lang/fr/lang.php
+++ b/lib/plugins/revert/lang/fr/lang.php
@@ -14,6 +14,7 @@
* @author Samuel Dorsaz samuel.dorsaz@novelion.net
* @author Johan Guilbaud <guilbaud.johan@gmail.com>
* @author schplurtz@laposte.net
+ * @author skimpax@gmail.com
*/
$lang['menu'] = 'Gestionnaire de réversions';
$lang['filter'] = 'Trouver les pages spammées ';
diff --git a/lib/plugins/revert/lang/gl/lang.php b/lib/plugins/revert/lang/gl/lang.php
index 87bce32ba..a0c5a9785 100644
--- a/lib/plugins/revert/lang/gl/lang.php
+++ b/lib/plugins/revert/lang/gl/lang.php
@@ -3,6 +3,7 @@
* Galicianlanguage file
*
* @author Medúlio <medulio@ciberirmandade.org>
+ * @author Oscar M. Lage <r0sk10@gmail.com>
*/
$lang['menu'] = 'Xestor de Reversión';
$lang['filter'] = 'Procurar páxinas con correo-lixo';
diff --git a/lib/plugins/revert/lang/ja/lang.php b/lib/plugins/revert/lang/ja/lang.php
index 0cd8c6f9b..bb5a9c150 100644
--- a/lib/plugins/revert/lang/ja/lang.php
+++ b/lib/plugins/revert/lang/ja/lang.php
@@ -5,6 +5,7 @@
* @author Ikuo Obataya <i.obataya@gmail.com>
* @author Daniel Dupriest <kououken@gmail.com>
* @author Kazutaka Miyasaka <kazmiya@gmail.com>
+ * @author Taisuke Shimamoto <dentostar@gmail.com>
*/
$lang['menu'] = '復元管理';
$lang['filter'] = 'スパムを受けたページを検索';
diff --git a/lib/plugins/revert/lang/ko/lang.php b/lib/plugins/revert/lang/ko/lang.php
index 0163d2754..da689c788 100644
--- a/lib/plugins/revert/lang/ko/lang.php
+++ b/lib/plugins/revert/lang/ko/lang.php
@@ -7,6 +7,7 @@
* @author Song Younghwan <purluno@gmail.com>
* @author SONG Younghwan <purluno@gmail.com>
* @author Seung-Chul Yoo <dryoo@live.com>
+ * @author erial2@gmail.com
*/
$lang['menu'] = '복구 관리자';
$lang['filter'] = '스팸 페이지 검색 ';
diff --git a/lib/plugins/revert/lang/lv/lang.php b/lib/plugins/revert/lang/lv/lang.php
index 0101f2698..012d6cc4c 100644
--- a/lib/plugins/revert/lang/lv/lang.php
+++ b/lib/plugins/revert/lang/lv/lang.php
@@ -8,7 +8,7 @@ $lang['menu'] = 'Piemēsloto lapu atjaunotājs';
$lang['filter'] = 'Meklēt piemēslotās lapas';
$lang['revert'] = 'Atjaunot norādītās lapas ';
$lang['reverted'] = '%s atjaunots uz %s stāvokli';
-$lang['removed'] = '% dzēsts';
+$lang['removed'] = '%s dzēsts';
$lang['revstart'] = 'Atjaunošana uzsākta. Tas var aizņemt ilgāku laiku. Ja darbība pārtrūkst noilguma dēļ, atjaunošana jāveic pa mazākām porcijām.';
$lang['revstop'] = 'Atjaunošana veiksmīgi pabeigta. ';
$lang['note1'] = 'Ievēro: Meklēšana atšķir lielos un mazos burtus.';
diff --git a/lib/plugins/revert/lang/ms/lang.php b/lib/plugins/revert/lang/ms/lang.php
new file mode 100644
index 000000000..77ad2a1c1
--- /dev/null
+++ b/lib/plugins/revert/lang/ms/lang.php
@@ -0,0 +1,6 @@
+<?php
+/**
+ * Malay language file
+ *
+ * @author Markos
+ */
diff --git a/lib/plugins/revert/lang/nl/lang.php b/lib/plugins/revert/lang/nl/lang.php
index 954bf1068..32e14c2c4 100644
--- a/lib/plugins/revert/lang/nl/lang.php
+++ b/lib/plugins/revert/lang/nl/lang.php
@@ -12,6 +12,7 @@
* @author Marijn Hofstra <hofstra.m@gmail.com>
* @author Timon Van Overveldt <timonvo@gmail.com>
* @author Jeroen
+ * @author Ricardo Guijt <ricardoguijt@gmail.com>
*/
$lang['menu'] = 'Herstelmanager';
$lang['filter'] = 'Zoek naar bekladde pagina\'s';
diff --git a/lib/plugins/revert/lang/no/lang.php b/lib/plugins/revert/lang/no/lang.php
index 2a6a2abd3..299b12ea7 100644
--- a/lib/plugins/revert/lang/no/lang.php
+++ b/lib/plugins/revert/lang/no/lang.php
@@ -14,6 +14,7 @@
* @author Erik Bjørn Pedersen <erik.pedersen@shaw.ca>
* @author Rune Rasmussen syntaxerror.no@gmail.com
* @author Jon Bøe <jonmagneboe@hotmail.com>
+ * @author Egil Hansen <egil@rosetta.no>
*/
$lang['menu'] = 'Tilbakestillingsbehandler';
$lang['filter'] = 'Søk etter søppelmeldinger';
diff --git a/lib/plugins/revert/lang/pl/lang.php b/lib/plugins/revert/lang/pl/lang.php
index f36dc591a..30ab60fda 100644
--- a/lib/plugins/revert/lang/pl/lang.php
+++ b/lib/plugins/revert/lang/pl/lang.php
@@ -10,6 +10,7 @@
* @author maros <dobrimaros@yahoo.pl>
* @author Grzegorz Widła <dzesdzes@gmail.com>
* @author Łukasz Chmaj <teachmeter@gmail.com>
+ * @author Begina Felicysym <begina.felicysym@wp.eu>
*/
$lang['menu'] = 'Menadżer przywracania';
$lang['filter'] = 'Wyszukaj uszkodzone strony';
diff --git a/lib/plugins/revert/lang/pt-br/lang.php b/lib/plugins/revert/lang/pt-br/lang.php
index 7bdde6675..c4a2f742b 100644
--- a/lib/plugins/revert/lang/pt-br/lang.php
+++ b/lib/plugins/revert/lang/pt-br/lang.php
@@ -21,7 +21,7 @@ $lang['menu'] = 'Gerenciador de reversões';
$lang['filter'] = 'Procura por páginas com spam';
$lang['revert'] = 'Reverte as páginas selecionadas';
$lang['reverted'] = '%s revertida para a revisão %s';
-$lang['removed'] = '% removida';
+$lang['removed'] = '%s removida';
$lang['revstart'] = 'O processo de reversão foi iniciado. Isso pode levar muito tempo. Se o tempo de execução do script expirar antes dele encerrar, você deverá tentar novamente usando blocos menores.';
$lang['revstop'] = 'O processo de reversão terminou com sucesso.';
$lang['note1'] = 'Nota: esta busca diferencia maiúsculas/minúsculas';
diff --git a/lib/plugins/revert/lang/ro/lang.php b/lib/plugins/revert/lang/ro/lang.php
index 7397a1d74..5ea802575 100644
--- a/lib/plugins/revert/lang/ro/lang.php
+++ b/lib/plugins/revert/lang/ro/lang.php
@@ -9,6 +9,8 @@
* @author Emanuel-Emeric Andraşi <em.andrasi@mandrivausers.ro>
* @author Emanuel-Emeric Andrasi <em.andrasi@mandrivausers.ro>
* @author Marius OLAR <olarmariusalex@gmail.com>
+ * @author Marius Olar <olarmariusalex@yahoo.com>
+ * @author Emanuel-Emeric Andrași <em.andrasi@mandrivausers.ro>
*/
$lang['menu'] = 'Manager Reveniri';
$lang['filter'] = 'Caută pagini cu posibil spam';
diff --git a/lib/plugins/revert/lang/ru/lang.php b/lib/plugins/revert/lang/ru/lang.php
index 9624d8fd6..4abe37e6a 100644
--- a/lib/plugins/revert/lang/ru/lang.php
+++ b/lib/plugins/revert/lang/ru/lang.php
@@ -14,6 +14,7 @@
* @author Aleksandr Selivanov <alexgearbox@gmail.com>
* @author Ladyko Andrey <fylh@succexy.spb.ru>
* @author Eugene <windy.wanderer@gmail.com>
+ * @author Johnny Utah <pcpa@cyberpunk.su>
*/
$lang['menu'] = 'Менеджер откаток';
$lang['filter'] = 'Поиск спам-страниц';
diff --git a/lib/plugins/revert/lang/sl/intro.txt b/lib/plugins/revert/lang/sl/intro.txt
index c63f281ed..4e2cabf96 100644
--- a/lib/plugins/revert/lang/sl/intro.txt
+++ b/lib/plugins/revert/lang/sl/intro.txt
@@ -1,3 +1,3 @@
====== Povrnitev okvarjene vsebine ======
-Na tej strani je mogoe povrniti vsebino wiki strani na izvorne vrednosti po napadu na stran in vpisu neelenih vsebin. Za iskanje strani z neeleno vsebino, uporabite iskalnik z ustreznim nizom (npr. naslov URL), potem pa potrdite, da so najdene strani res z neeleno vsebino in nato povrnite stanje na zadnjo pravo razliico.
+Na tej strani je mogoče povrniti vsebino wiki strani na izvorne vrednosti po napadu na stran in vpisu neželenih vsebin. Za iskanje strani z neželeno vsebino, uporabite iskalnik z ustreznim nizom (npr. naslov URL), potem pa potrdite, da so najdene strani res z neželeno vsebino in nato povrnite stanje na zadnjo pravo različico.
diff --git a/lib/plugins/revert/lang/zh/lang.php b/lib/plugins/revert/lang/zh/lang.php
index c3d1639ff..d4d010f29 100644
--- a/lib/plugins/revert/lang/zh/lang.php
+++ b/lib/plugins/revert/lang/zh/lang.php
@@ -14,6 +14,7 @@
* @author Hiphen Lee <jacob.b.leung@gmail.com>
* @author caii, patent agent in China <zhoucaiqi@gmail.com>
* @author lainme993@gmail.com
+ * @author Shuo-Ting Jian <shoting@gmail.com>
*/
$lang['menu'] = '还原管理器';
$lang['filter'] = '搜索包含垃圾信息的页面';
diff --git a/lib/plugins/usermanager/admin.php b/lib/plugins/usermanager/admin.php
index 8e90be093..8b646b426 100644
--- a/lib/plugins/usermanager/admin.php
+++ b/lib/plugins/usermanager/admin.php
@@ -149,6 +149,7 @@ class admin_plugin_usermanager extends DokuWiki_Admin_Plugin {
}
ptln("<form action=\"".wl($ID)."\" method=\"post\">");
formSecurityToken();
+ ptln(" <div class=\"table\">");
ptln(" <table class=\"inline\">");
ptln(" <thead>");
ptln(" <tr>");
@@ -206,6 +207,7 @@ class admin_plugin_usermanager extends DokuWiki_Admin_Plugin {
ptln(" </td></tr>");
ptln(" </tbody>");
ptln(" </table>");
+ ptln(" </div>");
ptln("</form>");
ptln("</div>");
@@ -256,6 +258,7 @@ class admin_plugin_usermanager extends DokuWiki_Admin_Plugin {
ptln("<form action=\"".wl($ID)."\" method=\"post\">",$indent);
formSecurityToken();
+ ptln(" <div class=\"table\">",$indent);
ptln(" <table class=\"inline\">",$indent);
ptln(" <thead>",$indent);
ptln(" <tr><th>".$this->lang["field"]."</th><th>".$this->lang["value"]."</th></tr>",$indent);
@@ -295,6 +298,7 @@ class admin_plugin_usermanager extends DokuWiki_Admin_Plugin {
ptln(" </tr>",$indent);
ptln(" </tbody>",$indent);
ptln(" </table>",$indent);
+ ptln(" </div>",$indent);
foreach ($notes as $note)
ptln("<div class=\"fn\">".$note."</div>",$indent);
diff --git a/lib/plugins/usermanager/lang/cs/lang.php b/lib/plugins/usermanager/lang/cs/lang.php
index c805011d7..8351c190b 100644
--- a/lib/plugins/usermanager/lang/cs/lang.php
+++ b/lib/plugins/usermanager/lang/cs/lang.php
@@ -9,6 +9,8 @@
* @author Marek Sacha <sachamar@fel.cvut.cz>
* @author Lefty <lefty@multihost.cz>
* @author Vojta Beran <xmamut@email.cz>
+ * @author zbynek.krivka@seznam.cz
+ * @author Bohumir Zamecnik <bohumir.zamecnik@gmail.com>
*/
$lang['menu'] = 'Správa uživatelů';
$lang['noauth'] = '(autentizace uživatelů není k dispozici)';
diff --git a/lib/plugins/usermanager/lang/es/lang.php b/lib/plugins/usermanager/lang/es/lang.php
index 804df2a4b..c12b77b3d 100644
--- a/lib/plugins/usermanager/lang/es/lang.php
+++ b/lib/plugins/usermanager/lang/es/lang.php
@@ -49,7 +49,7 @@ $lang['delete_ok'] = '%d usuarios eliminados';
$lang['delete_fail'] = '%d no se pudieron eliminar.';
$lang['update_ok'] = 'Los datos del usuario se actualizaron exitosamente ';
$lang['update_fail'] = 'Los datos del usuario no se actualizaron';
-$lang['update_exists'] = 'El cambio de nombre de usuario falló, el nombre especificado ($s) ya está en uso (los otros cambios se aplicaron).';
+$lang['update_exists'] = 'El cambio de nombre de usuario falló, el nombre especificado (%s) ya está en uso (los otros cambios se aplicaron).';
$lang['start'] = 'primera';
$lang['prev'] = 'anterior';
$lang['next'] = 'siguiente';
diff --git a/lib/plugins/usermanager/lang/fr/lang.php b/lib/plugins/usermanager/lang/fr/lang.php
index 875b6d1a6..948262a8f 100644
--- a/lib/plugins/usermanager/lang/fr/lang.php
+++ b/lib/plugins/usermanager/lang/fr/lang.php
@@ -15,6 +15,7 @@
* @author Samuel Dorsaz samuel.dorsaz@novelion.net
* @author Johan Guilbaud <guilbaud.johan@gmail.com>
* @author schplurtz@laposte.net
+ * @author skimpax@gmail.com
*/
$lang['menu'] = 'Gestion des utilisateurs';
$lang['noauth'] = '(authentification utilisateur non disponible)';
diff --git a/lib/plugins/usermanager/lang/gl/lang.php b/lib/plugins/usermanager/lang/gl/lang.php
index 0a01ef750..c9c633b39 100644
--- a/lib/plugins/usermanager/lang/gl/lang.php
+++ b/lib/plugins/usermanager/lang/gl/lang.php
@@ -3,6 +3,7 @@
* Galicianlanguage file
*
* @author Medúlio <medulio@ciberirmandade.org>
+ * @author Oscar M. Lage <r0sk10@gmail.com>
*/
$lang['menu'] = 'Xestor de Usuarios';
$lang['noauth'] = '(autenticación de usuarios non dispoñible)';
diff --git a/lib/plugins/usermanager/lang/ja/lang.php b/lib/plugins/usermanager/lang/ja/lang.php
index 321bbafe8..b5fd556dc 100644
--- a/lib/plugins/usermanager/lang/ja/lang.php
+++ b/lib/plugins/usermanager/lang/ja/lang.php
@@ -6,6 +6,7 @@
* @author Ikuo Obataya <i.obataya@gmail.com>
* @author Daniel Dupriest <kououken@gmail.com>
* @author Kazutaka Miyasaka <kazmiya@gmail.com>
+ * @author Taisuke Shimamoto <dentostar@gmail.com>
*/
$lang['menu'] = 'ユーザー管理';
$lang['noauth'] = '(ユーザー認証が無効です)';
diff --git a/lib/plugins/usermanager/lang/ko/lang.php b/lib/plugins/usermanager/lang/ko/lang.php
index f2322414a..111267e5f 100644
--- a/lib/plugins/usermanager/lang/ko/lang.php
+++ b/lib/plugins/usermanager/lang/ko/lang.php
@@ -7,6 +7,7 @@
* @author Song Younghwan <purluno@gmail.com>
* @author SONG Younghwan <purluno@gmail.com>
* @author Seung-Chul Yoo <dryoo@live.com>
+ * @author erial2@gmail.com
*/
$lang['menu'] = '사용자 관리자';
$lang['noauth'] = '(사용자 인증이 불가능합니다.)';
diff --git a/lib/plugins/usermanager/lang/ms/lang.php b/lib/plugins/usermanager/lang/ms/lang.php
new file mode 100644
index 000000000..77ad2a1c1
--- /dev/null
+++ b/lib/plugins/usermanager/lang/ms/lang.php
@@ -0,0 +1,6 @@
+<?php
+/**
+ * Malay language file
+ *
+ * @author Markos
+ */
diff --git a/lib/plugins/usermanager/lang/nl/lang.php b/lib/plugins/usermanager/lang/nl/lang.php
index cac793386..b00ab22e0 100644
--- a/lib/plugins/usermanager/lang/nl/lang.php
+++ b/lib/plugins/usermanager/lang/nl/lang.php
@@ -12,6 +12,7 @@
* @author Marijn Hofstra <hofstra.m@gmail.com>
* @author Timon Van Overveldt <timonvo@gmail.com>
* @author Jeroen
+ * @author Ricardo Guijt <ricardoguijt@gmail.com>
*/
$lang['menu'] = 'Gebruikersmanager';
$lang['noauth'] = '(gebruikersauthenticatie niet beschikbaar)';
diff --git a/lib/plugins/usermanager/lang/no/lang.php b/lib/plugins/usermanager/lang/no/lang.php
index 668863ec2..7124e4811 100644
--- a/lib/plugins/usermanager/lang/no/lang.php
+++ b/lib/plugins/usermanager/lang/no/lang.php
@@ -14,6 +14,7 @@
* @author Erik Bjørn Pedersen <erik.pedersen@shaw.ca>
* @author Rune Rasmussen syntaxerror.no@gmail.com
* @author Jon Bøe <jonmagneboe@hotmail.com>
+ * @author Egil Hansen <egil@rosetta.no>
*/
$lang['menu'] = 'Behandle brukere';
$lang['noauth'] = '(autentisering av brukere ikke tilgjengelig)';
@@ -28,7 +29,7 @@ $lang['field'] = 'Felt';
$lang['value'] = 'Verdi';
$lang['add'] = 'Legg til';
$lang['delete'] = 'Slett';
-$lang['delete_selected'] = 'Slett utvalgte';
+$lang['delete_selected'] = 'Slett valgte';
$lang['edit'] = 'Rediger';
$lang['edit_prompt'] = 'Rediger denne brukeren';
$lang['modify'] = 'Lagre endringer';
diff --git a/lib/plugins/usermanager/lang/pl/lang.php b/lib/plugins/usermanager/lang/pl/lang.php
index 7c79c5d1f..5bbf84370 100644
--- a/lib/plugins/usermanager/lang/pl/lang.php
+++ b/lib/plugins/usermanager/lang/pl/lang.php
@@ -11,6 +11,7 @@
* @author maros <dobrimaros@yahoo.pl>
* @author Grzegorz Widła <dzesdzes@gmail.com>
* @author Łukasz Chmaj <teachmeter@gmail.com>
+ * @author Begina Felicysym <begina.felicysym@wp.eu>
*/
$lang['menu'] = 'Menadżer użytkowników';
$lang['noauth'] = '(uwierzytelnienie użytkownika niemożliwe)';
diff --git a/lib/plugins/usermanager/lang/ro/lang.php b/lib/plugins/usermanager/lang/ro/lang.php
index 4c0afc896..1b33cc4f8 100644
--- a/lib/plugins/usermanager/lang/ro/lang.php
+++ b/lib/plugins/usermanager/lang/ro/lang.php
@@ -9,6 +9,8 @@
* @author Emanuel-Emeric Andraşi <em.andrasi@mandrivausers.ro>
* @author Emanuel-Emeric Andrasi <em.andrasi@mandrivausers.ro>
* @author Marius OLAR <olarmariusalex@gmail.com>
+ * @author Marius Olar <olarmariusalex@yahoo.com>
+ * @author Emanuel-Emeric Andrași <em.andrasi@mandrivausers.ro>
*/
$lang['menu'] = 'Manager Utilizatori';
$lang['noauth'] = '(autentificarea utilizatorilor nu este disponibilă)';
diff --git a/lib/plugins/usermanager/lang/ru/lang.php b/lib/plugins/usermanager/lang/ru/lang.php
index 456ba5b29..eb9f26be6 100644
--- a/lib/plugins/usermanager/lang/ru/lang.php
+++ b/lib/plugins/usermanager/lang/ru/lang.php
@@ -16,6 +16,7 @@
* @author Aleksandr Selivanov <alexgearbox@gmail.com>
* @author Ladyko Andrey <fylh@succexy.spb.ru>
* @author Eugene <windy.wanderer@gmail.com>
+ * @author Johnny Utah <pcpa@cyberpunk.su>
*/
$lang['menu'] = 'Управление пользователями';
$lang['noauth'] = '(авторизация пользователей недоступна)';
diff --git a/lib/plugins/usermanager/lang/sl/delete.txt b/lib/plugins/usermanager/lang/sl/delete.txt
index 7d9de54e6..1fd4fffe1 100644
--- a/lib/plugins/usermanager/lang/sl/delete.txt
+++ b/lib/plugins/usermanager/lang/sl/delete.txt
@@ -1 +1 @@
-===== Izbrisanje uporabnika ===== \ No newline at end of file
+===== Izbris uporabnika ===== \ No newline at end of file
diff --git a/lib/plugins/usermanager/lang/zh/lang.php b/lib/plugins/usermanager/lang/zh/lang.php
index c1cb0c91a..e7a228229 100644
--- a/lib/plugins/usermanager/lang/zh/lang.php
+++ b/lib/plugins/usermanager/lang/zh/lang.php
@@ -13,6 +13,7 @@
* @author Hiphen Lee <jacob.b.leung@gmail.com>
* @author caii, patent agent in China <zhoucaiqi@gmail.com>
* @author lainme993@gmail.com
+ * @author Shuo-Ting Jian <shoting@gmail.com>
*/
$lang['menu'] = '用户管理器';
$lang['noauth'] = '(用户认证不可用)';
diff --git a/lib/scripts/behaviour.js b/lib/scripts/behaviour.js
index 20b408322..cffdde042 100644
--- a/lib/scripts/behaviour.js
+++ b/lib/scripts/behaviour.js
@@ -16,7 +16,7 @@ var dw_behaviour = {
dw_behaviour.subscription();
dw_behaviour.revisionBoxHandler();
- jQuery('#page__revisions input[type=checkbox]').click(
+ jQuery('#page__revisions input[type=checkbox]').live('click',
dw_behaviour.revisionBoxHandler
);
},
diff --git a/lib/scripts/compatibility.js b/lib/scripts/compatibility.js
index ea52153c5..385e45854 100644
--- a/lib/scripts/compatibility.js
+++ b/lib/scripts/compatibility.js
@@ -49,7 +49,7 @@ function DEPRECATED_WRAP(func, context) {
* @link http://prototype.conio.net/
*/
function $() {
- DEPRECATED('Please use the JQuery() function instead.');
+ DEPRECATED('Please use the jQuery() function instead.');
var elements = new Array();
diff --git a/lib/scripts/editor.js b/lib/scripts/editor.js
index 2009ce6af..042e34608 100644
--- a/lib/scripts/editor.js
+++ b/lib/scripts/editor.js
@@ -61,9 +61,9 @@ var dw_editor = {
jQuery.each([
['larger', function(){dw_editor.sizeCtl(editor,100);}],
['smaller', function(){dw_editor.sizeCtl(editor,-100);}],
- ['wrap', function(){dw_editor.toggleWrap(editor);}],
+ ['wrap', function(){dw_editor.toggleWrap(editor);}]
], function (_, img) {
- jQuery(document.createElement('img'))
+ jQuery(document.createElement('IMG'))
.attr('src', DOKU_BASE+'lib/images/' + img[0] + '.gif')
.click(img[1])
.appendTo($ctl);
@@ -130,7 +130,7 @@ var dw_editor = {
* @param event e - the key press event object
*/
keyHandler: function(e){
- if([8, 13, 32].indexOf(e.keyCode) === -1) {
+ if(jQuery.inArray(e.keyCode,[8, 13, 32]) === -1) {
return;
}
var selection = getSelection(this);
diff --git a/lib/scripts/fileuploaderextended.js b/lib/scripts/fileuploaderextended.js
index f92bdbc49..4abd63bef 100644
--- a/lib/scripts/fileuploaderextended.js
+++ b/lib/scripts/fileuploaderextended.js
@@ -55,9 +55,11 @@ qq.extend(qq.FileUploader.prototype, {
qq.setText(fileElement, fileName);
this._find(item, 'size').style.display = 'none';
+ // name suggestion (simplified cleanID)
var nameElement = this._find(item, 'nameInput');
fileName = fileName.toLowerCase();
- fileName = fileName.replace(/([^a-z0-9_\.\-]+)/g, '_');
+ fileName = fileName.replace(/([ !"#$%&\'()+,\/;<=>?@[\]^`{|}~:]+)/g, '_');
+ fileName = fileName.replace(/^_+/,'');
nameElement.value = fileName;
nameElement.id = 'mediamanager__upload_item'+id;
diff --git a/lib/scripts/linkwiz.js b/lib/scripts/linkwiz.js
index cc4c19e0d..5075a0ab8 100644
--- a/lib/scripts/linkwiz.js
+++ b/lib/scripts/linkwiz.js
@@ -35,14 +35,13 @@ var dw_linkwiz = {
)
.parent()
.attr('id','link__wiz')
- .addClass('a11y')
.css({
'position': 'absolute',
'top': (pos.top+20)+'px',
'left': (pos.left+80)+'px'
})
- .show()
- .appendTo('div.dokuwiki');
+ .hide()
+ .appendTo('.dokuwiki:first');
dw_linkwiz.textArea = $editor[0];
dw_linkwiz.result = jQuery('#link__wiz_result')[0];
@@ -186,7 +185,7 @@ var dw_linkwiz = {
*/
resultClick: function(a){
dw_linkwiz.$entry.val(a.title);
- if(a.title == '' || a.title.substr(-1) == ':'){
+ if(a.title == '' || a.title.substr(a.title.length-1) == ':'){
dw_linkwiz.autocomplete_exec();
}else{
if (jQuery(a.nextSibling).is('span')) {
@@ -283,7 +282,7 @@ var dw_linkwiz = {
*/
show: function(){
dw_linkwiz.selection = getSelection(dw_linkwiz.textArea);
- dw_linkwiz.$wiz.removeClass('a11y');
+ dw_linkwiz.$wiz.show();
dw_linkwiz.$entry.focus();
dw_linkwiz.autocomplete();
},
@@ -292,7 +291,7 @@ var dw_linkwiz = {
* Hide the link wizard
*/
hide: function(){
- dw_linkwiz.$wiz.addClass('a11y');
+ dw_linkwiz.$wiz.hide();
dw_linkwiz.textArea.focus();
},
@@ -300,7 +299,7 @@ var dw_linkwiz = {
* Toggle the link wizard
*/
toggle: function(){
- if(dw_linkwiz.$wiz.hasClass('a11y')){
+ if(dw_linkwiz.$wiz.css('display') == 'none'){
dw_linkwiz.show();
}else{
dw_linkwiz.hide();
diff --git a/lib/scripts/media.js b/lib/scripts/media.js
index 7f5514f56..841baa93f 100644
--- a/lib/scripts/media.js
+++ b/lib/scripts/media.js
@@ -135,7 +135,7 @@ var dw_mediamanager = {
});
$sortBy.children('input').change(function (event) {
dw_mediamanager.set_fileview_sort();
- dw_mediamanager.list.call(this, event);
+ dw_mediamanager.list.call(jQuery('#dw__mediasearch')[0] || this, event);
});
},
@@ -253,8 +253,10 @@ var dw_mediamanager = {
}
}
}
- alignleft = dw_mediamanager.align === '2' ? '' : ' ';
- alignright = dw_mediamanager.align === '4' ? '' : ' ';
+ if (dw_mediamanager.align !== '1') {
+ alignleft = dw_mediamanager.align === '2' ? '' : ' ';
+ alignright = dw_mediamanager.align === '4' ? '' : ' ';
+ }
}
}
edid = String.prototype.match.call(document.location, /&edid=([^&]+)/);
@@ -371,6 +373,10 @@ var dw_mediamanager = {
if (typeof new_val === 'undefined') {
new_val = jQuery('form.options li.' + opt[1] + ' input')
.filter(':checked').val();
+ // if new_val is still undefined (because form.options is not in active tab), set to most spacious option
+ if (typeof new_val === 'undefined') {
+ new_val = 'thumbs';
+ }
}
if (new_val !== dw_mediamanager.view_opts[opt[0]]) {
diff --git a/lib/scripts/page.js b/lib/scripts/page.js
index e4033b76d..5da4a9cc0 100644
--- a/lib/scripts/page.js
+++ b/lib/scripts/page.js
@@ -43,7 +43,7 @@ dw_page = {
*
* @param target - the DOM element at which the popup should be aligned at
* @param popup_id - the ID of the (new) DOM popup
- * @return the Popup JQuery object
+ * @return the Popup jQuery object
*/
insituPopup: function(target, popup_id) {
// get or create the popup div
@@ -55,7 +55,7 @@ dw_page = {
.attr('id', popup_id)
.addClass('insitu-footnote JSpopup')
.mouseleave(function () {jQuery(this).hide();});
- jQuery('div.dokuwiki:first').append($fndiv);
+ jQuery('.dokuwiki:first').append($fndiv);
}
// position() does not support hidden elements
diff --git a/lib/scripts/qsearch.js b/lib/scripts/qsearch.js
index c7128b9e3..a309f9e29 100644
--- a/lib/scripts/qsearch.js
+++ b/lib/scripts/qsearch.js
@@ -18,8 +18,8 @@ var dw_qsearch = {
*
* Attaches the event handlers
*
- * @param input element (JQuery selector/DOM obj)
- * @param output element (JQuery selector/DOM obj)
+ * @param input element (jQuery selector/DOM obj)
+ * @param output element (jQuery selector/DOM obj)
*/
init: function (input, output) {
var do_qsearch;
diff --git a/lib/tpl/default/_linkwiz.css b/lib/tpl/default/_linkwiz.css
index fd40a0019..ca8812867 100644
--- a/lib/tpl/default/_linkwiz.css
+++ b/lib/tpl/default/_linkwiz.css
@@ -1,27 +1,4 @@
#link__wiz {
- position: absolute;
- display: block;
- z-index: 99;
- width: 300px;
- height: 250px;
- padding: 0;
- margin: 0;
- overflow: hidden;
- border: 1px solid __border__;
- background-color: __background_neu__;
- text-align: center;
-}
-
-#link__wiz_header {
- background-color: __background_alt__;
- height: 16px;
- margin-bottom: 5px;
- cursor: move;
-}
-
-#link__wiz_close {
- cursor: pointer;
- margin: 0;
}
#link__wiz_result {
@@ -61,9 +38,3 @@
display: block;
color: __text_neu__;
}
-
-/*FIXME maybe move to a more general style sheet*/
-.ondrag {
- cursor: move;
- opacity: 0.8;
-}
diff --git a/lib/tpl/default/_mediamanager.css b/lib/tpl/default/_mediamanager.css
index 383a1597c..68fa2e97f 100644
--- a/lib/tpl/default/_mediamanager.css
+++ b/lib/tpl/default/_mediamanager.css
@@ -59,6 +59,7 @@
background-color: __background_alt__;
}
+
/*____________ Namespaces tree ____________*/
#mediamanager__page .namespaces h2 {
@@ -406,10 +407,12 @@
}
#mediamanager__diff .imageDiff .image1,
#mediamanager__diff .imageDiff .image2 {
+ width: 97%;
+}
+#mediamanager__diff .imageDiff .image2 {
position: absolute;
top: 0;
left: 0;
- width: 97%;
}
#mediamanager__diff .imageDiff.opacity .image2 {
diff --git a/lib/tpl/dokuwiki/css/_admin.css b/lib/tpl/dokuwiki/css/_admin.css
new file mode 100644
index 000000000..e4664367c
--- /dev/null
+++ b/lib/tpl/dokuwiki/css/_admin.css
@@ -0,0 +1,47 @@
+/**
+ * This file provides styles for the Administration overview
+ * (?do=admin).
+ */
+
+.dokuwiki ul.admin_tasks {
+ float: left;
+ width: 40%;
+ list-style-type: none;
+ font-size: 1.125em;
+}
+
+.dokuwiki ul.admin_tasks li {
+ padding-left: 35px;
+ margin: 0 0 1em 0;
+ font-weight: bold;
+ list-style-type: none;
+ background: transparent none no-repeat scroll 0 0;
+ color: inherit;
+}
+
+.dokuwiki ul.admin_tasks li.admin_acl {
+ background-image: url(../../images/admin/acl.png);
+}
+.dokuwiki ul.admin_tasks li.admin_usermanager {
+ background-image: url(../../images/admin/usermanager.png);
+}
+.dokuwiki ul.admin_tasks li.admin_plugin {
+ background-image: url(../../images/admin/plugin.png);
+}
+.dokuwiki ul.admin_tasks li.admin_config {
+ background-image: url(../../images/admin/config.png);
+}
+.dokuwiki ul.admin_tasks li.admin_revert {
+ background-image: url(../../images/admin/revert.png);
+}
+.dokuwiki ul.admin_tasks li.admin_popularity {
+ background-image: url(../../images/admin/popularity.png);
+}
+
+/* DokuWiki version below */
+.dokuwiki #admin__version {
+ clear: left;
+ float: right;
+ color: __text_neu__;
+ background-color: inherit;
+}
diff --git a/lib/tpl/dokuwiki/css/_diff.css b/lib/tpl/dokuwiki/css/_diff.css
new file mode 100644
index 000000000..62f831213
--- /dev/null
+++ b/lib/tpl/dokuwiki/css/_diff.css
@@ -0,0 +1,65 @@
+/**
+ * This file provides styles for the diff view, which shows you
+ * differences between two versions of a page (?do=diff).
+ */
+
+.dokuwiki table.diff {
+ width: 100%;
+ border-width: 0;
+}
+.dokuwiki table.diff th,
+.dokuwiki table.diff td {
+ vertical-align: top;
+ padding: 0;
+ border-width: 0;
+ /* no style.ini colours because deleted and added lines have a fixed background colour */
+ background-color: #fff;
+ color: #333;
+}
+
+/* table header */
+.dokuwiki table.diff th {
+ border-bottom: 1px solid __border__;
+ font-size: 110%;
+ width: 50%;
+ font-weight: normal;
+}
+.dokuwiki table.diff th a {
+ font-weight: bold;
+}
+.dokuwiki table.diff th span.user {
+ font-size: .9em;
+}
+.dokuwiki table.diff th span.sum {
+ font-size: .9em;
+ font-weight: bold;
+}
+.dokuwiki table.diff th.minor {
+ color: #999;
+}
+
+/* table body */
+.dokuwiki table.diff td {
+ font-family: Consolas, "Andale Mono WT", "Andale Mono", "Bitstream Vera Sans Mono", "Nimbus Mono L", Monaco, "Courier New", monospace;
+}
+.dokuwiki table.diff td.diff-blockheader {
+ font-weight: bold;
+}
+.dokuwiki table.diff .diff-addedline {
+ background-color: #cfc;
+ color: inherit;
+}
+.dokuwiki table.diff .diff-deletedline {
+ background-color: #fdd;
+ color: inherit;
+}
+.dokuwiki table.diff td.diff-context {
+ background-color: #eee;
+ color: inherit;
+}
+.dokuwiki table.diff td.diff-addedline strong,
+.dokuwiki table.diff td.diff-deletedline strong {
+ color: #f00;
+ background-color: inherit;
+ font-weight: bold;
+}
diff --git a/lib/tpl/dokuwiki/css/_edit.css b/lib/tpl/dokuwiki/css/_edit.css
new file mode 100644
index 000000000..5a3952c90
--- /dev/null
+++ b/lib/tpl/dokuwiki/css/_edit.css
@@ -0,0 +1,128 @@
+/**
+ * This file provides styles for the edit view (?do=edit), preview
+ * and section edit buttons.
+ */
+
+/* edit view
+********************************************************************/
+
+/*____________ toolbar ____________*/
+
+.dokuwiki div.toolbar {
+ margin-bottom: .5em;
+ overflow: hidden;
+}
+.dokuwiki div.toolbar #draft__status {
+ float: right;
+ color: __text_alt__;
+ background-color: inherit;
+}
+.dokuwiki div.toolbar #tool__bar {
+ float: left;
+}
+
+/* buttons inside of toolbar */
+.dokuwiki div.toolbar button.toolbutton {
+}
+/* picker popups (outside of .dokuwiki) */
+div.picker {
+ width: 300px;
+ border: 1px solid __border__;
+ background-color: __background_alt__;
+ color: inherit;
+}
+/* picker for headlines */
+div.picker.pk_hl {
+ width: auto;
+}
+
+/* buttons inside of picker */
+div.picker button.pickerbutton,
+div.picker button.toolbutton {
+ padding: .1em .35em;
+ border-width: 0;
+}
+
+/*____________ edit textarea ____________*/
+
+.dokuwiki textarea.edit {
+ /* should just be "width: 100%", but IE8 doesn't like it, see FS#1910 + FS#1667 */
+ width: 700px;
+ min-width: 100%;
+ max-width: 100%;
+ margin-bottom: .5em;
+}
+
+/*____________ below the textarea ____________*/
+
+.dokuwiki #wiki__editbar {
+ overflow: hidden;
+ margin-bottom: .5em;
+}
+
+/* size and wrap controls */
+.dokuwiki #wiki__editbar #size__ctl {
+ float: right;
+}
+.dokuwiki #wiki__editbar #size__ctl img {
+ cursor: pointer;
+}
+
+/* edit buttons */
+.dokuwiki #wiki__editbar .editButtons {
+ display: inline;
+ margin-right: 1em;
+}
+.dokuwiki #wiki__editbar .editButtons input {
+}
+
+/* summary input and minor changes checkbox */
+.dokuwiki #wiki__editbar .summary {
+ display: inline;
+}
+.dokuwiki #wiki__editbar .summary label {
+ vertical-align: middle;
+ white-space: nowrap;
+}
+.dokuwiki #wiki__editbar .summary label span {
+ vertical-align: middle;
+}
+.dokuwiki #wiki__editbar .summary input {
+}
+/* change background colour if summary is missing */
+.dokuwiki #wiki__editbar .summary input.missing {
+ color: __text__;
+ background-color: #ffcccc;
+}
+
+/* preview
+********************************************************************/
+
+.dokuwiki div.preview {
+ border: dotted __border__;
+ border-width: .2em 0;
+ padding: 1.4em 0;
+ margin-bottom: 1.4em;
+}
+
+/* section edit buttons
+********************************************************************/
+
+.dokuwiki .secedit {
+ float: right;
+ margin-top: -1.4em;
+}
+.dokuwiki .secedit input.button {
+ font-size: 75%;
+}
+
+/* generic style for section highlighting (including headings) */
+.dokuwiki .section_highlight {
+}
+/* style for section highlighting (only sections below headings) */
+.dokuwiki div.section_highlight {
+ margin: -3em -1em -.01em -1em; /* negative side margin = side padding + side border */
+ padding: 3em .5em .01em .5em;
+ border: solid __background_alt__;
+ border-width: 0 .5em;
+}
diff --git a/lib/tpl/dokuwiki/css/_fileuploader.css b/lib/tpl/dokuwiki/css/_fileuploader.css
new file mode 100644
index 000000000..42004de28
--- /dev/null
+++ b/lib/tpl/dokuwiki/css/_fileuploader.css
@@ -0,0 +1,112 @@
+/**
+ * This file provides the styles for the file uploader
+ * used in the media manager (both fullscreen and popup).
+ */
+
+.qq-uploader {
+ position: relative;
+ width: 100%;
+}
+
+.qq-uploader .error {
+ color: #f00;
+ background-color: #fff;
+}
+
+/* select file button */
+
+.qq-upload-button {
+ display: inline-block;
+ text-decoration: none;
+ font-size: 100%;
+ cursor: pointer;
+ margin: 1px 1px 5px;
+}
+
+* html .qq-upload-button,
+*+html .qq-upload-button {
+ display: inline;
+}
+
+.qq-upload-button-focus {
+ outline: 1px dotted;
+}
+
+/* drop area */
+
+.qq-upload-drop-area {
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+ min-height: 70px;
+ z-index: 2;
+ background: __background_neu__;
+ color: __text__;
+ text-align: center;
+}
+
+.qq-upload-drop-area span {
+ display: block;
+ position: absolute;
+ top: 50%;
+ width: 100%;
+ margin-top: -8px;
+ font-size: 120%;
+}
+
+.qq-upload-drop-area-active {
+ background: __background_alt__;
+}
+
+/* list of files to upload */
+
+div.qq-uploader ul {
+ margin: 0;
+ padding: 0;
+ list-style: none;
+}
+
+.qq-uploader li {
+ margin: 0 0 5px;
+ color: __text__;
+}
+
+.qq-uploader li span,
+.qq-uploader li input,
+.qq-uploader li a {
+ margin-right: 5px;
+}
+
+.qq-upload-file {
+ display: block;
+ font-weight: bold;
+}
+
+.qq-upload-spinner {
+ display: inline-block;
+ background: url("../../images/throbber.gif");
+ width: 15px;
+ height: 15px;
+ vertical-align: text-bottom;
+}
+
+.qq-upload-size,
+.qq-upload-cancel {
+ font-size: 85%;
+}
+
+.qq-upload-failed-text {
+ display: none;
+}
+.qq-upload-fail .qq-upload-failed-text {
+ display: inline;
+}
+
+.qq-action-container * {
+ vertical-align: middle;
+}
+.qq-overwrite-check input {
+ margin-left: 10px;
+}
diff --git a/lib/tpl/dokuwiki/css/_footnotes.css b/lib/tpl/dokuwiki/css/_footnotes.css
new file mode 100644
index 000000000..a20f2964e
--- /dev/null
+++ b/lib/tpl/dokuwiki/css/_footnotes.css
@@ -0,0 +1,28 @@
+/**
+ * This file provides styles for footnotes.
+ */
+
+/*____________ footnotes inside the text ____________*/
+
+/* link to footnote inside the text */
+.dokuwiki sup a.fn_top {
+}
+/* JSpopup */
+div.insitu-footnote {
+ max-width: 40%;
+ min-width: 5em;
+}
+
+/*____________ footnotes at the bottom of the page ____________*/
+
+.dokuwiki div.footnotes {
+ border-top: 1px solid __border__;
+ padding: .5em 0 0 0;
+ margin: 1em 0 0 0;
+ clear: both;
+}
+.dokuwiki div.footnotes div.fn {
+}
+.dokuwiki div.footnotes div.fn sup a.fn_bot {
+ font-weight: bold;
+}
diff --git a/lib/tpl/dokuwiki/css/_forms.css b/lib/tpl/dokuwiki/css/_forms.css
new file mode 100644
index 000000000..0c82f5f8c
--- /dev/null
+++ b/lib/tpl/dokuwiki/css/_forms.css
@@ -0,0 +1,82 @@
+
+/* TODO: this file is not up to the best standards and will be fixed after an overhaul of the form code */
+
+/**
+ * This file provides styles for forms in general and specifically
+ * for ?do=
+ * - login
+ * - resendpwd
+ * - register
+ * - profile
+ * - subscribe
+ */
+
+/* ---------------- forms ------------------------ */
+
+.dokuwiki form {
+ border: none;
+ display: inline;
+}
+
+.dokuwiki label.block {
+ display: block;
+ text-align: right;
+ font-weight: bold;
+}
+
+.dokuwiki label.simple {
+ display: block;
+ text-align: left;
+ font-weight: normal;
+}
+
+.dokuwiki label.block input.edit {
+ width: 50%;
+}
+
+.dokuwiki label span {
+ vertical-align: middle;
+}
+
+.dokuwiki fieldset {
+ width: 400px;
+ text-align: center;
+ border: 1px solid __border__;
+ padding: 0.5em;
+ margin: auto;
+}
+
+
+.dokuwiki input.edit,
+.dokuwiki select.edit {
+ vertical-align: middle;
+}
+.dokuwiki select.edit {
+ padding: 0.1em 0;
+}
+
+
+.dokuwiki input.button,
+.dokuwiki button.button {
+ vertical-align: middle;
+}
+
+/**
+ * Styles for the subscription page
+ */
+
+#subscribe__form {
+ display: block;
+ width: 400px;
+ text-align: center;
+}
+
+#subscribe__form fieldset {
+ text-align: left;
+ margin: 0.5em 0;
+}
+
+#subscribe__form label {
+ display: block;
+ margin: 0 0.5em 0.5em;
+}
diff --git a/lib/tpl/dokuwiki/css/_imgdetail.css b/lib/tpl/dokuwiki/css/_imgdetail.css
new file mode 100644
index 000000000..a3e0f55f5
--- /dev/null
+++ b/lib/tpl/dokuwiki/css/_imgdetail.css
@@ -0,0 +1,30 @@
+/**
+ * This file provides styles for the image detail page (detail.php).
+ */
+
+#dokuwiki__detail {
+ padding: 1em;
+}
+#dokuwiki__detail h1 {
+}
+
+#dokuwiki__detail img {
+ float: left;
+ margin: 0 1.5em .5em 0;
+}
+#dokuwiki__detail div.img_detail {
+ float: left;
+}
+
+#dokuwiki__detail div.img_detail h2 {
+}
+#dokuwiki__detail div.img_detail dl {
+}
+#dokuwiki__detail div.img_detail dl dt {
+}
+#dokuwiki__detail div.img_detail dl dd {
+}
+
+#dokuwiki__detail p.back {
+ clear: both;
+}
diff --git a/lib/tpl/dokuwiki/css/_links.css b/lib/tpl/dokuwiki/css/_links.css
new file mode 100644
index 000000000..6b19c3a24
--- /dev/null
+++ b/lib/tpl/dokuwiki/css/_links.css
@@ -0,0 +1,65 @@
+/**
+ * This file provides styles for all types of links.
+ */
+
+/*____________ links to wiki pages ____________*/
+
+/* existing wikipage */
+.dokuwiki a.wikilink1 {
+ color: __existing__;
+ background-color: inherit;
+}
+/* not existing wikipage */
+.dokuwiki a.wikilink2 {
+ color: __missing__;
+ background-color: inherit;
+ text-decoration: none;
+}
+.dokuwiki a.wikilink2:link,
+.dokuwiki a.wikilink2:visited {
+ border-bottom: 1px dashed;
+}
+.dokuwiki a.wikilink2:hover,
+.dokuwiki a.wikilink2:active,
+.dokuwiki a.wikilink2:focus {
+ border-bottom-width: 0;
+}
+
+/* any link to current page */
+.dokuwiki span.curid a {
+ font-weight: bold;
+}
+
+/*____________ other link types ____________*/
+
+.dokuwiki a.urlextern,
+.dokuwiki a.windows,
+.dokuwiki a.mail,
+.dokuwiki a.mediafile,
+.dokuwiki a.interwiki {
+ background-repeat: no-repeat;
+ background-position: 0 center;
+ padding: 0 0 0 20px;
+}
+/* external link */
+.dokuwiki a.urlextern {
+ background-image: url(images/link_icon.gif);
+ padding: 0 0 0 17px;
+}
+/* windows share */
+.dokuwiki a.windows {
+ background-image: url(images/windows.gif);
+}
+/* email link */
+.dokuwiki a.mail {
+ background-image: url(images/mail_icon.gif);
+}
+
+/* icons of the following are set by dokuwiki in lib/exe/css.php */
+/* link to some embedded media */
+.dokuwiki a.mediafile {
+}
+/* interwiki link */
+.dokuwiki a.interwiki {
+ padding: 0 0 0 17px;
+}
diff --git a/lib/tpl/dokuwiki/css/_media_fullscreen.css b/lib/tpl/dokuwiki/css/_media_fullscreen.css
new file mode 100644
index 000000000..9054ab26f
--- /dev/null
+++ b/lib/tpl/dokuwiki/css/_media_fullscreen.css
@@ -0,0 +1,458 @@
+/**
+ * This file provides the styles for the fullscreen media manager
+ * (?do=media).
+ *
+ * What most templates would probably need to change (depending on
+ * their site width) are the 4 min-width's (search for @change).
+ */
+
+
+/*____________ structure ____________*/
+
+#mediamanager__page h1 {
+ margin-bottom: .5em;
+}
+
+#mediamanager__page {
+ /* min-width must be summary of all 3 panels' min-widths */
+ min-width: 50em; /* @change */
+ width: 100%;
+ text-align: left;
+}
+
+#mediamanager__page .panel {
+ float: left;
+}
+
+#mediamanager__page .namespaces {
+ width: 20%;
+ min-width: 10em; /* @change */
+}
+#mediamanager__page .filelist {
+ width: 50%;
+ min-width: 25em; /* @change */
+}
+#mediamanager__page .file {
+ width: 30%;
+ min-width: 15em; /* @change */
+}
+
+#mediamanager__page .panelHeader {
+ background-color: __background_alt__;
+ margin: 0 10px 10px 0;
+ padding: 10px 10px 8px;
+ text-align: left;
+ min-height: 20px;
+ overflow: hidden;
+}
+
+#mediamanager__page .panelContent {
+ overflow-y: auto;
+ overflow-x: hidden;
+ padding: 0;
+ margin: 0 10px 10px 0;
+ position: relative;
+}
+
+#mediamanager__page .file .panelHeader,
+#mediamanager__page .file .panelContent {
+ margin-right: 0;
+}
+
+#mediamanager__page .ui-resizable-e {
+ width: 6px;
+ right: 2px;
+ background: transparent url(images/resizecol.png) center center no-repeat;
+}
+#mediamanager__page .ui-resizable-e:hover {
+ background-color: __background_alt__;
+}
+
+
+#mediamanager__page dd {
+ margin: 0;
+}
+
+#mediamanager__page .panelHeader h3 {
+ float: left;
+ font-weight: normal;
+ font-size: 1em;
+ padding: 0;
+ margin: 0 0 3px;
+}
+
+
+/*____________ namespaces panel ____________*/
+
+#mediamanager__page .namespaces h2 {
+ font-size: 1em;
+ display: inline-block;
+ border-width: 0;
+ padding: .3em .8em;
+ margin: 0 .3em 0 0;
+ border-radius: .5em .5em 0 0;
+ font-weight: normal;
+ background-color: __background_alt__;
+ color: __text__;
+ line-height: 1.4em;
+}
+* html #mediamanager__page .namespaces h2,
+*+html #mediamanager__page .namespaces h2 {
+ display: inline;
+}
+
+#mediamanager__page .namespaces ul {
+ margin-left: .2em;
+ margin-bottom: 0;
+ padding: 0;
+ list-style: none;
+}
+#mediamanager__page .namespaces ul ul {
+ margin-left: 1em;
+}
+#mediamanager__page .namespaces ul ul li {
+ margin: 0;
+}
+
+#mediamanager__page .namespaces ul .selected {
+ background-color: __highlight__;
+ font-weight: bold;
+}
+
+
+/*____________ file list panel ____________*/
+
+/* file list header */
+
+#mediamanager__page .panelHeader form.options {
+ float: right;
+ margin-top: -3px;
+}
+
+#mediamanager__page .panelHeader ul {
+ list-style: none;
+ margin: 0;
+ padding: 0;
+}
+#mediamanager__page .panelHeader ul li {
+ color: __text__;
+ float: left;
+ line-height: 1;
+ padding-left: 3px;
+}
+
+#mediamanager__page .panelHeader ul li.listType {
+ padding-left: 30px;
+ background: url('../../images/icon-list.png') 3px 1px no-repeat;
+}
+#mediamanager__page .panelHeader ul li.sortBy {
+ padding-left: 30px;
+ background: url('../../images/icon-sort.png') 3px 1px no-repeat;
+}
+
+#mediamanager__page .panelHeader form.options .ui-buttonset label{
+ font-size: 90%;
+ margin-right: -0.4em;
+}
+#mediamanager__page .panelHeader form.options .ui-buttonset .ui-button-text {
+ padding: .3em .5em;
+ line-height: 1;
+}
+
+/* file list content */
+
+#mediamanager__page .filelist ul {
+ padding: 0;
+ margin: 0;
+}
+
+#mediamanager__page .filelist .panelContent ul li:hover {
+ background-color: __background_alt__;
+}
+
+#mediamanager__page .filelist li dt a {
+ vertical-align: middle;
+ display: table-cell;
+ overflow: hidden;
+}
+* html #mediamanager__page .filelist .thumbs li dt a,
+*+html #mediamanager__page .filelist .thumbs li dt a {
+ display: block;
+}
+* html #mediamanager__page .filelist .rows li dt a,
+*+html #mediamanager__page .filelist .rows li dt a {
+ display: inline;
+}
+
+/* file list as thumbs */
+
+#mediamanager__page .filelist .thumbs li {
+ width: 100px;
+ min-height: 130px;
+ display: inline-block;
+ display: -moz-inline-stack;
+ /* the right margin should visually be 10px, but because of its inline-block nature the whitespace inbetween is about 4px more */
+ margin: 0 6px 10px 0;
+ background-color: __background_neu__;
+ color: __text__;
+ padding: 5px;
+ vertical-align: top;
+ text-align: center;
+ position: relative;
+ line-height: 1.2;
+}
+* html #mediamanager__page .filelist .thumbs li,
+*+html #mediamanager__page .filelist .thumbs li {
+ display: inline;
+ zoom: 1;
+}
+
+#mediamanager__page .filelist .thumbs li dt a {
+ width: 100px;
+ height: 90px;
+}
+
+#mediamanager__page .filelist .thumbs li dt a img {
+ max-width: 90px;
+ max-height: 90px;
+}
+
+#mediamanager__page .filelist .thumbs li .name,
+#mediamanager__page .filelist .thumbs li .size,
+#mediamanager__page .filelist .thumbs li .filesize,
+#mediamanager__page .filelist .thumbs li .date {
+ display: block;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ width: 90px;
+ white-space: nowrap;
+}
+#mediamanager__page .filelist .thumbs li .name {
+ padding: 5px 0;
+ font-weight: bold;
+}
+#mediamanager__page .filelist .thumbs li .date {
+ font-style: italic;
+ white-space: normal;
+}
+
+/* file list as rows */
+
+#mediamanager__page .filelist .rows li {
+ list-style: none;
+ display: block;
+ position: relative;
+ max-height: 50px;
+ margin: 0;
+ margin-bottom: 3px;
+ background-color: __background__;
+ color: __text__;
+ overflow: hidden;
+}
+
+#mediamanager__page .filelist .rows li:nth-child(2n+1) {
+ background-color: __background_neu__;
+}
+
+#mediamanager__page .filelist .rows li dt {
+ float: left;
+ width: 10%;
+ height: 40px;
+ text-align: center;
+}
+
+#mediamanager__page .filelist .rows li dt a {
+ width: 100px;
+ height: 40px;
+}
+
+#mediamanager__page .filelist .rows li dt a img {
+ max-width: 40px;
+ max-height: 40px;
+}
+
+#mediamanager__page .filelist .rows li .name,
+#mediamanager__page .filelist .rows li .size,
+#mediamanager__page .filelist .rows li .filesize,
+#mediamanager__page .filelist .rows li .date {
+ overflow: hidden;
+ text-overflow: ellipsis;
+ float: left;
+ margin-left: 1%;
+ white-space: nowrap;
+}
+
+#mediamanager__page .filelist .rows li .name {
+ width: 30%;
+ font-weight: bold;
+}
+#mediamanager__page .filelist .rows li .size,
+#mediamanager__page .filelist .rows li .filesize {
+ width: 15%;
+}
+#mediamanager__page .filelist .rows li .date {
+ width: 20%;
+ font-style: italic;
+ white-space: normal;
+}
+
+/* upload form */
+
+#mediamanager__page div.upload {
+ padding-bottom: 0.5em;
+}
+
+/*____________ file panel ____________*/
+
+#mediamanager__page .file ul.actions {
+ text-align: center;
+ margin: 0 0 5px;
+ padding: 0;
+ list-style: none;
+}
+#mediamanager__page .file ul.actions li {
+ display: inline;
+ margin: 0;
+}
+
+#mediamanager__page .file div.image {
+ margin-bottom: 5px;
+ text-align: center;
+}
+
+#mediamanager__page .file div.image img {
+ width: 100%;
+}
+
+#mediamanager__page .file dl {
+ margin-bottom: 0;
+}
+#mediamanager__page .file dl dt {
+ font-weight: bold;
+ display: block;
+ background-color: __background_alt__;
+}
+#mediamanager__page .file dl dd {
+ display: block;
+ background-color: __background_neu__;
+}
+
+
+/* file meta data edit form */
+
+#mediamanager__page form.meta div.row {
+ margin-bottom: 5px;
+}
+
+#mediamanager__page form.meta label span {
+ display: block;
+}
+
+#mediamanager__page form.meta input {
+ width: 50%;
+}
+
+#mediamanager__page form.meta input.button {
+ width: auto;
+}
+
+#mediamanager__page form.meta textarea.edit {
+ height: 6em;
+ width: 95%;
+ min-width: 95%;
+ max-width: 95%;
+}
+
+/* file revisions form */
+
+#mediamanager__page #page__revisions ul {
+ margin-left: 10px;
+ padding: 0;
+ list-style-type: none;
+}
+
+#mediamanager__page #page__revisions ul li div.li div {
+ font-size: 90%;
+ color: __text_neu__;
+ padding-left: 18px;
+}
+
+#mediamanager__page #page__revisions ul li div.li input {
+ position: relative;
+ top: 1px;
+}
+
+/* file diff view */
+
+#mediamanager__diff table {
+ table-layout: fixed;
+ border-width: 0;
+}
+
+#mediamanager__diff td,
+#mediamanager__diff th {
+ width: 48%;
+ margin: 0 5px 10px 0;
+ padding: 0;
+ vertical-align: top;
+ text-align: left;
+ border-color: __background__;
+}
+
+#mediamanager__diff th {
+ font-weight: normal;
+ background-color: __background__;
+ line-height: 1.2;
+}
+#mediamanager__diff th a {
+ font-weight: bold;
+}
+#mediamanager__diff th span {
+ font-size: 90%;
+}
+
+#mediamanager__diff dl dd strong{
+ background-color: __highlight__;
+ color: __text__;
+ font-weight: normal;
+}
+
+/* image diff views */
+
+#mediamanager__page .file form.diffView {
+ margin-bottom: 10px;
+ display: block;
+}
+
+#mediamanager__diff div.slider {
+ margin: 10px;
+ width: 95%;
+}
+
+#mediamanager__diff .imageDiff {
+ position: relative;
+}
+#mediamanager__diff .imageDiff .image1,
+#mediamanager__diff .imageDiff .image2 {
+ width: 97%;
+}
+#mediamanager__diff .imageDiff .image2 {
+ position: absolute;
+ top: 0;
+ left: 0;
+}
+
+#mediamanager__diff .imageDiff.opacity .image2 {
+ opacity: 0.5;
+}
+
+#mediamanager__diff .imageDiff.portions .image2 {
+ border-right: 1px solid red;
+ overflow: hidden;
+}
+
+#mediamanager__diff .imageDiff img {
+ width: 100%;
+ max-width: none;
+}
+
diff --git a/lib/tpl/dokuwiki/css/_media_popup.css b/lib/tpl/dokuwiki/css/_media_popup.css
new file mode 100644
index 000000000..0469c8e60
--- /dev/null
+++ b/lib/tpl/dokuwiki/css/_media_popup.css
@@ -0,0 +1,205 @@
+/**
+ * This file provides styles for the media manager popup
+ * (mediamanager.php).
+ */
+
+/*____________ structure ____________*/
+
+html.popup {
+ overflow: auto;
+}
+
+#media__manager {
+ height: 100%;
+ overflow: hidden;
+}
+
+#mediamgr__aside {
+ width: 30%;
+ height: 100%;
+ overflow: auto;
+ position: absolute;
+ left: 0;
+ border-right: 1px solid __border__;
+}
+#mediamgr__aside .pad {
+ padding: .5em;
+}
+
+#mediamgr__content {
+ width: 69.7%;
+ height: 100%;
+ overflow: auto;
+ position: absolute;
+ right: 0;
+}
+#mediamgr__content .pad {
+ padding: .5em;
+}
+
+#media__manager h1,
+#media__manager h2 {
+ font-size: 1.5em;
+ margin-bottom: .5em;
+ padding-bottom: .2em;
+ border-bottom: 1px solid __border__;
+}
+
+/* left side
+********************************************************************/
+
+/*____________ options ____________*/
+
+#media__opts {
+ margin-bottom: .5em;
+}
+
+#media__opts input {
+ margin-right: .3em;
+}
+#media__opts label {
+}
+
+/*____________ tree ____________*/
+
+#media__tree ul {
+ padding-left: .2em;
+}
+#media__tree ul li {
+ clear: left;
+ list-style-type: none;
+ list-style-image: none;
+ margin-left: 0;
+}
+#media__tree ul li img {
+ float: left;
+ padding: .5em .3em 0 0;
+}
+#media__tree ul li div.li {
+ display: inline;
+}
+#media__tree ul li li {
+ margin-left: 1.5em;
+}
+
+/* right side
+********************************************************************/
+
+/*____________ upload form ____________*/
+
+/* upload info */
+#media__content div.upload {
+ font-size: .9em;
+ margin-bottom: .5em;
+}
+
+#mediamanager__uploader {
+ margin-bottom: 1em;
+}
+#mediamanager__uploader p {
+ margin-bottom: .5em;
+}
+
+/*____________ file list ____________*/
+
+#media__content img.load {
+ margin: 1em auto;
+}
+
+#media__content .odd,
+#media__content .even {
+ padding: .5em;
+}
+#media__content .odd {
+ background-color: __background_alt__;
+}
+#media__content .even {
+}
+/* highlight newly uploaded or edited file */
+#media__content #scroll__here {
+ border: 1px dashed __border__;
+}
+
+/* link which inserts media file */
+#media__content a.mediafile {
+ margin-right: 1.5em;
+ font-weight: bold;
+}
+#media__content span.info {
+}
+#media__content img.btn {
+ vertical-align: text-bottom;
+}
+
+/* info how to insert media, if JS disabled */
+#media__content div.example {
+ color: __text_neu__;
+ margin-left: 1em;
+}
+
+#media__content div.detail {
+ padding: .2em 0;
+}
+#media__content div.detail div.thumb {
+ float: left;
+ margin: 0 .5em 0 18px;
+}
+#media__content div.detail div.thumb a {
+ display: block;
+ cursor: pointer;
+}
+#media__content div.detail p {
+ margin-bottom: 0;
+}
+
+
+/*____________ media search ____________*/
+
+form#dw__mediasearch {
+}
+form#dw__mediasearch p {
+}
+form#dw__mediasearch label {
+}
+form#dw__mediasearch label span {
+}
+form#dw__mediasearch input.edit {
+}
+form#dw__mediasearch input.button {
+}
+
+
+/* meta edit form
+********************************************************************/
+
+#media__content form.meta {
+}
+
+#media__content form.meta div.metafield {
+ clear: left;
+ margin-bottom: .5em;
+ overflow: hidden;
+}
+
+#media__content form.meta label {
+ display: block;
+ width: 25%;
+ float: left;
+ font-weight: bold;
+ clear: left;
+}
+#media__content form.meta .edit {
+ float: left;
+ width: 70%;
+ margin: 0;
+}
+#media__content form.meta textarea.edit {
+ /* needed because of IE8 hack in _edit.css for textarea.edit: */
+ max-width: 70%;
+ min-width: 70%;
+}
+
+#media__content form.meta div.buttons {
+ clear: left;
+ margin: .2em 0 0 25%;
+}
diff --git a/lib/tpl/dokuwiki/css/_modal.css b/lib/tpl/dokuwiki/css/_modal.css
new file mode 100644
index 000000000..125f702a8
--- /dev/null
+++ b/lib/tpl/dokuwiki/css/_modal.css
@@ -0,0 +1,83 @@
+/**
+ * This file provides styles for modal dialogues.
+ */
+
+.dokuwiki .ui-widget {
+ font-size: 100%;
+}
+
+
+/* link wizard (opens from the link button in the edit toolbar)
+********************************************************************/
+
+#link__wiz {
+}
+
+#link__wiz_result {
+ background-color: __background__;
+ width: 293px;
+ height: 193px;
+ overflow: auto;
+ border: 1px solid __border__;
+ margin: 3px auto;
+ text-align: left;
+ line-height: 1;
+}
+
+#link__wiz_result div {
+ padding: 3px 3px 3px 0;
+}
+
+#link__wiz_result div a {
+ display: block;
+ padding-left: 22px;
+ min-height: 16px;
+ background: transparent 3px center no-repeat;
+}
+
+#link__wiz_result div.type_u a {
+ background-image: url(../../images/up.png);
+}
+#link__wiz_result div.type_f a {
+ background-image: url(../../images/page.png);
+}
+#link__wiz_result div.type_d a {
+ background-image: url(../../images/ns.png);
+}
+
+#link__wiz_result div.even {
+ background-color: __background_neu__;
+}
+
+#link__wiz_result div.selected {
+ background-color: __background_alt__;
+}
+
+#link__wiz_result span {
+ display: block;
+ color: __text_neu__;
+ margin-left: 22px;
+}
+
+
+/* media option wizard (opens when inserting media in the media popup)
+********************************************************************/
+
+#media__popup {
+ /* for backwards compatibility (not needed since Rincewind) */
+ display: none;
+}
+
+#media__popup_content p {
+ margin: 0 0 .5em;
+}
+
+#media__popup_content label {
+ margin-right: .5em;
+ cursor: default;
+}
+
+#media__popup_content .button {
+ margin-right: 1px;
+ cursor: pointer;
+}
diff --git a/lib/tpl/dokuwiki/css/_recent.css b/lib/tpl/dokuwiki/css/_recent.css
new file mode 100644
index 000000000..68f0e5826
--- /dev/null
+++ b/lib/tpl/dokuwiki/css/_recent.css
@@ -0,0 +1,69 @@
+/**
+ * This file provides styles for the recent changes (?do=recent) and
+ * old revisions (?do=revisions).
+ */
+
+/*____________ list of revisions / recent changes ____________*/
+
+/* select type of revisions (media/pages), should have a class on it's own, but hasn't */
+.dokuwiki #dw__recent label {
+ margin-bottom: .5em;
+ display: block;
+}
+
+.dokuwiki #dw__recent ul li,
+.dokuwiki #page__revisions ul li {
+ list-style: none;
+ margin-left: 0;
+}
+.dokuwiki #dw__recent ul li span,
+.dokuwiki #dw__recent ul li a,
+.dokuwiki #page__revisions ul li span,
+.dokuwiki #page__revisions ul li a {
+ vertical-align: middle;
+}
+.dokuwiki #dw__recent ul li span.user a,
+.dokuwiki #page__revisions ul li span.user a {
+ vertical-align: bottom;
+}
+.dokuwiki #dw__recent ul li.minor,
+.dokuwiki #page__revisions ul li.minor {
+ opacity: .7;
+}
+
+.dokuwiki #dw__recent li span.date,
+.dokuwiki #page__revisions li span.date {
+}
+.dokuwiki #dw__recent li a.diff_link,
+.dokuwiki #page__revisions li a.diff_link {
+ vertical-align: baseline;
+}
+.dokuwiki #dw__recent li a.revisions_link,
+.dokuwiki #page__revisions li a.revisions_link {
+ vertical-align: baseline;
+}
+.dokuwiki #dw__recent li a.wikilink1,
+.dokuwiki #dw__recent li a.wikilink2,
+.dokuwiki #page__revisions li a.wikilink1,
+.dokuwiki #page__revisions li a.wikilink2 {
+}
+.dokuwiki #dw__recent li span.sum,
+.dokuwiki #page__revisions li span.sum {
+ font-weight: bold;
+}
+.dokuwiki #dw__recent li span.user,
+.dokuwiki #page__revisions li span.user {
+}
+
+
+/*____________ page navigator ____________*/
+
+.dokuwiki div.pagenav {
+ text-align: center;
+ margin: 1.4em 0;
+}
+.dokuwiki div.pagenav-prev,
+.dokuwiki div.pagenav-next {
+ display: inline;
+ margin: 0 .5em;
+}
diff --git a/lib/tpl/dokuwiki/css/_search.css b/lib/tpl/dokuwiki/css/_search.css
new file mode 100644
index 000000000..c124c1e86
--- /dev/null
+++ b/lib/tpl/dokuwiki/css/_search.css
@@ -0,0 +1,93 @@
+/**
+ * This file provides styles for the search results page (?do=search)
+ * and the AJAX search popup.
+ */
+
+/* search results page
+********************************************************************/
+
+/* loading gif */
+#dw__loading {
+}
+
+/*____________ matching pagenames ____________*/
+
+.dokuwiki div.search_quickresult {
+ margin-bottom: 1.4em;
+}
+.dokuwiki div.search_quickresult h3 {
+}
+.dokuwiki div.search_quickresult ul {
+ padding: 0;
+}
+.dokuwiki div.search_quickresult ul li {
+ float: left;
+ width: 12em;
+ margin: 0 1.5em;
+}
+
+/*____________ search results ____________*/
+
+/* container for one search result */
+.dokuwiki div.search_result {
+ margin-bottom: 1.4em;
+}
+/* search snippet */
+.dokuwiki div.search_result div.search_snippet {
+ color: __text_alt__;
+ background-color: inherit;
+}
+
+/* search hit in normal text */
+.dokuwiki .search_hit {
+ color: __text__;
+ background-color: __highlight__;
+}
+/* search hit in search results */
+.dokuwiki div.search_result strong.search_hit {
+ font-weight: normal;
+}
+/* ellipsis separating snippets */
+.dokuwiki div.search_result .search_sep {
+ color: __text__;
+ background-color: inherit;
+}
+
+/* "nothing found" at search + media */
+.dokuwiki div.nothing {
+ margin-bottom: 1.4em;
+}
+
+
+/* AJAX quicksearch popup
+********************************************************************/
+
+.dokuwiki form.search div.no {
+ position: relative;
+}
+
+/* .JSpopup */
+.dokuwiki form.search div.ajax_qsearch {
+ position: absolute;
+ top: 0;
+ left: -13.5em; /* -( width of #qsearch__in + padding of .ajax_qsearch + a bit more ) */
+ width: 12em;
+ padding: 0.5em;
+ font-size: .9em;
+ z-index: 20;
+ text-align: left;
+ display: none;
+}
+.dokuwiki form.search div.ajax_qsearch strong {
+ display: block;
+ margin-bottom: .3em;
+}
+.dokuwiki form.search div.ajax_qsearch ul {
+ margin: 0 !important;
+ padding: 0 !important;
+}
+.dokuwiki form.search div.ajax_qsearch ul li {
+ margin: 0;
+ padding: 0;
+ display: block !important;
+}
diff --git a/lib/tpl/dokuwiki/css/_tabs.css b/lib/tpl/dokuwiki/css/_tabs.css
new file mode 100644
index 000000000..de544fd2b
--- /dev/null
+++ b/lib/tpl/dokuwiki/css/_tabs.css
@@ -0,0 +1,40 @@
+/**
+ * This file provides the styles for general tabs.
+ */
+
+.dokuwiki ul.tabs {
+ padding: 0;
+ margin: 0;
+ overflow: hidden;
+}
+.dokuwiki ul.tabs li {
+ float: left;
+ padding: 0;
+ margin: 0;
+ list-style: none;
+}
+
+.dokuwiki ul.tabs li strong,
+.dokuwiki ul.tabs li a {
+ float: left;
+ padding: .3em .8em;
+ margin: 0 .3em 0 0;
+ background-color: __background_neu__;
+ color: __text__;
+ border-radius: .5em .5em 0 0;
+}
+.dokuwiki ul.tabs li strong {
+ font-weight: normal;
+}
+
+.dokuwiki ul.tabs li a:link,
+.dokuwiki ul.tabs li a:visited {
+}
+.dokuwiki ul.tabs li a:hover,
+.dokuwiki ul.tabs li a:active,
+.dokuwiki ul.tabs li a:focus,
+.dokuwiki ul.tabs li strong {
+ background-color: __background_alt__;
+ color: __text__;
+ text-decoration: none;
+}
diff --git a/lib/tpl/dokuwiki/css/_toc.css b/lib/tpl/dokuwiki/css/_toc.css
new file mode 100644
index 000000000..b78817523
--- /dev/null
+++ b/lib/tpl/dokuwiki/css/_toc.css
@@ -0,0 +1,77 @@
+/**
+ * This file provides styles for the TOC (table of contents), the
+ * sitemap (?do=index) and backlinks (?do=backlink).
+ */
+
+/* toc
+********************************************************************/
+
+/* toc container */
+.dokuwiki div.toc {
+ float: right;
+ margin: 0 0 1.4em 1.4em;
+ width: 12em;
+ background-color: __background_alt__;
+ color: inherit;
+}
+
+/*____________ toc header ____________*/
+
+.dokuwiki div.tocheader {
+ padding: .2em .5em;
+ font-weight: bold;
+}
+
+.dokuwiki .toc span.toc_open,
+.dokuwiki .toc span.toc_close {
+ float: right;
+ margin: 0 .2em;
+}
+
+/*____________ toc list ____________*/
+
+.dokuwiki #toc__inside {
+ padding: .2em .5em;
+}
+.dokuwiki #toc__inside ul {
+ padding: 0;
+ margin: 0;
+}
+.dokuwiki #toc__inside ul li {
+ list-style: none;
+ padding: 0;
+ margin: 0;
+ line-height: 1.1;
+}
+.dokuwiki #toc__inside ul li div.li {
+ padding: .15em 0;
+}
+.dokuwiki #toc__inside ul ul {
+ padding-left: 1em;
+}
+.dokuwiki #toc__inside ul ul li {
+}
+.dokuwiki #toc__inside ul li a {
+}
+
+/* in case of toc list jumping one level
+ (e.g. if heading level 3 follows directly after heading level 1) */
+.dokuwiki #toc__inside ul li.clear {
+}
+
+
+/* sitemap (and backlinks)
+********************************************************************/
+
+.dokuwiki ul.idx {
+ padding-left: 0;
+}
+.dokuwiki ul.idx li {
+ list-style-image: url(images/bullet.png);
+}
+.dokuwiki ul.idx li.open {
+ list-style-image: url(images/open.png);
+}
+.dokuwiki ul.idx li.closed {
+ list-style-image: url(images/closed.png);
+}
diff --git a/lib/tpl/dokuwiki/css/basic.css b/lib/tpl/dokuwiki/css/basic.css
new file mode 100644
index 000000000..7ffe42ec4
--- /dev/null
+++ b/lib/tpl/dokuwiki/css/basic.css
@@ -0,0 +1,373 @@
+/**
+ * This file provides the most basic styles.
+ *
+ * If you integrate DokuWiki into another project, you might either
+ * want to integrate this file into the other project as well, or use
+ * the other project's basic CSS for DokuWiki instead of this one.
+ *
+ * @author Anika Henke <anika@selfthinker.org>
+ */
+
+html {
+ overflow-x: auto;
+ overflow-y: scroll;
+}
+html,
+body {
+ color: __text__;
+ background-color: __background_site__;
+ background-image: url(images/page-background.svg);
+ background-image: linear-gradient( top, __background_neu__ 0%, __background_alt__ 1em, __background_site__ 4em);
+ background-size: 1px 10em;
+ background-repeat: repeat-x;
+ margin: 0;
+ padding: 0;
+}
+body {
+ font: normal 87.5%/1.4 Arial, sans-serif;
+ /* default font size: 100% => 16px; 93.75% => 15px; 87.5% => 14px; 81.25% => 13px; 75% => 12px */
+}
+
+
+/*____________ headers ____________*/
+
+h1,
+h2,
+h3,
+h4,
+h5,
+h6,
+caption,
+legend {
+ font-family: Arial, sans-serif;
+ font-weight: bold;
+ background-color: inherit;
+ padding: 0;
+ line-height: 1.2;
+ clear: left; /* ideally 'both', but problems with toc */
+}
+
+h1 {
+ font-size: 2em;
+ margin: -.222em 0 0.444em;
+}
+h2 {
+ font-size: 1.5em;
+ margin: 0 0 0.666em;
+}
+h3 {
+ font-size: 1.125em;
+ margin: 0 0 0.888em;
+}
+h4 {
+ font-size: 1em;
+ margin: 0 0 1.0em;
+}
+h5 {
+ font-size: .875em;
+ margin: 0 0 1.1428em;
+}
+h6 {
+ font-size: .75em;
+ margin: 0 0 1.333em;
+}
+/* bottom margin = 1 / font-size */
+
+
+/*____________ basic margins and paddings ____________*/
+
+p,
+ul,
+ol,
+dl,
+pre,
+table,
+hr,
+blockquote,
+fieldset,
+address {
+ margin: 0 0 1.4em 0; /* bottom margin = line-height */
+ padding: 0;
+}
+
+div {
+ margin: 0;
+ padding: 0;
+}
+
+
+/*____________ lists ____________*/
+
+ul,
+ol {
+ padding: 0 0 0 1.5em;
+}
+li,
+dd {
+ padding: 0;
+ margin: 0 0 0 1.5em;
+}
+dt {
+ font-weight: bold;
+ margin: 0;
+ padding: 0;
+}
+
+li ul,
+li ol,
+li dl,
+dl ul,
+dl ol,
+dl dl {
+ margin-bottom: 0;
+ padding: 0;
+}
+li li {
+ font-size: 100%;
+}
+
+ul { list-style: square outside; }
+ol { list-style: decimal outside; }
+ol ol { list-style-type: lower-alpha; }
+ol ol ol { list-style-type: upper-roman; }
+ol ol ol ol { list-style-type: upper-alpha; }
+ol ol ol ol ol { list-style-type: lower-roman; }
+
+
+/*____________ tables ____________*/
+
+table {
+ border-collapse: collapse;
+ empty-cells: show;
+ border-spacing: 0;
+ border: 1px solid __border__;
+}
+
+caption {
+ caption-side: top;
+ text-align: left;
+ margin: 0 0 .3em;
+}
+
+th,
+td {
+ padding: .3em .5em;
+ margin: 0;
+ vertical-align: top;
+ border: 1px solid __border__;
+ text-align: left;
+}
+th {
+ font-weight: bold;
+ background-color: __background_alt__;
+}
+
+
+/*____________ links ____________*/
+
+a {
+ outline: none;
+}
+a:link,
+a:visited {
+ text-decoration: none;
+ color: __link__;
+}
+a:link:hover,
+a:visited:hover,
+a:link:focus,
+a:visited:focus,
+a:link:active,
+a:visited:active {
+ text-decoration: underline;
+}
+
+
+/*____________ misc ____________*/
+
+img {
+ border-width: 0;
+ vertical-align: middle;
+ color: #666;
+ background-color: transparent;
+ font-style: italic;
+}
+img,
+object {
+ max-width: 100%;
+ height: auto;
+}
+
+hr {
+ border-top: solid __border__;
+ border-bottom: solid __background__;
+ border-width: 1px 0;
+ height: 0;
+ width: 100%;
+ text-align: center;
+ clear: both;
+}
+
+acronym,
+abbr {
+ cursor: help;
+ border-bottom: 1px dotted;
+ font-style: normal;
+}
+
+pre,
+code,
+samp,
+kbd {
+ font-family: Consolas, "Andale Mono WT", "Andale Mono", "Bitstream Vera Sans Mono", "Nimbus Mono L", Monaco, "Courier New", monospace;
+ /* same font stack should be used for ".dokuwiki table.diff td" in _diff.css */
+ font-size: 1em;
+ direction: ltr;
+ text-align: left;
+}
+pre {
+ overflow: auto;
+ word-wrap: normal;
+}
+
+blockquote {
+ padding: 0 .5em;
+ border: solid __border__;
+ border-width: 0 0 0 .25em;
+}
+q:before,
+q:after {
+ content: '';
+}
+
+sub,
+sup {
+ font-size: .8em;
+ line-height: 1;
+}
+sub {
+ vertical-align: sub;
+}
+sup {
+ vertical-align: super;
+}
+
+/*____________ forms ____________*/
+
+/* for all of the form styles, style.ini colours are not used on purpose (except for fieldset border) */
+
+form {
+ display: inline;
+ margin: 0;
+ padding: 0;
+}
+fieldset {
+ padding: 1em 1em 0;
+ border: 1px solid __text_alt__;
+}
+legend {
+ margin: 0;
+ padding: 0 .1em;
+}
+label {
+ vertical-align: middle;
+ cursor: pointer;
+}
+
+input,
+textarea,
+button,
+select,
+optgroup,
+option {
+ font: inherit;
+ font-weight: normal;
+ color: #333;
+ background-color: #fff;
+ line-height: 1;
+ margin: 0;
+ vertical-align: middle;
+ -moz-box-sizing: border-box;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+}
+
+optgroup {
+ font-style: italic;
+ font-weight: bold;
+}
+option {
+ font-style: normal;
+ font-weight: normal;
+}
+
+input,
+textarea,
+select {
+ border: 1px solid #ccc;
+ box-shadow: inset 0 0 1px #eee;
+ border-radius: 2px;
+}
+input:active,
+input:focus,
+textarea:active,
+textarea:focus,
+select:active,
+select:focus {
+ border-color: #999;
+}
+input[type=radio],
+input[type=checkbox] {
+ padding: 0;
+ border-width: 0;
+ box-shadow: none;
+}
+
+/* all types of buttons */
+input[type=submit],
+input.button,
+a.button,
+button,
+.qq-upload-button {
+ color: #333;
+ background-color: #eee;
+ background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIHZpZXdCb3g9IjAgMCAxIDEiIHByZXNlcnZlQXNwZWN0UmF0aW89Im5vbmUiPgo8bGluZWFyR3JhZGllbnQgaWQ9Imc4MjQiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIiB4MT0iMCUiIHkxPSIwJSIgeDI9IjAlIiB5Mj0iMTAwJSI+CjxzdG9wIHN0b3AtY29sb3I9IiNGRkZGRkYiIG9mZnNldD0iMCIvPjxzdG9wIHN0b3AtY29sb3I9IiNGNEY0RjQiIG9mZnNldD0iMC4zIi8+PHN0b3Agc3RvcC1jb2xvcj0iI0VFRUVFRSIgb2Zmc2V0PSIwLjk5Ii8+PHN0b3Agc3RvcC1jb2xvcj0iI0NDQ0NDQyIgb2Zmc2V0PSIuOTkiLz4KPC9saW5lYXJHcmFkaWVudD4KPHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEiIGhlaWdodD0iMSIgZmlsbD0idXJsKCNnODI0KSIgLz4KPC9zdmc+);
+ background: linear-gradient( top, #ffffff 0%, #f4f4f4 30%, #eeeeee 99%, #cccccc 99%);
+ border: 1px solid #ccc;
+ border-radius: 2px;
+ padding: .1em .5em;
+ cursor: pointer;
+}
+
+input[type=submit]:hover,
+input[type=submit]:active,
+input[type=submit]:focus,
+input.button:hover,
+input.button:active,
+input.button:focus,
+a.button:hover,
+a.button:active,
+a.button:focus,
+button:hover,
+button:active,
+button:focus,
+.qq-upload-button:hover {
+ border-color: #999;
+ background-color: #ddd;
+ background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIHZpZXdCb3g9IjAgMCAxIDEiIHByZXNlcnZlQXNwZWN0UmF0aW89Im5vbmUiPgo8bGluZWFyR3JhZGllbnQgaWQ9Imc2NzAiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIiB4MT0iMCUiIHkxPSIwJSIgeDI9IjAlIiB5Mj0iMTAwJSI+CjxzdG9wIHN0b3AtY29sb3I9IiNGRkZGRkYiIG9mZnNldD0iMCIvPjxzdG9wIHN0b3AtY29sb3I9IiNGNEY0RjQiIG9mZnNldD0iMC4zIi8+PHN0b3Agc3RvcC1jb2xvcj0iI0RERERERCIgb2Zmc2V0PSIwLjk5Ii8+PHN0b3Agc3RvcC1jb2xvcj0iI0JCQkJCQiIgb2Zmc2V0PSIuOTkiLz4KPC9saW5lYXJHcmFkaWVudD4KPHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEiIGhlaWdodD0iMSIgZmlsbD0idXJsKCNnNjcwKSIgLz4KPC9zdmc+);
+ background: linear-gradient( top, #ffffff 0%, #f4f4f4 30%, #dddddd 99%, #bbbbbb 99%);
+}
+
+input::-moz-focus-inner,
+button::-moz-focus-inner {
+ border: 0;
+ padding: 0;
+}
+
+input[disabled],
+button[disabled],
+input[readonly],
+button[readonly] {
+ cursor: auto;
+}
+
diff --git a/lib/tpl/dokuwiki/css/content.css b/lib/tpl/dokuwiki/css/content.css
new file mode 100644
index 000000000..7cb7c6edf
--- /dev/null
+++ b/lib/tpl/dokuwiki/css/content.css
@@ -0,0 +1,149 @@
+/**
+ * This file provides the main design styles for the page content.
+ *
+ * @author Anika Henke <anika@selfthinker.org>
+ * @author Andreas Gohr <andi@splitbrain.org>
+ * @author Clarence Lee <clarencedglee@gmail.com>
+ */
+
+
+/*____________ section indenting ____________
+
+.dokuwiki.page h1 {margin-left: 0;}
+.dokuwiki.page h2 {margin-left: .666em;}
+.dokuwiki.page h3 {margin-left: 1.776em;}
+.dokuwiki.page h4 {margin-left: 3em;}
+.dokuwiki.page h5 {margin-left: 4.5712em;}
+.dokuwiki.page div.level1 {margin-left: 0;}
+.dokuwiki.page div.level2 {margin-left: 1em;}
+.dokuwiki.page div.level3 {margin-left: 2em;}
+.dokuwiki.page div.level4 {margin-left: 3em;}
+.dokuwiki.page div.level5 {margin-left: 4em;}
+*/
+/* hx margin-left = (1 / font-size) * .levelx-margin */
+
+
+/*____________ images ____________*/
+
+/* embedded images (styles are already partly set in lib/styles/all.css) */
+.dokuwiki img.media {
+ margin: .2em 0;
+}
+.dokuwiki img.medialeft {
+ margin: .2em 1em .2em 0;
+}
+.dokuwiki img.mediaright {
+ margin: .2em 0 .2em 1em;
+}
+.dokuwiki img.mediacenter {
+ margin: .2em auto;
+}
+
+
+/*____________ lists ____________*/
+
+#dokuwiki__content ul li,
+#dokuwiki__aside ul li {
+ color: __text_alt__;
+}
+#dokuwiki__content ol li,
+#dokuwiki__aside ol li {
+ color: __text_neu__;
+}
+#dokuwiki__content li .li,
+#dokuwiki__aside li .li {
+ color: __text__;
+}
+
+
+/*____________ tables ____________*/
+
+.dokuwiki div.table {
+ width: 100%;
+ overflow-x: auto;
+ margin-bottom: 1.4em;
+}
+.dokuwiki div.table table {
+ margin-bottom: 0;
+}
+
+.dokuwiki table.inline {
+ min-width: 50%;
+ border-width: 0;
+}
+.dokuwiki table.inline th,
+.dokuwiki table.inline td {
+ border: 1px solid __border__;
+}
+.dokuwiki table.inline th {
+ color: inherit;
+ background-color: __background_alt__;
+}
+.dokuwiki table.inline td {
+}
+.dokuwiki table.inline tr:hover td {
+ background-color: __background_alt__;
+}
+.dokuwiki table.inline tr:hover th {
+ background-color: __border__;
+}
+
+
+/*____________ code ____________*/
+
+.dokuwiki pre,
+.dokuwiki tt,
+.dokuwiki code,
+.dokuwiki samp,
+.dokuwiki kbd {
+ background-color: __background_alt__;
+ color: __text__;
+}
+/* fix if background-color hides underlining */
+.dokuwiki em.u code {
+ text-decoration: underline;
+}
+.dokuwiki pre {
+ border: 1px solid __border__;
+ padding: .75em 1em;
+}
+/* for code in <file> */
+.dokuwiki pre.file {
+}
+
+/* filenames for downloadable file and code blocks */
+.dokuwiki dl.code,
+.dokuwiki dl.file {
+}
+
+.dokuwiki dl.code dt,
+.dokuwiki dl.file dt {
+ background-color: __background_alt__;
+ /*background: -moz-linear-gradient( top, __background__ 0%, __background_alt__ 100%); see FS#2447 */
+ background: -webkit-linear-gradient(top, __background__ 0%, __background_alt__ 100%);
+ background: -o-linear-gradient( top, __background__ 0%, __background_alt__ 100%);
+ background: -ms-linear-gradient( top, __background__ 0%, __background_alt__ 100%);
+ background: linear-gradient( top, __background__ 0%, __background_alt__ 100%);
+ color: inherit;
+ border: 1px solid __border__;
+ border-bottom-color: __background_alt__;
+ border-top-left-radius: .3em;
+ border-top-right-radius: .3em;
+ padding: .3em .6em .1em;
+ margin-bottom: -1px;
+ float: left;
+}
+.dokuwiki dl.code dt a,
+.dokuwiki dl.file dt a {
+ background-color: transparent;
+ font-size: 0.875em;
+ font-weight: normal;
+ display: block;
+ min-height: 16px;
+}
+.dokuwiki dl.code dd,
+.dokuwiki dl.file dd {
+ margin: 0;
+ clear: left;
+}
+
diff --git a/lib/tpl/dokuwiki/css/design.css b/lib/tpl/dokuwiki/css/design.css
new file mode 100644
index 000000000..8617c6c48
--- /dev/null
+++ b/lib/tpl/dokuwiki/css/design.css
@@ -0,0 +1,467 @@
+/**
+ * This file provides the main design styles for the
+ * bits that surround the content.
+ *
+ * @author Anika Henke <anika@selfthinker.org>
+ * @author Andreas Gohr <andi@splitbrain.org>
+ * @author Clarence Lee <clarencedglee@gmail.com>
+ */
+
+/* header
+********************************************************************/
+
+#dokuwiki__header {
+ padding: 2em 0 1.5em;
+}
+
+#dokuwiki__header .headings,
+#dokuwiki__header .tools {
+ margin-bottom: 1.5em;
+ width: 49%;
+}
+#dokuwiki__header h1 img {
+ float: left;
+ margin-right: .5em;
+}
+#dokuwiki__header h1 span {
+ display: block;
+ padding-top: 10px;
+}
+#dokuwiki__header h1 {
+ margin: 0;
+ font-size: 1.5em;
+ font-weight: normal;
+}
+#dokuwiki__header h1 a {
+ text-decoration: none;
+ color: __text__;
+ background-color: inherit;
+}
+#dokuwiki__header h1 a:hover,
+#dokuwiki__header h1 a:active,
+#dokuwiki__header h1 a:focus {
+}
+#dokuwiki__header p.claim {
+ margin-bottom: 0;
+ font-size: 0.875em;
+}
+
+#dokuwiki__header .tools {
+ margin-top: .2em;
+}
+
+
+/* tools
+********************************************************************/
+
+/* highlight selected tool */
+.mode_admin a.action.admin,
+.mode_login a.action.login,
+.mode_register a.action.register,
+.mode_profile a.action.profile,
+.mode_recent a.action.recent,
+.mode_index a.action.index,
+.mode_media a.action.media,
+.mode_revisions a.action.revs,
+.mode_backlink a.action.backlink,
+.mode_subscribe a.action.subscribe {
+ font-weight: bold;
+}
+
+#dokuwiki__header .tools ul {
+ padding-left: 0;
+ margin-bottom: 0;
+}
+#dokuwiki__header .tools li {
+ font-size: 0.875em;
+ margin-left: 1em;
+ list-style: none;
+ display: inline;
+}
+#dokuwiki__header .tools form.search div.ajax_qsearch li {
+ font-size: 1em;
+ margin-left: 0;
+ display: block;
+ overflow: hidden;
+ text-overflow: ellipsis;
+}
+
+#dokuwiki__header .mobileTools {
+ display: none; /* hide mobile tools dropdown to only show in mobile view */
+}
+
+/*____________ user tools ____________*/
+
+#dokuwiki__usertools {
+ position: absolute;
+ top: .5em;
+ right: .5em;
+ text-align: right;
+ width: 100%;
+}
+#dokuwiki__usertools ul {
+ margin: 0 auto;
+ padding: 0;
+ max-width: __site_width__;
+}
+#dokuwiki__usertools ul li.user {
+}
+
+
+/*____________ site tools ____________*/
+
+#dokuwiki__sitetools {
+ text-align: right;
+}
+
+#dokuwiki__sitetools form.search {
+ display: block;
+ font-size: 0.875em;
+ position: relative;
+}
+#dokuwiki__sitetools form.search input.edit {
+ width: 18em;
+ padding: .35em 22px .35em .1em;
+}
+#dokuwiki__sitetools form.search input.button {
+ background: transparent url(images/search.png) no-repeat 0 0;
+ border-width: 0;
+ width: 19px;
+ height: 14px;
+ text-indent: -99999px;
+ margin-left: -20px;
+ box-shadow: none;
+ padding: 0;
+}
+
+#dokuwiki__sitetools ul {
+ margin-top: 0.5em;
+}
+#dokuwiki__sitetools li {
+}
+
+/*____________ breadcrumbs ____________*/
+
+.dokuwiki div.breadcrumbs {
+ border-top: 1px solid __border__;
+ border-bottom: 1px solid __background__;
+ margin-bottom: .5em;
+ font-size: 0.875em;
+ clear: both;
+}
+.dokuwiki div.breadcrumbs div {
+ padding: .1em .35em;
+}
+
+.dokuwiki div.breadcrumbs div:only-child {
+ border-top: 1px solid __background__;
+ border-bottom: 1px solid __border__;
+}
+.dokuwiki div.breadcrumbs div:first-child {
+ border-top: 1px solid __background__;
+}
+#IE7 .dokuwiki div.breadcrumbs div,
+#IE8 .dokuwiki div.breadcrumbs div {
+ border-bottom: 1px solid __border__;
+}
+.dokuwiki div.breadcrumbs div:last-child {
+ border-bottom: 1px solid __border__;
+}
+
+.dokuwiki div.breadcrumbs a {
+ color: __link__;
+ background-color: inherit;
+}
+.dokuwiki div.breadcrumbs .bcsep {
+ font-size: 0.75em;
+}
+
+
+/* sidebar
+********************************************************************/
+
+#dokuwiki__aside {
+}
+#dokuwiki__aside > .pad {
+ font-size: 0.875em;
+ overflow: hidden;
+ word-wrap: break-word;
+}
+
+/* make sidebar more condensed */
+
+#dokuwiki__aside h1 {
+ margin-bottom: .222em;
+}
+#dokuwiki__aside h2 {
+ margin-bottom: .333em;
+}
+#dokuwiki__aside h3 {
+ margin-bottom: .444em;
+}
+#dokuwiki__aside h4 {
+ margin-bottom: .5em;
+}
+#dokuwiki__aside h5 {
+ margin-bottom: .5714em;
+}
+
+#dokuwiki__aside p,
+#dokuwiki__aside ul,
+#dokuwiki__aside ol,
+#dokuwiki__aside dl,
+#dokuwiki__aside pre,
+#dokuwiki__aside table,
+#dokuwiki__aside fieldset,
+#dokuwiki__aside hr,
+#dokuwiki__aside blockquote,
+#dokuwiki__aside address {
+ margin-bottom: .7em;
+}
+
+#dokuwiki__aside ul,
+#dokuwiki__aside ol {
+ padding-left: 0;
+}
+#dokuwiki__aside li ul,
+#dokuwiki__aside li ol {
+ margin-bottom: 0;
+}
+
+#dokuwiki__aside a:link,
+#dokuwiki__aside a:visited {
+ color: __link__;
+ background-color: inherit;
+}
+
+
+/* content
+********************************************************************/
+
+#dokuwiki__content {
+}
+
+.dokuwiki .pageId {
+ position: absolute;
+ top: -2.3em;
+ right: -1em;
+ overflow: hidden;
+ padding: 1em 1em 0;
+}
+.dokuwiki .pageId span {
+ font-size: 0.875em;
+ border: solid __background_alt__;
+ border-width: 1px 1px 0;
+ background-color: __background__;
+ color: __text_alt__;
+ padding: .1em .35em;
+ border-top-left-radius: 2px;
+ border-top-right-radius: 2px;
+ box-shadow: 0 0 .5em #999;
+ display: block;
+}
+
+.dokuwiki div.page {
+ background: __background__;
+ color: inherit;
+ border: 1px solid #eee;
+ box-shadow: 0 0 .5em #999;
+ border-radius: 2px;
+ padding: 2em;
+ margin-bottom: .5em;
+ overflow: hidden;
+ word-wrap: break-word;
+}
+
+.dokuwiki .docInfo {
+ font-size: 0.875em;
+ text-align: right;
+}
+
+/*____________ misc ____________*/
+
+/* license note under edit window */
+.dokuwiki div.license {
+ font-size: 93.75%;
+}
+
+#IE7 .dokuwiki input.button,
+#IE7 .dokuwiki button {
+ line-height: 1.4;
+}
+
+#acl__tree li {
+ margin: 0;
+}
+
+#dokuwiki__content span.curid a {
+ font-weight: normal;
+}
+#dokuwiki__content strong span.curid a {
+ font-weight: bold;
+}
+
+
+/*____________ changes to _edit ____________*/
+
+.dokuwiki div.toolbar button.toolbutton {
+ border-radius: 0;
+ border-left-width: 0;
+ padding: .1em .35em;
+}
+.dokuwiki div.toolbar button.toolbutton:first-child {
+ border-top-left-radius: 4px;
+ border-bottom-left-radius: 4px;
+ border-left-width: 1px;
+}
+.dokuwiki div.toolbar button.toolbutton:last-child {
+ border-top-right-radius: 4px;
+ border-bottom-right-radius: 4px;
+}
+
+.dokuwiki div.section_highlight {
+ margin: -3em -2em -.01em -2em;
+ padding: 3em 1em .01em 1em;
+ border-width: 0 1em;
+}
+
+.dokuwiki textarea.edit {
+ font-family: Consolas, "Andale Mono WT", "Andale Mono", "Bitstream Vera Sans Mono", "Liberation Mono", Monaco, "Courier New", monospace;
+}
+
+.dokuwiki div.preview {
+ margin: 0 -2em;
+ padding: 2em;
+}
+
+
+/*____________ changes to _toc ____________*/
+
+.dokuwiki div.toc {
+ margin: -2em -2em .5em 1.4em;
+ width: __sidebar_width__;
+ border-left: 1px solid __border__;
+ background: __background__;
+ color: inherit;
+}
+
+.dokuwiki div.tocheader {
+ padding: .5em 1em;
+ margin-bottom: 0;
+ font-size: .875em;
+ letter-spacing: .1em;
+}
+
+.dokuwiki .toc span.toc_open,
+.dokuwiki .toc span.toc_close {
+ background: transparent url(images/toc-arrows.png) 0 0;
+ width: 8px;
+ height: 5px;
+ margin: .4em 0 0;
+}
+.dokuwiki .toc span.toc_open {
+ background-position: 0 -5px;
+}
+
+.dokuwiki .toc span.toc_open span,
+.dokuwiki .toc span.toc_close span {
+ display: none;
+}
+
+
+.dokuwiki #toc__inside {
+ font-size: 0.875em;
+ padding: .5em 1em 1em;
+}
+.dokuwiki #toc__inside ul {
+ padding: 0 0 0 1.2em;
+}
+.dokuwiki #toc__inside ul li {
+ list-style-image: url(images/toc-bullet.png);
+}
+.dokuwiki #toc__inside ul li.clear {
+ list-style: none;
+}
+.dokuwiki #toc__inside ul li div.li {
+ padding: .2em 0;
+}
+
+
+/*____________ changes to _imgdetail ____________*/
+
+#dokuwiki__detail {
+ padding: 0;
+}
+#dokuwiki__detail img {
+ float: none;
+ margin-bottom: 1.4em;
+}
+#dokuwiki__detail div.img_detail {
+ float: none;
+}
+
+#dokuwiki__detail div.img_detail dl {
+ overflow: hidden;
+}
+#dokuwiki__detail div.img_detail dl dt {
+ float: left;
+ width: 9em;
+ text-align: right;
+ clear: left;
+}
+#dokuwiki__detail div.img_detail dl dd {
+ margin-left: 9.5em;
+}
+
+
+/*____________ JS popup ____________*/
+
+.JSpopup {
+ background-color: __background__;
+ color: __text__;
+ border: 1px solid __border__;
+ box-shadow: .1em .1em .1em __border__;
+ border-radius: 2px;
+ padding: .3em .5em;
+ font-size: .9em;
+}
+.dokuwiki form.search div.ajax_qsearch {
+ top: -.35em;
+ font-size: 1em;
+ text-overflow: ellipsis;
+}
+
+.JSpopup ul,
+.JSpopup ol {
+ padding-left: 0;
+}
+
+
+/* footer
+********************************************************************/
+
+.dokuwiki .wrapper {
+ margin-bottom: 1.4em;
+}
+
+#dokuwiki__footer {
+ margin-bottom: 1em;
+ text-align: center;
+}
+#dokuwiki__footer > .pad {
+ font-size: 0.875em;
+}
+
+#dokuwiki__footer div.license {
+ margin-bottom: 0.5em;
+ font-size: 100%;
+}
+
+#dokuwiki__footer div.buttons a img {
+ opacity: 0.5;
+}
+#dokuwiki__footer div.buttons a:hover img,
+#dokuwiki__footer div.buttons a:active img,
+#dokuwiki__footer div.buttons a:focus img {
+ opacity: 1;
+}
diff --git a/lib/tpl/dokuwiki/css/includes.css b/lib/tpl/dokuwiki/css/includes.css
new file mode 100644
index 000000000..bc189962f
--- /dev/null
+++ b/lib/tpl/dokuwiki/css/includes.css
@@ -0,0 +1,4 @@
+/**
+ * This file provides styles for included seperate html files
+ * (added through "include hooks").
+ */
diff --git a/lib/tpl/dokuwiki/css/mobile.css b/lib/tpl/dokuwiki/css/mobile.css
new file mode 100644
index 000000000..e1052f437
--- /dev/null
+++ b/lib/tpl/dokuwiki/css/mobile.css
@@ -0,0 +1,198 @@
+/**
+ * This file provides styles for mobile devices
+ * and smaller screens (up to 480px and 768px width).
+ *
+ * @author Anika Henke <anika@selfthinker.org>
+ */
+
+/* up to 768px screen widths
+********************************************************************/
+@media only screen and (max-width: 768px), only screen and (max-device-width: 960px) {
+
+/* structure */
+#dokuwiki__aside {
+ width: 100%;
+ float: none;
+}
+#dokuwiki__aside > .pad {
+ margin: 0 0 .5em;
+}
+
+.hasSidebar #dokuwiki__content {
+ float: none;
+ margin-left: 0;
+ width: 100%;
+}
+.hasSidebar #dokuwiki__content > .pad {
+ margin-left: 0;
+}
+
+/* toc */
+.dokuwiki div.toc {
+ float: none;
+ margin: 0 0 1em 0;
+ width: auto;
+ border-left-width: 0;
+ border-bottom: 1px solid __border__;
+}
+.dokuwiki div.tocheader {
+ padding: 0 0 .5em;
+}
+.dokuwiki #toc__inside {
+ padding: .2em 0 .5em;
+}
+
+/* page */
+.dokuwiki div.page {
+ padding: 1em;
+}
+.dokuwiki .pageId span {
+ border-width: 0;
+ background-color: __background_site__;
+ color: __text_alt__;
+ box-shadow: 0 0 0;
+}
+
+/* _edit */
+.dokuwiki div.section_highlight {
+ margin: -3em -1em -.01em -1em;
+ padding: 3em .5em .01em .5em;
+ border-width: 0 .5em;
+}
+.dokuwiki div.preview {
+ margin: 0 -1em;
+ padding: 1em;
+}
+
+/* _recent */
+.dokuwiki #dw__recent ul,
+.dokuwiki #page__revisions ul {
+ padding-left: 0;
+}
+
+
+} /* /@media */
+
+
+/* up to 480px screen widths
+********************************************************************/
+@media only screen and (max-width: 480px), only screen and (max-device-width: 960px) {
+
+/*____________ structure ____________*/
+
+#dokuwiki__site {
+ max-width: 100%;
+}
+#dokuwiki__site > .site {
+ padding: 0 .5em;
+}
+#dokuwiki__header {
+ padding: .5em 0;
+}
+
+/*____________ header ____________*/
+
+#dokuwiki__header ul.a11y.skip {
+ position: static !important;
+ left: 0 !important;
+ width: auto !important;
+ height: auto !important;
+ float: right;
+ font-size: 0.875em;
+ list-style: none;
+ padding-left: 0;
+ margin: 0;
+}
+#dokuwiki__header ul.a11y.skip li {
+ margin-left: .35em;
+ display: inline;
+}
+
+#dokuwiki__header .headings,
+#dokuwiki__header .tools {
+ float: none;
+ text-align: left;
+ width: auto;
+ margin-bottom: .5em;
+}
+#dokuwiki__sitetools {
+ text-align: left;
+}
+#dokuwiki__usertools,
+#dokuwiki__sitetools ul,
+#dokuwiki__sitetools h3,
+#dokuwiki__pagetools,
+.dokuwiki div.breadcrumbs, /* @todo: maybe move breadcrumbs to the bottom? */
+.dokuwiki .pageId {
+ display: none;
+}
+
+/* search form */
+#dokuwiki__sitetools form.search {
+ float: left;
+ margin: 0 .2em .2em 0;
+ width: 49%;
+}
+#dokuwiki__sitetools form.search input.edit {
+ width: 100% !important;
+}
+.dokuwiki form.search div.ajax_qsearch {
+ display: none !important;
+}
+
+/* action dropdown is alternative for all hidden tools */
+#dokuwiki__header .mobileTools {
+ display: block;
+ font-size: 0.875em;
+ margin: 0 0 .2em 0;
+ float: right;
+ width: 49%;
+}
+#dokuwiki__header .mobileTools select {
+ padding: .3em .1em;
+ width: 100% !important;
+}
+
+
+/*____________ content ____________*/
+
+.dokuwiki div.page {
+ padding: .5em;
+}
+
+/* form elements */
+#config__manager fieldset td.value,
+#config__manager td .input,
+.dokuwiki fieldset,
+.dokuwiki input.edit,
+.dokuwiki textarea,
+.dokuwiki select {
+ width: auto !important;
+ max-width: 100% !important;
+}
+#config__manager fieldset {
+ margin-left: 0;
+ margin-right: 0;
+}
+
+.dokuwiki label.block {
+ text-align: left;
+}
+.dokuwiki label.block span {
+ display: block;
+}
+
+/* _edit */
+.dokuwiki div.section_highlight {
+ margin: 0;
+ padding: 0;
+ border-width: 0;
+}
+.dokuwiki div.preview {
+ margin: 0 -.5em;
+ padding: .5em;
+}
+
+
+
+} /* /@media */
diff --git a/lib/tpl/dokuwiki/css/pagetools.css b/lib/tpl/dokuwiki/css/pagetools.css
new file mode 100644
index 000000000..e301b084d
--- /dev/null
+++ b/lib/tpl/dokuwiki/css/pagetools.css
@@ -0,0 +1,208 @@
+/**
+ * This file provides the styles for the page tools
+ * (fly out navigation beside the page to edit, etc).
+ *
+ * @author Anika Henke <anika@selfthinker.org>
+ * @author Andreas Gohr <andi@splitbrain.org>
+ */
+
+#dokuwiki__site > .site {
+ /* give space to the right so the tools won't disappear on smaller screens */
+ /* it's 40px because the 30px wide icons will have 5px more spacing to the left and right */
+ padding-right: 40px;
+ /* give the same space to the left to balance it out */
+ padding-left: 40px;
+}
+.dokuwiki div.page {
+ min-height: 190px; /* 30 (= height of icons) x 6 (= maximum number of possible tools) + 2x5 */
+}
+#dokuwiki__usertools {
+ /* move the tools just outside of the site */
+ right: 40px;
+}
+
+
+#dokuwiki__pagetools {
+ position: absolute;
+ right: -40px;
+ /* on same vertical level as first headline, because .page has 2em padding */
+ top: 2em;
+}
+
+#dokuwiki__pagetools div.tools {
+ position: fixed;
+}
+
+#dokuwiki__pagetools ul {
+ position: absolute;
+ right: 0;
+ text-align: right;
+ margin: 0;
+ padding: 0;
+ /* add transparent border to prevent jumping when proper border is added on hover */
+ border: 1px solid transparent;
+}
+
+#dokuwiki__pagetools ul li {
+ padding: 0;
+ margin: 0;
+ list-style: none;
+ font-size: 0.875em;
+}
+
+#dokuwiki__pagetools ul li a {
+ display: block;
+ min-height: 20px; /* 30 - 2x5 */
+ line-height: 20px;
+ padding: 5px 40px 5px 5px;
+ background-image: url(images/pagetools-sprite.png);
+ background-position: right 0;
+ background-repeat: no-repeat;
+ /* add transparent border to prevent jumping when proper border is added on focus */
+ border: 1px solid transparent;
+ white-space: nowrap;
+}
+
+/* hide labels accessibly when neither on hover nor on focus */
+#dokuwiki__pagetools ul li a span {
+ position: absolute;
+ left: -99999px;
+}
+
+/* show all tools on hover and individual tools on focus */
+#dokuwiki__pagetools:hover ul,
+#dokuwiki__pagetools ul li a:focus {
+ background-color: __background__;
+ border-color: __border__;
+ border-radius: 2px;
+ box-shadow: 2px 2px 2px __text_alt__;
+}
+
+#dokuwiki__pagetools:hover ul li a span,
+#dokuwiki__pagetools ul li a:focus span {
+ display: inline;
+ position: static;
+}
+
+#dokuwiki__pagetools ul li a:hover,
+#dokuwiki__pagetools ul li a:active,
+#dokuwiki__pagetools ul li a:focus {
+ text-decoration: none;
+}
+#dokuwiki__pagetools ul li a:hover {
+ background-color: __background_alt__;
+}
+
+/*____________ all available icons in sprite ____________*/
+
+#dokuwiki__pagetools ul li a.edit {
+ background-position: right 0;
+}
+#dokuwiki__pagetools ul li a.edit:hover,
+#dokuwiki__pagetools ul li a.edit:active,
+#dokuwiki__pagetools ul li a.edit:focus {
+ background-position: right -45px;
+}
+
+#dokuwiki__pagetools ul li a.create {
+ background-position: right -90px;
+}
+#dokuwiki__pagetools ul li a.create:hover,
+#dokuwiki__pagetools ul li a.create:active,
+#dokuwiki__pagetools ul li a.create:focus {
+ background-position: right -135px;
+}
+
+#dokuwiki__pagetools ul li a.show {
+ background-position: right -270px;
+}
+#dokuwiki__pagetools ul li a.show:hover,
+#dokuwiki__pagetools ul li a.show:active,
+#dokuwiki__pagetools ul li a.show:focus {
+ background-position: right -315px;
+}
+
+#dokuwiki__pagetools ul li a.source {
+ background-position: right -360px;
+}
+#dokuwiki__pagetools ul li a.source:hover,
+#dokuwiki__pagetools ul li a.source:active,
+#dokuwiki__pagetools ul li a.source:focus {
+ background-position: right -405px;
+}
+
+#dokuwiki__pagetools ul li a.draft {
+ background-position: right -180px;
+}
+#dokuwiki__pagetools ul li a.draft:hover,
+#dokuwiki__pagetools ul li a.draft:active,
+#dokuwiki__pagetools ul li a.draft:focus {
+ background-position: right -225px;
+}
+
+#dokuwiki__pagetools ul li a.revs {
+ background-position: right -540px;
+}
+#dokuwiki__pagetools ul li a.revs:hover,
+#dokuwiki__pagetools ul li a.revs:active,
+#dokuwiki__pagetools ul li a.revs:focus,
+.mode_revisions #dokuwiki__pagetools ul li a.revs {
+ background-position: right -585px;
+}
+
+#dokuwiki__pagetools ul li a.backlink {
+ background-position: right -630px;
+}
+#dokuwiki__pagetools ul li a.backlink:hover,
+#dokuwiki__pagetools ul li a.backlink:active,
+#dokuwiki__pagetools ul li a.backlink:focus,
+.mode_backlink #dokuwiki__pagetools ul li a.backlink {
+ background-position: right -675px;
+}
+
+#dokuwiki__pagetools ul li a.top {
+ background-position: right -810px;
+}
+#dokuwiki__pagetools ul li a.top:hover,
+#dokuwiki__pagetools ul li a.top:active,
+#dokuwiki__pagetools ul li a.top:focus {
+ background-position: right -855px;
+}
+
+#dokuwiki__pagetools ul li a.revert {
+ background-position: right -450px;
+}
+#dokuwiki__pagetools ul li a.revert:hover,
+#dokuwiki__pagetools ul li a.revert:active,
+#dokuwiki__pagetools ul li a.revert:focus,
+.mode_revert #dokuwiki__pagetools ul li a.revert {
+ background-position: right -495px;
+}
+
+#dokuwiki__pagetools ul li a.subscribe {
+ background-position: right -720px;
+}
+#dokuwiki__pagetools ul li a.subscribe:hover,
+#dokuwiki__pagetools ul li a.subscribe:active,
+#dokuwiki__pagetools ul li a.subscribe:focus,
+.mode_subscribe #dokuwiki__pagetools ul li a.subscribe {
+ background-position: right -765px;
+}
+
+#dokuwiki__pagetools ul li a.mediaManager {
+ background-position: right -900px;
+}
+#dokuwiki__pagetools ul li a.mediaManager:hover,
+#dokuwiki__pagetools ul li a.mediaManager:active,
+#dokuwiki__pagetools ul li a.mediaManager:focus {
+ background-position: right -945px;
+}
+
+#dokuwiki__pagetools ul li a.back {
+ background-position: right -990px;
+}
+#dokuwiki__pagetools ul li a.back:hover,
+#dokuwiki__pagetools ul li a.back:active,
+#dokuwiki__pagetools ul li a.back:focus {
+ background-position: right -1035px;
+}
diff --git a/lib/tpl/dokuwiki/css/print.css b/lib/tpl/dokuwiki/css/print.css
new file mode 100644
index 000000000..58b8a5f0d
--- /dev/null
+++ b/lib/tpl/dokuwiki/css/print.css
@@ -0,0 +1,192 @@
+/**
+ * This file provides the styles for printing.
+ *
+ * @todo: improve and finish
+ */
+
+body {
+ /*
+ font: normal 12pt/1.2 serif;
+ color: #000;
+ background-color: #fff;
+ */
+}
+
+/* hide certain sections */
+.a11y,
+div.notify,
+div.info,
+div.success,
+div.error,
+#dokuwiki__header .tools,
+#dokuwiki__aside,
+.dokuwiki .breadcrumbs,
+.dokuwiki .toc,
+.dokuwiki .secedit,
+#dokuwiki__pagetools,
+#dokuwiki__footer {
+ display: none;
+}
+
+.dokuwiki h1,
+.dokuwiki h2,
+.dokuwiki h3,
+.dokuwiki h4,
+.dokuwiki h5,
+.dokuwiki caption,
+.dokuwiki legend {
+ clear: both;
+}
+.dokuwiki ul {
+ list-style: disc outside;
+}
+.dokuwiki ol {
+ list-style: decimal outside;
+}
+.dokuwiki ol ol {
+ list-style-type: lower-alpha;
+}
+.dokuwiki ol ol ol {
+ list-style-type: upper-roman;
+}
+.dokuwiki ol ol ol ol {
+ list-style-type: upper-alpha;
+}
+.dokuwiki ol ol ol ol ol {
+ list-style-type: lower-roman;
+}
+
+/* undo icons */
+.dokuwiki a:link,
+.dokuwiki a:visited {
+ text-decoration: underline;
+ color: #333;
+ background-color: inherit;
+ background-image: none;
+ padding: 0;
+}
+
+/* display href after link */
+a.urlextern:after,
+a.interwiki:after,
+a.mail:after {
+ content: " [" attr(href) "]";
+ font-size: 90%;
+}
+
+/* code blocks */
+.dokuwiki pre {
+ font-family: monospace;
+}
+.dokuwiki dl.code dt,
+.dokuwiki dl.file dt {
+ font-weight: bold;
+}
+
+/* images */
+.dokuwiki img {
+ border-width: 0;
+ vertical-align: middle;
+}
+.dokuwiki img.media {
+ margin: .2em 0;
+}
+.dokuwiki img.medialeft {
+ margin: .2em 1em .2em 0;
+ float: left;
+}
+.dokuwiki img.mediaright {
+ margin: .2em 0 .2em 1em;
+ float: right;
+}
+.dokuwiki img.mediacenter {
+ margin: .2em auto;
+ display: block;
+}
+
+/* align table cells */
+.dokuwiki .leftalign {
+ text-align: left;
+}
+.dokuwiki .centeralign {
+ text-align: center;
+}
+.dokuwiki .rightalign {
+ text-align: right;
+}
+
+/* underline */
+.dokuwiki em.u {
+ font-style: normal;
+ text-decoration: underline;
+}
+.dokuwiki em em.u {
+ font-style: italic;
+}
+
+div.clearer {
+ clear: both;
+ line-height: 0;
+ height: 0;
+ overflow: hidden;
+}
+
+.dokuwiki blockquote {
+ padding: 0 10pt;
+ margin: 0;
+ border: solid #ccc;
+ border-width: 0 0 0 2pt;
+}
+[dir=rtl] .dokuwiki blockquote {
+ border-width: 0 2pt 0 0;
+}
+
+/* tables */
+.dokuwiki table {
+ border-collapse: collapse;
+ empty-cells: show;
+ border-spacing: 0;
+ border: 1pt solid #ccc;
+}
+.dokuwiki th,
+.dokuwiki td {
+ padding: 3pt 5pt;
+ margin: 0;
+ vertical-align: top;
+ border: 1pt solid #666;
+ text-align: left;
+}
+[dir=rtl] .dokuwiki th,
+[dir=rtl] .dokuwiki td {
+ text-align: right;
+}
+.dokuwiki th {
+ font-weight: bold;
+}
+
+
+/*____________ a bit of layout ____________*/
+
+#dokuwiki__header {
+ border-bottom: 2pt solid #ccc;
+}
+#dokuwiki__header h1 {
+ font-size: 1.5em;
+}
+#dokuwiki__header h1 a {
+ text-decoration: none;
+}
+#dokuwiki__header h1 img {
+ float: left;
+ margin-right: .5em;
+}
+[dir=rtl] #dokuwiki__header h1 img {
+ float: right;
+ margin-right: 0;
+ margin-left: .5em;
+}
+.dokuwiki div.footnotes {
+ clear: both;
+ border-top: 1pt solid #000;
+ margin-top: 10pt;
+}
diff --git a/lib/tpl/dokuwiki/css/rtl.css b/lib/tpl/dokuwiki/css/rtl.css
new file mode 100644
index 000000000..e0f81bb21
--- /dev/null
+++ b/lib/tpl/dokuwiki/css/rtl.css
@@ -0,0 +1,593 @@
+/**
+ * This file provides layout and design corrections for right-to-left
+ * languages.
+ *
+ * @author Anika Henke <anika@selfthinker.org>
+ */
+
+/*____________ basic ____________*/
+
+[dir=rtl] caption,
+[dir=rtl] td,
+[dir=rtl] th {
+ text-align: right;
+}
+
+[dir=rtl] ul,
+[dir=rtl] ol {
+ padding: 0 1.5em 0 0;
+}
+[dir=rtl] li,
+[dir=rtl] dd {
+ margin: 0 1.5em 0 0;
+}
+[dir=rtl] blockquote {
+ border-width: 0 .25em 0 0;
+}
+
+[dir=rtl] h1,
+[dir=rtl] h2,
+[dir=rtl] h3,
+[dir=rtl] h4,
+[dir=rtl] h5,
+[dir=rtl] h6,
+[dir=rtl] caption,
+[dir=rtl] legend {
+ clear: right;
+}
+
+[dir=rtl] .a11y {
+ left: auto;
+ right: -9000px;
+}
+
+
+/*____________ _imgdetail ____________*/
+
+[dir=rtl] #dokuwiki__detail div.content img {
+ float: right;
+ margin-right: 0;
+ margin-left: 1.5em;
+}
+[dir=rtl] #dokuwiki__detail div.content div.img_detail {
+ float: right
+}
+
+
+/*____________ _mediamanager ____________*/
+
+[dir=rtl] #mediamgr__aside {
+ left: auto;
+ right: 0;
+ border-right-width: 0;
+ border-left: 1px solid __border__;
+}
+[dir=rtl] #mediamgr__content {
+ right: auto;
+ left: 0;
+}
+
+[dir=rtl] #media__opts input {
+ margin-right: 0;
+ margin-left: .3em;
+}
+
+[dir=rtl] #media__tree ul {
+ padding-left: 0;
+ padding-right: .2em;
+}
+[dir=rtl] #media__tree ul li {
+ clear: right;
+ margin-right: 0;
+}
+[dir=rtl] #media__tree ul li img {
+ float: right;
+ padding: .5em 0 0 .3em;
+}
+[dir=rtl] #media__tree ul li li {
+ margin-left: 0;
+ margin-right: 1.5em;
+}
+
+[dir=rtl] #media__content a.mediafile {
+ margin-right: 0;
+ margin-left: 1.5em;
+}
+[dir=rtl] #media__content div.detail div.thumb {
+ float: right;
+ margin: 0 18px 0 .5em;
+}
+[dir=rtl] #media__content form.meta div.metafield {
+ clear: right;
+}
+[dir=rtl] #media__content form.meta label {
+ float: right;
+ clear: right;
+}
+[dir=rtl] #media__content form.meta .edit {
+ float: right;
+}
+[dir=rtl] #media__content form.meta div.buttons {
+ clear: right;
+ margin: .2em 25% 0 0;
+}
+
+
+/*____________ _links ____________*/
+
+/* if link icons don't work as expected, remove the following lines */
+[dir=rtl] .dokuwiki a.urlextern,
+[dir=rtl] .dokuwiki a.windows,
+[dir=rtl] .dokuwiki a.mail,
+[dir=rtl] .dokuwiki a.interwiki,
+[dir=rtl] .dokuwiki a.mediafile {
+ background-position: right center;
+ padding: 0 17px 0 0;
+}
+
+
+/*____________ _toc ____________*/
+
+[dir=rtl] .dokuwiki div.toc {
+ float: left;
+ margin: 0 1.4em 1.4em 0;
+}
+[dir=rtl] .dokuwiki .toc span.toc_open,
+[dir=rtl] .dokuwiki .toc span.toc_close {
+ float: left;
+}
+[dir=rtl] .dokuwiki #toc__inside ul ul {
+ padding-left: 0;
+ padding-right: 1em;
+}
+
+[dir=rtl] .dokuwiki ul.idx {
+ padding-right: 0;
+}
+[dir=rtl] .dokuwiki ul.idx li.closed {
+ list-style-image: url(images/closed-rtl.png);
+}
+
+
+/*____________ _footnotes ____________*/
+
+
+/*____________ _search ____________*/
+
+[dir=rtl] .dokuwiki div.search_quickresult ul li {
+ float: right;
+}
+[dir=rtl] .dokuwiki form.search div.ajax_qsearch {
+ left: auto;
+ right: -13.5em;
+ text-align: right;
+}
+
+
+/*____________ _recent ____________*/
+
+[dir=rtl] .dokuwiki #dw__recent ul li,
+[dir=rtl] .dokuwiki #page__revisions ul li {
+ margin-right: 0;
+}
+
+
+/*____________ _diff ____________*/
+
+
+/*____________ _edit ____________*/
+
+[dir=rtl] .dokuwiki div.toolbar #draft__status {
+ float: left;
+}
+[dir=rtl] .dokuwiki #wiki__editbar #size__ctl {
+ float: left;
+}
+[dir=rtl] .dokuwiki #wiki__editbar #size__ctl img {
+ cursor: pointer;
+}
+[dir=rtl] .dokuwiki #wiki__editbar .editButtons {
+ margin-right: 0;
+ margin-left: 1em;
+}
+
+[dir=rtl] .dokuwiki .secedit {
+ float: left;
+}
+
+
+/*____________ _modal ____________*/
+
+[dir=rtl] #link__wiz_close {
+ float: left;
+}
+[dir=rtl] #link__wiz_result {
+ text-align: right;
+}
+[dir=rtl] #link__wiz_result div.type_u,
+[dir=rtl] #link__wiz_result div.type_f,
+[dir=rtl] #link__wiz_result div.type_d {
+ padding: 3px 22px 3px 3px;
+ background-position: 257px 3px;
+}
+
+
+/*____________ _forms ____________*/
+
+[dir=rtl] .dokuwiki label.block {
+ text-align: left;
+}
+[dir=rtl] .dokuwiki label.simple {
+ text-align: right;
+}
+
+[dir=rtl] form#subscribe__form fieldset {
+ text-align: right;
+}
+
+
+/*____________ _admin ____________*/
+
+[dir=rtl] .dokuwiki ul.admin_tasks {
+ float: right;
+}
+[dir=rtl] .dokuwiki ul.admin_tasks li {
+ padding-left: 0;
+ padding-right: 35px;
+ background-position: right 0;
+}
+
+[dir=rtl] .dokuwiki #admin__version {
+ clear: right;
+ float: left;
+}
+
+
+/*____________ includes ____________*/
+
+
+/*____________ structure ____________*/
+
+[dir=rtl] #dokuwiki__header .headings {
+ float: right;
+ text-align: right;
+}
+[dir=rtl] #dokuwiki__header .tools {
+ float: left;
+ text-align: left;
+}
+
+[dir=rtl] #dokuwiki__aside {
+ float: right;
+}
+[dir=rtl] #dokuwiki__aside > .pad {
+ margin: 0 0 0 1.5em;
+}
+
+[dir=rtl] .hasSidebar #dokuwiki__content {
+ float: left;
+ margin-left: 0;
+ margin-right: -__sidebar_width__;
+}
+[dir=rtl] .hasSidebar #dokuwiki__content > .pad {
+ margin-left: 0;
+ margin-right: __sidebar_width__;
+}
+
+/*____________ design ____________*/
+
+[dir=rtl] #dokuwiki__header h1 img {
+ float: right;
+ margin-left: .5em;
+ margin-right: 0;
+}
+
+[dir=rtl] #dokuwiki__sitetools form.search input.edit {
+ padding: .35em .1em .35em 22px;
+}
+[dir=rtl] #dokuwiki__sitetools form.search input.button {
+ background-position: 5px 0;
+ margin-left: 0;
+ margin-right: -20px;
+}
+
+[dir=rtl] #dokuwiki__usertools {
+ text-align: left;
+ left: 40px;
+ right: auto;
+}
+
+[dir=rtl] #dokuwiki__sitetools {
+ text-align: left;
+}
+
+[dir=rtl] #dokuwiki__aside ul, #dokuwiki__aside ol {
+ padding-right: 0;
+}
+
+[dir=rtl] .dokuwiki .pageId {
+ right: auto;
+ left: -1em;
+}
+
+[dir=rtl] .dokuwiki .docInfo {
+ text-align: left;
+}
+
+[dir=rtl] .dokuwiki div.toolbar button.toolbutton:first-child {
+ border-top-left-radius: 0;
+ border-bottom-left-radius: 0;
+ border-top-right-radius: 4px;
+ border-bottom-right-radius: 4px;
+ border-left-width: 0;
+ border-right-width: 1px;
+}
+[dir=rtl] .dokuwiki div.toolbar button.toolbutton:last-child {
+ border-top-left-radius: 4px;
+ border-bottom-left-radius: 4px;
+ border-top-right-radius: 0;
+ border-bottom-right-radius: 0;
+ border-left-width: 1px;
+}
+
+[dir=rtl] .dokuwiki div.section_highlight {
+ margin-right: -2em;
+ border-right-width: 1em;
+}
+
+[dir=rtl] #dokuwiki__footer .license img {
+ margin: 0 0 0 .5em;
+}
+
+[dir=rtl] .dokuwiki div.toc {
+ margin: -2em 1.4em .5em -2em;
+ border-left-width: 0;
+ border-right: 1px solid __border__;
+}
+[dir=rtl] .dokuwiki #toc__inside ul {
+ padding: 0 1.5em 0 0;
+}
+
+[dir=rtl] #dokuwiki__detail div.img_detail dl dt {
+ float: right;
+ text-align: left;
+ clear: right;
+}
+[dir=rtl] #dokuwiki__detail div.img_detail dl dd {
+ margin-left: 0;
+ margin-right: 9.5em;
+}
+
+
+/*____________ pagetools ____________*/
+
+[dir=rtl] #dokuwiki__usertools {
+ right: auto;
+ left: 40px;
+}
+
+[dir=rtl] #dokuwiki__pagetools {
+ right: auto;
+ left: -40px;
+}
+
+[dir=rtl] #dokuwiki__pagetools ul {
+ right: auto;
+ left: 0;
+ text-align: left;
+}
+
+[dir=rtl] #dokuwiki__pagetools ul li a {
+ padding: 5px 5px 5px 40px;
+ background-position: left 0;
+}
+
+[dir=rtl] #dokuwiki__pagetools:hover ul,
+[dir=rtl] #dokuwiki__pagetools ul li a:focus {
+ box-shadow: -2px 2px 2px __text_alt__;
+}
+
+/* all available icons in sprite */
+[dir=rtl] #dokuwiki__pagetools ul li a.edit {
+ background-position: left 0;
+}
+[dir=rtl] #dokuwiki__pagetools ul li a.edit:hover,
+[dir=rtl] #dokuwiki__pagetools ul li a.edit:active,
+[dir=rtl] #dokuwiki__pagetools ul li a.edit:focus {
+ background-position: left -45px;
+}
+
+[dir=rtl] #dokuwiki__pagetools ul li a.create {
+ background-position: left -90px;
+}
+[dir=rtl] #dokuwiki__pagetools ul li a.create:hover,
+[dir=rtl] #dokuwiki__pagetools ul li a.create:active,
+[dir=rtl] #dokuwiki__pagetools ul li a.create:focus {
+ background-position: left -135px;
+}
+
+[dir=rtl] #dokuwiki__pagetools ul li a.show {
+ background-position: left -270px;
+}
+[dir=rtl] #dokuwiki__pagetools ul li a.show:hover,
+[dir=rtl] #dokuwiki__pagetools ul li a.show:active,
+[dir=rtl] #dokuwiki__pagetools ul li a.show:focus {
+ background-position: left -315px;
+}
+
+[dir=rtl] #dokuwiki__pagetools ul li a.source {
+ background-position: left -360px;
+}
+[dir=rtl] #dokuwiki__pagetools ul li a.source:hover,
+[dir=rtl] #dokuwiki__pagetools ul li a.source:active,
+[dir=rtl] #dokuwiki__pagetools ul li a.source:focus {
+ background-position: left -405px;
+}
+
+[dir=rtl] #dokuwiki__pagetools ul li a.draft {
+ background-position: left -180px;
+}
+[dir=rtl] #dokuwiki__pagetools ul li a.draft:hover,
+[dir=rtl] #dokuwiki__pagetools ul li a.draft:active,
+[dir=rtl] #dokuwiki__pagetools ul li a.draft:focus {
+ background-position: left -225px;
+}
+
+[dir=rtl] #dokuwiki__pagetools ul li a.revs {
+ background-position: left -540px;
+}
+[dir=rtl] #dokuwiki__pagetools ul li a.revs:hover,
+[dir=rtl] #dokuwiki__pagetools ul li a.revs:active,
+[dir=rtl] #dokuwiki__pagetools ul li a.revs:focus,
+.mode_revisions [dir=rtl] #dokuwiki__pagetools ul li a.revs {
+ background-position: left -585px;
+}
+
+[dir=rtl] #dokuwiki__pagetools ul li a.backlink {
+ background-position: left -630px;
+}
+[dir=rtl] #dokuwiki__pagetools ul li a.backlink:hover,
+[dir=rtl] #dokuwiki__pagetools ul li a.backlink:active,
+[dir=rtl] #dokuwiki__pagetools ul li a.backlink:focus,
+.mode_backlink [dir=rtl] #dokuwiki__pagetools ul li a.backlink {
+ background-position: left -675px;
+}
+
+[dir=rtl] #dokuwiki__pagetools ul li a.top {
+ background-position: left -810px;
+}
+[dir=rtl] #dokuwiki__pagetools ul li a.top:hover,
+[dir=rtl] #dokuwiki__pagetools ul li a.top:active,
+[dir=rtl] #dokuwiki__pagetools ul li a.top:focus {
+ background-position: left -855px;
+}
+
+[dir=rtl] #dokuwiki__pagetools ul li a.revert {
+ background-position: left -450px;
+}
+[dir=rtl] #dokuwiki__pagetools ul li a.revert:hover,
+[dir=rtl] #dokuwiki__pagetools ul li a.revert:active,
+[dir=rtl] #dokuwiki__pagetools ul li a.revert:focus,
+.mode_revert [dir=rtl] #dokuwiki__pagetools ul li a.revert {
+ background-position: left -495px;
+}
+
+[dir=rtl] #dokuwiki__pagetools ul li a.subscribe {
+ background-position: left -720px;
+}
+[dir=rtl] #dokuwiki__pagetools ul li a.subscribe:hover,
+[dir=rtl] #dokuwiki__pagetools ul li a.subscribe:active,
+[dir=rtl] #dokuwiki__pagetools ul li a.subscribe:focus,
+.mode_subscribe [dir=rtl] #dokuwiki__pagetools ul li a.subscribe {
+ background-position: left -765px;
+}
+
+[dir=rtl] #dokuwiki__pagetools ul li a.mediaManager {
+ background-position: left -900px;
+}
+[dir=rtl] #dokuwiki__pagetools ul li a.mediaManager:hover,
+[dir=rtl] #dokuwiki__pagetools ul li a.mediaManager:active,
+[dir=rtl] #dokuwiki__pagetools ul li a.mediaManager:focus {
+ background-position: left -945px;
+}
+
+[dir=rtl] #dokuwiki__pagetools ul li a.back {
+ background-position: left -990px;
+}
+[dir=rtl] #dokuwiki__pagetools ul li a.back:hover,
+[dir=rtl] #dokuwiki__pagetools ul li a.back:active,
+[dir=rtl] #dokuwiki__pagetools ul li a.back:focus {
+ background-position: left -1035px;
+}
+
+
+/*____________ content ____________*/
+
+/* section indenting
+[dir=rtl] .dokuwiki .page h1 {margin-left: 0; margin-right: 0;}
+[dir=rtl] .dokuwiki .page h2 {margin-left: 0; margin-right: .666em;}
+[dir=rtl] .dokuwiki .page h3 {margin-left: 0; margin-right: 1.776em;}
+[dir=rtl] .dokuwiki .page h4 {margin-left: 0; margin-right: 3em;}
+[dir=rtl] .dokuwiki .page h5 {margin-left: 0; margin-right: 4.5712em;}
+[dir=rtl] .dokuwiki .page div.level1 {margin-left: 0; margin-right: 0;}
+[dir=rtl] .dokuwiki .page div.level2 {margin-left: 0; margin-right: 1em;}
+[dir=rtl] .dokuwiki .page div.level3 {margin-left: 0; margin-right: 2em;}
+[dir=rtl] .dokuwiki .page div.level4 {margin-left: 0; margin-right: 3em;}
+[dir=rtl] .dokuwiki .page div.level5 {margin-left: 0; margin-right: 4em;}
+*/
+
+[dir=rtl] .dokuwiki dl.code dt,
+[dir=rtl] .dokuwiki dl.file dt {
+ margin-left: 0;
+ margin-right: 1em;
+}
+
+[dir=rtl] .JSpopup ul,
+[dir=rtl] .JSpopup ol {
+ padding-right: 0;
+}
+
+
+/*____________ mobile ____________*/
+
+@media only screen and (max-width: 768px), only screen and (max-device-width: 960px) {
+
+
+[dir=rtl] .hasSidebar #dokuwiki__content,
+[dir=rtl] .hasSidebar #dokuwiki__content > .pad {
+ margin-right: 0;
+}
+
+[dir=rtl] .dokuwiki div.toc {
+ float: none;
+ margin: 0 0 1em 0;
+ border-right-width: 0;
+}
+
+[dir=rtl] .dokuwiki #dw__recent ul,
+[dir=rtl] .dokuwiki #page__revisions ul {
+ padding-right: 0;
+}
+
+
+} /* /@media */
+
+@media only screen and (max-width: 480px), only screen and (max-device-width: 480px) {
+
+
+[dir=rtl] #dokuwiki__header ul.a11y.skip {
+ left: auto !important;
+ right: 0 !important;
+ float: left;
+ padding-right: 0;
+}
+[dir=rtl] #dokuwiki__header ul.a11y.skip li {
+ margin: 0 .35em 0 0;
+}
+
+[dir=rtl] #dokuwiki__header .headings,
+[dir=rtl] #dokuwiki__header .tools {
+ float: none;
+ text-align: right;
+ width: auto;
+}
+[dir=rtl] #dokuwiki__sitetools {
+ text-align: right;
+}
+
+[dir=rtl] #dokuwiki__sitetools form.search {
+ float: right;
+ margin: 0 0 .2em .2em;
+}
+
+[dir=rtl] #dokuwiki__header .mobileTools {
+ float: left;
+}
+
+[dir=rtl] .dokuwiki label.block {
+ text-align: right;
+}
+
+
+
+} /* /@media */
diff --git a/lib/tpl/dokuwiki/css/structure.css b/lib/tpl/dokuwiki/css/structure.css
new file mode 100644
index 000000000..9cca1aa3b
--- /dev/null
+++ b/lib/tpl/dokuwiki/css/structure.css
@@ -0,0 +1,58 @@
+/**
+ * This file provides styles for the general layout structure.
+ *
+ * @author Anika Henke <anika@selfthinker.org>
+ */
+
+body {
+ margin: 0 auto;
+}
+#dokuwiki__site {
+ margin: 0 auto;
+ max-width: __site_width__;
+}
+#dokuwiki__site > .site {
+ padding: 0 .5em;
+}
+
+#dokuwiki__header {
+ width: 100%;
+}
+#dokuwiki__header > .pad {
+}
+ #dokuwiki__header .headings {
+ float: left;
+ }
+ #dokuwiki__header .tools {
+ float: right;
+ text-align: right;
+ }
+
+#dokuwiki__site .wrapper {
+ position: relative;
+}
+
+ #dokuwiki__aside {
+ width: __sidebar_width__;
+ float: left;
+ position: relative;
+ display: block;
+ }
+ #dokuwiki__aside > .pad {
+ margin: 0 1.5em 0 0;
+ }
+
+ .hasSidebar #dokuwiki__content {
+ float: right;
+ margin-left: -__sidebar_width__;
+ width: 100%;
+ }
+ .hasSidebar #dokuwiki__content > .pad {
+ margin-left: __sidebar_width__;
+ }
+
+#dokuwiki__footer {
+ clear: both;
+}
+#dokuwiki__footer > .pad {
+}
diff --git a/lib/tpl/dokuwiki/detail.php b/lib/tpl/dokuwiki/detail.php
new file mode 100644
index 000000000..a3516a7ed
--- /dev/null
+++ b/lib/tpl/dokuwiki/detail.php
@@ -0,0 +1,136 @@
+<?php
+/**
+ * DokuWiki Image Detail Page
+ *
+ * @author Andreas Gohr <andi@splitbrain.org>
+ * @author Anika Henke <anika@selfthinker.org>
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ */
+
+// must be run from within DokuWiki
+if (!defined('DOKU_INC')) die();
+
+$showSidebar = $conf['sidebar'] && page_exists($conf['sidebar']) && ($ACT=='show');
+?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<?php echo $conf['lang']?>"
+ lang="<?php echo $conf['lang']?>" dir="<?php echo $lang['direction'] ?>">
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" /><![endif]-->
+ <title>
+ <?php echo hsc(tpl_img_getTag('IPTC.Headline',$IMG))?>
+ [<?php echo strip_tags($conf['title'])?>]
+ </title>
+ <?php tpl_metaheaders()?>
+ <meta name="viewport" content="width=device-width,initial-scale=1" />
+ <?php echo tpl_favicon(array('favicon', 'mobile')) ?>
+ <?php tpl_includeFile('meta.html') ?>
+</head>
+
+<body>
+ <!--[if lte IE 7 ]><div id="IE7"><![endif]--><!--[if IE 8 ]><div id="IE8"><![endif]-->
+ <div id="dokuwiki__site"><div id="dokuwiki__top"
+ class="dokuwiki site mode_<?php echo $ACT ?> <?php echo ($showSidebar) ? 'hasSidebar' : ''; ?>">
+
+ <?php include('tpl_header.php') ?>
+
+ <div class="wrapper group" id="dokuwiki__detail">
+
+ <!-- ********** CONTENT ********** -->
+ <div id="dokuwiki__content"><div class="pad group">
+
+ <?php if(!$ERROR): ?>
+ <div class="pageId"><span><?php echo hsc(tpl_img_getTag('IPTC.Headline',$IMG)); ?></span></div>
+ <?php endif; ?>
+
+ <div class="page group">
+ <?php tpl_flush() ?>
+ <?php tpl_includeFile('pageheader.html') ?>
+ <!-- detail start -->
+ <?php
+ if($ERROR):
+ echo '<h1>'.$ERROR.'</h1>';
+ else: ?>
+
+ <h1><?php echo nl2br(hsc(tpl_img_getTag('simple.title'))); ?></h1>
+
+ <?php tpl_img(900,700); /* parameters: maximum width, maximum height (and more) */ ?>
+
+ <div class="img_detail">
+ <dl>
+ <?php
+ // @todo: logic should be transferred to backend
+ $config_files = getConfigFiles('mediameta');
+ foreach ($config_files as $config_file) {
+ if(@file_exists($config_file)) {
+ include($config_file);
+ }
+ }
+
+ foreach($fields as $key => $tag){
+ $t = array();
+ if (!empty($tag[0])) {
+ $t = array($tag[0]);
+ }
+ if(is_array($tag[3])) {
+ $t = array_merge($t,$tag[3]);
+ }
+ $value = tpl_img_getTag($t);
+ if ($value) {
+ echo '<dt>'.$lang[$tag[1]].':</dt><dd>';
+ if ($tag[2] == 'date') {
+ echo dformat($value);
+ } else {
+ echo hsc($value);
+ }
+ echo '</dd>';
+ }
+ }
+ ?>
+ </dl>
+ </div>
+ <?php //Comment in for Debug// dbg(tpl_img_getTag('Simple.Raw'));?>
+ <?php endif; ?>
+ </div>
+ <!-- detail stop -->
+ <?php tpl_includeFile('pagefooter.html') ?>
+ <?php tpl_flush() ?>
+
+ <?php /* doesn't make sense like this; @todo: maybe add tpl_imginfo()?
+ <div class="docInfo"><?php tpl_pageinfo(); ?></div>
+ */ ?>
+
+ </div></div><!-- /content -->
+
+ <hr class="a11y" />
+
+ <!-- PAGE ACTIONS -->
+ <?php if (!$ERROR): ?>
+ <div id="dokuwiki__pagetools">
+ <h3 class="a11y"><?php echo $lang['page_tools']; ?></h3>
+ <div class="tools">
+ <ul>
+ <?php // View in media manager; @todo: transfer logic to backend
+ $imgNS = getNS($IMG);
+ $authNS = auth_quickaclcheck("$imgNS:*");
+ if (($authNS >= AUTH_UPLOAD) && function_exists('media_managerURL')) {
+ $mmURL = media_managerURL(array('ns' => $imgNS, 'image' => $IMG));
+ echo '<li><a href="'.$mmURL.'" class="mediaManager"><span>'.$lang['img_manager'].'</span></a></li>';
+ }
+ ?>
+ <?php // Back to [ID]; @todo: transfer logic to backend
+ echo '<li><a href="'.wl($ID).'" class="back"><span>'.$lang['img_backto'].' '.$ID.'</span></a></li>';
+ ?>
+ </ul>
+ </div>
+ </div>
+ <?php endif; ?>
+ </div><!-- /wrapper -->
+
+ <?php include('tpl_footer.php') ?>
+ </div></div><!-- /site -->
+
+ <!--[if ( lte IE 7 | IE 8 ) ]></div><![endif]-->
+</body>
+</html>
diff --git a/lib/tpl/dokuwiki/images/apple-touch-icon.png b/lib/tpl/dokuwiki/images/apple-touch-icon.png
new file mode 100644
index 000000000..45fa4e7b0
--- /dev/null
+++ b/lib/tpl/dokuwiki/images/apple-touch-icon.png
Binary files differ
diff --git a/lib/tpl/dokuwiki/images/bullet.png b/lib/tpl/dokuwiki/images/bullet.png
new file mode 100644
index 000000000..5da537443
--- /dev/null
+++ b/lib/tpl/dokuwiki/images/bullet.png
Binary files differ
diff --git a/lib/tpl/dokuwiki/images/button-css.png b/lib/tpl/dokuwiki/images/button-css.png
new file mode 100644
index 000000000..706325e1c
--- /dev/null
+++ b/lib/tpl/dokuwiki/images/button-css.png
Binary files differ
diff --git a/lib/tpl/dokuwiki/images/button-donate.gif b/lib/tpl/dokuwiki/images/button-donate.gif
new file mode 100644
index 000000000..bba284e21
--- /dev/null
+++ b/lib/tpl/dokuwiki/images/button-donate.gif
Binary files differ
diff --git a/lib/tpl/dokuwiki/images/button-dw.png b/lib/tpl/dokuwiki/images/button-dw.png
new file mode 100644
index 000000000..97272d968
--- /dev/null
+++ b/lib/tpl/dokuwiki/images/button-dw.png
Binary files differ
diff --git a/lib/tpl/dokuwiki/images/button-php.gif b/lib/tpl/dokuwiki/images/button-php.gif
new file mode 100644
index 000000000..19aefb08f
--- /dev/null
+++ b/lib/tpl/dokuwiki/images/button-php.gif
Binary files differ
diff --git a/lib/tpl/dokuwiki/images/button-rss.png b/lib/tpl/dokuwiki/images/button-rss.png
new file mode 100644
index 000000000..f2438043f
--- /dev/null
+++ b/lib/tpl/dokuwiki/images/button-rss.png
Binary files differ
diff --git a/lib/tpl/dokuwiki/images/button-xhtml.png b/lib/tpl/dokuwiki/images/button-xhtml.png
new file mode 100644
index 000000000..ec686442c
--- /dev/null
+++ b/lib/tpl/dokuwiki/images/button-xhtml.png
Binary files differ
diff --git a/lib/tpl/dokuwiki/images/closed-rtl.png b/lib/tpl/dokuwiki/images/closed-rtl.png
new file mode 100644
index 000000000..85ebd59e1
--- /dev/null
+++ b/lib/tpl/dokuwiki/images/closed-rtl.png
Binary files differ
diff --git a/lib/tpl/dokuwiki/images/closed.png b/lib/tpl/dokuwiki/images/closed.png
new file mode 100644
index 000000000..3691ebc17
--- /dev/null
+++ b/lib/tpl/dokuwiki/images/closed.png
Binary files differ
diff --git a/lib/tpl/dokuwiki/images/favicon.ico b/lib/tpl/dokuwiki/images/favicon.ico
new file mode 100644
index 000000000..8b9616abb
--- /dev/null
+++ b/lib/tpl/dokuwiki/images/favicon.ico
Binary files differ
diff --git a/lib/tpl/dokuwiki/images/link_icon.gif b/lib/tpl/dokuwiki/images/link_icon.gif
new file mode 100644
index 000000000..815ccb1b1
--- /dev/null
+++ b/lib/tpl/dokuwiki/images/link_icon.gif
Binary files differ
diff --git a/lib/tpl/dokuwiki/images/logo.png b/lib/tpl/dokuwiki/images/logo.png
new file mode 100644
index 000000000..8b794dd64
--- /dev/null
+++ b/lib/tpl/dokuwiki/images/logo.png
Binary files differ
diff --git a/lib/tpl/dokuwiki/images/mail_icon.gif b/lib/tpl/dokuwiki/images/mail_icon.gif
new file mode 100644
index 000000000..50a87a9a0
--- /dev/null
+++ b/lib/tpl/dokuwiki/images/mail_icon.gif
Binary files differ
diff --git a/lib/tpl/dokuwiki/images/open.png b/lib/tpl/dokuwiki/images/open.png
new file mode 100644
index 000000000..40ff129be
--- /dev/null
+++ b/lib/tpl/dokuwiki/images/open.png
Binary files differ
diff --git a/lib/tpl/dokuwiki/images/page-background.svg b/lib/tpl/dokuwiki/images/page-background.svg
new file mode 100644
index 000000000..086341ddf
--- /dev/null
+++ b/lib/tpl/dokuwiki/images/page-background.svg
@@ -0,0 +1,8 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="100%" height="100%">
+ <linearGradient id="g" x1="0%" y1="0%" x2="0%" y2="100%">
+ <stop offset="0" stop-color="#dddddd" />
+ <stop offset="0.1" stop-color="#eeeeee" />
+ <stop offset="0.4" stop-color="#fbfaf9" />
+ </linearGradient>
+ <rect x="0" y="0" width="100%" height="100%" fill="url(#g)" />
+</svg> \ No newline at end of file
diff --git a/lib/tpl/dokuwiki/images/pagetools-build.php b/lib/tpl/dokuwiki/images/pagetools-build.php
new file mode 100644
index 000000000..1b7262ad5
--- /dev/null
+++ b/lib/tpl/dokuwiki/images/pagetools-build.php
@@ -0,0 +1,121 @@
+<?php
+/**
+ * This script generates a sprite from the unprocessed pagetool icons by combining them
+ * and overlaying a color layer for the active state.
+ *
+ * This script requires a current libGD to be available.
+ *
+ * The color for the active state is read from the style.ini's __link__ replacement
+ *
+ * The final sprite is optimized with optipng if available.
+ *
+ * @author Andreas Gohr <andi@splitbrain.org>
+ * @todo Maybe add some more error checking
+ */
+$GAMMA = 0.8;
+$OPTIPNG = '/usr/bin/optipng';
+
+// load input images
+$input = glob('pagetools/*.png');
+sort($input);
+$cnt = count($input);
+if(!$cnt){
+ die("No input images found. This script needs to be called from within the image directory!\n");
+}
+
+// create destination image
+$DST = imagecreatetruecolor(30,$cnt*45*2);
+imagesavealpha($DST, true);
+$C_trans = imagecolorallocatealpha($DST, 0, 0, 0, 127);
+imagefill($DST, 0, 0, $C_trans);
+
+// load highlight color from style.ini
+$ini = parse_ini_file('../style.ini',true);
+$COLOR = hex2rgb($ini['replacements']['__link__']);
+$C_active = imagecolorallocate($DST, $COLOR['r'],$COLOR['g'],$COLOR['b']);
+
+// add all the icons to the sprite image
+for($i=0; $i<$cnt; $i++){
+ $base = $i*90;
+
+ $IN = imagecreatefrompng($input[$i]);
+ imagesavealpha($IN, true);
+ imagecolorscale($IN,$GAMMA);
+ imagecopy($DST,$IN, 0,$base, 0,0, 30,30);
+ imagedestroy($IN);
+
+ $IN = imagecreatefrompng($input[$i]);
+ imagesavealpha($IN, true);
+ imagecolorscale($IN,$GAMMA);
+ imagecopy($DST,$IN, 0,$base+45, 0,0, 30,30);
+ imagedestroy($IN);
+
+ imagelayereffect($DST, IMG_EFFECT_OVERLAY);
+ imagefilledrectangle($DST, 0,$base+45, 30,$base+45+30, $C_active);
+ imagelayereffect($DST, IMG_EFFECT_NORMAL);
+}
+
+// output sprite
+imagepng($DST,'pagetools-sprite.png');
+imagedestroy($DST);
+
+// optimize if possible
+if(is_executable($OPTIPNG)){
+ system("$OPTIPNG -o5 'pagetools-sprite.png'");
+}
+
+/**
+ * Convert a hex color code to an rgb array
+ */
+function hex2rgb($hex) {
+ // strip hash
+ $hex = str_replace('#', '', $hex);
+
+ // normalize short codes
+ if(strlen($hex) == 3){
+ $hex = substr($hex,0,1).
+ substr($hex,0,1).
+ substr($hex,1,1).
+ substr($hex,1,1).
+ substr($hex,2,1).
+ substr($hex,2,1);
+ }
+
+ // calc rgb
+ return array(
+ 'r' => hexdec(substr($hex, 0, 2)),
+ 'g' => hexdec(substr($hex, 2, 2)),
+ 'b' => hexdec(substr($hex, 4, 2))
+ );
+}
+
+/**
+ * Scale (darken/lighten) a given image
+ *
+ * @param ressource $img The truetype GD image to work on
+ * @param float $scale Scale the colors by this value ( <1 darkens, >1 lightens)
+ */
+function imagecolorscale(&$img, $scale){
+ $w = imagesx($img);
+ $h = imagesy($img);
+
+ imagealphablending($img, false);
+ for($x = 0; $x < $w; $x++){
+ for($y = 0; $y < $h; $y++){
+ $rgba = imagecolorat($img, $x, $y);
+ $a = ($rgba >> 24) & 0xFF;
+ $r = ($rgba >> 16) & 0xFF;
+ $g = ($rgba >> 8) & 0xFF;
+ $b = $rgba & 0xFF;
+
+ $r = max(min(round($r*$scale),255),0);
+ $g = max(min(round($g*$scale),255),0);
+ $b = max(min(round($b*$scale),255),0);
+
+ $color = imagecolorallocatealpha($img, $r, $g, $b, $a);
+ imagesetpixel($img, $x, $y, $color);
+ }
+ }
+ imagealphablending($img, true);
+}
+
diff --git a/lib/tpl/dokuwiki/images/pagetools-sprite.png b/lib/tpl/dokuwiki/images/pagetools-sprite.png
new file mode 100644
index 000000000..bbd7fd361
--- /dev/null
+++ b/lib/tpl/dokuwiki/images/pagetools-sprite.png
Binary files differ
diff --git a/lib/tpl/dokuwiki/images/pagetools/01_edit.png b/lib/tpl/dokuwiki/images/pagetools/01_edit.png
new file mode 100644
index 000000000..ad4a737d8
--- /dev/null
+++ b/lib/tpl/dokuwiki/images/pagetools/01_edit.png
Binary files differ
diff --git a/lib/tpl/dokuwiki/images/pagetools/02_create.png b/lib/tpl/dokuwiki/images/pagetools/02_create.png
new file mode 100644
index 000000000..e4fc5d3b1
--- /dev/null
+++ b/lib/tpl/dokuwiki/images/pagetools/02_create.png
Binary files differ
diff --git a/lib/tpl/dokuwiki/images/pagetools/03_draft.png b/lib/tpl/dokuwiki/images/pagetools/03_draft.png
new file mode 100644
index 000000000..a13d8c3b4
--- /dev/null
+++ b/lib/tpl/dokuwiki/images/pagetools/03_draft.png
Binary files differ
diff --git a/lib/tpl/dokuwiki/images/pagetools/04_show.png b/lib/tpl/dokuwiki/images/pagetools/04_show.png
new file mode 100644
index 000000000..6f64b1bd1
--- /dev/null
+++ b/lib/tpl/dokuwiki/images/pagetools/04_show.png
Binary files differ
diff --git a/lib/tpl/dokuwiki/images/pagetools/05_source.png b/lib/tpl/dokuwiki/images/pagetools/05_source.png
new file mode 100644
index 000000000..bcc4fa21f
--- /dev/null
+++ b/lib/tpl/dokuwiki/images/pagetools/05_source.png
Binary files differ
diff --git a/lib/tpl/dokuwiki/images/pagetools/06_revert.png b/lib/tpl/dokuwiki/images/pagetools/06_revert.png
new file mode 100644
index 000000000..7b8457e5e
--- /dev/null
+++ b/lib/tpl/dokuwiki/images/pagetools/06_revert.png
Binary files differ
diff --git a/lib/tpl/dokuwiki/images/pagetools/07_revisions.png b/lib/tpl/dokuwiki/images/pagetools/07_revisions.png
new file mode 100644
index 000000000..d918bce05
--- /dev/null
+++ b/lib/tpl/dokuwiki/images/pagetools/07_revisions.png
Binary files differ
diff --git a/lib/tpl/dokuwiki/images/pagetools/08_backlink.png b/lib/tpl/dokuwiki/images/pagetools/08_backlink.png
new file mode 100644
index 000000000..2c0823a72
--- /dev/null
+++ b/lib/tpl/dokuwiki/images/pagetools/08_backlink.png
Binary files differ
diff --git a/lib/tpl/dokuwiki/images/pagetools/09_subscribe.png b/lib/tpl/dokuwiki/images/pagetools/09_subscribe.png
new file mode 100644
index 000000000..30e039dbc
--- /dev/null
+++ b/lib/tpl/dokuwiki/images/pagetools/09_subscribe.png
Binary files differ
diff --git a/lib/tpl/dokuwiki/images/pagetools/10_top.png b/lib/tpl/dokuwiki/images/pagetools/10_top.png
new file mode 100644
index 000000000..e4bf1d49d
--- /dev/null
+++ b/lib/tpl/dokuwiki/images/pagetools/10_top.png
Binary files differ
diff --git a/lib/tpl/dokuwiki/images/pagetools/11_mediamanager.png b/lib/tpl/dokuwiki/images/pagetools/11_mediamanager.png
new file mode 100644
index 000000000..36116802f
--- /dev/null
+++ b/lib/tpl/dokuwiki/images/pagetools/11_mediamanager.png
Binary files differ
diff --git a/lib/tpl/dokuwiki/images/pagetools/12_back.png b/lib/tpl/dokuwiki/images/pagetools/12_back.png
new file mode 100644
index 000000000..d154651ec
--- /dev/null
+++ b/lib/tpl/dokuwiki/images/pagetools/12_back.png
Binary files differ
diff --git a/lib/tpl/dokuwiki/images/pagetools/license.txt b/lib/tpl/dokuwiki/images/pagetools/license.txt
new file mode 100644
index 000000000..299624c62
--- /dev/null
+++ b/lib/tpl/dokuwiki/images/pagetools/license.txt
@@ -0,0 +1,4 @@
+Icon set: iPhone toolbar icons
+Designer: TheWorkingGroup.ca
+License: Creative Commons Attribution-Share Alike License [http://creativecommons.org/licenses/by-sa/3.0/]
+URL: http://blog.twg.ca/2009/09/free-iphone-toolbar-icons/
diff --git a/lib/tpl/dokuwiki/images/resizecol.png b/lib/tpl/dokuwiki/images/resizecol.png
new file mode 100644
index 000000000..f0111507c
--- /dev/null
+++ b/lib/tpl/dokuwiki/images/resizecol.png
Binary files differ
diff --git a/lib/tpl/dokuwiki/images/search.png b/lib/tpl/dokuwiki/images/search.png
new file mode 100644
index 000000000..2adfc7357
--- /dev/null
+++ b/lib/tpl/dokuwiki/images/search.png
Binary files differ
diff --git a/lib/tpl/dokuwiki/images/toc-arrows.png b/lib/tpl/dokuwiki/images/toc-arrows.png
new file mode 100644
index 000000000..9f441eb26
--- /dev/null
+++ b/lib/tpl/dokuwiki/images/toc-arrows.png
Binary files differ
diff --git a/lib/tpl/dokuwiki/images/toc-bullet.png b/lib/tpl/dokuwiki/images/toc-bullet.png
new file mode 100644
index 000000000..a6f0169c3
--- /dev/null
+++ b/lib/tpl/dokuwiki/images/toc-bullet.png
Binary files differ
diff --git a/lib/tpl/dokuwiki/images/windows.gif b/lib/tpl/dokuwiki/images/windows.gif
new file mode 100644
index 000000000..4f12acce1
--- /dev/null
+++ b/lib/tpl/dokuwiki/images/windows.gif
Binary files differ
diff --git a/lib/tpl/dokuwiki/main.php b/lib/tpl/dokuwiki/main.php
new file mode 100644
index 000000000..57c94f174
--- /dev/null
+++ b/lib/tpl/dokuwiki/main.php
@@ -0,0 +1,92 @@
+<?php
+/**
+ * DokuWiki Default Template 2012
+ *
+ * @link http://dokuwiki.org/template
+ * @author Anika Henke <anika@selfthinker.org>
+ * @author Clarence Lee <clarencedglee@gmail.com>
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ */
+
+if (!defined('DOKU_INC')) die(); /* must be run from within DokuWiki */
+
+$showSidebar = $conf['sidebar'] && page_exists($conf['sidebar']) && ($ACT=='show');
+?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<?php echo $conf['lang'] ?>"
+ lang="<?php echo $conf['lang'] ?>" dir="<?php echo $lang['direction'] ?>">
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" /><![endif]-->
+ <title><?php tpl_pagetitle() ?> [<?php echo strip_tags($conf['title']) ?>]</title>
+ <?php tpl_metaheaders() ?>
+ <meta name="viewport" content="width=device-width,initial-scale=1" />
+ <?php echo tpl_favicon(array('favicon', 'mobile')) ?>
+ <?php tpl_includeFile('meta.html') ?>
+</head>
+
+<body>
+ <!--[if lte IE 7 ]><div id="IE7"><![endif]--><!--[if IE 8 ]><div id="IE8"><![endif]-->
+ <div id="dokuwiki__site"><div id="dokuwiki__top"
+ class="dokuwiki site mode_<?php echo $ACT ?> <?php echo ($showSidebar) ? 'hasSidebar' : ''; ?>">
+
+ <?php include('tpl_header.php') ?>
+
+ <div class="wrapper group">
+
+ <?php if($showSidebar): ?>
+ <!-- ********** ASIDE ********** -->
+ <div id="dokuwiki__aside"><div class="pad include group">
+ <?php tpl_flush() ?>
+ <?php tpl_includeFile('sidebarheader.html') ?>
+ <?php tpl_include_page($conf['sidebar']) ?>
+ <?php tpl_includeFile('sidebarfooter.html') ?>
+ </div></div><!-- /aside -->
+ <?php endif; ?>
+
+ <!-- ********** CONTENT ********** -->
+ <div id="dokuwiki__content"><div class="pad group">
+
+ <div class="pageId"><span><?php echo hsc($ID) ?></span></div>
+
+ <div class="page group">
+ <?php tpl_flush() ?>
+ <?php tpl_includeFile('pageheader.html') ?>
+ <!-- wikipage start -->
+ <?php tpl_content() ?>
+ <!-- wikipage stop -->
+ <?php tpl_includeFile('pagefooter.html') ?>
+ </div>
+
+ <div class="docInfo"><?php tpl_pageinfo() ?></div>
+
+ <?php tpl_flush() ?>
+ </div></div><!-- /content -->
+
+ <hr class="a11y" />
+
+ <!-- PAGE ACTIONS -->
+ <div id="dokuwiki__pagetools">
+ <h3 class="a11y"><?php echo $lang['page_tools']; ?></h3>
+ <div class="tools">
+ <ul>
+ <?php
+ tpl_action('edit', 1, 'li', 0, '<span>', '</span>');
+ tpl_action('revert', 1, 'li', 0, '<span>', '</span>');
+ tpl_action('revisions', 1, 'li', 0, '<span>', '</span>');
+ tpl_action('backlink', 1, 'li', 0, '<span>', '</span>');
+ tpl_action('subscribe', 1, 'li', 0, '<span>', '</span>');
+ tpl_action('top', 1, 'li', 0, '<span>', '</span>');
+ ?>
+ </ul>
+ </div>
+ </div>
+ </div><!-- /wrapper -->
+
+ <?php include('tpl_footer.php') ?>
+ </div></div><!-- /site -->
+
+ <div class="no"><?php tpl_indexerWebBug() /* provide DokuWiki housekeeping, required in all templates */ ?></div>
+ <!--[if ( lte IE 7 | IE 8 ) ]></div><![endif]-->
+</body>
+</html>
diff --git a/lib/tpl/dokuwiki/mediamanager.php b/lib/tpl/dokuwiki/mediamanager.php
new file mode 100644
index 000000000..1f3b9661b
--- /dev/null
+++ b/lib/tpl/dokuwiki/mediamanager.php
@@ -0,0 +1,47 @@
+<?php
+/**
+ * DokuWiki Media Manager Popup
+ *
+ * @author Andreas Gohr <andi@splitbrain.org>
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ */
+// must be run from within DokuWiki
+if (!defined('DOKU_INC')) die();
+
+?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<?php echo $conf['lang']?>"
+ lang="<?php echo $conf['lang']?>" dir="<?php echo $lang['direction'] ?>" class="popup">
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" /><![endif]-->
+ <title>
+ <?php echo hsc($lang['mediaselect'])?>
+ [<?php echo strip_tags($conf['title'])?>]
+ </title>
+ <?php tpl_metaheaders()?>
+ <meta name="viewport" content="width=device-width,initial-scale=1" />
+ <?php echo tpl_favicon(array('favicon', 'mobile')) ?>
+ <?php tpl_includeFile('meta.html') ?>
+</head>
+
+<body>
+ <!--[if lte IE 7 ]><div id="IE7"><![endif]--><!--[if IE 8 ]><div id="IE8"><![endif]-->
+ <div id="media__manager" class="dokuwiki">
+ <?php html_msgarea() ?>
+ <div id="mediamgr__aside"><div class="pad">
+ <h1><?php echo hsc($lang['mediaselect'])?></h1>
+
+ <?php /* keep the id! additional elements are inserted via JS here */?>
+ <div id="media__opts"></div>
+
+ <?php tpl_mediaTree() ?>
+ </div></div>
+
+ <div id="mediamgr__content"><div class="pad">
+ <?php tpl_mediaContent() ?>
+ </div></div>
+ </div>
+ <!--[if ( lte IE 7 | IE 8 ) ]></div><![endif]-->
+</body>
+</html>
diff --git a/lib/tpl/dokuwiki/style.ini b/lib/tpl/dokuwiki/style.ini
new file mode 100644
index 000000000..b8e55bcc8
--- /dev/null
+++ b/lib/tpl/dokuwiki/style.ini
@@ -0,0 +1,73 @@
+; Please see http://www.php.net/manual/en/function.parse-ini-file.php
+; for limitations of the ini format used here
+
+; Define the stylesheets your template uses here. The second value
+; defines for which output media the style should be loaded. Currently
+; print, screen and rtl are supported. rtl styles are loaded additionally
+; to screen styles if a right-to-left language is selected (eg. Hebrew).
+
+[stylesheets]
+
+css/basic.css = screen
+css/_imgdetail.css = screen
+css/_media_popup.css = screen
+css/_media_fullscreen.css = screen
+css/_fileuploader.css = screen
+css/_tabs.css = screen
+css/_links.css = screen
+css/_toc.css = screen
+css/_footnotes.css = screen
+css/_search.css = screen
+css/_recent.css = screen
+css/_diff.css = screen
+css/_edit.css = screen
+css/_modal.css = screen
+css/_forms.css = screen
+css/_admin.css = screen
+css/structure.css = screen
+css/design.css = screen
+css/pagetools.css = screen
+css/content.css = screen
+css/includes.css = screen
+css/mobile.css = screen
+css/rtl.css = screen
+
+css/print.css = print
+
+
+; This section is used to configure some placeholder values used in
+; the stylesheets. Changing this file is the simplest method to
+; give your wiki a new look.
+
+[replacements]
+
+;--------------------------------------------------------------------------
+;------ guaranteed dokuwiki color placeholders that every plugin can use
+
+; main text and background colors
+__text__ = "#333"
+__background__ = "#fff"
+; alternative text and background colors
+__text_alt__ = "#999"
+__background_alt__ = "#eee"
+; neutral text and background colors
+__text_neu__ = "#666"
+__background_neu__ = "#ddd"
+; border color
+__border__ = "#ccc"
+
+;--------------------------------------------------------------------------
+
+__background_site__ = "#fbfaf9"
+
+; these are used for links
+__link__ = "#2b73b7"
+__existing__ = "#080"
+__missing__ = "#d30"
+
+; highlighting search snippets
+__highlight__ = "#ff9"
+
+; sidebar width
+__site_width__ = "75em"
+__sidebar_width__ = "16em"
diff --git a/lib/tpl/dokuwiki/template.info.txt b/lib/tpl/dokuwiki/template.info.txt
new file mode 100644
index 000000000..3f904c6c8
--- /dev/null
+++ b/lib/tpl/dokuwiki/template.info.txt
@@ -0,0 +1,7 @@
+base dokuwiki
+author Anika Henke, Andreas Gohr, Clarence Lee
+email andi@splitbrain.org
+date 2012-03-24
+name DokuWiki Template
+desc DokuWiki's default template since 2012
+url http://www.dokuwiki.org/template:dokuwiki
diff --git a/lib/tpl/dokuwiki/tpl_footer.php b/lib/tpl/dokuwiki/tpl_footer.php
new file mode 100644
index 000000000..41ddabda2
--- /dev/null
+++ b/lib/tpl/dokuwiki/tpl_footer.php
@@ -0,0 +1,23 @@
+<!-- ********** FOOTER ********** -->
+<div id="dokuwiki__footer"><div class="pad">
+ <?php tpl_license(''); // license text ?>
+
+ <div class="buttons">
+ <?php
+ tpl_license('button', true, false, false); // license button, no wrapper
+ $target = ($conf['target']['extern']) ? 'target="'.$conf['target']['extern'].'"' : '';
+ ?>
+ <a href="http://www.dokuwiki.org/donate" title="Donate" <?php echo $target?>><img
+ src="<?php echo tpl_basedir(); ?>images/button-donate.gif" width="80" height="15" alt="Donate" /></a>
+ <a href="http://www.php.net" title="Powered by PHP" <?php echo $target?>><img
+ src="<?php echo tpl_basedir(); ?>images/button-php.gif" width="80" height="15" alt="Powered by PHP" /></a>
+ <a href="http://validator.w3.org/check/referer" title="Valid XHTML 1.0" <?php echo $target?>><img
+ src="<?php echo tpl_basedir(); ?>images/button-xhtml.png" width="80" height="15" alt="Valid XHTML 1.0" /></a>
+ <a href="http://jigsaw.w3.org/css-validator/check/referer?profile=css3" title="Valid CSS" <?php echo $target?>><img
+ src="<?php echo tpl_basedir(); ?>images/button-css.png" width="80" height="15" alt="Valid CSS" /></a>
+ <a href="http://dokuwiki.org/" title="Driven by DokuWiki" <?php echo $target?>><img
+ src="<?php echo tpl_basedir(); ?>images/button-dw.png" width="80" height="15" alt="Driven by DokuWiki" /></a>
+ </div>
+</div></div><!-- /footer -->
+
+<?php tpl_includeFile('footer.html') ?>
diff --git a/lib/tpl/dokuwiki/tpl_header.php b/lib/tpl/dokuwiki/tpl_header.php
new file mode 100644
index 000000000..1d2517ee1
--- /dev/null
+++ b/lib/tpl/dokuwiki/tpl_header.php
@@ -0,0 +1,81 @@
+<!-- ********** HEADER ********** -->
+<div id="dokuwiki__header"><div class="pad group">
+
+ <?php html_msgarea() ?>
+ <?php tpl_includeFile('header.html') ?>
+
+ <div class="headings group">
+ <ul class="a11y skip">
+ <li><a href="#dokuwiki__content"><?php echo $lang['skip_to_content']; ?></a></li>
+ </ul>
+
+ <h1><?php
+ // get logo either out of the template images folder or data/media folder
+ $logoSize = array();
+ $logo = tpl_getMediaFile(array(':wiki:logo.png', 'images/logo.png'), false, $logoSize);
+
+ // display logo and wiki title in a link to the home page
+ tpl_link(
+ wl(),
+ '<img src="'.$logo.'" '.$logoSize[3].' alt="" /> <span>'.$conf['title'].'</span>',
+ 'accesskey="h" title="[H]"'
+ );
+ ?></h1>
+ <?php if ($conf['tagline']): ?>
+ <p class="claim"><?php echo $conf['tagline']; ?></p>
+ <?php endif ?>
+ </div>
+
+ <div class="tools group">
+ <!-- USER TOOLS -->
+ <?php if ($conf['useacl']): ?>
+ <div id="dokuwiki__usertools">
+ <h3 class="a11y"><?php echo $lang['user_tools']; ?></h3>
+ <ul>
+ <?php
+ if ($_SERVER['REMOTE_USER']) {
+ echo '<li class="user">';
+ tpl_userinfo(); /* 'Logged in as ...' */
+ echo '</li>';
+ }
+ tpl_action('admin', 1, 'li');
+ tpl_action('profile', 1, 'li');
+ tpl_action('register', 1, 'li');
+ tpl_action('login', 1, 'li');
+ ?>
+ </ul>
+ </div>
+ <?php endif ?>
+
+ <!-- SITE TOOLS -->
+ <div id="dokuwiki__sitetools">
+ <h3 class="a11y"><?php echo $lang['site_tools']; ?></h3>
+ <?php tpl_searchform(); ?>
+ <div class="mobileTools">
+ <?php tpl_actiondropdown($lang['tools']); ?>
+ </div>
+ <ul>
+ <?php
+ tpl_action('recent', 1, 'li');
+ tpl_action('media', 1, 'li');
+ tpl_action('index', 1, 'li');
+ ?>
+ </ul>
+ </div>
+
+ </div>
+
+ <!-- BREADCRUMBS -->
+ <?php if($conf['breadcrumbs'] || $conf['youarehere']): ?>
+ <div class="breadcrumbs">
+ <?php if($conf['youarehere']): ?>
+ <div class="youarehere"><?php tpl_youarehere() ?></div>
+ <?php endif ?>
+ <?php if($conf['breadcrumbs']): ?>
+ <div class="trace"><?php tpl_breadcrumbs() ?></div>
+ <?php endif ?>
+ </div>
+ <?php endif ?>
+
+ <hr class="a11y" />
+</div></div><!-- /header -->