summaryrefslogtreecommitdiff
path: root/lib/plugins
diff options
context:
space:
mode:
Diffstat (limited to 'lib/plugins')
-rw-r--r--lib/plugins/acl/admin.php27
-rw-r--r--lib/plugins/acl/lang/ca/lang.php4
-rw-r--r--lib/plugins/acl/lang/cs/help.txt13
-rw-r--r--lib/plugins/acl/lang/eu/lang.php5
-rw-r--r--lib/plugins/acl/lang/ja/help.txt15
-rw-r--r--lib/plugins/acl/lang/ko/lang.php8
-rw-r--r--lib/plugins/acl/lang/lt/lang.php4
-rw-r--r--lib/plugins/acl/lang/ro/lang.php5
-rw-r--r--lib/plugins/acl/pix/group.pngbin700 -> 699 bytes
-rw-r--r--lib/plugins/acl/pix/ns.pngbin800 -> 799 bytes
-rw-r--r--lib/plugins/acl/pix/user.pngbin653 -> 650 bytes
-rw-r--r--lib/plugins/acl/plugin.info.txt2
-rw-r--r--lib/plugins/acl/remote.php11
-rw-r--r--lib/plugins/acl/script.js2
-rw-r--r--lib/plugins/acl/style.css4
-rw-r--r--lib/plugins/action.php2
-rw-r--r--lib/plugins/admin.php44
-rw-r--r--lib/plugins/auth.php13
-rw-r--r--lib/plugins/authad/action.php2
-rw-r--r--lib/plugins/authad/adLDAP/adLDAP.php2
-rw-r--r--lib/plugins/authad/auth.php188
-rw-r--r--lib/plugins/authad/lang/ar/lang.php2
-rw-r--r--lib/plugins/authad/lang/bg/lang.php8
-rw-r--r--lib/plugins/authad/lang/ca/lang.php8
-rw-r--r--lib/plugins/authad/lang/cs/lang.php2
-rw-r--r--lib/plugins/authad/lang/cs/settings.php2
-rw-r--r--lib/plugins/authad/lang/da/lang.php10
-rw-r--r--lib/plugins/authad/lang/de-informal/lang.php11
-rw-r--r--lib/plugins/authad/lang/de/lang.php4
-rw-r--r--lib/plugins/authad/lang/el/lang.php8
-rw-r--r--lib/plugins/authad/lang/en/lang.php6
-rw-r--r--lib/plugins/authad/lang/eo/lang.php1
-rw-r--r--lib/plugins/authad/lang/es/lang.php5
-rw-r--r--lib/plugins/authad/lang/et/lang.php8
-rw-r--r--lib/plugins/authad/lang/eu/lang.php8
-rw-r--r--lib/plugins/authad/lang/fa/lang.php2
-rw-r--r--lib/plugins/authad/lang/fa/settings.php10
-rw-r--r--lib/plugins/authad/lang/fi/lang.php8
-rw-r--r--lib/plugins/authad/lang/fr/lang.php5
-rw-r--r--lib/plugins/authad/lang/gl/lang.php8
-rw-r--r--lib/plugins/authad/lang/he/lang.php10
-rw-r--r--lib/plugins/authad/lang/he/settings.php8
-rw-r--r--lib/plugins/authad/lang/hr/lang.php3
-rw-r--r--lib/plugins/authad/lang/hu/lang.php1
-rw-r--r--lib/plugins/authad/lang/it/lang.php8
-rw-r--r--lib/plugins/authad/lang/ja/lang.php5
-rw-r--r--lib/plugins/authad/lang/ka/lang.php8
-rw-r--r--lib/plugins/authad/lang/ko/lang.php3
-rw-r--r--lib/plugins/authad/lang/lv/lang.php1
-rw-r--r--lib/plugins/authad/lang/nl/lang.php5
-rw-r--r--lib/plugins/authad/lang/no/lang.php13
-rw-r--r--lib/plugins/authad/lang/no/settings.php5
-rw-r--r--lib/plugins/authad/lang/pl/lang.php8
-rw-r--r--lib/plugins/authad/lang/pl/settings.php1
-rw-r--r--lib/plugins/authad/lang/pt-br/lang.php4
-rw-r--r--lib/plugins/authad/lang/pt/lang.php5
-rw-r--r--lib/plugins/authad/lang/pt/settings.php6
-rw-r--r--lib/plugins/authad/lang/ro/lang.php8
-rw-r--r--lib/plugins/authad/lang/ru/lang.php4
-rw-r--r--lib/plugins/authad/lang/ru/settings.php11
-rw-r--r--lib/plugins/authad/lang/sk/lang.php8
-rw-r--r--lib/plugins/authad/lang/sl/lang.php8
-rw-r--r--lib/plugins/authad/lang/sv/lang.php8
-rw-r--r--lib/plugins/authad/lang/tr/lang.php8
-rw-r--r--lib/plugins/authad/lang/zh-tw/lang.php2
-rw-r--r--lib/plugins/authad/lang/zh/lang.php4
-rw-r--r--lib/plugins/authad/plugin.info.txt2
-rw-r--r--lib/plugins/authldap/auth.php34
-rw-r--r--lib/plugins/authldap/conf/default.php6
-rw-r--r--lib/plugins/authldap/conf/metadata.php4
-rw-r--r--lib/plugins/authldap/lang/cs/settings.php10
-rw-r--r--lib/plugins/authldap/lang/da/settings.php5
-rw-r--r--lib/plugins/authldap/lang/de/lang.php9
-rw-r--r--lib/plugins/authldap/lang/de/settings.php7
-rw-r--r--lib/plugins/authldap/lang/en/lang.php11
-rw-r--r--lib/plugins/authldap/lang/en/settings.php6
-rw-r--r--lib/plugins/authldap/lang/es/lang.php8
-rw-r--r--lib/plugins/authldap/lang/es/settings.php5
-rw-r--r--lib/plugins/authldap/lang/fa/settings.php10
-rw-r--r--lib/plugins/authldap/lang/fr/lang.php9
-rw-r--r--lib/plugins/authldap/lang/fr/settings.php6
-rw-r--r--lib/plugins/authldap/lang/he/settings.php4
-rw-r--r--lib/plugins/authldap/lang/hr/lang.php9
-rw-r--r--lib/plugins/authldap/lang/hr/settings.php5
-rw-r--r--lib/plugins/authldap/lang/ja/lang.php9
-rw-r--r--lib/plugins/authldap/lang/ja/settings.php6
-rw-r--r--lib/plugins/authldap/lang/ko/lang.php9
-rw-r--r--lib/plugins/authldap/lang/ko/settings.php5
-rw-r--r--lib/plugins/authldap/lang/nl/lang.php9
-rw-r--r--lib/plugins/authldap/lang/nl/settings.php6
-rw-r--r--lib/plugins/authldap/lang/no/settings.php2
-rw-r--r--lib/plugins/authldap/lang/pl/settings.php6
-rw-r--r--lib/plugins/authldap/lang/pt-br/lang.php9
-rw-r--r--lib/plugins/authldap/lang/pt-br/settings.php6
-rw-r--r--lib/plugins/authldap/lang/pt/lang.php9
-rw-r--r--lib/plugins/authldap/lang/pt/settings.php16
-rw-r--r--lib/plugins/authldap/lang/ru/lang.php9
-rw-r--r--lib/plugins/authldap/lang/ru/settings.php23
-rw-r--r--lib/plugins/authldap/lang/zh-tw/settings.php6
-rw-r--r--lib/plugins/authldap/lang/zh/lang.php9
-rw-r--r--lib/plugins/authldap/lang/zh/settings.php10
-rw-r--r--lib/plugins/authldap/plugin.info.txt2
-rw-r--r--lib/plugins/authmysql/auth.php38
-rw-r--r--lib/plugins/authmysql/lang/bg/lang.php10
-rw-r--r--lib/plugins/authmysql/lang/cs/settings.php5
-rw-r--r--lib/plugins/authmysql/lang/da/settings.php8
-rw-r--r--lib/plugins/authmysql/lang/de/lang.php13
-rw-r--r--lib/plugins/authmysql/lang/en/lang.php13
-rw-r--r--lib/plugins/authmysql/lang/es/lang.php11
-rw-r--r--lib/plugins/authmysql/lang/es/settings.php7
-rw-r--r--lib/plugins/authmysql/lang/fi/settings.php11
-rw-r--r--lib/plugins/authmysql/lang/fr/lang.php11
-rw-r--r--lib/plugins/authmysql/lang/he/settings.php12
-rw-r--r--lib/plugins/authmysql/lang/hr/lang.php11
-rw-r--r--lib/plugins/authmysql/lang/it/settings.php2
-rw-r--r--lib/plugins/authmysql/lang/ja/lang.php11
-rw-r--r--lib/plugins/authmysql/lang/ja/settings.php2
-rw-r--r--lib/plugins/authmysql/lang/ko/lang.php12
-rw-r--r--lib/plugins/authmysql/lang/nl/lang.php11
-rw-r--r--lib/plugins/authmysql/lang/no/settings.php14
-rw-r--r--lib/plugins/authmysql/lang/pl/settings.php10
-rw-r--r--lib/plugins/authmysql/lang/pt-br/lang.php11
-rw-r--r--lib/plugins/authmysql/lang/pt/lang.php10
-rw-r--r--lib/plugins/authmysql/lang/pt/settings.php20
-rw-r--r--lib/plugins/authmysql/lang/ru/lang.php11
-rw-r--r--lib/plugins/authmysql/lang/ru/settings.php6
-rw-r--r--lib/plugins/authmysql/lang/tr/lang.php9
-rw-r--r--lib/plugins/authmysql/lang/zh/lang.php11
-rw-r--r--lib/plugins/authmysql/plugin.info.txt2
-rw-r--r--lib/plugins/authpgsql/auth.php11
-rw-r--r--lib/plugins/authpgsql/lang/cs/settings.php5
-rw-r--r--lib/plugins/authpgsql/lang/es/settings.php3
-rw-r--r--lib/plugins/authpgsql/lang/it/settings.php5
-rw-r--r--lib/plugins/authpgsql/lang/ja/settings.php2
-rw-r--r--lib/plugins/authpgsql/lang/pt/settings.php17
-rw-r--r--lib/plugins/authpgsql/lang/ru/settings.php11
-rw-r--r--lib/plugins/authpgsql/plugin.info.txt2
-rw-r--r--lib/plugins/authplain/_test/escaping.test.php15
-rw-r--r--lib/plugins/authplain/auth.php45
-rw-r--r--lib/plugins/authplain/lang/af/lang.php6
-rw-r--r--lib/plugins/authplain/lang/ar/lang.php6
-rw-r--r--lib/plugins/authplain/lang/az/lang.php6
-rw-r--r--lib/plugins/authplain/lang/bg/lang.php9
-rw-r--r--lib/plugins/authplain/lang/bn/lang.php6
-rw-r--r--lib/plugins/authplain/lang/ca-valencia/lang.php6
-rw-r--r--lib/plugins/authplain/lang/ca/lang.php7
-rw-r--r--lib/plugins/authplain/lang/cs/lang.php6
-rw-r--r--lib/plugins/authplain/lang/da/lang.php6
-rw-r--r--lib/plugins/authplain/lang/de-informal/lang.php6
-rw-r--r--lib/plugins/authplain/lang/de/lang.php10
-rw-r--r--lib/plugins/authplain/lang/el/lang.php6
-rw-r--r--lib/plugins/authplain/lang/en/lang.php8
-rw-r--r--lib/plugins/authplain/lang/eo/lang.php6
-rw-r--r--lib/plugins/authplain/lang/es/lang.php10
-rw-r--r--lib/plugins/authplain/lang/et/lang.php6
-rw-r--r--lib/plugins/authplain/lang/eu/lang.php6
-rw-r--r--lib/plugins/authplain/lang/fa/lang.php6
-rw-r--r--lib/plugins/authplain/lang/fi/lang.php6
-rw-r--r--lib/plugins/authplain/lang/fo/lang.php6
-rw-r--r--lib/plugins/authplain/lang/fr/lang.php11
-rw-r--r--lib/plugins/authplain/lang/gl/lang.php6
-rw-r--r--lib/plugins/authplain/lang/he/lang.php6
-rw-r--r--lib/plugins/authplain/lang/hr/lang.php6
-rw-r--r--lib/plugins/authplain/lang/hu/lang.php6
-rw-r--r--lib/plugins/authplain/lang/ia/lang.php6
-rw-r--r--lib/plugins/authplain/lang/id-ni/lang.php6
-rw-r--r--lib/plugins/authplain/lang/id/lang.php6
-rw-r--r--lib/plugins/authplain/lang/is/lang.php6
-rw-r--r--lib/plugins/authplain/lang/it/lang.php6
-rw-r--r--lib/plugins/authplain/lang/ja/lang.php10
-rw-r--r--lib/plugins/authplain/lang/ka/lang.php6
-rw-r--r--lib/plugins/authplain/lang/kk/lang.php6
-rw-r--r--lib/plugins/authplain/lang/km/lang.php6
-rw-r--r--lib/plugins/authplain/lang/ko/lang.php10
-rw-r--r--lib/plugins/authplain/lang/ku/lang.php6
-rw-r--r--lib/plugins/authplain/lang/la/lang.php6
-rw-r--r--lib/plugins/authplain/lang/lb/lang.php6
-rw-r--r--lib/plugins/authplain/lang/lt/lang.php6
-rw-r--r--lib/plugins/authplain/lang/lv/lang.php6
-rw-r--r--lib/plugins/authplain/lang/mg/lang.php6
-rw-r--r--lib/plugins/authplain/lang/mk/lang.php6
-rw-r--r--lib/plugins/authplain/lang/mr/lang.php6
-rw-r--r--lib/plugins/authplain/lang/ms/lang.php6
-rw-r--r--lib/plugins/authplain/lang/ne/lang.php6
-rw-r--r--lib/plugins/authplain/lang/nl/lang.php10
-rw-r--r--lib/plugins/authplain/lang/no/lang.php6
-rw-r--r--lib/plugins/authplain/lang/pl/lang.php6
-rw-r--r--lib/plugins/authplain/lang/pt-br/lang.php10
-rw-r--r--lib/plugins/authplain/lang/pt/lang.php9
-rw-r--r--lib/plugins/authplain/lang/ro/lang.php6
-rw-r--r--lib/plugins/authplain/lang/ru/lang.php6
-rw-r--r--lib/plugins/authplain/lang/sk/lang.php6
-rw-r--r--lib/plugins/authplain/lang/sl/lang.php6
-rw-r--r--lib/plugins/authplain/lang/sq/lang.php6
-rw-r--r--lib/plugins/authplain/lang/sr/lang.php6
-rw-r--r--lib/plugins/authplain/lang/sv/lang.php6
-rw-r--r--lib/plugins/authplain/lang/th/lang.php6
-rw-r--r--lib/plugins/authplain/lang/tr/lang.php7
-rw-r--r--lib/plugins/authplain/lang/uk/lang.php6
-rw-r--r--lib/plugins/authplain/lang/vi/lang.php6
-rw-r--r--lib/plugins/authplain/lang/zh-tw/lang.php6
-rw-r--r--lib/plugins/authplain/lang/zh/lang.php10
-rw-r--r--lib/plugins/authplain/plugin.info.txt2
-rw-r--r--lib/plugins/config/_test/configuration.test.php6
-rw-r--r--lib/plugins/config/admin.php53
-rw-r--r--lib/plugins/config/images/danger.pngbin648 -> 637 bytes
-rw-r--r--lib/plugins/config/images/security.pngbin706 -> 682 bytes
-rw-r--r--lib/plugins/config/images/warning.pngbin613 -> 606 bytes
-rw-r--r--lib/plugins/config/lang/ar/intro.txt2
-rw-r--r--lib/plugins/config/lang/bg/lang.php408
-rw-r--r--lib/plugins/config/lang/ca-valencia/intro.txt2
-rw-r--r--lib/plugins/config/lang/ca/lang.php6
-rw-r--r--lib/plugins/config/lang/cs/intro.txt1
-rw-r--r--lib/plugins/config/lang/da/intro.txt1
-rw-r--r--lib/plugins/config/lang/de-informal/intro.txt2
-rw-r--r--lib/plugins/config/lang/de/intro.txt3
-rw-r--r--lib/plugins/config/lang/de/lang.php107
-rw-r--r--lib/plugins/config/lang/en/intro.txt2
-rw-r--r--lib/plugins/config/lang/eo/lang.php2
-rw-r--r--lib/plugins/config/lang/es/lang.php8
-rw-r--r--lib/plugins/config/lang/fa/intro.txt2
-rw-r--r--lib/plugins/config/lang/fi/intro.txt2
-rw-r--r--lib/plugins/config/lang/fr/intro.txt2
-rw-r--r--lib/plugins/config/lang/fr/lang.php10
-rw-r--r--lib/plugins/config/lang/he/intro.txt2
-rw-r--r--lib/plugins/config/lang/ia/intro.txt2
-rw-r--r--lib/plugins/config/lang/it/intro.txt2
-rw-r--r--lib/plugins/config/lang/ja/intro.txt12
-rw-r--r--lib/plugins/config/lang/ja/lang.php8
-rw-r--r--lib/plugins/config/lang/ko/intro.txt7
-rw-r--r--lib/plugins/config/lang/ko/lang.php262
-rw-r--r--lib/plugins/config/lang/la/intro.txt2
-rw-r--r--lib/plugins/config/lang/mr/intro.txt2
-rw-r--r--lib/plugins/config/lang/nl/intro.txt2
-rw-r--r--lib/plugins/config/lang/nl/lang.php17
-rw-r--r--lib/plugins/config/lang/pl/intro.txt2
-rw-r--r--lib/plugins/config/lang/pt-br/intro.txt2
-rw-r--r--lib/plugins/config/lang/pt-br/lang.php8
-rw-r--r--lib/plugins/config/lang/pt/intro.txt2
-rw-r--r--lib/plugins/config/lang/pt/lang.php100
-rw-r--r--lib/plugins/config/lang/ru/intro.txt2
-rw-r--r--lib/plugins/config/lang/sk/intro.txt2
-rw-r--r--lib/plugins/config/lang/sq/intro.txt2
-rw-r--r--lib/plugins/config/lang/sv/intro.txt2
-rw-r--r--lib/plugins/config/lang/tr/intro.txt2
-rw-r--r--lib/plugins/config/lang/tr/lang.php6
-rw-r--r--lib/plugins/config/lang/zh-tw/intro.txt2
-rw-r--r--lib/plugins/config/lang/zh-tw/lang.php2
-rw-r--r--lib/plugins/config/lang/zh/intro.txt2
-rw-r--r--lib/plugins/config/lang/zh/lang.php7
-rw-r--r--lib/plugins/config/plugin.info.txt2
-rw-r--r--lib/plugins/config/settings/config.class.php239
-rw-r--r--lib/plugins/config/settings/extra.class.php111
-rw-r--r--lib/plugins/extension/_test/extension.test.php2
-rw-r--r--lib/plugins/extension/admin.php10
-rw-r--r--lib/plugins/extension/helper/extension.php88
-rw-r--r--lib/plugins/extension/helper/gui.php4
-rw-r--r--lib/plugins/extension/helper/list.php11
-rw-r--r--lib/plugins/extension/helper/repository.php6
-rw-r--r--lib/plugins/extension/images/bug.gifbin0 -> 194 bytes
-rw-r--r--lib/plugins/extension/images/disabled.pngbin1396 -> 1163 bytes
-rw-r--r--lib/plugins/extension/images/donate.pngbin724 -> 677 bytes
-rw-r--r--lib/plugins/extension/images/down.pngbin280 -> 197 bytes
-rw-r--r--lib/plugins/extension/images/enabled.pngbin1398 -> 1172 bytes
-rw-r--r--lib/plugins/extension/images/overlay.pngbin109 -> 68 bytes
-rw-r--r--lib/plugins/extension/images/plugin.pngbin6824 -> 4054 bytes
-rw-r--r--lib/plugins/extension/images/tag.pngbin753 -> 341 bytes
-rw-r--r--lib/plugins/extension/images/template.pngbin7547 -> 5206 bytes
-rw-r--r--lib/plugins/extension/images/up.pngbin281 -> 197 bytes
-rw-r--r--lib/plugins/extension/images/warning.pngbin613 -> 606 bytes
-rw-r--r--lib/plugins/extension/lang/bg/lang.php73
-rw-r--r--lib/plugins/extension/lang/cs/intro_plugins.txt1
-rw-r--r--lib/plugins/extension/lang/cs/intro_search.txt1
-rw-r--r--lib/plugins/extension/lang/cs/intro_templates.txt1
-rw-r--r--lib/plugins/extension/lang/cs/lang.php39
-rw-r--r--lib/plugins/extension/lang/da/intro_install.txt1
-rw-r--r--lib/plugins/extension/lang/da/intro_plugins.txt1
-rw-r--r--lib/plugins/extension/lang/da/intro_templates.txt1
-rw-r--r--lib/plugins/extension/lang/da/lang.php80
-rw-r--r--lib/plugins/extension/lang/de/lang.php11
-rw-r--r--lib/plugins/extension/lang/en/lang.php12
-rw-r--r--lib/plugins/extension/lang/eo/lang.php4
-rw-r--r--lib/plugins/extension/lang/es/intro_plugins.txt1
-rw-r--r--lib/plugins/extension/lang/es/intro_search.txt1
-rw-r--r--lib/plugins/extension/lang/es/lang.php18
-rw-r--r--lib/plugins/extension/lang/fi/lang.php37
-rw-r--r--lib/plugins/extension/lang/fr/lang.php18
-rw-r--r--lib/plugins/extension/lang/hr/intro_install.txt2
-rw-r--r--lib/plugins/extension/lang/hr/intro_plugins.txt2
-rw-r--r--lib/plugins/extension/lang/hr/intro_search.txt2
-rw-r--r--lib/plugins/extension/lang/hr/intro_templates.txt2
-rw-r--r--lib/plugins/extension/lang/hr/lang.php33
-rw-r--r--lib/plugins/extension/lang/hu/lang.php4
-rw-r--r--lib/plugins/extension/lang/it/intro_install.txt1
-rw-r--r--lib/plugins/extension/lang/it/intro_plugins.txt1
-rw-r--r--lib/plugins/extension/lang/it/lang.php48
-rw-r--r--lib/plugins/extension/lang/ja/lang.php11
-rw-r--r--lib/plugins/extension/lang/ko/lang.php14
-rw-r--r--lib/plugins/extension/lang/lv/lang.php4
-rw-r--r--lib/plugins/extension/lang/nl/lang.php13
-rw-r--r--lib/plugins/extension/lang/pl/lang.php4
-rw-r--r--lib/plugins/extension/lang/pt-br/lang.php24
-rw-r--r--lib/plugins/extension/lang/pt/intro_install.txt1
-rw-r--r--lib/plugins/extension/lang/pt/intro_plugins.txt1
-rw-r--r--lib/plugins/extension/lang/pt/intro_search.txt1
-rw-r--r--lib/plugins/extension/lang/pt/intro_templates.txt1
-rw-r--r--lib/plugins/extension/lang/pt/lang.php135
-rw-r--r--lib/plugins/extension/lang/ru/intro_install.txt1
-rw-r--r--lib/plugins/extension/lang/ru/intro_plugins.txt1
-rw-r--r--lib/plugins/extension/lang/ru/intro_search.txt1
-rw-r--r--lib/plugins/extension/lang/ru/intro_templates.txt1
-rw-r--r--lib/plugins/extension/lang/ru/lang.php164
-rw-r--r--lib/plugins/extension/lang/tr/lang.php3
-rw-r--r--lib/plugins/extension/lang/zh-tw/intro_plugins.txt1
-rw-r--r--lib/plugins/extension/lang/zh-tw/lang.php30
-rw-r--r--lib/plugins/extension/lang/zh/lang.php8
-rw-r--r--lib/plugins/extension/plugin.info.txt2
-rw-r--r--lib/plugins/extension/script.js26
-rw-r--r--lib/plugins/extension/style.less29
-rw-r--r--lib/plugins/info/plugin.info.txt2
-rw-r--r--lib/plugins/info/syntax.php38
-rw-r--r--lib/plugins/popularity/action.php2
-rw-r--r--lib/plugins/popularity/admin.php6
-rw-r--r--lib/plugins/popularity/helper.php34
-rw-r--r--lib/plugins/popularity/lang/ca/lang.php5
-rw-r--r--lib/plugins/popularity/lang/eu/lang.php5
-rw-r--r--lib/plugins/popularity/lang/ja/intro.txt2
-rw-r--r--lib/plugins/popularity/lang/ko/intro.txt2
-rw-r--r--lib/plugins/popularity/lang/lt/lang.php5
-rw-r--r--lib/plugins/popularity/lang/ro/lang.php5
-rw-r--r--lib/plugins/popularity/plugin.info.txt2
-rw-r--r--lib/plugins/remote.php13
-rw-r--r--lib/plugins/revert/admin.php10
-rw-r--r--lib/plugins/revert/lang/ca/lang.php5
-rw-r--r--lib/plugins/revert/lang/eu/lang.php6
-rw-r--r--lib/plugins/revert/lang/ko/lang.php6
-rw-r--r--lib/plugins/revert/lang/no/lang.php2
-rw-r--r--lib/plugins/revert/lang/ro/lang.php5
-rw-r--r--lib/plugins/revert/plugin.info.txt2
-rw-r--r--lib/plugins/styling/.travis.yml13
-rw-r--r--lib/plugins/styling/README27
-rw-r--r--lib/plugins/styling/_test/general.test.php33
-rw-r--r--lib/plugins/styling/action.php60
-rw-r--r--lib/plugins/styling/admin.php211
-rw-r--r--lib/plugins/styling/iris.js1488
-rw-r--r--lib/plugins/styling/lang/bg/lang.php17
-rw-r--r--lib/plugins/styling/lang/de/intro.txt2
-rw-r--r--lib/plugins/styling/lang/de/lang.php23
-rw-r--r--lib/plugins/styling/lang/en/intro.txt2
-rw-r--r--lib/plugins/styling/lang/en/lang.php35
-rw-r--r--lib/plugins/styling/lang/es/intro.txt2
-rw-r--r--lib/plugins/styling/lang/es/lang.php23
-rw-r--r--lib/plugins/styling/lang/fr/intro.txt2
-rw-r--r--lib/plugins/styling/lang/fr/lang.php24
-rw-r--r--lib/plugins/styling/lang/ja/intro.txt2
-rw-r--r--lib/plugins/styling/lang/ja/lang.php23
-rw-r--r--lib/plugins/styling/lang/ko/intro.txt2
-rw-r--r--lib/plugins/styling/lang/ko/lang.php23
-rw-r--r--lib/plugins/styling/lang/nl/intro.txt2
-rw-r--r--lib/plugins/styling/lang/nl/lang.php24
-rw-r--r--lib/plugins/styling/lang/pt-br/intro.txt2
-rw-r--r--lib/plugins/styling/lang/pt-br/lang.php23
-rw-r--r--lib/plugins/styling/lang/zh/intro.txt1
-rw-r--r--lib/plugins/styling/lang/zh/lang.php23
-rw-r--r--lib/plugins/styling/plugin.info.txt7
-rw-r--r--lib/plugins/styling/popup.php30
-rw-r--r--lib/plugins/styling/script.js97
-rw-r--r--lib/plugins/styling/style.less13
-rw-r--r--lib/plugins/syntax.php11
-rw-r--r--lib/plugins/usermanager/admin.php84
-rw-r--r--lib/plugins/usermanager/images/search.pngbin550 -> 549 bytes
-rw-r--r--lib/plugins/usermanager/lang/bg/lang.php9
-rw-r--r--lib/plugins/usermanager/lang/ca/lang.php5
-rw-r--r--lib/plugins/usermanager/lang/cs/lang.php14
-rw-r--r--lib/plugins/usermanager/lang/da/import.txt9
-rw-r--r--lib/plugins/usermanager/lang/da/lang.php2
-rw-r--r--lib/plugins/usermanager/lang/en/import.txt4
-rw-r--r--lib/plugins/usermanager/lang/es/import.txt9
-rw-r--r--lib/plugins/usermanager/lang/es/lang.php7
-rw-r--r--lib/plugins/usermanager/lang/eu/lang.php5
-rw-r--r--lib/plugins/usermanager/lang/fi/lang.php10
-rw-r--r--lib/plugins/usermanager/lang/hr/lang.php4
-rw-r--r--lib/plugins/usermanager/lang/ja/import.txt2
-rw-r--r--lib/plugins/usermanager/lang/ja/lang.php4
-rw-r--r--lib/plugins/usermanager/lang/ko/lang.php12
-rw-r--r--lib/plugins/usermanager/lang/lt/lang.php5
-rw-r--r--lib/plugins/usermanager/lang/pt-br/import.txt9
-rw-r--r--lib/plugins/usermanager/lang/pt/lang.php11
-rw-r--r--lib/plugins/usermanager/lang/ro/lang.php5
-rw-r--r--lib/plugins/usermanager/lang/ru/import.txt4
-rw-r--r--lib/plugins/usermanager/lang/ru/lang.php7
-rw-r--r--lib/plugins/usermanager/plugin.info.txt2
-rw-r--r--lib/plugins/usermanager/style.css2
393 files changed, 5799 insertions, 1006 deletions
diff --git a/lib/plugins/acl/admin.php b/lib/plugins/acl/admin.php
index ebb097a04..f4baec994 100644
--- a/lib/plugins/acl/admin.php
+++ b/lib/plugins/acl/admin.php
@@ -332,7 +332,7 @@ class admin_plugin_acl extends DokuWiki_Admin_Plugin {
echo $this->getLang('acl_perms').' ';
$inl = $this->_html_select();
echo '<input type="text" name="acl_w" class="edit" value="'.(($inl)?'':hsc(ltrim($this->who,'@'))).'" />'.NL;
- echo '<input type="submit" value="'.$this->getLang('btn_select').'" class="button" />'.NL;
+ echo '<button type="submit">'.$this->getLang('btn_select').'</button>'.NL;
echo '</div>'.NL;
echo '<div id="acl__info">';
@@ -391,10 +391,10 @@ class admin_plugin_acl extends DokuWiki_Admin_Plugin {
echo $this->_html_checkboxes($current,empty($this->ns),'acl');
if(is_null($current)){
- echo '<input type="submit" name="cmd[save]" class="button" value="'.$lang['btn_save'].'" />'.NL;
+ echo '<button type="submit" name="cmd[save]">'.$lang['btn_save'].'</button>'.NL;
}else{
- echo '<input type="submit" name="cmd[save]" class="button" value="'.$lang['btn_update'].'" />'.NL;
- echo '<input type="submit" name="cmd[del]" class="button" value="'.$lang['btn_delete'].'" />'.NL;
+ echo '<button type="submit" name="cmd[save]">'.$lang['btn_update'].'</button>'.NL;
+ echo '<button type="submit" name="cmd[del]">'.$lang['btn_delete'].'</button>'.NL;
}
echo '</fieldset>';
@@ -641,7 +641,7 @@ class admin_plugin_acl extends DokuWiki_Admin_Plugin {
echo '<tr>';
echo '<th class="action" colspan="4">';
- echo '<input type="submit" value="'.$lang['btn_update'].'" name="cmd[update]" class="button" />';
+ echo '<button type="submit" name="cmd[update]">'.$lang['btn_update'].'</button>';
echo '</th>';
echo '</tr>';
echo '</table>';
@@ -682,7 +682,6 @@ class admin_plugin_acl extends DokuWiki_Admin_Plugin {
*/
function _acl_add($acl_scope, $acl_user, $acl_level){
global $config_cascade;
- $acl_config = file_get_contents($config_cascade['acl']['default']);
$acl_user = auth_nameencode($acl_user,true);
// max level for pagenames is edit
@@ -692,9 +691,7 @@ class admin_plugin_acl extends DokuWiki_Admin_Plugin {
$new_acl = "$acl_scope\t$acl_user\t$acl_level\n";
- $new_config = $acl_config.$new_acl;
-
- return io_saveFile($config_cascade['acl']['default'], $new_config);
+ return io_saveFile($config_cascade['acl']['default'], $new_acl, true);
}
/**
@@ -704,15 +701,11 @@ class admin_plugin_acl extends DokuWiki_Admin_Plugin {
*/
function _acl_del($acl_scope, $acl_user){
global $config_cascade;
- $acl_config = file($config_cascade['acl']['default']);
$acl_user = auth_nameencode($acl_user,true);
$acl_pattern = '^'.preg_quote($acl_scope,'/').'[ \t]+'.$acl_user.'[ \t]+[0-8].*$';
- // save all non!-matching
- $new_config = preg_grep("/$acl_pattern/", $acl_config, PREG_GREP_INVERT);
-
- return io_saveFile($config_cascade['acl']['default'], join('',$new_config));
+ return io_deleteFromFile($config_cascade['acl']['default'], "/$acl_pattern/", true);
}
/**
@@ -762,6 +755,8 @@ class admin_plugin_acl extends DokuWiki_Admin_Plugin {
*/
function _html_select(){
$inlist = false;
+ $usel = '';
+ $gsel = '';
if($this->who &&
!in_array($this->who,$this->usersgroups) &&
@@ -770,11 +765,9 @@ class admin_plugin_acl extends DokuWiki_Admin_Plugin {
if($this->who{0} == '@'){
$gsel = ' selected="selected"';
}else{
- $usel = ' selected="selected"';
+ $usel = ' selected="selected"';
}
}else{
- $usel = '';
- $gsel = '';
$inlist = true;
}
diff --git a/lib/plugins/acl/lang/ca/lang.php b/lib/plugins/acl/lang/ca/lang.php
index bead981f0..18a4a3602 100644
--- a/lib/plugins/acl/lang/ca/lang.php
+++ b/lib/plugins/acl/lang/ca/lang.php
@@ -1,8 +1,8 @@
<?php
+
/**
- * catalan language file
- *
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
* @author Carles Bellver <carles.bellver@cent.uji.es>
* @author Carles Bellver <carles.bellver@gmail.com>
* @author carles.bellver@gmail.com
diff --git a/lib/plugins/acl/lang/cs/help.txt b/lib/plugins/acl/lang/cs/help.txt
index 1dbc88ad0..1b6fa1eac 100644
--- a/lib/plugins/acl/lang/cs/help.txt
+++ b/lib/plugins/acl/lang/cs/help.txt
@@ -1,11 +1,8 @@
=== Nápověda: ===
-Na této stránce můžete přidávat a odebírat oprávnění na jmenné prostory a stránky Vaší wiki.
+Na této stránce můžete přidávat a odebírat oprávnění pro jmenné prostory a stránky svojí wiki.
+* Levý panel zobrazuje všechny dostupné jmenné prostory a stránky.
+* Formulář výše umožňuje vidět a modifikovat oprávnění vybraného uživatele nebo skupiny.
+* V tabulce uvedené níže jsou zobrazeny všechna aktuální pravidla pro řízení přístupu (oprávnění). Zde můžete rychle odebírat a měnit více položek (oprávnění) najednou.
-Levý panel zobrazuje všechny dostupné jmenné prostory a stránky.
-
-Formulář výše umožňuje vidět a modifikovat oprávnění vybraného uživatele nebo skupiny.
-
-V tabulce uvedené níže jsou zobrazeny všechny aktuální pravidla pro řízení přístupu (oprávnění). Zde můžete rychle odebírat a měnit více položek (oprávnění) najednou.
-
-Pro detailnější nápovědu si přečtěte stránku [[doku>acl|oficiální dokumentaci ACL]], která Vám může pomoci plně pochopit princip, jak řízení přístupu na DokuWiki funguje.
+Pro detailnější nápovědu si přečtěte stránku [[doku>acl|oficiální dokumentace ACL]], která Vám může pomoci plně pochopit princip, na kterém řízení přístupu na DokuWiki funguje.
diff --git a/lib/plugins/acl/lang/eu/lang.php b/lib/plugins/acl/lang/eu/lang.php
index f051523d9..bb6ab964a 100644
--- a/lib/plugins/acl/lang/eu/lang.php
+++ b/lib/plugins/acl/lang/eu/lang.php
@@ -1,7 +1,8 @@
<?php
+
/**
- * Basque language file
- *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
* @author Inko Illarramendi <inko.i.a@gmail.com>
* @author Zigor Astarbe <astarbe@gmail.com>
*/
diff --git a/lib/plugins/acl/lang/ja/help.txt b/lib/plugins/acl/lang/ja/help.txt
index f7867f8e2..a1f03a3af 100644
--- a/lib/plugins/acl/lang/ja/help.txt
+++ b/lib/plugins/acl/lang/ja/help.txt
@@ -1,11 +1,8 @@
-=== クイックヘルプ: ===
+=== 操作案内 ===
-このページでは、Wiki内の名前空間とページに対する権限を追加・削除することができます。
+このページでは、Wiki 内の名前空間とページに対する権限を追加・削除することができます。
+ * 左側のボックスには存在する名前空間とページが表示されています。
+ * 上部のフォームを使って、選択したユーザーもしくはグループの権限を閲覧・変更することができます。
+ * 下部の一覧は、現在設定されているアクセス制御のルールを表示します。この一覧を使って、複数のルールを素早く変更・削除することが可能です。
-左側のボックスには存在する名前空間とページが表示されています。
-
-上記のフォームを使って、選択したユーザーもしくはグループの権限を閲覧・変更することができます。
-
-以下のテープルには、現在設定されているアクセスコントロールのルールが表示されています。このテーブルを使って、複数のルールを素早く変更・削除することが可能です。
-
-DokuWikiのアクセスコントロールについては、[[doku>acl|official documentation on ACL]] をお読み下さい。 \ No newline at end of file
+DokuWiki のアクセス制御については、[[doku>ja:acl|アクセス制御リスト (ACL)の公式解説]]をお読み下さい。 \ No newline at end of file
diff --git a/lib/plugins/acl/lang/ko/lang.php b/lib/plugins/acl/lang/ko/lang.php
index 35563ff6c..40b6ff351 100644
--- a/lib/plugins/acl/lang/ko/lang.php
+++ b/lib/plugins/acl/lang/ko/lang.php
@@ -21,10 +21,10 @@ $lang['acl_perms'] = '권한';
$lang['page'] = '문서';
$lang['namespace'] = '이름공간';
$lang['btn_select'] = '선택';
-$lang['p_user_id'] = '<b class="acluser">%s</b> 사용자는 현재 <b class="aclpage">%s</b>: <i>%s</i> 문서 접근이 가능합니다.';
-$lang['p_user_ns'] = '<b class="acluser">%s</b> 사용자는 현재 <b class="aclns">%s</b>: <i>%s</i> 이름공간 접근이 가능합니다.';
-$lang['p_group_id'] = '<b class="aclgroup">%s</b> 그룹 구성원은 현재 <b class="aclpage">%s</b>: <i>%s</i> 문서 접근이 가능합니다.';
-$lang['p_group_ns'] = '<b class="aclgroup">%s</b> 그룹 구성원은 현재 <b class="aclns">%s</b>: <i>%s</i> 이름공간 접근이 가능합니다.';
+$lang['p_user_id'] = '<b class="acluser">%s</b> 사용자는 현재 <b class="aclpage">%s</b>: <i>%s</i> 문서에 접근이 가능합니다.';
+$lang['p_user_ns'] = '<b class="acluser">%s</b> 사용자는 현재 <b class="aclns">%s</b>: <i>%s</i> 이름공간에 접근이 가능합니다.';
+$lang['p_group_id'] = '<b class="aclgroup">%s</b> 그룹 구성원은 현재 <b class="aclpage">%s</b>: <i>%s</i> 문서에 접근이 가능합니다.';
+$lang['p_group_ns'] = '<b class="aclgroup">%s</b> 그룹 구성원은 현재 <b class="aclns">%s</b>: <i>%s</i> 이름공간에 접근이 가능합니다.';
$lang['p_choose_id'] = '<b class="aclpage">%s</b> 문서 접근 권한을 보거나 바꾸려면 <b>사용자</b>나 <b>그룹</b>을 위 양식에 입력하세요.';
$lang['p_choose_ns'] = '<b class="aclns">%s</b> 이름공간 접근 권한을 보거나 바꾸려면 <b>사용자</b>나 <b>그룹</b>을 위 양식에 입력하세요.';
$lang['p_inherited'] = '참고: 권한이 명시적으로 설정되지 않았으므로 다른 그룹이나 상위 이름공간으로부터 가져왔습니다.';
diff --git a/lib/plugins/acl/lang/lt/lang.php b/lib/plugins/acl/lang/lt/lang.php
index ef339177b..2a1748abc 100644
--- a/lib/plugins/acl/lang/lt/lang.php
+++ b/lib/plugins/acl/lang/lt/lang.php
@@ -1,8 +1,8 @@
<?php
+
/**
- * lithuanian language file
- *
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
* @author Linas Valiukas <shirshegsm@gmail.com>
* @author audrius.klevas@gmail.com
* @author Arunas Vaitekunas <aras@fan.lt>
diff --git a/lib/plugins/acl/lang/ro/lang.php b/lib/plugins/acl/lang/ro/lang.php
index 0d281f049..418e63ab3 100644
--- a/lib/plugins/acl/lang/ro/lang.php
+++ b/lib/plugins/acl/lang/ro/lang.php
@@ -1,7 +1,8 @@
<?php
+
/**
- * Romanian language file
- *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
* @author Sergiu Baltariu <s_baltariu@yahoo.com>
* @author s_baltariu@yahoo.com
* @author Emanuel-Emeric Andrasi <n30@mandrivausers.ro>
diff --git a/lib/plugins/acl/pix/group.png b/lib/plugins/acl/pix/group.png
index d80eb2606..348d4e55c 100644
--- a/lib/plugins/acl/pix/group.png
+++ b/lib/plugins/acl/pix/group.png
Binary files differ
diff --git a/lib/plugins/acl/pix/ns.png b/lib/plugins/acl/pix/ns.png
index c35e832da..77e03b19e 100644
--- a/lib/plugins/acl/pix/ns.png
+++ b/lib/plugins/acl/pix/ns.png
Binary files differ
diff --git a/lib/plugins/acl/pix/user.png b/lib/plugins/acl/pix/user.png
index 7b4a507a0..8d5d1c2e9 100644
--- a/lib/plugins/acl/pix/user.png
+++ b/lib/plugins/acl/pix/user.png
Binary files differ
diff --git a/lib/plugins/acl/plugin.info.txt b/lib/plugins/acl/plugin.info.txt
index cb8fe7e8e..1b2c82cb3 100644
--- a/lib/plugins/acl/plugin.info.txt
+++ b/lib/plugins/acl/plugin.info.txt
@@ -1,7 +1,7 @@
base acl
author Andreas Gohr
email andi@splitbrain.org
-date 2014-06-04
+date 2015-07-25
name ACL Manager
desc Manage Page Access Control Lists
url http://dokuwiki.org/plugin:acl
diff --git a/lib/plugins/acl/remote.php b/lib/plugins/acl/remote.php
index 9433b7701..031686f95 100644
--- a/lib/plugins/acl/remote.php
+++ b/lib/plugins/acl/remote.php
@@ -1,7 +1,16 @@
<?php
+/**
+ * Class remote_plugin_acl
+ */
class remote_plugin_acl extends DokuWiki_Remote_Plugin {
- function _getMethods() {
+
+ /**
+ * Returns details about the remote plugin methods
+ *
+ * @return array Information about all provided methods. {@see RemoteAPI}
+ */
+ public function _getMethods() {
return array(
'addAcl' => array(
'args' => array('string','string','int'),
diff --git a/lib/plugins/acl/script.js b/lib/plugins/acl/script.js
index 58598b1e0..86badffdd 100644
--- a/lib/plugins/acl/script.js
+++ b/lib/plugins/acl/script.js
@@ -16,7 +16,7 @@ var dw_acl = {
}
jQuery('#acl__user select').change(dw_acl.userselhandler);
- jQuery('#acl__user input[type=submit]').click(dw_acl.loadinfo);
+ jQuery('#acl__user button').click(dw_acl.loadinfo);
$tree = jQuery('#acl__tree');
$tree.dw_tree({toggle_selector: 'img',
diff --git a/lib/plugins/acl/style.css b/lib/plugins/acl/style.css
index a53a03450..4233cd30b 100644
--- a/lib/plugins/acl/style.css
+++ b/lib/plugins/acl/style.css
@@ -81,7 +81,6 @@
[dir=rtl] #acl_manager .aclgroup {
background: transparent url(pix/group.png) right 1px no-repeat;
padding: 1px 18px 1px 0px;
- display: inline-block; /* needed for IE7 */
}
#acl_manager .acluser {
@@ -91,7 +90,6 @@
[dir=rtl] #acl_manager .acluser {
background: transparent url(pix/user.png) right 1px no-repeat;
padding: 1px 18px 1px 0px;
- display: inline-block; /* needed for IE7 */
}
#acl_manager .aclpage {
@@ -101,7 +99,6 @@
[dir=rtl] #acl_manager .aclpage {
background: transparent url(pix/page.png) right 1px no-repeat;
padding: 1px 18px 1px 0px;
- display: inline-block; /* needed for IE7 */
}
#acl_manager .aclns {
@@ -111,7 +108,6 @@
[dir=rtl] #acl_manager .aclns {
background: transparent url(pix/ns.png) right 1px no-repeat;
padding: 1px 18px 1px 0px;
- display: inline-block; /* needed for IE7 */
}
#acl_manager label.disabled {
diff --git a/lib/plugins/action.php b/lib/plugins/action.php
index 4b5eef60a..23d94a509 100644
--- a/lib/plugins/action.php
+++ b/lib/plugins/action.php
@@ -16,6 +16,8 @@ class DokuWiki_Action_Plugin extends DokuWiki_Plugin {
/**
* Registers a callback function for a given event
+ *
+ * @param Doku_Event_Handler $controller
*/
public function register(Doku_Event_Handler $controller) {
trigger_error('register() not implemented in '.get_class($this), E_USER_WARNING);
diff --git a/lib/plugins/admin.php b/lib/plugins/admin.php
index 9a1fb9fdc..39dece453 100644
--- a/lib/plugins/admin.php
+++ b/lib/plugins/admin.php
@@ -14,7 +14,14 @@ if(!defined('DOKU_INC')) die();
*/
class DokuWiki_Admin_Plugin extends DokuWiki_Plugin {
- function getMenuText($language) {
+ /**
+ * Return the text that is displayed at the main admin menu
+ * (Default localized language string 'menu' is returned, override this function for setting another name)
+ *
+ * @param string $language language code
+ * @return string menu string
+ */
+ public function getMenuText($language) {
$menutext = $this->getLang('menu');
if (!$menutext) {
$info = $this->getInfo();
@@ -23,23 +30,48 @@ class DokuWiki_Admin_Plugin extends DokuWiki_Plugin {
return $menutext;
}
- function getMenuSort() {
+ /**
+ * Determine position in list in admin window
+ * Lower values are sorted up
+ *
+ * @return int
+ */
+ public function getMenuSort() {
return 1000;
}
- function handle() {
+ /**
+ * Carry out required processing
+ */
+ public function handle() {
trigger_error('handle() not implemented in '.get_class($this), E_USER_WARNING);
}
- function html() {
+ /**
+ * Output html of the admin page
+ */
+ public function html() {
trigger_error('html() not implemented in '.get_class($this), E_USER_WARNING);
}
- function forAdminOnly() {
+ /**
+ * Return true for access only by admins (config:superuser) or false if managers are allowed as well
+ *
+ * @return bool
+ */
+ public function forAdminOnly() {
return true;
}
- function getTOC(){
+ /**
+ * Return array with ToC items. Items can be created with the html_mktocitem()
+ *
+ * @see html_mktocitem()
+ * @see tpl_toc()
+ *
+ * @return array
+ */
+ public function getTOC(){
return array();
}
}
diff --git a/lib/plugins/auth.php b/lib/plugins/auth.php
index b38b591a3..036cb0d77 100644
--- a/lib/plugins/auth.php
+++ b/lib/plugins/auth.php
@@ -116,7 +116,7 @@ class DokuWiki_Auth_Plugin extends DokuWiki_Plugin {
* @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
+ * @return bool|null|int Result from the modification function or false if an event handler has canceled the action
*/
public function triggerUserMod($type, $params) {
$validTypes = array(
@@ -124,12 +124,15 @@ class DokuWiki_Auth_Plugin extends DokuWiki_Plugin {
'modify' => 'modifyUser',
'delete' => 'deleteUsers'
);
- if(empty($validTypes[$type]))
+ if(empty($validTypes[$type])) {
return false;
+ }
+
+ $result = 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);
+ $result = call_user_func_array(array($this, $validTypes[$type]), $evt->data['params']);
$evt->data['modification_result'] = $result;
}
$evt->advise_after();
@@ -235,7 +238,7 @@ class DokuWiki_Auth_Plugin extends DokuWiki_Plugin {
* @author Andreas Gohr <andi@splitbrain.org>
* @param string $user the user name
* @param bool $requireGroups whether or not the returned data must include groups
- * @return array containing user data or false
+ * @return false|array containing user data or false
*/
public function getUserData($user, $requireGroups=true) {
if(!$this->cando['external']) msg("no valid authorisation system in use", -1);
@@ -292,7 +295,7 @@ class DokuWiki_Auth_Plugin extends DokuWiki_Plugin {
*/
public function deleteUsers($users) {
msg("authorisation method does not allow deleting of users", -1);
- return false;
+ return 0;
}
/**
diff --git a/lib/plugins/authad/action.php b/lib/plugins/authad/action.php
index 97be9897e..bc0f90c7e 100644
--- a/lib/plugins/authad/action.php
+++ b/lib/plugins/authad/action.php
@@ -17,7 +17,7 @@ class action_plugin_authad extends DokuWiki_Action_Plugin {
/**
* Registers a callback function for a given event
*/
- public function register(Doku_Event_Handler &$controller) {
+ public function register(Doku_Event_Handler $controller) {
$controller->register_hook('AUTH_LOGIN_CHECK', 'BEFORE', $this, 'handle_auth_login_check');
$controller->register_hook('HTML_LOGINFORM_OUTPUT', 'BEFORE', $this, 'handle_html_loginform_output');
diff --git a/lib/plugins/authad/adLDAP/adLDAP.php b/lib/plugins/authad/adLDAP/adLDAP.php
index c1f92abe2..5563e4fe9 100644
--- a/lib/plugins/authad/adLDAP/adLDAP.php
+++ b/lib/plugins/authad/adLDAP/adLDAP.php
@@ -947,5 +947,3 @@ class adLDAP {
* }
*/
class adLDAPException extends Exception {}
-
-?> \ No newline at end of file
diff --git a/lib/plugins/authad/auth.php b/lib/plugins/authad/auth.php
index a3119dda6..60c68efc4 100644
--- a/lib/plugins/authad/auth.php
+++ b/lib/plugins/authad/auth.php
@@ -3,6 +3,7 @@
if(!defined('DOKU_INC')) die();
require_once(DOKU_PLUGIN.'authad/adLDAP/adLDAP.php');
+require_once(DOKU_PLUGIN.'authad/adLDAP/classes/adLDAPUtils.php');
/**
* Active Directory authentication backend for DokuWiki
@@ -67,6 +68,10 @@ class auth_plugin_authad extends DokuWiki_Auth_Plugin {
*/
protected $_pattern = array();
+ protected $_actualstart = 0;
+
+ protected $_grpsusers = array();
+
/**
* Constructor
*/
@@ -116,6 +121,7 @@ class auth_plugin_authad extends DokuWiki_Auth_Plugin {
// other can do's are changed in $this->_loadServerConfig() base on domain setup
$this->cando['modName'] = true;
$this->cando['modMail'] = true;
+ $this->cando['getUserCount'] = true;
}
/**
@@ -203,6 +209,7 @@ class auth_plugin_authad extends DokuWiki_Auth_Plugin {
}
//general user info
+ $info = array();
$info['name'] = $result[0]['displayname'][0];
$info['mail'] = $result[0]['mail'][0];
$info['uid'] = $result[0]['samaccountname'][0];
@@ -251,7 +258,7 @@ class auth_plugin_authad extends DokuWiki_Auth_Plugin {
($info['expiresin'] <= $this->conf['expirywarn']) &&
!$this->msgshown
) {
- $msg = sprintf($lang['authpwdexpire'], $info['expiresin']);
+ $msg = sprintf($this->getLang('authpwdexpire'), $info['expiresin']);
if($this->canDo('modPass')) {
$url = wl($ID, array('do'=> 'profile'));
$msg .= ' <a href="'.$url.'">'.$lang['btn_profile'].'</a>';
@@ -325,13 +332,137 @@ class auth_plugin_authad extends DokuWiki_Auth_Plugin {
}
/**
+ * Create a Search-String useable by adLDAPUsers::all($includeDescription = false, $search = "*", $sorted = true)
+ *
+ * @param array $filter
+ * @return string
+ */
+ protected function _constructSearchString($filter){
+ if (!$filter){
+ return '*';
+ }
+ $adldapUtils = new adLDAPUtils($this->_adldap(null));
+ $result = '*';
+ if (isset($filter['name'])) {
+ $result .= ')(displayname=*' . $adldapUtils->ldapSlashes($filter['name']) . '*';
+ unset($filter['name']);
+ }
+
+ if (isset($filter['user'])) {
+ $result .= ')(samAccountName=*' . $adldapUtils->ldapSlashes($filter['user']) . '*';
+ unset($filter['user']);
+ }
+
+ if (isset($filter['mail'])) {
+ $result .= ')(mail=*' . $adldapUtils->ldapSlashes($filter['mail']) . '*';
+ unset($filter['mail']);
+ }
+ return $result;
+ }
+
+ /**
+ * Return a count of the number of user which meet $filter criteria
+ *
+ * @param array $filter $filter array of field/pattern pairs, empty array for no filter
+ * @return int number of users
+ */
+ public function getUserCount($filter = array()) {
+ $adldap = $this->_adldap(null);
+ if(!$adldap) {
+ dbglog("authad/auth.php getUserCount(): _adldap not set.");
+ return -1;
+ }
+ if ($filter == array()) {
+ $result = $adldap->user()->all();
+ } else {
+ $searchString = $this->_constructSearchString($filter);
+ $result = $adldap->user()->all(false, $searchString);
+ if (isset($filter['grps'])) {
+ $this->users = array_fill_keys($result, false);
+ $usermanager = plugin_load("admin", "usermanager", false);
+ $usermanager->setLastdisabled(true);
+ if (!isset($this->_grpsusers[$this->_filterToString($filter)])){
+ $this->_fillGroupUserArray($filter,$usermanager->getStart() + 3*$usermanager->getPagesize());
+ } elseif (count($this->_grpsusers[$this->_filterToString($filter)]) < $usermanager->getStart() + 3*$usermanager->getPagesize()) {
+ $this->_fillGroupUserArray($filter,$usermanager->getStart() + 3*$usermanager->getPagesize() - count($this->_grpsusers[$this->_filterToString($filter)]));
+ }
+ $result = $this->_grpsusers[$this->_filterToString($filter)];
+ } else {
+ $usermanager = plugin_load("admin", "usermanager", false);
+ $usermanager->setLastdisabled(false);
+ }
+
+ }
+
+ if (!$result) {
+ return 0;
+ }
+ return count($result);
+ }
+
+ /**
+ *
+ * create a unique string for each filter used with a group
+ *
+ * @param array $filter
+ * @return string
+ */
+ protected function _filterToString ($filter) {
+ $result = '';
+ if (isset($filter['user'])) {
+ $result .= 'user-' . $filter['user'];
+ }
+ if (isset($filter['name'])) {
+ $result .= 'name-' . $filter['name'];
+ }
+ if (isset($filter['mail'])) {
+ $result .= 'mail-' . $filter['mail'];
+ }
+ if (isset($filter['grps'])) {
+ $result .= 'grps-' . $filter['grps'];
+ }
+ return $result;
+ }
+
+ /**
+ * Create an array of $numberOfAdds users passing a certain $filter, including belonging
+ * to a certain group and save them to a object-wide array. If the array
+ * already exists try to add $numberOfAdds further users to it.
+ *
+ * @param array $filter
+ * @param int $numberOfAdds additional number of users requested
+ * @return int number of Users actually add to Array
+ */
+ protected function _fillGroupUserArray($filter, $numberOfAdds){
+ $this->_grpsusers[$this->_filterToString($filter)];
+ $i = 0;
+ $count = 0;
+ $this->_constructPattern($filter);
+ foreach ($this->users as $user => &$info) {
+ if($i++ < $this->_actualstart) {
+ continue;
+ }
+ if($info === false) {
+ $info = $this->getUserData($user);
+ }
+ if($this->_filter($user, $info)) {
+ $this->_grpsusers[$this->_filterToString($filter)][$user] = $info;
+ if(($numberOfAdds > 0) && (++$count >= $numberOfAdds)) break;
+ }
+ }
+ $this->_actualstart = $i;
+ return $count;
+ }
+
+ /**
* Bulk retrieval of user data
*
* @author Dominik Eckelmann <dokuwiki@cosmocode.de>
- * @param int $start index of first user to be returned
- * @param int $limit max number of users to be returned
- * @param array $filter array of field/pattern pairs, null for no filter
- * @return array userinfo (refer getUserData for internal userinfo details)
+ *
+ * @param int $start index of first user to be returned
+ * @param int $limit max number of users to be returned
+ * @param array $filter array of field/pattern pairs, null for no filter
+ * @return array userinfo (refer getUserData for internal userinfo details)
*/
public function retrieveUsers($start = 0, $limit = 0, $filter = array()) {
$adldap = $this->_adldap(null);
@@ -339,27 +470,44 @@ class auth_plugin_authad extends DokuWiki_Auth_Plugin {
if(!$this->users) {
//get info for given user
- $result = $adldap->user()->all();
+ $result = $adldap->user()->all(false, $this->_constructSearchString($filter));
if (!$result) return array();
$this->users = array_fill_keys($result, false);
}
$i = 0;
$count = 0;
- $this->_constructPattern($filter);
$result = array();
- foreach($this->users as $user => &$info) {
- if($i++ < $start) {
- continue;
+ if (!isset($filter['grps'])) {
+ $usermanager = plugin_load("admin", "usermanager", false);
+ $usermanager->setLastdisabled(false);
+ $this->_constructPattern($filter);
+ foreach($this->users as $user => &$info) {
+ if($i++ < $start) {
+ continue;
+ }
+ if($info === false) {
+ $info = $this->getUserData($user);
+ }
+ $result[$user] = $info;
+ if(($limit > 0) && (++$count >= $limit)) break;
}
- if($info === false) {
- $info = $this->getUserData($user);
+ } else {
+ $usermanager = plugin_load("admin", "usermanager", false);
+ $usermanager->setLastdisabled(true);
+ if (!isset($this->_grpsusers[$this->_filterToString($filter)]) || count($this->_grpsusers[$this->_filterToString($filter)]) < ($start+$limit)) {
+ $this->_fillGroupUserArray($filter,$start+$limit - count($this->_grpsusers[$this->_filterToString($filter)]) +1);
}
- if($this->_filter($user, $info)) {
+ if (!$this->_grpsusers[$this->_filterToString($filter)]) return false;
+ foreach($this->_grpsusers[$this->_filterToString($filter)] as $user => &$info) {
+ if($i++ < $start) {
+ continue;
+ }
$result[$user] = $info;
if(($limit > 0) && (++$count >= $limit)) break;
}
+
}
return $result;
}
@@ -374,7 +522,10 @@ class auth_plugin_authad extends DokuWiki_Auth_Plugin {
public function modifyUser($user, $changes) {
$return = true;
$adldap = $this->_adldap($this->_userDomain($user));
- if(!$adldap) return false;
+ if(!$adldap) {
+ msg($this->getLang('connectfail'), -1);
+ return false;
+ }
// password changing
if(isset($changes['pass'])) {
@@ -384,7 +535,7 @@ class auth_plugin_authad extends DokuWiki_Auth_Plugin {
if ($this->conf['debug']) msg('AD Auth: '.$e->getMessage(), -1);
$return = false;
}
- if(!$return) msg('AD Auth: failed to change the password. Maybe the password policy was not met?', -1);
+ if(!$return) msg($this->getLang('passchangefail'), -1);
}
// changing user data
@@ -406,6 +557,7 @@ class auth_plugin_authad extends DokuWiki_Auth_Plugin {
if ($this->conf['debug']) msg('AD Auth: '.$e->getMessage(), -1);
$return = false;
}
+ if(!$return) msg($this->getLang('userchangefail'), -1);
}
return $return;
@@ -446,7 +598,7 @@ class auth_plugin_authad extends DokuWiki_Auth_Plugin {
/**
* Get the domain part from a user
*
- * @param $user
+ * @param string $user
* @return string
*/
public function _userDomain($user) {
@@ -457,7 +609,7 @@ class auth_plugin_authad extends DokuWiki_Auth_Plugin {
/**
* Get the user part from a user
*
- * @param $user
+ * @param string $user
* @return string
*/
public function _userName($user) {
@@ -543,6 +695,7 @@ class auth_plugin_authad extends DokuWiki_Auth_Plugin {
* The patterns are set up with $this->_constructPattern()
*
* @author Chris Smith <chris@jalakai.co.uk>
+ *
* @param string $user
* @param array $info
* @return bool
@@ -564,6 +717,7 @@ class auth_plugin_authad extends DokuWiki_Auth_Plugin {
* Create a pattern for $this->_filter()
*
* @author Chris Smith <chris@jalakai.co.uk>
+ *
* @param array $filter
*/
protected function _constructPattern($filter) {
diff --git a/lib/plugins/authad/lang/ar/lang.php b/lib/plugins/authad/lang/ar/lang.php
index e0ba7681a..173c80f0c 100644
--- a/lib/plugins/authad/lang/ar/lang.php
+++ b/lib/plugins/authad/lang/ar/lang.php
@@ -4,5 +4,7 @@
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
* @author Mohamed Belhsine <b.mohamed897@gmail.com>
+ * @author Usama Akkad <uahello@gmail.com>
*/
$lang['domain'] = 'مجال تسجيل الدخول';
+$lang['authpwdexpire'] = 'ستنتهي صلاحية كلمة السر في %d . عليك بتغييرها سريعا.';
diff --git a/lib/plugins/authad/lang/bg/lang.php b/lib/plugins/authad/lang/bg/lang.php
new file mode 100644
index 000000000..3de5df65f
--- /dev/null
+++ b/lib/plugins/authad/lang/bg/lang.php
@@ -0,0 +1,8 @@
+<?php
+
+/**
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Kiril <neohidra@gmail.com>
+ */
+$lang['authpwdexpire'] = 'Срока на паролата ви ще изтече след %d дни. Препоръчително е да я смените по-скоро.';
diff --git a/lib/plugins/authad/lang/ca/lang.php b/lib/plugins/authad/lang/ca/lang.php
new file mode 100644
index 000000000..abe25a5f2
--- /dev/null
+++ b/lib/plugins/authad/lang/ca/lang.php
@@ -0,0 +1,8 @@
+<?php
+
+/**
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Daniel López Prat <daniel@6temes.cat>
+ */
+$lang['authpwdexpire'] = 'La vostra contrasenya caducarà en %d dies, l\'hauríeu de canviar aviat.';
diff --git a/lib/plugins/authad/lang/cs/lang.php b/lib/plugins/authad/lang/cs/lang.php
index 8119d208a..ad141153f 100644
--- a/lib/plugins/authad/lang/cs/lang.php
+++ b/lib/plugins/authad/lang/cs/lang.php
@@ -4,5 +4,7 @@
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
* @author Jaroslav Lichtblau <jlichtblau@seznam.cz>
+ * @author Miroslav Svoboda <msv@email.cz>
*/
$lang['domain'] = 'Přihlašovací doména';
+$lang['authpwdexpire'] = 'Platnost vašeho hesla vyprší za %d dní, měli byste ho změnit co nejdříve.';
diff --git a/lib/plugins/authad/lang/cs/settings.php b/lib/plugins/authad/lang/cs/settings.php
index 28222d332..92b2d0f13 100644
--- a/lib/plugins/authad/lang/cs/settings.php
+++ b/lib/plugins/authad/lang/cs/settings.php
@@ -4,6 +4,7 @@
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
* @author mkucera66@seznam.cz
+ * @author Jaroslav Lichtblau <jlichtblau@seznam.cz>
*/
$lang['account_suffix'] = 'Přípona vašeho účtu, tj. <code>@moje.domena.org</code>';
$lang['base_dn'] = 'Vaše doménové jméno DN. tj. <code>DC=moje,DC=domena,DC=org</code>';
@@ -11,6 +12,7 @@ $lang['domain_controllers'] = 'Čárkou oddělenových kontrol=rů, tj. <code
$lang['admin_username'] = 'Privilegovaný uživatel Active Directory s přístupem ke všem datům. Volitelně, ale nutné pro určité akce typu zasílání mailů.';
$lang['admin_password'] = 'Heslo uživatele výše';
$lang['sso'] = 'Chcete přihlašování Single-Sign-On pomocí jádra Kerberos nebo NTLM ( autentizační protokol obvyklý ve Windows)?';
+$lang['sso_charset'] = 'Znaková sada kterou bude webserverem přenášeno uživatelské jméno pro Kerberos nebo NTLM. Prázdné pro UTF-8 nebo latin-1. Vyžaduje rozšíření iconv.';
$lang['real_primarygroup'] = 'Má být zjištěna primární skupina namísto vyhodnocení hodnoty "doménoví uživatelé" (pomalejší)';
$lang['use_ssl'] = 'Použít spojení SSL? Pokud ano, nevyužívejte TLS níže.';
$lang['use_tls'] = 'Použít spojení TLS? Pokud ano, nevyužívejte SSL výše.';
diff --git a/lib/plugins/authad/lang/da/lang.php b/lib/plugins/authad/lang/da/lang.php
new file mode 100644
index 000000000..3d0730216
--- /dev/null
+++ b/lib/plugins/authad/lang/da/lang.php
@@ -0,0 +1,10 @@
+<?php
+
+/**
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Jacob Palm <mail@jacobpalm.dk>
+ * @author Mikael Lyngvig <mikael@lyngvig.org>
+ */
+$lang['domain'] = 'Logondomæne';
+$lang['authpwdexpire'] = 'Din adgangskode vil udløbe om %d dage, du bør ændre det snart.';
diff --git a/lib/plugins/authad/lang/de-informal/lang.php b/lib/plugins/authad/lang/de-informal/lang.php
new file mode 100644
index 000000000..973c992d2
--- /dev/null
+++ b/lib/plugins/authad/lang/de-informal/lang.php
@@ -0,0 +1,11 @@
+<?php
+
+/**
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Andreas Gohr <gohr@cosmocode.de>
+ * @author rnck <dokuwiki@rnck.de>
+ */
+$lang['authpwdexpire'] = 'Dein Passwort läuft in %d Tag(en) ab. Du solltest es es frühzeitig ändern.';
+$lang['passchangefail'] = 'Das Passwort konnte nicht geändert werden. Eventuell wurde die Passwort-Richtlinie nicht eingehalten.';
+$lang['connectfail'] = 'Verbindung zum Active Directory Server fehlgeschlagen.';
diff --git a/lib/plugins/authad/lang/de/lang.php b/lib/plugins/authad/lang/de/lang.php
index eea511d1b..93a65667e 100644
--- a/lib/plugins/authad/lang/de/lang.php
+++ b/lib/plugins/authad/lang/de/lang.php
@@ -4,5 +4,9 @@
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
* @author Andreas Gohr <gohr@cosmocode.de>
+ * @author Philip Knack <p.knack@stollfuss.de>
*/
$lang['domain'] = 'Anmelde-Domäne';
+$lang['authpwdexpire'] = 'Ihr Passwort läuft in %d Tag(en) ab. Sie sollten es frühzeitig ändern.';
+$lang['passchangefail'] = 'Kennwortänderung fehlgeschlagen. Entspricht das Kennwort der Richtlinie?';
+$lang['connectfail'] = 'Verbindung zum Active Directory Server fehlgeschlagen.';
diff --git a/lib/plugins/authad/lang/el/lang.php b/lib/plugins/authad/lang/el/lang.php
new file mode 100644
index 000000000..39e3283cc
--- /dev/null
+++ b/lib/plugins/authad/lang/el/lang.php
@@ -0,0 +1,8 @@
+<?php
+
+/**
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Vasileios Karavasilis vasileioskaravasilis@gmail.com
+ */
+$lang['authpwdexpire'] = 'Ο κωδικός πρόσβασης θα λήξει σε %d ημέρες. Προτείνουμε να τον αλλάξετε σύντομα.';
diff --git a/lib/plugins/authad/lang/en/lang.php b/lib/plugins/authad/lang/en/lang.php
index e2967d662..751aa9f47 100644
--- a/lib/plugins/authad/lang/en/lang.php
+++ b/lib/plugins/authad/lang/en/lang.php
@@ -1,10 +1,14 @@
<?php
/**
* English language file for addomain plugin
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
* @author Andreas Gohr <gohr@cosmocode.de>
*/
-$lang['domain'] = 'Logon Domain';
+$lang['domain'] = 'Logon Domain';
+$lang['authpwdexpire'] = 'Your password will expire in %d days, you should change it soon.';
+$lang['passchangefail'] = 'Failed to change the password. Maybe the password policy was not met?';
+$lang['connectfail'] = 'Failed to connect to Active Directory server.';
//Setup VIM: ex: et ts=4 :
diff --git a/lib/plugins/authad/lang/eo/lang.php b/lib/plugins/authad/lang/eo/lang.php
index be4abc123..e738323da 100644
--- a/lib/plugins/authad/lang/eo/lang.php
+++ b/lib/plugins/authad/lang/eo/lang.php
@@ -6,3 +6,4 @@
* @author Robert Bogenschneider <bogi@uea.org>
*/
$lang['domain'] = 'Ensaluta domajno';
+$lang['authpwdexpire'] = 'Via pasvorto malvalidos post %d tagoj, prefere ŝanĝu ĝin baldaũ.';
diff --git a/lib/plugins/authad/lang/es/lang.php b/lib/plugins/authad/lang/es/lang.php
index c5b242cba..0ad262c21 100644
--- a/lib/plugins/authad/lang/es/lang.php
+++ b/lib/plugins/authad/lang/es/lang.php
@@ -4,5 +4,10 @@
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
* @author Juan De La Cruz <juann.dlc@gmail.com>
+ * @author Gerardo Zamudio <gerardo@gerardozamudio.net>
+ * @author Mauricio Segura <maose38@yahoo.es>
*/
$lang['domain'] = 'Dominio de inicio';
+$lang['authpwdexpire'] = 'Su contraseña caducara en %d días, debería cambiarla lo antes posible';
+$lang['passchangefail'] = 'Error al cambiar la contraseña. ¿Tal vez no se cumplió la directiva de contraseñas?';
+$lang['connectfail'] = 'Error al conectar con el servidor de Active Directory.';
diff --git a/lib/plugins/authad/lang/et/lang.php b/lib/plugins/authad/lang/et/lang.php
new file mode 100644
index 000000000..94fe9ed8e
--- /dev/null
+++ b/lib/plugins/authad/lang/et/lang.php
@@ -0,0 +1,8 @@
+<?php
+
+/**
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Janar Leas <janar.leas@eesti.ee>
+ */
+$lang['authpwdexpire'] = 'Sinu salasõna aegub %d päeva pärast, võiksid seda peatselt muuta.';
diff --git a/lib/plugins/authad/lang/eu/lang.php b/lib/plugins/authad/lang/eu/lang.php
new file mode 100644
index 000000000..454e3be34
--- /dev/null
+++ b/lib/plugins/authad/lang/eu/lang.php
@@ -0,0 +1,8 @@
+<?php
+
+/**
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Zigor Astarbe <astarbe@gmail.com>
+ */
+$lang['authpwdexpire'] = 'Zure pasahitza %d egun barru iraungiko da, laster aldatu beharko zenuke.';
diff --git a/lib/plugins/authad/lang/fa/lang.php b/lib/plugins/authad/lang/fa/lang.php
index 1ea73cfdb..646142331 100644
--- a/lib/plugins/authad/lang/fa/lang.php
+++ b/lib/plugins/authad/lang/fa/lang.php
@@ -4,5 +4,7 @@
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
* @author Hamid <zarrabi@sharif.edu>
+ * @author Milad DZand <M.DastanZand@gmail.com>
*/
$lang['domain'] = 'دامنه‌ی ورود';
+$lang['authpwdexpire'] = 'کلمه عبور شما در %d روز منقضی خواهد شد ، شما باید آن را زود تغییر دهید';
diff --git a/lib/plugins/authad/lang/fa/settings.php b/lib/plugins/authad/lang/fa/settings.php
new file mode 100644
index 000000000..161479afb
--- /dev/null
+++ b/lib/plugins/authad/lang/fa/settings.php
@@ -0,0 +1,10 @@
+<?php
+
+/**
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Omid Hezaveh <hezpublic@gmail.com>
+ */
+$lang['admin_password'] = 'رمز کاربر بالایی ';
+$lang['use_ssl'] = 'از اس‌اس‌ال استفاده می‌کنید؟ در این صورت تی‌ال‌اس را در پایین فعال نکنید. ';
+$lang['use_tls'] = 'از تی‌ال‌اس استفاده می‌کنید؟ در این صورت اس‌اس‌ال را در بالا فعال نکنید. ';
diff --git a/lib/plugins/authad/lang/fi/lang.php b/lib/plugins/authad/lang/fi/lang.php
new file mode 100644
index 000000000..650d44f7a
--- /dev/null
+++ b/lib/plugins/authad/lang/fi/lang.php
@@ -0,0 +1,8 @@
+<?php
+/**
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Jussi Takala <jussi.takala@live.fi>
+ */
+
+$lang['authpwdexpire'] = 'Salasanasi vanhenee %d pv:n päästä, vaihda salasanasi pikaisesti.';
diff --git a/lib/plugins/authad/lang/fr/lang.php b/lib/plugins/authad/lang/fr/lang.php
index 2de362e41..8b3b95b54 100644
--- a/lib/plugins/authad/lang/fr/lang.php
+++ b/lib/plugins/authad/lang/fr/lang.php
@@ -4,5 +4,10 @@
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
* @author ggallon <gwenael.gallon@mac.com>
+ * @author Yannick Aure <yannick.aure@gmail.com>
+ * @author Pietroni <pietroni@informatique.univ-paris-diderot.fr>
*/
$lang['domain'] = 'Domaine de connexion';
+$lang['authpwdexpire'] = 'Votre mot de passe expirera dans %d jours, vous devriez le changer bientôt.';
+$lang['passchangefail'] = 'Impossible de changer le mot de passe. Il est possible que les règles de sécurité des mots de passe n\'aient pas été respectées.';
+$lang['connectfail'] = 'Impossible de se connecter au serveur Active Directory.';
diff --git a/lib/plugins/authad/lang/gl/lang.php b/lib/plugins/authad/lang/gl/lang.php
new file mode 100644
index 000000000..b10126a88
--- /dev/null
+++ b/lib/plugins/authad/lang/gl/lang.php
@@ -0,0 +1,8 @@
+<?php
+
+/**
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Rodrigo Rega <rodrigorega@gmail.com>
+ */
+$lang['authpwdexpire'] = 'A túa contrasinal expirará en %d días, deberías cambiala pronto.';
diff --git a/lib/plugins/authad/lang/he/lang.php b/lib/plugins/authad/lang/he/lang.php
new file mode 100644
index 000000000..ac8fbcb5c
--- /dev/null
+++ b/lib/plugins/authad/lang/he/lang.php
@@ -0,0 +1,10 @@
+<?php
+
+/**
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author tomer <tomercarolldergicz@gmail.com>
+ * @author Menashe Tomer <menashesite@gmail.com>
+ */
+$lang['authpwdexpire'] = 'הסיסמה שלך תפוג ב %d ימים, אתה צריך לשנות את זה בקרוב.';
+$lang['passchangefail'] = 'שגיאה בשינוי סיסמה. האם הסיסמה תואמת למדיניות המערכת?';
diff --git a/lib/plugins/authad/lang/he/settings.php b/lib/plugins/authad/lang/he/settings.php
new file mode 100644
index 000000000..b14368130
--- /dev/null
+++ b/lib/plugins/authad/lang/he/settings.php
@@ -0,0 +1,8 @@
+<?php
+
+/**
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Menashe Tomer <menashesite@gmail.com>
+ */
+$lang['admin_password'] = 'סיסמת המשתמש המוזכן';
diff --git a/lib/plugins/authad/lang/hr/lang.php b/lib/plugins/authad/lang/hr/lang.php
index f750c91b5..99c5c1623 100644
--- a/lib/plugins/authad/lang/hr/lang.php
+++ b/lib/plugins/authad/lang/hr/lang.php
@@ -6,3 +6,6 @@
* @author Davor Turkalj <turki.bsc@gmail.com>
*/
$lang['domain'] = 'Domena za prijavu';
+$lang['authpwdexpire'] = 'Vaša lozinka će isteći za %d dana, trebate ju promijeniti.';
+$lang['passchangefail'] = 'Ne mogu izmijeniti lozinku. Možda nije zadovoljen set pravila za lozinke?';
+$lang['connectfail'] = 'Ne mogu se povezati s Active Directory poslužiteljem.';
diff --git a/lib/plugins/authad/lang/hu/lang.php b/lib/plugins/authad/lang/hu/lang.php
index 7bb6084b0..f5692de04 100644
--- a/lib/plugins/authad/lang/hu/lang.php
+++ b/lib/plugins/authad/lang/hu/lang.php
@@ -6,3 +6,4 @@
* @author Marton Sebok <sebokmarton@gmail.com>
*/
$lang['domain'] = 'Bejelentkezési tartomány';
+$lang['authpwdexpire'] = 'A jelszavad %d nap múlva lejár, hamarosan meg kell változtatnod.';
diff --git a/lib/plugins/authad/lang/it/lang.php b/lib/plugins/authad/lang/it/lang.php
new file mode 100644
index 000000000..5f1a03cd4
--- /dev/null
+++ b/lib/plugins/authad/lang/it/lang.php
@@ -0,0 +1,8 @@
+<?php
+
+/**
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Matteo Pasotti <matteo@xquiet.eu>
+ */
+$lang['authpwdexpire'] = 'La tua password scadrà in %d giorni, dovresti cambiarla quanto prima.';
diff --git a/lib/plugins/authad/lang/ja/lang.php b/lib/plugins/authad/lang/ja/lang.php
index b40aa5da3..e82ca3791 100644
--- a/lib/plugins/authad/lang/ja/lang.php
+++ b/lib/plugins/authad/lang/ja/lang.php
@@ -4,5 +4,10 @@
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
* @author PzF_X <jp_minecraft@yahoo.co.jp>
+ * @author Osaka <mr.osaka@gmail.com>
+ * @author Ikuo Obataya <i.obataya@gmail.com>
*/
$lang['domain'] = 'ログオン時のドメイン';
+$lang['authpwdexpire'] = 'あなたのパスワードは、あと%d日で有効期限が切れます。パスワードを変更してください。';
+$lang['passchangefail'] = 'パスワードを変更できませんでした。パスワードのルールに合わなかったのかもしれません。';
+$lang['connectfail'] = 'Active Directoryサーバーに接続できませんでした。';
diff --git a/lib/plugins/authad/lang/ka/lang.php b/lib/plugins/authad/lang/ka/lang.php
new file mode 100644
index 000000000..ab0c86902
--- /dev/null
+++ b/lib/plugins/authad/lang/ka/lang.php
@@ -0,0 +1,8 @@
+<?php
+
+/**
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Luka Lejava <luka.lejava@gmail.com>
+ */
+$lang['authpwdexpire'] = 'თქვენს პაროლს ვადა გაუვა %d დღეში, მალე შეცვლა მოგიწევთ.';
diff --git a/lib/plugins/authad/lang/ko/lang.php b/lib/plugins/authad/lang/ko/lang.php
index 5a2416b2c..7e9b22f40 100644
--- a/lib/plugins/authad/lang/ko/lang.php
+++ b/lib/plugins/authad/lang/ko/lang.php
@@ -6,3 +6,6 @@
* @author Myeongjin <aranet100@gmail.com>
*/
$lang['domain'] = '로그온 도메인';
+$lang['authpwdexpire'] = '비밀번호를 바꾼지 %d일이 지났으며, 비밀번호를 곧 바꿔야 합니다.';
+$lang['passchangefail'] = '비밀번호를 바꾸는 데 실패했습니다. 비밀번호 정책을 따르지 않았나요?';
+$lang['connectfail'] = 'Active Directory 서버에 연결하는 데 실패했습니다.';
diff --git a/lib/plugins/authad/lang/lv/lang.php b/lib/plugins/authad/lang/lv/lang.php
index 74becf756..a208ac949 100644
--- a/lib/plugins/authad/lang/lv/lang.php
+++ b/lib/plugins/authad/lang/lv/lang.php
@@ -6,3 +6,4 @@
* @author Aivars Miška <allefm@gmail.com>
*/
$lang['domain'] = 'Iežurnālēšanās domēns';
+$lang['authpwdexpire'] = 'Tavai parolei pēc %d dienām biegsies termiņš, tā drīzumā jānomaina.';
diff --git a/lib/plugins/authad/lang/nl/lang.php b/lib/plugins/authad/lang/nl/lang.php
index ea8419069..341a4036e 100644
--- a/lib/plugins/authad/lang/nl/lang.php
+++ b/lib/plugins/authad/lang/nl/lang.php
@@ -4,5 +4,10 @@
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
* @author Rene <wllywlnt@yahoo.com>
+ * @author Dion Nicolaas <dion@nicolaas.net>
+ * @author Hugo Smet <hugo.smet@scarlet.be>
*/
$lang['domain'] = 'Inlog Domein';
+$lang['authpwdexpire'] = 'Je wachtwoord verloopt in %d dagen, je moet het binnenkort veranderen';
+$lang['passchangefail'] = 'Wijziging van het paswoord is mislukt. Wellicht beantwoord het paswoord niet aan de voorwaarden. ';
+$lang['connectfail'] = 'Connectie met Active Directory server mislukt.';
diff --git a/lib/plugins/authad/lang/no/lang.php b/lib/plugins/authad/lang/no/lang.php
new file mode 100644
index 000000000..b497c4719
--- /dev/null
+++ b/lib/plugins/authad/lang/no/lang.php
@@ -0,0 +1,13 @@
+<?php
+
+/**
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Patrick <spill.p@hotmail.com>
+ * @author Thomas Juberg <Thomas.Juberg@Gmail.com>
+ * @author Danny Buckhof <daniel.raknes@hotmail.no>
+ */
+$lang['domain'] = 'Loggpå-domene';
+$lang['authpwdexpire'] = 'Ditt passord går ut om %d dager, du bør endre det snarest.';
+$lang['passchangefail'] = 'Feil ved endring av passord. Det kan være at passordet ikke er i tråd med passordpolicyen ';
+$lang['connectfail'] = 'Feil ved kontakt med Active Directory serveren.';
diff --git a/lib/plugins/authad/lang/no/settings.php b/lib/plugins/authad/lang/no/settings.php
index bab5ce67d..727f6611d 100644
--- a/lib/plugins/authad/lang/no/settings.php
+++ b/lib/plugins/authad/lang/no/settings.php
@@ -4,6 +4,11 @@
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
* @author Christopher Schive <chschive@frisurf.no>
+ * @author Patrick <spill.p@hotmail.com>
+ * @author Danny Buckhof <daniel.raknes@hotmail.no>
*/
+$lang['account_suffix'] = 'Ditt konto-suffiks F. Eks. <code>@my.domain.org</code>';
$lang['admin_password'] = 'Passordet til brukeren over.';
+$lang['use_ssl'] = 'Bruk SSL tilknytning? Hvis denne brukes, ikke aktiver TLS nedenfor.';
+$lang['use_tls'] = 'Bruk TLS tilknytning? Hvis denne brukes, ikke aktiver SSL over.';
$lang['expirywarn'] = 'Antall dager på forhånd brukeren varsles om at passordet utgår. 0 for å deaktivere.';
diff --git a/lib/plugins/authad/lang/pl/lang.php b/lib/plugins/authad/lang/pl/lang.php
new file mode 100644
index 000000000..645b46afa
--- /dev/null
+++ b/lib/plugins/authad/lang/pl/lang.php
@@ -0,0 +1,8 @@
+<?php
+
+/**
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Aoi Karasu <aoikarasu@gmail.com>
+ */
+$lang['authpwdexpire'] = 'Twoje hasło wygaśnie za %d dni. Należy je zmienić w krótkim czasie.';
diff --git a/lib/plugins/authad/lang/pl/settings.php b/lib/plugins/authad/lang/pl/settings.php
index 91cadca6f..537bae7ea 100644
--- a/lib/plugins/authad/lang/pl/settings.php
+++ b/lib/plugins/authad/lang/pl/settings.php
@@ -6,6 +6,7 @@
* @author Tomasz Bosak <bosak.tomasz@gmail.com>
* @author Paweł Jan Czochański <czochanski@gmail.com>
* @author Mati <mackosa@wp.pl>
+ * @author Maciej Helt <geraldziu@gmail.com>
*/
$lang['account_suffix'] = 'Przyrostek twojej nazwy konta np. <code>@my.domain.org</code>';
$lang['base_dn'] = 'Twoje bazowe DN. Na przykład: <code>DC=my,DC=domain,DC=org</code>';
diff --git a/lib/plugins/authad/lang/pt-br/lang.php b/lib/plugins/authad/lang/pt-br/lang.php
index 5fa963d4e..16fc39638 100644
--- a/lib/plugins/authad/lang/pt-br/lang.php
+++ b/lib/plugins/authad/lang/pt-br/lang.php
@@ -4,5 +4,9 @@
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
* @author Felipe Castro <fefcas@gmail.com>
+ * @author Frederico Gonçalves Guimarães <frederico@teia.bio.br>
*/
$lang['domain'] = 'Domínio de "Logon"';
+$lang['authpwdexpire'] = 'Sua senha vai expirar em %d dias. Você deve mudá-la assim que for possível.';
+$lang['passchangefail'] = 'Não foi possível alterar a senha. Pode ser algum conflito com a política de senhas.';
+$lang['connectfail'] = 'Não foi possível conectar ao servidor Active Directory.';
diff --git a/lib/plugins/authad/lang/pt/lang.php b/lib/plugins/authad/lang/pt/lang.php
index f307bc901..450e3a137 100644
--- a/lib/plugins/authad/lang/pt/lang.php
+++ b/lib/plugins/authad/lang/pt/lang.php
@@ -4,5 +4,10 @@
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
* @author Paulo Silva <paulotsilva@yahoo.com>
+ * @author André Neves <drakferion@gmail.com>
+ * @author Paulo Carmino <contato@paulocarmino.com>
*/
$lang['domain'] = 'Domínio de Início de Sessão';
+$lang['authpwdexpire'] = 'A sua senha expirará dentro de %d dias, deve mudá-la em breve.';
+$lang['passchangefail'] = 'Falha ao alterar a senha. Tente prosseguir com uma senha mais segura.';
+$lang['connectfail'] = 'Falha ao conectar com o servidor Active Directory.';
diff --git a/lib/plugins/authad/lang/pt/settings.php b/lib/plugins/authad/lang/pt/settings.php
index dc60d7259..dc6741b2a 100644
--- a/lib/plugins/authad/lang/pt/settings.php
+++ b/lib/plugins/authad/lang/pt/settings.php
@@ -6,12 +6,18 @@
* @author André Neves <drakferion@gmail.com>
* @author Murilo <muriloricci@hotmail.com>
* @author Paulo Silva <paulotsilva@yahoo.com>
+ * @author Guido Salatino <guidorafael23@gmail.com>
*/
$lang['account_suffix'] = 'O sufixo da sua conta. Por exemplo, <code>@my.domain.org</code>';
+$lang['base_dn'] = 'Sua base DN. Eg. <code> DC=meu, DC=dominio, DC=org </code>';
$lang['domain_controllers'] = 'Uma lista separada por vírgulas de Controladores de Domínio (AD DC). Ex.: <code>srv1.domain.org,srv2.domain.org</code>';
$lang['admin_username'] = 'Um utilizador com privilégios na Active Directory que tenha acesso aos dados de todos os outros utilizadores. Opcional, mas necessário para certas ações como enviar emails de subscrição.';
$lang['admin_password'] = 'A senha para o utilizador acima.';
$lang['sso'] = 'Deve ser usado o Single-Sign-On via Kerberos ou NTLM?';
+$lang['sso_charset'] = 'O charset do seu servidor web vai passar o nome de usuário Kerberos ou NTLM vazio para UTF-8 ou latin-1. Requer a extensão iconv.';
+$lang['real_primarygroup'] = 'Deveria ser resolvido, de fato, o grupo primário ao invés de assumir "Usuários de Domínio" (mais lento).';
$lang['use_ssl'] = 'Usar ligação SSL? Se usada, não ative TLS abaixo.';
$lang['use_tls'] = 'Usar ligação TLS? Se usada, não ative SSL abaixo.';
+$lang['debug'] = 'Deve-se mostrar saída adicional de depuração de erros?';
$lang['expirywarn'] = 'Número de dias de avanço para avisar o utilizador da expiração da senha. 0 para desativar.';
+$lang['additional'] = 'Uma lista separada por vírgula de atributos adicionais de AD para buscar a partir de dados do usuário. Usado por alguns plugins.';
diff --git a/lib/plugins/authad/lang/ro/lang.php b/lib/plugins/authad/lang/ro/lang.php
new file mode 100644
index 000000000..28a0e1e64
--- /dev/null
+++ b/lib/plugins/authad/lang/ro/lang.php
@@ -0,0 +1,8 @@
+<?php
+
+/**
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Razvan Deaconescu <razvan.deaconescu@cs.pub.ro>
+ */
+$lang['authpwdexpire'] = 'Parola va expira în %d zile, ar trebui să o schimbi în curând.';
diff --git a/lib/plugins/authad/lang/ru/lang.php b/lib/plugins/authad/lang/ru/lang.php
index 6f3c03e39..fe56be2bf 100644
--- a/lib/plugins/authad/lang/ru/lang.php
+++ b/lib/plugins/authad/lang/ru/lang.php
@@ -4,5 +4,9 @@
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
* @author Aleksandr Selivanov <alexgearbox@yandex.ru>
+ * @author Takumo <9206984@mail.ru>
*/
$lang['domain'] = 'Домен';
+$lang['authpwdexpire'] = 'Действие вашего пароля истекает через %d дней. Вы должны изменить его как можно скорее';
+$lang['passchangefail'] = 'Не удалось изменить пароль. Возможно, он не соответствует требованиям к паролю.';
+$lang['connectfail'] = 'Невозможно соединиться с сервером AD.';
diff --git a/lib/plugins/authad/lang/ru/settings.php b/lib/plugins/authad/lang/ru/settings.php
index c9c6d9f88..c791bd791 100644
--- a/lib/plugins/authad/lang/ru/settings.php
+++ b/lib/plugins/authad/lang/ru/settings.php
@@ -8,11 +8,20 @@
* @author Artur <ncuxxx@gmail.com>
* @author Erli Moen <evseev.jr@gmail.com>
* @author Владимир <id37736@yandex.ru>
+ * @author Aleksandr Selivanov <alexgearbox@yandex.ru>
+ * @author Type-kun <workwork-1@yandex.ru>
+ * @author Vitaly Filatenko <kot@hacktest.net>
*/
-$lang['account_suffix'] = 'Суффикс вашего аккаунта типа <code>@my.domain.org</code>';
+$lang['account_suffix'] = 'Суффикс вашего аккаунта. Например, <code>@my.domain.org</code>';
+$lang['base_dn'] = 'Ваш базовый DN. Например: <code>DC=my,DC=domain,DC=org</code>';
$lang['domain_controllers'] = 'Список DNS-серверов, разделенных запятой. Например:<code>srv1.domain.org,srv2.domain.org</code>';
+$lang['admin_username'] = 'Привилегированный пользователь Active Directory с доступом ко всем остальным пользовательским данным. Необязательно, однако необходимо для определённых действий вроде отправки почтовой подписки.';
$lang['admin_password'] = 'Пароль для указанного пользователя.';
$lang['sso'] = 'Использовать SSO (Single-Sign-On) через Kerberos или NTLM?';
+$lang['sso_charset'] = 'Кодировка, в которой веб-сервер передаёт имя пользователя Kerberos или NTLM. Для UTF-8 или latin-1 остаётся пустым. Требует расширение iconv.';
+$lang['real_primarygroup'] = 'Должна ли использоваться настоящая первичная группа вместо “Domain Users” (медленнее)';
$lang['use_ssl'] = 'Использовать SSL? Если да, то не включайте TLS.';
$lang['use_tls'] = 'Использовать TLS? Если да, то не включайте SSL.';
$lang['debug'] = 'Выводить дополнительную информацию при ошибках?';
+$lang['expirywarn'] = 'За сколько дней нужно предупреждать пользователя о необходимости изменить пароль? Для отключения укажите 0 (ноль).';
+$lang['additional'] = 'Дополнительные AD-атрибуты, разделённые запятой, для выборки из данных пользователя. Используется некоторыми плагинами.';
diff --git a/lib/plugins/authad/lang/sk/lang.php b/lib/plugins/authad/lang/sk/lang.php
new file mode 100644
index 000000000..cb0698f46
--- /dev/null
+++ b/lib/plugins/authad/lang/sk/lang.php
@@ -0,0 +1,8 @@
+<?php
+
+/**
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Martin Michalek <michalek.dev@gmail.com>
+ */
+$lang['authpwdexpire'] = 'Platnosť hesla vyprší za %d dní, mali by ste ho zmeniť čo najskôr.';
diff --git a/lib/plugins/authad/lang/sl/lang.php b/lib/plugins/authad/lang/sl/lang.php
new file mode 100644
index 000000000..dc7b3567a
--- /dev/null
+++ b/lib/plugins/authad/lang/sl/lang.php
@@ -0,0 +1,8 @@
+<?php
+
+/**
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author matej <mateju@svn.gnome.org>
+ */
+$lang['authpwdexpire'] = 'Geslo bo poteklo v %d dneh. Priporočljivo ga je zamenjati.';
diff --git a/lib/plugins/authad/lang/sv/lang.php b/lib/plugins/authad/lang/sv/lang.php
new file mode 100644
index 000000000..f253ae7fe
--- /dev/null
+++ b/lib/plugins/authad/lang/sv/lang.php
@@ -0,0 +1,8 @@
+<?php
+
+/**
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Smorkster Andersson smorkster@gmail.com
+ */
+$lang['authpwdexpire'] = 'Ditt lösenord kommer att bli ogiltigt om %d dagar, du bör ändra det snart.';
diff --git a/lib/plugins/authad/lang/tr/lang.php b/lib/plugins/authad/lang/tr/lang.php
new file mode 100644
index 000000000..2336e0f0c
--- /dev/null
+++ b/lib/plugins/authad/lang/tr/lang.php
@@ -0,0 +1,8 @@
+<?php
+
+/**
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author farukerdemoncel@gmail.com
+ */
+$lang['authpwdexpire'] = 'Şifreniz %d gün sonra geçersiz hale gelecek, yakın bir zamanda değiştirmelisiniz.';
diff --git a/lib/plugins/authad/lang/zh-tw/lang.php b/lib/plugins/authad/lang/zh-tw/lang.php
index 6ad0947a2..b2ce48535 100644
--- a/lib/plugins/authad/lang/zh-tw/lang.php
+++ b/lib/plugins/authad/lang/zh-tw/lang.php
@@ -4,5 +4,7 @@
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
* @author June-Hao Hou <junehao@gmail.com>
+ * @author syaoranhinata@gmail.com
*/
$lang['domain'] = '登入網域';
+$lang['authpwdexpire'] = '您的密碼將在 %d 天內到期,請馬上更換新密碼。';
diff --git a/lib/plugins/authad/lang/zh/lang.php b/lib/plugins/authad/lang/zh/lang.php
index 2a05aa168..df1a7a7f7 100644
--- a/lib/plugins/authad/lang/zh/lang.php
+++ b/lib/plugins/authad/lang/zh/lang.php
@@ -4,5 +4,9 @@
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
* @author lainme <lainme993@gmail.com>
+ * @author Errol <errol@hotmail.com>
*/
$lang['domain'] = '登录域';
+$lang['authpwdexpire'] = '您的密码将在 %d 天内过期,请尽快更改';
+$lang['passchangefail'] = '密码更改失败。是不是密码规则不符合?';
+$lang['connectfail'] = '无法连接到Active Directory服务器。';
diff --git a/lib/plugins/authad/plugin.info.txt b/lib/plugins/authad/plugin.info.txt
index dc0629189..57e1387e9 100644
--- a/lib/plugins/authad/plugin.info.txt
+++ b/lib/plugins/authad/plugin.info.txt
@@ -1,7 +1,7 @@
base authad
author Andreas Gohr
email andi@splitbrain.org
-date 2014-04-03
+date 2015-07-13
name Active Directory Auth Plugin
desc Provides user authentication against a Microsoft Active Directory
url http://www.dokuwiki.org/plugin:authad
diff --git a/lib/plugins/authldap/auth.php b/lib/plugins/authldap/auth.php
index b22b82ecc..247a0fec2 100644
--- a/lib/plugins/authldap/auth.php
+++ b/lib/plugins/authldap/auth.php
@@ -37,7 +37,7 @@ class auth_plugin_authldap extends DokuWiki_Auth_Plugin {
}
// Add the capabilities to change the password
- $this->cando['modPass'] = true;
+ $this->cando['modPass'] = $this->getConf('modPass');
}
/**
@@ -181,6 +181,7 @@ class auth_plugin_authldap extends DokuWiki_Auth_Plugin {
}
}
+ $info = array();
$info['user'] = $user;
$info['server'] = $this->getConf('server');
@@ -280,14 +281,14 @@ class auth_plugin_authldap extends DokuWiki_Auth_Plugin {
// open the connection to the ldap
if(!$this->_openLDAP()){
- msg('LDAP cannot connect: '. htmlspecialchars(ldap_error($this->con)));
+ $this->_debug('LDAP cannot connect: '. htmlspecialchars(ldap_error($this->con)), 0, __LINE__, __FILE__);
return false;
}
// find the information about the user, in particular the "dn"
$info = $this->getUserData($user,true);
if(empty($info['dn'])) {
- msg('LDAP cannot find your user dn');
+ $this->_debug('LDAP cannot find your user dn', 0, __LINE__, __FILE__);
return false;
}
$dn = $info['dn'];
@@ -300,7 +301,7 @@ class auth_plugin_authldap extends DokuWiki_Auth_Plugin {
// bind with the ldap
if(!@ldap_bind($this->con, $dn, $pass)){
- msg('LDAP user bind failed: '. htmlspecialchars($dn) .': '.htmlspecialchars(ldap_error($this->con)), 0, __LINE__, __FILE__);
+ $this->_debug('LDAP user bind failed: '. htmlspecialchars($dn) .': '.htmlspecialchars(ldap_error($this->con)), 0, __LINE__, __FILE__);
return false;
}
} elseif ($this->getConf('binddn') && $this->getConf('bindpw')) {
@@ -321,7 +322,7 @@ class auth_plugin_authldap extends DokuWiki_Auth_Plugin {
// change the password
if(!@ldap_mod_replace($this->con, $dn,array('userpassword' => $hash))){
- msg('LDAP mod replace failed: '. htmlspecialchars($dn) .': '.htmlspecialchars(ldap_error($this->con)));
+ $this->_debug('LDAP mod replace failed: '. htmlspecialchars($dn) .': '.htmlspecialchars(ldap_error($this->con)), 0, __LINE__, __FILE__);
return false;
}
@@ -359,8 +360,9 @@ class auth_plugin_authldap extends DokuWiki_Auth_Plugin {
$sr = ldap_search($this->con, $this->getConf('usertree'), $all_filter);
$entries = ldap_get_entries($this->con, $sr);
$users_array = array();
+ $userkey = $this->getConf('userkey');
for($i = 0; $i < $entries["count"]; $i++) {
- array_push($users_array, $entries[$i]["uid"][0]);
+ array_push($users_array, $entries[$i][$userkey][0]);
}
asort($users_array);
$result = $users_array;
@@ -515,13 +517,13 @@ class auth_plugin_authldap extends DokuWiki_Auth_Plugin {
}
}
// needs version 3
- if($this->getConf('referrals')) {
+ if($this->getConf('referrals') > -1) {
if(!@ldap_set_option(
$this->con, LDAP_OPT_REFERRALS,
$this->getConf('referrals')
)
) {
- msg('Setting LDAP referrals to off failed', -1);
+ msg('Setting LDAP referrals failed', -1);
$this->_debug('LDAP referal set: '.htmlspecialchars(ldap_error($this->con)), 0, __LINE__, __FILE__);
}
}
@@ -564,15 +566,13 @@ class auth_plugin_authldap extends DokuWiki_Auth_Plugin {
* Wraps around ldap_search, ldap_list or ldap_read depending on $scope
*
* @author Andreas Gohr <andi@splitbrain.org>
- * @param resource $link_identifier
- * @param string $base_dn
- * @param string $filter
- * @param string $scope can be 'base', 'one' or 'sub'
- * @param null $attributes
- * @param int $attrsonly
- * @param int $sizelimit
- * @param int $timelimit
- * @param int $deref
+ * @param resource $link_identifier
+ * @param string $base_dn
+ * @param string $filter
+ * @param string $scope can be 'base', 'one' or 'sub'
+ * @param null|array $attributes
+ * @param int $attrsonly
+ * @param int $sizelimit
* @return resource
*/
protected function _ldapsearch($link_identifier, $base_dn, $filter, $scope = 'sub', $attributes = null,
diff --git a/lib/plugins/authldap/conf/default.php b/lib/plugins/authldap/conf/default.php
index 2c295eeeb..116cb9d3f 100644
--- a/lib/plugins/authldap/conf/default.php
+++ b/lib/plugins/authldap/conf/default.php
@@ -8,7 +8,7 @@ $conf['userfilter'] = '';
$conf['groupfilter'] = '';
$conf['version'] = 2;
$conf['starttls'] = 0;
-$conf['referrals'] = 0;
+$conf['referrals'] = -1;
$conf['deref'] = 0;
$conf['binddn'] = '';
$conf['bindpw'] = '';
@@ -16,5 +16,7 @@ $conf['bindpw'] = '';
//$conf['mapping']['grps'] unsupported in config manager
$conf['userscope'] = 'sub';
$conf['groupscope'] = 'sub';
+$conf['userkey'] = 'uid';
$conf['groupkey'] = 'cn';
-$conf['debug'] = 0; \ No newline at end of file
+$conf['debug'] = 0;
+$conf['modPass'] = 1;
diff --git a/lib/plugins/authldap/conf/metadata.php b/lib/plugins/authldap/conf/metadata.php
index 2f6019f23..a67b11ca6 100644
--- a/lib/plugins/authldap/conf/metadata.php
+++ b/lib/plugins/authldap/conf/metadata.php
@@ -7,7 +7,7 @@ $meta['userfilter'] = array('string','_caution' => 'danger');
$meta['groupfilter'] = array('string','_caution' => 'danger');
$meta['version'] = array('numeric','_caution' => 'danger');
$meta['starttls'] = array('onoff','_caution' => 'danger');
-$meta['referrals'] = array('onoff','_caution' => 'danger');
+$meta['referrals'] = array('multichoice','_choices' => array(-1,0,1),'_caution' => 'danger');
$meta['deref'] = array('multichoice','_choices' => array(0,1,2,3),'_caution' => 'danger');
$meta['binddn'] = array('string','_caution' => 'danger');
$meta['bindpw'] = array('password','_caution' => 'danger');
@@ -15,5 +15,7 @@ $meta['bindpw'] = array('password','_caution' => 'danger');
//$meta['mapping']['grps'] unsupported in config manager
$meta['userscope'] = array('multichoice','_choices' => array('sub','one','base'),'_caution' => 'danger');
$meta['groupscope'] = array('multichoice','_choices' => array('sub','one','base'),'_caution' => 'danger');
+$meta['userkey'] = array('string','_caution' => 'danger');
$meta['groupkey'] = array('string','_caution' => 'danger');
$meta['debug'] = array('onoff','_caution' => 'security');
+$meta['modPass'] = array('onoff');
diff --git a/lib/plugins/authldap/lang/cs/settings.php b/lib/plugins/authldap/lang/cs/settings.php
index 20491f1fb..08c5c6a16 100644
--- a/lib/plugins/authldap/lang/cs/settings.php
+++ b/lib/plugins/authldap/lang/cs/settings.php
@@ -4,6 +4,7 @@
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
* @author mkucera66@seznam.cz
+ * @author Jaroslav Lichtblau <jlichtblau@seznam.cz>
*/
$lang['server'] = 'Váš server LDAP. Buď jméno hosta (<code>localhost</code>) nebo plně kvalifikovaný popis URL (<code>ldap://server.tld:389</code>)';
$lang['port'] = 'Port serveru LDAP. Pokud není, bude využito URL výše';
@@ -14,9 +15,18 @@ $lang['groupfilter'] = 'Filter LDAPu pro vyhledávání uživatelskýc
$lang['version'] = 'Verze použitého protokolu. Můžete potřebovat jej nastavit na <code>3</code>';
$lang['starttls'] = 'Využít spojení TLS?';
$lang['referrals'] = 'Přeposílat odkazy?';
+$lang['deref'] = 'Jak rozlišovat aliasy?';
$lang['binddn'] = 'Doménový název DN volitelně připojeného uživatele, pokus anonymní připojení není vyhovující, tj. <code>cn=admin, dc=muj, dc=domov</code>';
$lang['bindpw'] = 'Heslo uživatele výše';
$lang['userscope'] = 'Omezení rozsahu vyhledávání uživatele';
$lang['groupscope'] = 'Omezení rozsahu vyhledávání skupiny';
$lang['groupkey'] = 'Atribut šlenství uživatele ve skupinách (namísto standardních AD skupin), tj. skupina z oddělení nebo telefonní číslo';
+$lang['modPass'] = 'Může být LDAP heslo změněno přes dokuwiki?';
$lang['debug'] = 'Zobrazit dodatečné debugovací informace';
+$lang['deref_o_0'] = 'LDAP_DEREF_NEVER';
+$lang['deref_o_1'] = 'LDAP_DEREF_SEARCHING';
+$lang['deref_o_2'] = 'LDAP_DEREF_FINDING';
+$lang['deref_o_3'] = 'LDAP_DEREF_ALWAYS';
+$lang['referrals_o_-1'] = 'použít výchozí';
+$lang['referrals_o_0'] = 'nenásledovat odkazy';
+$lang['referrals_o_1'] = 'následovat odkazy';
diff --git a/lib/plugins/authldap/lang/da/settings.php b/lib/plugins/authldap/lang/da/settings.php
index b736504a5..a9fce3a8c 100644
--- a/lib/plugins/authldap/lang/da/settings.php
+++ b/lib/plugins/authldap/lang/da/settings.php
@@ -5,11 +5,16 @@
*
* @author Jens Hyllegaard <jens.hyllegaard@gmail.com>
* @author soer9648 <soer9648@eucl.dk>
+ * @author Jacob Palm <mail@jacobpalm.dk>
*/
$lang['server'] = 'Din LDAP server. Enten værtsnavn (<code>localhost</code>) eller fuld kvalificeret URL (<code>ldap://server.tld:389</code>)';
$lang['port'] = 'LDAP server port, hvis der ikke er angivet en komplet URL ovenfor.';
$lang['usertree'] = 'Hvor findes brugerkonti. F.eks. <code>ou=Personer, dc=server, dc=tld</code>';
$lang['grouptree'] = 'Hvor findes brugergrupper. F.eks. <code>ou=Grupper, dc=server, dc=tld</code>';
+$lang['userfilter'] = 'LDAP filter der benyttes til at søge efter brugerkonti. F.eks. <code>(&amp;(uid=%{user})(objectClass=posixAccount))</code>';
+$lang['groupfilter'] = 'LDAP filter tder benyttes til at søge efter grupper. F.eks. <code>(&amp;(objectClass=posixGroup)(|(gidNumber=%{gid})(memberUID=%{user})))</code>';
+$lang['version'] = 'Protokol version der skal benyttes. Det er muligvis nødvendigt at sætte denne til <code>3</code>';
$lang['starttls'] = 'Benyt TLS forbindelser?';
$lang['bindpw'] = 'Kodeord til ovenstående bruger';
+$lang['modPass'] = 'Kan LDAP adgangskoden skiftes via DokuWiki?';
$lang['debug'] = 'Vis yderligere debug output ved fejl';
diff --git a/lib/plugins/authldap/lang/de/lang.php b/lib/plugins/authldap/lang/de/lang.php
new file mode 100644
index 000000000..74197f918
--- /dev/null
+++ b/lib/plugins/authldap/lang/de/lang.php
@@ -0,0 +1,9 @@
+<?php
+
+/**
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Philip Knack <p.knack@stollfuss.de>
+ */
+$lang['connectfail'] = 'LDAP-Verbindung scheitert: %s';
+$lang['domainfail'] = 'LDAP kann nicht dein Benutzer finden dn';
diff --git a/lib/plugins/authldap/lang/de/settings.php b/lib/plugins/authldap/lang/de/settings.php
index d788da876..e986d0f80 100644
--- a/lib/plugins/authldap/lang/de/settings.php
+++ b/lib/plugins/authldap/lang/de/settings.php
@@ -5,6 +5,8 @@
*
* @author Matthias Schulte <dokuwiki@lupo49.de>
* @author christian studer <cstuder@existenz.ch>
+ * @author Philip Knack <p.knack@stollfuss.de>
+ * @author Anika Henke <anika@selfthinker.org>
*/
$lang['server'] = 'Adresse zum LDAP-Server. Entweder als Hostname (<code>localhost</code>) oder als FQDN (<code>ldap://server.tld:389</code>).';
$lang['port'] = 'Port des LDAP-Servers, falls kein Port angegeben wurde.';
@@ -20,9 +22,14 @@ $lang['binddn'] = 'DN eines optionalen Benutzers, wenn der anonym
$lang['bindpw'] = 'Passwort des angegebenen Benutzers.';
$lang['userscope'] = 'Die Suchweite nach Benutzeraccounts.';
$lang['groupscope'] = 'Die Suchweite nach Benutzergruppen.';
+$lang['userkey'] = 'Attribut, das den Benutzernamen enthält; muss konsistent zum userfilter sein.';
$lang['groupkey'] = 'Gruppieren der Benutzeraccounts anhand eines beliebigen Benutzerattributes z. B. Telefonnummer oder Abteilung, anstelle der Standard-Gruppen).';
+$lang['modPass'] = 'Darf über Dokuwiki das LDAP-Passwort geändert werden?';
$lang['debug'] = 'Debug-Informationen beim Auftreten von Fehlern anzeigen?';
$lang['deref_o_0'] = 'LDAP_DEREF_NEVER';
$lang['deref_o_1'] = 'LDAP_DEREF_SEARCHING';
$lang['deref_o_2'] = 'LDAP_DEREF_FINDING';
$lang['deref_o_3'] = 'LDAP_DEREF_ALWAYS';
+$lang['referrals_o_-1'] = 'Standard verwenden';
+$lang['referrals_o_0'] = 'Nicht Referrals folgen';
+$lang['referrals_o_1'] = 'Referrals folgen';
diff --git a/lib/plugins/authldap/lang/en/lang.php b/lib/plugins/authldap/lang/en/lang.php
new file mode 100644
index 000000000..8185a84fa
--- /dev/null
+++ b/lib/plugins/authldap/lang/en/lang.php
@@ -0,0 +1,11 @@
+<?php
+/**
+ * English language file for authldap plugin
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ */
+
+$lang['connectfail'] = 'LDAP cannot connect: %s';
+$lang['domainfail'] = 'LDAP cannot find your user dn';
+
+//Setup VIM: ex: et ts=4 :
diff --git a/lib/plugins/authldap/lang/en/settings.php b/lib/plugins/authldap/lang/en/settings.php
index b73166ab2..a4194b00a 100644
--- a/lib/plugins/authldap/lang/en/settings.php
+++ b/lib/plugins/authldap/lang/en/settings.php
@@ -13,7 +13,9 @@ $lang['binddn'] = 'DN of an optional bind user if anonymous bind is not suf
$lang['bindpw'] = 'Password of above user';
$lang['userscope'] = 'Limit search scope for user search';
$lang['groupscope'] = 'Limit search scope for group search';
+$lang['userkey'] = 'Attribute denoting the username; must be consistent to userfilter.';
$lang['groupkey'] = 'Group membership from any user attribute (instead of standard AD groups) e.g. group from department or telephone number';
+$lang['modPass'] = 'Can the LDAP password be changed via dokuwiki?';
$lang['debug'] = 'Display additional debug information on errors';
@@ -21,3 +23,7 @@ $lang['deref_o_0'] = 'LDAP_DEREF_NEVER';
$lang['deref_o_1'] = 'LDAP_DEREF_SEARCHING';
$lang['deref_o_2'] = 'LDAP_DEREF_FINDING';
$lang['deref_o_3'] = 'LDAP_DEREF_ALWAYS';
+
+$lang['referrals_o_-1'] = 'use default';
+$lang['referrals_o_0'] = 'don\'t follow referrals';
+$lang['referrals_o_1'] = 'follow referrals'; \ No newline at end of file
diff --git a/lib/plugins/authldap/lang/es/lang.php b/lib/plugins/authldap/lang/es/lang.php
new file mode 100644
index 000000000..20de155c1
--- /dev/null
+++ b/lib/plugins/authldap/lang/es/lang.php
@@ -0,0 +1,8 @@
+<?php
+
+/**
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Mauricio Segura <maose38@yahoo.es>
+ */
+$lang['connectfail'] = 'LDAP no se puede conectar: %s';
diff --git a/lib/plugins/authldap/lang/es/settings.php b/lib/plugins/authldap/lang/es/settings.php
index 6991546d3..8e1d0b4e1 100644
--- a/lib/plugins/authldap/lang/es/settings.php
+++ b/lib/plugins/authldap/lang/es/settings.php
@@ -5,6 +5,7 @@
*
* @author Antonio Bueno <atnbueno@gmail.com>
* @author Eloy <ej.perezgomez@gmail.com>
+ * @author Alejandro Nunez <nunez.alejandro@gmail.com>
*/
$lang['server'] = 'Tu servidor LDAP. Puede ser el nombre del host (<code>localhost</code>) o una URL completa (<code>ldap://server.tld:389</code>)';
$lang['port'] = 'Servidor LDAP en caso de que no se diera la URL completa anteriormente.';
@@ -20,8 +21,12 @@ $lang['bindpw'] = 'Contraseña del usuario de arriba.';
$lang['userscope'] = 'Limitar ámbito de búsqueda para búsqueda de usuarios';
$lang['groupscope'] = 'Limitar ámbito de búsqueda para búsqueda de grupos';
$lang['groupkey'] = 'Pertenencia al grupo desde cualquier atributo de usuario (en lugar de grupos AD estándar) p.e., grupo a partir departamento o número de teléfono';
+$lang['modPass'] = 'Puede ser cambiara via dokuwiki la password LDAP?';
$lang['debug'] = 'Mostrar información adicional para depuración de errores';
$lang['deref_o_0'] = 'LDAP_DEREF_NEVER';
$lang['deref_o_1'] = 'LDAP_DEREF_SEARCHING';
$lang['deref_o_2'] = 'LDAP_DEREF_FINDING';
$lang['deref_o_3'] = 'LDAP_DEREF_ALWAYS';
+$lang['referrals_o_-1'] = 'usar default';
+$lang['referrals_o_0'] = 'no seguir referencias';
+$lang['referrals_o_1'] = 'seguir referencias';
diff --git a/lib/plugins/authldap/lang/fa/settings.php b/lib/plugins/authldap/lang/fa/settings.php
new file mode 100644
index 000000000..49d485afd
--- /dev/null
+++ b/lib/plugins/authldap/lang/fa/settings.php
@@ -0,0 +1,10 @@
+<?php
+
+/**
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Mohammad Sadegh <msdn2013@gmail.com>
+ * @author Omid Hezaveh <hezpublic@gmail.com>
+ */
+$lang['starttls'] = 'از تی‌ال‌اس (TLS) استفاده می‌کنید؟';
+$lang['bindpw'] = 'رمزعبور کاربر بالا';
diff --git a/lib/plugins/authldap/lang/fr/lang.php b/lib/plugins/authldap/lang/fr/lang.php
new file mode 100644
index 000000000..5797bda42
--- /dev/null
+++ b/lib/plugins/authldap/lang/fr/lang.php
@@ -0,0 +1,9 @@
+<?php
+
+/**
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Pietroni <pietroni@informatique.univ-paris-diderot.fr>
+ */
+$lang['connectfail'] = 'LDAP ne peux se connecter : %s';
+$lang['domainfail'] = 'LDAP ne trouve pas l\'utilisateur dn';
diff --git a/lib/plugins/authldap/lang/fr/settings.php b/lib/plugins/authldap/lang/fr/settings.php
index dc475071e..619aee3d3 100644
--- a/lib/plugins/authldap/lang/fr/settings.php
+++ b/lib/plugins/authldap/lang/fr/settings.php
@@ -5,6 +5,7 @@
*
* @author Bruno Veilleux <bruno.vey@gmail.com>
* @author schplurtz <Schplurtz@laposte.net>
+ * @author Schplurtz le Déboulonné <schplurtz@laposte.net>
*/
$lang['server'] = 'Votre serveur LDAP. Soit le nom d\'hôte (<code>localhost</code>) ou l\'URL complète (<code>ldap://serveur.dom:389</code>)';
$lang['port'] = 'Port du serveur LDAP si l\'URL complète n\'a pas été indiquée ci-dessus';
@@ -20,9 +21,14 @@ $lang['binddn'] = 'Nom de domaine d\'un utilisateur de connexion
$lang['bindpw'] = 'Mot de passe de l\'utilisateur ci-dessus.';
$lang['userscope'] = 'Limiter la portée de recherche d\'utilisateurs';
$lang['groupscope'] = 'Limiter la portée de recherche de groupes';
+$lang['userkey'] = 'Attribut indiquant le nom d\'utilisateur. Doit être en accord avec le filtre d\'utilisateur.';
$lang['groupkey'] = 'Affiliation aux groupes à partir de n\'importe quel attribut utilisateur (au lieu des groupes AD standards), p. ex. groupes par département ou numéro de téléphone';
+$lang['modPass'] = 'Peut-on changer le mot de passe LDAP depuis DokiWiki ?';
$lang['debug'] = 'Afficher des informations de bégogage supplémentaires pour les erreurs';
$lang['deref_o_0'] = 'LDAP_DEREF_NEVER';
$lang['deref_o_1'] = 'LDAP_DEREF_SEARCHING';
$lang['deref_o_2'] = 'LDAP_DEREF_FINDING';
$lang['deref_o_3'] = 'LDAP_DEREF_ALWAYS';
+$lang['referrals_o_-1'] = 'comportement par défaut';
+$lang['referrals_o_0'] = 'ne pas suivre les références';
+$lang['referrals_o_1'] = 'suivre les références';
diff --git a/lib/plugins/authldap/lang/he/settings.php b/lib/plugins/authldap/lang/he/settings.php
index 357a58c56..10af7010d 100644
--- a/lib/plugins/authldap/lang/he/settings.php
+++ b/lib/plugins/authldap/lang/he/settings.php
@@ -4,5 +4,9 @@
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
* @author matt carroll <matt.carroll@gmail.com>
+ * @author Menashe Tomer <menashesite@gmail.com>
*/
$lang['starttls'] = 'השתמש בחיבורי TLS';
+$lang['modPass'] = 'האם dokuwiki יכול ליצור סיסמאות LDAP?';
+$lang['debug'] = 'הצג מידע נוסף על שגיאות';
+$lang['referrals_o_-1'] = 'ברירת מחדל';
diff --git a/lib/plugins/authldap/lang/hr/lang.php b/lib/plugins/authldap/lang/hr/lang.php
new file mode 100644
index 000000000..5e13d1b05
--- /dev/null
+++ b/lib/plugins/authldap/lang/hr/lang.php
@@ -0,0 +1,9 @@
+<?php
+
+/**
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Davor Turkalj <turki.bsc@gmail.com>
+ */
+$lang['connectfail'] = 'LDAP se ne može spojiti: %s';
+$lang['domainfail'] = 'LDAP ne može pronaći Vaš korisnički dn';
diff --git a/lib/plugins/authldap/lang/hr/settings.php b/lib/plugins/authldap/lang/hr/settings.php
index cb8df7218..5c306d84b 100644
--- a/lib/plugins/authldap/lang/hr/settings.php
+++ b/lib/plugins/authldap/lang/hr/settings.php
@@ -19,9 +19,14 @@ $lang['binddn'] = 'DN opcionalnog korisnika ako anonimni korisnik
$lang['bindpw'] = 'Lozinka gore navedenog korisnika';
$lang['userscope'] = 'Ograniči područje za pretragu korisnika';
$lang['groupscope'] = 'Ograniči područje za pretragu grupa';
+$lang['userkey'] = 'Atribut označava ime; mora biti u skladu s korisničkim filterom.';
$lang['groupkey'] = 'Članstvo grupa iz svih atributa korisnika (umjesto standardnih AD grupa) npr. grupa iz odjela ili telefonskog broja';
+$lang['modPass'] = 'Da li LDAP lozinka može biti izmijenjena kroz dokuwiki?';
$lang['debug'] = 'Prikaži dodatne informacije u slučaju greške';
$lang['deref_o_0'] = 'LDAP_DEREF_NEVER';
$lang['deref_o_1'] = 'LDAP_DEREF_SEARCHING';
$lang['deref_o_2'] = 'LDAP_DEREF_FINDING';
$lang['deref_o_3'] = 'LDAP_DEREF_ALWAYS';
+$lang['referrals_o_-1'] = 'koristi podrazumijevano';
+$lang['referrals_o_0'] = 'ne slijedi preporuke';
+$lang['referrals_o_1'] = 'slijedi preporuke';
diff --git a/lib/plugins/authldap/lang/ja/lang.php b/lib/plugins/authldap/lang/ja/lang.php
new file mode 100644
index 000000000..aeeb6c75e
--- /dev/null
+++ b/lib/plugins/authldap/lang/ja/lang.php
@@ -0,0 +1,9 @@
+<?php
+
+/**
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Hideaki SAWADA <chuno@live.jp>
+ */
+$lang['connectfail'] = 'LDAP に接続できません: %s';
+$lang['domainfail'] = 'LDAP で user dn を発見できません。';
diff --git a/lib/plugins/authldap/lang/ja/settings.php b/lib/plugins/authldap/lang/ja/settings.php
index 6cff0ea67..99a70de79 100644
--- a/lib/plugins/authldap/lang/ja/settings.php
+++ b/lib/plugins/authldap/lang/ja/settings.php
@@ -7,6 +7,7 @@
* @author Hideaki SAWADA <sawadakun@live.jp>
* @author Hideaki SAWADA <chuno@live.jp>
* @author PzF_X <jp_minecraft@yahoo.co.jp>
+ * @author Ikuo Obataya <i.obataya@gmail.com>
*/
$lang['server'] = 'LDAPサーバー。ホスト名(<code>localhost</code>)又は完全修飾URL(<code>ldap://server.tld:389</code>)';
$lang['port'] = '上記が完全修飾URLでない場合、LDAPサーバーポート';
@@ -22,10 +23,15 @@ $lang['binddn'] = '匿名バインドでは不十分な場合、
$lang['bindpw'] = '上記ユーザーのパスワード';
$lang['userscope'] = 'ユーザー検索の範囲を限定させる';
$lang['groupscope'] = 'グループ検索の範囲を限定させる';
+$lang['userkey'] = 'ユーザー名を示す属性。userfilter と一致している必要があります。';
$lang['groupkey'] = 'ユーザー属性をグループのメンバーシップから設定します(代わりに標準のADグループ)。
例えば、部署や電話番号などです。';
+$lang['modPass'] = 'DokuWiki から LDAP パスワードの変更が可能?';
$lang['debug'] = 'エラーに関して追加のデバッグ情報を表示する。';
$lang['deref_o_0'] = 'LDAP_DEREF_NEVER';
$lang['deref_o_1'] = 'LDAP_DEREF_SEARCHING';
$lang['deref_o_2'] = 'LDAP_DEREF_FINDING';
$lang['deref_o_3'] = 'LDAP_DEREF_ALWAYS';
+$lang['referrals_o_-1'] = 'デフォルトを使用する';
+$lang['referrals_o_0'] = 'referral に従わない';
+$lang['referrals_o_1'] = 'referral に従う';
diff --git a/lib/plugins/authldap/lang/ko/lang.php b/lib/plugins/authldap/lang/ko/lang.php
new file mode 100644
index 000000000..3c6722a81
--- /dev/null
+++ b/lib/plugins/authldap/lang/ko/lang.php
@@ -0,0 +1,9 @@
+<?php
+
+/**
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Myeongjin <aranet100@gmail.com>
+ */
+$lang['connectfail'] = 'LDAP가 연결할 수 없습니다: %s';
+$lang['domainfail'] = 'LDAP가 사용자 DN을 찾을 수 없습니다';
diff --git a/lib/plugins/authldap/lang/ko/settings.php b/lib/plugins/authldap/lang/ko/settings.php
index e663ba063..d3e93ff51 100644
--- a/lib/plugins/authldap/lang/ko/settings.php
+++ b/lib/plugins/authldap/lang/ko/settings.php
@@ -19,9 +19,14 @@ $lang['binddn'] = '익명 바인드가 충분하지 않으면 선
$lang['bindpw'] = '위 사용자의 비밀번호';
$lang['userscope'] = '사용자 검색에 대한 검색 범위 제한';
$lang['groupscope'] = '그룹 검색에 대한 검색 범위 제한';
+$lang['userkey'] = '사용자 이름을 나타내는 특성; 사용자 필터에 일관성이 있어야 합니다.';
$lang['groupkey'] = '(표준 AD 그룹 대신) 사용자 속성에서 그룹 구성원. 예를 들어 부서나 전화에서 그룹';
+$lang['modPass'] = 'LDAP 비밀번호를 도쿠위키를 통해 바꿀 수 있습니까?';
$lang['debug'] = '오류에 대한 추가적인 디버그 정보를 보이기';
$lang['deref_o_0'] = 'LDAP_DEREF_NEVER';
$lang['deref_o_1'] = 'LDAP_DEREF_SEARCHING';
$lang['deref_o_2'] = 'LDAP_DEREF_FINDING';
$lang['deref_o_3'] = 'LDAP_DEREF_ALWAYS';
+$lang['referrals_o_-1'] = '기본값 사용';
+$lang['referrals_o_0'] = '참조 (referral)를 따르지 않음';
+$lang['referrals_o_1'] = '참조 (referral)를 따름';
diff --git a/lib/plugins/authldap/lang/nl/lang.php b/lib/plugins/authldap/lang/nl/lang.php
new file mode 100644
index 000000000..7cbec9baa
--- /dev/null
+++ b/lib/plugins/authldap/lang/nl/lang.php
@@ -0,0 +1,9 @@
+<?php
+
+/**
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Hugo Smet <hugo.smet@scarlet.be>
+ */
+$lang['connectfail'] = 'LDAP kan niet connecteren: %s';
+$lang['domainfail'] = 'LDAP kan je gebruikers dn niet vinden';
diff --git a/lib/plugins/authldap/lang/nl/settings.php b/lib/plugins/authldap/lang/nl/settings.php
index 193d1a386..41fcce2cd 100644
--- a/lib/plugins/authldap/lang/nl/settings.php
+++ b/lib/plugins/authldap/lang/nl/settings.php
@@ -5,6 +5,7 @@
*
* @author Gerrit Uitslag <klapinklapin@gmail.com>
* @author Remon <no@email.local>
+ * @author Johan Wijnker <johan@wijnker.eu>
*/
$lang['server'] = 'Je LDAP server. Of de servernaam (<code>localhost</code>) of de volledige URL (<code>ldap://server.tld:389</code>)';
$lang['port'] = 'LDAP server poort als bij de entry hierboven geen volledige URL is opgegeven';
@@ -20,9 +21,14 @@ $lang['binddn'] = 'DN van een optionele bind gebruiker als anonie
$lang['bindpw'] = 'Wachtwoord van bovenstaande gebruiker';
$lang['userscope'] = 'Beperken scope van zoekfuncties voor gebruikers';
$lang['groupscope'] = 'Beperken scope van zoekfuncties voor groepen';
+$lang['userkey'] = 'Attribuut aanduiding van de gebruikersnaam; moet consistent zijn met userfilter.';
$lang['groupkey'] = 'Groepslidmaatschap van enig gebruikersattribuut (in plaats van standaard AD groepen), bijv. groep van afdeling of telefoonnummer';
+$lang['modPass'] = 'Kan het LDAP wachtwoord worden gewijzigd met DokuWiki?';
$lang['debug'] = 'Tonen van aanvullende debuginformatie bij fouten';
$lang['deref_o_0'] = 'LDAP_DEREF_NEVER';
$lang['deref_o_1'] = 'LDAP_DEREF_SEARCHING';
$lang['deref_o_2'] = 'LDAP_DEREF_FINDING';
$lang['deref_o_3'] = 'LDAP_DEREF_ALWAYS';
+$lang['referrals_o_-1'] = 'gebruik standaard';
+$lang['referrals_o_0'] = 'volg verwijzing niet';
+$lang['referrals_o_1'] = 'volg verwijzing';
diff --git a/lib/plugins/authldap/lang/no/settings.php b/lib/plugins/authldap/lang/no/settings.php
index 6bedb2991..61671ed46 100644
--- a/lib/plugins/authldap/lang/no/settings.php
+++ b/lib/plugins/authldap/lang/no/settings.php
@@ -4,6 +4,8 @@
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
* @author Christopher Schive <chschive@frisurf.no>
+ * @author Patrick <spill.p@hotmail.com>
*/
$lang['port'] = 'LDAP serverport dersom ingen full URL var gitt over.';
$lang['starttls'] = 'Bruke TLS-forbindelser?';
+$lang['bindpw'] = 'Passord til brukeren over';
diff --git a/lib/plugins/authldap/lang/pl/settings.php b/lib/plugins/authldap/lang/pl/settings.php
index 7010988e6..0f5281b13 100644
--- a/lib/plugins/authldap/lang/pl/settings.php
+++ b/lib/plugins/authldap/lang/pl/settings.php
@@ -4,6 +4,7 @@
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
* @author Paweł Jan Czochański <czochanski@gmail.com>
+ * @author Maciej Helt <geraldziu@gmail.com>
*/
$lang['server'] = 'Twój serwer LDAP. Podaj nazwę hosta (<code>localhost</code>) albo pełen adres URL (<code>ldap://server.tld:389</code>).';
$lang['port'] = 'Port serwera LDAP jeżeli nie podano pełnego adresu URL wyżej.';
@@ -14,3 +15,8 @@ $lang['groupfilter'] = 'Filtr LDAP wykorzystany przy szukaniu grup uż
$lang['version'] = 'Wykorzystywana wersja protokołu. Być może konieczne jest ustawienie tego na <code>3</code>.';
$lang['starttls'] = 'Użyć połączeń TLS?';
$lang['bindpw'] = 'Hasło powyższego użytkownika';
+$lang['debug'] = 'Przy błędach wyświetl dodatkowe informacje debugujące.';
+$lang['deref_o_0'] = 'LDAP_DEREF_NEVER';
+$lang['deref_o_1'] = 'LDAP_DEREF_SEARCHING';
+$lang['deref_o_2'] = 'LDAP_DEREF_FINDING';
+$lang['deref_o_3'] = 'LDAP_DEREF_ALWAYS';
diff --git a/lib/plugins/authldap/lang/pt-br/lang.php b/lib/plugins/authldap/lang/pt-br/lang.php
new file mode 100644
index 000000000..20f5ec33b
--- /dev/null
+++ b/lib/plugins/authldap/lang/pt-br/lang.php
@@ -0,0 +1,9 @@
+<?php
+
+/**
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Frederico Gonçalves Guimarães <frederico@teia.bio.br>
+ */
+$lang['connectfail'] = 'Não foi possível conectar ao LDAP: %s';
+$lang['domainfail'] = 'Não foi possível encontrar o seu user dn no LDAP';
diff --git a/lib/plugins/authldap/lang/pt-br/settings.php b/lib/plugins/authldap/lang/pt-br/settings.php
index 6ad6b4862..f35ed8eb8 100644
--- a/lib/plugins/authldap/lang/pt-br/settings.php
+++ b/lib/plugins/authldap/lang/pt-br/settings.php
@@ -5,6 +5,7 @@
*
* @author Victor Westmann <victor.westmann@gmail.com>
* @author Frederico Guimarães <frederico@teia.bio.br>
+ * @author Hudson FAS <hudsonfas@gmail.com>
*/
$lang['server'] = 'Seu servidor LDAP. Ou hostname (<code>localhost</code>) ou uma URL completa (<code>ldap://server.tld:389</code>)';
$lang['port'] = 'Porta LDAP do servidor se nenhuma URL completa tiver sido fornecida acima';
@@ -20,9 +21,14 @@ $lang['binddn'] = 'DN de um vínculo opcional de usuário se vín
$lang['bindpw'] = 'Senha do usuário acima';
$lang['userscope'] = 'Limitar escopo da busca para busca de usuário';
$lang['groupscope'] = 'Limitar escopo da busca para busca de grupo';
+$lang['userkey'] = 'Atributo que indica o nome do usuário; deve ser consistente com userfilter.';
$lang['groupkey'] = 'Membro de grupo vem de qualquer atributo do usuário (ao invés de grupos padrões AD) e.g. departamento de grupo ou número de telefone';
+$lang['modPass'] = 'A senha LDAP pode ser alterada pelo dokuwiki ?';
$lang['debug'] = 'Mostrar informações adicionais de depuração em erros';
$lang['deref_o_0'] = 'LDAP_DEREF_NEVER';
$lang['deref_o_1'] = 'LDAP_DEREF_SEARCHING';
$lang['deref_o_2'] = 'LDAP_DEREF_FINDING';
$lang['deref_o_3'] = 'LDAP_DEREF_ALWAYS';
+$lang['referrals_o_-1'] = 'use o padr&atilde;o';
+$lang['referrals_o_0'] = 'não seguem refer&ecirc;ncias';
+$lang['referrals_o_1'] = 'seguem refer&ecirc;ncias';
diff --git a/lib/plugins/authldap/lang/pt/lang.php b/lib/plugins/authldap/lang/pt/lang.php
new file mode 100644
index 000000000..cd782f4b4
--- /dev/null
+++ b/lib/plugins/authldap/lang/pt/lang.php
@@ -0,0 +1,9 @@
+<?php
+
+/**
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Paulo Carmino <contato@paulocarmino.com>
+ */
+$lang['connectfail'] = 'Não foi possível conectar o LDAP: %s';
+$lang['domainfail'] = 'O LDAP não encontrou seu usuário';
diff --git a/lib/plugins/authldap/lang/pt/settings.php b/lib/plugins/authldap/lang/pt/settings.php
index a2ccf87ad..4d4ed2d85 100644
--- a/lib/plugins/authldap/lang/pt/settings.php
+++ b/lib/plugins/authldap/lang/pt/settings.php
@@ -4,6 +4,9 @@
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
* @author André Neves <drakferion@gmail.com>
+ * @author Guido Salatino <guidorafael23@gmail.com>
+ * @author Romulo Pereira <romuloccomp@gmail.com>
+ * @author Paulo Carmino <contato@paulocarmino.com>
*/
$lang['server'] = 'O seu servidor de LDAP. Ou hostname (<code>localhost</code>) ou URL qualificado completo (<code>ldap://servidor.tld:389</code>)';
$lang['port'] = 'Porta de servidor de LDAP se o URL completo não foi fornecido acima';
@@ -14,5 +17,18 @@ $lang['groupfilter'] = 'Filtro LDAP para procurar por grupos. Por exem
$lang['version'] = 'A versão do protocolo a utilizar. Pode precisar de alterar isto para <code>3</code>';
$lang['starttls'] = 'Usar ligações TLS?';
$lang['referrals'] = 'Referrals devem ser seguidos?';
+$lang['deref'] = 'Como desreferenciar aliases?';
+$lang['binddn'] = 'DN de um usuário de ligação opcional, quando a ligação é anônima não é suficiente. Eg. <code> cn = admin, dc = my, dc = home </code>';
$lang['bindpw'] = 'Senha do utilizador acima';
+$lang['userscope'] = 'Escopo de pesquisa Limite para pesquisa de usuário';
+$lang['groupscope'] = 'Escopo de pesquisa Limite para pesquisa de grupo';
+$lang['groupkey'] = 'A participação no grupo a partir de qualquer atributo de usuário (em vez de AD padrão de grupos) exemplo: grupo de departamento ou número de telefone';
+$lang['modPass'] = 'Sua senha LDAP pode ser alterada via dokuwiki?';
$lang['debug'] = 'Mostrar informação adicional de debug aquando de erros';
+$lang['deref_o_0'] = 'LDAP_DEREF_NUNCA';
+$lang['deref_o_1'] = 'LDAP_DEREF_PESQUISANDO';
+$lang['deref_o_2'] = 'LDAP_DEREF_BUSCANDO';
+$lang['deref_o_3'] = 'LDAP_DEREF_SEMPRE';
+$lang['referrals_o_-1'] = 'usar padrão';
+$lang['referrals_o_0'] = 'não seguir as referências';
+$lang['referrals_o_1'] = 'seguir as referências';
diff --git a/lib/plugins/authldap/lang/ru/lang.php b/lib/plugins/authldap/lang/ru/lang.php
new file mode 100644
index 000000000..c05ed3b15
--- /dev/null
+++ b/lib/plugins/authldap/lang/ru/lang.php
@@ -0,0 +1,9 @@
+<?php
+
+/**
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Takumo <9206984@mail.ru>
+ */
+$lang['connectfail'] = 'Ошибка соединения LDAP с %s';
+$lang['domainfail'] = 'Не найдено имя пользователя LDAP (dn)';
diff --git a/lib/plugins/authldap/lang/ru/settings.php b/lib/plugins/authldap/lang/ru/settings.php
index 5677e06a3..067ec9de4 100644
--- a/lib/plugins/authldap/lang/ru/settings.php
+++ b/lib/plugins/authldap/lang/ru/settings.php
@@ -8,12 +8,31 @@
* @author Erli Moen <evseev.jr@gmail.com>
* @author Aleksandr Selivanov <alexgearbox@yandex.ru>
* @author Владимир <id37736@yandex.ru>
+ * @author Vitaly Filatenko <kot@hacktest.net>
+ * @author Alex P <alexander@lanos.co.uk>
*/
-$lang['starttls'] = 'Использовать TLS подключения?';
+$lang['server'] = 'Ваш LDAP-сервер. Либо имя хоста (<code>localhost</code>), либо полный URL (<code>ldap://server.tld:389</code>)';
+$lang['port'] = 'Порт LDAP-сервера, если выше не был указан полный URL';
+$lang['usertree'] = 'Где искать аккаунты пользователей? Например: <code>ou=People, dc=server, dc=tld</code>';
+$lang['grouptree'] = 'Где искать группы пользователей? Например: <code>ou=Group, dc=server, dc=tld</code>';
+$lang['userfilter'] = 'LDAP-фильтр для поиска аккаунтов пользователей. Например: <code>(&amp;(uid=%{user})(objectClass=posixAccount))</code>';
+$lang['groupfilter'] = 'LDAP-фильтр для поиска групп. Например: <code>(&amp;(objectClass=posixGroup)(|(gidNumber=%{gid})(memberUID=%{user})))</code>';
+$lang['version'] = 'Версия протокола. Возможно, вам нужно указать <code>3</code>';
+$lang['starttls'] = 'Использовать TLS-подключения?';
+$lang['referrals'] = 'Следовать за referrals ?';
$lang['deref'] = 'Как расшифровывать псевдонимы?';
-$lang['bindpw'] = 'Пароль для указанного пользователя.';
+$lang['binddn'] = 'DN вторичного bind пользователя, если anonymous bind недостаточно. Например: <code>cn=admin, dc=my, dc=home</code>';
+$lang['bindpw'] = 'Пароль для указанного пользователя';
+$lang['userscope'] = 'Ограничить область поиска при поиске пользователей';
+$lang['groupscope'] = 'Ограничить область поиска при поиске групп';
+$lang['userkey'] = 'Атрибут означающий имя пользователя; должен быть таким же как в userfilter';
+$lang['groupkey'] = 'Использовать любой атрибут пользователя для включения в группу (вместо стандартного AD groups) Например из атрибута department или telephone number';
+$lang['modPass'] = 'Может ли LDAP пароль быть поменян через dokuwiki?';
$lang['debug'] = 'Показывать дополнительную отладочную информацию при ошибках';
$lang['deref_o_0'] = 'LDAP_DEREF_NEVER';
$lang['deref_o_1'] = 'LDAP_DEREF_SEARCHING';
$lang['deref_o_2'] = 'LDAP_DEREF_FINDING';
$lang['deref_o_3'] = 'LDAP_DEREF_ALWAYS';
+$lang['referrals_o_-1'] = 'исользовать по умолчанию';
+$lang['referrals_o_0'] = 'не следовать за referrals';
+$lang['referrals_o_1'] = 'Следовать за referrals';
diff --git a/lib/plugins/authldap/lang/zh-tw/settings.php b/lib/plugins/authldap/lang/zh-tw/settings.php
index e3d85cb87..dcbbace8c 100644
--- a/lib/plugins/authldap/lang/zh-tw/settings.php
+++ b/lib/plugins/authldap/lang/zh-tw/settings.php
@@ -2,15 +2,15 @@
/**
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
- *
+ *
* @author syaoranhinata@gmail.com
*/
$lang['server'] = '您的 LDAP 伺服器。填寫主機名稱 (<code>localhost</code>) 或完整的 URL (<code>ldap://server.tld:389</code>)';
$lang['port'] = 'LDAP 伺服器端口 (若上方沒填寫完整的 URL)';
$lang['usertree'] = '到哪裏尋找使用者帳號?如: <code>ou=People, dc=server, dc=tld</code>';
$lang['grouptree'] = '到哪裏尋找使用者群組?如: <code>ou=Group, dc=server, dc=tld</code>';
-$lang['userfilter'] = '用於搜索使用者賬號的 LDAP 篩選器。如: <code>(&(uid=%{user})(objectClass=posixAccount))</code>';
-$lang['groupfilter'] = '用於搜索群組的 LDAP 篩選器。例如 <code>(&(objectClass=posixGroup)(|(gidNumber=%{gid})(memberUID=%{user})))</code>';
+$lang['userfilter'] = '用於搜索使用者賬號的 LDAP 篩選器。如: <code>(&amp;(uid=%{user})(objectClass=posixAccount))</code>';
+$lang['groupfilter'] = '用於搜索群組的 LDAP 篩選器。例如 <code>(&amp;(objectClass=posixGroup)(|(gidNumber=%{gid})(memberUID=%{user})))</code>';
$lang['version'] = '使用的通訊協定版本。您可能要設置為 <code>3</code>';
$lang['starttls'] = '使用 TLS 連接嗎?';
$lang['referrals'] = '是否允許引用 (referrals)?';
diff --git a/lib/plugins/authldap/lang/zh/lang.php b/lib/plugins/authldap/lang/zh/lang.php
new file mode 100644
index 000000000..ef727497e
--- /dev/null
+++ b/lib/plugins/authldap/lang/zh/lang.php
@@ -0,0 +1,9 @@
+<?php
+
+/**
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Errol <errol@hotmail.com>
+ */
+$lang['connectfail'] = 'LDAP 无法连接: %s';
+$lang['domainfail'] = 'LDAP 无法找到你的用户 dn';
diff --git a/lib/plugins/authldap/lang/zh/settings.php b/lib/plugins/authldap/lang/zh/settings.php
index cdaf3dc64..7bb63975f 100644
--- a/lib/plugins/authldap/lang/zh/settings.php
+++ b/lib/plugins/authldap/lang/zh/settings.php
@@ -5,13 +5,14 @@
*
* @author lainme <lainme993@gmail.com>
* @author oott123 <ip.192.168.1.1@qq.com>
+ * @author Errol <errol@hotmail.com>
*/
$lang['server'] = '您的 LDAP 服务器。填写主机名 (<code>localhost</code>) 或者完整的 URL (<code>ldap://server.tld:389</code>)';
$lang['port'] = 'LDAP 服务器端口 (如果上面没有给出完整的 URL)';
$lang['usertree'] = '何处查找用户账户。例如 <code>ou=People, dc=server, dc=tld</code>';
$lang['grouptree'] = '何处查找用户组。例如 <code>ou=Group, dc=server, dc=tld</code>';
-$lang['userfilter'] = '用于搜索用户账户的 LDAP 筛选器。例如 <code>(&(uid=%{user})(objectClass=posixAccount))</code>';
-$lang['groupfilter'] = '用于搜索组的 LDAP 筛选器。例如 <code>(&(objectClass=posixGroup)(|(gidNumber=%{gid})(memberUID=%{user})))</code>';
+$lang['userfilter'] = '用于搜索用户账户的 LDAP 筛选器。例如 <code>(&amp;(uid=%{user})(objectClass=posixAccount))</code>';
+$lang['groupfilter'] = '用于搜索组的 LDAP 筛选器。例如 <code>(&amp;(objectClass=posixGroup)(|(gidNumber=%{gid})(memberUID=%{user})))</code>';
$lang['version'] = '使用的协议版本。您或许需要设置为 <code>3</code>';
$lang['starttls'] = '使用 TLS 连接?';
$lang['referrals'] = '是否允许引用 (referrals)?';
@@ -20,9 +21,14 @@ $lang['binddn'] = '一个可选的绑定用户的 DN (如果匿
$lang['bindpw'] = '上述用户的密码';
$lang['userscope'] = '限制用户搜索的范围';
$lang['groupscope'] = '限制组搜索的范围';
+$lang['userkey'] = '表示用户名的属性;必须和用户过滤器保持一致。';
$lang['groupkey'] = '根据任何用户属性得来的组成员(而不是标准的 AD 组),例如根据部门或者电话号码得到的组。';
+$lang['modPass'] = ' LDAP密码可以由dokuwiki修改吗?';
$lang['debug'] = '有错误时显示额外的调试信息';
$lang['deref_o_0'] = 'LDAP_DEREF_NEVER';
$lang['deref_o_1'] = 'LDAP_DEREF_SEARCHING';
$lang['deref_o_2'] = 'LDAP_DEREF_FINDING';
$lang['deref_o_3'] = 'LDAP_DEREF_ALWAYS';
+$lang['referrals_o_-1'] = '默认';
+$lang['referrals_o_0'] = '不要跟随参照(referral)';
+$lang['referrals_o_1'] = '跟随参照(referral)';
diff --git a/lib/plugins/authldap/plugin.info.txt b/lib/plugins/authldap/plugin.info.txt
index 964fbb994..e0c6144c3 100644
--- a/lib/plugins/authldap/plugin.info.txt
+++ b/lib/plugins/authldap/plugin.info.txt
@@ -1,7 +1,7 @@
base authldap
author Andreas Gohr
email andi@splitbrain.org
-date 2014-05-18
+date 2015-07-13
name LDAP Auth Plugin
desc Provides user authentication against an LDAP server
url http://www.dokuwiki.org/plugin:authldap
diff --git a/lib/plugins/authmysql/auth.php b/lib/plugins/authmysql/auth.php
index 95c62f636..1b7d0bfa4 100644
--- a/lib/plugins/authmysql/auth.php
+++ b/lib/plugins/authmysql/auth.php
@@ -115,7 +115,8 @@ class auth_plugin_authmysql extends DokuWiki_Auth_Plugin {
* Check if the given config strings are set
*
* @author Matthias Grimm <matthiasgrimm@users.sourceforge.net>
- * @param array $keys
+ *
+ * @param string[] $keys
* @param bool $wop is this a check for a write operation?
* @return bool
*/
@@ -221,6 +222,7 @@ class auth_plugin_authmysql extends DokuWiki_Auth_Plugin {
if($this->_openDB()) {
if(($info = $this->_getUserInfo($user)) !== false) {
+ msg($this->getLang('userexists'), -1);
return false; // user already exists
}
@@ -234,7 +236,13 @@ class auth_plugin_authmysql extends DokuWiki_Auth_Plugin {
$rc = $this->_addUser($user, $pwd, $name, $mail, $grps);
$this->_unlockTables();
$this->_closeDB();
- if($rc) return true;
+ if(!$rc) {
+ msg($this->getLang('writefail'));
+ return null;
+ }
+ return true;
+ } else {
+ msg($this->getLang('connectfail'), -1);
}
return null; // return error
}
@@ -278,13 +286,15 @@ class auth_plugin_authmysql extends DokuWiki_Auth_Plugin {
$rc = $this->_updateUserInfo($user, $changes);
- if($rc && isset($changes['grps']) && $this->cando['modGroups']) {
+ if(!$rc) {
+ msg($this->getLang('usernotexists'), -1);
+ } elseif(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) {
+ if(($this->_addUserToGroup($user, $group, true)) == false) {
$rc = false;
}
}
@@ -294,10 +304,14 @@ class auth_plugin_authmysql extends DokuWiki_Auth_Plugin {
$rc = false;
}
}
+
+ if(!$rc) msg($this->getLang('writefail'));
}
$this->_unlockTables();
$this->_closeDB();
+ } else {
+ msg($this->getLang('connectfail'), -1);
}
return $rc;
}
@@ -327,6 +341,8 @@ class auth_plugin_authmysql extends DokuWiki_Auth_Plugin {
$this->_unlockTables();
}
$this->_closeDB();
+ } else {
+ msg($this->getLang('connectfail'), -1);
}
return $count;
}
@@ -366,7 +382,7 @@ class auth_plugin_authmysql extends DokuWiki_Auth_Plugin {
*
* @param int $first index of first user to be returned
* @param int $limit max number of users to be returned
- * @param array|string $filter array of field/pattern pairs
+ * @param array $filter array of field/pattern pairs
* @return array userinfo (refer getUserData for internal userinfo details)
*/
public function retrieveUsers($first = 0, $limit = 0, $filter = array()) {
@@ -612,7 +628,7 @@ class auth_plugin_authmysql extends DokuWiki_Auth_Plugin {
if($uid) {
foreach($grps as $group) {
- $gid = $this->_addUserToGroup($user, $group, 1);
+ $gid = $this->_addUserToGroup($user, $group, true);
if($gid === false) break;
}
@@ -668,7 +684,6 @@ class auth_plugin_authmysql extends DokuWiki_Auth_Plugin {
*
* @param string $user username of the user whose data is to be removed from the cache
* if null, empty the whole cache
- * @return none
*/
protected function _flushUserInfoCache($user=null) {
if (is_null($user)) {
@@ -750,7 +765,7 @@ class auth_plugin_authmysql extends DokuWiki_Auth_Plugin {
* @author Matthias Grimm <matthiasgrimm@users.sourceforge.net>
*
* @param string $user user's nick to get data for
- * @return bool|array false on error, user info on success
+ * @return false|array false on error, user info on success
*/
protected function _retrieveUserInfo($user) {
$sql = str_replace('%{user}', $this->_escape($user), $this->getConf('getUserInfo'));
@@ -777,7 +792,6 @@ class auth_plugin_authmysql extends DokuWiki_Auth_Plugin {
*
* @param string $user user's nick being updated
* @param array $changes array of items to change as pairs of item and value
- * @param mixed $uid user id of dataset to change, must be unique in DB
* @return bool true on success or false on error
*
* @author Matthias Grimm <matthiasgrimm@users.sourceforge.net>
@@ -838,7 +852,7 @@ class auth_plugin_authmysql extends DokuWiki_Auth_Plugin {
* @author Matthias Grimm <matthiasgrimm@users.sourceforge.net>
*
* @param string $group group name which id is desired
- * @return mixed group id
+ * @return false|string group id
*/
protected function _getGroupID($group) {
if($this->dbcon) {
@@ -911,7 +925,7 @@ class auth_plugin_authmysql extends DokuWiki_Auth_Plugin {
* @author Matthias Grimm <matthiasgrimm@users.sourceforge.net>
*
* @param string $query SQL string that contains the query
- * @return array with the result table
+ * @return array|false with the result table
*/
protected function _queryDB($query) {
if($this->getConf('debug') >= 2) {
@@ -1002,6 +1016,8 @@ class auth_plugin_authmysql extends DokuWiki_Auth_Plugin {
* abrogated.
*
* @author Matthias Grimm <matthiasgrimm@users.sourceforge.net>
+ *
+ * @return bool
*/
protected function _unlockTables() {
if($this->dbcon) {
diff --git a/lib/plugins/authmysql/lang/bg/lang.php b/lib/plugins/authmysql/lang/bg/lang.php
new file mode 100644
index 000000000..d5837c726
--- /dev/null
+++ b/lib/plugins/authmysql/lang/bg/lang.php
@@ -0,0 +1,10 @@
+<?php
+
+/**
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Kiril <neohidra@gmail.com>
+ */
+$lang['connectfail'] = 'Свързването с базата данни се провали.';
+$lang['userexists'] = 'За съжаление вече съществува потребител с това име.';
+$lang['usernotexists'] = 'За съжаление не съществува такъв потребител.';
diff --git a/lib/plugins/authmysql/lang/cs/settings.php b/lib/plugins/authmysql/lang/cs/settings.php
index 350c3236b..09146a451 100644
--- a/lib/plugins/authmysql/lang/cs/settings.php
+++ b/lib/plugins/authmysql/lang/cs/settings.php
@@ -4,6 +4,7 @@
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
* @author mkucera66@seznam.cz
+ * @author Jaroslav Lichtblau <jlichtblau@seznam.cz>
*/
$lang['server'] = 'Váš server MySQL';
$lang['user'] = 'Uživatelské jméno pro MySQL';
@@ -19,7 +20,7 @@ $lang['getGroups'] = 'Příkaz SQL pro získání uživatelovy skupi
$lang['getUsers'] = 'Příkaz SQL pro seznam všech uživatelů';
$lang['FilterLogin'] = 'Příkaz SQL pro filtrování uživatelů podle přihlašovacího jména';
$lang['FilterName'] = 'Příkaz SQL pro filtrování uživatelů podle celého jména';
-$lang['FilterEmail'] = 'Příkaz SQL pro filtrování uživatelů podle adres emailů';
+$lang['FilterEmail'] = 'Příkaz SQL pro filtrování uživatelů podle adres e-mailů';
$lang['FilterGroup'] = 'Příkaz SQL pro filtrování uživatelů podle členství ve skupinách';
$lang['SortOrder'] = 'Příkaz SQL pro řazení uživatelů';
$lang['addUser'] = 'Příkaz SQL pro přidání nového uživatele';
@@ -32,7 +33,7 @@ $lang['delUserRefs'] = 'Příkaz SQL pro odstranění členství uživ
$lang['updateUser'] = 'Příkaz SQL pro aktualizaci uživatelského profilu';
$lang['UpdateLogin'] = 'Klauzule pro aktualizaci přihlačovacího jména uživatele';
$lang['UpdatePass'] = 'Klauzule pro aktualizaci hesla uživatele';
-$lang['UpdateEmail'] = 'Klauzule pro aktualizaci emailové adresy uživatele';
+$lang['UpdateEmail'] = 'Klauzule pro aktualizaci e-mailové adresy uživatele';
$lang['UpdateName'] = 'Klauzule pro aktualizaci celého jména uživatele';
$lang['UpdateTarget'] = 'Omezující klauzule pro identifikaci uživatele při aktualizaci';
$lang['delUserGroup'] = 'Příkaz SQL pro zrušení členství uživatele v dané skupině';
diff --git a/lib/plugins/authmysql/lang/da/settings.php b/lib/plugins/authmysql/lang/da/settings.php
index 1e38cb6b4..5fd66dbad 100644
--- a/lib/plugins/authmysql/lang/da/settings.php
+++ b/lib/plugins/authmysql/lang/da/settings.php
@@ -2,17 +2,22 @@
/**
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
- *
+ *
* @author Jens Hyllegaard <jens.hyllegaard@gmail.com>
* @author soer9648 <soer9648@eucl.dk>
+ * @author Jacob Palm <mail@jacobpalm.dk>
*/
$lang['server'] = 'Din MySQL server';
$lang['user'] = 'MySQL brugernavn';
$lang['password'] = 'Kodeord til ovenstående bruger';
$lang['database'] = 'Database der skal benyttes';
$lang['charset'] = 'Tegnsæt benyttet i database';
+$lang['debug'] = 'Vis yderligere debug output';
+$lang['forwardClearPass'] = 'Videregiv bruger adgangskoder i klar tekst til nedenstående SQL statement, i stedet for at benytte passcrypt';
+$lang['TablesToLock'] = 'Kommasepareret liste over tabeller der skal låses under skrivning';
$lang['checkPass'] = 'SQL-sætning til at kontrollere kodeord';
$lang['getUserInfo'] = 'SQL-sætning til at hente brugerinformation';
+$lang['getGroups'] = 'SQL statement til at bestemme en brugers medlemskab af grupper';
$lang['getUsers'] = 'SQL-sætning til at liste alle brugere';
$lang['addUser'] = 'SQL-sætning til at tilføje en ny bruger';
$lang['addGroup'] = 'SQL-sætning til at tilføje en ny gruppe';
@@ -21,7 +26,6 @@ $lang['delGroup'] = 'SQL-sætning til at fjerne en gruppe';
$lang['delUser'] = 'SQL-sætning til at slette en bruger';
$lang['delUserRefs'] = 'SQL-sætning til at fjerne en bruger fra alle grupper';
$lang['updateUser'] = 'SQL-sætning til at opdatere en brugerprofil';
-$lang['debug'] = 'Vis yderligere debug output';
$lang['debug_o_0'] = 'ingen';
$lang['debug_o_1'] = 'kun ved fejl';
$lang['debug_o_2'] = 'alle SQL forespørgsler';
diff --git a/lib/plugins/authmysql/lang/de/lang.php b/lib/plugins/authmysql/lang/de/lang.php
new file mode 100644
index 000000000..c5c3c657a
--- /dev/null
+++ b/lib/plugins/authmysql/lang/de/lang.php
@@ -0,0 +1,13 @@
+<?php
+
+/**
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Noel Tilliot <noeltilliot@byom.de>
+ * @author Hendrik Diel <diel.hendrik@gmail.com>
+ * @author Philip Knack <p.knack@stollfuss.de>
+ */
+$lang['connectfail'] = 'Verbindung zur Datenbank fehlgeschlagen.';
+$lang['userexists'] = 'Entschuldigung, aber dieser Benutzername ist bereits vergeben.';
+$lang['usernotexists'] = 'Sorry, dieser Nutzer existiert nicht.';
+$lang['writefail'] = 'Die Benutzerdaten konnten nicht geändert werden. Bitte wenden Sie sich an den Wiki-Admin.';
diff --git a/lib/plugins/authmysql/lang/en/lang.php b/lib/plugins/authmysql/lang/en/lang.php
new file mode 100644
index 000000000..8313616c6
--- /dev/null
+++ b/lib/plugins/authmysql/lang/en/lang.php
@@ -0,0 +1,13 @@
+<?php
+/**
+ * English language file for authmysql plugin
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ */
+
+$lang['connectfail'] = 'Failed to connect to database.';
+$lang['userexists'] = 'Sorry, a user with this login already exists.';
+$lang['usernotexists'] = 'Sorry, that user doesn\'t exist.';
+$lang['writefail'] = 'Unable to modify user data. Please inform the Wiki-Admin';
+
+//Setup VIM: ex: et ts=4 :
diff --git a/lib/plugins/authmysql/lang/es/lang.php b/lib/plugins/authmysql/lang/es/lang.php
new file mode 100644
index 000000000..e25b801c3
--- /dev/null
+++ b/lib/plugins/authmysql/lang/es/lang.php
@@ -0,0 +1,11 @@
+<?php
+
+/**
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Domingo Redal <docxml@gmail.com>
+ */
+$lang['connectfail'] = 'Error al conectar con la base de datos.';
+$lang['userexists'] = 'Lo sentimos, ya existe un usuario con ese inicio de sesión.';
+$lang['usernotexists'] = 'Lo sentimos, no existe ese usuario.';
+$lang['writefail'] = 'No es posible modificar los datos del usuario. Por favor, informa al Administrador del Wiki';
diff --git a/lib/plugins/authmysql/lang/es/settings.php b/lib/plugins/authmysql/lang/es/settings.php
index b82620fc6..8b5c79995 100644
--- a/lib/plugins/authmysql/lang/es/settings.php
+++ b/lib/plugins/authmysql/lang/es/settings.php
@@ -6,6 +6,8 @@
* @author Antonio Bueno <atnbueno@gmail.com>
* @author Eloy <ej.perezgomez@gmail.com>
* @author Antonio Castilla <antoniocastilla@trazoide.com>
+ * @author Alejandro Nunez <nunez.alejandro@gmail.com>
+ * @author Domingo Redal <docxml@gmail.com>
*/
$lang['server'] = 'Tu servidor MySQL';
$lang['user'] = 'Nombre de usuario MySQL';
@@ -32,6 +34,11 @@ $lang['getUserID'] = 'Sentencia SQL para obtener la clave primaria d
$lang['delUser'] = 'Sentencia SQL para eliminar un usuario';
$lang['delUserRefs'] = 'Sentencia SQL para eliminar un usuario de todos los grupos';
$lang['updateUser'] = 'Sentencia SQL para actualizar un perfil de usuario';
+$lang['UpdateLogin'] = 'Cláusula de actualización para actualizar el login del usuario';
+$lang['UpdatePass'] = 'Cláusula de actualización para actualizar la contraseña del usuario';
+$lang['UpdateEmail'] = 'Cláusula de actualización para actualizar la dirección de correo del usuario';
+$lang['UpdateName'] = 'Cláusula de actualización para actualizar el nomblre completo del usuario';
+$lang['UpdateTarget'] = 'Cláusula limite para identificar al usuario cuando se actualiza';
$lang['delUserGroup'] = 'Sentencia SQL para eliminar un usuario de un grupo dado';
$lang['getGroupID'] = 'Sentencia SQL para obtener la clave principal de un grupo dado';
$lang['debug_o_0'] = 'ninguno';
diff --git a/lib/plugins/authmysql/lang/fi/settings.php b/lib/plugins/authmysql/lang/fi/settings.php
new file mode 100644
index 000000000..32517957b
--- /dev/null
+++ b/lib/plugins/authmysql/lang/fi/settings.php
@@ -0,0 +1,11 @@
+<?php
+
+/**
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Jussi Takala <jussi.takala@live.fi>
+ */
+$lang['server'] = 'Sinun MySQL-serveri';
+$lang['user'] = 'MySQL-käyttäjänimi';
+$lang['password'] = 'Salasana yläolevalle käyttäjälle';
+$lang['charset'] = 'Käytetty merkistö tietokannassa';
diff --git a/lib/plugins/authmysql/lang/fr/lang.php b/lib/plugins/authmysql/lang/fr/lang.php
new file mode 100644
index 000000000..d5a1e1209
--- /dev/null
+++ b/lib/plugins/authmysql/lang/fr/lang.php
@@ -0,0 +1,11 @@
+<?php
+
+/**
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Pietroni <pietroni@informatique.univ-paris-diderot.fr>
+ */
+$lang['connectfail'] = 'Impossible de se connecter à la base de données.';
+$lang['userexists'] = 'Désolé, un utilisateur avec cet identifiant existe déjà.';
+$lang['usernotexists'] = 'Désolé, cet utilisateur n\'existe pas.';
+$lang['writefail'] = 'Impossible de modifier les données utilisateur. Veuillez en informer l\'administrateur du Wiki.';
diff --git a/lib/plugins/authmysql/lang/he/settings.php b/lib/plugins/authmysql/lang/he/settings.php
new file mode 100644
index 000000000..3671b1bb9
--- /dev/null
+++ b/lib/plugins/authmysql/lang/he/settings.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Menashe Tomer <menashesite@gmail.com>
+ */
+$lang['getUserID'] = 'שאילתת SQL לקבלת מפתח ראשי של המשתמש';
+$lang['UpdateLogin'] = 'שאילתת SQL לעדכון שם המשתמש';
+$lang['UpdatePass'] = 'שאילתת SQL לעדכון סיסמת המשתמש';
+$lang['UpdateEmail'] = 'שאילתת SQL לעדכון כתובת הדוא"ל של המשתמש';
+$lang['UpdateName'] = 'שאילתת SQL לעדכון שם המשתמש';
diff --git a/lib/plugins/authmysql/lang/hr/lang.php b/lib/plugins/authmysql/lang/hr/lang.php
new file mode 100644
index 000000000..3f5dc5d60
--- /dev/null
+++ b/lib/plugins/authmysql/lang/hr/lang.php
@@ -0,0 +1,11 @@
+<?php
+
+/**
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Davor Turkalj <turki.bsc@gmail.com>
+ */
+$lang['connectfail'] = 'Ne mogu se spojiti na bazu.';
+$lang['userexists'] = 'Oprostite ali korisnik s ovom prijavom već postoji.';
+$lang['usernotexists'] = 'Oprostite ali ovaj korisnik ne postoji.';
+$lang['writefail'] = 'Ne mogu izmijeniti podatke. Molim obavijestite Wiki administratora';
diff --git a/lib/plugins/authmysql/lang/it/settings.php b/lib/plugins/authmysql/lang/it/settings.php
index 10c0de96f..9dc1a0157 100644
--- a/lib/plugins/authmysql/lang/it/settings.php
+++ b/lib/plugins/authmysql/lang/it/settings.php
@@ -6,6 +6,7 @@
* @author Claudio Lanconelli <lancos@libero.it>
* @author Mirko <malisan.mirko@gmail.com>
* @author Francesco <francesco.cavalli@hotmail.com>
+ * @author Maurizio <mcannavo@katamail.com>
*/
$lang['server'] = 'Il tuo server MySQL';
$lang['user'] = 'User name di MySQL';
@@ -17,6 +18,7 @@ $lang['checkPass'] = 'Istruzione SQL per il controllo password';
$lang['getUserInfo'] = 'Istruzione SQL per recuperare le informazioni utente';
$lang['getUsers'] = 'Istruzione SQL per listare tutti gli utenti';
$lang['FilterLogin'] = 'Istruzione SQL per per filtrare gli utenti in funzione del "login name"';
+$lang['FilterGroup'] = 'Clausola SQL per filtrare gli utenti in base all\'appartenenza al gruppo';
$lang['SortOrder'] = 'Istruzione SQL per ordinare gli utenti';
$lang['addUser'] = 'Istruzione SQL per aggiungere un nuovo utente';
$lang['addGroup'] = 'Istruzione SQL per aggiungere un nuovo gruppo';
diff --git a/lib/plugins/authmysql/lang/ja/lang.php b/lib/plugins/authmysql/lang/ja/lang.php
new file mode 100644
index 000000000..a2348f2f3
--- /dev/null
+++ b/lib/plugins/authmysql/lang/ja/lang.php
@@ -0,0 +1,11 @@
+<?php
+
+/**
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Hideaki SAWADA <chuno@live.jp>
+ */
+$lang['connectfail'] = 'データベースへの接続に失敗しました。';
+$lang['userexists'] = 'このログイン名のユーザーが既に存在しています。';
+$lang['usernotexists'] = 'そのユーザーは存在しません。';
+$lang['writefail'] = 'ユーザーデータを変更できません。Wiki の管理者に連絡してください。';
diff --git a/lib/plugins/authmysql/lang/ja/settings.php b/lib/plugins/authmysql/lang/ja/settings.php
index e5d5689df..6bc3f9a14 100644
--- a/lib/plugins/authmysql/lang/ja/settings.php
+++ b/lib/plugins/authmysql/lang/ja/settings.php
@@ -11,7 +11,7 @@ $lang['password'] = 'MySQL 接続用ユーザーのパスワード'
$lang['database'] = '使用するデータベース名';
$lang['charset'] = 'データベースの文字コード';
$lang['debug'] = 'デバック情報を表示する';
-$lang['forwardClearPass'] = '以下で定義する SQL ステートメントにおいて, パスワード変数 &#x25;{pass} を平文とする(DokiWiki側で暗号化しない)';
+$lang['forwardClearPass'] = '以下で定義する SQL ステートメントにおいて, パスワード変数 を平文とする(DokiWiki側で暗号化しない)';
$lang['TablesToLock'] = '書き込み時にロックするテーブル(コンマ区切りで列挙)';
$lang['checkPass'] = 'パスワードの照合に用いる SQL ステートメント';
$lang['getUserInfo'] = 'ユーザー情報の取得に用いる SQL ステートメント';
diff --git a/lib/plugins/authmysql/lang/ko/lang.php b/lib/plugins/authmysql/lang/ko/lang.php
new file mode 100644
index 000000000..d07d58388
--- /dev/null
+++ b/lib/plugins/authmysql/lang/ko/lang.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author hyeonsoft <hyeonsoft@live.co.kr>
+ * @author Myeongjin <aranet100@gmail.com>
+ */
+$lang['connectfail'] = '데이터베이스에 연결하는 데 실패했습니다.';
+$lang['userexists'] = '죄송하지만 이 계정으로 이미 로그인한 사용자가 있습니다.';
+$lang['usernotexists'] = '죄송하지만 해당 사용자가 존재하지 않습니다.';
+$lang['writefail'] = '사용자 데이터를 수정할 수 없습니다. 위키 관리자에게 문의하시기 바랍니다';
diff --git a/lib/plugins/authmysql/lang/nl/lang.php b/lib/plugins/authmysql/lang/nl/lang.php
new file mode 100644
index 000000000..9a8cf3114
--- /dev/null
+++ b/lib/plugins/authmysql/lang/nl/lang.php
@@ -0,0 +1,11 @@
+<?php
+
+/**
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Hugo Smet <hugo.smet@scarlet.be>
+ */
+$lang['connectfail'] = 'Connectie met de database mislukt.';
+$lang['userexists'] = 'Sorry, een gebruiker met deze login bestaat reeds.';
+$lang['usernotexists'] = 'Sorry, deze gebruiker bestaat niet.';
+$lang['writefail'] = 'Onmogelijk om de gebruikers data te wijzigen. Gelieve de Wiki-Admin te informeren.';
diff --git a/lib/plugins/authmysql/lang/no/settings.php b/lib/plugins/authmysql/lang/no/settings.php
new file mode 100644
index 000000000..45ab09819
--- /dev/null
+++ b/lib/plugins/authmysql/lang/no/settings.php
@@ -0,0 +1,14 @@
+<?php
+
+/**
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Patrick <spill.p@hotmail.com>
+ */
+$lang['server'] = 'Din MySQL-server';
+$lang['user'] = 'Ditt MySQL-brukernavn';
+$lang['password'] = 'Passord til brukeren';
+$lang['database'] = 'Database som skal brukes';
+$lang['debug_o_0'] = 'ingen';
+$lang['debug_o_1'] = 'bare ved feil';
+$lang['debug_o_2'] = 'alle SQL-forespørsler';
diff --git a/lib/plugins/authmysql/lang/pl/settings.php b/lib/plugins/authmysql/lang/pl/settings.php
index 9dc798ee0..68b5c6c22 100644
--- a/lib/plugins/authmysql/lang/pl/settings.php
+++ b/lib/plugins/authmysql/lang/pl/settings.php
@@ -5,6 +5,7 @@
*
* @author Paweł Jan Czochański <czochanski@gmail.com>
* @author Mati <mackosa@wp.pl>
+ * @author Maciej Helt <geraldziu@gmail.com>
*/
$lang['server'] = 'Twój server MySQL';
$lang['user'] = 'Nazwa użytkownika MySQL';
@@ -13,4 +14,13 @@ $lang['database'] = 'Używana baza danych';
$lang['charset'] = 'Zestaw znaków uzyty w bazie danych';
$lang['debug'] = 'Wyświetlaj dodatkowe informacje do debugowania.';
$lang['checkPass'] = 'Zapytanie SQL wykorzystywane do sprawdzania haseł.';
+$lang['getUserInfo'] = 'Zapytanie SQL zwracające informacje o użytkowniku';
+$lang['getGroups'] = 'Zapytanie SQL przynależność do grup danego użytkownika';
+$lang['getUsers'] = 'Zapytanie SQL zwracające listę wszystkich użytkowników';
+$lang['FilterLogin'] = 'Klauzula SQL używana do filtrowania użytkowników na podstawie ich loginu';
+$lang['FilterName'] = 'Klauzula SQL używana do filtrowania użytkowników na podstawie ich pełnej nazwy';
+$lang['FilterEmail'] = 'Klauzula SQL używana do filtrowania użytkowników na podstawie ich adresu email';
+$lang['FilterGroup'] = 'Klauzula SQL używana do filtrowania użytkowników na podstawie ich przynależności do grup';
+$lang['SortOrder'] = 'Klauzula SQL używana do sortowania użytkowników';
+$lang['addUser'] = 'Zapytanie SQL dodające nowego użytkownika';
$lang['debug_o_2'] = 'wszystkie zapytania SQL';
diff --git a/lib/plugins/authmysql/lang/pt-br/lang.php b/lib/plugins/authmysql/lang/pt-br/lang.php
new file mode 100644
index 000000000..6b1a4c3ad
--- /dev/null
+++ b/lib/plugins/authmysql/lang/pt-br/lang.php
@@ -0,0 +1,11 @@
+<?php
+
+/**
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Frederico Gonçalves Guimarães <frederico@teia.bio.br>
+ */
+$lang['connectfail'] = 'Não foi possível conectar ao banco de dados.';
+$lang['userexists'] = 'Desculpe, mas já existe esse nome de usuário.';
+$lang['usernotexists'] = 'Desculpe, mas esse usuário não existe.';
+$lang['writefail'] = 'Não foi possível modificar os dados do usuário. Por favor, informe ao administrador do Wiki.';
diff --git a/lib/plugins/authmysql/lang/pt/lang.php b/lib/plugins/authmysql/lang/pt/lang.php
new file mode 100644
index 000000000..754a552f8
--- /dev/null
+++ b/lib/plugins/authmysql/lang/pt/lang.php
@@ -0,0 +1,10 @@
+<?php
+
+/**
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Paulo Carmino <contato@paulocarmino.com>
+ */
+$lang['connectfail'] = 'Falha ao conectar com o banco de dados.';
+$lang['userexists'] = 'Desculpe, esse login já está sendo usado.';
+$lang['usernotexists'] = 'Desculpe, esse login não existe.';
diff --git a/lib/plugins/authmysql/lang/pt/settings.php b/lib/plugins/authmysql/lang/pt/settings.php
index 0c7f303e7..821dcf802 100644
--- a/lib/plugins/authmysql/lang/pt/settings.php
+++ b/lib/plugins/authmysql/lang/pt/settings.php
@@ -4,20 +4,40 @@
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
* @author André Neves <drakferion@gmail.com>
+ * @author Guido Salatino <guidorafael23@gmail.com>
*/
$lang['server'] = 'O seu servidor de MySQL';
$lang['user'] = 'Utilizador MySQL';
$lang['password'] = 'Senha para o utilizador acima';
$lang['database'] = 'Base de dados a usar';
+$lang['charset'] = 'Conjunto de caracteres usado na base de dados';
$lang['debug'] = 'Mostrar informação adicional de debug';
+$lang['forwardClearPass'] = 'Passe as senhas do usuário como texto puro para as instruções SQL abaixo, em vez de usar a opção passcrypt';
+$lang['TablesToLock'] = 'Lista de tabelas, separadas por virgula, que devem ser bloqueadas em operações de escrita';
+$lang['checkPass'] = 'Instrução SQL para verificar senhas';
+$lang['getUserInfo'] = 'Instrução SQL para recuperar informações do usuário';
+$lang['getGroups'] = 'Instrução SQL para recuperar os usuários participantes de um grupo';
+$lang['getUsers'] = 'Instrução SQL para listar todos usuários';
$lang['FilterLogin'] = 'Cláusula SQL para filtrar utilizadores por tipo de login';
$lang['FilterName'] = 'Cláusula SQL para filtrar utilizadores por nome completo';
$lang['FilterEmail'] = 'Cláusula SQL para filtrar utilizadores por endereço de email';
$lang['FilterGroup'] = 'Cláusula SQL para filtrar utilizadores por pertença a grupo';
$lang['SortOrder'] = 'Cláusula SQL para ordenar utilizadores';
+$lang['addUser'] = 'Instrução SQL para adicionar novo usuário';
+$lang['addGroup'] = 'Instrução SQL para adicionar um novo grupo';
+$lang['addUserGroup'] = 'Instrução SQL para adicionar um usuário a um grupo existente';
+$lang['delGroup'] = 'Instrução SQL para remover um grupo';
+$lang['getUserID'] = 'Instrução SQL para obter a chave principal de um usuário';
+$lang['delUser'] = 'Instrução SQL para excluir um usuário';
+$lang['delUserRefs'] = 'Instrução SQL para excluir um usuário de todos os grupos';
+$lang['updateUser'] = 'Instrução SQL para atualizar um perfil de usuário';
$lang['UpdateLogin'] = 'Cláusula de atualização para atualizar o nome de login do utilizador';
$lang['UpdatePass'] = 'Cláusula de atualização para atualizar a senha do utilizador';
$lang['UpdateEmail'] = 'Cláusula de atualização para atualizar o endereço de email do utilizador';
$lang['UpdateName'] = 'Cláusula de atualização para atualizar o nome completo do utilizador';
+$lang['UpdateTarget'] = 'Cláusula limite para identificar o usuário ao atualizar';
+$lang['delUserGroup'] = 'Instrução SQL para remover um usuário de um determinado grupo';
+$lang['getGroupID'] = 'Instrução SQL para obter a chave principal de um determinado grupo';
$lang['debug_o_0'] = 'nenhum';
$lang['debug_o_1'] = 'só aquando de erros';
+$lang['debug_o_2'] = 'todas as consultas SQL';
diff --git a/lib/plugins/authmysql/lang/ru/lang.php b/lib/plugins/authmysql/lang/ru/lang.php
new file mode 100644
index 000000000..75b5613f5
--- /dev/null
+++ b/lib/plugins/authmysql/lang/ru/lang.php
@@ -0,0 +1,11 @@
+<?php
+
+/**
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Takumo <9206984@mail.ru>
+ */
+$lang['connectfail'] = 'Ошибка соединения с базой данных.';
+$lang['userexists'] = 'Извините, пользователь с таким логином уже существует.';
+$lang['usernotexists'] = 'Извините, такой пользователь не существует.';
+$lang['writefail'] = 'Невозможно изменить данные пользователя. Сообщите об этом администратору Вики.';
diff --git a/lib/plugins/authmysql/lang/ru/settings.php b/lib/plugins/authmysql/lang/ru/settings.php
index 2d8f4788e..d9afa14e6 100644
--- a/lib/plugins/authmysql/lang/ru/settings.php
+++ b/lib/plugins/authmysql/lang/ru/settings.php
@@ -5,6 +5,8 @@
*
* @author Ivan I. Udovichenko (sendtome@mymailbox.pp.ua)
* @author Aleksandr Selivanov <alexgearbox@gmail.com>
+ * @author Type-kun <workwork-1@yandex.ru>
+ * @author Aleksandr Selivanov <alexgearbox@yandex.ru>
*/
$lang['server'] = 'Ваш MySQL-сервер';
$lang['user'] = 'Имя пользователя MySQL';
@@ -13,7 +15,7 @@ $lang['database'] = 'Имя базы данных';
$lang['charset'] = 'Используемый набор символов в базе данных';
$lang['debug'] = 'Отображение дополнительной отладочной информации';
$lang['forwardClearPass'] = 'Передача пароля пользователя открытым текстом, вместо зашифрованной формы в используемом выражении SQL';
-$lang['TablesToLock'] = 'Имена таблиц (через запятую), которые необходимо ограничение для записи';
+$lang['TablesToLock'] = 'Имена таблиц (через запятую), которым необходимо ограничение для записи';
$lang['checkPass'] = 'Выражение SQL, осуществляющее проверку пароля';
$lang['getUserInfo'] = 'Выражение SQL, осуществляющее извлечение информации о пользователе';
$lang['getGroups'] = 'Выражение SQL, осуществляющее извлечение информации о членстве пользователе в группах';
@@ -35,7 +37,7 @@ $lang['UpdateLogin'] = 'Условие для обновления и
$lang['UpdatePass'] = 'Условие для обновления пароля пользователя';
$lang['UpdateEmail'] = 'Условие для обновления адреса электронной почты пользователя';
$lang['UpdateName'] = 'Условие для обновления полного имени пользователя';
-$lang['UpdateTarget'] = 'Условие для идентификации пользователя при обновлении';
+$lang['UpdateTarget'] = 'Выражение \'LIMIT\' для идентификации пользователя при обновлении';
$lang['delUserGroup'] = 'Выражение SQL, осуществляющее удаление пользователя из указанной группы';
$lang['getGroupID'] = 'Выражение SQL, обеспечивающее получение первичного ключа указанной группы';
$lang['debug_o_0'] = 'ни один из вариантов';
diff --git a/lib/plugins/authmysql/lang/tr/lang.php b/lib/plugins/authmysql/lang/tr/lang.php
new file mode 100644
index 000000000..b5c7b2fe1
--- /dev/null
+++ b/lib/plugins/authmysql/lang/tr/lang.php
@@ -0,0 +1,9 @@
+<?php
+
+/**
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Mete Cuma <mcumax@gmail.com>
+ */
+$lang['connectfail'] = 'Veritabanına bağlantı kurulamadı.';
+$lang['usernotexists'] = 'Üzgünüz, kullanıcı mevcut değil.';
diff --git a/lib/plugins/authmysql/lang/zh/lang.php b/lib/plugins/authmysql/lang/zh/lang.php
new file mode 100644
index 000000000..044fe6d60
--- /dev/null
+++ b/lib/plugins/authmysql/lang/zh/lang.php
@@ -0,0 +1,11 @@
+<?php
+
+/**
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Errol <errol@hotmail.com>
+ */
+$lang['connectfail'] = '连接数据库失败';
+$lang['userexists'] = '抱歉,用户名已被使用。';
+$lang['usernotexists'] = '抱歉,用户不存在。';
+$lang['writefail'] = '无法修改用户数据。请通知管理员';
diff --git a/lib/plugins/authmysql/plugin.info.txt b/lib/plugins/authmysql/plugin.info.txt
index fa00fccf4..1658d7aac 100644
--- a/lib/plugins/authmysql/plugin.info.txt
+++ b/lib/plugins/authmysql/plugin.info.txt
@@ -1,7 +1,7 @@
base authmysql
author Andreas Gohr
email andi@splitbrain.org
-date 2014-02-15
+date 2015-07-13
name MYSQL Auth Plugin
desc Provides user authentication against a MySQL database
url http://www.dokuwiki.org/plugin:authmysql
diff --git a/lib/plugins/authpgsql/auth.php b/lib/plugins/authpgsql/auth.php
index de41598e0..4cb280aae 100644
--- a/lib/plugins/authpgsql/auth.php
+++ b/lib/plugins/authpgsql/auth.php
@@ -104,7 +104,7 @@ class auth_plugin_authpgsql extends auth_plugin_authmysql {
*
* @author Matthias Grimm <matthiasgrimm@users.sourceforge.net>
*
- * @param array $keys
+ * @param string[] $keys
* @param bool $wop
* @return bool
*/
@@ -267,7 +267,7 @@ class auth_plugin_authpgsql extends auth_plugin_authmysql {
if($uid) {
foreach($grps as $group) {
- $gid = $this->_addUserToGroup($user, $group, 1);
+ $gid = $this->_addUserToGroup($user, $group, true);
if($gid === false) break;
}
@@ -342,7 +342,7 @@ class auth_plugin_authpgsql extends auth_plugin_authmysql {
* @author Matthias Grimm <matthiasgrimm@users.sourceforge.net>
*
* @param string $query SQL string that contains the query
- * @return array the result table
+ * @return array|false the result table
*/
protected function _queryDB($query) {
$resultarray = array();
@@ -365,6 +365,9 @@ class auth_plugin_authpgsql extends auth_plugin_authmysql {
* MySQL one because it does NOT return the last insertID
*
* @author Andreas Gohr <andi@splitbrain.org>
+ *
+ * @param string $query
+ * @return bool
*/
protected function _modifyDB($query) {
if($this->dbcon) {
@@ -398,6 +401,8 @@ class auth_plugin_authpgsql extends auth_plugin_authmysql {
* Commit a transaction
*
* @author Matthias Grimm <matthiasgrimm@users.sourceforge.net>
+ *
+ * @return bool
*/
protected function _unlockTables() {
if($this->dbcon) {
diff --git a/lib/plugins/authpgsql/lang/cs/settings.php b/lib/plugins/authpgsql/lang/cs/settings.php
index aec7eecf1..ad135e241 100644
--- a/lib/plugins/authpgsql/lang/cs/settings.php
+++ b/lib/plugins/authpgsql/lang/cs/settings.php
@@ -4,6 +4,7 @@
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
* @author mkucera66@seznam.cz
+ * @author Jaroslav Lichtblau <jlichtblau@seznam.cz>
*/
$lang['server'] = 'Váš server PostgreSQL';
$lang['port'] = 'Port vašeho serveru PostgreSQL';
@@ -18,7 +19,7 @@ $lang['getGroups'] = 'Příkaz SQL pro získání členství uživat
$lang['getUsers'] = 'Příkaz SQL pro seznam všech uživatelů';
$lang['FilterLogin'] = 'Příkaz SQL pro filtrování uživatelů podle přihlašovacího jména';
$lang['FilterName'] = 'Příkaz SQL pro filtrování uživatelů podle celého jména';
-$lang['FilterEmail'] = 'Příkaz SQL pro filtrování uživatelů podle adres emailů';
+$lang['FilterEmail'] = 'Příkaz SQL pro filtrování uživatelů podle adres e-mailů';
$lang['FilterGroup'] = 'Příkaz SQL pro filtrování uživatelů podle členství ve skupinách';
$lang['SortOrder'] = 'Příkaz SQL pro řazení uživatelů';
$lang['addUser'] = 'Příkaz SQL pro řazení uživatelů';
@@ -31,7 +32,7 @@ $lang['delUserRefs'] = 'Příkaz SQL pro odstranění členství uživ
$lang['updateUser'] = 'Příkaz SQL pro aktualizaci uživatelského profilu';
$lang['UpdateLogin'] = 'Klauzule pro aktualizaci přihlačovacího jména uživatele';
$lang['UpdatePass'] = 'Klauzule pro aktualizaci hesla uživatele';
-$lang['UpdateEmail'] = 'Klauzule pro aktualizaci emailové adresy uživatele';
+$lang['UpdateEmail'] = 'Klauzule pro aktualizaci e-mailové adresy uživatele';
$lang['UpdateName'] = 'Klauzule pro aktualizaci celého jména uživatele';
$lang['UpdateTarget'] = 'Omezující klauzule pro identifikaci uživatele při aktualizaci';
$lang['delUserGroup'] = 'Příkaz SQL pro zrušení členství uživatele v dané skupině';
diff --git a/lib/plugins/authpgsql/lang/es/settings.php b/lib/plugins/authpgsql/lang/es/settings.php
index abfb00d38..0ca264bc2 100644
--- a/lib/plugins/authpgsql/lang/es/settings.php
+++ b/lib/plugins/authpgsql/lang/es/settings.php
@@ -6,6 +6,7 @@
* @author Antonio Bueno <atnbueno@gmail.com>
* @author Antonio Castilla <antoniocastilla@trazoide.com>
* @author pokesakura <pokesakura@gmail.com>
+ * @author Domingo Redal <docxml@gmail.com>
*/
$lang['server'] = 'Su servidor PostgreSQL';
$lang['port'] = 'Puerto de su servidor PostgreSQL';
@@ -35,4 +36,6 @@ $lang['UpdateLogin'] = 'Sentencia de actualizacion para el login del u
$lang['UpdatePass'] = 'Sentencia de actualizacion para el password del usuario';
$lang['UpdateEmail'] = 'Sentencia de actualizacion del correo electrónico del usuario';
$lang['UpdateName'] = 'Sentencia de actualizacion del nombre completo del usuario';
+$lang['UpdateTarget'] = 'Cláusula limite para identificar al usuario cuando se actualiza';
+$lang['delUserGroup'] = 'Sentencia SQL para eliminar un usuario de un grupo determinado';
$lang['getGroupID'] = 'Sentencia SQL para obtener la clave principal de un grupo dado';
diff --git a/lib/plugins/authpgsql/lang/it/settings.php b/lib/plugins/authpgsql/lang/it/settings.php
index baf40a468..bc326b34f 100644
--- a/lib/plugins/authpgsql/lang/it/settings.php
+++ b/lib/plugins/authpgsql/lang/it/settings.php
@@ -4,8 +4,13 @@
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
* @author Francesco <francesco.cavalli@hotmail.com>
+ * @author Torpedo <dgtorpedo@gmail.com>
+ * @author Maurizio <mcannavo@katamail.com>
*/
$lang['server'] = 'Il tuo server PostgreSQL ';
$lang['port'] = 'La porta del tuo server PostgreSQL ';
$lang['user'] = 'Lo username PostgreSQL';
+$lang['password'] = 'Password dell\'utente summenzionato';
$lang['database'] = 'Database da usare';
+$lang['debug'] = 'Visualizza informazioni addizionali di debug';
+$lang['getUsers'] = 'Dichiarazione SQL per elencare tutti gli utenti';
diff --git a/lib/plugins/authpgsql/lang/ja/settings.php b/lib/plugins/authpgsql/lang/ja/settings.php
index d7a5f6cf2..c4a82a179 100644
--- a/lib/plugins/authpgsql/lang/ja/settings.php
+++ b/lib/plugins/authpgsql/lang/ja/settings.php
@@ -11,7 +11,7 @@ $lang['user'] = 'PostgreSQL 接続用ユーザー名';
$lang['password'] = 'PostgreSQL 接続用ユーザーのパスワード';
$lang['database'] = '使用するデータベース名';
$lang['debug'] = 'デバック情報を表示する';
-$lang['forwardClearPass'] = '以下で定義する SQL ステートメントにおいて, パスワード変数 &#x25;{pass} を平文とする(DokiWiki側で暗号化しない)';
+$lang['forwardClearPass'] = '以下で定義する SQL ステートメントにおいて, パスワード変数 を平文とする(DokiWiki側で暗号化しない)';
$lang['checkPass'] = 'パスワードの照合に用いる SQL ステートメント';
$lang['getUserInfo'] = 'ユーザー情報の取得に用いる SQL ステートメント';
$lang['getGroups'] = 'ユーザーが所属する全てのグループの取得に用いる SQL ステートメント';
diff --git a/lib/plugins/authpgsql/lang/pt/settings.php b/lib/plugins/authpgsql/lang/pt/settings.php
index b33b81141..f81ec22dc 100644
--- a/lib/plugins/authpgsql/lang/pt/settings.php
+++ b/lib/plugins/authpgsql/lang/pt/settings.php
@@ -4,6 +4,7 @@
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
* @author André Neves <drakferion@gmail.com>
+ * @author Guido Salatino <guidorafael23@gmail.com>
*/
$lang['server'] = 'O seu servidor PostgreSQL';
$lang['port'] = 'A porta do seu servidor PostgreSQL';
@@ -11,12 +12,28 @@ $lang['user'] = 'Nome de utilizador PostgreSQL';
$lang['password'] = 'Senha do utilizador acima';
$lang['database'] = 'Base de dados a usar';
$lang['debug'] = 'Mostrar informação adicional de debug';
+$lang['forwardClearPass'] = 'Passe as senhas do usuário como texto puro para as instruções SQL abaixo, em vez de usar a opção passcrypt';
+$lang['checkPass'] = 'Instrução SQL para verificar senhas';
+$lang['getUserInfo'] = 'Instrução SQL para recuperar informações de um usuário';
+$lang['getGroups'] = 'Instrução SQL para recuperar os usuários participantes de um grupo';
+$lang['getUsers'] = 'Instrução SQL para listar todos usuários';
$lang['FilterLogin'] = 'Cláusula SQL para filtrar utilizadores por nome de login';
$lang['FilterName'] = 'Cláusula SQL para filtrar utilizadores por nome completo';
$lang['FilterEmail'] = 'Cláusula SQL para filtrar utilizadores por endereço de email';
$lang['FilterGroup'] = 'Cláusula SQL para filtrar utilizadores por pertença a grupo';
$lang['SortOrder'] = 'Cláusula SQL para ordenar utilizadores';
+$lang['addUser'] = 'Instrução SQL para adicionar um novo usuário';
+$lang['addGroup'] = 'Instrução SQL para adicionar um novo grupo';
+$lang['addUserGroup'] = 'Instrução SQL para adicionar um usuário a um grupo existente';
+$lang['delGroup'] = 'Instrução SQL para remover um grupo';
+$lang['getUserID'] = 'Instrução SQL para obter a chave principal de um usuário';
+$lang['delUser'] = 'Instrução SQL para remover um usuário';
+$lang['delUserRefs'] = 'Instrução SQL para remover um usuário de todos os grupos';
+$lang['updateUser'] = 'Instrução SQL para atualizar um perfil de usuário';
$lang['UpdateLogin'] = 'Cláusula de atualização para atualizar o nome de login do utilizador';
$lang['UpdatePass'] = 'Cláusula de atualização para atualizar a senha do utilizador';
$lang['UpdateEmail'] = 'Cláusula de atualização para atualizar o endereço de email do utilizador';
$lang['UpdateName'] = 'Cláusula de atualização para atualizar o nome completo do utilizador';
+$lang['UpdateTarget'] = 'Cláusula limite para identificar o usuário ao atualizar';
+$lang['delUserGroup'] = 'Instrução SQL para remover um usuário de um determinado grupo';
+$lang['getGroupID'] = 'Instrução SQL para obter a chave principal de um determinado grupo';
diff --git a/lib/plugins/authpgsql/lang/ru/settings.php b/lib/plugins/authpgsql/lang/ru/settings.php
index 65cbce8df..a74296ab8 100644
--- a/lib/plugins/authpgsql/lang/ru/settings.php
+++ b/lib/plugins/authpgsql/lang/ru/settings.php
@@ -6,13 +6,17 @@
* @author Ivan I. Udovichenko (sendtome@mymailbox.pp.ua)
* @author Aleksandr Selivanov <alexgearbox@gmail.com>
* @author Aleksandr Selivanov <alexgearbox@yandex.ru>
+ * @author Vitaly Filatenko <kot@hacktest.net>
+ * @author Type-kun <workwork-1@yandex.ru>
+ * @author Alex P <alexander@lanos.co.uk>
*/
$lang['server'] = 'Ваш PostgreSQL-сервер';
$lang['port'] = 'Порт вашего PostgreSQL-сервера';
$lang['user'] = 'Имя пользователя PostgreSQL';
-$lang['password'] = 'Пароль для указанного пользователя.';
+$lang['password'] = 'Пароль для указанного пользователя';
$lang['database'] = 'Имя базы данных';
$lang['debug'] = 'Отображать дополнительную отладочную информацию';
+$lang['forwardClearPass'] = 'Передать чистым текстом ползовательские пароли в SQL запросы ниже, вместо использование опции passcrypt';
$lang['checkPass'] = 'Выражение SQL, осуществляющее проверку пароля';
$lang['getUserInfo'] = 'Выражение SQL, осуществляющее извлечение информации о пользователе';
$lang['getGroups'] = 'Выражение SQL, осуществляющее извлечение информации о членстве пользователе в группах';
@@ -30,5 +34,10 @@ $lang['getUserID'] = 'Выражение SQL, обеспечиваю
$lang['delUser'] = 'Выражение SQL, осуществляющее удаление пользователя';
$lang['delUserRefs'] = 'Выражение SQL, осуществляющее удаление пользователя из всех группы';
$lang['updateUser'] = 'Выражение SQL, осуществляющее обновление профиля пользователя';
+$lang['UpdateLogin'] = 'Измените условие для обновления логина';
+$lang['UpdatePass'] = 'Измените условие для обновления пароля';
+$lang['UpdateEmail'] = 'Измените условие для обновления email';
+$lang['UpdateName'] = 'Условие для обновления полного имени пользователя';
+$lang['UpdateTarget'] = 'Выражение \'LIMIT\' для идентификации пользователя при обновлении';
$lang['delUserGroup'] = 'Выражение SQL, осуществляющее удаление пользователя из указанной группы';
$lang['getGroupID'] = 'Выражение SQL, обеспечивающее получение первичного ключа указанной группы';
diff --git a/lib/plugins/authpgsql/plugin.info.txt b/lib/plugins/authpgsql/plugin.info.txt
index 59b7d89a9..1d53ca0b1 100644
--- a/lib/plugins/authpgsql/plugin.info.txt
+++ b/lib/plugins/authpgsql/plugin.info.txt
@@ -1,7 +1,7 @@
base authpgsql
author Andreas Gohr
email andi@splitbrain.org
-date 2014-02-15
+date 2015-07-13
name PostgreSQL Auth Plugin
desc Provides user authentication against a PostgreSQL database
url http://www.dokuwiki.org/plugin:authpgsql
diff --git a/lib/plugins/authplain/_test/escaping.test.php b/lib/plugins/authplain/_test/escaping.test.php
index cbfbbc587..7139aa99b 100644
--- a/lib/plugins/authplain/_test/escaping.test.php
+++ b/lib/plugins/authplain/_test/escaping.test.php
@@ -9,13 +9,16 @@
* authplain won't get unexpectedly surprised.)
*
* @group plugin_authplain
+ * @group auth_plugins
* @group plugins
+ * @group bundled_plugins
*/
class helper_plugin_authplain_escaping_test extends DokuWikiTest {
-
+
protected $pluginsEnabled = array('authplainharness');
+ /** @var auth_plugin_authplain|auth_plugin_authplainharness */
protected $auth;
-
+
protected function reloadUsers() {
/* auth caches data loaded from file, but recreated object forces reload */
$this->auth = new auth_plugin_authplainharness();
@@ -105,6 +108,9 @@ class helper_plugin_authplain_escaping_test extends DokuWikiTest {
class auth_plugin_authplainharness extends auth_plugin_authplain {
+ /**
+ * @param boolean $bool
+ */
public function setPregsplit_safe($bool) {
$this->_pregsplit_safe = $bool;
}
@@ -113,7 +119,10 @@ class auth_plugin_authplainharness extends auth_plugin_authplain {
return $this->_pregsplit_safe;
}
+ /**
+ * @param string $line
+ */
public function splitUserData($line){
return $this->_splitUserData($line);
}
-} \ No newline at end of file
+}
diff --git a/lib/plugins/authplain/auth.php b/lib/plugins/authplain/auth.php
index 3d303597c..8ec632dad 100644
--- a/lib/plugins/authplain/auth.php
+++ b/lib/plugins/authplain/auth.php
@@ -82,7 +82,7 @@ class auth_plugin_authplain extends DokuWiki_Auth_Plugin {
* @author Andreas Gohr <andi@splitbrain.org>
* @param string $user
* @param bool $requireGroups (optional) ignored by this plugin, grps info always supplied
- * @return array|bool
+ * @return array|false
*/
public function getUserData($user, $requireGroups=true) {
if($this->users === null) $this->_loadUserData();
@@ -134,7 +134,10 @@ class auth_plugin_authplain extends DokuWiki_Auth_Plugin {
global $config_cascade;
// user mustn't already exist
- if($this->getUserData($user) !== false) return false;
+ if($this->getUserData($user) !== false) {
+ msg($this->getLang('userexists'), -1);
+ return false;
+ }
$pass = auth_cryptPassword($pwd);
@@ -144,16 +147,13 @@ class auth_plugin_authplain extends DokuWiki_Auth_Plugin {
// prepare user line
$userline = $this->_createUserLine($user, $pass, $name, $mail, $grps);
- 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)) {
+ msg($this->getLang('writefail'), -1);
+ return null;
}
- msg(
- 'The '.$config_cascade['plainauth.users']['default'].
- ' file is not writable. Please inform the Wiki-Admin', -1
- );
- return null;
+ $this->users[$user] = compact('pass', 'name', 'mail', 'grps');
+ return $pwd;
}
/**
@@ -169,7 +169,10 @@ class auth_plugin_authplain extends DokuWiki_Auth_Plugin {
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(($userinfo = $this->getUserData($user)) === false) {
+ msg($this->getLang('usernotexists'), -1);
+ return false;
+ }
if(!is_array($changes) || !count($changes)) return true;
// update userinfo with new data, remembering to encrypt any password
@@ -185,14 +188,9 @@ class auth_plugin_authplain extends DokuWiki_Auth_Plugin {
$userline = $this->_createUserLine($newuser, $userinfo['pass'], $userinfo['name'], $userinfo['mail'], $userinfo['grps']);
- 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
+ if(!io_replaceInFile($config_cascade['plainauth.users']['default'], '/^'.$user.':/', $userline, true)) {
+ msg('There was an error modifying your user data. You may need to register again.', -1);
+ // FIXME, io functions should be fail-safe so existing data isn't lost
$ACT = 'register';
return false;
}
@@ -223,7 +221,10 @@ class auth_plugin_authplain extends DokuWiki_Auth_Plugin {
if(empty($deleted)) return 0;
$pattern = '/^('.join('|', $deleted).'):/';
- io_deleteFromFile($config_cascade['plainauth.users']['default'], $pattern, true);
+ if (!io_deleteFromFile($config_cascade['plainauth.users']['default'], $pattern, true)) {
+ msg($this->getLang('writefail'), -1);
+ return 0;
+ }
// reload the user list and count the difference
$count = count($this->users);
@@ -325,7 +326,7 @@ class auth_plugin_authplain extends DokuWiki_Auth_Plugin {
$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) {
@@ -407,4 +408,4 @@ class auth_plugin_authplain extends DokuWiki_Auth_Plugin {
$this->_pattern[$item] = '/'.str_replace('/', '\/', $pattern).'/i'; // allow regex characters
}
}
-} \ No newline at end of file
+}
diff --git a/lib/plugins/authplain/lang/af/lang.php b/lib/plugins/authplain/lang/af/lang.php
new file mode 100644
index 000000000..29742cfd2
--- /dev/null
+++ b/lib/plugins/authplain/lang/af/lang.php
@@ -0,0 +1,6 @@
+<?php
+/**
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ */
+$lang['userexists'] = 'Die gebruikersnaam wat jy gebruik het, is alreeds gebruik. Kies asseblief \'n ander gebruikersnaam.';
diff --git a/lib/plugins/authplain/lang/ar/lang.php b/lib/plugins/authplain/lang/ar/lang.php
new file mode 100644
index 000000000..16d59f397
--- /dev/null
+++ b/lib/plugins/authplain/lang/ar/lang.php
@@ -0,0 +1,6 @@
+<?php
+/**
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ */
+$lang['userexists'] = 'عذرا، يوجد مشترك بنفس الاسم.';
diff --git a/lib/plugins/authplain/lang/az/lang.php b/lib/plugins/authplain/lang/az/lang.php
new file mode 100644
index 000000000..f98eccde1
--- /dev/null
+++ b/lib/plugins/authplain/lang/az/lang.php
@@ -0,0 +1,6 @@
+<?php
+/**
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ */
+$lang['userexists'] = 'Təssüf ki bu ad ilə istifadəçi artıq mövcuddur.';
diff --git a/lib/plugins/authplain/lang/bg/lang.php b/lib/plugins/authplain/lang/bg/lang.php
new file mode 100644
index 000000000..62e62dc13
--- /dev/null
+++ b/lib/plugins/authplain/lang/bg/lang.php
@@ -0,0 +1,9 @@
+<?php
+
+/**
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Kiril <neohidra@gmail.com>
+ */
+$lang['userexists'] = 'Вече съществува потребител с избраното име.';
+$lang['usernotexists'] = 'За съжаление потребителят не съществува.';
diff --git a/lib/plugins/authplain/lang/bn/lang.php b/lib/plugins/authplain/lang/bn/lang.php
new file mode 100644
index 000000000..43fe4ca6e
--- /dev/null
+++ b/lib/plugins/authplain/lang/bn/lang.php
@@ -0,0 +1,6 @@
+<?php
+/**
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ */
+$lang['userexists'] = 'দুঃখিত, এই লগইন সঙ্গে একটি ব্যবহারকারী ইতিমধ্যেই বিদ্যমান.';
diff --git a/lib/plugins/authplain/lang/ca-valencia/lang.php b/lib/plugins/authplain/lang/ca-valencia/lang.php
new file mode 100644
index 000000000..3e973beae
--- /dev/null
+++ b/lib/plugins/authplain/lang/ca-valencia/lang.php
@@ -0,0 +1,6 @@
+<?php
+/**
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ */
+$lang['userexists'] = 'Disculpe, pero ya existix un usuari en este nom.';
diff --git a/lib/plugins/authplain/lang/ca/lang.php b/lib/plugins/authplain/lang/ca/lang.php
new file mode 100644
index 000000000..8cbada1b9
--- /dev/null
+++ b/lib/plugins/authplain/lang/ca/lang.php
@@ -0,0 +1,7 @@
+<?php
+
+/**
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ */
+$lang['userexists'] = 'Ja existeix un altre usuari amb aquest nom.';
diff --git a/lib/plugins/authplain/lang/cs/lang.php b/lib/plugins/authplain/lang/cs/lang.php
new file mode 100644
index 000000000..8128d45a3
--- /dev/null
+++ b/lib/plugins/authplain/lang/cs/lang.php
@@ -0,0 +1,6 @@
+<?php
+/**
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ */
+$lang['userexists'] = 'Uživatel se stejným jménem už je zaregistrován.';
diff --git a/lib/plugins/authplain/lang/da/lang.php b/lib/plugins/authplain/lang/da/lang.php
new file mode 100644
index 000000000..c7dd376c1
--- /dev/null
+++ b/lib/plugins/authplain/lang/da/lang.php
@@ -0,0 +1,6 @@
+<?php
+/**
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ */
+$lang['userexists'] = 'Dette brugernavn er allerede i brug.';
diff --git a/lib/plugins/authplain/lang/de-informal/lang.php b/lib/plugins/authplain/lang/de-informal/lang.php
new file mode 100644
index 000000000..f1d484947
--- /dev/null
+++ b/lib/plugins/authplain/lang/de-informal/lang.php
@@ -0,0 +1,6 @@
+<?php
+/**
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ */
+$lang['userexists'] = 'Der Benutzername existiert leider schon.';
diff --git a/lib/plugins/authplain/lang/de/lang.php b/lib/plugins/authplain/lang/de/lang.php
new file mode 100644
index 000000000..b0cff0068
--- /dev/null
+++ b/lib/plugins/authplain/lang/de/lang.php
@@ -0,0 +1,10 @@
+<?php
+
+/**
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Anika Henke <anika@selfthinker.org>
+ */
+$lang['userexists'] = 'Der Benutzername existiert leider schon.';
+$lang['usernotexists'] = 'Dieser Benutzer existiert nicht.';
+$lang['writefail'] = 'Kann Benutzerdaten nicht ändern. Bitte informieren Sie den Wiki-Administratoren';
diff --git a/lib/plugins/authplain/lang/el/lang.php b/lib/plugins/authplain/lang/el/lang.php
new file mode 100644
index 000000000..7f7e4e76d
--- /dev/null
+++ b/lib/plugins/authplain/lang/el/lang.php
@@ -0,0 +1,6 @@
+<?php
+/**
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ */
+$lang['userexists'] = 'Αυτός ο λογαριασμός υπάρχει ήδη.';
diff --git a/lib/plugins/authplain/lang/en/lang.php b/lib/plugins/authplain/lang/en/lang.php
new file mode 100644
index 000000000..6f8abfdb6
--- /dev/null
+++ b/lib/plugins/authplain/lang/en/lang.php
@@ -0,0 +1,8 @@
+<?php
+/**
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ */
+$lang['userexists'] = 'Sorry, a user with this login already exists.';
+$lang['usernotexists'] = 'Sorry, that user doesn\'t exist.';
+$lang['writefail'] = 'Unable to modify user data. Please inform the Wiki-Admin';
diff --git a/lib/plugins/authplain/lang/eo/lang.php b/lib/plugins/authplain/lang/eo/lang.php
new file mode 100644
index 000000000..ab7655e81
--- /dev/null
+++ b/lib/plugins/authplain/lang/eo/lang.php
@@ -0,0 +1,6 @@
+<?php
+/**
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ */
+$lang['userexists'] = 'Pardonu, ĉi tiu uzanto-nomo jam ekzistas.';
diff --git a/lib/plugins/authplain/lang/es/lang.php b/lib/plugins/authplain/lang/es/lang.php
new file mode 100644
index 000000000..8ef567a16
--- /dev/null
+++ b/lib/plugins/authplain/lang/es/lang.php
@@ -0,0 +1,10 @@
+<?php
+
+/**
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Domingo Redal <docxml@gmail.com>
+ */
+$lang['userexists'] = 'Lo siento, ya existe un usuario con este nombre.';
+$lang['usernotexists'] = 'Lo sentimos, no existe ese usuario.';
+$lang['writefail'] = 'No es posible modificar los datos del usuario. Por favor, informa al Administrador del Wiki';
diff --git a/lib/plugins/authplain/lang/et/lang.php b/lib/plugins/authplain/lang/et/lang.php
new file mode 100644
index 000000000..7f9f7771b
--- /dev/null
+++ b/lib/plugins/authplain/lang/et/lang.php
@@ -0,0 +1,6 @@
+<?php
+/**
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ */
+$lang['userexists'] = 'Tegelikult on sellise nimega kasutaja juba olemas.';
diff --git a/lib/plugins/authplain/lang/eu/lang.php b/lib/plugins/authplain/lang/eu/lang.php
new file mode 100644
index 000000000..09ca4d3b7
--- /dev/null
+++ b/lib/plugins/authplain/lang/eu/lang.php
@@ -0,0 +1,6 @@
+<?php
+/**
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ */
+$lang['userexists'] = 'Barkatu, izen bereko erabiltzailea existitzen da.';
diff --git a/lib/plugins/authplain/lang/fa/lang.php b/lib/plugins/authplain/lang/fa/lang.php
new file mode 100644
index 000000000..49083ad60
--- /dev/null
+++ b/lib/plugins/authplain/lang/fa/lang.php
@@ -0,0 +1,6 @@
+<?php
+/**
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ */
+$lang['userexists'] = 'نام کاربری‌ای که وارد کردید قبلن استفاده شده است. خواهشمندیم یک نام دیگر انتخاب کنید.';
diff --git a/lib/plugins/authplain/lang/fi/lang.php b/lib/plugins/authplain/lang/fi/lang.php
new file mode 100644
index 000000000..3a77f3e3a
--- /dev/null
+++ b/lib/plugins/authplain/lang/fi/lang.php
@@ -0,0 +1,6 @@
+<?php
+/**
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ */
+$lang['userexists'] = 'Käyttäjä tällä käyttäjänimellä on jo olemassa.';
diff --git a/lib/plugins/authplain/lang/fo/lang.php b/lib/plugins/authplain/lang/fo/lang.php
new file mode 100644
index 000000000..a9654664b
--- /dev/null
+++ b/lib/plugins/authplain/lang/fo/lang.php
@@ -0,0 +1,6 @@
+<?php
+/**
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ */
+$lang['userexists'] = 'Hetta brúkaranavn er upptiki.';
diff --git a/lib/plugins/authplain/lang/fr/lang.php b/lib/plugins/authplain/lang/fr/lang.php
new file mode 100644
index 000000000..362e03bff
--- /dev/null
+++ b/lib/plugins/authplain/lang/fr/lang.php
@@ -0,0 +1,11 @@
+<?php
+
+/**
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Carbain Frédéric <fcarbain@yahoo.fr>
+ * @author Nicolas Friedli <nicolas@theologique.ch>
+ */
+$lang['userexists'] = 'Désolé, ce nom d\'utilisateur est déjà pris.';
+$lang['usernotexists'] = 'Désolé, cet utilisateur n\'existe pas.';
+$lang['writefail'] = 'Impossible de modifier les données utilisateur. Merci d\'en informer l\'administrateur du wiki.';
diff --git a/lib/plugins/authplain/lang/gl/lang.php b/lib/plugins/authplain/lang/gl/lang.php
new file mode 100644
index 000000000..35138d378
--- /dev/null
+++ b/lib/plugins/authplain/lang/gl/lang.php
@@ -0,0 +1,6 @@
+<?php
+/**
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ */
+$lang['userexists'] = 'Sentímolo, mais xa existe un usuario con ese nome.';
diff --git a/lib/plugins/authplain/lang/he/lang.php b/lib/plugins/authplain/lang/he/lang.php
new file mode 100644
index 000000000..01d877b62
--- /dev/null
+++ b/lib/plugins/authplain/lang/he/lang.php
@@ -0,0 +1,6 @@
+<?php
+/**
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ */
+$lang['userexists'] = 'משתמש בשם זה כבר נרשם, עמך הסליחה.';
diff --git a/lib/plugins/authplain/lang/hr/lang.php b/lib/plugins/authplain/lang/hr/lang.php
new file mode 100644
index 000000000..ffcbf5f61
--- /dev/null
+++ b/lib/plugins/authplain/lang/hr/lang.php
@@ -0,0 +1,6 @@
+<?php
+/**
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ */
+$lang['userexists'] = 'Korisnik s tim korisničkim imenom već postoji.';
diff --git a/lib/plugins/authplain/lang/hu/lang.php b/lib/plugins/authplain/lang/hu/lang.php
new file mode 100644
index 000000000..6de5db772
--- /dev/null
+++ b/lib/plugins/authplain/lang/hu/lang.php
@@ -0,0 +1,6 @@
+<?php
+/**
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ */
+$lang['userexists'] = 'Sajnáljuk, ilyen azonosítójú felhasználónk már van.';
diff --git a/lib/plugins/authplain/lang/ia/lang.php b/lib/plugins/authplain/lang/ia/lang.php
new file mode 100644
index 000000000..7596f3f4c
--- /dev/null
+++ b/lib/plugins/authplain/lang/ia/lang.php
@@ -0,0 +1,6 @@
+<?php
+/**
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ */
+$lang['userexists'] = 'Regrettabilemente, un usator con iste nomine ja existe.';
diff --git a/lib/plugins/authplain/lang/id-ni/lang.php b/lib/plugins/authplain/lang/id-ni/lang.php
new file mode 100644
index 000000000..729c9f9dc
--- /dev/null
+++ b/lib/plugins/authplain/lang/id-ni/lang.php
@@ -0,0 +1,6 @@
+<?php
+/**
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ */
+$lang['userexists'] = 'Bologö dödöu, no so zangoguna\'ö töi da\'a.';
diff --git a/lib/plugins/authplain/lang/id/lang.php b/lib/plugins/authplain/lang/id/lang.php
new file mode 100644
index 000000000..5e6a99830
--- /dev/null
+++ b/lib/plugins/authplain/lang/id/lang.php
@@ -0,0 +1,6 @@
+<?php
+/**
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ */
+$lang['userexists'] = 'Maaf, user dengan user login ini telah ada.';
diff --git a/lib/plugins/authplain/lang/is/lang.php b/lib/plugins/authplain/lang/is/lang.php
new file mode 100644
index 000000000..21392ee5e
--- /dev/null
+++ b/lib/plugins/authplain/lang/is/lang.php
@@ -0,0 +1,6 @@
+<?php
+/**
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ */
+$lang['userexists'] = 'Afsakið, notandi með þessu nafni er þegar skráður inn.';
diff --git a/lib/plugins/authplain/lang/it/lang.php b/lib/plugins/authplain/lang/it/lang.php
new file mode 100644
index 000000000..716041ffb
--- /dev/null
+++ b/lib/plugins/authplain/lang/it/lang.php
@@ -0,0 +1,6 @@
+<?php
+/**
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ */
+$lang['userexists'] = 'Il nome utente inserito esiste già.';
diff --git a/lib/plugins/authplain/lang/ja/lang.php b/lib/plugins/authplain/lang/ja/lang.php
new file mode 100644
index 000000000..6aa0be79c
--- /dev/null
+++ b/lib/plugins/authplain/lang/ja/lang.php
@@ -0,0 +1,10 @@
+<?php
+
+/**
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Hideaki SAWADA <chuno@live.jp>
+ */
+$lang['userexists'] = 'このユーザー名は既に存在しています。';
+$lang['usernotexists'] = 'このユーザーは未登録です。';
+$lang['writefail'] = 'ユーザーデータを変更できません。管理者に問い合わせてください。';
diff --git a/lib/plugins/authplain/lang/ka/lang.php b/lib/plugins/authplain/lang/ka/lang.php
new file mode 100644
index 000000000..8983791c9
--- /dev/null
+++ b/lib/plugins/authplain/lang/ka/lang.php
@@ -0,0 +1,6 @@
+<?php
+/**
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ */
+$lang['userexists'] = 'მსგავსი ლოგინი უკვე არსებობს';
diff --git a/lib/plugins/authplain/lang/kk/lang.php b/lib/plugins/authplain/lang/kk/lang.php
new file mode 100644
index 000000000..95fe53204
--- /dev/null
+++ b/lib/plugins/authplain/lang/kk/lang.php
@@ -0,0 +1,6 @@
+<?php
+/**
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ */
+$lang['userexists'] = 'Кешіріңіз, бұл түпнұскамен де пайдаланушы бар.';
diff --git a/lib/plugins/authplain/lang/km/lang.php b/lib/plugins/authplain/lang/km/lang.php
new file mode 100644
index 000000000..322e454e5
--- /dev/null
+++ b/lib/plugins/authplain/lang/km/lang.php
@@ -0,0 +1,6 @@
+<?php
+/**
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ */
+$lang['userexists'] = 'សុំអាទោស​ នាមប្រើនេះមានរួចហើ។';
diff --git a/lib/plugins/authplain/lang/ko/lang.php b/lib/plugins/authplain/lang/ko/lang.php
new file mode 100644
index 000000000..50669822e
--- /dev/null
+++ b/lib/plugins/authplain/lang/ko/lang.php
@@ -0,0 +1,10 @@
+<?php
+
+/**
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Myeongjin <aranet100@gmail.com>
+ */
+$lang['userexists'] = '죄송하지만 같은 이름을 사용하는 사용자가 있습니다.';
+$lang['usernotexists'] = '죄송하지만 해당 사용자가 존재하지 않습니다.';
+$lang['writefail'] = '사용자 데이터를 수정할 수 없습니다. 위키 관리자에게 문의하시기 바랍니다';
diff --git a/lib/plugins/authplain/lang/ku/lang.php b/lib/plugins/authplain/lang/ku/lang.php
new file mode 100644
index 000000000..64cb834f3
--- /dev/null
+++ b/lib/plugins/authplain/lang/ku/lang.php
@@ -0,0 +1,6 @@
+<?php
+/**
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ */
+$lang['userexists'] = 'Sorry, a user with this login already exists.';
diff --git a/lib/plugins/authplain/lang/la/lang.php b/lib/plugins/authplain/lang/la/lang.php
new file mode 100644
index 000000000..5f2eecfd8
--- /dev/null
+++ b/lib/plugins/authplain/lang/la/lang.php
@@ -0,0 +1,6 @@
+<?php
+/**
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ */
+$lang['userexists'] = 'Nomen Sodalis ab aliquo iam elegitur.';
diff --git a/lib/plugins/authplain/lang/lb/lang.php b/lib/plugins/authplain/lang/lb/lang.php
new file mode 100644
index 000000000..4c760dfe4
--- /dev/null
+++ b/lib/plugins/authplain/lang/lb/lang.php
@@ -0,0 +1,6 @@
+<?php
+/**
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ */
+$lang['userexists'] = 'Et get schonn e Benotzer mat deem Numm.';
diff --git a/lib/plugins/authplain/lang/lt/lang.php b/lib/plugins/authplain/lang/lt/lang.php
new file mode 100644
index 000000000..5ad435a04
--- /dev/null
+++ b/lib/plugins/authplain/lang/lt/lang.php
@@ -0,0 +1,6 @@
+<?php
+/**
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ */
+$lang['userexists'] = 'Vartotojas su pasirinktu prisijungimo vardu jau egzistuoja.';
diff --git a/lib/plugins/authplain/lang/lv/lang.php b/lib/plugins/authplain/lang/lv/lang.php
new file mode 100644
index 000000000..3a9d4d3e5
--- /dev/null
+++ b/lib/plugins/authplain/lang/lv/lang.php
@@ -0,0 +1,6 @@
+<?php
+/**
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ */
+$lang['userexists'] = 'Atvaino, tāds lietotājs jau ir.';
diff --git a/lib/plugins/authplain/lang/mg/lang.php b/lib/plugins/authplain/lang/mg/lang.php
new file mode 100644
index 000000000..8472161b7
--- /dev/null
+++ b/lib/plugins/authplain/lang/mg/lang.php
@@ -0,0 +1,6 @@
+<?php
+/**
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ */
+$lang['userexists'] = 'Indrisy fa efa nisy namandrika io anarana io.';
diff --git a/lib/plugins/authplain/lang/mk/lang.php b/lib/plugins/authplain/lang/mk/lang.php
new file mode 100644
index 000000000..8ebb9fab8
--- /dev/null
+++ b/lib/plugins/authplain/lang/mk/lang.php
@@ -0,0 +1,6 @@
+<?php
+/**
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ */
+$lang['userexists'] = 'Жалам, корисник со ова корисничко име веќе постои.';
diff --git a/lib/plugins/authplain/lang/mr/lang.php b/lib/plugins/authplain/lang/mr/lang.php
new file mode 100644
index 000000000..15dcf18a0
--- /dev/null
+++ b/lib/plugins/authplain/lang/mr/lang.php
@@ -0,0 +1,6 @@
+<?php
+/**
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ */
+$lang['userexists'] = 'या नावाने सदस्याची नोंदणी झालेली आहे, कृपया दुसरे सदस्य नाव निवडा.';
diff --git a/lib/plugins/authplain/lang/ms/lang.php b/lib/plugins/authplain/lang/ms/lang.php
new file mode 100644
index 000000000..14c3b11af
--- /dev/null
+++ b/lib/plugins/authplain/lang/ms/lang.php
@@ -0,0 +1,6 @@
+<?php
+/**
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ */
+$lang['userexists'] = 'Maaf, nama pengguna yang dimasukkan telah diguna. Sila pilih nama yang lain.';
diff --git a/lib/plugins/authplain/lang/ne/lang.php b/lib/plugins/authplain/lang/ne/lang.php
new file mode 100644
index 000000000..942757855
--- /dev/null
+++ b/lib/plugins/authplain/lang/ne/lang.php
@@ -0,0 +1,6 @@
+<?php
+/**
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ */
+$lang['userexists'] = 'यो नामको प्रयोगकर्ता पहिले देखि रहेको छ।';
diff --git a/lib/plugins/authplain/lang/nl/lang.php b/lib/plugins/authplain/lang/nl/lang.php
new file mode 100644
index 000000000..56ba2ab90
--- /dev/null
+++ b/lib/plugins/authplain/lang/nl/lang.php
@@ -0,0 +1,10 @@
+<?php
+
+/**
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Hugo Smet <hugo.smet@scarlet.be>
+ */
+$lang['userexists'] = 'Er bestaat al een gebruiker met deze loginnaam.';
+$lang['usernotexists'] = 'Sorry, deze gebruiker bestaat niet.';
+$lang['writefail'] = 'Onmogelijk om de gebruikers data te wijzigen. Gelieve de Wiki-Admin te informeren.';
diff --git a/lib/plugins/authplain/lang/no/lang.php b/lib/plugins/authplain/lang/no/lang.php
new file mode 100644
index 000000000..981881369
--- /dev/null
+++ b/lib/plugins/authplain/lang/no/lang.php
@@ -0,0 +1,6 @@
+<?php
+/**
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ */
+$lang['userexists'] = 'Det finnes allerede en konto med dette brukernavnet.';
diff --git a/lib/plugins/authplain/lang/pl/lang.php b/lib/plugins/authplain/lang/pl/lang.php
new file mode 100644
index 000000000..9a61b0047
--- /dev/null
+++ b/lib/plugins/authplain/lang/pl/lang.php
@@ -0,0 +1,6 @@
+<?php
+/**
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ */
+$lang['userexists'] = 'Użytkownik o tej nazwie już istnieje.';
diff --git a/lib/plugins/authplain/lang/pt-br/lang.php b/lib/plugins/authplain/lang/pt-br/lang.php
new file mode 100644
index 000000000..654ec2b80
--- /dev/null
+++ b/lib/plugins/authplain/lang/pt-br/lang.php
@@ -0,0 +1,10 @@
+<?php
+
+/**
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Frederico Gonçalves Guimarães <frederico@teia.bio.br>
+ */
+$lang['userexists'] = 'Desculpe, mas já existe um usuário com esse nome.';
+$lang['usernotexists'] = 'Desculpe, mas esse usuário não existe.';
+$lang['writefail'] = 'Não foi possível modificar os dados do usuário. Por favor, informe ao administrador do Wiki.';
diff --git a/lib/plugins/authplain/lang/pt/lang.php b/lib/plugins/authplain/lang/pt/lang.php
new file mode 100644
index 000000000..26d4180c5
--- /dev/null
+++ b/lib/plugins/authplain/lang/pt/lang.php
@@ -0,0 +1,9 @@
+<?php
+
+/**
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Paulo Carmino <contato@paulocarmino.com>
+ */
+$lang['userexists'] = 'Este utilizador já está inscrito. Por favor escolha outro nome de utilizador.';
+$lang['usernotexists'] = 'Desculpe, esse login não existe.';
diff --git a/lib/plugins/authplain/lang/ro/lang.php b/lib/plugins/authplain/lang/ro/lang.php
new file mode 100644
index 000000000..eb243a12f
--- /dev/null
+++ b/lib/plugins/authplain/lang/ro/lang.php
@@ -0,0 +1,6 @@
+<?php
+/**
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ */
+$lang['userexists'] = 'Ne pare rău, un utilizator cu acest nume este deja autentificat.';
diff --git a/lib/plugins/authplain/lang/ru/lang.php b/lib/plugins/authplain/lang/ru/lang.php
new file mode 100644
index 000000000..8a40852d6
--- /dev/null
+++ b/lib/plugins/authplain/lang/ru/lang.php
@@ -0,0 +1,6 @@
+<?php
+/**
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ */
+$lang['userexists'] = 'Извините, пользователь с таким логином уже существует.';
diff --git a/lib/plugins/authplain/lang/sk/lang.php b/lib/plugins/authplain/lang/sk/lang.php
new file mode 100644
index 000000000..5153fc1c9
--- /dev/null
+++ b/lib/plugins/authplain/lang/sk/lang.php
@@ -0,0 +1,6 @@
+<?php
+/**
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ */
+$lang['userexists'] = 'Užívateľ s rovnakým menom je už zaregistrovaný.';
diff --git a/lib/plugins/authplain/lang/sl/lang.php b/lib/plugins/authplain/lang/sl/lang.php
new file mode 100644
index 000000000..d4ee30fda
--- /dev/null
+++ b/lib/plugins/authplain/lang/sl/lang.php
@@ -0,0 +1,6 @@
+<?php
+/**
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ */
+$lang['userexists'] = 'Uporabnik s tem imenom že obstaja.';
diff --git a/lib/plugins/authplain/lang/sq/lang.php b/lib/plugins/authplain/lang/sq/lang.php
new file mode 100644
index 000000000..e3a93502f
--- /dev/null
+++ b/lib/plugins/authplain/lang/sq/lang.php
@@ -0,0 +1,6 @@
+<?php
+/**
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ */
+$lang['userexists'] = 'Na vjen keq, ekziston një përdorues tjetër me të njëjtin emër.';
diff --git a/lib/plugins/authplain/lang/sr/lang.php b/lib/plugins/authplain/lang/sr/lang.php
new file mode 100644
index 000000000..2d85ca42a
--- /dev/null
+++ b/lib/plugins/authplain/lang/sr/lang.php
@@ -0,0 +1,6 @@
+<?php
+/**
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ */
+$lang['userexists'] = 'Извините, корисник са истим именом већ постоји.';
diff --git a/lib/plugins/authplain/lang/sv/lang.php b/lib/plugins/authplain/lang/sv/lang.php
new file mode 100644
index 000000000..fb80df956
--- /dev/null
+++ b/lib/plugins/authplain/lang/sv/lang.php
@@ -0,0 +1,6 @@
+<?php
+/**
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ */
+$lang['userexists'] = 'Det finns redan en användare med det användarnamnet.';
diff --git a/lib/plugins/authplain/lang/th/lang.php b/lib/plugins/authplain/lang/th/lang.php
new file mode 100644
index 000000000..c7aaf68dd
--- /dev/null
+++ b/lib/plugins/authplain/lang/th/lang.php
@@ -0,0 +1,6 @@
+<?php
+/**
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ */
+$lang['userexists'] = 'ชื่อบัญชีที่ใส่นั้นมีผู้อื่นได้ใช้แล้ว กรุณาเลือกชื่อผู้ใช้อื่น';
diff --git a/lib/plugins/authplain/lang/tr/lang.php b/lib/plugins/authplain/lang/tr/lang.php
new file mode 100644
index 000000000..6111085c2
--- /dev/null
+++ b/lib/plugins/authplain/lang/tr/lang.php
@@ -0,0 +1,7 @@
+<?php
+
+/**
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ */
+$lang['userexists'] = 'Üzgünüz, bu isime sahip bir kullanıcı zaten mevcut.';
diff --git a/lib/plugins/authplain/lang/uk/lang.php b/lib/plugins/authplain/lang/uk/lang.php
new file mode 100644
index 000000000..d8f0a32b2
--- /dev/null
+++ b/lib/plugins/authplain/lang/uk/lang.php
@@ -0,0 +1,6 @@
+<?php
+/**
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ */
+$lang['userexists'] = 'Користувач з таким іменем вже існує.';
diff --git a/lib/plugins/authplain/lang/vi/lang.php b/lib/plugins/authplain/lang/vi/lang.php
new file mode 100644
index 000000000..7ecb0a27c
--- /dev/null
+++ b/lib/plugins/authplain/lang/vi/lang.php
@@ -0,0 +1,6 @@
+<?php
+/**
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ */
+$lang['userexists'] = 'Bạn khác đã dùng username này rồi.';
diff --git a/lib/plugins/authplain/lang/zh-tw/lang.php b/lib/plugins/authplain/lang/zh-tw/lang.php
new file mode 100644
index 000000000..8a5d290e5
--- /dev/null
+++ b/lib/plugins/authplain/lang/zh-tw/lang.php
@@ -0,0 +1,6 @@
+<?php
+/**
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ */
+$lang['userexists'] = '很抱歉,有人已使用了這個帳號。';
diff --git a/lib/plugins/authplain/lang/zh/lang.php b/lib/plugins/authplain/lang/zh/lang.php
new file mode 100644
index 000000000..3dcebd28d
--- /dev/null
+++ b/lib/plugins/authplain/lang/zh/lang.php
@@ -0,0 +1,10 @@
+<?php
+
+/**
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author lainme <lainme993@gmail.com>
+ */
+$lang['userexists'] = '对不起,该用户名已经存在。';
+$lang['usernotexists'] = '抱歉,该用户不存在';
+$lang['writefail'] = '无法修改用户数据。请联系维基管理员';
diff --git a/lib/plugins/authplain/plugin.info.txt b/lib/plugins/authplain/plugin.info.txt
index 2659ac7ad..c09dbcb34 100644
--- a/lib/plugins/authplain/plugin.info.txt
+++ b/lib/plugins/authplain/plugin.info.txt
@@ -1,7 +1,7 @@
base authplain
author Andreas Gohr
email andi@splitbrain.org
-date 2014-07-01
+date 2015-07-18
name Plain Auth Plugin
desc Provides user authentication against DokuWiki's local password storage
url http://www.dokuwiki.org/plugin:authplain
diff --git a/lib/plugins/config/_test/configuration.test.php b/lib/plugins/config/_test/configuration.test.php
index b808ad505..6e9eb0cc6 100644
--- a/lib/plugins/config/_test/configuration.test.php
+++ b/lib/plugins/config/_test/configuration.test.php
@@ -1,4 +1,10 @@
<?php
+/**
+ * @group plugin_config
+ * @group admin_plugins
+ * @group plugins
+ * @group bundled_plugins
+ */
class plugin_config_configuration_test extends DokuWikiTest {
diff --git a/lib/plugins/config/admin.php b/lib/plugins/config/admin.php
index 835d27775..ec8ee0b84 100644
--- a/lib/plugins/config/admin.php
+++ b/lib/plugins/config/admin.php
@@ -32,6 +32,9 @@ class admin_plugin_config extends DokuWiki_Admin_Plugin {
var $_session_started = false;
var $_localised_prompts = false;
+ /**
+ * @return int
+ */
function getMenuSort() { return 100; }
/**
@@ -40,14 +43,20 @@ class admin_plugin_config extends DokuWiki_Admin_Plugin {
function handle() {
global $ID, $INPUT;
- if (!$this->_restore_session()) return $this->_close_session();
- if ($INPUT->int('save') != 1) return $this->_close_session();
- if (!checkSecurityToken()) return $this->_close_session();
+ if(!$this->_restore_session() || $INPUT->int('save') != 1 || !checkSecurityToken()) {
+ $this->_close_session();
+ return;
+ }
- if (is_null($this->_config)) { $this->_config = new configuration($this->_file); }
+ if(is_null($this->_config)) {
+ $this->_config = new configuration($this->_file);
+ }
// don't go any further if the configuration is locked
- if ($this->_config->_locked) return $this->_close_session();
+ if($this->_config->locked) {
+ $this->_close_session();
+ return;
+ }
$this->_input = $INPUT->arr('config');
@@ -104,6 +113,7 @@ class admin_plugin_config extends DokuWiki_Admin_Plugin {
formSecurityToken();
$this->_print_h1('dokuwiki_settings', $this->getLang('_header_dokuwiki'));
+ /** @var setting[] $undefined_settings */
$undefined_settings = array();
$in_fieldset = false;
$first_plugin_fieldset = true;
@@ -162,7 +172,17 @@ class admin_plugin_config extends DokuWiki_Admin_Plugin {
// show undefined settings list
if ($allow_debug && !empty($undefined_settings)) {
- function _setting_natural_comparison($a, $b) { return strnatcmp($a->_key, $b->_key); }
+ /**
+ * Callback for sorting settings
+ *
+ * @param setting $a
+ * @param setting $b
+ * @return int if $a is lower/equal/higher than $b
+ */
+ function _setting_natural_comparison($a, $b) {
+ return strnatcmp($a->_key, $b->_key);
+ }
+
usort($undefined_settings, '_setting_natural_comparison');
$this->_print_h1('undefined_settings', $this->getLang('_header_undefined'));
ptln('<fieldset>');
@@ -192,8 +212,8 @@ class admin_plugin_config extends DokuWiki_Admin_Plugin {
if (!$this->_config->locked) {
ptln(' <input type="hidden" name="save" value="1" />');
- ptln(' <input type="submit" name="submit" class="button" value="'.$lang['btn_save'].'" accesskey="s" />');
- ptln(' <input type="reset" class="button" value="'.$lang['btn_reset'].'" />');
+ ptln(' <button type="submit" name="submit" accesskey="s">'.$lang['btn_save'].'</button>');
+ ptln(' <button type="reset">'.$lang['btn_reset'].'</button>');
}
ptln('</p>');
@@ -235,6 +255,9 @@ class admin_plugin_config extends DokuWiki_Admin_Plugin {
if ($this->_session_started) session_write_close();
}
+ /**
+ * @param bool $prompts
+ */
function setupLocale($prompts=false) {
parent::setupLocale();
@@ -245,6 +268,9 @@ class admin_plugin_config extends DokuWiki_Admin_Plugin {
}
+ /**
+ * @return bool
+ */
function _setup_localised_plugin_prompts() {
global $conf;
@@ -256,7 +282,7 @@ class admin_plugin_config extends DokuWiki_Admin_Plugin {
if ($plugin == '.' || $plugin == '..' || $plugin == 'tmp' || $plugin == 'config') continue;
if (is_file(DOKU_PLUGIN.$plugin)) continue;
- if (@file_exists(DOKU_PLUGIN.$plugin.$enlangfile)){
+ if (file_exists(DOKU_PLUGIN.$plugin.$enlangfile)){
$lang = array();
@include(DOKU_PLUGIN.$plugin.$enlangfile);
if ($conf['lang'] != 'en') @include(DOKU_PLUGIN.$plugin.$langfile);
@@ -277,7 +303,7 @@ class admin_plugin_config extends DokuWiki_Admin_Plugin {
// the same for the active template
$tpl = $conf['template'];
- if (@file_exists(tpl_incdir().$enlangfile)){
+ if (file_exists(tpl_incdir().$enlangfile)){
$lang = array();
@include(tpl_incdir().$enlangfile);
if ($conf['lang'] != 'en') @include(tpl_incdir().$langfile);
@@ -299,6 +325,8 @@ class admin_plugin_config extends DokuWiki_Admin_Plugin {
* Generates a two-level table of contents for the config plugin.
*
* @author Ben Coburn <btcoburn@silicodon.net>
+ *
+ * @return array
*/
function getTOC() {
if (is_null($this->_config)) { $this->_config = new configuration($this->_file); }
@@ -328,6 +356,7 @@ class admin_plugin_config extends DokuWiki_Admin_Plugin {
$t[] = html_mktocitem('configuration_manager', $this->getLang('_configuration_manager'), 1);
$t[] = html_mktocitem('dokuwiki_settings', $this->getLang('_header_dokuwiki'), 1);
+ /** @var setting $setting */
foreach($toc['conf'] as $setting) {
$name = $setting->prompt($this);
$t[] = html_mktocitem($setting->_key, $name, 2);
@@ -352,6 +381,10 @@ class admin_plugin_config extends DokuWiki_Admin_Plugin {
return $t;
}
+ /**
+ * @param string $id
+ * @param string $text
+ */
function _print_h1($id, $text) {
ptln('<h1 id="'.$id.'">'.$text.'</h1>');
}
diff --git a/lib/plugins/config/images/danger.png b/lib/plugins/config/images/danger.png
index 7bd84f7a3..da0692429 100644
--- a/lib/plugins/config/images/danger.png
+++ b/lib/plugins/config/images/danger.png
Binary files differ
diff --git a/lib/plugins/config/images/security.png b/lib/plugins/config/images/security.png
index 1800f8e56..3ee8476ac 100644
--- a/lib/plugins/config/images/security.png
+++ b/lib/plugins/config/images/security.png
Binary files differ
diff --git a/lib/plugins/config/images/warning.png b/lib/plugins/config/images/warning.png
index c5e482f84..c1af79f0f 100644
--- a/lib/plugins/config/images/warning.png
+++ b/lib/plugins/config/images/warning.png
Binary files differ
diff --git a/lib/plugins/config/lang/ar/intro.txt b/lib/plugins/config/lang/ar/intro.txt
index d447ec315..15905189f 100644
--- a/lib/plugins/config/lang/ar/intro.txt
+++ b/lib/plugins/config/lang/ar/intro.txt
@@ -4,4 +4,4 @@
الاعدادات الظاهرة بخلفية حمراء فاتحة اعدادات محمية ولا يمكن تغييرها بهذه الاضافة. الاعدادات الظاهرة بخلفية زرقاء هي القيم الافتراضية والاعدادات الظاهرة بخلفية بيضاء خصصت لهذا التثبيت محليا. الاعدادات الزرقاء والبيضاء يمكن تغييرها.
-تأكد من ضغط زر **SAVE** قبل ترك الصفحة وإلا ستضيع تعديلاتك. \ No newline at end of file
+تأكد من ضغط زر **SAVE** قبل ترك الصفحة وإلا ستضيع تعديلاتك.
diff --git a/lib/plugins/config/lang/bg/lang.php b/lib/plugins/config/lang/bg/lang.php
index 64ddb1eae..0426df060 100644
--- a/lib/plugins/config/lang/bg/lang.php
+++ b/lib/plugins/config/lang/bg/lang.php
@@ -1,259 +1,195 @@
<?php
+
/**
- * bulgarian language file
- *
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
* @author Nikolay Vladimirov <nikolay@vladimiroff.com>
* @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'] = 'Обновяването на настройките не е възможно, поради невалидна стойност, моля, прегледайте промените си и пробвайте отново.
+$lang['menu'] = 'Настройки';
+$lang['error'] = 'Обновяването на настройките не е възможно, поради невалидна стойност, моля, прегледайте промените си и пробвайте отново.
<br />Неверните стойности ще бъдат обградени с червена рамка.';
-$lang['updated'] = 'Обновяването на настройките е успешно.';
-$lang['nochoice'] = '(няма друг възможен избор)';
-$lang['locked'] = 'Обновяването на файла с настройките не е възможно, ако това не е нарочно, проверете,<br />
+$lang['updated'] = 'Обновяването на настройките е успешно.';
+$lang['nochoice'] = '(няма друг възможен избор)';
+$lang['locked'] = 'Обновяването на файла с настройките не е възможно, ако това не е нарочно, проверете,<br />
дали името на локалния файл с настройки и правата са верни.';
-
-$lang['danger'] = 'Внимание: промяна на опцията може да направи Wiki-то и менюто за настройване недостъпни.';
-$lang['warning'] = 'Предупреждение: промяна на опцията може предизвика нежелани последици.';
-$lang['security'] = 'Предупреждение: промяна на опцията може да представлява риск за сигурността.';
-
-/* --- Config Setting Headers --- */
-$lang['_configuration_manager'] = 'Диспечер на настройките'; //same as heading in intro.txt
-$lang['_header_dokuwiki'] = 'Настройки на DokuWiki';
-$lang['_header_plugin'] = 'Настройки на приставки';
-$lang['_header_template'] = 'Настройки на шаблона';
-$lang['_header_undefined'] = 'Неопределени настройки';
-
-/* --- Config Setting Groups --- */
-$lang['_basic'] = 'Основни настройки';
-$lang['_display'] = 'Настройки за изобразяване';
-$lang['_authentication'] = 'Настройки за удостоверяване';
-$lang['_anti_spam'] = 'Настройки за борба със SPAM-ма';
-$lang['_editing'] = 'Настройки за редактиране';
-$lang['_links'] = 'Настройки на препратките';
-$lang['_media'] = 'Настройки на медията';
-$lang['_notifications'] = 'Настройки за известяване';
-$lang['_syndication'] = 'Настройки на RSS емисиите';
-$lang['_advanced'] = 'Допълнителни настройки';
-$lang['_network'] = 'Мрежови настройки';
-
-/* --- Undefined Setting Messages --- */
+$lang['danger'] = 'Внимание: промяна на опцията може да направи Wiki-то и менюто за настройване недостъпни.';
+$lang['warning'] = 'Предупреждение: промяна на опцията може предизвика нежелани последици.';
+$lang['security'] = 'Предупреждение: промяна на опцията може да представлява риск за сигурността.';
+$lang['_configuration_manager'] = 'Диспечер на настройките';
+$lang['_header_dokuwiki'] = 'Настройки на DokuWiki';
+$lang['_header_plugin'] = 'Настройки на приставки';
+$lang['_header_template'] = 'Настройки на шаблона';
+$lang['_header_undefined'] = 'Неопределени настройки';
+$lang['_basic'] = 'Основни настройки';
+$lang['_display'] = 'Настройки за изобразяване';
+$lang['_authentication'] = 'Настройки за удостоверяване';
+$lang['_anti_spam'] = 'Настройки за борба със SPAM-ма';
+$lang['_editing'] = 'Настройки за редактиране';
+$lang['_links'] = 'Настройки на препратките';
+$lang['_media'] = 'Настройки на медията';
+$lang['_notifications'] = 'Настройки за известяване';
+$lang['_syndication'] = 'Настройки на RSS емисиите';
+$lang['_advanced'] = 'Допълнителни настройки';
+$lang['_network'] = 'Мрежови настройки';
$lang['_msg_setting_undefined'] = 'Няма метаданни за настройките.';
$lang['_msg_setting_no_class'] = 'Няма клас настройки.';
$lang['_msg_setting_no_default'] = 'Няма стандартна стойност.';
-
-/* -------------------- Config Options --------------------------- */
-
-/* Basic Settings */
-$lang['title'] = 'Заглавие за Wiki-то, тоест името';
-$lang['start'] = 'Име на началната страница';
-$lang['lang'] = 'Език на интерфейса';
-$lang['template'] = 'Шаблон (определя вида на страниците)';
-$lang['tagline'] = 'Подзаглавие - изобразява се под името на Wiki-то (ако се поддържа от шаблона)';
-$lang['sidebar'] = 'Име на страницата за страничната лента (ако се поддържа от шаблона). Оставите ли полето празно лентата ще бъде изключена';
-$lang['license'] = 'Под какъв лиценз да бъде публикувано съдържанието?';
-$lang['savedir'] = 'Директория за записване на данните';
-$lang['basedir'] = 'Главна директория (напр. <code>/dokuwiki/</code>). Оставете празно, за да бъде засечена автоматично.';
-$lang['baseurl'] = 'URL адрес (напр. <code>http://www.yourserver.com</code>). Оставете празно, за да бъде засечен автоматично.';
-$lang['cookiedir'] = 'Път за бисквитките. Оставите ли полето празно ще се ползва горния URL адрес.';
-$lang['dmode'] = 'Режим (права) за създаване на директории';
-$lang['fmode'] = 'Режим (права) за създаване на файлове';
-$lang['allowdebug'] = 'Включване на режи debug - <b>изключете, ако не е нужен!</b>';
-
-/* Display Settings */
-$lang['recent'] = 'Скорошни промени - брой елементи на страница';
-$lang['recent_days'] = 'Колко от скорошните промени да се пазят (дни)';
-$lang['breadcrumbs'] = 'Брой на следите. За изключване на функцията задайте 0.';
-$lang['youarehere'] = 'Йерархични следи (в този случай можете да изключите горната опция)';
-$lang['fullpath'] = 'Показване на пълния път до страниците в долния колонтитул.';
-$lang['typography'] = 'Замяна на последователност от символи с типографски еквивалент';
-$lang['dformat'] = 'Формат на датата (виж. <a href="http://www.php.net/strftime">strftime</a> функцията на PHP)';
-$lang['signature'] = 'Подпис - какво да внася бутона "Вмъкване на подпис" от редактора';
-$lang['showuseras'] = 'Какво да се показва за потребителя, който последно е променил дадена страницата';
-$lang['toptoclevel'] = 'Главно ниво (заглавие) за съдържанието';
-$lang['tocminheads'] = 'Минимален брой заглавия, определящ дали да бъде създадено съдържание';
-$lang['maxtoclevel'] = 'Максимален брой нива (заглавия) за включване в съдържанието';
-$lang['maxseclevel'] = 'Максимален брой нива предоставяни за самостоятелно редактиране';
-$lang['camelcase'] = 'Ползване на CamelCase за линкове';
-$lang['deaccent'] = 'Почистване имената на страниците (на файловете)';
-$lang['useheading'] = 'Ползване на първото заглавие за име на страница';
-$lang['sneaky_index'] = 'Стандартно DokuWiki ще показва всички именни пространства в индекса. Опцията скрива тези, за които потребителят няма права за четене. Това може да доведе и до скриване на иначе достъпни подименни пространства. С определени настройки на списъците за контрол на достъпа (ACL) може да направи индекса неизползваем. ';
-$lang['hidepages'] = 'Скриване на страниците съвпадащи с този регулярен израз(regular expressions)';
-
-/* Authentication Settings */
-$lang['useacl'] = 'Ползване на списъци за достъп';
-$lang['autopasswd'] = 'Автоматично генериране на пароли, на нови потребители и пращане по пощата';
-$lang['authtype'] = 'Метод за удостоверяване';
-$lang['passcrypt'] = 'Метод за криптиране на паролите';
-$lang['defaultgroup']= 'Стандартна група';
-$lang['superuser'] = 'Супер потребител - група, потребител или списък със стойности разделени чрез запетая (user1,@group1,user2) с пълен достъп до всички страници и функции без значение от настройките на списъците за достъп (ACL)';
-$lang['manager'] = 'Управител - група, потребител или списък със стойности разделени чрез запетая (user1,@group1,user2) с достъп до определени управленски функции ';
-$lang['profileconfirm'] = 'Потвърждаване на промени в профила с парола';
-$lang['rememberme'] = 'Ползване на постоянни бисквитки за вписване (за функцията "Запомни ме")';
-$lang['disableactions'] = 'Изключване функции на DokuWiki';
-$lang['disableactions_check'] = 'Проверка';
+$lang['title'] = 'Заглавие за Wiki-то, тоест името';
+$lang['start'] = 'Име на началната страница';
+$lang['lang'] = 'Език на интерфейса';
+$lang['template'] = 'Шаблон (определя вида на страниците)';
+$lang['tagline'] = 'Подзаглавие - изобразява се под името на Wiki-то (ако се поддържа от шаблона)';
+$lang['sidebar'] = 'Име на страницата за страничната лента (ако се поддържа от шаблона). Оставите ли полето празно лентата ще бъде изключена';
+$lang['license'] = 'Под какъв лиценз да бъде публикувано съдържанието?';
+$lang['savedir'] = 'Директория за записване на данните';
+$lang['basedir'] = 'Главна директория (напр. <code>/dokuwiki/</code>). Оставете празно, за да бъде засечена автоматично.';
+$lang['baseurl'] = 'URL адрес (напр. <code>http://www.yourserver.com</code>). Оставете празно, за да бъде засечен автоматично.';
+$lang['cookiedir'] = 'Път за бисквитките. Оставите ли полето празно ще се ползва горния URL адрес.';
+$lang['dmode'] = 'Режим (права) за създаване на директории';
+$lang['fmode'] = 'Режим (права) за създаване на файлове';
+$lang['allowdebug'] = 'Включване на режи debug - <b>изключете, ако не е нужен!</b>';
+$lang['recent'] = 'Скорошни промени - брой елементи на страница';
+$lang['recent_days'] = 'Колко от скорошните промени да се пазят (дни)';
+$lang['breadcrumbs'] = 'Брой на следите. За изключване на функцията задайте 0.';
+$lang['youarehere'] = 'Йерархични следи (в този случай можете да изключите горната опция)';
+$lang['fullpath'] = 'Показване на пълния път до страниците в долния колонтитул.';
+$lang['typography'] = 'Замяна на последователност от символи с типографски еквивалент';
+$lang['dformat'] = 'Формат на датата (виж. <a href="http://www.php.net/strftime">strftime</a> функцията на PHP)';
+$lang['signature'] = 'Подпис - какво да внася бутона "Вмъкване на подпис" от редактора';
+$lang['showuseras'] = 'Какво да се показва за потребителя, който последно е променил дадена страницата';
+$lang['toptoclevel'] = 'Главно ниво (заглавие) за съдържанието';
+$lang['tocminheads'] = 'Минимален брой заглавия, определящ дали да бъде създадено съдържание';
+$lang['maxtoclevel'] = 'Максимален брой нива (заглавия) за включване в съдържанието';
+$lang['maxseclevel'] = 'Максимален брой нива предоставяни за самостоятелно редактиране';
+$lang['camelcase'] = 'Ползване на CamelCase за линкове';
+$lang['deaccent'] = 'Почистване имената на страниците (на файловете)';
+$lang['useheading'] = 'Ползване на първото заглавие за име на страница';
+$lang['sneaky_index'] = 'Стандартно DokuWiki ще показва всички именни пространства в индекса. Опцията скрива тези, за които потребителят няма права за четене. Това може да доведе и до скриване на иначе достъпни подименни пространства. С определени настройки на списъците за контрол на достъпа (ACL) може да направи индекса неизползваем. ';
+$lang['hidepages'] = 'Скриване на страниците съвпадащи с този регулярен израз(regular expressions)';
+$lang['useacl'] = 'Ползване на списъци за достъп';
+$lang['autopasswd'] = 'Автоматично генериране на пароли, на нови потребители и пращане по пощата';
+$lang['authtype'] = 'Метод за удостоверяване';
+$lang['passcrypt'] = 'Метод за криптиране на паролите';
+$lang['defaultgroup'] = 'Стандартна група';
+$lang['superuser'] = 'Супер потребител - група, потребител или списък със стойности разделени чрез запетая (user1,@group1,user2) с пълен достъп до всички страници и функции без значение от настройките на списъците за достъп (ACL)';
+$lang['manager'] = 'Управител - група, потребител или списък със стойности разделени чрез запетая (user1,@group1,user2) с достъп до определени управленски функции ';
+$lang['profileconfirm'] = 'Потвърждаване на промени в профила с парола';
+$lang['rememberme'] = 'Ползване на постоянни бисквитки за вписване (за функцията "Запомни ме")';
+$lang['disableactions'] = 'Изключване функции на DokuWiki';
+$lang['disableactions_check'] = 'Проверка';
$lang['disableactions_subscription'] = 'Абониране/Отписване';
$lang['disableactions_wikicode'] = 'Преглед на кода/Експортиране на оригинална версия';
-$lang['disableactions_other'] = 'Други действия (разделени със запетая)';
+$lang['disableactions_other'] = 'Други действия (разделени със запетая)';
$lang['auth_security_timeout'] = 'Автоматично проверяване на удостоверяването всеки (сек)';
-$lang['securecookie'] = 'Да се изпращат ли бисквитките зададени чрез HTTPS, само чрез HTTPS от браузъра? Изключете опцията, когато SSL се ползва само за вписване, а четенето е без SSL.';
-$lang['remote'] = 'Включване на системата за отдалечен API достъп. Това ще позволи на приложения да се свързват с DokuWiki чрез XML-RPC или друг механизъм.';
-$lang['remoteuser'] = 'Ограничаване на отдалечения API достъп - активиране само за следните групи и потребители (отделени със запетая). Ако оставите полето празно всеки ще има достъп достъп.';
-
-/* Anti-Spam Settings */
-$lang['usewordblock'] = 'Блокиране на SPAM въз основа на на списък от думи';
-$lang['relnofollow'] = 'Ползване на rel="nofollow" за външни препратки';
-$lang['indexdelay'] = 'Забавяне преди индексиране (сек)';
-$lang['mailguard'] = 'Промяна на адресите на ел. поща (във форма непозволяваща пращането на SPAM)';
-$lang['iexssprotect'] = 'Проверяване на качените файлове за вероятен зловреден JavaScript и HTML код';
-
-/* Editing Settings */
-$lang['usedraft'] = 'Автоматично запазване на чернова по време на редактиране';
-$lang['htmlok'] = 'Разрешаване вграждането на HTML код';
-$lang['phpok'] = 'Разрешаване вграждането на PHP код';
-$lang['locktime'] = 'Макс. период за съхраняване на заключените файлове (сек)';
-$lang['cachetime'] = 'Макс. период за съхраняване на кеша (сек)';
-
-/* Link settings */
-$lang['target____wiki'] = 'Прозорец за вътрешни препратки';
-$lang['target____interwiki'] = 'Прозорец за препратки към други Wiki сайтове';
-$lang['target____extern'] = 'Прозорец за външни препратки';
-$lang['target____media'] = 'Прозорец за медийни препратки';
-$lang['target____windows'] = 'Прозорец за препратки към Windows';
-
-/* Media Settings */
-$lang['mediarevisions'] = 'Да се пазят ли стари версии на качените файлове (Mediarevisions)?';
-$lang['refcheck'] = 'Проверка за препратка към медия, преди да бъде изтрита';
-$lang['gdlib'] = 'Версия на GD Lib';
-$lang['im_convert'] = 'Път до инструмента за трансформация на ImageMagick';
-$lang['jpg_quality'] = 'Качество на JPG компресията (0-100)';
-$lang['fetchsize'] = 'Максимален размер (байтове), който fetch.php може да сваля';
-
-/* Notification Settings */
-$lang['subscribers'] = 'Включване на поддръжката за абониране към страници';
-$lang['subscribe_time'] = 'Време след което абонаментните списъци и обобщения се изпращат (сек); Трябва да е по-малко от времето определено в recent_days.';
-$lang['notify'] = 'Пращане на съобщения за промени по страниците на следната eл. поща';
-$lang['registernotify'] = 'Пращане на информация за нови потребители на следната ел. поща';
-$lang['mailfrom'] = 'Ел. поща, която да се ползва за автоматично изпращане на ел. писма';
-$lang['mailprefix'] = 'Представка за темите (поле subject) на автоматично изпращаните ел. писма';
-$lang['htmlmail'] = 'Изпращане на по-добре изглеждащи, но по-големи по-размер HTML ел. писма. Изключете ако желаете писмата да се изпращат като чист текст.';
-
-/* Syndication Settings */
-$lang['sitemap'] = 'Генериране на Google sitemap (дни)';
-$lang['rss_type'] = 'Тип на XML емисията';
-$lang['rss_linkto'] = 'XML емисията препраща към';
-$lang['rss_content'] = 'Какво да показват елементите на XML емисията?';
-$lang['rss_update'] = 'Интервал на актуализиране на XML емисията (сек)';
-$lang['rss_show_summary'] = 'Показване на обобщение в заглавието на XML емисията';
-$lang['rss_media'] = 'Кой тип промени да се включват в XML мисията?';
-
-/* Advanced Options */
-$lang['updatecheck'] = 'Проверяване за за нови версии и предупреждения за сигурността? Необходимо е Dokiwiki да може да се свързва със update.dokuwiki.org за тази функционалност.';
-$lang['userewrite'] = 'Ползване на nice URL адреси';
-$lang['useslash'] = 'Ползване на наклонена черта за разделител на именните пространства в URL';
-$lang['sepchar'] = 'Разделител между думите в имената на страници';
-$lang['canonical'] = 'Ползване на напълно уеднаквени URL адреси (абсолютни адреси - http://server/path)';
-$lang['fnencode'] = 'Метод за кодиране на не-ASCII именуваните файлове.';
-$lang['autoplural'] = 'Проверяване за множествено число в препратките';
-$lang['compression'] = 'Метод за компресия на attic файлове';
-$lang['gzip_output'] = 'Кодиране на съдържанието с gzip за xhtml';
-$lang['compress'] = 'Компактен CSS и javascript изглед';
-$lang['cssdatauri'] = 'Максимален размер, в байтове, до който изображенията посочени в .CSS файл ще бъдат вграждани в стила (stylesheet), за да се намали броя на HTTP заявките. Техниката не работи за версиите на IE преди 8! Препоръчителни стойности: <code>400</code> до <code>600</code> байта. Въведете <code>0</code> за изключване.';
-$lang['send404'] = 'Пращане на "HTTP 404/Page Not Found" за несъществуващи страници';
-$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__core'] = '%s (ядрото на DokuWiki)';
-$lang['renderer__plugin'] = '%s (приставка)';
-
-/* Network Options */
-$lang['dnslookups'] = 'DokuWiki ще търси имената на хостовете, на отдалечени IP адреси, от които потребители редактират страници. НЕ е желателно да ползвате опцията ако имате бавен или неработещ DNS сървър.';
-
-/* 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';
-
-/* License Options */
-$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['securecookie'] = 'Да се изпращат ли бисквитките зададени чрез HTTPS, само чрез HTTPS от браузъра? Изключете опцията, когато SSL се ползва само за вписване, а четенето е без SSL.';
+$lang['remote'] = 'Включване на системата за отдалечен API достъп. Това ще позволи на приложения да се свързват с DokuWiki чрез XML-RPC или друг механизъм.';
+$lang['remoteuser'] = 'Ограничаване на отдалечения API достъп - активиране само за следните групи и потребители (отделени със запетая). Ако оставите полето празно всеки ще има достъп достъп.';
+$lang['usewordblock'] = 'Блокиране на SPAM въз основа на на списък от думи';
+$lang['relnofollow'] = 'Ползване на rel="nofollow" за външни препратки';
+$lang['indexdelay'] = 'Забавяне преди индексиране (сек)';
+$lang['mailguard'] = 'Промяна на адресите на ел. поща (във форма непозволяваща пращането на SPAM)';
+$lang['iexssprotect'] = 'Проверяване на качените файлове за вероятен зловреден JavaScript и HTML код';
+$lang['usedraft'] = 'Автоматично запазване на чернова по време на редактиране';
+$lang['htmlok'] = 'Разрешаване вграждането на HTML код';
+$lang['phpok'] = 'Разрешаване вграждането на PHP код';
+$lang['locktime'] = 'Макс. период за съхраняване на заключените файлове (сек)';
+$lang['cachetime'] = 'Макс. период за съхраняване на кеша (сек)';
+$lang['target____wiki'] = 'Прозорец за вътрешни препратки';
+$lang['target____interwiki'] = 'Прозорец за препратки към други Wiki сайтове';
+$lang['target____extern'] = 'Прозорец за външни препратки';
+$lang['target____media'] = 'Прозорец за медийни препратки';
+$lang['target____windows'] = 'Прозорец за препратки към Windows';
+$lang['mediarevisions'] = 'Да се пазят ли стари версии на качените файлове (Mediarevisions)?';
+$lang['refcheck'] = 'Проверка за препратка към медия, преди да бъде изтрита';
+$lang['gdlib'] = 'Версия на GD Lib';
+$lang['im_convert'] = 'Път до инструмента за трансформация на ImageMagick';
+$lang['jpg_quality'] = 'Качество на JPG компресията (0-100)';
+$lang['fetchsize'] = 'Максимален размер (байтове), който fetch.php може да сваля';
+$lang['subscribers'] = 'Включване на поддръжката за абониране към страници';
+$lang['subscribe_time'] = 'Време след което абонаментните списъци и обобщения се изпращат (сек); Трябва да е по-малко от времето определено в recent_days.';
+$lang['notify'] = 'Пращане на съобщения за промени по страниците на следната eл. поща';
+$lang['registernotify'] = 'Пращане на информация за нови потребители на следната ел. поща';
+$lang['mailfrom'] = 'Ел. поща, която да се ползва за автоматично изпращане на ел. писма';
+$lang['mailprefix'] = 'Представка за темите (поле subject) на автоматично изпращаните ел. писма';
+$lang['htmlmail'] = 'Изпращане на по-добре изглеждащи, но по-големи по-размер HTML ел. писма. Изключете ако желаете писмата да се изпращат като чист текст.';
+$lang['sitemap'] = 'Генериране на Google sitemap (дни)';
+$lang['rss_type'] = 'Тип на XML емисията';
+$lang['rss_linkto'] = 'XML емисията препраща към';
+$lang['rss_content'] = 'Какво да показват елементите на XML емисията?';
+$lang['rss_update'] = 'Интервал на актуализиране на XML емисията (сек)';
+$lang['rss_show_summary'] = 'Показване на обобщение в заглавието на XML емисията';
+$lang['rss_media'] = 'Кой тип промени да се включват в XML мисията?';
+$lang['updatecheck'] = 'Проверяване за за нови версии и предупреждения за сигурността? Необходимо е Dokiwiki да може да се свързва със update.dokuwiki.org за тази функционалност.';
+$lang['userewrite'] = 'Ползване на nice URL адреси';
+$lang['useslash'] = 'Ползване на наклонена черта за разделител на именните пространства в URL';
+$lang['sepchar'] = 'Разделител между думите в имената на страници';
+$lang['canonical'] = 'Ползване на напълно уеднаквени URL адреси (абсолютни адреси - http://server/path)';
+$lang['fnencode'] = 'Метод за кодиране на не-ASCII именуваните файлове.';
+$lang['autoplural'] = 'Проверяване за множествено число в препратките';
+$lang['compression'] = 'Метод за компресия на attic файлове';
+$lang['gzip_output'] = 'Кодиране на съдържанието с gzip за xhtml';
+$lang['compress'] = 'Компактен CSS и javascript изглед';
+$lang['cssdatauri'] = 'Максимален размер, в байтове, до който изображенията посочени в .CSS файл ще бъдат вграждани в стила (stylesheet), за да се намали броя на HTTP заявките. Техниката не работи за версиите на IE преди 8! Препоръчителни стойности: <code>400</code> до <code>600</code> байта. Въведете <code>0</code> за изключване.';
+$lang['send404'] = 'Пращане на "HTTP 404/Page Not Found" за несъществуващи страници';
+$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__core'] = '%s (ядрото на DokuWiki)';
+$lang['renderer__plugin'] = '%s (приставка)';
+$lang['dnslookups'] = 'DokuWiki ще търси имената на хостовете, на отдалечени IP адреси, от които потребители редактират страници. НЕ е желателно да ползвате опцията ако имате бавен или неработещ DNS сървър.';
+$lang['proxy____host'] = 'Име на прокси сървър';
+$lang['proxy____port'] = 'Порт за проксито';
+$lang['proxy____user'] = 'Потребител за проксито';
+$lang['proxy____pass'] = 'Парола за проксито';
+$lang['proxy____ssl'] = 'Ползване на SSL при свързване с проксито';
+$lang['proxy____except'] = 'Регулярен израз определящ за кои URL адреси да не се ползва прокси сървър.';
+$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_'] = 'Нищо не е избрано';
+$lang['typography_o_0'] = 'без';
+$lang['typography_o_1'] = 'с изключение на единични кавички';
+$lang['typography_o_2'] = 'включително единични кавички (не винаги работи)';
+$lang['userewrite_o_0'] = 'без';
+$lang['userewrite_o_1'] = 'файлът .htaccess';
+$lang['userewrite_o_2'] = 'вътрешно от DokuWiki ';
+$lang['deaccent_o_0'] = 'изключено';
+$lang['deaccent_o_1'] = 'премахване на акценти';
+$lang['deaccent_o_2'] = 'транслитерация';
+$lang['gdlib_o_0'] = 'GD Lib не е достъпна';
+$lang['gdlib_o_1'] = 'Версия 1.x';
+$lang['gdlib_o_2'] = 'Автоматично разпознаване';
+$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';
$lang['rss_content_o_abstract'] = 'Извлечение';
-$lang['rss_content_o_diff'] = 'Обединени разлики';
+$lang['rss_content_o_diff'] = 'Обединени разлики';
$lang['rss_content_o_htmldiff'] = 'Таблица с разликите в HTML формат';
-$lang['rss_content_o_html'] = 'Цялото съдържание на HTML страницата';
-
-/* rss_linkto options */
+$lang['rss_content_o_html'] = 'Цялото съдържание на HTML страницата';
$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['compression_o_0'] = 'без';
+$lang['compression_o_gz'] = 'gzip';
+$lang['compression_o_bz2'] = 'bz2';
+$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 за пренасочване';
+$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_0'] = 'Никога';
$lang['useheading_o_navigation'] = 'Само за навигация';
-$lang['useheading_o_content'] = 'Само за съдържанието на Wiki-то';
-$lang['useheading_o_1'] = 'Винаги';
-
-$lang['readdircache'] = 'Максимален период за съхраняване кеша на readdir (сек)';
+$lang['useheading_o_content'] = 'Само за съдържанието на Wiki-то';
+$lang['useheading_o_1'] = 'Винаги';
+$lang['readdircache'] = 'Максимален период за съхраняване кеша на readdir (сек)';
diff --git a/lib/plugins/config/lang/ca-valencia/intro.txt b/lib/plugins/config/lang/ca-valencia/intro.txt
index 40729e5fe..6dd461db3 100644
--- a/lib/plugins/config/lang/ca-valencia/intro.txt
+++ b/lib/plugins/config/lang/ca-valencia/intro.txt
@@ -7,4 +7,4 @@ Per a més informació al voltant d'este plúgin vaja a [[doku>config]].
Els ajusts mostrats en un fondo roig claret estan protegits i no els pot
modificar en este plúgin. Els ajusts mostrats en un fondo blau tenen els valors predeterminats i els ajusts mostrats en un fondo blanc han segut modificats localment per ad esta instalació. Abdós ajusts, blaus i blancs, es poden modificar.
-Recorde pulsar el botó **GUARDAR** ans d'anar-se'n d'esta pàgina o perdrà els canvis que haja fet. \ No newline at end of file
+Recorde pulsar el botó **GUARDAR** ans d'anar-se'n d'esta pàgina o perdrà els canvis que haja fet.
diff --git a/lib/plugins/config/lang/ca/lang.php b/lib/plugins/config/lang/ca/lang.php
index a53a859a0..404d3ea70 100644
--- a/lib/plugins/config/lang/ca/lang.php
+++ b/lib/plugins/config/lang/ca/lang.php
@@ -1,12 +1,14 @@
<?php
+
/**
- * Catalan language file
- *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
* @author Carles Bellver <carles.bellver@gmail.com>
* @author carles.bellver@gmail.com
* @author carles.bellver@cent.uji.es
* @author Carles Bellver <carles.bellver@cent.uji.es>
* @author daniel@6temes.cat
+ * @author controlonline.net <controlonline.net@gmail.com>
*/
$lang['menu'] = 'Paràmetres de configuració';
$lang['error'] = 'Els paràmetres no s\'han pogut actualitzar per causa d\'un valor incorrecte Reviseu els canvis i torneu a enviar-los.<br />Els valors incorrectes es ressaltaran amb un marc vermell.';
diff --git a/lib/plugins/config/lang/cs/intro.txt b/lib/plugins/config/lang/cs/intro.txt
index 63381b84e..f98a62a6e 100644
--- a/lib/plugins/config/lang/cs/intro.txt
+++ b/lib/plugins/config/lang/cs/intro.txt
@@ -5,4 +5,3 @@ Tuto stránku můžete používat ke správě nastavení vaší instalace DokuWi
Položky se světle červeným pozadím jsou chráněné a nelze je upravovat tímto pluginem. Položky s modrým pozadím jsou výchozí hodnoty a položky s bílým pozadím byly nastaveny lokálně v této konkrétní instalaci. Modré i bílé položky je možné upravovat.
Než opustíte tuto stránku, nezapomeňte stisknout tlačítko **Uložit**, jinak budou změny ztraceny.
-
diff --git a/lib/plugins/config/lang/da/intro.txt b/lib/plugins/config/lang/da/intro.txt
index f20961b98..14cd3d601 100644
--- a/lib/plugins/config/lang/da/intro.txt
+++ b/lib/plugins/config/lang/da/intro.txt
@@ -5,4 +5,3 @@ Brug denne side til at kontrollere indstillingerne for din Dokuwiki-opsætning.
Indstillinger vist med lys rød baggrund er beskyttede og kan ikke ændres med denne udvidelse. Indstillinger vist med blå baggrund er standardindstillinger og indstillinger vist med hvid baggrund er blevet sat lokalt denne konkrete opsætning. Både blå og hvide indstillinger kan ændres.
Husk at trykke på **Gem**-knappen før du forlader siden, for at du ikke mister dine ændringer.
-
diff --git a/lib/plugins/config/lang/de-informal/intro.txt b/lib/plugins/config/lang/de-informal/intro.txt
index df9845ebc..ce4625cff 100644
--- a/lib/plugins/config/lang/de-informal/intro.txt
+++ b/lib/plugins/config/lang/de-informal/intro.txt
@@ -4,4 +4,4 @@ Benutze diese Seite zur Kontrolle der Einstellungen deiner DokuWiki-Installation
Einstellungen die mit einem hellroten Hintergrund angezeigt werden, können mit dieser Erweiterung nicht verändert werden. Einstellungen mit einem blauen Hintergrund sind Standardwerte und Einstellungen mit einem weißen Hintergrund wurden lokal gesetzt für diese Installation. Sowohl blaue als auch weiße Einstellungen können angepasst werden.
-Denke dran **Speichern** zu drücken bevor du die Seite verlässt, andernfalls werden deine Änderungen nicht übernommen. \ No newline at end of file
+Denke dran **Speichern** zu drücken bevor du die Seite verlässt, andernfalls werden deine Änderungen nicht übernommen.
diff --git a/lib/plugins/config/lang/de/intro.txt b/lib/plugins/config/lang/de/intro.txt
index b79b5f871..e743379ff 100644
--- a/lib/plugins/config/lang/de/intro.txt
+++ b/lib/plugins/config/lang/de/intro.txt
@@ -5,6 +5,3 @@ Dieses Plugin hilft Ihnen bei der Konfiguration von DokuWiki. Hilfe zu den einze
Einstellungen mit einem hellroten Hintergrund sind gesichert und können nicht mit diesem Plugin verändert werden, Einstellungen mit hellblauem Hintergrund sind Voreinstellungen, weiß hinterlegte Felder zeigen lokal veränderte Werte an. Sowohl die blauen als auch die weißen Felder können verändert werden.
Bitte vergessen Sie nicht **Speichern** zu drücken bevor Sie die Seite verlassen, andernfalls gehen Ihre Änderungen verloren.
-
-
-
diff --git a/lib/plugins/config/lang/de/lang.php b/lib/plugins/config/lang/de/lang.php
index d398ebf84..f3ddefd9b 100644
--- a/lib/plugins/config/lang/de/lang.php
+++ b/lib/plugins/config/lang/de/lang.php
@@ -1,8 +1,8 @@
<?php
+
/**
- * German language file
- *
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
* @author Andreas Gohr <andi@splitbrain.org>
* @author Michael Klier <chi@chimeric.de>
* @author Leo Moll <leo@yeasoft.com>
@@ -18,6 +18,7 @@
* @author Pierre Corell <info@joomla-praxis.de>
* @author Matthias Schulte <dokuwiki@lupo49.de>
* @author Mateng Schimmerlos <mateng@firemail.de>
+ * @author Anika Henke <anika@selfthinker.org>
*/
$lang['menu'] = 'Konfiguration';
$lang['error'] = 'Die Einstellungen wurden wegen einer fehlerhaften Eingabe nicht gespeichert.<br /> Bitte überprüfen sie die rot umrandeten Eingaben und speichern Sie erneut.';
@@ -46,28 +47,29 @@ $lang['_network'] = 'Netzwerk';
$lang['_msg_setting_undefined'] = 'Keine Konfigurationsmetadaten.';
$lang['_msg_setting_no_class'] = 'Keine Konfigurationsklasse.';
$lang['_msg_setting_no_default'] = 'Kein Standardwert.';
-$lang['fmode'] = 'Berechtigungen für neue Dateien';
-$lang['dmode'] = 'Berechtigungen für neue Verzeichnisse';
-$lang['lang'] = 'Sprache';
-$lang['basedir'] = 'Installationsverzeichnis';
-$lang['baseurl'] = 'Installationspfad (URL)';
-$lang['savedir'] = 'Speicherverzeichnis';
-$lang['cookiedir'] = 'Cookiepfad. Frei lassen, um den gleichen Pfad wie "baseurl" zu benutzen.';
-$lang['start'] = 'Startseitenname';
$lang['title'] = 'Titel des Wikis';
+$lang['start'] = 'Startseitenname';
+$lang['lang'] = 'Sprache';
$lang['template'] = 'Designvorlage (Template)';
$lang['tagline'] = 'Tag-Linie (nur, wenn vom Template unterstützt)';
$lang['sidebar'] = 'Name der Sidebar-Seite (nur, wenn vom Template unterstützt), ein leeres Feld deaktiviert die Sidebar';
$lang['license'] = 'Unter welcher Lizenz sollen Ihre Inhalte veröffentlicht werden?';
-$lang['fullpath'] = 'Den kompletten Dateipfad im Footer anzeigen';
+$lang['savedir'] = 'Speicherverzeichnis';
+$lang['basedir'] = 'Installationsverzeichnis';
+$lang['baseurl'] = 'Installationspfad (URL)';
+$lang['cookiedir'] = 'Cookiepfad. Frei lassen, um den gleichen Pfad wie "baseurl" zu benutzen.';
+$lang['dmode'] = 'Berechtigungen für neue Verzeichnisse';
+$lang['fmode'] = 'Berechtigungen für neue Dateien';
+$lang['allowdebug'] = 'Debug-Ausgaben erlauben <b>Abschalten wenn nicht benötigt!</b>';
$lang['recent'] = 'Anzahl der Einträge in der Änderungsliste';
+$lang['recent_days'] = 'Wie viele letzte Änderungen sollen einsehbar bleiben? (Tage)';
$lang['breadcrumbs'] = 'Anzahl der Einträge im "Krümelpfad"';
$lang['youarehere'] = 'Hierarchische Pfadnavigation verwenden';
+$lang['fullpath'] = 'Den kompletten Dateipfad im Footer anzeigen';
$lang['typography'] = 'Typographische Ersetzungen';
-$lang['htmlok'] = 'HTML erlauben';
-$lang['phpok'] = 'PHP erlauben';
$lang['dformat'] = 'Datumsformat (Siehe PHP <a href="http://www.php.net/strftime">strftime</a> Funktion)';
$lang['signature'] = 'Signatur';
+$lang['showuseras'] = 'Was angezeigt werden soll, wenn der Benutzer, der zuletzt eine Seite bearbeitet hat, angezeigt wird';
$lang['toptoclevel'] = 'Inhaltsverzeichnis bei dieser Überschriftengröße beginnen';
$lang['tocminheads'] = 'Mindestanzahl der Überschriften die entscheidet, ob ein Inhaltsverzeichnis erscheinen soll';
$lang['maxtoclevel'] = 'Maximale Überschriftengröße für Inhaltsverzeichnis';
@@ -75,15 +77,8 @@ $lang['maxseclevel'] = 'Abschnitte bis zu dieser Stufe einzeln editier
$lang['camelcase'] = 'CamelCase-Verlinkungen verwenden';
$lang['deaccent'] = 'Seitennamen bereinigen';
$lang['useheading'] = 'Erste Überschrift als Seitennamen verwenden';
-$lang['refcheck'] = 'Auf Verwendung beim Löschen von Media-Dateien testen';
-$lang['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';
-$lang['mailguard'] = 'E-Mail-Adressen schützen';
-$lang['iexssprotect'] = 'Hochgeladene Dateien auf bösartigen JavaScript- und HTML-Code untersuchen';
-$lang['showuseras'] = 'Was angezeigt werden soll, wenn der Benutzer, der zuletzt eine Seite bearbeitet hat, angezeigt wird';
+$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['hidepages'] = 'Seiten verstecken (Regulärer Ausdruck)';
$lang['useacl'] = 'Zugangskontrolle verwenden';
$lang['autopasswd'] = 'Passwort automatisch generieren';
$lang['authtype'] = 'Authentifizierungsmechanismus';
@@ -92,63 +87,70 @@ $lang['defaultgroup'] = 'Standardgruppe';
$lang['superuser'] = 'Administrator - Eine Gruppe oder Benutzer mit vollem Zugriff auf alle Seiten und Administrationswerkzeuge.';
$lang['manager'] = 'Manager - Eine Gruppe oder Benutzer mit Zugriff auf einige Administrationswerkzeuge.';
$lang['profileconfirm'] = 'Profiländerung nur nach Passwortbestätigung';
+$lang['rememberme'] = 'Permanente Login-Cookies erlauben (Auf diesem Computer eingeloggt bleiben)';
$lang['disableactions'] = 'DokuWiki-Aktionen deaktivieren';
$lang['disableactions_check'] = 'Check';
$lang['disableactions_subscription'] = 'Seiten-Abonnements';
$lang['disableactions_wikicode'] = 'Quelltext betrachten/exportieren';
$lang['disableactions_profile_delete'] = 'Eigenes Benutzerprofil löschen';
$lang['disableactions_other'] = 'Andere Aktionen (durch Komma getrennt)';
-$lang['sneaky_index'] = 'Standardmäßig zeigt DokuWiki alle Namensräume in der Übersicht. Wenn diese Option aktiviert wird, werden alle Namensräume, für die der Benutzer keine Lese-Rechte hat, nicht angezeigt. Dies kann unter Umständen dazu führen, das lesbare Unter-Namensräume nicht angezeigt werden und macht die Übersicht evtl. unbrauchbar in Kombination mit bestimmten ACL Einstellungen.';
+$lang['disableactions_rss'] = 'XML-Syndikation (RSS)';
$lang['auth_security_timeout'] = 'Authentifikations-Timeout (Sekunden)';
$lang['securecookie'] = 'Sollen Cookies, die via HTTPS gesetzt wurden nur per HTTPS versendet werden? Deaktivieren Sie diese Option, wenn nur der Login Ihres Wikis mit SSL gesichert ist, aber das Betrachten des Wikis ungesichert geschieht.';
$lang['remote'] = 'Aktiviert den externen API-Zugang. Diese Option erlaubt es externen Anwendungen von außen auf die XML-RPC-Schnittstelle oder anderweitigen Schnittstellen zu zugreifen.';
$lang['remoteuser'] = 'Zugriff auf die externen Schnittstellen durch kommaseparierte Angabe von Benutzern oder Gruppen einschränken. Ein leeres Feld erlaubt Zugriff für jeden.';
-$lang['updatecheck'] = 'Automatisch auf Updates und Sicherheitswarnungen prüfen? DokuWiki muss sich dafür mit update.dokuwiki.org verbinden.';
-$lang['userewrite'] = 'URL rewriting';
-$lang['useslash'] = 'Schrägstrich (/) als Namensraumtrenner in URLs verwenden';
+$lang['usewordblock'] = 'Spam-Blocking benutzen';
+$lang['relnofollow'] = 'rel="nofollow" verwenden';
+$lang['indexdelay'] = 'Zeit bevor Suchmaschinenindexierung erlaubt ist';
+$lang['mailguard'] = 'E-Mail-Adressen schützen';
+$lang['iexssprotect'] = 'Hochgeladene Dateien auf bösartigen JavaScript- und HTML-Code untersuchen';
$lang['usedraft'] = 'Während des Bearbeitens automatisch Zwischenentwürfe speichern';
-$lang['sepchar'] = 'Worttrenner für Seitennamen in URLs';
-$lang['canonical'] = 'Immer Links mit vollständigen URLs erzeugen';
-$lang['fnencode'] = 'Methode um nicht-ASCII Dateinamen zu kodieren.';
-$lang['autoplural'] = 'Bei Links automatisch nach vorhandenen Pluralformen suchen';
-$lang['compression'] = 'Komprimierungsmethode für alte Seitenrevisionen';
-$lang['cachetime'] = 'Maximale Cachespeicherung (Sekunden)';
+$lang['htmlok'] = 'HTML erlauben';
+$lang['phpok'] = 'PHP erlauben';
$lang['locktime'] = 'Maximales Alter für Seitensperren (Sekunden)';
+$lang['cachetime'] = 'Maximale Cachespeicherung (Sekunden)';
+$lang['target____wiki'] = 'Zielfenster für interne Links (target Attribut)';
+$lang['target____interwiki'] = 'Zielfenster für InterWiki-Links (target Attribut)';
+$lang['target____extern'] = 'Zielfenster für Externe Links (target Attribut)';
+$lang['target____media'] = 'Zielfenster für (Bild-)Dateien (target Attribut)';
+$lang['target____windows'] = 'Zielfenster für Windows Freigaben (target Attribut)';
+$lang['mediarevisions'] = 'Media-Revisionen (ältere Versionen) aktivieren?';
+$lang['refcheck'] = 'Auf Verwendung beim Löschen von Media-Dateien testen';
+$lang['gdlib'] = 'GD Lib Version';
+$lang['im_convert'] = 'Pfad zum ImageMagicks-Konvertierwerkzeug';
+$lang['jpg_quality'] = 'JPEG Kompressionsqualität (0-100)';
$lang['fetchsize'] = 'Maximale Größe (in Bytes), die fetch.php von extern herunterladen darf';
+$lang['subscribers'] = 'E-Mail-Abos zulassen';
+$lang['subscribe_time'] = 'Zeit nach der Zusammenfassungs- und Änderungslisten-E-Mails verschickt werden; Dieser Wert sollte kleiner als die in recent_days konfigurierte Zeit sein.';
$lang['notify'] = 'Änderungsmitteilungen an diese E-Mail-Adresse versenden';
$lang['registernotify'] = 'Information über neu registrierte Benutzer an diese E-Mail-Adresse senden';
$lang['mailfrom'] = 'Absender-E-Mail-Adresse für automatische Mails';
$lang['mailprefix'] = 'Präfix für E-Mail-Betreff beim automatischen Versand von Benachrichtigungen';
$lang['htmlmail'] = 'Versendet optisch angenehmere, aber größere E-Mails im HTML-Format (multipart). Deaktivieren, um Text-Mails zu versenden.';
+$lang['sitemap'] = 'Google Sitemap erzeugen (Tage)';
+$lang['rss_type'] = 'XML-Feed-Format';
+$lang['rss_linkto'] = 'XML-Feed verlinken auf';
+$lang['rss_content'] = 'Welche Inhalte sollen im XML-Feed dargestellt werden?';
+$lang['rss_update'] = 'XML-Feed Aktualisierungsintervall (Sekunden)';
+$lang['rss_show_summary'] = 'Bearbeitungs-Zusammenfassung im XML-Feed anzeigen';
+$lang['rss_media'] = 'Welche Änderungen sollen im XML-Feed angezeigt werden?';
+$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';
+$lang['sepchar'] = 'Worttrenner für Seitennamen in URLs';
+$lang['canonical'] = 'Immer Links mit vollständigen URLs erzeugen';
+$lang['fnencode'] = 'Methode um nicht-ASCII Dateinamen zu kodieren.';
+$lang['autoplural'] = 'Bei Links automatisch nach vorhandenen Pluralformen suchen';
+$lang['compression'] = 'Komprimierungsmethode für alte Seitenrevisionen';
$lang['gzip_output'] = 'Seiten mit gzip komprimiert ausliefern';
-$lang['gdlib'] = 'GD Lib Version';
-$lang['im_convert'] = 'Pfad zum ImageMagicks-Konvertierwerkzeug';
-$lang['jpg_quality'] = 'JPEG Kompressionsqualität (0-100)';
-$lang['subscribers'] = 'E-Mail-Abos zulassen';
-$lang['subscribe_time'] = 'Zeit nach der Zusammenfassungs- und Änderungslisten-E-Mails verschickt werden; Dieser Wert sollte kleiner als die in recent_days konfigurierte Zeit sein.';
$lang['compress'] = 'JavaScript und Stylesheets komprimieren';
$lang['cssdatauri'] = 'Größe in Bytes, bis zu der Bilder in CSS-Dateien referenziert werden können, um HTTP-Anfragen zu minimieren. Diese Technik funktioniert nicht im IE 7 und älter! Empfohlene Einstellung: <code>400</code> to <code>600</code> Bytes. Setzen Sie die Einstellung auf <code>0</code> um die Funktion zu deaktivieren.';
-$lang['hidepages'] = 'Seiten verstecken (Regulärer Ausdruck)';
$lang['send404'] = 'Bei nicht vorhandenen Seiten mit 404 Fehlercode antworten';
-$lang['sitemap'] = 'Google Sitemap erzeugen (Tage)';
$lang['broken_iua'] = 'Falls die Funktion ignore_user_abort auf Ihrem System nicht funktioniert, könnte der Such-Index nicht funktionieren. IIS+PHP/CGI ist bekannt dafür. Siehe auch <a href="http://bugs.splitbrain.org/?do=details&amp;task_id=852">Bug 852</a>.';
$lang['xsendfile'] = 'Den X-Sendfile-Header nutzen, um Dateien direkt vom Webserver ausliefern zu lassen? Ihr Webserver muss dies unterstützen!';
$lang['renderer_xhtml'] = 'Standard-Renderer für die normale (XHTML) Wiki-Ausgabe.';
$lang['renderer__core'] = '%s (DokuWiki Kern)';
$lang['renderer__plugin'] = '%s (Plugin)';
-$lang['rememberme'] = 'Permanente Login-Cookies erlauben (Auf diesem Computer eingeloggt bleiben)';
-$lang['rss_type'] = 'XML-Feed-Format';
-$lang['rss_linkto'] = 'XML-Feed verlinken auf';
-$lang['rss_content'] = 'Welche Inhalte sollen im XML-Feed dargestellt werden?';
-$lang['rss_update'] = 'XML-Feed Aktualisierungsintervall (Sekunden)';
-$lang['recent_days'] = 'Wie viele letzte Änderungen sollen einsehbar bleiben? (Tage)';
-$lang['rss_show_summary'] = 'Bearbeitungs-Zusammenfassung im XML-Feed anzeigen';
-$lang['rss_media'] = 'Welche Änderungen sollen im XML-Feed angezeigt werden?';
-$lang['target____wiki'] = 'Zielfenster für interne Links (target Attribut)';
-$lang['target____interwiki'] = 'Zielfenster für InterWiki-Links (target Attribut)';
-$lang['target____extern'] = 'Zielfenster für Externe Links (target Attribut)';
-$lang['target____media'] = 'Zielfenster für (Bild-)Dateien (target Attribut)';
-$lang['target____windows'] = 'Zielfenster für Windows Freigaben (target Attribut)';
$lang['dnslookups'] = 'DokuWiki löst die IP-Adressen von Benutzern zu deren Hostnamen auf. Wenn du einen langsamen, unbrauchbaren DNS-Server verwendest oder die Funktion nicht benötigst, dann sollte diese Option deaktiviert sein.';
$lang['proxy____host'] = 'Proxy-Server';
$lang['proxy____port'] = 'Proxy-Port';
@@ -197,6 +199,7 @@ $lang['xsendfile_o_2'] = 'Standard X-Sendfile-Header';
$lang['xsendfile_o_3'] = 'Proprietärer Nginx X-Accel-Redirect-Header';
$lang['showuseras_o_loginname'] = 'Login-Name';
$lang['showuseras_o_username'] = 'Vollständiger Name des Benutzers';
+$lang['showuseras_o_username_link'] = 'Kompletter Name des Benutzers als Interwiki-Link';
$lang['showuseras_o_email'] = 'E-Mail-Adresse des Benutzers (je nach Mailguard-Einstellung verschleiert)';
$lang['showuseras_o_email_link'] = 'E-Mail-Adresse des Benutzers als mailto:-Link';
$lang['useheading_o_0'] = 'Nie';
diff --git a/lib/plugins/config/lang/en/intro.txt b/lib/plugins/config/lang/en/intro.txt
index 7cf46cee3..01089871c 100644
--- a/lib/plugins/config/lang/en/intro.txt
+++ b/lib/plugins/config/lang/en/intro.txt
@@ -5,5 +5,3 @@ Use this page to control the settings of your DokuWiki installation. For help o
Settings shown with a light red background are protected and can not be altered with this plugin. Settings shown with a blue background are the default values and settings shown with a white background have been set locally for this particular installation. Both blue and white settings can be altered.
Remember to press the **Save** button before leaving this page otherwise your changes will be lost.
-
-
diff --git a/lib/plugins/config/lang/eo/lang.php b/lib/plugins/config/lang/eo/lang.php
index 440d771dc..566da0d2d 100644
--- a/lib/plugins/config/lang/eo/lang.php
+++ b/lib/plugins/config/lang/eo/lang.php
@@ -137,7 +137,7 @@ $lang['compress'] = 'Kompaktigi CSS-ajn kaj ĵavaskriptajn elmetojn
$lang['cssdatauri'] = 'Grandeco en bitokoj, ĝis kiom en CSS-dosieroj referencitaj bildoj enmetiĝu rekte en la stilfolion por malgrandigi vanan HTTP-kapan trafikon. Tiu tekniko ne funkcias en IE 7 aŭ pli frua!
<code>400</code> ĝis <code>600</code> bitokoj estas bona grandeco. Indiku <code>0</code> por malebligi enmeton.';
$lang['send404'] = 'Sendi la mesaĝon "HTTP 404/Paĝo ne trovita" por ne ekzistantaj paĝoj';
-$lang['broken_iua'] = 'Ĉu la funkcio "ignore_user_abort" difektas en via sistemo? Tio povus misfunkciigi la serĉindekson. IIS+PHP/CGI estas konata kiel fuŝaĵo. Vidu <a href="http://bugs.splitbrain.org/?do=details&task_id=852&">Cimon 852</a> por pli da informoj.';
+$lang['broken_iua'] = 'Ĉu la funkcio "ignore_user_abort" difektas en via sistemo? Tio povus misfunkciigi la serĉindekson. IIS+PHP/CGI estas konata kiel fuŝaĵo. Vidu <a href="http://bugs.splitbrain.org/?do=details&amp;task_id=852">Cimon 852</a> por pli da informoj.';
$lang['xsendfile'] = 'Ĉu uzi la kaplinion X-Sendfile por ebligi al la retservilo liveri fiksajn dosierojn? Via retservilo subtenu tion.';
$lang['renderer_xhtml'] = 'Prezentilo por la ĉefa vikia rezulto (xhtml)';
$lang['renderer__core'] = '%s (DokuWiki-a kerno)';
diff --git a/lib/plugins/config/lang/es/lang.php b/lib/plugins/config/lang/es/lang.php
index 847b326a8..74946bde8 100644
--- a/lib/plugins/config/lang/es/lang.php
+++ b/lib/plugins/config/lang/es/lang.php
@@ -1,8 +1,8 @@
<?php
+
/**
- * spanish language file
- *
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
* @author Miguel Pagano <miguel.pagano@gmail.com>
* @author Oscar M. Lage <r0sk10@gmail.com>
* @author Gabriel Castillo <gch@pumas.ii.unam.mx>
@@ -24,6 +24,7 @@
* @author Ruben Figols <ruben.figols@gmail.com>
* @author Gerardo Zamudio <gerardo@gerardozamudio.net>
* @author Mercè López mercelz@gmail.com
+ * @author Domingo Redal <docxml@gmail.com>
*/
$lang['menu'] = 'Parámetros de configuración';
$lang['error'] = 'Los parámetros no han sido actualizados a causa de un valor inválido, por favor revise los cambios y re-envíe el formulario. <br /> Los valores incorrectos se mostrarán con un marco rojo alrededor.';
@@ -97,7 +98,9 @@ $lang['disableactions'] = 'Deshabilitar acciones DokuWiki';
$lang['disableactions_check'] = 'Controlar';
$lang['disableactions_subscription'] = 'Suscribirse/Cancelar suscripción';
$lang['disableactions_wikicode'] = 'Ver la fuente/Exportar en formato raw';
+$lang['disableactions_profile_delete'] = 'Borrar tu propia cuenta';
$lang['disableactions_other'] = 'Otras acciones (separadas por coma)';
+$lang['disableactions_rss'] = 'Sindicación XML (RSS)';
$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['remote'] = 'Activar el sistema API remoto. Esto permite a otras aplicaciones acceder al wiki a traves de XML-RPC u otros mecanismos.';
@@ -202,6 +205,7 @@ $lang['xsendfile_o_2'] = 'Encabezado X-Sendfile estándar';
$lang['xsendfile_o_3'] = 'Encabezado propietario Nginx X-Accel-Redirect';
$lang['showuseras_o_loginname'] = 'Nombre de entrada';
$lang['showuseras_o_username'] = 'Nombre completo del usuario';
+$lang['showuseras_o_username_link'] = 'Nombre completo del usuario como enlace de usuario interwiki';
$lang['showuseras_o_email'] = 'Dirección de correo electrónico del usuario (ofuscada según la configuración de "mailguard")';
$lang['showuseras_o_email_link'] = 'Dirección de correo de usuario como enlace de envío de correo';
$lang['useheading_o_0'] = 'Nunca';
diff --git a/lib/plugins/config/lang/fa/intro.txt b/lib/plugins/config/lang/fa/intro.txt
index f5b6ba235..31bbaea98 100644
--- a/lib/plugins/config/lang/fa/intro.txt
+++ b/lib/plugins/config/lang/fa/intro.txt
@@ -5,4 +5,4 @@
تنظیماتی که با پیش‌زمینه‌ی قرمز مشخص شده‌اند، غیرقابل تغییر می‌باشند. تنظیماتی که به پیش‌زمینه‌ی آبی مشخص شده‌اند نیز حامل مقادیر پیش‌فرض می‌باشند و تنظیماتی که پیش‌زمینه‌ی سفید دارند به طور محلی برای این سیستم تنظیم شده‌اند. تمامی مقادیر آبی و سفید قابلیت تغییر دارند.
-به یاد داشته باشید که قبل از ترک صفحه، دکمه‌ی **ذخیره** را بفشارید، در غیر این صورت تنظیمات شما از بین خواهد رفت. \ No newline at end of file
+به یاد داشته باشید که قبل از ترک صفحه، دکمه‌ی **ذخیره** را بفشارید، در غیر این صورت تنظیمات شما از بین خواهد رفت.
diff --git a/lib/plugins/config/lang/fi/intro.txt b/lib/plugins/config/lang/fi/intro.txt
index f6eedb50c..2765a18af 100644
--- a/lib/plugins/config/lang/fi/intro.txt
+++ b/lib/plugins/config/lang/fi/intro.txt
@@ -4,4 +4,4 @@ Käytä tätä sivua hallitaksesi DokuWikisi asetuksia. Apua yksittäisiin asetu
Asetukset, jotka näkyvät vaaleanpunaisella taustalla ovat suojattuja, eikä niitä voi muutta tämän liitännäisen avulla. Asetukset, jotka näkyvät sinisellä taustalla ovat oletusasetuksia. Asetukset valkoisella taustalla ovat asetettu paikallisesti tätä asennusta varten. Sekä sinisiä että valkoisia asetuksia voi muokata.
-Muista painaa **TALLENNA**-nappia ennen kuin poistut sivulta. Muuten muutoksesi häviävät. \ No newline at end of file
+Muista painaa **TALLENNA**-nappia ennen kuin poistut sivulta. Muuten muutoksesi häviävät.
diff --git a/lib/plugins/config/lang/fr/intro.txt b/lib/plugins/config/lang/fr/intro.txt
index 3d71f6184..afc5805d8 100644
--- a/lib/plugins/config/lang/fr/intro.txt
+++ b/lib/plugins/config/lang/fr/intro.txt
@@ -5,5 +5,3 @@ Utilisez cette page pour contrôler les paramètres de votre installation de Dok
Les paramètres affichés sur un fond rouge sont protégés et ne peuvent être modifiés avec cette extension. Les paramètres affichés sur un fond bleu sont les valeurs par défaut et les valeurs spécifiquement définies pour votre installation sont affichées sur un fond blanc. Seuls les paramètres sur fond bleu ou blanc peuvent être modifiés.
N'oubliez pas d'utiliser le bouton **ENREGISTRER** avant de quitter cette page, sinon vos modifications ne seront pas prises en compte !
-
-
diff --git a/lib/plugins/config/lang/fr/lang.php b/lib/plugins/config/lang/fr/lang.php
index e92144b22..69e58f731 100644
--- a/lib/plugins/config/lang/fr/lang.php
+++ b/lib/plugins/config/lang/fr/lang.php
@@ -1,8 +1,8 @@
<?php
+
/**
- * french language file
- *
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
* @author Guy Brand <gb@unistra.fr>
* @author Delassaux Julien <julien@delassaux.fr>
* @author Maurice A. LeBlanc <leblancma@cooptel.qc.ca>
@@ -21,6 +21,9 @@
* @author Olivier DUVAL <zorky00@gmail.com>
* @author Anael Mobilia <contrib@anael.eu>
* @author Bruno Veilleux <bruno.vey@gmail.com>
+ * @author Carbain Frédéric <fcarbain@yahoo.fr>
+ * @author Nicolas Friedli <nicolas@theologique.ch>
+ * @author Floriang <antispam@floriang.eu>
*/
$lang['menu'] = 'Paramètres de configuration';
$lang['error'] = 'Paramètres non modifiés en raison d\'une valeur invalide, vérifiez vos réglages puis réessayez. <br />Les valeurs erronées sont entourées d\'une bordure rouge.';
@@ -94,7 +97,9 @@ $lang['disableactions'] = 'Actions à désactiver dans DokuWiki';
$lang['disableactions_check'] = 'Vérifier';
$lang['disableactions_subscription'] = 'Abonnement aux pages';
$lang['disableactions_wikicode'] = 'Afficher le texte source';
+$lang['disableactions_profile_delete'] = 'Supprimer votre propre compte';
$lang['disableactions_other'] = 'Autres actions (séparées par des virgules)';
+$lang['disableactions_rss'] = 'Syndication XML (RSS)';
$lang['auth_security_timeout'] = 'Délai d\'expiration de sécurité (secondes)';
$lang['securecookie'] = 'Les cookies définis via HTTPS doivent-ils n\'être envoyé par le navigateur que via HTTPS ? Désactivez cette option lorsque seule la connexion à votre wiki est sécurisée avec SSL et que la navigation sur le wiki est effectuée de manière non sécurisée.';
$lang['remote'] = 'Active l\'API système distante. Ceci permet à d\'autres applications d\'accéder au wiki via XML-RPC ou d\'autres mécanismes.';
@@ -200,6 +205,7 @@ $lang['xsendfile_o_2'] = 'Entête standard X-Sendfile';
$lang['xsendfile_o_3'] = 'En-tête propriétaire Nginx X-Accel-Redirect';
$lang['showuseras_o_loginname'] = 'Identifiant de l\'utilisateur';
$lang['showuseras_o_username'] = 'Nom de l\'utilisateur';
+$lang['showuseras_o_username_link'] = 'Nom complet de l\'utilisateur en tant que lien interwiki';
$lang['showuseras_o_email'] = 'Courriel de l\'utilisateur (brouillé suivant les paramètres de brouillage sélectionnés)';
$lang['showuseras_o_email_link'] = 'Courriel de l\'utilisateur en tant que lien mailto:';
$lang['useheading_o_0'] = 'Jamais';
diff --git a/lib/plugins/config/lang/he/intro.txt b/lib/plugins/config/lang/he/intro.txt
index 010c69018..d61a93861 100644
--- a/lib/plugins/config/lang/he/intro.txt
+++ b/lib/plugins/config/lang/he/intro.txt
@@ -5,5 +5,3 @@
הגדרות עם רקע אדום-בהיר מוגנות ואין אפשרות לשנותן עם תוסף זה. הגדרות עם רקע כחול הן בעלות ערך ברירת המחדל והגדרות עם רקע לבן הוגדרו באופן מקומי עבור התקנה זו. ההגדרות בעלות הרקעים הכחול והלבן הן ברות שינוי.
יש לזכור ללחוץ על כפתור ה**שמירה** טרם עזיבת דף זה פן יאבדו השינויים.
-
-
diff --git a/lib/plugins/config/lang/ia/intro.txt b/lib/plugins/config/lang/ia/intro.txt
index 37b970c4f..eb2e10591 100644
--- a/lib/plugins/config/lang/ia/intro.txt
+++ b/lib/plugins/config/lang/ia/intro.txt
@@ -4,4 +4,4 @@ Usa iste pagina pro controlar le configurationes de tu installation de DokuWiki.
Le configurationes monstrate super un fundo rubie clar es protegite e non pote esser alterate con iste plug-in. Le configurationes monstrate super un fundo blau es le valores predefinite e le configurationes monstrate super un fundo blanc ha essite definite localmente pro iste particular installation. Le configurationes blau e blanc pote esser alterate.
-Rememora de premer le button **SALVEGUARDAR** ante de quitar iste pagina, alteremente tu modificationes essera perdite. \ No newline at end of file
+Rememora de premer le button **SALVEGUARDAR** ante de quitar iste pagina, alteremente tu modificationes essera perdite.
diff --git a/lib/plugins/config/lang/it/intro.txt b/lib/plugins/config/lang/it/intro.txt
index 617e8c7b5..02984baa7 100644
--- a/lib/plugins/config/lang/it/intro.txt
+++ b/lib/plugins/config/lang/it/intro.txt
@@ -5,5 +5,3 @@ Usa questa pagina per gestire la configurazione della tua installazione DokuWiki
Le impostazioni con lo sfondo rosso chiaro sono protette e non possono essere modificate con questo plugin. Le impostazioni con lo sfondo blu contengono i valori predefiniti, e le impostazioni con lo sfondo bianco sono relative solo a questa particolare installazione. Sia le impostazioni su sfondo blu che quelle su sfondo bianco possono essere modificate.
Ricordati di premere il pulsante **SALVA** prima di lasciare questa pagina altrimenti le modifiche andranno perse.
-
-
diff --git a/lib/plugins/config/lang/ja/intro.txt b/lib/plugins/config/lang/ja/intro.txt
index 0c45471c6..4d98dd3ed 100644
--- a/lib/plugins/config/lang/ja/intro.txt
+++ b/lib/plugins/config/lang/ja/intro.txt
@@ -1,9 +1,11 @@
====== 設定管理 ======
-この画面で、Dokuwikiの設定を管理することが出来ます。 個々の設定に関しては [[doku>config]] を参照してください。 このプラグインに関する詳細な情報は [[doku>plugin:config]] を参照してください。
-
-背景が薄い赤になっている場合、その設定は変更することが出来ません。 背景が青の値はデフォルト、背景が白の値は現在の設定となっており、 どちらの値も変更が可能です。
-
-設定の変更後は必ず **保存** ボタンを押して変更を確定してください。 ボタンを押さなかった場合、変更は破棄されます。
+この画面で、Dokuwikiの設定を管理することが出来ます。
+個々の設定に関しては[[doku>ja:config|DokuWiki の設定]]を参照してください。
+このプラグインに関する詳細な情報は[[doku>ja:plugin:config|設定管理プラグイン]]を参照してください。
+背景が薄い赤の場合、その設定は変更することが出来ません。
+背景が青の場合はデフォルト設定、背景が白の場合はサイト固有の設定になっており、どちら設定も変更が可能です。
+設定の変更後は必ず **保存** ボタンを押して変更を確定してください。
+ボタンを押さなかった場合、変更は破棄されます。
diff --git a/lib/plugins/config/lang/ja/lang.php b/lib/plugins/config/lang/ja/lang.php
index e8cf8227b..587b2b4ee 100644
--- a/lib/plugins/config/lang/ja/lang.php
+++ b/lib/plugins/config/lang/ja/lang.php
@@ -1,8 +1,8 @@
<?php
+
/**
- * japanese language file
- *
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
* @author Yuji Takenaka <webmaster@davilin.com>
* @author Christopher Smith <chris@jalakai.co.uk>
* @author Ikuo Obataya <i.obataya@gmail.com>
@@ -10,6 +10,7 @@
* @author Kazutaka Miyasaka <kazmiya@gmail.com>
* @author Taisuke Shimamoto <dentostar@gmail.com>
* @author Satoshi Sahara <sahara.satoshi@gmail.com>
+ * @author Hideaki SAWADA <chuno@live.jp>
*/
$lang['menu'] = 'サイト設定';
$lang['error'] = '不正な値が存在するため、設定は更新されませんでした。入力値を確認してから、再度更新してください。
@@ -85,7 +86,9 @@ $lang['disableactions'] = 'DokuWiki の動作を無効にする';
$lang['disableactions_check'] = 'チェック';
$lang['disableactions_subscription'] = '登録 / 解除';
$lang['disableactions_wikicode'] = 'ソース閲覧 / 生データ出力';
+$lang['disableactions_profile_delete'] = '自分のアカウントの抹消';
$lang['disableactions_other'] = 'その他の動作(カンマ区切り)';
+$lang['disableactions_rss'] = 'XML 配信(RSS)';
$lang['auth_security_timeout'] = '認証タイムアウト設定(秒)';
$lang['securecookie'] = 'クッキーをHTTPSにてセットする場合は、ブラウザよりHTTPS経由で送信された場合にみに制限しますか?ログインのみをSSLで行う場合は、この機能を無効にしてください。';
$lang['remote'] = 'リモートAPIを有効化します。有効化するとXML-RPCまたは他の手段でwikiにアプリケーションがアクセスすることを許可します。';
@@ -190,6 +193,7 @@ $lang['xsendfile_o_2'] = '標準 X-Sendfile ヘッダー';
$lang['xsendfile_o_3'] = 'Nginx X-Accel-Redirect ヘッダー';
$lang['showuseras_o_loginname'] = 'ログイン名';
$lang['showuseras_o_username'] = 'ユーザーのフルネーム';
+$lang['showuseras_o_username_link'] = 'user という InterWiki リンクになったユーザーのフルネーム';
$lang['showuseras_o_email'] = 'ユーザーのメールアドレス(メールガード設定による難読化)';
$lang['showuseras_o_email_link'] = 'ユーザーのメールアドレスをリンクにする';
$lang['useheading_o_0'] = '使用しない';
diff --git a/lib/plugins/config/lang/ko/intro.txt b/lib/plugins/config/lang/ko/intro.txt
index 979bbcb14..b05264a64 100644
--- a/lib/plugins/config/lang/ko/intro.txt
+++ b/lib/plugins/config/lang/ko/intro.txt
@@ -1,8 +1,7 @@
====== 환경 설정 관리자 ======
-도쿠위키를 설치할 때 설정을 바꾸려면 이 페이지를 사용하세요. 개별 설정에 대한 도움말은 [[doku>ko:config]]를 참고하세요. 이 플러그인에 대한 자세한 내용은 [[doku>ko:plugin:config]]를 참고하세요.
+설치된 도쿠위키의 설정을 제어하려면 이 페이지를 사용하세요. 개별 설정에 대한 도움말은 [[doku>ko:config]]를 참조하세요. 이 플러그인에 대한 자세한 내용은 [[doku>ko:plugin:config]]를 참조하세요.
-밝은 빨간색 배경으로 보이는 설정은 이 플러그인에서 바꿀 수 없도록 보호되어 있습니다. 파란색 배경으로 보이는 설정은 기본값이며 하얀색 배경으로 보이는 설정은 특수한 설치를 위해 로컬로 설정되어 있습니다. 파란색과 하얀색 배경으로 된 설정은 바꿀 수 있습니다.
-
-이 페이지를 떠나기 전에 **저장** 버튼을 누르지 않으면 바뀜이 사라지는 것에 주의하세요.
+밝은 빨간색 배경으로 보이는 설정은 이 플러그인으로 바꿀 수 없도록 보호되어 있습니다. 파란색 배경으로 보이는 설정은 기본값이며 하얀색 배경으로 보이는 설정은 특정 설치에 대해 로컬로 설정되어 있습니다. 파란색과 하얀색 배경으로 된 설정은 바꿀 수 있습니다.
+이 페이지를 떠나기 전에 **저장** 버튼을 누르지 않으면 바뀜이 사라지는 것에 주의하세요. \ No newline at end of file
diff --git a/lib/plugins/config/lang/ko/lang.php b/lib/plugins/config/lang/ko/lang.php
index 0cdaca90d..420946f84 100644
--- a/lib/plugins/config/lang/ko/lang.php
+++ b/lib/plugins/config/lang/ko/lang.php
@@ -1,8 +1,8 @@
<?php
+
/**
- * Korean language file
- *
- * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
* @author jk Lee
* @author dongnak@gmail.com
* @author Song Younghwan <purluno@gmail.com>
@@ -11,189 +11,191 @@
* @author Myeongjin <aranet100@gmail.com>
*/
$lang['menu'] = '환경 설정';
-$lang['error'] = '잘못된 값 때문에 설정을 바꿀 수 없습니다. 바뀜을 검토하고 확인을 누르세요.
-<br />잘못된 값은 빨간 선으로 둘러싸여 있습니다.';
+$lang['error'] = '잘못된 값 때문에 설정을 바꿀 수 없습니다, 바뀜을 검토하고 다시 제출하세요.
+ <br />잘못된 값은 빨간 선으로 둘러싸여 보여집니다.';
$lang['updated'] = '설정이 성공적으로 바뀌었습니다.';
-$lang['nochoice'] = '(다른 선택이 불가능합니다)';
-$lang['locked'] = '환경 설정 파일을 바꿀 수 없습니다. 의도한 행동이 아니라면,<br />
-파일 이름과 권한이 맞는지 확인하세요.';
-$lang['danger'] = '위험: 이 옵션을 잘못 바꾸면 환경 설정 메뉴를 사용할 수 없을 수도 있습니다.';
-$lang['warning'] = '경고: 이 옵션을 잘못 바꾸면 잘못 동작할 수 있습니다.';
-$lang['security'] = '보안 경고: 이 옵션은 보안에 위험이 있을 수 있습니다.';
+$lang['nochoice'] = '(다른 선택은 할 수 없습니다)';
+$lang['locked'] = '설정 파일을 바꿀 수 없습니다, 의도하지 않았다면, <br />
+ 로컬 설정 파일 이름과 권한이 맞는지 확인하세요.';
+$lang['danger'] = '위험: 이 옵션을 바꾸면 위키와 환경 설정 메뉴에 접근할 수 없을 수도 있습니다.';
+$lang['warning'] = '경고: 이 옵션을 바꾸면 의도하지 않는 동작을 일으킬 수 있습니다.';
+$lang['security'] = '보안 경고: 이 옵션을 바꾸면 보안 위험이 있을 수 있습니다.';
$lang['_configuration_manager'] = '환경 설정 관리자';
-$lang['_header_dokuwiki'] = '도쿠위키 설정';
-$lang['_header_plugin'] = '플러그인 설정';
-$lang['_header_template'] = '템플릿 설정';
+$lang['_header_dokuwiki'] = '도쿠위키';
+$lang['_header_plugin'] = '플러그인';
+$lang['_header_template'] = '템플릿';
$lang['_header_undefined'] = '정의되지 않은 설정';
-$lang['_basic'] = '기본 설정';
-$lang['_display'] = '화면 표시 설정';
-$lang['_authentication'] = '인증 설정';
-$lang['_anti_spam'] = '스팸 방지 설정';
-$lang['_editing'] = '편집 설정';
-$lang['_links'] = '링크 설정';
-$lang['_media'] = '미디어 설정';
-$lang['_notifications'] = '알림 설정';
-$lang['_syndication'] = '신디케이션 설정';
-$lang['_advanced'] = '고급 설정';
-$lang['_network'] = '네트워크 설정';
-$lang['_msg_setting_undefined'] = '설정된 메타데이터가 없습니다.';
-$lang['_msg_setting_no_class'] = '설정된 클래스가 없습니다.';
+$lang['_basic'] = '기본';
+$lang['_display'] = '보이기';
+$lang['_authentication'] = '인증';
+$lang['_anti_spam'] = '스팸 방지';
+$lang['_editing'] = '편집';
+$lang['_links'] = '링크';
+$lang['_media'] = '미디어';
+$lang['_notifications'] = '알림';
+$lang['_syndication'] = '신디케이션 (RSS)';
+$lang['_advanced'] = '고급';
+$lang['_network'] = '네트워크';
+$lang['_msg_setting_undefined'] = '설정에 메타데이터가 없습니다.';
+$lang['_msg_setting_no_class'] = '설정에 클래스가 없습니다.';
$lang['_msg_setting_no_default'] = '기본값이 없습니다.';
$lang['title'] = '위키 제목 (위키 이름)';
-$lang['start'] = '각 이름공간에서 사용할 시작 문서 이름';
+$lang['start'] = '각 이름공간에 시작점으로 사용할 문서 이름';
$lang['lang'] = '인터페이스 언어';
$lang['template'] = '템플릿 (위키 디자인)';
-$lang['tagline'] = '태그 라인 (템플릿이 지원할 때에 한함)';
-$lang['sidebar'] = '사이드바 문서 이름 (템플릿이 지원할 때에 한함), 비워두면 사이드바를 비활성화';
-$lang['license'] = '내용에 어떤 라이선스를 적용하겠습니까?';
-$lang['savedir'] = '데이터 저장 디렉터리';
-$lang['basedir'] = '서버 경로 (예를 들어 <code>/dokuwiki/</code>). 자동 감지를 하려면 비우세요.';
-$lang['baseurl'] = '서버 URL (예를 들어 <code>http://www.yourserver.com</code>). 자동 감지를 하려면 비우세요.';
-$lang['cookiedir'] = '쿠키 위치. 비워두면 기본 URL 위치로 지정됩니다.';
+$lang['tagline'] = '태그라인 (템플릿이 지원할 경우)';
+$lang['sidebar'] = '사이드바 문서 이름 (템플릿이 지원할 경우), 필드를 비우면 사이드바를 비활성화';
+$lang['license'] = '내용을 배포할 때 어떤 라이선스에 따라야 합니까?';
+$lang['savedir'] = '데이터를 저장할 디렉터리';
+$lang['basedir'] = '서버 경로 (예 <code>/dokuwiki/</code>). 자동 감지를 하려면 비워 두세요.';
+$lang['baseurl'] = '서버 URL (예 <code>http://www.yourserver.com</code>). 자동 감지를 하려면 비워 두세요.';
+$lang['cookiedir'] = '쿠키 경로. 기본 URL 위치로 지정하려면 비워 두세요.';
$lang['dmode'] = '디렉터리 만들기 모드';
$lang['fmode'] = '파일 만들기 모드';
-$lang['allowdebug'] = '디버그 허용 <b>필요하지 않으면 비활성화하세요!</b>';
-$lang['recent'] = '최근 바뀐 문서당 항목 수';
-$lang['recent_days'] = '최근 바뀐 문서 기준 시간 (일)';
-$lang['breadcrumbs'] = '위치 "추적" 수. 0으로 설정하면 비활성화합니다.';
-$lang['youarehere'] = '계층형 위치 추적 (다음 위의 옵션을 비활성화하게 됩니다)';
-$lang['fullpath'] = '문서 하단에 전체 경로 보여주기';
-$lang['typography'] = '기호 대체';
-$lang['dformat'] = '날짜 형식 (PHP <a href="http://www.php.net/strftime">strftime</a> 기능 참고)';
+$lang['allowdebug'] = '디버그 허용. <b>필요하지 않으면 비활성화하세요!</b>';
+$lang['recent'] = '최근 바뀜에서 문서당 항목 수';
+$lang['recent_days'] = '최근 바뀜을 유지할 기한 (일)';
+$lang['breadcrumbs'] = '이동 경로 "추적" 수. 비활성화하려면 0으로 설정하세요.';
+$lang['youarehere'] = '계층적 이동 경로 사용 (다음에 위 옵션을 비활성화하기를 원할 겁니다)';
+$lang['fullpath'] = '바닥글에 문서의 전체 경로 밝히기';
+$lang['typography'] = '타이포그래피 대체';
+$lang['dformat'] = '날짜 형식 (PHP의 <a href="http://www.php.net/strftime">strftime</a> 함수 참고)';
$lang['signature'] = '편집기에서 서명 버튼을 누를 때 넣을 내용';
-$lang['showuseras'] = '마지막에 문서를 편집한 사용자를 보여줄지 여부';
-$lang['toptoclevel'] = '목차 최상위 항목';
-$lang['tocminheads'] = '목차 표시 여부를 결정할 최소한의 문단 제목 항목의 수';
-$lang['maxtoclevel'] = '목차 최대 단계';
-$lang['maxseclevel'] = '문단 최대 편집 단계';
+$lang['showuseras'] = '문서를 마지막으로 편집한 사용자를 보여줄지 여부';
+$lang['toptoclevel'] = '목차의 최상위 단계';
+$lang['tocminheads'] = '목차를 넣을 여부를 결정할 최소 문단 수';
+$lang['maxtoclevel'] = '목차의 최대 단계';
+$lang['maxseclevel'] = '문단의 최대 편집 단계';
$lang['camelcase'] = '링크에 CamelCase 사용';
$lang['deaccent'] = '문서 이름을 지우는 방법';
-$lang['useheading'] = '문서 이름으로 첫 문단 제목 사용';
-$lang['sneaky_index'] = '기본적으로 도쿠위키는 색인 목록에 모든 이름공간을 보여줍니다.
-이 옵션을 설정하면 사용자가 읽기 권한을 가지고 있지 않은 이름공간은 보여주지 않습니다. 접근 가능한 하위 이름공간을 보이지 않게 설정하면 자동으로 설정됩니다. 특정 ACL 설정은 색인 사용이 불가능하게 할 수도 있습니다.';
-$lang['hidepages'] = '검색, 사이트맵과 기타 자동 색인에서 정규 표현식과 일치하는 문서 숨기기';
+$lang['useheading'] = '문서 이름을 첫 문단 제목으로 사용';
+$lang['sneaky_index'] = '기본적으로, 도쿠위키는 사이트맵에 모든 이름공간을 보여줍니다. 이 옵션을 활성화하면 사용자가 읽기 권한이 없는 이름공간을 숨기게 됩니다. 특정 ACL 설정으로 색인을 사용할 수 없게 할 수 있는 접근할 수 있는 하위 이름공간을 숨기면 설정됩니다.';
+$lang['hidepages'] = '검색, 사이트맵 및 다른 자동 색인에서 이 정규 표현식과 일치하는 문서 숨기기';
$lang['useacl'] = '접근 제어 목록 (ACL) 사용';
-$lang['autopasswd'] = '자동으로 만들어진 비밀번호';
-$lang['authtype'] = '인증 백-엔드';
+$lang['autopasswd'] = '자동 생성 비밀번호';
+$lang['authtype'] = '인증 백엔드';
$lang['passcrypt'] = '비밀번호 암호화 방법';
-$lang['defaultgroup'] = '기본 그룹, 모든 새 사용자는 이 그룹에 속합니다';
-$lang['superuser'] = '슈퍼 유저 - ACL 설정과 상관없이 모든 문서와 기능에 대한 전체 접근 권한을 가진 그룹이나 사용자 또는 사용자1,@그룹1,사용자2 쉼표로 구분한 목록';
-$lang['manager'] = '관리자 - 관리 기능을 사용할 수 있는 그룹이나 사용자 또는 사용자1,@그룹1,사용자2 쉼표로 구분한 목록';
-$lang['profileconfirm'] = '개인 정보를 바꿀 때 비밀번호 다시 확인';
-$lang['rememberme'] = '항상 로그인 정보 저장 허용 (기억하기)';
-$lang['disableactions'] = '도쿠위키 활동 비활성화';
+$lang['defaultgroup'] = '기본 그룹, 모든 새 사용자는 이 그룹에 속하게 됩니다';
+$lang['superuser'] = '슈퍼유저 - ACL 설정과 상관없이 모든 문서와 기능에 완전히 접근할 수 있는 그룹, 사용자 또는 쉼표로 구분된 목록 사용자1,@그룹1,사용자2';
+$lang['manager'] = '관리자 - 특정 관리 기능에 접근할 수 있는 그룹, 사용자 또는 쉼표로 구분된 목록 사용자1,@그룹1,사용자2';
+$lang['profileconfirm'] = '프로필을 바꿀 때 비밀번호로 확인';
+$lang['rememberme'] = '영구적으로 로그인 쿠키 허용 (기억하기)';
+$lang['disableactions'] = '도쿠위키 동작 비활성화';
$lang['disableactions_check'] = '검사';
-$lang['disableactions_subscription'] = '구독 신청/구독 취소';
+$lang['disableactions_subscription'] = '구독/구독 취소';
$lang['disableactions_wikicode'] = '원본 보기/원본 내보내기';
-$lang['disableactions_other'] = '다른 활동 (쉼표로 구분)';
-$lang['auth_security_timeout'] = '인증 보안 초과 시간 (초)';
-$lang['securecookie'] = 'HTTPS로 보내진 쿠키는 HTTPS에만 적용 할까요? 위키의 로그인 페이지만 SSL로 암호화하고 위키 문서는 그렇지 않은 경우 비활성화 합니다.';
-$lang['remote'] = '원격 API를 활성화 합니다. 이 항목을 허용하면 XML-RPC 및 기타 메커니즘을 통해 다른 어플리케이션으로 접근 가능합니다.';
-$lang['remoteuser'] = '이 항목에 입력된 쉼표로 나눠진 그룹이나 사용자에게 원격 API 접근을 제한합니다. 빈칸으로 두면 모두에게 허용합니다.';
-$lang['usewordblock'] = '금지 단어를 사용해 스팸 막기';
+$lang['disableactions_profile_delete'] = '자신의 계정 삭제';
+$lang['disableactions_other'] = '다른 동작 (쉼표로 구분)';
+$lang['disableactions_rss'] = 'XML 신디케이션 (RSS)';
+$lang['auth_security_timeout'] = '인증 보안 시간 초과 (초)';
+$lang['securecookie'] = 'HTTPS를 통해 설정된 쿠키는 HTTPS를 통해서만 보내져야 합니까? 위키 로그인에만 SSL로 보호하고 위키를 둘러보는 것에는 보호하지 않게 하려면 이 옵션을 비활성화하세요.';
+$lang['remote'] = '원격 API 시스템 활성화. 다른 어플리케이션이 XML-RPC 또는 다른 메커니즘을 통해 위키에 접근할 수 있습니다.';
+$lang['remoteuser'] = '여기에 입력한 쉼표로 구분된 그룹 또는 사용자에게 원격 API 접근을 제한합니다. 모두에게 접근 권한을 주려면 비워 두세요.';
+$lang['usewordblock'] = '낱말 목록을 바탕으로 스팸 막기';
$lang['relnofollow'] = '바깥 링크에 rel="nofollow" 사용';
-$lang['indexdelay'] = '색인 연기 시간 (초)';
+$lang['indexdelay'] = '색인 전 지연 시간 (초)';
$lang['mailguard'] = '이메일 주소를 알아볼 수 없게 하기';
$lang['iexssprotect'] = '올린 파일의 악성 자바스크립트, HTML 코드 가능성 여부를 검사';
-$lang['usedraft'] = '편집하는 동안 자동으로 문서 초안 저장';
-$lang['htmlok'] = 'HTML 내장 허용';
-$lang['phpok'] = 'PHP 내장 허용';
-$lang['locktime'] = '최대 파일 잠금 시간(초)';
-$lang['cachetime'] = '최대 캐시 생존 시간 (초)';
+$lang['usedraft'] = '편집하는 동안 자동으로 초안 저장';
+$lang['htmlok'] = 'HTML 포함 허용';
+$lang['phpok'] = 'PHP 포함 허용';
+$lang['locktime'] = '파일 잠그기에 대한 최대 시간 (초)';
+$lang['cachetime'] = '캐시에 대한 최대 시간 (초)';
$lang['target____wiki'] = '안쪽 링크에 대한 타겟 창';
$lang['target____interwiki'] = '인터위키 링크에 대한 타겟 창';
$lang['target____extern'] = '바깥 링크에 대한 타겟 창';
$lang['target____media'] = '미디어 링크에 대한 타겟 창';
-$lang['target____windows'] = '창 링크에 대한 타겟 창';
-$lang['mediarevisions'] = '미디어 판 관리를 사용하겠습니까?';
-$lang['refcheck'] = '미디어 파일을 삭제하기 전에 사용하고 있는지 검사';
+$lang['target____windows'] = 'Windows 링크에 대한 타겟 창';
+$lang['mediarevisions'] = '미디어 판을 활성화하겠습니까?';
+$lang['refcheck'] = '미디어 파일을 삭제하기 전에 아직 사용하고 있는지 검사';
$lang['gdlib'] = 'GD 라이브러리 버전';
-$lang['im_convert'] = 'ImageMagick 변환 도구 위치';
+$lang['im_convert'] = 'ImageMagick의 변환 도구의 경로';
$lang['jpg_quality'] = 'JPG 압축 품질 (0-100)';
-$lang['fetchsize'] = 'fetch.php가 바깥에서 다운로드할 수도 있는 최대 크기 (바이트)';
-$lang['subscribers'] = '사용자가 이메일로 문서 바뀜에 구독하도록 허용';
-$lang['subscribe_time'] = '구독 목록과 요약이 보내질 경과 시간 (초); recent_days에서 설정된 시간보다 작아야 합니다.';
+$lang['fetchsize'] = 'fetch.php가 바깥 URL에서 다운로드할 수 있는 최대 크기 (바이트), 예를 들어 바깥 그림을 캐시하고 크기 조절할 때.';
+$lang['subscribers'] = '사용자가 이메일로 문서 바뀜을 구독하는 것을 허용';
+$lang['subscribe_time'] = '구독 목록과 요약이 보내질 경과 시간 (초); recent_days에 지정된 시간보다 작아야 합니다.';
$lang['notify'] = '항상 이 이메일 주소로 바뀜 알림을 보냄';
-$lang['registernotify'] = '항상 새 사용자한테 이 이메일 주소로 정보를 보냄';
-$lang['mailfrom'] = '자동으로 보내지는 메일 발신자';
-$lang['mailprefix'] = '자동으로 보내지는 메일의 제목 말머리 내용. 비웠을 경우 위키 제목 사용';
-$lang['htmlmail'] = '용량은 조금 더 크지만 보기 좋은 HTML 태그가 포함된 메일을 보냅니다. 텍스트만의 메일을 보내려면 비활성화하세요.';
-$lang['sitemap'] = '구글 사이트맵 생성 날짜 빈도. 0일 경우 비활성화합니다';
-$lang['rss_type'] = 'XML 피드 타입';
+$lang['registernotify'] = '항상 이 이메일 주소로 새로 등록한 사용자의 정보를 보냄';
+$lang['mailfrom'] = '자동으로 보내는 메일에 사용할 보내는 사람 이메일 주소';
+$lang['mailprefix'] = '자동으로 보내는 메일에 사용할 이메일 제목 접두어. 위키 제목을 사용하려면 비워 두세요';
+$lang['htmlmail'] = '보기에는 더 좋지만 크키가 조금 더 큰 HTML 태그가 포함된 이메일을 보내기. 일반 텍스트만으로 된 메일을 보내려면 비활성화하세요.';
+$lang['sitemap'] = 'Google 사이트맵 생성 날짜 빈도 (일). 비활성화하려면 0';
+$lang['rss_type'] = 'XML 피드 형식';
$lang['rss_linkto'] = 'XML 피드 링크 정보';
-$lang['rss_content'] = 'XML 피드 항목에 표시되는 내용은 무엇입니까?';
-$lang['rss_update'] = 'XML 피드 업데이트 주기 (초)';
-$lang['rss_show_summary'] = 'XML 피드 제목에서 요약 보여주기';
-$lang['rss_media'] = '어떤 규격으로 XML 피드를 받아보시겠습니까?';
-$lang['updatecheck'] = '업데이트와 보안 문제를 검사할까요? 이 기능을 사용하려면 도쿠위키를 update.dokuwiki.org에 연결해야 합니다.';
+$lang['rss_content'] = 'XML 피드 항목에 보여주는 내용은 무엇입니까?';
+$lang['rss_update'] = 'XML 피드 업데이트 간격 (초)';
+$lang['rss_show_summary'] = 'XML 피드의 제목에서 요악 보여주기';
+$lang['rss_media'] = '어떤 규격으로 XML 피드에 바뀜을 나열해야 합니까?';
+$lang['updatecheck'] = '데이트와 보안 경고를 검사할까요? 도쿠위키는 이 기능을 위해 update.dokuwiki.org에 연결이 필요합니다.';
$lang['userewrite'] = '멋진 URL 사용';
-$lang['useslash'] = 'URL에서 이름 구분자로 슬래시 문자 사용';
-$lang['sepchar'] = '문서 이름 단어 구분자';
+$lang['useslash'] = 'URL에서 이름공간 구분자로 슬래시 사용';
+$lang['sepchar'] = '문서 이름 낱말 구분자';
$lang['canonical'] = '완전한 canonical URL 사용';
-$lang['fnencode'] = 'ASCII가 아닌 파일 이름을 인코딩 하는 방법.';
-$lang['autoplural'] = '링크 연결시 복수 양식 검사';
-$lang['compression'] = '첨부 파일 압축 방법 선택';
-$lang['gzip_output'] = 'xhml 내용 gzip 압축 사용';
-$lang['compress'] = '최적화된 CSS, 자바스크립트 출력';
-$lang['cssdatauri'] = '그림이 렌더링될 최대 용량 크기를 CSS에 규정해야 HTTP 요청 헤더 오버헤드 크기를 감소시킬 수 있습니다. 이 기술은 IE 7 이하에서는 작동하지 않습니다! <code>400</code>에서 <code>600</code> 정도면 좋은 효율을 가져옵니다. <code>0</code>로 지정할 경우 비활성화 됩니다.';
-$lang['send404'] = '존재하지 않는 페이지에 대해 "HTTP 404/페이지를 찾을 수 없습니다" 응답';
-$lang['broken_iua'] = '설치된 시스템에서 ignore_user_abort 기능에 문제가 있습니까? 문제가 있다면 검색 색인이 정상적으로 동작하지 않습니다. 이 기능이 IIS+PHP/CGI에서 문제가 있는 것으로 알려졌습니다. 자세한 정보는 <a href="http://bugs.dokuwiki.org/?do=details&amp;task_id=852">버그 852</a>를 참고하시기 바랍니다.';
-$lang['xsendfile'] = '웹 서버가 정적 파일을 제공하도록 X-Sendfile 헤더를 사용하겠습니까? 웹 서버가 이 기능을 지원해야 합니다.';
-$lang['renderer_xhtml'] = '주 (xhtml) 위키 출력 처리기';
-$lang['renderer__core'] = '%s (도쿠위키 내부)';
+$lang['fnencode'] = 'ASCII가 아닌 파일 이름을 인코딩하는 방법.';
+$lang['autoplural'] = '링크에서 복수형 검사';
+$lang['compression'] = '첨부 파일의 압축 방법';
+$lang['gzip_output'] = 'xhtml에 대해 gzip 내용 인코딩 사용';
+$lang['compress'] = 'CSS 및 자바스크립트를 압축하여 출력';
+$lang['cssdatauri'] = 'CSS 파일에서 그림이 참조되는 최대 바이트 크기를 스타일시트에 규정해야 HTTP 요청 헤더 오버헤드 크기를 줄일 수 있습니다. 이 기술은 IE 7 이하에서는 작동하지 않습니다! <code>400</code>에서 <code>600</code> 바이트 정도면 좋은 효율을 가져옵니다. 비활성화하려면 <code>0</code>으로 설정하세요.';
+$lang['send404'] = '존재하지 않는 문서에 "HTTP 404/페이지를 찾을 수 없습니다" 보내기';
+$lang['broken_iua'] = '시스템에서 ignore_user_abort 함수에 문제가 있습니까? 문제가 있다면 검색 색인이 동작하지 않는 원인이 됩니다. 이 함수가 IIS+PHP/CGI에서 문제가 있는 것으로 알려져 있습니다. 자세한 정보는 <a href="http://bugs.dokuwiki.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['dnslookups'] = '이 옵션을 활성화하면 도쿠위키가 문서를 편집하는 사용자의 호스트 네임과 원격 IP 주소를 확인합니다. 서버가 느리거나, DNS를 운영하지 않거나 이 기능을 원치 않으면 비활성화하세요';
+$lang['dnslookups'] = '도쿠위키가 문서를 편집하는 사용자의 원격 IP 주소에 대한 호스트 이름을 조회합니다. 서버가 느리거나 DNS 서버를 작동하지 않거나 이 기능을 원하지 않으면, 이 옵션을 비활성화하세요';
$lang['proxy____host'] = '프록시 서버 이름';
-$lang['proxy____port'] = '프록시 서버 포트';
+$lang['proxy____port'] = '프록시 포트';
$lang['proxy____user'] = '프록시 사용자 이름';
$lang['proxy____pass'] = '프록시 비밀번호';
-$lang['proxy____ssl'] = '프록시 연결시 SSL 사용';
-$lang['proxy____except'] = '프록시 설정이 무시될 URL주소의 정규 표현식';
-$lang['safemodehack'] = 'safemode hack기능 사용';
+$lang['proxy____ssl'] = '프록시로 연결하는 데 SSL 사용';
+$lang['proxy____except'] = '프록시가 건너뛰어야 할 일치하는 URL의 정규 표현식.';
+$lang['safemodehack'] = 'safemode hack 활성화';
$lang['ftp____host'] = 'safemode hack의 FTP 서버';
$lang['ftp____port'] = 'safemode hack의 FTP 포트';
$lang['ftp____user'] = 'safemode hack의 FTP 사용자 이름';
$lang['ftp____pass'] = 'safemode hack의 FTP 비밀번호';
$lang['ftp____root'] = 'safemode hack의 FTP 루트 디렉터리';
$lang['license_o_'] = '선택하지 않음';
-$lang['typography_o_0'] = '사용 안함';
-$lang['typography_o_1'] = '이중 인용부호("")만 지원';
-$lang['typography_o_2'] = '모든 가능한 인용 부호 (동작 안될 수도 있음)';
-$lang['userewrite_o_0'] = '사용 안함';
+$lang['typography_o_0'] = '없음';
+$lang['typography_o_1'] = '작은따옴표를 제외';
+$lang['typography_o_2'] = '작은따옴표를 포함 (항상 동작하지 않을 수도 있음)';
+$lang['userewrite_o_0'] = '없음';
$lang['userewrite_o_1'] = '.htaccess';
-$lang['userewrite_o_2'] = '도쿠위키 내부 기능';
+$lang['userewrite_o_2'] = '도쿠위키 내부';
$lang['deaccent_o_0'] = '끄기';
$lang['deaccent_o_1'] = '악센트 제거';
-$lang['deaccent_o_2'] = '라틴문자화';
-$lang['gdlib_o_0'] = 'GD 라이브러리 사용 불가';
+$lang['deaccent_o_2'] = '로마자화';
+$lang['gdlib_o_0'] = 'GD 라이브러리를 사용할 수 없음';
$lang['gdlib_o_1'] = '버전 1.x';
-$lang['gdlib_o_2'] = '자동 인식';
+$lang['gdlib_o_2'] = '자동 감지';
$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';
$lang['rss_content_o_abstract'] = '개요';
-$lang['rss_content_o_diff'] = '통합 차이 목록';
-$lang['rss_content_o_htmldiff'] = 'HTML 차이 목록 형식';
-$lang['rss_content_o_html'] = '최대 HTML 페이지 내용';
+$lang['rss_content_o_diff'] = '통합 차이';
+$lang['rss_content_o_htmldiff'] = 'HTML 형식의 차이 표';
+$lang['rss_content_o_html'] = '전체 HTML 페이지 내용';
$lang['rss_linkto_o_diff'] = '차이 보기';
-$lang['rss_linkto_o_page'] = '바뀐 문서 보기';
-$lang['rss_linkto_o_rev'] = '바뀐 목록 보기';
-$lang['rss_linkto_o_current'] = '현재 문서 보기';
+$lang['rss_linkto_o_page'] = '개정된 문서';
+$lang['rss_linkto_o_rev'] = '판의 목록';
+$lang['rss_linkto_o_current'] = '현재 문서';
$lang['compression_o_0'] = '없음';
$lang['compression_o_gz'] = 'gzip';
$lang['compression_o_bz2'] = 'bz2';
-$lang['xsendfile_o_0'] = '사용 불가';
-$lang['xsendfile_o_1'] = '비공개 lighttpd 헤더 (1.5 이전 버전)';
+$lang['xsendfile_o_0'] = '사용하지 않음';
+$lang['xsendfile_o_1'] = '사유 lighttpd 헤더 (릴리스 1.5 이전)';
$lang['xsendfile_o_2'] = '표준 X-Sendfile 헤더';
-$lang['xsendfile_o_3'] = '비공개 Nginx X-Accel-Redirect 헤더';
+$lang['xsendfile_o_3'] = '사유 Nginx X-Accel-Redirect 헤더';
$lang['showuseras_o_loginname'] = '로그인 이름';
-$lang['showuseras_o_username'] = '사용자의 전체 이름';
+$lang['showuseras_o_username'] = '사용자의 실명';
+$lang['showuseras_o_username_link'] = '인터위키 사용자 링크로 된 사용자의 실명';
$lang['showuseras_o_email'] = '사용자의 이메일 주소 (메일 주소 설정에 따라 안보일 수 있음)';
-$lang['showuseras_o_email_link'] = 'mailto: link로 표현될 사용자 이메일 주소';
-$lang['useheading_o_0'] = '아니오';
+$lang['showuseras_o_email_link'] = 'mailto: 링크로 된 사용자의 이메일 주소';
+$lang['useheading_o_0'] = '전혀 없음';
$lang['useheading_o_navigation'] = '둘러보기에만';
$lang['useheading_o_content'] = '위키 내용에만';
$lang['useheading_o_1'] = '항상';
-$lang['readdircache'] = 'readdir 캐시를 위한 최대 시간 (초)';
+$lang['readdircache'] = 'readdir 캐시의 최대 시간 (초)';
diff --git a/lib/plugins/config/lang/la/intro.txt b/lib/plugins/config/lang/la/intro.txt
index 573d34ac1..51d8c3d71 100644
--- a/lib/plugins/config/lang/la/intro.txt
+++ b/lib/plugins/config/lang/la/intro.txt
@@ -4,4 +4,4 @@ In hac pagina administratoris optiones mutare et inspicere potes. Auxilia in pag
Optiones ostensae rubro colore tutae et non nunc mutabiles sunt. Optiones ostensae caeruleo colore praecipuae sunt et optiones ostensae in area alba singulares huic uici sunt. Et caerulae et albae optiones mutabiles sunt.
-Memento premere **SERVA** ante quam nouam paginam eas: si hoc non facias, mutata amissa sunt. \ No newline at end of file
+Memento premere **SERVA** ante quam nouam paginam eas: si hoc non facias, mutata amissa sunt.
diff --git a/lib/plugins/config/lang/mr/intro.txt b/lib/plugins/config/lang/mr/intro.txt
index 12ada73a1..e068295e5 100644
--- a/lib/plugins/config/lang/mr/intro.txt
+++ b/lib/plugins/config/lang/mr/intro.txt
@@ -7,4 +7,4 @@
निळ्या पार्श्वभूमीमधे दाखवलेले सेटिंग आपोआप सेट होणार्या किमती आहेत आणि पांढर्या पार्श्वभूमीमधे
दाखवलेले सेटिंग या इन्स्टॉलेशनसाठी ख़ास सेट केलेले आहेत. निळे आणि पांढरे दोन्ही सेटिंग बदलता येतील.
-ह्या पानावरून बाहर जाण्याआधी "Save" चे बटन क्लिक करायला विसरू नका नाहीतर सर्व बदल नाहीसे होतील. \ No newline at end of file
+ह्या पानावरून बाहर जाण्याआधी "Save" चे बटन क्लिक करायला विसरू नका नाहीतर सर्व बदल नाहीसे होतील.
diff --git a/lib/plugins/config/lang/nl/intro.txt b/lib/plugins/config/lang/nl/intro.txt
index 3814b70bd..4d72b695d 100644
--- a/lib/plugins/config/lang/nl/intro.txt
+++ b/lib/plugins/config/lang/nl/intro.txt
@@ -5,5 +5,3 @@ Gebruik deze pagina om de instellingen van je DokuWiki te bekijken en/of te wijz
Instellingen met een rode achtergond kunnen niet worden gewijzigd met deze plugin. Instellingen met een blauwe achtergrond hebben de default waarde, en instellingen met een witte achtergrond zijn lokaal gewijzigd voor deze specifieke installatie. Zowel blauwe als witte instellingen kunnen worden gewijzigd.
Vergeet niet op **Opslaan** te drukken alvorens de pagina te verlaten, anders gaan je wijzigingen verloren.
-
-
diff --git a/lib/plugins/config/lang/nl/lang.php b/lib/plugins/config/lang/nl/lang.php
index 14c8f9b1e..a9791b787 100644
--- a/lib/plugins/config/lang/nl/lang.php
+++ b/lib/plugins/config/lang/nl/lang.php
@@ -1,8 +1,8 @@
<?php
+
/**
- * dutch language file
- *
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
* @author Pieter van der Meulen <pieter@vdmeulen.net>
* @author Wouter Schoot <wouter@schoot.org>
* @author John de Graaff <john@de-graaff.net>
@@ -16,6 +16,8 @@
* @author Jeroen
* @author Ricardo Guijt <ricardoguijt@gmail.com>
* @author Gerrit <klapinklapin@gmail.com>
+ * @author Hugo Smet <hugo.smet@scarlet.be>
+ * @author hugo smet <hugo.smet@scarlet.be>
*/
$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.';
@@ -28,7 +30,7 @@ $lang['security'] = 'Beveiligingswaarschuwing: Het wijzigen van dez
$lang['_configuration_manager'] = 'Configuratiemanager';
$lang['_header_dokuwiki'] = 'DokuWiki-instellingen';
$lang['_header_plugin'] = 'Plugin-instellingen';
-$lang['_header_template'] = 'Sjabloon-instellingen';
+$lang['_header_template'] = 'Template-instellingen';
$lang['_header_undefined'] = 'Ongedefinieerde instellingen';
$lang['_basic'] = 'Basisinstellingen';
$lang['_display'] = 'Beeldinstellingen';
@@ -47,9 +49,9 @@ $lang['_msg_setting_no_default'] = 'Geen standaard waarde.';
$lang['title'] = 'Titel van de wiki';
$lang['start'] = 'Naam startpagina';
$lang['lang'] = 'Taal';
-$lang['template'] = 'Sjabloon ofwel het design van de wiki.';
-$lang['tagline'] = 'Ondertitel (als het sjabloon dat ondersteunt)';
-$lang['sidebar'] = 'Zijbalk-paginanaam (als het sjabloon dat ondersteunt), leeg veld betekent geen zijbalk';
+$lang['template'] = 'Template ofwel het design van de wiki.';
+$lang['tagline'] = 'Ondertitel (als het template dat ondersteunt)';
+$lang['sidebar'] = 'Zijbalk-paginanaam (als het template dat ondersteunt), leeg veld betekent geen zijbalk';
$lang['license'] = 'Onder welke licentie zou je tekst moeten worden gepubliceerd?';
$lang['savedir'] = 'Directory om data op te slaan';
$lang['basedir'] = 'Basisdirectory';
@@ -89,7 +91,9 @@ $lang['disableactions'] = 'Aangevinkte DokuWiki-akties uitschakelen';
$lang['disableactions_check'] = 'Controleer';
$lang['disableactions_subscription'] = 'Inschrijven/opzeggen';
$lang['disableactions_wikicode'] = 'Bron bekijken/exporteer rauw';
+$lang['disableactions_profile_delete'] = 'Schrap eigen account';
$lang['disableactions_other'] = 'Andere akties (gescheiden door komma\'s)';
+$lang['disableactions_rss'] = 'XML Syndication (RSS)';
$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['remote'] = 'Activeer het remote API-systeem. Hiermee kunnen andere applicaties de wiki benaderen via XML-RPC of andere mechanismen.';
@@ -194,6 +198,7 @@ $lang['xsendfile_o_2'] = 'Standaard X-Sendfile header';
$lang['xsendfile_o_3'] = 'Merkgebonden Nginx X-Accel-Redirect header';
$lang['showuseras_o_loginname'] = 'Loginnaam';
$lang['showuseras_o_username'] = 'Volledige naam';
+$lang['showuseras_o_username_link'] = 'Gebruikers volledige naam als interwiki gebruikers link';
$lang['showuseras_o_email'] = 'E-mailadres (onherkenbaar gemaakt volgens mailguard-instelling)';
$lang['showuseras_o_email_link'] = 'E-mailadres als mailto: link';
$lang['useheading_o_0'] = 'Nooit';
diff --git a/lib/plugins/config/lang/pl/intro.txt b/lib/plugins/config/lang/pl/intro.txt
index 72c0e1c13..9d85c7a7c 100644
--- a/lib/plugins/config/lang/pl/intro.txt
+++ b/lib/plugins/config/lang/pl/intro.txt
@@ -5,5 +5,3 @@ Na tej stronie można zmienić ustawienia tej instalacji DokuWiki. W celu uzyska
Ustawienia w kolorze jasnoczerwonym są chronione i nie mogą być zmienioną z użyciem tej wtyczki. Ustawienia w kolorze niebieskim mają domyślne wartości. Ustawienia w kolorze białym są specyficzne dla tej instalacji. Ustawienia w kolorach niebieskim i białym mogą być zmienione.
W celu zapisania nowej konfiguracji naciśnij **zapisz** przed opuszczeniem tej strony.
-
-
diff --git a/lib/plugins/config/lang/pt-br/intro.txt b/lib/plugins/config/lang/pt-br/intro.txt
index 850ba25cb..db31de4cf 100644
--- a/lib/plugins/config/lang/pt-br/intro.txt
+++ b/lib/plugins/config/lang/pt-br/intro.txt
@@ -4,4 +4,4 @@ Use essa página para controlar as configurações da instalação do seu DokuWi
Definições que apresentem um fundo vermelho claro são protegidas e não podem ser alteradas com esse plug-in. As definições com um fundo azul são o padrão e as com um fundo branco foram configuradas localmente para essa instalação em particular. Tanto as definições em azul quanto as em branco podem ser alteradas.
-Lembre-se de pressionar o botão **Salvar** antes de sair dessa página, caso contrário, suas configurações serão perdidas. \ No newline at end of file
+Lembre-se de pressionar o botão **Salvar** antes de sair dessa página, caso contrário, suas configurações serão perdidas.
diff --git a/lib/plugins/config/lang/pt-br/lang.php b/lib/plugins/config/lang/pt-br/lang.php
index 795ee81c0..625dc6a25 100644
--- a/lib/plugins/config/lang/pt-br/lang.php
+++ b/lib/plugins/config/lang/pt-br/lang.php
@@ -1,7 +1,8 @@
<?php
+
/**
- * Portuguese language file
- *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
* @author Frederico Gonçalves Guimarães <frederico@teia.bio.br>
* @author Felipe Castro <fefcas@gmail.com>
* @author Lucien Raven <lucienraven@yahoo.com.br>
@@ -92,7 +93,9 @@ $lang['disableactions'] = 'Desabilitar as ações do DokuWiki';
$lang['disableactions_check'] = 'Verificação';
$lang['disableactions_subscription'] = 'Monitoramento';
$lang['disableactions_wikicode'] = 'Ver a fonte/Exportar sem processamento';
+$lang['disableactions_profile_delete'] = 'Excluir a própria conta';
$lang['disableactions_other'] = 'Outras ações (separadas por vírgula)';
+$lang['disableactions_rss'] = 'Sindicância XML (RSS)';
$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['remote'] = 'Habilitar o sistema de API remota. Isso permite que outras aplicações acessem o wiki via XML-RPC ou outros mecanismos.';
@@ -197,6 +200,7 @@ $lang['xsendfile_o_2'] = 'cabeçalho "X-Sendfile" padrão';
$lang['xsendfile_o_3'] = 'cabeçalho proprietário "Nginx X-Accel-Redirect"';
$lang['showuseras_o_loginname'] = 'nome de usuário';
$lang['showuseras_o_username'] = 'nome completo do usuário';
+$lang['showuseras_o_username_link'] = 'Nome completo do usuário como um link de usuário interwiki';
$lang['showuseras_o_email'] = 'endereço de e-mail do usuário (obscurecido segundo a definição anterior)';
$lang['showuseras_o_email_link'] = 'endereço de e-mail de usuário como um link "mailto:"';
$lang['useheading_o_0'] = 'nunca';
diff --git a/lib/plugins/config/lang/pt/intro.txt b/lib/plugins/config/lang/pt/intro.txt
index 2010dadaf..06a68c475 100644
--- a/lib/plugins/config/lang/pt/intro.txt
+++ b/lib/plugins/config/lang/pt/intro.txt
@@ -4,4 +4,4 @@ Use esta página para controlar as definições da instalação do seu DokuWiki.
Definições que apresentem um fundo vermelho claro são protegidas e não podem ser alteradas com este plugin. Definições com um fundo azul são padrão e definições com um fundo branco foram configuradas localmente para essa instalação em particular. Tanto as definições em azul como em branco podem ser alteradas.
-Lembre-se de pressionar o botão **Guardar** antes de sair desta página, caso contrário, as suas definições serão perdidas. \ No newline at end of file
+Lembre-se de pressionar o botão **Guardar** antes de sair desta página, caso contrário, as suas definições serão perdidas.
diff --git a/lib/plugins/config/lang/pt/lang.php b/lib/plugins/config/lang/pt/lang.php
index 7a9111c62..c95349265 100644
--- a/lib/plugins/config/lang/pt/lang.php
+++ b/lib/plugins/config/lang/pt/lang.php
@@ -1,12 +1,14 @@
<?php
+
/**
- * Portugueselanguage file
- *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
* @author José Monteiro <Jose.Monteiro@DoWeDo-IT.com>
* @author Enrico Nicoletto <liverig@gmail.com>
* @author Fil <fil@meteopt.com>
* @author André Neves <drakferion@gmail.com>
* @author José Campos zecarlosdecampos@gmail.com
+ * @author Paulo Carmino <contato@paulocarmino.com>
*/
$lang['menu'] = 'Configuração';
$lang['error'] = 'Parâmetros de Configuração não actualizados devido a valores inválidos. Por favor, reveja as modificações que pretende efectuar antes de re-submetê-las.<br /> Os valores incorrectos serão mostrados dentro de uma "moldura" vermelha.';
@@ -29,30 +31,32 @@ $lang['_anti_spam'] = 'Configuração Anti-Spam';
$lang['_editing'] = 'Configuração de Edição';
$lang['_links'] = 'Configuração de Ligações';
$lang['_media'] = 'Configuração de Media';
+$lang['_notifications'] = 'Notificação';
$lang['_advanced'] = 'Configurações Avançadas';
$lang['_network'] = 'Configuração de Rede';
$lang['_msg_setting_undefined'] = 'Nenhum metadado configurado.';
$lang['_msg_setting_no_class'] = 'Nenhuma classe definida.';
$lang['_msg_setting_no_default'] = 'Sem valor por omissão.';
-$lang['fmode'] = 'Modo de criação de ficheiros.';
-$lang['dmode'] = 'Modo de criação de pastas.';
-$lang['lang'] = 'Idioma';
-$lang['basedir'] = 'Pasta Base';
-$lang['baseurl'] = 'URL Base';
-$lang['savedir'] = 'Pasta para guardar dados';
-$lang['start'] = 'Nome da Página Inicial';
$lang['title'] = 'Título deste Wiki';
+$lang['start'] = 'Nome da Página Inicial';
+$lang['lang'] = 'Idioma';
$lang['template'] = 'Template';
$lang['license'] = 'Sob que licença o seu conteúdo deverá ser disponibilizado?';
-$lang['fullpath'] = 'Revelar caminho completo no rodapé';
+$lang['savedir'] = 'Pasta para guardar dados';
+$lang['basedir'] = 'Pasta Base';
+$lang['baseurl'] = 'URL Base';
+$lang['dmode'] = 'Modo de criação de pastas.';
+$lang['fmode'] = 'Modo de criação de ficheiros.';
+$lang['allowdebug'] = 'Permitir depuração <b>desabilite se não for necessário!</b>';
$lang['recent'] = 'Alterações recentes';
+$lang['recent_days'] = 'Quantas mudanças recentes devem ser mantidas? (dias)';
$lang['breadcrumbs'] = 'Número máximo de breadcrumbs';
$lang['youarehere'] = 'Breadcrumbs hierárquicas';
+$lang['fullpath'] = 'Revelar caminho completo no rodapé';
$lang['typography'] = 'Executar substituições tipográficas';
-$lang['htmlok'] = 'Permitir embeber HTML';
-$lang['phpok'] = 'Permitir embeber PHP';
$lang['dformat'] = 'Formato de Data (ver função PHP\'s <a href="http://www.php.net/strftime">strftime</a>)';
$lang['signature'] = 'Assinatura';
+$lang['showuseras'] = 'O que exibir quando mostrar o utilizador que editou a página pela última vez';
$lang['toptoclevel'] = 'Nível de topo para a tabela de conteúdo';
$lang['tocminheads'] = 'Quantidade mínima de cabeçalhos para a construção da tabela de conteúdos.';
$lang['maxtoclevel'] = 'Máximo nível para a tabela de conteúdo';
@@ -60,14 +64,8 @@ $lang['maxseclevel'] = 'Máximo nível para editar secção';
$lang['camelcase'] = 'Usar CamelCase';
$lang['deaccent'] = 'Nomes das páginas sem acentos';
$lang['useheading'] = 'Usar o primeiro cabeçalho para o nome da página';
-$lang['refcheck'] = 'Verificação de referência da media';
-$lang['allowdebug'] = 'Permitir depuração <b>desabilite se não for necessário!</b>';
-$lang['usewordblock'] = 'Bloquear spam baseado em lista de palavras (wordlist)';
-$lang['indexdelay'] = 'Tempo de espera antes da indexação (seg)';
-$lang['relnofollow'] = 'Usar rel="nofollow" em links externos';
-$lang['mailguard'] = 'Obscurecer endereços de email';
-$lang['iexssprotect'] = 'Verificar os arquivos enviados contra possíveis códigos maliciosos em HTML ou JavaScript';
-$lang['showuseras'] = 'O que exibir quando mostrar o utilizador que editou a página pela última vez';
+$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['hidepages'] = 'Esconder páginas correspondentes (expressões regulares)';
$lang['useacl'] = 'Usar ACL - Listas de Controlo de Acessos';
$lang['autopasswd'] = 'Auto-gerar senhas';
$lang['authtype'] = 'Método de autenticação';
@@ -76,58 +74,64 @@ $lang['defaultgroup'] = 'Grupo por omissão';
$lang['superuser'] = 'Superutilizador - um grupo, utilizador ou uma lista separada por vírgulas usuário1,@grupo1,usuário2 que tem acesso completo a todas as páginas e funções, independente das definições da ACL';
$lang['manager'] = 'Gestor - um grupo, utilizador ou uma lista separada por vírgulas usuário1,@grupo1,usuário2 que tem acesso a certas funções de gestão';
$lang['profileconfirm'] = 'Confirmar mudanças no perfil com a senha';
+$lang['rememberme'] = 'Permitir cookies de autenticação permanentes (Memorizar?)';
$lang['disableactions'] = 'Desactivar acções DokuWiki';
$lang['disableactions_check'] = 'Checar';
$lang['disableactions_subscription'] = 'Subscrever/Não Subscrver';
$lang['disableactions_wikicode'] = 'Ver fonte/Exportar em bruto';
+$lang['disableactions_profile_delete'] = 'Deletar Sua Conta.';
$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['usewordblock'] = 'Bloquear spam baseado em lista de palavras (wordlist)';
+$lang['relnofollow'] = 'Usar rel="nofollow" em links externos';
+$lang['indexdelay'] = 'Tempo de espera antes da indexação (seg)';
+$lang['mailguard'] = 'Obscurecer endereços de email';
+$lang['iexssprotect'] = 'Verificar os arquivos enviados contra possíveis códigos maliciosos em HTML ou JavaScript';
+$lang['usedraft'] = 'Guardar o rascunho automaticamente durante a edição';
+$lang['htmlok'] = 'Permitir embeber HTML';
+$lang['phpok'] = 'Permitir embeber PHP';
+$lang['locktime'] = 'Idade máxima para locks (seg.)';
+$lang['cachetime'] = 'Idade máxima para cache (seg.)';
+$lang['target____wiki'] = 'Parâmetro "target" para links internos';
+$lang['target____interwiki'] = 'Parâmetro "target" para links entre wikis';
+$lang['target____extern'] = 'Parâmetro "target" para links externos';
+$lang['target____media'] = 'Parâmetro "target" para links de media';
+$lang['target____windows'] = 'Parâmetro "target" para links do Windows';
+$lang['refcheck'] = 'Verificação de referência da media';
+$lang['gdlib'] = 'Versão GD Lib';
+$lang['im_convert'] = 'Caminho para a ferramenta "convert" do ImageMagick';
+$lang['jpg_quality'] = 'Compressão/Qualidade JPG (0-100)';
+$lang['fetchsize'] = 'Tamanho máximo (bytes) que o fetch.php pode transferir do exterior';
+$lang['subscribers'] = 'Habilitar o suporte a subscrição de páginas ';
+$lang['subscribe_time'] = 'Tempo após o qual as listas de subscrição e "digests" são enviados (seg.); Isto deve ser inferior ao tempo especificado em recent_days.';
+$lang['notify'] = 'Enviar notificações de mudanças para este endereço de email';
+$lang['registernotify'] = 'Enviar informações de utilizadores registados para este endereço de email';
+$lang['mailfrom'] = 'Endereço de email a ser utilizado para mensagens automáticas';
+$lang['mailprefix'] = 'Prefixo de email a ser utilizado para mensagens automáticas';
+$lang['sitemap'] = 'Gerar Sitemap Google (dias)';
+$lang['rss_type'] = 'Tipo de feed XML';
+$lang['rss_linkto'] = 'Links de feed XML ara';
+$lang['rss_content'] = 'O que deve ser exibido nos itens do alimentador XML?';
+$lang['rss_update'] = 'Intervalo de actualização do alimentador XML (seg)';
+$lang['rss_show_summary'] = 'Resumo de exibição do alimentador XML no título';
$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';
-$lang['usedraft'] = 'Guardar o rascunho automaticamente durante a edição';
$lang['sepchar'] = 'Separador de palavras no nome da página';
$lang['canonical'] = 'Usar URLs absolutas (http://servidor/caminho)';
$lang['fnencode'] = 'Método de codificar nomes de ficheiro não-ASCII.';
$lang['autoplural'] = 'Verificar formas plurais nos links';
$lang['compression'] = 'Método de compressão para histórico';
-$lang['cachetime'] = 'Idade máxima para cache (seg.)';
-$lang['locktime'] = 'Idade máxima para locks (seg.)';
-$lang['fetchsize'] = 'Tamanho máximo (bytes) que o fetch.php pode transferir do exterior';
-$lang['notify'] = 'Enviar notificações de mudanças para este endereço de email';
-$lang['registernotify'] = 'Enviar informações de utilizadores registados para este endereço de email';
-$lang['mailfrom'] = 'Endereço de email a ser utilizado para mensagens automáticas';
-$lang['mailprefix'] = 'Prefixo de email a ser utilizado para mensagens automáticas';
$lang['gzip_output'] = 'Usar "Content-Encoding" do gzip para o código xhtml';
-$lang['gdlib'] = 'Versão GD Lib';
-$lang['im_convert'] = 'Caminho para a ferramenta "convert" do ImageMagick';
-$lang['jpg_quality'] = 'Compressão/Qualidade JPG (0-100)';
-$lang['subscribers'] = 'Habilitar o suporte a subscrição de páginas ';
-$lang['subscribe_time'] = 'Tempo após o qual as listas de subscrição e "digests" são enviados (seg.); Isto deve ser inferior ao tempo especificado em recent_days.';
$lang['compress'] = 'Compactar as saídas de CSS e JavaScript';
$lang['cssdatauri'] = 'Tamanho em bytes até ao qual as imagens referenciadas em ficheiros CSS devem ser embutidas diretamente no CSS para reduzir a carga de pedidos HTTP extra. Esta técnica não funciona em IE 7 e abaixo! <code>400</code> a <code>600</code> bytes é um bom valor. Escolher <code>0</code> para desativar.';
-$lang['hidepages'] = 'Esconder páginas correspondentes (expressões regulares)';
$lang['send404'] = 'Enviar "HTTP 404/Página não encontrada" para páginas não existentes';
-$lang['sitemap'] = 'Gerar Sitemap Google (dias)';
$lang['broken_iua'] = 'A função "ignore_user_abort" não está a funcionar no seu sistema? Isso pode causar um índice de busca defeituoso. Sistemas com IIS+PHP/CGI são conhecidos por possuírem este problema. Veja o <a href="http://bugs.splitbrain.org/?do=details&amp;task_id=852">bug 852</a> para mais informações.';
$lang['xsendfile'] = 'Usar o cabeçalho "X-Sendfile" para permitir o servidor de internet encaminhar ficheiros estáticos? O seu servidor de internet precisa ter suporte a isso.';
$lang['renderer_xhtml'] = 'Renderizador a ser utilizado para a saída principal do wiki (xhtml)';
$lang['renderer__core'] = '%s (núcleo dokuwiki)';
$lang['renderer__plugin'] = '%s (plugin)';
-$lang['rememberme'] = 'Permitir cookies de autenticação permanentes (Memorizar?)';
-$lang['rss_type'] = 'Tipo de feed XML';
-$lang['rss_linkto'] = 'Links de feed XML ara';
-$lang['rss_content'] = 'O que deve ser exibido nos itens do alimentador XML?';
-$lang['rss_update'] = 'Intervalo de actualização do alimentador XML (seg)';
-$lang['recent_days'] = 'Quantas mudanças recentes devem ser mantidas? (dias)';
-$lang['rss_show_summary'] = 'Resumo de exibição do alimentador XML no título';
-$lang['target____wiki'] = 'Parâmetro "target" para links internos';
-$lang['target____interwiki'] = 'Parâmetro "target" para links entre wikis';
-$lang['target____extern'] = 'Parâmetro "target" para links externos';
-$lang['target____media'] = 'Parâmetro "target" para links de media';
-$lang['target____windows'] = 'Parâmetro "target" para links do Windows';
$lang['proxy____host'] = 'Nome do servidor proxy';
$lang['proxy____port'] = 'Porta de Proxy';
$lang['proxy____user'] = 'Nome de utilizador Proxy';
diff --git a/lib/plugins/config/lang/ru/intro.txt b/lib/plugins/config/lang/ru/intro.txt
index a629d9332..f30d4c791 100644
--- a/lib/plugins/config/lang/ru/intro.txt
+++ b/lib/plugins/config/lang/ru/intro.txt
@@ -5,5 +5,3 @@
Настройки, отображаемые на светло-красном фоне, защищены от изменений и не могут быть отредактированы с помощью этого плагина. Голубым фоном отмечены настройки со значениями по умолчанию, а белым фоном — настройки, которые были локально изменены для этой конкретной «ДокуВики». Как голубые, так и белые настройки доступны для изменения.
Не забудьте нажать кнопку «**Сохранить**» перед тем, как покинуть эту страницу, иначе все ваши изменения будут потеряны.
-
-
diff --git a/lib/plugins/config/lang/sk/intro.txt b/lib/plugins/config/lang/sk/intro.txt
index 5de62a315..a3d15bf93 100644
--- a/lib/plugins/config/lang/sk/intro.txt
+++ b/lib/plugins/config/lang/sk/intro.txt
@@ -4,4 +4,4 @@ Túto stránku môžete používať na zmenu nastavení Vašej DokuWiki inštal
Nastavenia zobrazené na červenom pozadí sú neprístupné a nemôžu byť týmto pluginom zmenené. Nastavenia s modrým pozadím obsahujú prednastavené hodnoty a nastavenia s bielym pozadím boli nastavené lokálne pre túto konkrétnu inštaláciu. Nastavenia s modrým a bielym pozadím môžu byť zmenené.
-Nezabudnite stlačiť tlačidlo **Uložiť** pred opustením stránky, inak budú vaše zmeny stratené. \ No newline at end of file
+Nezabudnite stlačiť tlačidlo **Uložiť** pred opustením stránky, inak budú vaše zmeny stratené.
diff --git a/lib/plugins/config/lang/sq/intro.txt b/lib/plugins/config/lang/sq/intro.txt
index 687b497c9..d2bab0fd5 100644
--- a/lib/plugins/config/lang/sq/intro.txt
+++ b/lib/plugins/config/lang/sq/intro.txt
@@ -4,4 +4,4 @@ Përdoreni këtë faqe për të kontrolluar kuadrot e instalimit të DokuWiki-t
Kuadrot e treguara me një backgroudn me një ngjyrë të kuqe të lehtë janë të mbrojtura dhe nuk mund të ndryshohen me këtë plugin. Kuadrot e treguara me një background blu janë vlerat default dhe kuadrot e treguara me një background të bardhë janë vendosur lokalisht për këtë instalim të caktuar. Si kuadrot blu, ashtu edhe ato të bardhë mund të ndryshohen.
-Kujtohuni të shtypni butonin **Ruaj** para se të dilni nga kjo faqe ose ndryshimet tuaja do të humbasin. \ No newline at end of file
+Kujtohuni të shtypni butonin **Ruaj** para se të dilni nga kjo faqe ose ndryshimet tuaja do të humbasin.
diff --git a/lib/plugins/config/lang/sv/intro.txt b/lib/plugins/config/lang/sv/intro.txt
index 8887d4a7b..fd77634c2 100644
--- a/lib/plugins/config/lang/sv/intro.txt
+++ b/lib/plugins/config/lang/sv/intro.txt
@@ -5,5 +5,3 @@ Använd den här sidan för att göra inställningar i din Dokuwiki. För hjälp
Inställningar med en rosa bakgrund är skyddade och kan inte ändras med den här insticksmodulen. Inställningar med en blå bakgrund är standardvärden, och inställningar som visas med en vit bakgrund har ändrats i den här installationen. Både blåa och vita inställningar kan ändras.
Kom i håg att trycka på knappen **Spara** innan du lämnar den här sidan, annars kommer ändringarna att gå förlorade.
-
-
diff --git a/lib/plugins/config/lang/tr/intro.txt b/lib/plugins/config/lang/tr/intro.txt
index 4a9654222..2602fb3ed 100644
--- a/lib/plugins/config/lang/tr/intro.txt
+++ b/lib/plugins/config/lang/tr/intro.txt
@@ -4,4 +4,4 @@ Bu sayfayı DokuWiki kurulumunun ayarlarını değiştirmek için kullanabilirsi
Açık kırmızı renkle gösterilenler bu eklenti ile değiştirilemez. Mavi ile gösterilenler varsayılan değerlerdir. Beyaz altyazı ile gösterilenler is bu kuruluma özel değiştirilmiş ayarlardır. Mavi ve beyaz ayarlar değiştirilebilir.
-Değişiklik yapmanız durumunda **Kaydet** tuşuna basmayı unutmayınız. Aksi takdirde sayfayı kapattığınızda tüm ayarlar silinecektir. \ No newline at end of file
+Değişiklik yapmanız durumunda **Kaydet** tuşuna basmayı unutmayınız. Aksi takdirde sayfayı kapattığınızda tüm ayarlar silinecektir.
diff --git a/lib/plugins/config/lang/tr/lang.php b/lib/plugins/config/lang/tr/lang.php
index cb610f4ff..344f22de1 100644
--- a/lib/plugins/config/lang/tr/lang.php
+++ b/lib/plugins/config/lang/tr/lang.php
@@ -1,12 +1,14 @@
<?php
+
/**
- * Turkish language file
- *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
* @author Aydın Coşkuner <aydinweb@gmail.com>
* @author Cihan Kahveci <kahvecicihan@gmail.com>
* @author Yavuz Selim <yavuzselim@gmail.com>
* @author Caleb Maclennan <caleb@alerque.com>
* @author farukerdemoncel@gmail.com
+ * @author Mete Cuma <mcumax@gmail.com>
*/
$lang['menu'] = 'Site Ayarları';
$lang['error'] = 'Ayarlar yanlış bir değer girildiği için güncellenemedi. Lütfen değişikliklerinizi gözden geçirin ve tekrar gönderin.
diff --git a/lib/plugins/config/lang/zh-tw/intro.txt b/lib/plugins/config/lang/zh-tw/intro.txt
index 228c12e0a..e131ec342 100644
--- a/lib/plugins/config/lang/zh-tw/intro.txt
+++ b/lib/plugins/config/lang/zh-tw/intro.txt
@@ -4,4 +4,4 @@
淡紅色背景的項目是受到保護的,不能通過這管理器更改。藍色背景的項目是系統的預設值,白色背景的項目是您更改過的。藍色和白色的設定項目都可以更改。
-離開本頁之前,不要忘記點擊最下面的 **儲存** 按鈕,否則您的修改不會生效。 \ No newline at end of file
+離開本頁之前,不要忘記點擊最下面的 **儲存** 按鈕,否則您的修改不會生效。
diff --git a/lib/plugins/config/lang/zh-tw/lang.php b/lib/plugins/config/lang/zh-tw/lang.php
index cc2c28c31..c586a0d51 100644
--- a/lib/plugins/config/lang/zh-tw/lang.php
+++ b/lib/plugins/config/lang/zh-tw/lang.php
@@ -137,7 +137,7 @@ $lang['gzip_output'] = '對 xhtml 使用 gzip 內容編碼';
$lang['compress'] = '壓縮 CSS 與 JavaScript 的輸出';
$lang['cssdatauri'] = '假如 CSS 中所引用的圖片小於該數字大小(bytes),圖片將被直接嵌入 CSS 中,以減少 HTTP Request 的發送。 IE 7 及以下的版本並不支援此功能。推薦把此數值設定成 <code>400</code> 至 <code>600</code> bytes 之間。若輸入 <code>0</code> 則停用此功能。';
$lang['send404'] = '存取不存在的頁面時送出 "HTTP 404/Page Not Found"';
-$lang['broken_iua'] = 'ignore_user_abort 功能失效了?這有可能導致搜索索引不可用。IIS+PHP/CGI 已損壞。請參閱 <a href=\"http://bugs.splitbrain.org/?do=details&task_id=852\">Bug 852</a> 獲取更多訊息。';
+$lang['broken_iua'] = 'ignore_user_abort 功能失效了?這有可能導致搜索索引不可用。IIS+PHP/CGI 已損壞。請參閱 <a href=\"http://bugs.splitbrain.org/?do=details&amp;task_id=852">Bug 852</a> 獲取更多訊息。';
$lang['xsendfile'] = '使用 X-Sendfile 頭讓網頁伺服器發送狀態文件?您的網頁伺服器需要支持該功能。';
$lang['renderer_xhtml'] = '主要 wiki 輸出 (xhtml) 的渲染器';
$lang['renderer__core'] = '%s (dokuwiki 核心)';
diff --git a/lib/plugins/config/lang/zh/intro.txt b/lib/plugins/config/lang/zh/intro.txt
index a7db4eda0..30cb65004 100644
--- a/lib/plugins/config/lang/zh/intro.txt
+++ b/lib/plugins/config/lang/zh/intro.txt
@@ -5,5 +5,3 @@
淡红色背景的项目被保护,不能通过这个管理器更改。 蓝色背景的项目是系统的默认值,白色背景的项目是您作出更改的项目。蓝色和白色的设置项目都可以更改。
离开本页之前不要忘记点击最后的 **保存** 按钮,否则您做的修改不会生效。
-
-
diff --git a/lib/plugins/config/lang/zh/lang.php b/lib/plugins/config/lang/zh/lang.php
index 364ad3fe6..5de24692e 100644
--- a/lib/plugins/config/lang/zh/lang.php
+++ b/lib/plugins/config/lang/zh/lang.php
@@ -1,8 +1,8 @@
<?php
+
/**
- * Chinese(Simplified) language file
- *
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
* @author ZDYX <zhangduyixiong@gmail.com>
* @author http://www.chinese-tools.com/tools/converter-tradsimp.html
* @author George Sheraton guxd@163.com
@@ -90,7 +90,9 @@ $lang['disableactions'] = '停用 DokuWiki 功能';
$lang['disableactions_check'] = '检查';
$lang['disableactions_subscription'] = '订阅/退订';
$lang['disableactions_wikicode'] = '查看源文件/导出源文件';
+$lang['disableactions_profile_delete'] = '删除自己的账户';
$lang['disableactions_other'] = '其他功能(用英文逗号分隔)';
+$lang['disableactions_rss'] = 'XML 同步 (RSS)';
$lang['auth_security_timeout'] = '认证安全超时(秒)';
$lang['securecookie'] = '要让浏览器须以HTTPS方式传送在HTTPS会话中设置的cookies吗?请只在登录过程为SSL加密而浏览维基为明文的情况下打开此选项。';
$lang['remote'] = '激活远程 API 系统。这允许其他程序通过 XML-RPC 或其他机制来访问维基。';
@@ -196,6 +198,7 @@ $lang['xsendfile_o_2'] = '标准 X-Sendfile 头';
$lang['xsendfile_o_3'] = '专有 Nginx X-Accel-Redirect 头';
$lang['showuseras_o_loginname'] = '登录名';
$lang['showuseras_o_username'] = '用户全名';
+$lang['showuseras_o_username_link'] = '使用用户全名作为维基内的用户链接';
$lang['showuseras_o_email'] = '用户的电子邮箱(按邮箱保护设置加扰)';
$lang['showuseras_o_email_link'] = '以mailto:形式显示用户的电子邮箱';
$lang['useheading_o_0'] = '从不';
diff --git a/lib/plugins/config/plugin.info.txt b/lib/plugins/config/plugin.info.txt
index 9472346b9..ddd72657d 100644
--- a/lib/plugins/config/plugin.info.txt
+++ b/lib/plugins/config/plugin.info.txt
@@ -1,7 +1,7 @@
base config
author Christopher Smith
email chris@jalakai.co.uk
-date 2014-03-18
+date 2015-07-18
name Configuration Manager
desc Manage Dokuwiki's Configuration Settings
url http://dokuwiki.org/plugin:config
diff --git a/lib/plugins/config/settings/config.class.php b/lib/plugins/config/settings/config.class.php
index 8dae23110..9d0ad2c4e 100644
--- a/lib/plugins/config/settings/config.class.php
+++ b/lib/plugins/config/settings/config.class.php
@@ -10,7 +10,9 @@
if(!defined('CM_KEYMARKER')) define('CM_KEYMARKER','____');
if (!class_exists('configuration')) {
-
+ /**
+ * Class configuration
+ */
class configuration {
var $_name = 'conf'; // name of the config variable found in the files (overridden by $config['varname'])
@@ -35,10 +37,10 @@ if (!class_exists('configuration')) {
*
* @param string $datafile path to config metadata file
*/
- public function configuration($datafile) {
+ public function __construct($datafile) {
global $conf, $config_cascade;
- if (!@file_exists($datafile)) {
+ if (!file_exists($datafile)) {
msg('No configuration metadata found at - '.htmlspecialchars($datafile),-1);
return;
}
@@ -123,8 +125,8 @@ if (!class_exists('configuration')) {
$file = end($this->_local_files);
// backup current file (remove any existing backup)
- if (@file_exists($file) && $backup) {
- if (@file_exists($file.'.bak')) @unlink($file.'.bak');
+ if (file_exists($file) && $backup) {
+ if (file_exists($file.'.bak')) @unlink($file.'.bak');
if (!io_rename($file, $file.'.bak')) return false;
}
@@ -151,6 +153,8 @@ if (!class_exists('configuration')) {
/**
* Update last modified time stamp of the config file
+ *
+ * @return bool
*/
public function touch_settings(){
if ($this->locked) return false;
@@ -187,7 +191,7 @@ if (!class_exists('configuration')) {
if ($this->_format == 'php') {
- if(@file_exists($file)){
+ if(file_exists($file)){
$contents = @php_strip_whitespace($file);
}else{
$contents = '';
@@ -277,7 +281,7 @@ if (!class_exists('configuration')) {
$local = $this->_local_files[0];
if (!is_writable(dirname($local))) return true;
- if (@file_exists($local) && !is_writable($local)) return true;
+ if (file_exists($local) && !is_writable($local)) return true;
return false;
}
@@ -285,6 +289,10 @@ if (!class_exists('configuration')) {
/**
* not used ... conf's contents are an array!
* reduce any multidimensional settings to one dimension using CM_KEYMARKER
+ *
+ * @param $conf
+ * @param string $prefix
+ * @return array
*/
protected function _flatten($conf,$prefix='') {
@@ -337,7 +345,7 @@ if (!class_exists('configuration')) {
foreach ($this->get_plugin_list() as $plugin) {
$plugin_dir = plugin_directory($plugin);
- if (@file_exists(DOKU_PLUGIN.$plugin_dir.$file)){
+ if (file_exists(DOKU_PLUGIN.$plugin_dir.$file)){
$meta = array();
@include(DOKU_PLUGIN.$plugin_dir.$file);
@include(DOKU_PLUGIN.$plugin_dir.$class);
@@ -352,7 +360,7 @@ if (!class_exists('configuration')) {
}
// the same for the active template
- if (@file_exists(tpl_incdir().$file)){
+ if (file_exists(tpl_incdir().$file)){
$meta = array();
@include(tpl_incdir().$file);
@include(tpl_incdir().$class);
@@ -380,7 +388,7 @@ if (!class_exists('configuration')) {
foreach ($this->get_plugin_list() as $plugin) {
$plugin_dir = plugin_directory($plugin);
- if (@file_exists(DOKU_PLUGIN.$plugin_dir.$file)){
+ if (file_exists(DOKU_PLUGIN.$plugin_dir.$file)){
$conf = $this->_read_config(DOKU_PLUGIN.$plugin_dir.$file);
foreach ($conf as $key => $value){
$default['plugin'.CM_KEYMARKER.$plugin.CM_KEYMARKER.$key] = $value;
@@ -389,7 +397,7 @@ if (!class_exists('configuration')) {
}
// the same for the active template
- if (@file_exists(tpl_incdir().$file)){
+ if (file_exists(tpl_incdir().$file)){
$conf = $this->_read_config(tpl_incdir().$file);
foreach ($conf as $key => $value){
$default['tpl'.CM_KEYMARKER.$tpl.CM_KEYMARKER.$key] = $value;
@@ -403,6 +411,9 @@ if (!class_exists('configuration')) {
}
if (!class_exists('setting')) {
+ /**
+ * Class setting
+ */
class setting {
var $_key = '';
@@ -423,7 +434,7 @@ if (!class_exists('setting')) {
* @param string $key
* @param array|null $params array with metadata of setting
*/
- public function setting($key, $params=null) {
+ public function __construct($key, $params=null) {
$this->_key = $key;
if (is_array($params)) {
@@ -452,7 +463,7 @@ if (!class_exists('setting')) {
* - if changed value passes error check, set $this->_local to the new value
*
* @param mixed $input the new value
- * @return boolean true if changed, false otherwise (incl. on error)
+ * @return boolean true if changed, false otherwise (also on error)
*/
public function update($input) {
if (is_null($input)) return false;
@@ -476,10 +487,9 @@ if (!class_exists('setting')) {
*
* @param DokuWiki_Plugin $plugin object of config plugin
* @param bool $echo true: show inputted value, when error occurred, otherwise the stored setting
- * @return array(string $label_html, string $input_html)
+ * @return string[] with content array(string $label_html, string $input_html)
*/
public function html(&$plugin, $echo=false) {
- $value = '';
$disable = '';
if ($this->is_protected()) {
@@ -503,6 +513,10 @@ if (!class_exists('setting')) {
/**
* Generate string to save setting value to file according to $fmt
+ *
+ * @param string $var name of variable
+ * @param string $fmt save format
+ * @return string
*/
public function out($var, $fmt='php') {
@@ -556,7 +570,7 @@ if (!class_exists('setting')) {
/**
* Returns caution
*
- * @return bool|string caution string, otherwise false for invalid caution
+ * @return false|string caution string, otherwise false for invalid caution
*/
public function caution() {
if (!empty($this->_caution)) {
@@ -603,12 +617,15 @@ if (!class_exists('setting')) {
if (!class_exists('setting_array')) {
+ /**
+ * Class setting_array
+ */
class setting_array extends setting {
/**
* Create an array from a string
*
- * @param $string
+ * @param string $string
* @return array
*/
protected function _from_string($string){
@@ -622,7 +639,7 @@ if (!class_exists('setting_array')) {
/**
* Create a string from an array
*
- * @param $array
+ * @param array $array
* @return string
*/
protected function _from_array($array){
@@ -657,13 +674,23 @@ if (!class_exists('setting_array')) {
return true;
}
+ /**
+ * Escaping
+ *
+ * @param string $string
+ * @return string
+ */
protected function _escape($string) {
$tr = array("\\" => '\\\\', "'" => '\\\'');
return "'".strtr( cleanText($string), $tr)."'";
}
/**
- * generate string to save setting value to file according to $fmt
+ * Generate string to save setting value to file according to $fmt
+ *
+ * @param string $var name of variable
+ * @param string $fmt save format
+ * @return string
*/
function out($var, $fmt='php') {
@@ -680,8 +707,14 @@ if (!class_exists('setting_array')) {
return $out;
}
+ /**
+ * Build html for label and input of setting
+ *
+ * @param DokuWiki_Plugin $plugin object of config plugin
+ * @param bool $echo true: show inputted value, when error occurred, otherwise the stored setting
+ * @return string[] with content array(string $label_html, string $input_html)
+ */
function html(&$plugin, $echo=false) {
- $value = '';
$disable = '';
if ($this->is_protected()) {
@@ -706,9 +739,18 @@ if (!class_exists('setting_array')) {
}
if (!class_exists('setting_string')) {
+ /**
+ * Class setting_string
+ */
class setting_string extends setting {
+ /**
+ * Build html for label and input of setting
+ *
+ * @param DokuWiki_Plugin $plugin object of config plugin
+ * @param bool $echo true: show inputted value, when error occurred, otherwise the stored setting
+ * @return string[] with content array(string $label_html, string $input_html)
+ */
function html(&$plugin, $echo=false) {
- $value = '';
$disable = '';
if ($this->is_protected()) {
@@ -733,10 +775,21 @@ if (!class_exists('setting_string')) {
}
if (!class_exists('setting_password')) {
+ /**
+ * Class setting_password
+ */
class setting_password extends setting_string {
var $_code = 'plain'; // mechanism to be used to obscure passwords
+ /**
+ * update changed setting with user provided value $input
+ * - if changed value fails error check, save it to $this->_input (to allow echoing later)
+ * - if changed value passes error check, set $this->_local to the new value
+ *
+ * @param mixed $input the new value
+ * @return boolean true if changed, false otherwise (also on error)
+ */
function update($input) {
if ($this->is_protected()) return false;
if (!$input) return false;
@@ -751,9 +804,15 @@ if (!class_exists('setting_password')) {
return true;
}
+ /**
+ * Build html for label and input of setting
+ *
+ * @param DokuWiki_Plugin $plugin object of config plugin
+ * @param bool $echo true: show inputted value, when error occurred, otherwise the stored setting
+ * @return string[] with content array(string $label_html, string $input_html)
+ */
function html(&$plugin, $echo=false) {
- $value = '';
$disable = $this->is_protected() ? 'disabled="disabled"' : '';
$key = htmlspecialchars($this->_key);
@@ -766,7 +825,9 @@ if (!class_exists('setting_password')) {
}
if (!class_exists('setting_email')) {
-
+ /**
+ * Class setting_email
+ */
class setting_email extends setting_string {
var $_multiple = false;
var $_placeholders = false;
@@ -775,6 +836,7 @@ if (!class_exists('setting_email')) {
* update setting with user provided value $input
* if value fails error check, save it
*
+ * @param mixed $input
* @return boolean true if changed, false otherwise (incl. on error)
*/
function update($input) {
@@ -825,20 +887,10 @@ if (!class_exists('setting_email')) {
}
}
-/**
- * @deprecated 2013-02-16
- */
-if (!class_exists('setting_richemail')) {
- class setting_richemail extends setting_email {
- function update($input) {
- $this->_placeholders = true;
- return parent::update($input);
- }
- }
-}
-
-
if (!class_exists('setting_numeric')) {
+ /**
+ * Class setting_numeric
+ */
class setting_numeric extends setting_string {
// This allows for many PHP syntax errors...
// var $_pattern = '/^[-+\/*0-9 ]*$/';
@@ -847,6 +899,14 @@ if (!class_exists('setting_numeric')) {
var $_min = null;
var $_max = null;
+ /**
+ * update changed setting with user provided value $input
+ * - if changed value fails error check, save it to $this->_input (to allow echoing later)
+ * - if changed value passes error check, set $this->_local to the new value
+ *
+ * @param mixed $input the new value
+ * @return boolean true if changed, false otherwise (also on error)
+ */
function update($input) {
$local = $this->_local;
$valid = parent::update($input);
@@ -863,6 +923,13 @@ if (!class_exists('setting_numeric')) {
return $valid;
}
+ /**
+ * Generate string to save setting value to file according to $fmt
+ *
+ * @param string $var name of variable
+ * @param string $fmt save format
+ * @return string
+ */
function out($var, $fmt='php') {
if ($this->is_protected()) return '';
@@ -881,6 +948,9 @@ if (!class_exists('setting_numeric')) {
}
if (!class_exists('setting_numericopt')) {
+ /**
+ * Class setting_numericopt
+ */
class setting_numericopt extends setting_numeric {
// just allow an empty config
var $_pattern = '/^(|[-]?[0-9]+(?:[-+*][0-9]+)*)$/';
@@ -888,10 +958,18 @@ if (!class_exists('setting_numericopt')) {
}
if (!class_exists('setting_onoff')) {
+ /**
+ * Class setting_onoff
+ */
class setting_onoff extends setting_numeric {
-
+ /**
+ * Build html for label and input of setting
+ *
+ * @param DokuWiki_Plugin $plugin object of config plugin
+ * @param bool $echo true: show inputted value, when error occurred, otherwise the stored setting
+ * @return string[] with content array(string $label_html, string $input_html)
+ */
function html(&$plugin, $echo = false) {
- $value = '';
$disable = '';
if ($this->is_protected()) {
@@ -909,6 +987,14 @@ if (!class_exists('setting_onoff')) {
return array($label,$input);
}
+ /**
+ * update changed setting with user provided value $input
+ * - if changed value fails error check, save it to $this->_input (to allow echoing later)
+ * - if changed value passes error check, set $this->_local to the new value
+ *
+ * @param mixed $input the new value
+ * @return boolean true if changed, false otherwise (also on error)
+ */
function update($input) {
if ($this->is_protected()) return false;
@@ -923,11 +1009,21 @@ if (!class_exists('setting_onoff')) {
}
if (!class_exists('setting_multichoice')) {
+ /**
+ * Class setting_multichoice
+ */
class setting_multichoice extends setting_string {
var $_choices = array();
+ var $lang; //some custom language strings are stored in setting
+ /**
+ * Build html for label and input of setting
+ *
+ * @param DokuWiki_Plugin $plugin object of config plugin
+ * @param bool $echo true: show inputted value, when error occurred, otherwise the stored setting
+ * @return string[] with content array(string $label_html, string $input_html)
+ */
function html(&$plugin, $echo = false) {
- $value = '';
$disable = '';
$nochoice = '';
@@ -970,6 +1066,14 @@ if (!class_exists('setting_multichoice')) {
return array($label,$input);
}
+ /**
+ * update changed setting with user provided value $input
+ * - if changed value fails error check, save it to $this->_input (to allow echoing later)
+ * - if changed value passes error check, set $this->_local to the new value
+ *
+ * @param mixed $input the new value
+ * @return boolean true if changed, false otherwise (also on error)
+ */
function update($input) {
if (is_null($input)) return false;
if ($this->is_protected()) return false;
@@ -987,10 +1091,20 @@ if (!class_exists('setting_multichoice')) {
if (!class_exists('setting_dirchoice')) {
+ /**
+ * Class setting_dirchoice
+ */
class setting_dirchoice extends setting_multichoice {
var $_dir = '';
+ /**
+ * Receives current values for the setting $key
+ *
+ * @param mixed $default default setting value
+ * @param mixed $local local setting value
+ * @param mixed $protected protected setting value
+ */
function initialize($default,$local,$protected) {
// populate $this->_choices with a list of directories
@@ -1016,12 +1130,18 @@ if (!class_exists('setting_dirchoice')) {
if (!class_exists('setting_hidden')) {
+ /**
+ * Class setting_hidden
+ */
class setting_hidden extends setting {
// Used to explicitly ignore a setting in the configuration manager.
}
}
if (!class_exists('setting_fieldset')) {
+ /**
+ * Class setting_fieldset
+ */
class setting_fieldset extends setting {
// A do-nothing class used to detect the 'fieldset' type.
// Used to start a new settings "display-group".
@@ -1029,6 +1149,9 @@ if (!class_exists('setting_fieldset')) {
}
if (!class_exists('setting_undefined')) {
+ /**
+ * Class setting_undefined
+ */
class setting_undefined extends setting_hidden {
// A do-nothing class used to detect settings with no metadata entry.
// Used internaly to hide undefined settings, and generate the undefined settings list.
@@ -1036,6 +1159,9 @@ if (!class_exists('setting_undefined')) {
}
if (!class_exists('setting_no_class')) {
+ /**
+ * Class setting_no_class
+ */
class setting_no_class extends setting_undefined {
// A do-nothing class used to detect settings with a missing setting class.
// Used internaly to hide undefined settings, and generate the undefined settings list.
@@ -1043,6 +1169,9 @@ if (!class_exists('setting_no_class')) {
}
if (!class_exists('setting_no_default')) {
+ /**
+ * Class setting_no_default
+ */
class setting_no_default extends setting_undefined {
// A do-nothing class used to detect settings with no default value.
// Used internaly to hide undefined settings, and generate the undefined settings list.
@@ -1050,11 +1179,22 @@ if (!class_exists('setting_no_default')) {
}
if (!class_exists('setting_multicheckbox')) {
+ /**
+ * Class setting_multicheckbox
+ */
class setting_multicheckbox extends setting_string {
var $_choices = array();
var $_combine = array();
+ /**
+ * update changed setting with user provided value $input
+ * - if changed value fails error check, save it to $this->_input (to allow echoing later)
+ * - if changed value passes error check, set $this->_local to the new value
+ *
+ * @param mixed $input the new value
+ * @return boolean true if changed, false otherwise (also on error)
+ */
function update($input) {
if ($this->is_protected()) return false;
@@ -1075,9 +1215,15 @@ if (!class_exists('setting_multicheckbox')) {
return true;
}
+ /**
+ * Build html for label and input of setting
+ *
+ * @param DokuWiki_Plugin $plugin object of config plugin
+ * @param bool $echo true: show inputted value, when error occurred, otherwise the stored setting
+ * @return string[] with content array(string $label_html, string $input_html)
+ */
function html(&$plugin, $echo=false) {
- $value = '';
$disable = '';
if ($this->is_protected()) {
@@ -1125,7 +1271,7 @@ if (!class_exists('setting_multicheckbox')) {
// handle any remaining values
$other = join(',',$value);
- $class = (count($default == count($value)) && (count($value) == count(array_intersect($value,$default)))) ?
+ $class = ((count($default) == count($value)) && (count($value) == count(array_intersect($value,$default)))) ?
" selectiondefault" : "";
$input .= '<div class="other'.$class.'">'."\n";
@@ -1139,6 +1285,9 @@ if (!class_exists('setting_multicheckbox')) {
/**
* convert comma separated list to an array and combine any complimentary values
+ *
+ * @param string $str
+ * @return array
*/
function _str2array($str) {
$array = explode(',',$str);
@@ -1162,6 +1311,9 @@ if (!class_exists('setting_multicheckbox')) {
/**
* convert array of values + other back to a comma separated list, incl. splitting any combined values
+ *
+ * @param array $input
+ * @return string
*/
function _array2str($input) {
@@ -1190,6 +1342,9 @@ if (!class_exists('setting_multicheckbox')) {
}
if (!class_exists('setting_regex')){
+ /**
+ * Class setting_regex
+ */
class setting_regex extends setting_string {
var $_delimiter = '/'; // regex delimiter to be used in testing input
@@ -1213,7 +1368,7 @@ if (!class_exists('setting_regex')){
// see if the regex compiles and runs (we don't check for effectiveness)
$regex = $this->_delimiter . $input . $this->_delimiter . $this->_pregflags;
$lastError = error_get_last();
- $ok = @preg_match($regex,'testdata');
+ @preg_match($regex,'testdata');
if (preg_last_error() != PREG_NO_ERROR || error_get_last() != $lastError) {
$this->_input = $input;
$this->_error = true;
diff --git a/lib/plugins/config/settings/extra.class.php b/lib/plugins/config/settings/extra.class.php
index 83de802a3..2445577d1 100644
--- a/lib/plugins/config/settings/extra.class.php
+++ b/lib/plugins/config/settings/extra.class.php
@@ -6,21 +6,39 @@
*/
if (!class_exists('setting_sepchar')) {
+ /**
+ * Class setting_sepchar
+ */
class setting_sepchar extends setting_multichoice {
- function setting_sepchar($key,$param=null) {
+ /**
+ * @param string $key
+ * @param array|null $param array with metadata of setting
+ */
+ function __construct($key,$param=null) {
$str = '_-.';
for ($i=0;$i<strlen($str);$i++) $this->_choices[] = $str{$i};
// call foundation class constructor
- $this->setting($key,$param);
+ parent::__construct($key,$param);
}
}
}
if (!class_exists('setting_savedir')) {
+ /**
+ * Class setting_savedir
+ */
class setting_savedir extends setting_string {
+ /**
+ * update changed setting with user provided value $input
+ * - if changed value fails error check, save it to $this->_input (to allow echoing later)
+ * - if changed value passes error check, set $this->_local to the new value
+ *
+ * @param mixed $input the new value
+ * @return boolean true if changed, false otherwise (also on error)
+ */
function update($input) {
if ($this->is_protected()) return false;
@@ -40,9 +58,20 @@ if (!class_exists('setting_savedir')) {
}
if (!class_exists('setting_authtype')) {
+ /**
+ * Class setting_authtype
+ */
class setting_authtype extends setting_multichoice {
+ /**
+ * Receives current values for the setting $key
+ *
+ * @param mixed $default default setting value
+ * @param mixed $local local setting value
+ * @param mixed $protected protected setting value
+ */
function initialize($default,$local,$protected) {
+ /** @var $plugin_controller Doku_Plugin_Controller */
global $plugin_controller;
// retrieve auth types provided by plugins
@@ -53,7 +82,16 @@ if (!class_exists('setting_authtype')) {
parent::initialize($default,$local,$protected);
}
+ /**
+ * update changed setting with user provided value $input
+ * - if changed value fails error check, save it to $this->_input (to allow echoing later)
+ * - if changed value passes error check, set $this->_local to the new value
+ *
+ * @param mixed $input the new value
+ * @return boolean true if changed, false otherwise (also on error)
+ */
function update($input) {
+ /** @var $plugin_controller Doku_Plugin_Controller */
global $plugin_controller;
// is an update possible/requested?
@@ -92,8 +130,19 @@ if (!class_exists('setting_authtype')) {
}
if (!class_exists('setting_im_convert')) {
+ /**
+ * Class setting_im_convert
+ */
class setting_im_convert extends setting_string {
+ /**
+ * update changed setting with user provided value $input
+ * - if changed value fails error check, save it to $this->_input (to allow echoing later)
+ * - if changed value passes error check, set $this->_local to the new value
+ *
+ * @param mixed $input the new value
+ * @return boolean true if changed, false otherwise (also on error)
+ */
function update($input) {
if ($this->is_protected()) return false;
@@ -102,7 +151,7 @@ if (!class_exists('setting_im_convert')) {
$value = is_null($this->_local) ? $this->_default : $this->_local;
if ($value == $input) return false;
- if ($input && !@file_exists($input)) {
+ if ($input && !file_exists($input)) {
$this->_error = true;
$this->_input = $input;
return false;
@@ -115,14 +164,24 @@ if (!class_exists('setting_im_convert')) {
}
if (!class_exists('setting_disableactions')) {
+ /**
+ * Class setting_disableactions
+ */
class setting_disableactions extends setting_multicheckbox {
+ /**
+ * Build html for label and input of setting
+ *
+ * @param DokuWiki_Plugin $plugin object of config plugin
+ * @param bool $echo true: show inputted value, when error occurred, otherwise the stored setting
+ * @return array with content array(string $label_html, string $input_html)
+ */
function html(&$plugin, $echo=false) {
global $lang;
// make some language adjustments (there must be a better way)
// transfer some DokuWiki language strings to the plugin
- if (!$plugin->localised) $this->setupLocale();
+ if (!$plugin->localised) $plugin->setupLocale();
$plugin->lang[$this->_key.'_revisions'] = $lang['btn_revs'];
foreach ($this->_choices as $choice)
@@ -134,10 +193,20 @@ if (!class_exists('setting_disableactions')) {
}
if (!class_exists('setting_compression')) {
+ /**
+ * Class setting_compression
+ */
class setting_compression extends setting_multichoice {
var $_choices = array('0'); // 0 = no compression, always supported
+ /**
+ * Receives current values for the setting $key
+ *
+ * @param mixed $default default setting value
+ * @param mixed $local local setting value
+ * @param mixed $protected protected setting value
+ */
function initialize($default,$local,$protected) {
// populate _choices with the compression methods supported by this php installation
@@ -150,16 +219,26 @@ if (!class_exists('setting_compression')) {
}
if (!class_exists('setting_license')) {
+ /**
+ * Class setting_license
+ */
class setting_license extends setting_multichoice {
var $_choices = array(''); // none choosen
+ /**
+ * Receives current values for the setting $key
+ *
+ * @param mixed $default default setting value
+ * @param mixed $local local setting value
+ * @param mixed $protected protected setting value
+ */
function initialize($default,$local,$protected) {
global $license;
foreach($license as $key => $data){
$this->_choices[] = $key;
- $this->lang[$this->_key.'_o_'.$key] = $data['name'];
+ $this->lang[$this->_key.'_o_'.$key] = $data['name']; // stored in setting
}
parent::initialize($default,$local,$protected);
@@ -169,9 +248,20 @@ if (!class_exists('setting_license')) {
if (!class_exists('setting_renderer')) {
+ /**
+ * Class setting_renderer
+ */
class setting_renderer extends setting_multichoice {
var $_prompts = array();
-
+ var $_format = null;
+
+ /**
+ * Receives current values for the setting $key
+ *
+ * @param mixed $default default setting value
+ * @param mixed $local local setting value
+ * @param mixed $protected protected setting value
+ */
function initialize($default,$local,$protected) {
$format = $this->_format;
@@ -188,11 +278,18 @@ if (!class_exists('setting_renderer')) {
parent::initialize($default,$local,$protected);
}
+ /**
+ * Build html for label and input of setting
+ *
+ * @param DokuWiki_Plugin $plugin object of config plugin
+ * @param bool $echo true: show inputted value, when error occurred, otherwise the stored setting
+ * @return array with content array(string $label_html, string $input_html)
+ */
function html(&$plugin, $echo=false) {
// make some language adjustments (there must be a better way)
// transfer some plugin names to the config plugin
- if (!$plugin->localised) $this->setupLocale();
+ if (!$plugin->localised) $plugin->setupLocale();
foreach ($this->_choices as $choice) {
if (!isset($plugin->lang[$this->_key.'_o_'.$choice])) {
diff --git a/lib/plugins/extension/_test/extension.test.php b/lib/plugins/extension/_test/extension.test.php
index 453b95e79..d4f13201d 100644
--- a/lib/plugins/extension/_test/extension.test.php
+++ b/lib/plugins/extension/_test/extension.test.php
@@ -14,7 +14,9 @@ class mock_helper_plugin_extension_extension extends helper_plugin_extension_ext
/**
* @group plugin_extension
+ * @group admin_plugins
* @group plugins
+ * @group bundled_plugins
*/
class helper_plugin_extension_extension_test extends DokuWikiTest {
diff --git a/lib/plugins/extension/admin.php b/lib/plugins/extension/admin.php
index 99c74848b..71257cf43 100644
--- a/lib/plugins/extension/admin.php
+++ b/lib/plugins/extension/admin.php
@@ -54,6 +54,10 @@ class admin_plugin_extension extends DokuWiki_Admin_Plugin {
msg($this->getLang('repo_error').' [<a href="'.$url.'">'.$this->getLang('repo_retry').'</a>]', -1);
}
+ if(!in_array('ssl', stream_get_transports())) {
+ msg($this->getLang('nossl'), -1);
+ }
+
/* @var helper_plugin_extension_extension $extension */
$extension = $this->loadHelper('extension_extension');
@@ -75,10 +79,10 @@ class admin_plugin_extension extends DokuWiki_Admin_Plugin {
case 'uninstall':
$extension->setExtension($extname);
$status = $extension->uninstall();
- if($status !== true) {
- msg($status, -1);
- } else {
+ if($status) {
msg(sprintf($this->getLang('msg_delete_success'), hsc($extension->getDisplayName())), 1);
+ } else {
+ msg(sprintf($this->getLang('msg_delete_failed'), hsc($extension->getDisplayName())), -1);
}
break;
case 'enable';
diff --git a/lib/plugins/extension/helper/extension.php b/lib/plugins/extension/helper/extension.php
index 2aca0e218..2f44f55ba 100644
--- a/lib/plugins/extension/helper/extension.php
+++ b/lib/plugins/extension/helper/extension.php
@@ -105,10 +105,10 @@ class helper_plugin_extension_extension extends DokuWiki_Plugin {
*/
public function isBundled() {
if (!empty($this->remoteInfo['bundled'])) return $this->remoteInfo['bundled'];
- return in_array($this->base,
+ return in_array($this->id,
array(
'authad', 'authldap', 'authmysql', 'authpgsql', 'authplain', 'acl', 'info', 'extension',
- 'revert', 'popularity', 'config', 'safefnrecode', 'testing', 'template:dokuwiki'
+ 'revert', 'popularity', 'config', 'safefnrecode', 'styling', 'testing', 'template:dokuwiki'
)
);
}
@@ -578,6 +578,7 @@ class helper_plugin_extension_extension extends DokuWiki_Plugin {
try {
$installed = $this->installArchive("$tmp/upload.archive", true, $basename);
$this->updateManagerData('', $installed);
+ $this->removeDeletedfiles($installed);
// purge cache
$this->purgeCache();
}catch (Exception $e){
@@ -598,6 +599,7 @@ class helper_plugin_extension_extension extends DokuWiki_Plugin {
$path = $this->download($url);
$installed = $this->installArchive($path, true);
$this->updateManagerData($url, $installed);
+ $this->removeDeletedfiles($installed);
// purge cache
$this->purgeCache();
@@ -623,6 +625,7 @@ class helper_plugin_extension_extension extends DokuWiki_Plugin {
if (!isset($installed[$this->getID()])) {
throw new Exception('Error, the requested extension hasn\'t been installed or updated');
}
+ $this->removeDeletedfiles($installed);
$this->setExtension($this->getID());
$this->purgeCache();
return $installed;
@@ -707,7 +710,7 @@ class helper_plugin_extension_extension extends DokuWiki_Plugin {
$plugin = null;
foreach($plugin_types as $type) {
- if(@file_exists($path.$type.'.php')) {
+ if(file_exists($path.$type.'.php')) {
$plugin = plugin_load($type, $this->base);
if ($plugin) break;
}
@@ -799,7 +802,7 @@ class helper_plugin_extension_extension extends DokuWiki_Plugin {
*
* The directory is registered for cleanup when the class is destroyed
*
- * @return bool|string
+ * @return false|string
*/
protected function mkTmpDir(){
$dir = io_mktmpdir();
@@ -907,18 +910,20 @@ class helper_plugin_extension_extension extends DokuWiki_Plugin {
// check to make sure we aren't overwriting anything
$target = $target_base_dir.$item['base'];
- if(!$overwrite && @file_exists($target)) {
+ if(!$overwrite && file_exists($target)) {
// TODO remember our settings, ask the user to confirm overwrite
continue;
}
- $action = @file_exists($target) ? 'update' : 'install';
+ $action = file_exists($target) ? 'update' : 'install';
// copy action
if($this->dircopy($item['tmp'], $target)) {
// return info
$id = $item['base'];
- if($item['type'] == 'template') $id = 'template:'.$id;
+ if($item['type'] == 'template') {
+ $id = 'template:'.$id;
+ }
$installed_extensions[$id] = array(
'base' => $item['base'],
'type' => $item['type'],
@@ -1035,33 +1040,24 @@ class helper_plugin_extension_extension extends DokuWiki_Plugin {
$ext = $this->guess_archive($file);
if(in_array($ext, array('tar', 'bz', 'gz'))) {
- switch($ext) {
- case 'bz':
- $compress_type = Tar::COMPRESS_BZIP;
- break;
- case 'gz':
- $compress_type = Tar::COMPRESS_GZIP;
- break;
- default:
- $compress_type = Tar::COMPRESS_NONE;
- }
- $tar = new Tar();
try {
- $tar->open($file, $compress_type);
+ $tar = new \splitbrain\PHPArchive\Tar();
+ $tar->open($file);
$tar->extract($target);
- } catch (Exception $e) {
+ } catch (\splitbrain\PHPArchive\ArchiveIOException $e) {
throw new Exception($this->getLang('error_decompress').' '.$e->getMessage());
}
return true;
} elseif($ext == 'zip') {
- $zip = new ZipLib();
- $ok = $zip->Extract($file, $target);
-
- if($ok == -1){
- throw new Exception($this->getLang('error_decompress').' Error extracting the zip archive');
+ try {
+ $zip = new \splitbrain\PHPArchive\Zip();
+ $zip->open($file);
+ $zip->extract($target);
+ } catch (\splitbrain\PHPArchive\ArchiveIOException $e) {
+ throw new Exception($this->getLang('error_decompress').' '.$e->getMessage());
}
return true;
@@ -1079,7 +1075,7 @@ class helper_plugin_extension_extension extends DokuWiki_Plugin {
*
* @author Andreas Gohr <andi@splitbrain.org>
* @param string $file The file to analyze
- * @return string|bool false if the file can't be read, otherwise an "extension"
+ * @return string|false false if the file can't be read, otherwise an "extension"
*/
private function guess_archive($file) {
$fh = fopen($file, 'rb');
@@ -1095,6 +1091,10 @@ class helper_plugin_extension_extension extends DokuWiki_Plugin {
/**
* Copy with recursive sub-directory support
+ *
+ * @param string $src filename path to file
+ * @param string $dst filename path to file
+ * @return bool|int|string
*/
private function dircopy($src, $dst) {
global $conf;
@@ -1113,7 +1113,7 @@ class helper_plugin_extension_extension extends DokuWiki_Plugin {
return $ok;
} else {
- $exists = @file_exists($dst);
+ $exists = file_exists($dst);
if(!@copy($src, $dst)) return false;
if(!$exists && !empty($conf['fperm'])) chmod($dst, $conf['fperm']);
@@ -1122,6 +1122,40 @@ class helper_plugin_extension_extension extends DokuWiki_Plugin {
return true;
}
+
+ /**
+ * Delete outdated files from updated plugins
+ *
+ * @param array $installed
+ */
+ private function removeDeletedfiles($installed) {
+ foreach($installed as $id => $extension) {
+ // only on update
+ if($extension['action'] == 'install') continue;
+
+ // get definition file
+ if($extension['type'] == 'template') {
+ $extensiondir = DOKU_TPLLIB;
+ }else{
+ $extensiondir = DOKU_PLUGIN;
+ }
+ $extensiondir = $extensiondir . $extension['base'] .'/';
+ $definitionfile = $extensiondir . 'deleted.files';
+ if(!file_exists($definitionfile)) continue;
+
+ // delete the old files
+ $list = file($definitionfile);
+
+ foreach($list as $line) {
+ $line = trim(preg_replace('/#.*$/', '', $line));
+ if(!$line) continue;
+ $file = $extensiondir . $line;
+ if(!file_exists($file)) continue;
+
+ io_rmdir($file, true);
+ }
+ }
+ }
}
// vim:ts=4:sw=4:et:
diff --git a/lib/plugins/extension/helper/gui.php b/lib/plugins/extension/helper/gui.php
index 3a0f0c589..4ec6fec85 100644
--- a/lib/plugins/extension/helper/gui.php
+++ b/lib/plugins/extension/helper/gui.php
@@ -144,11 +144,11 @@ class helper_plugin_extension_gui extends DokuWiki_Plugin {
foreach($this->tabs as $tab) {
$url = $this->tabURL($tab);
if($this->currentTab() == $tab) {
- $class = 'class="active"';
+ $class = ' active';
} else {
$class = '';
}
- echo '<li '.$class.'><a href="'.$url.'">'.$this->getLang('tab_'.$tab).'</a></li>';
+ echo '<li class="'.$tab.$class.'"><a href="'.$url.'">'.$this->getLang('tab_'.$tab).'</a></li>';
}
echo '</ul>';
}
diff --git a/lib/plugins/extension/helper/list.php b/lib/plugins/extension/helper/list.php
index 9b1988d84..6ca72f7ce 100644
--- a/lib/plugins/extension/helper/list.php
+++ b/lib/plugins/extension/helper/list.php
@@ -151,6 +151,7 @@ class helper_plugin_extension_list extends DokuWiki_Plugin {
if($extension->isInstalled()) {
$class.=' installed';
$class.= ($extension->isEnabled()) ? ' enabled':' disabled';
+ if($extension->updateAvailable()) $class .= ' updatable';
}
if(!$extension->canModify()) $class.= ' notselect';
if($extension->isProtected()) $class.= ' protected';
@@ -265,7 +266,7 @@ class helper_plugin_extension_list extends DokuWiki_Plugin {
$return = '<div class="linkbar">';
$return .= $this->make_homepagelink($extension);
if ($extension->getBugtrackerURL()) {
- $return .= ' <a href="'.hsc($extension->getBugtrackerURL()).'" title="'.hsc($extension->getBugtrackerURL()).'" class ="interwiki iw_dokubug">'.$this->getLang('bugs_features').'</a> ';
+ $return .= ' <a href="'.hsc($extension->getBugtrackerURL()).'" title="'.hsc($extension->getBugtrackerURL()).'" class ="bugs">'.$this->getLang('bugs_features').'</a> ';
}
if ($extension->getTags()){
$first = true;
@@ -333,7 +334,6 @@ class helper_plugin_extension_list extends DokuWiki_Plugin {
* Shortens the URL for display
*
* @param string $url
- *
* @return string HTML link
*/
function shortlink($url){
@@ -461,6 +461,7 @@ class helper_plugin_extension_list extends DokuWiki_Plugin {
* @return string The HTML code
*/
function make_actions(helper_plugin_extension_extension $extension) {
+ global $conf;
$return = '';
$errors = '';
@@ -492,6 +493,10 @@ class helper_plugin_extension_list extends DokuWiki_Plugin {
$errors .= '<p class="permerror">'.$this->getLang('git').'</p>';
}
+ if ($extension->isEnabled() && in_array('Auth', $extension->getTypes()) && $conf['authtype'] != $extension->getID()) {
+ $errors .= '<p class="permerror">'.$this->getLang('auth').'</p>';
+ }
+
}else{
if (($canmod = $extension->canModify()) === true) {
if ($extension->getDownloadURL()) {
@@ -530,7 +535,7 @@ class helper_plugin_extension_list extends DokuWiki_Plugin {
$classes = 'button '.$action;
$name = 'fn['.$action.']['.hsc($extension->getID()).']';
- return '<input class="'.$classes.'" name="'.$name.'" type="submit" value="'.$this->getLang('btn_'.$action).'" '.$title.' />';
+ return '<button class="'.$classes.'" name="'.$name.'" type="submit" '.$title.'>'.$this->getLang('btn_'.$action).'</button> ';
}
/**
diff --git a/lib/plugins/extension/helper/repository.php b/lib/plugins/extension/helper/repository.php
index 6ffe89eb7..5dc2707cf 100644
--- a/lib/plugins/extension/helper/repository.php
+++ b/lib/plugins/extension/helper/repository.php
@@ -32,7 +32,7 @@ class helper_plugin_extension_repository extends DokuWiki_Plugin {
$request_needed = false;
foreach ($list as $name) {
$cache = new cache('##extension_manager##'.$name, '.repo');
- $result = null;
+
if (!isset($this->loaded_extensions[$name]) && $this->hasAccess() && !$cache->useCache(array('age' => 3600 * 24))) {
$this->loaded_extensions[$name] = true;
$request_data['ext'][] = $name;
@@ -64,7 +64,7 @@ class helper_plugin_extension_repository extends DokuWiki_Plugin {
public function hasAccess() {
if ($this->has_access === null) {
$cache = new cache('##extension_manager###hasAccess', '.repo');
- $result = null;
+
if (!$cache->useCache(array('age' => 3600 * 24, 'purge'=>1))) {
$httpclient = new DokuHTTPClient();
$httpclient->timeout = 5;
@@ -91,7 +91,7 @@ class helper_plugin_extension_repository extends DokuWiki_Plugin {
*/
public function getData($name) {
$cache = new cache('##extension_manager##'.$name, '.repo');
- $result = null;
+
if (!isset($this->loaded_extensions[$name]) && $this->hasAccess() && !$cache->useCache(array('age' => 3600 * 24))) {
$this->loaded_extensions[$name] = true;
$httpclient = new DokuHTTPClient();
diff --git a/lib/plugins/extension/images/bug.gif b/lib/plugins/extension/images/bug.gif
new file mode 100644
index 000000000..08c1ca1f1
--- /dev/null
+++ b/lib/plugins/extension/images/bug.gif
Binary files differ
diff --git a/lib/plugins/extension/images/disabled.png b/lib/plugins/extension/images/disabled.png
index 93a813642..9c18b0452 100644
--- a/lib/plugins/extension/images/disabled.png
+++ b/lib/plugins/extension/images/disabled.png
Binary files differ
diff --git a/lib/plugins/extension/images/donate.png b/lib/plugins/extension/images/donate.png
index 9e234da1c..a76dfaaec 100644
--- a/lib/plugins/extension/images/donate.png
+++ b/lib/plugins/extension/images/donate.png
Binary files differ
diff --git a/lib/plugins/extension/images/down.png b/lib/plugins/extension/images/down.png
index df7beda4e..8e399a97d 100644
--- a/lib/plugins/extension/images/down.png
+++ b/lib/plugins/extension/images/down.png
Binary files differ
diff --git a/lib/plugins/extension/images/enabled.png b/lib/plugins/extension/images/enabled.png
index 92d958802..edbbb5b3c 100644
--- a/lib/plugins/extension/images/enabled.png
+++ b/lib/plugins/extension/images/enabled.png
Binary files differ
diff --git a/lib/plugins/extension/images/overlay.png b/lib/plugins/extension/images/overlay.png
index 8f92c2fe7..5414206c5 100644
--- a/lib/plugins/extension/images/overlay.png
+++ b/lib/plugins/extension/images/overlay.png
Binary files differ
diff --git a/lib/plugins/extension/images/plugin.png b/lib/plugins/extension/images/plugin.png
index e4a2d3be6..62424b2c7 100644
--- a/lib/plugins/extension/images/plugin.png
+++ b/lib/plugins/extension/images/plugin.png
Binary files differ
diff --git a/lib/plugins/extension/images/tag.png b/lib/plugins/extension/images/tag.png
index 155dbb3dd..1b1dd750c 100644
--- a/lib/plugins/extension/images/tag.png
+++ b/lib/plugins/extension/images/tag.png
Binary files differ
diff --git a/lib/plugins/extension/images/template.png b/lib/plugins/extension/images/template.png
index ee74bc1d5..67240d1eb 100644
--- a/lib/plugins/extension/images/template.png
+++ b/lib/plugins/extension/images/template.png
Binary files differ
diff --git a/lib/plugins/extension/images/up.png b/lib/plugins/extension/images/up.png
index ec9337715..531b2dd7b 100644
--- a/lib/plugins/extension/images/up.png
+++ b/lib/plugins/extension/images/up.png
Binary files differ
diff --git a/lib/plugins/extension/images/warning.png b/lib/plugins/extension/images/warning.png
index c5e482f84..c1af79f0f 100644
--- a/lib/plugins/extension/images/warning.png
+++ b/lib/plugins/extension/images/warning.png
Binary files differ
diff --git a/lib/plugins/extension/lang/bg/lang.php b/lib/plugins/extension/lang/bg/lang.php
new file mode 100644
index 000000000..b14442c55
--- /dev/null
+++ b/lib/plugins/extension/lang/bg/lang.php
@@ -0,0 +1,73 @@
+<?php
+
+/**
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Kiril <neohidra@gmail.com>
+ */
+$lang['menu'] = 'Диспечер на приставки';
+$lang['tab_plugins'] = 'Инсталирани приставки';
+$lang['tab_templates'] = 'Инсталирани шаблони';
+$lang['tab_search'] = 'Търсене и инсталиране';
+$lang['tab_install'] = 'Ръчно инсталиране';
+$lang['notimplemented'] = 'Функционалността все още не реализирана';
+$lang['notinstalled'] = 'Приставката не е инсталирана';
+$lang['alreadyenabled'] = 'Приставката е включена';
+$lang['alreadydisabled'] = 'Приставката е изключена';
+$lang['pluginlistsaveerror'] = 'Възникна грешка при записването на списъка с приставки';
+$lang['unknownauthor'] = 'Неизвестен автор';
+$lang['unknownversion'] = 'Неизвестна версия';
+$lang['btn_info'] = 'Повече информация';
+$lang['btn_update'] = 'Актуализиране';
+$lang['btn_uninstall'] = 'Деинсталиране';
+$lang['btn_enable'] = 'Включване';
+$lang['btn_disable'] = 'Изключване';
+$lang['btn_install'] = 'Инсталиране';
+$lang['btn_reinstall'] = 'Преинсталиране';
+$lang['js']['reallydel'] = 'Наистина ли желаете приставката да бъде деинсталирана?';
+$lang['js']['display_viewoptions'] = 'Филтриране:';
+$lang['js']['display_enabled'] = 'включени';
+$lang['js']['display_disabled'] = 'изключени';
+$lang['js']['display_updatable'] = 'с налични актуализации';
+$lang['search_for'] = 'Търсене за приставки:';
+$lang['search'] = 'Търсене';
+$lang['extensionby'] = '<strong>%s</strong> от %s';
+$lang['popularity'] = 'Популярност: %s%%';
+$lang['homepage_link'] = 'Документи';
+$lang['tags'] = 'Етикети:';
+$lang['author_hint'] = 'Търсене за други приставки от този автор';
+$lang['downloadurl'] = 'Сваляне от URL:';
+$lang['repository'] = 'Хранилище:';
+$lang['installed_version'] = 'Инсталирана версия:';
+$lang['install_date'] = 'Последна актуализирана на:';
+$lang['available_version'] = 'Налична версия:';
+$lang['compatible'] = 'Съвместимост с:';
+$lang['depends'] = 'Изисква:';
+$lang['similar'] = 'Наподобява:';
+$lang['conflicts'] = 'В кофликт с:';
+$lang['repo_retry'] = 'Повторен опит';
+$lang['provides'] = 'Осигурява:';
+$lang['status'] = 'Състояние:';
+$lang['status_installed'] = 'инсталирана';
+$lang['status_not_installed'] = 'неинсталирана';
+$lang['status_protected'] = 'защитена';
+$lang['status_enabled'] = 'включена';
+$lang['status_disabled'] = 'изключена';
+$lang['status_plugin'] = 'приставка';
+$lang['status_template'] = 'шаблон';
+$lang['msg_enabled'] = 'Приставката "%s" е включена';
+$lang['msg_disabled'] = 'Приставката "%s" е изключена';
+$lang['msg_delete_success'] = 'Приставката "%s" е деинсталирана';
+$lang['msg_delete_failed'] = 'Деинсталирането на приставката "%s" се провали ';
+$lang['msg_template_install_success'] = 'Шаблонът "%s" е инсталиран успешно';
+$lang['msg_template_update_success'] = 'Шаблонът "%s" е актуализиран успешно';
+$lang['msg_plugin_install_success'] = 'Приставката "%s" е инсталирана успешно';
+$lang['msg_plugin_update_success'] = 'Приставката "%s" е актуализирана успешно';
+$lang['msg_upload_failed'] = 'Качването на файлът се провали';
+$lang['missing_dependency'] = '<strong>Изискван компонент липсва или е изключен:</strong> %s';
+$lang['update_available'] = '<strong>Актуализация:</strong> Налична е нова версия - %s';
+$lang['wrong_folder'] = '<strong>Некоректно инсталирана приставка:</strong> Преименувайте директорията "%s" на "%s".';
+$lang['error_badurl'] = 'URL адресите трябва да започват с http или https';
+$lang['error_dircreate'] = 'Създаването на временна поапка за получаване на файла не е възможно';
+$lang['error_download'] = 'Невъзможност за сваляне на файл: %s';
+$lang['install_url'] = 'Инсталиране от URL:';
diff --git a/lib/plugins/extension/lang/cs/intro_plugins.txt b/lib/plugins/extension/lang/cs/intro_plugins.txt
new file mode 100644
index 000000000..a6f62746a
--- /dev/null
+++ b/lib/plugins/extension/lang/cs/intro_plugins.txt
@@ -0,0 +1 @@
+Toto je seznam momentálně nainstalovaných zásuvných modulů vaší DokuWiki. V tomto seznamu je lze zapínat, vypínat nebo kompletně odinstalovat. Jsou zde také vidět dostupné aktualizace pro moduly, ale před jejich případným aktualizováním si vždy přečtěte jejich dokumentaci. \ No newline at end of file
diff --git a/lib/plugins/extension/lang/cs/intro_search.txt b/lib/plugins/extension/lang/cs/intro_search.txt
new file mode 100644
index 000000000..4258ac4f2
--- /dev/null
+++ b/lib/plugins/extension/lang/cs/intro_search.txt
@@ -0,0 +1 @@
+Tato záložka poskytuje náhled na všechny dostupné moduly a šablony třetích stran pro DokuWiki. Jejich instalací se múžete vystavit **bezpečnostním rizikům** o kterých se můžete více dočíst v oddíle [[doku>security#plugin_security|plugin security]]. \ No newline at end of file
diff --git a/lib/plugins/extension/lang/cs/intro_templates.txt b/lib/plugins/extension/lang/cs/intro_templates.txt
new file mode 100644
index 000000000..45abe952c
--- /dev/null
+++ b/lib/plugins/extension/lang/cs/intro_templates.txt
@@ -0,0 +1 @@
+Toto jsou šablony, které jsou momentálně nainstalovány v této DokuWiki. Aktuálně používanu šablonu lze vybrat ve [[?do=admin&page=config|Správci rozšíření]]. \ No newline at end of file
diff --git a/lib/plugins/extension/lang/cs/lang.php b/lib/plugins/extension/lang/cs/lang.php
index 27b3a94a3..d48c517cf 100644
--- a/lib/plugins/extension/lang/cs/lang.php
+++ b/lib/plugins/extension/lang/cs/lang.php
@@ -2,7 +2,7 @@
/**
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
- *
+ *
* @author Viktor Zavadil <vzavadil@newps.cz>
* @author Jaroslav Lichtblau <jlichtblau@seznam.cz>
*/
@@ -15,6 +15,7 @@ $lang['notimplemented'] = 'Tato vychytávka není dosud implementována';
$lang['notinstalled'] = 'Toto rozšíření není instalováno';
$lang['alreadyenabled'] = 'Toto rozšíření je již povoleno';
$lang['alreadydisabled'] = 'Toto rozšíření je již vypnuto';
+$lang['pluginlistsaveerror'] = 'Došlo k chybě při ukládání seznamu zásuvných modulů';
$lang['unknownauthor'] = 'Neznámý autor';
$lang['unknownversion'] = 'Neznámá verze';
$lang['btn_info'] = 'Zobrazit více informací';
@@ -27,12 +28,15 @@ $lang['btn_reinstall'] = 'Přeinstalovat';
$lang['js']['reallydel'] = 'Opravdu odinstalovat toto rozšíření?';
$lang['search_for'] = 'Hledat rozšíření:';
$lang['search'] = 'Hledat';
+$lang['extensionby'] = '<strong>%s</strong> od %s';
+$lang['screenshot'] = 'Screenshot %s';
$lang['popularity'] = 'Popularita: %s%%';
$lang['homepage_link'] = 'Dokumenty';
$lang['bugs_features'] = 'Chyby';
$lang['tags'] = 'Štítky:';
$lang['author_hint'] = 'Vyhledat rozšíření podle tohoto autora';
$lang['installed'] = 'Nainstalováno:';
+$lang['downloadurl'] = 'URL stahování:';
$lang['repository'] = 'Repozitář:';
$lang['unknown'] = '<em>neznámý</em>';
$lang['installed_version'] = 'Nainstalovaná verze:';
@@ -41,6 +45,7 @@ $lang['available_version'] = 'Dostupná verze:';
$lang['compatible'] = 'Kompatibilní s:';
$lang['depends'] = 'Závisí na:';
$lang['similar'] = 'Podobný jako:';
+$lang['conflicts'] = 'Koliduje s:';
$lang['donate'] = 'Líbí se ti to?';
$lang['donate_action'] = 'Kup autorovi kávu!';
$lang['repo_retry'] = 'Opakovat';
@@ -54,4 +59,34 @@ $lang['status_disabled'] = 'zakázaný';
$lang['status_unmodifiable'] = 'neměnný';
$lang['status_plugin'] = 'zásuvný modul';
$lang['status_template'] = 'šablona';
-$lang['msg_delete_success'] = 'Rozšíření odinstalováno';
+$lang['status_bundled'] = 'svázaný';
+$lang['msg_enabled'] = 'Zásuvný modul %s povolen';
+$lang['msg_disabled'] = 'Zásuvný modul %s zakázán';
+$lang['msg_delete_success'] = 'Rozšíření %s odinstalováno';
+$lang['msg_delete_failed'] = 'Odinstalování rozšíření %s selhalo';
+$lang['msg_template_install_success'] = 'Šablona %s úspěšně nainstalována';
+$lang['msg_template_update_success'] = 'Šablona %s úspěšně aktualizována';
+$lang['msg_plugin_install_success'] = 'Zásuvný modul %s úspěšně nainstalován.';
+$lang['msg_plugin_update_success'] = 'Zásuvný modul %s úspěšně aktualizován.';
+$lang['msg_upload_failed'] = 'Nahrávání souboru selhalo';
+$lang['missing_dependency'] = '<strong>Chybějící nebo zakázaná závislost:</strong> %s';
+$lang['security_issue'] = '<strong>Bezpečnostní problém:</strong> %s';
+$lang['security_warning'] = '<strong>Bezpečnostní varování:</strong> %s';
+$lang['update_available'] = '<strong>Aktualizace:</strong> Je dostupná nová verze %s.';
+$lang['wrong_folder'] = '<strong>Zásuvný modul nesprávně nainstalován:</strong> Přejmenujte adresář modulu "%s" na "%s".';
+$lang['url_change'] = '<strong>URL se změnila:</strong> URL pro stahování se změnila od poslední aktualizace. Před další aktualizací tohoto rozšíření ověřte správnost nové URL.<br />Nová: %s<br />Stará: %s';
+$lang['error_badurl'] = 'Adresy URL by měly začínat s http nebo https';
+$lang['error_dircreate'] = 'Nelze vytvořit dočasný adresář pro přijetí stahování';
+$lang['error_download'] = 'Nelze stáhnout soubor: %s';
+$lang['error_decompress'] = 'Selhalo rozbalení staženého souboru. Toto je nejspíš důsledek poškození souboru při přenosu, zkuste soubor stáhnout znovu; případně nemusel být rozpoznán formát sbaleného souboru a bude třeba přistoupit k ruční instalaci. ';
+$lang['error_findfolder'] = 'Nelze rozpoznat adresář pro rozšíření, je třeba stáhnout a instalovat ručně';
+$lang['error_copy'] = 'Došlo k chybě kopírování souborů při pokusu nainstalovat soubory do adresáře <em>%s</em>: může být plný disk nebo špatně nastavena přístupová práva. Tato chyba mohla zapříčinit pouze částečnou instalaci zásuvného modulu a uvést wiki do nestabilního stavu.';
+$lang['noperms'] = 'Nelze zapisovat do adresáře pro rozšíření';
+$lang['notplperms'] = 'Nelze zapisovat do odkládacího adresáře';
+$lang['nopluginperms'] = 'Nelze zapisovat do adresáře se zásuvnými moduly';
+$lang['git'] = 'Toto rozšíření bylo nainstalováno přes git. Touto cestou ho nejspíš tady aktualizovat nechcete.';
+$lang['auth'] = 'Tento ověřovací zásuvný modul není povolen v nastavení, zvažte jeho deaktivaci.';
+$lang['install_url'] = 'Nainstalovat z URL:';
+$lang['install_upload'] = 'Nahrát rozšíření:';
+$lang['repo_error'] = 'Nelze kontaktovat repozitář se zásuvnými moduly. Ujistěte se, že váš server může kontaktovat www.dokuwiki.org a zkontrolujte nastavení proxy.';
+$lang['nossl'] = 'Použité PHP pravděpodobně nepodporuje SSL. Stažení mnoha DokuWiki rozšíření nebude fungovat.';
diff --git a/lib/plugins/extension/lang/da/intro_install.txt b/lib/plugins/extension/lang/da/intro_install.txt
new file mode 100644
index 000000000..e5657f218
--- /dev/null
+++ b/lib/plugins/extension/lang/da/intro_install.txt
@@ -0,0 +1 @@
+Her kan du installerer plugins eller templates manuelt, ved enten at uploade dem eller angive en direkte URL til download. \ No newline at end of file
diff --git a/lib/plugins/extension/lang/da/intro_plugins.txt b/lib/plugins/extension/lang/da/intro_plugins.txt
new file mode 100644
index 000000000..5d9deaf1e
--- /dev/null
+++ b/lib/plugins/extension/lang/da/intro_plugins.txt
@@ -0,0 +1 @@
+Dette er de plugins du aktuelt har installeret i din DokuWiki. Du kan aktivere, deaktiver eller fjerne plugins fra denne side. Opdateringer til plugins vises også her - husk at læse dokumentationen til et plugin inden du opdaterer det. \ No newline at end of file
diff --git a/lib/plugins/extension/lang/da/intro_templates.txt b/lib/plugins/extension/lang/da/intro_templates.txt
new file mode 100644
index 000000000..1914500b1
--- /dev/null
+++ b/lib/plugins/extension/lang/da/intro_templates.txt
@@ -0,0 +1 @@
+Dette er de templates du aktuelt har installeret i din DokuWiki. Du kan vælge det template du vil benytte under [[?do=admin&page=config|Opsætningsstyring]]. \ No newline at end of file
diff --git a/lib/plugins/extension/lang/da/lang.php b/lib/plugins/extension/lang/da/lang.php
new file mode 100644
index 000000000..17cb3b57c
--- /dev/null
+++ b/lib/plugins/extension/lang/da/lang.php
@@ -0,0 +1,80 @@
+<?php
+
+/**
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Søren Birk <soer9648@eucl.dk>
+ * @author Jacob Palm <mail@jacobpalm.dk>
+ */
+$lang['tab_plugins'] = 'Installerede plugins';
+$lang['tab_templates'] = 'Installerede templates';
+$lang['tab_search'] = 'Søg og installer';
+$lang['tab_install'] = 'Manuel installation';
+$lang['notimplemented'] = 'Denne funktion er ikke implementeret endnu';
+$lang['unknownauthor'] = 'Ukendt udgiver';
+$lang['unknownversion'] = 'Ukendt version';
+$lang['btn_info'] = 'Vis mere information';
+$lang['btn_update'] = 'Opdater';
+$lang['btn_uninstall'] = 'Afinstaller';
+$lang['btn_enable'] = 'Aktiver';
+$lang['btn_disable'] = 'Deaktiver';
+$lang['btn_install'] = 'Installer';
+$lang['btn_reinstall'] = 'Geninstaller';
+$lang['js']['reallydel'] = 'Er du sikker på at du vil afinstallere denne udvidelse?';
+$lang['search_for'] = 'Søg efter udvidelse:';
+$lang['search'] = 'Søg';
+$lang['extensionby'] = '<strong>%s</strong> af %s';
+$lang['screenshot'] = 'Skærmbillede af %s';
+$lang['popularity'] = 'Popularitet: %s%%';
+$lang['homepage_link'] = 'Dokumenter';
+$lang['bugs_features'] = 'Fejl';
+$lang['tags'] = 'Tags:';
+$lang['author_hint'] = 'Søg efter udvidelse af denne udgiver';
+$lang['installed'] = 'Installeret:';
+$lang['downloadurl'] = 'Download URL:';
+$lang['unknown'] = '<em>ukendt</em>';
+$lang['installed_version'] = 'Installeret version:';
+$lang['install_date'] = 'Din sidste opdatering:';
+$lang['available_version'] = 'Tilgængelig version:';
+$lang['compatible'] = 'Kompatibel med:';
+$lang['depends'] = 'Afhængig af:';
+$lang['similar'] = 'Ligner:';
+$lang['donate'] = 'Synes du om denne?';
+$lang['donate_action'] = 'Køb en kop kaffe til udvikleren!';
+$lang['repo_retry'] = 'Førsøg igen';
+$lang['status'] = 'Status:';
+$lang['status_installed'] = 'installeret';
+$lang['status_not_installed'] = 'ikke installeret';
+$lang['status_protected'] = 'beskyttet';
+$lang['status_enabled'] = 'aktiveret';
+$lang['status_disabled'] = 'deaktiveret';
+$lang['status_unmodifiable'] = 'låst for ændringer';
+$lang['status_plugin'] = 'plugin';
+$lang['status_template'] = 'template';
+$lang['msg_enabled'] = 'Plugin %s aktiveret';
+$lang['msg_disabled'] = 'Plugin %s deaktiveret';
+$lang['msg_delete_success'] = 'Udvidelse %s afinstalleret';
+$lang['msg_delete_failed'] = 'Kunne ikke afinstallere udvidelsen %s';
+$lang['msg_template_install_success'] = 'Template %s blev installeret';
+$lang['msg_template_update_success'] = 'Template %s blev opdateret';
+$lang['msg_plugin_install_success'] = 'Plugin %s blev installeret';
+$lang['msg_plugin_update_success'] = 'Plugin %s blev opdateret';
+$lang['msg_upload_failed'] = 'Kunne ikke uploade filen';
+$lang['update_available'] = '<strong>Opdatering:</strong> Ny version %s er tilgængelig.';
+$lang['wrong_folder'] = '<strong>Plugin ikke installeret korrekt:</strong> Omdøb plugin-mappe "%s" til "%s".';
+$lang['url_change'] = '<strong>URL ændret:</strong> Download-URL er blevet ændret siden sidste download. Kontrollér om den nye URL er valid, inden udvidelsen opdateres.<br />Ny: %s<br />Gammel: %s';
+$lang['error_badurl'] = 'URL\'er skal starte med http eller https';
+$lang['error_dircreate'] = 'Ikke i stand til at oprette midlertidig mappe til modtagelse af download';
+$lang['error_download'] = 'Ikke i stand til at downloade filen: %s';
+$lang['error_decompress'] = 'Ikke i stand til at dekomprimere den downloadede fil. Dette kan være et resultat af en dårlig download, hvor du i så fald bør du prøve igen; eller komprimeringsformatet kan være ukendt, hvor du i så fald bliver nød til at downloade og installere manuelt.';
+$lang['error_findfolder'] = 'Ikke i stand til at identificere udvidelsesmappe - du bliver nød til at downloade og installere manuelt.';
+$lang['error_copy'] = 'Der opstod en kopieringsfejl under installation af filer til mappen <em>%s</em>: disken kan være fuld, eller mangel på fil-tilladelser. Dette kan have resulteret i et delvist installeret plugin, og efterladt din wiki-installation ustabil.';
+$lang['noperms'] = 'Udvidelsesmappe er ikke skrivbar';
+$lang['notplperms'] = 'Skabelonmappe er ikke skrivbar';
+$lang['nopluginperms'] = 'Pluginmappe er ikke skrivbar';
+$lang['git'] = 'Udvidelsen blev installeret via git - du vil muligvis ikke opdatere herfra.';
+$lang['auth'] = 'Auth-plugin er ikke aktiveret i konfigurationen - overvej at deaktivere den.';
+$lang['install_url'] = 'Installér fra URL:';
+$lang['install_upload'] = 'Upload Udvidelse:';
+$lang['repo_error'] = 'Plugin-arkivet kunne ikke kontaktes. Kontrollér at din server kan kontakte www.dokuwiki.org kontrollér dine proxy-indstillinger.';
+$lang['nossl'] = 'Din PHP lader til at mangle understøttelse for SSL. Mange DokuWiki udvidelser vil ikke kunne downloades.';
diff --git a/lib/plugins/extension/lang/de/lang.php b/lib/plugins/extension/lang/de/lang.php
index ce5495e24..a47c9360f 100644
--- a/lib/plugins/extension/lang/de/lang.php
+++ b/lib/plugins/extension/lang/de/lang.php
@@ -8,6 +8,8 @@
* @author Simon <st103267@stud.uni-stuttgart.de>
* @author Hoisl <hoisl@gmx.at>
* @author Dominik Mahr <drache.mahr@gmx.de>
+ * @author Noel Tilliot <noeltilliot@byom.de>
+ * @author Philip Knack <p.knack@stollfuss.de>
*/
$lang['menu'] = 'Erweiterungen verwalten';
$lang['tab_plugins'] = 'Installierte Plugins';
@@ -29,6 +31,10 @@ $lang['btn_disable'] = 'Deaktivieren';
$lang['btn_install'] = 'Installieren';
$lang['btn_reinstall'] = 'Neu installieren';
$lang['js']['reallydel'] = 'Wollen Sie diese Erweiterung wirklich löschen?';
+$lang['js']['display_viewoptions'] = 'Optionen anzeigen';
+$lang['js']['display_enabled'] = 'aktiviert';
+$lang['js']['display_disabled'] = 'deaktiviert';
+$lang['js']['display_updatable'] = 'aktualisierbar';
$lang['search_for'] = 'Erweiterung suchen:';
$lang['search'] = 'Suchen';
$lang['extensionby'] = '<strong>%s</strong> von %s';
@@ -65,7 +71,8 @@ $lang['status_template'] = 'Template';
$lang['status_bundled'] = 'gebündelt';
$lang['msg_enabled'] = 'Plugin %s ist aktiviert';
$lang['msg_disabled'] = 'Erweiterung %s ist deaktiviert';
-$lang['msg_delete_success'] = 'Erweiterung wurde entfernt';
+$lang['msg_delete_success'] = 'Erweiterung %s wurde entfernt';
+$lang['msg_delete_failed'] = 'Deinstallation der Erweiterung %s fehlgeschlagen';
$lang['msg_template_install_success'] = 'Das Template %s wurde erfolgreich installiert';
$lang['msg_template_update_success'] = 'Das Update des Templates %s war erfolgreich ';
$lang['msg_plugin_install_success'] = 'Das Plugin %s wurde erfolgreich installiert';
@@ -87,6 +94,8 @@ $lang['noperms'] = 'Das Erweiterungs-Verzeichnis ist schreibgesch
$lang['notplperms'] = 'Das Template-Verzeichnis ist schreibgeschützt';
$lang['nopluginperms'] = 'Das Plugin-Verzeichnis ist schreibgeschützt';
$lang['git'] = 'Diese Erweiterung wurde über git installiert und sollte daher nicht hier aktualisiert werden.';
+$lang['auth'] = 'Dieses Auth Plugin ist in der Konfiguration nicht aktiviert, Sie sollten es deaktivieren.';
$lang['install_url'] = 'Von Webadresse (URL) installieren';
$lang['install_upload'] = 'Erweiterung hochladen:';
$lang['repo_error'] = 'Es konnte keine Verbindung zum Plugin-Verzeichnis hergestellt werden. Stellen sie sicher das der Server Verbindung mit www.dokuwiki.org aufnehmen darf und überprüfen sie ihre Proxy Einstellungen.';
+$lang['nossl'] = 'Ihr PHP scheint SSL nicht zu unterstützen. Das Herunterladen vieler DokuWiki Erweiterungen wird scheitern.';
diff --git a/lib/plugins/extension/lang/en/lang.php b/lib/plugins/extension/lang/en/lang.php
index 72c9b9e2d..79f643629 100644
--- a/lib/plugins/extension/lang/en/lang.php
+++ b/lib/plugins/extension/lang/en/lang.php
@@ -69,7 +69,8 @@ $lang['status_bundled'] = 'bundled';
$lang['msg_enabled'] = 'Plugin %s enabled';
$lang['msg_disabled'] = 'Plugin %s disabled';
-$lang['msg_delete_success'] = 'Extension uninstalled';
+$lang['msg_delete_success'] = 'Extension %s uninstalled';
+$lang['msg_delete_failed'] = 'Uninstalling Extension %s failed';
$lang['msg_template_install_success'] = 'Template %s installed successfully';
$lang['msg_template_update_success'] = 'Template %s updated successfully';
$lang['msg_plugin_install_success'] = 'Plugin %s installed successfully';
@@ -94,8 +95,15 @@ $lang['noperms'] = 'Extension directory is not writable';
$lang['notplperms'] = 'Template directory is not writable';
$lang['nopluginperms'] = 'Plugin directory is not writable';
$lang['git'] = 'This extension was installed via git, you may not want to update it here.';
+$lang['auth'] = 'This auth plugin is not enabled in configuration, consider disabling it.';
$lang['install_url'] = 'Install from URL:';
$lang['install_upload'] = 'Upload Extension:';
-$lang['repo_error'] = 'The plugin repository could not be contacted. Make sure your server is allowed to contact www.dokuwiki.org and check your proxy settings.'; \ No newline at end of file
+$lang['repo_error'] = 'The plugin repository could not be contacted. Make sure your server is allowed to contact www.dokuwiki.org and check your proxy settings.';
+$lang['nossl'] = 'Your PHP seems to miss SSL support. Downloading will not work for many DokuWiki extensions.';
+
+$lang['js']['display_viewoptions'] = 'View Options:';
+$lang['js']['display_enabled'] = 'enabled';
+$lang['js']['display_disabled'] = 'disabled';
+$lang['js']['display_updatable'] = 'updatable';
diff --git a/lib/plugins/extension/lang/eo/lang.php b/lib/plugins/extension/lang/eo/lang.php
index 6ce840be8..e0488cb46 100644
--- a/lib/plugins/extension/lang/eo/lang.php
+++ b/lib/plugins/extension/lang/eo/lang.php
@@ -2,7 +2,7 @@
/**
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
- *
+ *
* @author Robert Bogenschneider <bogi@uea.org>
*/
$lang['menu'] = 'Aldonaĵa administrado';
@@ -61,7 +61,7 @@ $lang['status_template'] = 'ŝablono';
$lang['status_bundled'] = 'kunliverita';
$lang['msg_enabled'] = 'Kromaĵo %s ebligita';
$lang['msg_disabled'] = 'Kromaĵo %s malebligita';
-$lang['msg_delete_success'] = 'Aldonaĵo malinstaliĝis';
+$lang['msg_delete_success'] = 'Aldonaĵo %s malinstaliĝis';
$lang['msg_template_install_success'] = 'Ŝablono %s sukcese instaliĝis';
$lang['msg_template_update_success'] = 'Ŝablono %s sukcese aktualiĝis';
$lang['msg_plugin_install_success'] = 'Kromaĵo %s sukcese instaliĝis';
diff --git a/lib/plugins/extension/lang/es/intro_plugins.txt b/lib/plugins/extension/lang/es/intro_plugins.txt
new file mode 100644
index 000000000..4805021f9
--- /dev/null
+++ b/lib/plugins/extension/lang/es/intro_plugins.txt
@@ -0,0 +1 @@
+Estos son los plugins actualmente instalados en su DokuWiki. Puede activar, desactivar o incluso desinstalar completamente desde aquí. Actualizaciones de los Plugin se muestran también aquí, asegúrese de leer la documentación del plugin antes de actualizar. \ No newline at end of file
diff --git a/lib/plugins/extension/lang/es/intro_search.txt b/lib/plugins/extension/lang/es/intro_search.txt
new file mode 100644
index 000000000..f59bb33df
--- /dev/null
+++ b/lib/plugins/extension/lang/es/intro_search.txt
@@ -0,0 +1 @@
+Esta pestaña te da acceso a todos los plugins de 3as partes disponibles y plantillas para DokuWiki. Tenga en cuenta que la instalación de código de terceras partes puede plantear un **riesgo de seguridad**, es posible que desee leer primero sobre [[doku>security#plugin_security|plugin security]]. \ No newline at end of file
diff --git a/lib/plugins/extension/lang/es/lang.php b/lib/plugins/extension/lang/es/lang.php
index 63742c3b3..28cdf86ca 100644
--- a/lib/plugins/extension/lang/es/lang.php
+++ b/lib/plugins/extension/lang/es/lang.php
@@ -6,6 +6,9 @@
* @author Antonio Bueno <atnbueno@gmail.com>
* @author Antonio Castilla <antoniocastilla@trazoide.com>
* @author Jonathan Hernández <me@jhalicea.com>
+ * @author Álvaro Iradier <airadier@gmail.com>
+ * @author Mauricio Segura <maose38@yahoo.es>
+ * @author Domingo Redal <docxml@gmail.com>
*/
$lang['menu'] = 'Administrador de Extensiones ';
$lang['tab_plugins'] = 'Plugins instalados';
@@ -27,6 +30,10 @@ $lang['btn_disable'] = 'Desactivar';
$lang['btn_install'] = 'Instalar';
$lang['btn_reinstall'] = 'Reinstalar';
$lang['js']['reallydel'] = '¿Realmente quiere desinstalar esta extensión?';
+$lang['js']['display_viewoptions'] = 'Ver opciones:';
+$lang['js']['display_enabled'] = 'habilitado';
+$lang['js']['display_disabled'] = 'deshabilitado';
+$lang['js']['display_updatable'] = 'actualizable';
$lang['search_for'] = 'Extensión de búsqueda :';
$lang['search'] = 'Buscar';
$lang['extensionby'] = '<strong>%s</strong> por %s';
@@ -63,7 +70,8 @@ $lang['status_template'] = 'plantilla';
$lang['status_bundled'] = 'agrupado';
$lang['msg_enabled'] = 'Plugin %s activado';
$lang['msg_disabled'] = 'Plugin %s desactivado';
-$lang['msg_delete_success'] = 'Extensión desinstalada';
+$lang['msg_delete_success'] = 'Extensión %s desinstalada';
+$lang['msg_delete_failed'] = 'La desinstalación de la extensión %s ha fallado';
$lang['msg_template_install_success'] = 'Plantilla %s instalada con éxito';
$lang['msg_template_update_success'] = 'Plantilla %s actualizada con éxito';
$lang['msg_plugin_install_success'] = 'Plugin %s instalado con éxito';
@@ -78,7 +86,15 @@ $lang['url_change'] = '<strong>URL actualizada:</strong> El Download
$lang['error_badurl'] = 'URLs deberían empezar con http o https';
$lang['error_dircreate'] = 'No es posible de crear un directorio temporero para poder recibir el download';
$lang['error_download'] = 'No es posible descargar el documento: %s';
+$lang['error_decompress'] = 'No se pudo descomprimir el fichero descargado. Puede ser a causa de una descarga incorrecta, en cuyo caso puedes intentarlo de nuevo; o puede que el formato de compresión sea desconocido, en cuyo caso necesitarás descargar e instalar manualmente.';
+$lang['error_findfolder'] = 'No se ha podido identificar el directorio de la extensión, es necesario descargar e instalar manualmente';
+$lang['error_copy'] = 'Hubo un error durante la copia de archivos al intentar instalar los archivos del directorio <em>%s</em>: el disco puede estar lleno o los permisos de acceso a los archivos pueden ser incorrectos. Esto puede haber dado lugar a un plugin instalado parcialmente y dejar su instalación wiki inestable';
+$lang['noperms'] = 'El directorio de extensiones no tiene permiso de escritura.';
+$lang['notplperms'] = 'El directorio de plantillas no tiene permiso de escritura.';
+$lang['nopluginperms'] = 'No se puede escribir en el directorio de plugins';
$lang['git'] = 'Esta extensión fue instalada a través de git, quizás usted no quiera actualizarla aquí mismo.';
+$lang['auth'] = 'Este plugin de autenticación no está habilitada en la configuración, considere la posibilidad de desactivarlo.';
$lang['install_url'] = 'Instalar desde URL:';
$lang['install_upload'] = 'Subir Extensión:';
$lang['repo_error'] = 'El repositorio de plugins no puede ser contactado. Asegúrese que su servidor pueda contactar www.dokuwiki.org y verificar la configuración de su proxy.';
+$lang['nossl'] = 'Tu PHP parece no tener soporte SSL. Las descargas no funcionaran para muchas extensiones de DokuWiki.';
diff --git a/lib/plugins/extension/lang/fi/lang.php b/lib/plugins/extension/lang/fi/lang.php
new file mode 100644
index 000000000..a154f2563
--- /dev/null
+++ b/lib/plugins/extension/lang/fi/lang.php
@@ -0,0 +1,37 @@
+<?php
+
+/**
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Jussi Takala <jussi.takala@live.fi>
+ */
+$lang['tab_plugins'] = 'Asennetut liitännäiset';
+$lang['tab_search'] = 'Etsi ja asenna';
+$lang['tab_install'] = 'Manuaalinen asennus';
+$lang['notimplemented'] = 'Tätä ominaisuutta ei ole vielä toteutettu';
+$lang['notinstalled'] = 'Tätä laajennusta ei ole asennettu';
+$lang['alreadyenabled'] = 'Tämä laajennus on jo käytössä';
+$lang['alreadydisabled'] = 'Tämä laajennus on jo otettu pois käytöstä';
+$lang['pluginlistsaveerror'] = 'Tapahtui virhe tallentaessa liitännäislistaa';
+$lang['unknownauthor'] = 'Tuntematon tekijä';
+$lang['unknownversion'] = 'Tuntematon versio';
+$lang['btn_info'] = 'Näytä lisää tietoa';
+$lang['btn_update'] = 'Päivitä';
+$lang['btn_enable'] = 'Ota käyttöön';
+$lang['btn_disable'] = 'Poista käytöstä';
+$lang['btn_install'] = 'Asenna';
+$lang['btn_reinstall'] = 'Uudelleenasenna';
+$lang['js']['reallydel'] = 'Haluatko varmasti poistaa tämän laajennuksen?';
+$lang['search_for'] = 'Etsi laajennusta:';
+$lang['search'] = 'Etsi';
+$lang['downloadurl'] = 'Lataa URL-osoite';
+$lang['installed_version'] = 'Asennettu versio';
+$lang['install_date'] = 'Sinun viimeinen päivitys:';
+$lang['available_version'] = 'Saatavissa oleva versio:';
+$lang['status_installed'] = 'asennettu';
+$lang['status_protected'] = 'suojattu';
+$lang['status_enabled'] = 'otettu käyttöön';
+$lang['status_disabled'] = 'otettu pois käytöstä';
+$lang['status_plugin'] = 'liitännäinen';
+$lang['install_url'] = 'Asenna URL-osoitteesta:';
+$lang['install_upload'] = 'Ladattu laajennus:';
diff --git a/lib/plugins/extension/lang/fr/lang.php b/lib/plugins/extension/lang/fr/lang.php
index 88234efd0..4cb6f0d25 100644
--- a/lib/plugins/extension/lang/fr/lang.php
+++ b/lib/plugins/extension/lang/fr/lang.php
@@ -4,8 +4,11 @@
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
* @author Schplurtz le Déboulonné <schplurtz@laposte.net>
+ * @author Yves Grandvalet <Yves.Grandvalet@laposte.net>
+ * @author Carbain Frédéric <fcarbain@yahoo.fr>
+ * @author Nicolas Friedli <nicolas@theologique.ch>
*/
-$lang['menu'] = 'Gestionnaire d\'extension';
+$lang['menu'] = 'Gestionnaire d\'extensions';
$lang['tab_plugins'] = 'Greffons installés';
$lang['tab_templates'] = 'Thèmes installés';
$lang['tab_search'] = 'Rechercher et installer';
@@ -25,6 +28,10 @@ $lang['btn_disable'] = 'Désactiver';
$lang['btn_install'] = 'Installer';
$lang['btn_reinstall'] = 'Réinstaller';
$lang['js']['reallydel'] = 'Vraiment désinstaller cette extension';
+$lang['js']['display_viewoptions'] = 'Voir les options:';
+$lang['js']['display_enabled'] = 'activé';
+$lang['js']['display_disabled'] = 'désactivé';
+$lang['js']['display_updatable'] = 'Mise à jour possible';
$lang['search_for'] = 'Rechercher l\'extension :';
$lang['search'] = 'Chercher';
$lang['extensionby'] = '<strong>%s</strong> de %s';
@@ -61,8 +68,9 @@ $lang['status_template'] = 'thème';
$lang['status_bundled'] = 'fourni';
$lang['msg_enabled'] = 'Greffon %s activé';
$lang['msg_disabled'] = 'Greffon %s désactivé';
-$lang['msg_delete_success'] = 'Extension désinstallée';
-$lang['msg_template_install_success'] = 'Thème %s installée avec succès';
+$lang['msg_delete_success'] = 'Extension %s désinstallée.';
+$lang['msg_delete_failed'] = 'Echec de la désinstallation de l\'extension %s';
+$lang['msg_template_install_success'] = 'Thème %s installé avec succès';
$lang['msg_template_update_success'] = 'Thème %s mis à jour avec succès';
$lang['msg_plugin_install_success'] = 'Greffon %s installé avec succès';
$lang['msg_plugin_update_success'] = 'Greffon %s mis à jour avec succès';
@@ -77,12 +85,14 @@ $lang['error_badurl'] = 'Les URL doivent commencer par http ou https';
$lang['error_dircreate'] = 'Impossible de créer le dossier temporaire pour le téléchargement.';
$lang['error_download'] = 'Impossible de télécharger le fichier : %s';
$lang['error_decompress'] = 'Impossible de décompresser le fichier téléchargé. C\'est peut être le résultat d\'une erreur de téléchargement, auquel cas vous devriez réessayer. Le format de compression est peut-être inconnu. Dans ce cas il vous faudra procéder à une installation manuelle.';
-$lang['error_findfolder'] = 'Impossible d\'idnetifier le dossier de l\'extension. vous devez procéder à une installation manuelle.';
+$lang['error_findfolder'] = 'Impossible d\'identifier le dossier de l\'extension. vous devez procéder à une installation manuelle.';
$lang['error_copy'] = 'Une erreur de copie de fichier s\'est produite lors de l\'installation des fichiers dans le dossier <em>%s</em>. Il se peut que le disque soit plein, ou que les permissions d\'accès aux fichiers soient incorrectes. Il est possible que le greffon soit partiellement installé et que cela laisse votre installation de DoluWiki instable.';
$lang['noperms'] = 'Impossible d\'écrire dans le dossier des extensions.';
$lang['notplperms'] = 'Impossible d\'écrire dans le dossier des thèmes.';
$lang['nopluginperms'] = 'Impossible d\'écrire dans le dossier des greffons.';
$lang['git'] = 'Cette extension a été installé via git, vous voudrez peut-être ne pas la mettre à jour ici.';
+$lang['auth'] = 'Votre configuration n\'utilise pas ce greffon d\'authentification. Vous devriez songer à le désactiver.';
$lang['install_url'] = 'Installez depuis l\'URL :';
$lang['install_upload'] = 'Téléversez l\'extension :';
$lang['repo_error'] = 'L\'entrepôt d\'extensions est injoignable. Veuillez vous assurer que le server web est autorisé à contacter www.dokuwiki.org et vérifier les réglages de proxy.';
+$lang['nossl'] = 'Votre version de PHP semble ne pas prendre en charge SSL. Le téléchargement de nombreuses extensions va échouer.';
diff --git a/lib/plugins/extension/lang/hr/intro_install.txt b/lib/plugins/extension/lang/hr/intro_install.txt
index fc2d22f52..f3274b0f7 100644
--- a/lib/plugins/extension/lang/hr/intro_install.txt
+++ b/lib/plugins/extension/lang/hr/intro_install.txt
@@ -1 +1 @@
-Ovdje možete ručno instalirati dodatak (plugin) i predložak (template) bilo učitavanjem ili specificiranjem URL-a za direktno učitavanje. \ No newline at end of file
+Ovdje možete ručno postaviti dodatak (plugin) i predložak (template) bilo učitavanjem ili navođenjem URL adrese za direktno učitavanje. \ No newline at end of file
diff --git a/lib/plugins/extension/lang/hr/intro_plugins.txt b/lib/plugins/extension/lang/hr/intro_plugins.txt
index fdc629d62..0c458ee43 100644
--- a/lib/plugins/extension/lang/hr/intro_plugins.txt
+++ b/lib/plugins/extension/lang/hr/intro_plugins.txt
@@ -1 +1 @@
-Ovo su dodaci (plugin) trenutno instalirani na Vašem DokuWiku-u. Možete ih omogućiti, onemogućiti ili u potpunosti deinstalirati. Nadogradnje dodataka su također prikazane, obavezno pročitajte dokumentaciju dodatka prije nadogradnje. \ No newline at end of file
+Ovo su dodaci (plugin) trenutno postavljeni na Vašem DokuWiku-u. Možete ih omogućiti, onemogućiti ili u potpunosti ukloniti. Nadogradnje dodataka su također prikazane, obavezno pročitajte dokumentaciju dodatka prije nadogradnje. \ No newline at end of file
diff --git a/lib/plugins/extension/lang/hr/intro_search.txt b/lib/plugins/extension/lang/hr/intro_search.txt
index 93bf4b000..405690581 100644
--- a/lib/plugins/extension/lang/hr/intro_search.txt
+++ b/lib/plugins/extension/lang/hr/intro_search.txt
@@ -1 +1 @@
-Ovaj tab vam pruža pristup dostupnim dodatcima i predlošcima za DokuWiki od treće strane. Molimo budite svjesni da instaliranje koda od treće strane može biti **sigurnosni rizik**, možda želite prvo pročitati o [[doku>security#plugin_security|sigurnosti dodataka]]. \ No newline at end of file
+Ovdje možete potražiti i druge dostupne dodatke i predloške za DokuWiki. Molimo budite svjesni da postavljanje koda razvijenog od treće strane može biti **sigurnosni rizik**, možda želite prvo pročitati o [[doku>security#plugin_security|sigurnosti dodataka]]. \ No newline at end of file
diff --git a/lib/plugins/extension/lang/hr/intro_templates.txt b/lib/plugins/extension/lang/hr/intro_templates.txt
index 968906cf9..76dafe6b7 100644
--- a/lib/plugins/extension/lang/hr/intro_templates.txt
+++ b/lib/plugins/extension/lang/hr/intro_templates.txt
@@ -1 +1 @@
-Ovo su predlošci trenutno instalirani na Vašem DokuWiki-u. Možete odabrati koji se predložak koristi na [[?do=admin&page=config|Upravitelju postavki]]. \ No newline at end of file
+Ovo su predlošci trenutno postavljeni na Vašem DokuWiki-u. Koji se predložak koristi možete odabrati na [[?do=admin&page=config|Upravitelju postavki]]. \ No newline at end of file
diff --git a/lib/plugins/extension/lang/hr/lang.php b/lib/plugins/extension/lang/hr/lang.php
index 4905fe864..e51d8cba3 100644
--- a/lib/plugins/extension/lang/hr/lang.php
+++ b/lib/plugins/extension/lang/hr/lang.php
@@ -5,25 +5,25 @@
*
* @author Davor Turkalj <turki.bsc@gmail.com>
*/
-$lang['menu'] = 'Upravitelj dodataka';
-$lang['tab_plugins'] = 'Instalirani dodatci';
-$lang['tab_templates'] = 'Instalirani predlošci';
-$lang['tab_search'] = 'Potraži i instaliraj';
-$lang['tab_install'] = 'Ručno instaliranje';
+$lang['menu'] = 'Upravitelj proširenja';
+$lang['tab_plugins'] = 'Ugrađeni dodatci';
+$lang['tab_templates'] = 'Ugrađeni predlošci';
+$lang['tab_search'] = 'Potraži i ugradi';
+$lang['tab_install'] = 'Ručna ugradnja';
$lang['notimplemented'] = 'Ova mogućnost još nije napravljena';
-$lang['notinstalled'] = 'Dodatak nije instaliran';
-$lang['alreadyenabled'] = 'Ovaj dodatak je već omogućen';
-$lang['alreadydisabled'] = 'Ovaj dodatak je već onemogućen';
+$lang['notinstalled'] = 'Proširenje nije ugrađeno';
+$lang['alreadyenabled'] = 'Ovo proširenje je već omogućeno';
+$lang['alreadydisabled'] = 'Ovo proširenje je već onemogućeno';
$lang['pluginlistsaveerror'] = 'Dogodila se greška pri snimanju liste dodataka';
$lang['unknownauthor'] = 'Nepoznat autor';
$lang['unknownversion'] = 'Nepoznata inačica';
$lang['btn_info'] = 'Prikaži više informacija';
-$lang['btn_update'] = 'Dopuni';
+$lang['btn_update'] = 'Ažuriraj';
$lang['btn_uninstall'] = 'Ukloni';
$lang['btn_enable'] = 'Omogući';
$lang['btn_disable'] = 'Onemogući';
-$lang['btn_install'] = 'Postavi';
-$lang['btn_reinstall'] = 'Ponovno postavi';
+$lang['btn_install'] = 'Ugradi';
+$lang['btn_reinstall'] = 'Ponovno ugradi';
$lang['js']['reallydel'] = 'Zaista ukloniti ovo proširenje?';
$lang['search_for'] = 'Pretraži proširenja';
$lang['search'] = 'Pretraži';
@@ -33,12 +33,12 @@ $lang['popularity'] = 'Popularnost: %s%%';
$lang['homepage_link'] = 'Upute';
$lang['bugs_features'] = 'Greške';
$lang['tags'] = 'Oznake:';
-$lang['author_hint'] = 'Potraži dodatke od ovog autora';
-$lang['installed'] = 'Postavljeno:';
+$lang['author_hint'] = 'Potraži proširenja od ovog autora';
+$lang['installed'] = 'Ugrađeno:';
$lang['downloadurl'] = 'URL adresa preuzimanja:';
$lang['repository'] = 'Repozitorij:';
$lang['unknown'] = '<em>nepoznat</em>';
-$lang['installed_version'] = 'Postavljena inačica:';
+$lang['installed_version'] = 'Ugrađena inačica:';
$lang['install_date'] = 'Vaše zadnje osvježavanje:';
$lang['available_version'] = 'Dostupna inačica';
$lang['compatible'] = 'Kompatibilan s:';
@@ -61,7 +61,8 @@ $lang['status_template'] = 'predložak';
$lang['status_bundled'] = 'ugrađen';
$lang['msg_enabled'] = 'Dodatak %s omogućen';
$lang['msg_disabled'] = 'Dodatak %s onemogućen';
-$lang['msg_delete_success'] = 'Proširenje uklonjeno';
+$lang['msg_delete_success'] = 'Proširenje %s uklonjeno';
+$lang['msg_delete_failed'] = 'Uklanjanje proširenja %s nije uspjelo';
$lang['msg_template_install_success'] = 'Predložak %s uspješno ugrađen';
$lang['msg_template_update_success'] = 'Predložak %s uspješno nadograđen';
$lang['msg_plugin_install_success'] = 'Dodatak %s uspješno ugrađen';
@@ -83,6 +84,8 @@ $lang['noperms'] = 'Nije moguće pisati u mapu proširanja';
$lang['notplperms'] = 'Nije moguće pisati u mapu predloška';
$lang['nopluginperms'] = 'Nije moguće pisati u mapu dodatka';
$lang['git'] = 'Proširenje je ugrađeno preko Git-a, možda ga ne želite nadograđivati ovdje.';
+$lang['auth'] = 'Autorizacijski dodatak nije podešen, razmotrite njegovo onemogućavanje kao dodatka.';
$lang['install_url'] = 'Ugradi s URL-a:';
$lang['install_upload'] = 'Učitaj proširenje:';
$lang['repo_error'] = 'Repozitorij dodataka nije dostupan. Budite sigurni da server može pristupiti www.dokuwiki.org i provjerite proxy postavke.';
+$lang['nossl'] = 'Izgleda da korišteni PHP ne podržava SSL. Učitavanje neće raditi na mnogim DokuWiki dodatcima.';
diff --git a/lib/plugins/extension/lang/hu/lang.php b/lib/plugins/extension/lang/hu/lang.php
index a27b5a307..28194ad9d 100644
--- a/lib/plugins/extension/lang/hu/lang.php
+++ b/lib/plugins/extension/lang/hu/lang.php
@@ -2,7 +2,7 @@
/**
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
- *
+ *
* @author Marton Sebok <sebokmarton@gmail.com>
*/
$lang['menu'] = 'Bővítménykezelő';
@@ -61,7 +61,7 @@ $lang['status_template'] = 'sablon';
$lang['status_bundled'] = 'beépített';
$lang['msg_enabled'] = 'A(z) %s modul engedélyezve';
$lang['msg_disabled'] = 'A(z) %s modul letiltva';
-$lang['msg_delete_success'] = 'A bővítmény törölve';
+$lang['msg_delete_success'] = 'A bővítmény %s törölve';
$lang['msg_template_install_success'] = 'A(z) %s sablon sikeresen telepítve';
$lang['msg_template_update_success'] = 'A(z) %s sablon sikeresen frissítve';
$lang['msg_plugin_install_success'] = 'A(z) %s modul sikeresen telepítve';
diff --git a/lib/plugins/extension/lang/it/intro_install.txt b/lib/plugins/extension/lang/it/intro_install.txt
new file mode 100644
index 000000000..5106500ba
--- /dev/null
+++ b/lib/plugins/extension/lang/it/intro_install.txt
@@ -0,0 +1 @@
+Qui potete installare manualmente plugin e template, sia caricandoli in upload sia fornendo una URL per scaricarli direttamente. \ No newline at end of file
diff --git a/lib/plugins/extension/lang/it/intro_plugins.txt b/lib/plugins/extension/lang/it/intro_plugins.txt
new file mode 100644
index 000000000..cd7825fb2
--- /dev/null
+++ b/lib/plugins/extension/lang/it/intro_plugins.txt
@@ -0,0 +1 @@
+Questi sono i plugin attualmente installati nel vostro DokuWiki. Qui potete abilitarli o disabilitarli o addirittura disinstallarli completamente. Qui sono mostrati anche gli aggiornamenti dei plugin, assicurativi di leggere la relativa documentazione prima di aggiornarli. \ No newline at end of file
diff --git a/lib/plugins/extension/lang/it/lang.php b/lib/plugins/extension/lang/it/lang.php
index 7dff6c5b2..80ed0ddcf 100644
--- a/lib/plugins/extension/lang/it/lang.php
+++ b/lib/plugins/extension/lang/it/lang.php
@@ -5,12 +5,37 @@
*
* @author Francesco <francesco.cavalli@hotmail.com>
* @author Fabio <fabioslurp@yahoo.it>
+ * @author Torpedo <dgtorpedo@gmail.com>
+ * @author Maurizio <mcannavo@katamail.com>
*/
+$lang['menu'] = 'Manager delle Extension';
+$lang['tab_plugins'] = 'Plugin Installati';
+$lang['tab_templates'] = 'Template Installati';
+$lang['tab_search'] = 'Ricerca e Installazione';
+$lang['tab_install'] = 'Installazione Manuale';
+$lang['notimplemented'] = 'Questa funzionalità non è ancora stata implementata';
+$lang['notinstalled'] = 'Questa extension non è installata';
+$lang['alreadyenabled'] = 'Questa extension è già stata abilitata';
+$lang['alreadydisabled'] = 'Questa extension à già stata disabilitata';
+$lang['pluginlistsaveerror'] = 'Si è verificato un errore durante il salvataggio dell\'elenco dei plugin';
+$lang['unknownauthor'] = 'Autore sconosciuto';
+$lang['unknownversion'] = 'Revisione sconosciuta';
+$lang['btn_info'] = 'Mostra maggiori informazioni';
+$lang['btn_update'] = 'Aggiorna';
+$lang['btn_uninstall'] = 'Disinstalla';
$lang['btn_enable'] = 'Abilita';
$lang['btn_disable'] = 'Disabilita';
$lang['btn_install'] = 'Installa';
$lang['btn_reinstall'] = 'Reinstalla';
+$lang['js']['reallydel'] = 'Sicuro di disinstallare questa estensione?';
+$lang['js']['display_viewoptions'] = 'Opzioni di Visualizzazione:';
+$lang['js']['display_enabled'] = 'abilitato';
+$lang['js']['display_disabled'] = 'disabilitato';
+$lang['js']['display_updatable'] = 'aggiornabile';
+$lang['search_for'] = 'Extension di Ricerca:';
$lang['search'] = 'Cerca';
+$lang['screenshot'] = 'Screenshot di %s';
+$lang['popularity'] = 'Popolarità: %s%%';
$lang['homepage_link'] = 'Documenti';
$lang['bugs_features'] = 'Bug';
$lang['tags'] = 'Tag:';
@@ -18,13 +43,18 @@ $lang['author_hint'] = 'Cerca estensioni per questo autore';
$lang['installed'] = 'Installato:';
$lang['downloadurl'] = 'URL download:';
$lang['repository'] = 'Repository';
+$lang['unknown'] = '<em>sconosciuto</em>';
$lang['installed_version'] = 'Versione installata';
$lang['install_date'] = 'Il tuo ultimo aggiornamento:';
$lang['available_version'] = 'Versione disponibile:';
$lang['compatible'] = 'Compatibile con:';
+$lang['depends'] = 'Dipende da:';
$lang['similar'] = 'Simile a:';
+$lang['conflicts'] = 'Conflitto con:';
$lang['donate'] = 'Simile a questo?';
+$lang['donate_action'] = 'Paga un caffè all\'autore!';
$lang['repo_retry'] = 'Riprova';
+$lang['provides'] = 'Fornisce:';
$lang['status'] = 'Status:';
$lang['status_installed'] = 'installato';
$lang['status_not_installed'] = 'non installato';
@@ -34,10 +64,28 @@ $lang['status_disabled'] = 'disabilitato';
$lang['status_unmodifiable'] = 'inmodificabile';
$lang['status_plugin'] = 'plugin';
$lang['status_template'] = 'modello';
+$lang['status_bundled'] = 'accoppiato';
+$lang['msg_enabled'] = 'Plugin %s abilitato';
+$lang['msg_disabled'] = 'Plugin %s disabilitato';
+$lang['msg_delete_success'] = 'Estensione %s disinstallata';
+$lang['msg_delete_failed'] = 'Disinstallazione dell\'Extension %s fallita';
+$lang['msg_template_install_success'] = 'Il template %s è stato installato correttamente';
+$lang['msg_template_update_success'] = 'Il Template %s è stato aggiornato correttamente';
+$lang['msg_plugin_install_success'] = 'Plugin %s installato con successo';
+$lang['msg_plugin_update_success'] = 'Plugin %s aggiornato con successo';
+$lang['msg_upload_failed'] = 'Caricamento del file fallito';
+$lang['missing_dependency'] = '<strong>Dipendenza mancante o disabilitata: </strong> %s';
+$lang['update_available'] = '<strong>Aggiornamento:</strong> Nuova versione %s disponibile.';
+$lang['wrong_folder'] = '<strong>Plugin non installato correttamente:</strong> rinomina la directory del plugin "%s" in "%s".';
$lang['error_badurl'] = 'URLs deve iniziare con http o https';
$lang['error_dircreate'] = 'Impossibile creare una cartella temporanea per ricevere il download';
$lang['error_download'] = 'Impossibile scaricare il file: %s';
+$lang['error_decompress'] = 'Impossibile decomprimere il file scaricato. Ciò può dipendere da errori in fase di download, nel qual caso dovreste ripetere l\'operazione; oppure il formato di compressione è sconosciuto, e in questo caso dovrete scaricare e installare manualmente.';
+$lang['error_findfolder'] = 'Impossibile identificare la directory dell\'extension, dovrete scaricare e installare manualmente';
$lang['noperms'] = 'La directory Extension non è scrivibile';
$lang['notplperms'] = 'Il modello di cartella non è scrivibile';
$lang['nopluginperms'] = 'La cartella plugin non è scrivibile';
+$lang['git'] = 'Questa extension è stata installata da git, potreste non volerla aggiornare qui.';
$lang['install_url'] = 'Installa da URL:';
+$lang['install_upload'] = 'Caricamento Extension:';
+$lang['repo_error'] = 'Il repository dei plugin non può essere raggiunto. Assicuratevi che il vostro server sia abilitato a contattare l\'indirizzo www.dokuwiki.org e controllate le impostazioni del vostro proxy.';
diff --git a/lib/plugins/extension/lang/ja/lang.php b/lib/plugins/extension/lang/ja/lang.php
index dec46d629..689a9877e 100644
--- a/lib/plugins/extension/lang/ja/lang.php
+++ b/lib/plugins/extension/lang/ja/lang.php
@@ -5,6 +5,8 @@
*
* @author Hideaki SAWADA <chuno@live.jp>
* @author PzF_X <jp_minecraft@yahoo.co.jp>
+ * @author Satoshi Sahara <sahara.satoshi@gmail.com>
+ * @author Ikuo Obataya <i.obataya@gmail.com>
*/
$lang['menu'] = '拡張機能管理';
$lang['tab_plugins'] = 'インストール済プラグイン';
@@ -26,6 +28,10 @@ $lang['btn_disable'] = '無効化';
$lang['btn_install'] = 'インストール';
$lang['btn_reinstall'] = '再インストール';
$lang['js']['reallydel'] = 'この拡張機能を本当にアンインストールしますか?';
+$lang['js']['display_viewoptions'] = '表示オプション: ';
+$lang['js']['display_enabled'] = '有効';
+$lang['js']['display_disabled'] = '無効';
+$lang['js']['display_updatable'] = '更新可能';
$lang['search_for'] = '拡張機能の検索:';
$lang['search'] = '検索';
$lang['extensionby'] = '<strong>%s</strong> 作者: %s';
@@ -62,7 +68,8 @@ $lang['status_template'] = 'テンプレート';
$lang['status_bundled'] = '同梱';
$lang['msg_enabled'] = '%s プラグインを有効化しました。';
$lang['msg_disabled'] = '%s プラグインを無効化しました。';
-$lang['msg_delete_success'] = '拡張機能をアンインストールしました。';
+$lang['msg_delete_success'] = '拡張機能 %s をアンインストールしました。';
+$lang['msg_delete_failed'] = '拡張機能 %s のアンインストールに失敗しました。';
$lang['msg_template_install_success'] = '%s テンプレートをインストールできました。';
$lang['msg_template_update_success'] = '%s テンプレートを更新できました。';
$lang['msg_plugin_install_success'] = '%s プラグインをインストールできました。';
@@ -84,6 +91,8 @@ $lang['noperms'] = '拡張機能ディレクトリが書き込み
$lang['notplperms'] = 'テンプレートディレクトリが書き込み不可です。';
$lang['nopluginperms'] = 'プラグインディレクトリが書き込み不可です。';
$lang['git'] = 'この拡張機能は Git 経由でインストールされており、ここで更新すべきでないかもしれません。';
+$lang['auth'] = 'この認証プラグインは設定管理画面で無効化されています。';
$lang['install_url'] = 'URL からインストール:';
$lang['install_upload'] = '拡張機能をアップロード:';
$lang['repo_error'] = 'プラグインのリポジトリに接続できません。サーバーが www.dokuwiki.org に接続できることやプロキシの設定を確認して下さい。';
+$lang['nossl'] = 'PHP機能がSSLをサポートしていないため、拡張機能のダウンロードが正常に動作しません。';
diff --git a/lib/plugins/extension/lang/ko/lang.php b/lib/plugins/extension/lang/ko/lang.php
index 53c9b4481..31b230b53 100644
--- a/lib/plugins/extension/lang/ko/lang.php
+++ b/lib/plugins/extension/lang/ko/lang.php
@@ -5,6 +5,7 @@
*
* @author Young gon Cha <garmede@gmail.com>
* @author Myeongjin <aranet100@gmail.com>
+ * @author hyeonsoft <hyeonsoft@live.co.kr>
*/
$lang['menu'] = '확장 기능 관리자';
$lang['tab_plugins'] = '설치된 플러그인';
@@ -26,6 +27,10 @@ $lang['btn_disable'] = '비활성화';
$lang['btn_install'] = '설치';
$lang['btn_reinstall'] = '다시 설치';
$lang['js']['reallydel'] = '정말 이 확장 기능을 제거하겠습니까?';
+$lang['js']['display_viewoptions'] = '보기 옵션:';
+$lang['js']['display_enabled'] = '활성화됨';
+$lang['js']['display_disabled'] = '비활성화됨';
+$lang['js']['display_updatable'] = '업데이트할 수 있음';
$lang['search_for'] = '확장 기능 검색:';
$lang['search'] = '검색';
$lang['extensionby'] = '<strong>%s</strong> (저자 %s)';
@@ -62,7 +67,8 @@ $lang['status_template'] = '템플릿';
$lang['status_bundled'] = '포함';
$lang['msg_enabled'] = '%s 플러그인이 활성화되었습니다';
$lang['msg_disabled'] = '%s 플러그인이 비활성화되었습니다';
-$lang['msg_delete_success'] = '확장 기능이 제거되었습니다';
+$lang['msg_delete_success'] = '%s 확장 기능이 제거되었습니다';
+$lang['msg_delete_failed'] = '%s 확장 기능 제거에 실패했습니다';
$lang['msg_template_install_success'] = '%s 템플릿을 성공적으로 설치했습니다';
$lang['msg_template_update_success'] = '%s 템플릿을 성공적으로 업데이트했습니다';
$lang['msg_plugin_install_success'] = '%s 플러그인을 성공적으로 설치했습니다';
@@ -79,11 +85,13 @@ $lang['error_dircreate'] = '다운로드를 받을 임시 폴더를 만들
$lang['error_download'] = '파일을 다운로드할 수 없습니다: %s';
$lang['error_decompress'] = '다운로드한 파일의 압축을 풀 수 없습니다. 이는 아마도 잘못된 다운로드의 결과로, 이럴 경우 다시 시도해야 합니다; 또는 압축 형식을 알 수 없으며, 이럴 경우 수동으로 다운로드하고 설치해야 합니다.';
$lang['error_findfolder'] = '확장 기능 디렉터리를 식별할 수 없습니다, 수동으로 다운로드하고 설치해야 합니다';
-$lang['error_copy'] = '<em>%s</em> 디렉터리에 파일을 설치하는 동안 파일 복사 오류가 발생했습니다: 디스크가 꽉 찼거나 파일 접근 권한이 잘못되었을 수도 있습니다. 플러그인 설치가 부분적으로 되었거나 불안정하게 위키 설치가 되었을 수 있습니다.';
+$lang['error_copy'] = '<em>%s</em> 디렉터리에 파일을 설치하는 동안 파일 복사 오류가 발생했습니다: 디스크가 꽉 찼거나 파일 접근 권한이 잘못되었을 수도 있습니다. 플러그인이 부분적으로 설치되어 위키가 불안정할지도 모릅니다';
$lang['noperms'] = '확장 기능 디렉터리에 쓸 수 없습니다';
$lang['notplperms'] = '임시 디렉터리에 쓸 수 없습니다';
$lang['nopluginperms'] = '플러그인 디렉터리에 쓸 수 없습니다';
-$lang['git'] = '이 확장 기능은 git을 통해 설치되었으며, 여기에서 업데이트할 수 없을 수 있습니다.';
+$lang['git'] = '이 확장 기능은 git를 통해 설치되었으며, 여기에서 업데이트할 수 없을 수 있습니다.';
+$lang['auth'] = '이 인증 플러그인은 환경 설정에서 활성화할 수 없습니다, 그것을 비활성화하는 것을 고려하세요.';
$lang['install_url'] = 'URL에서 설치:';
$lang['install_upload'] = '확장 기능 올리기:';
$lang['repo_error'] = '플러그인 저장소에 연결할 수 없습니다. 서버가 www.dokuwiki.org에 연결할 수 있는지 확인하고 프록시 설정을 확인하세요.';
+$lang['nossl'] = 'PHP가 SSL 지원을 하지 않는 것으로 보입니다. 많은 도쿠위키 확장 기능의 다운로드가 작동하지 않을 것입니다.';
diff --git a/lib/plugins/extension/lang/lv/lang.php b/lib/plugins/extension/lang/lv/lang.php
index e7e9bdfd9..b3e5ce0d2 100644
--- a/lib/plugins/extension/lang/lv/lang.php
+++ b/lib/plugins/extension/lang/lv/lang.php
@@ -2,7 +2,7 @@
/**
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
- *
+ *
* @author Aivars Miška <allefm@gmail.com>
*/
-$lang['msg_delete_success'] = 'Papildinājums atinstalēts';
+$lang['msg_delete_success'] = 'Papildinājums %s atinstalēts';
diff --git a/lib/plugins/extension/lang/nl/lang.php b/lib/plugins/extension/lang/nl/lang.php
index a54924e93..ead2d9e8f 100644
--- a/lib/plugins/extension/lang/nl/lang.php
+++ b/lib/plugins/extension/lang/nl/lang.php
@@ -6,6 +6,10 @@
* @author Rene <wllywlnt@yahoo.com>
* @author Gerrit Uitslag <klapinklapin@gmail.com>
* @author Johan Vervloet <johan.vervloet@gmail.com>
+ * @author Mijndert <mijndert@mijndertstuij.nl>
+ * @author Johan Wijnker <johan@wijnker.eu>
+ * @author Mark C. Prins <mprins@users.sf.net>
+ * @author hugo smet <hugo.smet@scarlet.be>
*/
$lang['menu'] = 'Uitbreidingen';
$lang['tab_plugins'] = 'Geïnstalleerde Plugins';
@@ -27,6 +31,10 @@ $lang['btn_disable'] = 'Schakel uit';
$lang['btn_install'] = 'Installeer';
$lang['btn_reinstall'] = 'Her-installeer';
$lang['js']['reallydel'] = 'Wilt u deze uitbreiding deinstalleren?';
+$lang['js']['display_viewoptions'] = 'Weergave opties:';
+$lang['js']['display_enabled'] = 'ingeschakeld';
+$lang['js']['display_disabled'] = 'uitgeschakeld';
+$lang['js']['display_updatable'] = 'update beschikbaar';
$lang['search_for'] = 'Zoek Uitbreiding:';
$lang['search'] = 'Zoek';
$lang['extensionby'] = '<strong>%s</strong> by %s';
@@ -63,7 +71,8 @@ $lang['status_template'] = 'template';
$lang['status_bundled'] = 'Gebundeld';
$lang['msg_enabled'] = 'Plugin %s ingeschakeld';
$lang['msg_disabled'] = 'Plugin %s uitgeschakeld';
-$lang['msg_delete_success'] = 'Uitbreiding gedeinstalleerd';
+$lang['msg_delete_success'] = 'Uitbreiding %s gedeinstalleerd';
+$lang['msg_delete_failed'] = 'Het deïnstalleren van de extensie %s is mislukt.';
$lang['msg_template_install_success'] = 'Template %s werd succesvol geïnstalleerd';
$lang['msg_template_update_success'] = 'Template %s werd succesvol geüpdatet';
$lang['msg_plugin_install_success'] = 'Plugin %s werd succesvol geïnstalleerd';
@@ -85,6 +94,8 @@ $lang['noperms'] = 'Uitbreidings directory is niet schrijfbaar';
$lang['notplperms'] = 'Template directory is niet schrijfbaar';
$lang['nopluginperms'] = 'Plugin directory is niet schrijfbaar';
$lang['git'] = 'De uitbreiding werd geïnstalleerd via git, u wilt deze hier wellicht niet aanpassen.';
+$lang['auth'] = 'Deze auth plugin is niet geactiveerd in de configuratie, overweeg het om uit te schakelen.';
$lang['install_url'] = 'Installeer vanaf URL:';
$lang['install_upload'] = 'Upload Uitbreiding:';
$lang['repo_error'] = 'Er kon geen verbinding worden gemaakt met de centrale plugin opslag. Controleer of de server verbinding mag maken met www.dokuwiki.org en controleer de proxy instellingen.';
+$lang['nossl'] = 'Je PHP mist SSL ondersteuning. Downloaden werkt niet met veel DokuWiki extensies.';
diff --git a/lib/plugins/extension/lang/pl/lang.php b/lib/plugins/extension/lang/pl/lang.php
index 4fdca79c9..ab9a818b6 100644
--- a/lib/plugins/extension/lang/pl/lang.php
+++ b/lib/plugins/extension/lang/pl/lang.php
@@ -2,7 +2,7 @@
/**
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
- *
+ *
* @author Mati <mackosa@wp.pl>
*/
$lang['menu'] = 'Menedżer rozszerzeń';
@@ -36,4 +36,4 @@ $lang['status_not_installed'] = 'nie zainstalowano';
$lang['status_enabled'] = 'uruchomione';
$lang['status_disabled'] = 'wyłączone';
$lang['status_plugin'] = 'dodatek';
-$lang['msg_delete_success'] = 'Rozszerzenie odinstalowane';
+$lang['msg_delete_success'] = 'Rozszerzenie %s odinstalowane';
diff --git a/lib/plugins/extension/lang/pt-br/lang.php b/lib/plugins/extension/lang/pt-br/lang.php
index 0d897616a..73012f369 100644
--- a/lib/plugins/extension/lang/pt-br/lang.php
+++ b/lib/plugins/extension/lang/pt-br/lang.php
@@ -4,6 +4,8 @@
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
* @author Felipe Castro <fefcas@gmail.com>
+ * @author Hudson FAS <hudsonfas@gmail.com>
+ * @author Frederico Gonçalves Guimarães <frederico@teia.bio.br>
*/
$lang['menu'] = 'Gerenciador de extensões';
$lang['tab_plugins'] = 'Extensões instaladas';
@@ -25,6 +27,10 @@ $lang['btn_disable'] = 'Desabilitar';
$lang['btn_install'] = 'Instalar';
$lang['btn_reinstall'] = 'Re-instalar';
$lang['js']['reallydel'] = 'Quer mesmo desinstalar esta extensão?';
+$lang['js']['display_viewoptions'] = 'Opções de visualização:';
+$lang['js']['display_enabled'] = 'habilitado';
+$lang['js']['display_disabled'] = 'desabilitado';
+$lang['js']['display_updatable'] = 'atualizável';
$lang['search_for'] = 'Procurar extensão:';
$lang['search'] = 'Procurar';
$lang['extensionby'] = '<strong>%s</strong> de %s';
@@ -61,7 +67,8 @@ $lang['status_template'] = 'modelo';
$lang['status_bundled'] = 'agrupado';
$lang['msg_enabled'] = 'Extensão %s habilitada';
$lang['msg_disabled'] = 'Extensão %s desabilitada';
-$lang['msg_delete_success'] = 'Extensão desinstalada';
+$lang['msg_delete_success'] = 'Extensão %s desinstalada';
+$lang['msg_delete_failed'] = 'Falha na desinstalação da extensão %s';
$lang['msg_template_install_success'] = 'Modelo %s instalado com sucesso';
$lang['msg_template_update_success'] = 'Modelo %s atualizado com sucesso';
$lang['msg_plugin_install_success'] = 'Extensão %s instalada com sucesso';
@@ -73,3 +80,18 @@ $lang['security_warning'] = '<strong>Aviso sobre segurança:</strong> %s';
$lang['update_available'] = '<strong>Atualização:</strong> Nova versão %s está disponível.';
$lang['wrong_folder'] = '<strong>Extensão instalada incorretamente:</strong> Renomeie o diretório de extensões "%s" para "%s".';
$lang['url_change'] = '<strong>URL mudou:</strong> A URL para baixar mudou desde a última baixada. Verifique se a nova URL é válida antes de atualizar a extensão.<br />Novo: %s<br />Velho: %s';
+$lang['error_badurl'] = 'O URL deve começar com http ou https';
+$lang['error_dircreate'] = 'Impossível criar pasta temporária para receber o download';
+$lang['error_download'] = 'Impossável baixar o arquivo: %s';
+$lang['error_decompress'] = 'Impossável descompimir o arquivo baixado. Isso pode ser resultado de um download ruim que neste caso pode ser tentado novamente; ou o formato da compressão pode ser desconhecido, neste caso baixe e instale manualmente.';
+$lang['error_findfolder'] = 'Impossíl identificar a extensão do diretório, você deve baixar e instalar manualmente.';
+$lang['error_copy'] = 'Houve um erro de cópia de arquivo durante a tentativa de instalar os arquivos para o diretório <em>%s</em> : o disco pode estar cheio ou as permissões de acesso ao arquivo podem estar incorreta. Isso pode ter resultado em um plugin parcialmente instalado e deixar a sua instalação wiki instável';
+$lang['noperms'] = 'Diretório de extensão não é gravável';
+$lang['notplperms'] = 'Diretório de modelo (Template) não é gravável';
+$lang['nopluginperms'] = 'Diretório de plugin não é gravável';
+$lang['git'] = 'A extensão foi instalada via git, você talvez não queira atualizá-lo aqui.';
+$lang['auth'] = 'O plugin auth não está ativado na configuração, considere desativá-lo.';
+$lang['install_url'] = 'Instale a partir do URL:';
+$lang['install_upload'] = 'Publicar Extensão:';
+$lang['repo_error'] = 'O repositório de plugin não pode ser contactado. Certifique-se de que o servidor pode acessar www.dokuwiki.org e confira suas configurações de proxy.';
+$lang['nossl'] = 'Sua instalação PHP parece que não suporta SSL. Algumas extensões DokuWiki não serão baixadas.';
diff --git a/lib/plugins/extension/lang/pt/intro_install.txt b/lib/plugins/extension/lang/pt/intro_install.txt
new file mode 100644
index 000000000..5e5871391
--- /dev/null
+++ b/lib/plugins/extension/lang/pt/intro_install.txt
@@ -0,0 +1 @@
+Aqui você pode instalar manualmente plugins e modelos ou enviando-os (upload) ou fornecendo uma URL de download direto. \ No newline at end of file
diff --git a/lib/plugins/extension/lang/pt/intro_plugins.txt b/lib/plugins/extension/lang/pt/intro_plugins.txt
new file mode 100644
index 000000000..fcfaa5cea
--- /dev/null
+++ b/lib/plugins/extension/lang/pt/intro_plugins.txt
@@ -0,0 +1 @@
+Estes são os plugins instalados atualmente em seu DokuWiki. Você pode ativar ou desativar ou desinstala-los completamente aqui. Atualizações de plugins também são mostradas aqui, não se esqueça de ler a documentação do plug-in antes de atualizar. \ No newline at end of file
diff --git a/lib/plugins/extension/lang/pt/intro_search.txt b/lib/plugins/extension/lang/pt/intro_search.txt
new file mode 100644
index 000000000..be39a9860
--- /dev/null
+++ b/lib/plugins/extension/lang/pt/intro_search.txt
@@ -0,0 +1 @@
+Esta guia lhe dá acesso a todos os plugins e modelos de terceiros disponíveis DokuWiki. Por favor, esteja ciente de que a instalação de componentes de terceiros pode representar um risco de segurança ** **, você pode querer ler sobre [[doku> segurança # plugin_security | segurança plug-in]] antes de realizar a instalação de módulos de terceiros. \ No newline at end of file
diff --git a/lib/plugins/extension/lang/pt/intro_templates.txt b/lib/plugins/extension/lang/pt/intro_templates.txt
new file mode 100644
index 000000000..02bc33643
--- /dev/null
+++ b/lib/plugins/extension/lang/pt/intro_templates.txt
@@ -0,0 +1 @@
+Estes são os modelos atualmente instalados em seu DokuWiki. Você pode selecionar o modelo a ser usado no [[?do=admin&page=config|Configuration Manager]].
diff --git a/lib/plugins/extension/lang/pt/lang.php b/lib/plugins/extension/lang/pt/lang.php
new file mode 100644
index 000000000..1a36b4ede
--- /dev/null
+++ b/lib/plugins/extension/lang/pt/lang.php
@@ -0,0 +1,135 @@
+<?php
+
+/**
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Guido Salatino <guidorafael23@gmail.com>
+ * @author Romulo Pereira <romuloccomp@gmail.com>
+ * @author Paulo Carmino <contato@paulocarmino.com>
+ */
+$lang['menu'] = 'Gerenciador de Extensões';
+$lang['tab_plugins'] = 'Plugins Instalados';
+$lang['tab_templates'] = 'Modelos Instalados';
+$lang['tab_search'] = 'Pesquisar e Instalar';
+$lang['tab_install'] = 'Instalação Manual';
+$lang['notimplemented'] = 'Este recurso não foi implementado ainda';
+$lang['notinstalled'] = 'Esta extensão não está instalada';
+$lang['alreadyenabled'] = 'Esta extensão já foi ativada';
+$lang['alreadydisabled'] = 'Esta extensão já foi desativada';
+$lang['pluginlistsaveerror'] = 'Houve um erro ao salvar a lista de plugins';
+$lang['unknownauthor'] = 'Autor desconhecido';
+$lang['unknownversion'] = 'Versão desconhecida';
+$lang['btn_info'] = 'Mostrar mais informações';
+$lang['btn_update'] = 'Atualizar';
+$lang['btn_uninstall'] = 'Desinstalar';
+$lang['btn_enable'] = 'Habilitar';
+$lang['btn_disable'] = 'Desabilitar';
+$lang['btn_install'] = 'Instalar';
+$lang['btn_reinstall'] = 'Reinstalar';
+$lang['js']['reallydel'] = 'Confirma a desinstalação desta extensão?';
+$lang['js']['display_viewoptions'] = 'Ver Opções:';
+$lang['search_for'] = 'Pesquisar Extensão:';
+$lang['search'] = 'Pesquisar';
+$lang['extensionby'] = '<strong>%s</strong> by %s';
+$lang['screenshot'] = 'Screenshot of %s';
+$lang['popularity'] = 'Popularidade: %s%%';
+$lang['homepage_link'] = 'Documentos';
+$lang['bugs_features'] = 'Erros';
+$lang['tags'] = 'Tags:';
+$lang['author_hint'] = 'Pesquisar extensões deste autor';
+$lang['installed'] = 'Instalado:
+';
+$lang['downloadurl'] = 'Baixar URL:
+';
+$lang['repository'] = 'Repositório:
+';
+$lang['unknown'] = '<em> desconhecido </em>
+';
+$lang['installed_version'] = 'Versão instalada:';
+$lang['install_date'] = 'Sua última atualização:';
+$lang['available_version'] = 'Versão disponível:
+';
+$lang['compatible'] = 'Compatível com:';
+$lang['depends'] = 'Depende de:
+';
+$lang['similar'] = 'Semelhante a:
+';
+$lang['conflicts'] = 'Conflitos com:
+';
+$lang['donate'] = 'Assim?
+';
+$lang['donate_action'] = 'Pague um café para o autor!';
+$lang['repo_retry'] = 'Tentar novamente
+';
+$lang['provides'] = 'Fornece:
+';
+$lang['status'] = 'Status:
+';
+$lang['status_installed'] = 'instalado
+';
+$lang['status_not_installed'] = 'não instalado
+';
+$lang['status_protected'] = 'protegido
+';
+$lang['status_enabled'] = 'habilitado';
+$lang['status_disabled'] = 'desabilitado';
+$lang['status_unmodifiable'] = 'imodificável
+';
+$lang['status_plugin'] = 'plugin
+';
+$lang['status_template'] = 'modelo
+';
+$lang['status_bundled'] = 'empacotado
+';
+$lang['msg_enabled'] = 'Plugin %s habilitado
+';
+$lang['msg_disabled'] = 'Plugin %s desabilitado';
+$lang['msg_delete_success'] = 'Extensão %s desinstalada';
+$lang['msg_delete_failed'] = 'Desinstalar Extensão %s falhou
+';
+$lang['msg_template_install_success'] = 'Modelo %s instalado com sucesso';
+$lang['msg_template_update_success'] = 'Modelo %s atualizado com sucesso
+';
+$lang['msg_plugin_install_success'] = 'Plugin %s instalado com sucesso
+';
+$lang['msg_plugin_update_success'] = 'Plugin %s atualizado com sucesso
+';
+$lang['msg_upload_failed'] = 'Enviando o arquivo falhou
+';
+$lang['missing_dependency'] = '<strong>dependência ausente ou desabilitada:</strong> %s
+';
+$lang['security_issue'] = '<strong> Questão de segurança:</strong> %s
+';
+$lang['security_warning'] = '<strong> Aviso de segurança:</strong> %s';
+$lang['update_available'] = '<strong>Atualização:</strong> Nova versão %s está disponível.
+';
+$lang['wrong_folder'] = '<strong>Plugin instalado incorretamente: </strong> Renomear pasta de plugins de "%s" para "%s".
+';
+$lang['url_change'] = '<strong>URL mudou: </strong> URL para download mudou desde o último download. Verifique se a nova URL é válida antes de atualizar a extensão <br/> Nova:%s<br/>Antiga:%s
+';
+$lang['error_badurl'] = 'URLs deve começar com http ou https
+';
+$lang['error_dircreate'] = 'Não é possível criar pasta temporária para receber o download
+';
+$lang['error_download'] = 'Não é possível baixar o arquivo:%s
+';
+$lang['error_decompress'] = 'Não é possível descompactar o arquivo baixado. Talvez seja resultado de um download ruim, nesse caso, você deve tentar novamente; ou o formato de compressão pode ser desconhecido, nesse caso, você precisará baixar e instalar manualmente.';
+$lang['error_findfolder'] = 'Não foi possível identificar diretório de extensão, você precisa baixar e instalar manualmente
+';
+$lang['error_copy'] = 'Houve um erro na cópia do arquivo durante a tentativa de instalar os arquivos para o diretório <em>%s </em>: o disco pode estar cheio ou as permissões de acesso ao arquivo podem estar incorretas. Isso pode ter resultado em um plugin parcialmente instalado e tornar instável a sua instalação wiki
+';
+$lang['noperms'] = 'Diretório da extensão não é gravável
+';
+$lang['notplperms'] = 'Diretório do modelo não é gravável
+';
+$lang['nopluginperms'] = 'Diretório do plugin não é gravável
+';
+$lang['git'] = 'Esta extensão foi instalada via git, você não pode querer atualizá-la aqui.
+';
+$lang['auth'] = 'Este plugin não está habilitado na configuração, considere desabilita-lo.';
+$lang['install_url'] = 'Instalar a partir da URL:';
+$lang['install_upload'] = 'Publique a Extensão:';
+$lang['repo_error'] = 'O repositório do plugin não pôde ser conectado. Verifique se o seu servidor está autorizado a conectar com www.dokuwiki.org e verifique as configurações de proxy do servidor.
+';
+$lang['nossl'] = 'Seu PHP parece que perdeu o suporte a SSL. O download não vai funcionar para muitas extensões DokuWiki.
+';
diff --git a/lib/plugins/extension/lang/ru/intro_install.txt b/lib/plugins/extension/lang/ru/intro_install.txt
new file mode 100644
index 000000000..7b8ac661b
--- /dev/null
+++ b/lib/plugins/extension/lang/ru/intro_install.txt
@@ -0,0 +1 @@
+Здесь вы можете самостоятельно установить плагины и шаблоны, загрузив их или предоставив прямой URL для скачивания. \ No newline at end of file
diff --git a/lib/plugins/extension/lang/ru/intro_plugins.txt b/lib/plugins/extension/lang/ru/intro_plugins.txt
new file mode 100644
index 000000000..c5ea9e0ec
--- /dev/null
+++ b/lib/plugins/extension/lang/ru/intro_plugins.txt
@@ -0,0 +1 @@
+Плагины, установленные в вашей «Докувики». Здесь вы можете их включить или выключить, или даже полностью удалить. Также здесь показываются обновления плагинов; обязательно прочтите документацию плагина перед обновлением. \ No newline at end of file
diff --git a/lib/plugins/extension/lang/ru/intro_search.txt b/lib/plugins/extension/lang/ru/intro_search.txt
new file mode 100644
index 000000000..3c16748ba
--- /dev/null
+++ b/lib/plugins/extension/lang/ru/intro_search.txt
@@ -0,0 +1 @@
+Вкладка даёт вам доступ ко всем имеющимся сторонним плагинам и шаблонам для «Докувики». Имейте ввиду, что установка стороннего кода может представлять **угрозу безопасности,** возможно вам нужно сперва прочитать о [[doku>security#plugin_security|безопасности плагинов]]. \ No newline at end of file
diff --git a/lib/plugins/extension/lang/ru/intro_templates.txt b/lib/plugins/extension/lang/ru/intro_templates.txt
new file mode 100644
index 000000000..787b32fa3
--- /dev/null
+++ b/lib/plugins/extension/lang/ru/intro_templates.txt
@@ -0,0 +1 @@
+Шаблоны (темы оформления), установленные в вашей «Докувики». Шаблон, который нужно использовать, выбирается в [[?do=admin&page=config|настройках вики]] \ No newline at end of file
diff --git a/lib/plugins/extension/lang/ru/lang.php b/lib/plugins/extension/lang/ru/lang.php
index fa1625f28..71d949606 100644
--- a/lib/plugins/extension/lang/ru/lang.php
+++ b/lib/plugins/extension/lang/ru/lang.php
@@ -2,67 +2,111 @@
/**
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
- *
+ *
* @author Aleksandr Selivanov <alexgearbox@yandex.ru>
* @author Igor Degraf <igordegraf@gmail.com>
+ * @author Type-kun <workwork-1@yandex.ru>
+ * @author Vitaly Filatenko <kot@hacktest.net>
+ * @author Alex P <alexander@lanos.co.uk>
+ * @author Takumo <9206984@mail.ru>
*/
-$lang['menu'] = 'Управление дополнениями';
-$lang['tab_plugins'] = 'Установленные плагины';
-$lang['tab_templates'] = 'Установленные шаблоны';
-$lang['tab_search'] = 'Поиск и установка';
-$lang['tab_install'] = 'Ручная установка';
-$lang['notinstalled'] = 'Это дополнение не установлено';
-$lang['unknownauthor'] = 'Автор неизвестен';
-$lang['unknownversion'] = 'Версия неизвестна';
-$lang['btn_info'] = 'Отобразить доп. информацию';
-$lang['btn_update'] = 'Обновить';
-$lang['btn_uninstall'] = 'Удалить';
-$lang['btn_enable'] = 'Включить';
-$lang['btn_disable'] = 'Отключить';
-$lang['btn_install'] = 'Установить';
-$lang['btn_reinstall'] = 'Переустановить';
-$lang['js']['reallydel'] = 'Действительно удалить это дополнение?';
-$lang['search_for'] = 'Поиск дополнения:';
-$lang['search'] = 'Найти';
-$lang['extensionby'] = '<strong>%s</strong> — %s';
-$lang['popularity'] = 'Попоулярность: %s%%';
-$lang['bugs_features'] = 'Ошибки';
-$lang['tags'] = 'Метки:';
-$lang['author_hint'] = 'Найти дополнения этого автора';
-$lang['installed'] = 'Установлено:';
-$lang['downloadurl'] = 'Ссылка для скачивания:';
-$lang['repository'] = 'Репозиторий:';
-$lang['unknown'] = '<em>неизвестно</em>';
-$lang['installed_version'] = 'Установленная версия:';
-$lang['install_date'] = 'Последнее обновление:';
-$lang['available_version'] = 'Доступная версия:';
-$lang['compatible'] = 'Совместим с:';
-$lang['depends'] = 'Зависит от:';
-$lang['similar'] = 'Похож на:';
-$lang['conflicts'] = 'Конфликтует с:';
-$lang['donate'] = 'Нравится?';
-$lang['donate_action'] = 'Купить автору кофе!';
-$lang['repo_retry'] = 'Повторить';
-$lang['status_installed'] = 'установлено';
-$lang['status_not_installed'] = 'не установлено';
-$lang['status_protected'] = 'защищено';
-$lang['status_enabled'] = 'включен';
-$lang['status_disabled'] = 'отключено';
-$lang['status_unmodifiable'] = 'неизменяемо';
-$lang['status_plugin'] = 'плагин';
-$lang['status_template'] = 'шаблон';
-$lang['status_bundled'] = 'в комплекте';
-$lang['msg_enabled'] = 'Плагин %s включен';
-$lang['msg_disabled'] = 'Плагин %s отключен';
-$lang['msg_delete_success'] = 'Дополнение удалено';
+$lang['menu'] = 'Управление дополнениями';
+
+$lang['tab_plugins'] = 'Установленные плагины';
+$lang['tab_templates'] = 'Установленные шаблоны';
+$lang['tab_search'] = 'Поиск и установка';
+$lang['tab_install'] = 'Ручная установка';
+
+$lang['notimplemented'] = 'Эта возможность ещё не реализована';
+$lang['notinstalled'] = 'Это дополнение не установлено';
+$lang['alreadyenabled'] = 'Это дополнение уже включено';
+$lang['alreadydisabled'] = 'Это дополнение уже отключено';
+$lang['pluginlistsaveerror'] = 'Ошибка при сохранении списка плагинов';
+$lang['unknownauthor'] = 'Автор неизвестен';
+$lang['unknownversion'] = 'Версия неизвестна';
+
+$lang['btn_info'] = 'Отобразить доп. информацию';
+$lang['btn_update'] = 'Обновить';
+$lang['btn_uninstall'] = 'Удалить';
+$lang['btn_enable'] = 'Включить';
+$lang['btn_disable'] = 'Отключить';
+$lang['btn_install'] = 'Установить';
+$lang['btn_reinstall'] = 'Переустановить';
+
+$lang['js']['reallydel'] = 'Действительно удалить это дополнение?';
+$lang['js']['display_viewoptions'] = 'Показать как:';
+$lang['js']['display_enabled'] = 'включено';
+$lang['js']['display_disabled'] = 'отключено';
+$lang['js']['display_updatable'] = 'обновление';
+
+$lang['search_for'] = 'Поиск дополнения:';
+$lang['search'] = 'Найти';
+
+$lang['extensionby'] = '<strong>%s</strong> — %s';
+$lang['screenshot'] = 'Скриншот: %s';
+$lang['popularity'] = 'Популярность: %s%%';
+$lang['homepage_link'] = 'Описание';
+$lang['bugs_features'] = 'Баг-трекер';
+$lang['tags'] = 'Метки:';
+$lang['author_hint'] = 'Найти дополнения этого автора';
+$lang['installed'] = 'Установлено:';
+$lang['downloadurl'] = 'Скачать:';
+$lang['repository'] = 'Репозиторий:';
+$lang['unknown'] = '<em>неизвестно</em>';
+$lang['installed_version'] = 'Уст. версия:';
+$lang['install_date'] = 'Посл. обновление:';
+$lang['available_version'] = 'Доступная версия:';
+$lang['compatible'] = 'Совместим с:';
+$lang['depends'] = 'Зависит от:';
+$lang['similar'] = 'Похож на:';
+$lang['conflicts'] = 'Конфликтует с:';
+$lang['donate'] = 'Нравится?';
+$lang['donate_action'] = 'Купить автору кофе!';
+$lang['repo_retry'] = 'Повторить';
+$lang['provides'] = 'Предоставляет:';
+$lang['status'] = 'Состояние:';
+$lang['status_installed'] = 'установлено';
+$lang['status_not_installed'] = 'не установлено';
+$lang['status_protected'] = 'защищено';
+$lang['status_enabled'] = 'включено';
+$lang['status_disabled'] = 'отключено';
+$lang['status_unmodifiable'] = 'неизменяемо';
+$lang['status_plugin'] = 'плагин';
+$lang['status_template'] = 'шаблон';
+$lang['status_bundled'] = 'в комплекте';
+
+$lang['msg_enabled'] = 'Плагин %s включён';
+$lang['msg_disabled'] = 'Плагин %s отключён';
+$lang['msg_delete_success'] = 'Дополнение %s удалено';
+$lang['msg_delete_failed'] = 'Не удалось удалить дополнение %s';
$lang['msg_template_install_success'] = 'Шаблон %s успешно установлен';
-$lang['msg_template_update_success'] = 'Шаблон %s успешно обновлён';
-$lang['msg_plugin_install_success'] = 'Плагин %s успешно установлен';
-$lang['msg_plugin_update_success'] = 'Плагин %s успешно обновлён';
-$lang['noperms'] = 'Папка для расширений не доступна на запись';
-$lang['notplperms'] = 'Папка для шаблонов не доступна на запись';
-$lang['nopluginperms'] = 'Папка плагинов не доступна на запись';
-$lang['git'] = 'Это расширение было установлено через git, Вы не можете обновить его тут.';
-$lang['install_url'] = 'Установить с адреса URL:';
-$lang['install_upload'] = 'Скачать расширение:';
-$lang['repo_error'] = 'Сайт с плагинами недоступен. Убедитесь, что у сайта есть доступ на www.dokuwiki.org и также проверьте настройки соединения прокси.';
+$lang['msg_template_update_success'] = 'Шаблон %s успешно обновлён';
+$lang['msg_plugin_install_success'] = 'Плагин %s успешно установлен';
+$lang['msg_plugin_update_success'] = 'Плагин %s успешно обновлён';
+$lang['msg_upload_failed'] = 'Не удалось загрузить файл';
+
+$lang['missing_dependency'] = '<strong>Отсутствует или отключена зависимость:</strong> %s';
+$lang['security_issue'] = '<strong>Проблема безопасности:</strong> %s';
+$lang['security_warning'] = '<strong>Предупреждение безопасности:</strong> %s';
+$lang['update_available'] = '<strong>Обновление:</strong> доступна новая версия %s';
+$lang['wrong_folder'] = '<strong>Плагин установлен неправильно:</strong> переименуйте директорию плагина из %s в %s';
+$lang['url_change'] = '<strong>Ссылка изменилась:</strong> ссылка для загрузки изменилась с прошлого раза. Проверьте новую ссылку прежде, чем обновлять дополнение.<br />Новая: %s<br />Старая: %s';
+
+$lang['error_badurl'] = 'Ссылка должна начинаться с http или https';
+$lang['error_dircreate'] = 'Не удалось создать временную директорию для загрузки';
+$lang['error_download'] = 'Не удалось загрузить файл: %s';
+$lang['error_decompress'] = 'Не удалось распаковать загруженный файл. Возможно, файл был повреждён при загрузке — тогда нужно попробовать ещё раз. Либо неизвестен формат архива — тогда загрузку и установку надо произвести вручную';
+$lang['error_findfolder'] = 'Не удалось определить директорию для дополнения, загрузку и установку надо произвести вручную.';
+$lang['error_copy'] = 'Возникла ошибка копирования файлов в директорию <em>%s</em>: возможно, диск переполнен, или неверно выставлены права доступа. Это могло привести к неполной установке плагина и нарушить работу вашей вики.';
+
+$lang['noperms'] = 'Директория для дополнений не доступна для записи';
+$lang['notplperms'] = 'Директория для шаблонов не доступна для записи';
+$lang['nopluginperms'] = 'Директория для плагинов не доступна для записи';
+$lang['git'] = 'Это дополнение было установлено через git. Вы не можете обновить его тут.';
+$lang['auth'] = 'Этот auth плагин не включен в конфигурации, подумайте о его отключении';
+
+$lang['install_url'] = 'Установить с адреса:';
+$lang['install_upload'] = 'Скачать дополнение:';
+
+$lang['repo_error'] = 'Сайт с плагинами недоступен. Убедитесь, что у сайта есть доступ на www.dokuwiki.org и также проверьте настройки соединения прокси.';
+$lang['nossl'] = 'Ваша PHP конфигурация не имеет SSL поддержки. Это поломает скачивание для многих DokuWiki плагинов и дополнений.';
diff --git a/lib/plugins/extension/lang/tr/lang.php b/lib/plugins/extension/lang/tr/lang.php
index dfabfa715..c90b7b1c5 100644
--- a/lib/plugins/extension/lang/tr/lang.php
+++ b/lib/plugins/extension/lang/tr/lang.php
@@ -4,6 +4,7 @@
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
* @author İlker R. Kapaç <irifat@gmail.com>
+ * @author Mete Cuma <mcumax@gmail.com>
*/
$lang['menu'] = 'Genişletme Yöneticisi';
$lang['tab_plugins'] = 'Kurulmuş Eklentiler';
@@ -44,7 +45,7 @@ $lang['available_version'] = 'Müsait sürüm:';
$lang['compatible'] = 'Şununla uyumlu:';
$lang['depends'] = 'Şuna bağımlı';
$lang['similar'] = 'Şununla benzer';
-$lang['conflicts'] = 'Şununla çelişir';
+$lang['conflicts'] = 'Şununla çelişir:';
$lang['donate'] = 'Beğendiniz mi?';
$lang['donate_action'] = 'Yazara bir kahve ısmarlayın!';
$lang['repo_retry'] = 'Yeniden dene';
diff --git a/lib/plugins/extension/lang/zh-tw/intro_plugins.txt b/lib/plugins/extension/lang/zh-tw/intro_plugins.txt
new file mode 100644
index 000000000..b5b77a267
--- /dev/null
+++ b/lib/plugins/extension/lang/zh-tw/intro_plugins.txt
@@ -0,0 +1 @@
+已經有一些外掛套件被安裝在你的DokuWiki之中。你可以在這裡啟用、禁用,甚至是完全移除它們。如外掛可更新也同時會顯示在這裡,請確保在更新前先閱讀過該套件之文件。 \ No newline at end of file
diff --git a/lib/plugins/extension/lang/zh-tw/lang.php b/lib/plugins/extension/lang/zh-tw/lang.php
index a86364d7a..79657ffeb 100644
--- a/lib/plugins/extension/lang/zh-tw/lang.php
+++ b/lib/plugins/extension/lang/zh-tw/lang.php
@@ -5,6 +5,7 @@
*
* @author Stan <talktostan@gmail.com>
* @author June-Hao Hou <junehao@gmail.com>
+ * @author lioujheyu <lioujheyu@gmail.com>
*/
$lang['menu'] = '延伸功能管理';
$lang['tab_plugins'] = '已安裝外掛';
@@ -28,20 +29,49 @@ $lang['btn_reinstall'] = '重新安裝';
$lang['js']['reallydel'] = '確定要移除此延伸功能?';
$lang['search_for'] = '搜尋延伸功能:';
$lang['search'] = '搜尋';
+$lang['homepage_link'] = '文件';
$lang['tags'] = '標籤:';
$lang['author_hint'] = '搜尋相同作者的延伸功能';
$lang['installed'] = '已安裝:';
$lang['downloadurl'] = '下載網址:';
+$lang['unknown'] = '<em>未知</em>';
$lang['installed_version'] = '已安裝版本:';
+$lang['install_date'] = '你最後一次更新: ';
$lang['available_version'] = '可用版本:';
$lang['compatible'] = '相容於:';
+$lang['depends'] = '依賴於: ';
+$lang['similar'] = '類似於: ';
+$lang['conflicts'] = '相衝突於: ';
+$lang['donate'] = '像這樣?';
+$lang['donate_action'] = '請作者一杯咖啡!';
$lang['repo_retry'] = '再試一次';
$lang['status'] = '狀態:';
$lang['status_installed'] = '已安裝';
$lang['status_not_installed'] = '未安裝';
+$lang['status_protected'] = '已保護';
$lang['status_enabled'] = '作用中';
$lang['status_disabled'] = '停用中';
+$lang['status_unmodifiable'] = '不可更動';
$lang['status_plugin'] = '外掛';
+$lang['status_template'] = '模板';
+$lang['status_bundled'] = '已綑綁內附';
+$lang['msg_enabled'] = '外掛 %s 已啟用';
+$lang['msg_disabled'] = '外掛 %s 已禁用';
+$lang['msg_delete_success'] = '附加元件已移除';
+$lang['msg_template_install_success'] = '模板 %s 以成功安裝';
+$lang['msg_template_update_success'] = '模板 %s 以成功更新';
+$lang['msg_plugin_install_success'] = '外掛 %s 以成功安裝';
+$lang['msg_plugin_update_success'] = '外掛 %s 以成功更新';
+$lang['msg_upload_failed'] = '上傳檔案失敗';
+$lang['missing_dependency'] = '<strong>遺失或禁用相依性套件:</strong> %s';
+$lang['security_issue'] = '<strong>安全性問題:</strong> %s';
+$lang['security_warning'] = '<strong>安全問題警告:</strong> %s';
+$lang['update_available'] = '<strong>更新:</strong> 已可取得 %s 的新版本';
+$lang['wrong_folder'] = '<strong>外掛安裝不正確:</strong> 將外掛資料夾從 "%s" 更名至 "%s"。';
+$lang['url_change'] = '<strong>網址已變更:</strong> 自從上次下載後下載網址已變更。在更新延伸功能前請先檢查新網址是否可用。<br />新: %s<br />舊: %s';
+$lang['error_download'] = '無法下載檔案:%s';
+$lang['error_decompress'] = '無法解壓縮檔案。這可能是下載品質不佳所致,在這個情況下你應該再試一次;也有可能是因為無法辨識的壓縮格式,在這個情況下你應該自行下載並手動安裝';
+$lang['error_findfolder'] = '無法辨認延伸功能資料夾,你必須自行下載並手動安裝';
$lang['noperms'] = '延伸功能資料夾無法寫入';
$lang['notplperms'] = '版型資料夾無法寫入';
$lang['nopluginperms'] = '外掛資料夾無法寫入';
diff --git a/lib/plugins/extension/lang/zh/lang.php b/lib/plugins/extension/lang/zh/lang.php
index 0264f3e9c..62d54c160 100644
--- a/lib/plugins/extension/lang/zh/lang.php
+++ b/lib/plugins/extension/lang/zh/lang.php
@@ -7,6 +7,7 @@
* @author xiqingongzi <Xiqingongzi@Gmail.com>
* @author qinghao <qingxianhao@gmail.com>
* @author lainme <lainme993@gmail.com>
+ * @author Errol <errol@hotmail.com>
*/
$lang['menu'] = '扩展管理器';
$lang['tab_plugins'] = '安装插件';
@@ -28,6 +29,10 @@ $lang['btn_disable'] = '关闭';
$lang['btn_install'] = '安装';
$lang['btn_reinstall'] = '重新安装';
$lang['js']['reallydel'] = '确定卸载这个扩展么?';
+$lang['js']['display_viewoptions'] = '查看选项:';
+$lang['js']['display_enabled'] = '启用';
+$lang['js']['display_disabled'] = '禁用';
+$lang['js']['display_updatable'] = '可更新';
$lang['search_for'] = '搜索扩展';
$lang['search'] = '搜索';
$lang['extensionby'] = '<strong>%s</strong> by %s';
@@ -65,6 +70,7 @@ $lang['status_bundled'] = '内建';
$lang['msg_enabled'] = '插件 %s 已启用';
$lang['msg_disabled'] = '插件 %s 已禁用';
$lang['msg_delete_success'] = '插件已经卸载';
+$lang['msg_delete_failed'] = '卸载扩展 %s 失败';
$lang['msg_template_install_success'] = '模板 %s 安装成功';
$lang['msg_template_update_success'] = '模板 %s 更新成功';
$lang['msg_plugin_install_success'] = '插件 %s 安装成功';
@@ -86,6 +92,8 @@ $lang['noperms'] = '扩展目录不可写';
$lang['notplperms'] = '模板目录不可写';
$lang['nopluginperms'] = '插件目录不可写';
$lang['git'] = '这个扩展是通过 git 安装的,您可能不想在这里升级它';
+$lang['auth'] = '这个认证插件没有在配置中启用,请考虑禁用它。';
$lang['install_url'] = '从 URL 安装:';
$lang['install_upload'] = '上传扩展:';
$lang['repo_error'] = '无法连接到插件仓库。请确定您的服务器可以连接 www.dokuwiki.org 并检查您的代理设置。';
+$lang['nossl'] = '您的 PHP 似乎没有 SSL 支持。很多 Dokuwiki 扩展将无法下载。';
diff --git a/lib/plugins/extension/plugin.info.txt b/lib/plugins/extension/plugin.info.txt
index ee9830628..7ee84dcc0 100644
--- a/lib/plugins/extension/plugin.info.txt
+++ b/lib/plugins/extension/plugin.info.txt
@@ -1,7 +1,7 @@
base extension
author Michael Hamann
email michael@content-space.de
-date 2014-06-15
+date 2015-07-26
name Extension Manager
desc Allows managing and installing plugins and templates
url https://www.dokuwiki.org/plugin:extension
diff --git a/lib/plugins/extension/script.js b/lib/plugins/extension/script.js
index fab88162d..0c43de6ae 100644
--- a/lib/plugins/extension/script.js
+++ b/lib/plugins/extension/script.js
@@ -5,7 +5,7 @@ jQuery(function(){
/**
* Confirm uninstalling
*/
- $extmgr.find('input.uninstall').click(function(e){
+ $extmgr.find('button.uninstall').click(function(e){
if(!window.confirm(LANG.plugins.extension.reallydel)){
e.preventDefault();
return false;
@@ -46,7 +46,7 @@ jQuery(function(){
/**
* Enable/Disable extension via AJAX
*/
- $extmgr.find('input.disable, input.enable').click(function (e) {
+ $extmgr.find('button.disable, button.enable').click(function (e) {
e.preventDefault();
var $btn = jQuery(this);
@@ -110,4 +110,24 @@ jQuery(function(){
);
});
-}); \ No newline at end of file
+ /**
+ Create section for enabling/disabling viewing options
+ */
+ if ( $extmgr.find('.plugins, .templates').hasClass('active') ) {
+ var $extlist = jQuery('#extension__list');
+ $extlist.addClass('hasDisplayOptions');
+ var $displayOpts = jQuery('<p>', { id: 'extension__viewoptions'} ).appendTo($extmgr.find( '.panelHeader' ));
+
+ $displayOpts.append(LANG.plugins.extension.display_viewoptions);
+
+ var displayOptionsHandler = function(){
+ $extlist.toggleClass( this.name );
+ };
+
+ jQuery(['enabled', 'disabled', 'updatable']).each(function(index, chkName){
+ var $label = jQuery( '<label></label>' ).appendTo($displayOpts);
+ jQuery( '<input />', { type: 'checkbox', name: chkName }).change(displayOptionsHandler).appendTo($label).click();
+ jQuery( '<span/>' ).append(' '+LANG.plugins.extension['display_'+chkName]).appendTo($label);
+ });
+ }
+});
diff --git a/lib/plugins/extension/style.less b/lib/plugins/extension/style.less
index d20689099..38e632055 100644
--- a/lib/plugins/extension/style.less
+++ b/lib/plugins/extension/style.less
@@ -80,8 +80,8 @@
overflow: hidden;
}
- input.button {
- margin: 0 .3em .3em 0;
+ button {
+ margin-bottom: .3em;
}
}
@@ -171,6 +171,11 @@
padding-left: 18px;
background: transparent url(images/tag.png) no-repeat 0 0;
}
+
+ a.bugs {
+ padding-left: 18px;
+ background: transparent url(images/bug.gif) no-repeat 0 0;
+ }
}
// more info button
@@ -281,6 +286,21 @@
* Enabled/Disabled overrides
*/
#extension__list {
+
+ &.hasDisplayOptions {
+ .enabled,
+ .disabled,
+ .updatable {
+ display: none;
+ }
+
+ &.enabled .enabled,
+ &.disabled .disabled,
+ &.updatable .updatable {
+ display: block;
+ }
+ }
+
.enabled div.screenshot span {
background: transparent url(images/enabled.png) no-repeat 2px 2px;
}
@@ -361,3 +381,8 @@
display: block;
width: 60%;
}
+
+#extension__viewoptions label {
+ margin-left: 1em;
+ vertical-align: baseline;
+}
diff --git a/lib/plugins/info/plugin.info.txt b/lib/plugins/info/plugin.info.txt
index 7773a419d..3f05391f7 100644
--- a/lib/plugins/info/plugin.info.txt
+++ b/lib/plugins/info/plugin.info.txt
@@ -1,7 +1,7 @@
base info
author Andreas Gohr
email andi@splitbrain.org
-date 2014-03-05
+date 2014-10-01
name Info Plugin
desc Displays information about various DokuWiki internals
url http://dokuwiki.org/plugin:info
diff --git a/lib/plugins/info/syntax.php b/lib/plugins/info/syntax.php
index 9265f44d5..773256faf 100644
--- a/lib/plugins/info/syntax.php
+++ b/lib/plugins/info/syntax.php
@@ -44,9 +44,14 @@ class syntax_plugin_info extends DokuWiki_Syntax_Plugin {
$this->Lexer->addSpecialPattern('~~INFO:\w+~~',$mode,'plugin_info');
}
-
/**
* Handle the match
+ *
+ * @param string $match The text matched by the patterns
+ * @param int $state The lexer state for the match
+ * @param int $pos The character position of the matched text
+ * @param Doku_Handler $handler The Doku_Handler object
+ * @return array Return an array with all data you want to use in render
*/
function handle($match, $state, $pos, Doku_Handler $handler){
$match = substr($match,7,-2); //strip ~~INFO: from start and ~~ from end
@@ -55,6 +60,11 @@ class syntax_plugin_info extends DokuWiki_Syntax_Plugin {
/**
* Create output
+ *
+ * @param string $format string output format being rendered
+ * @param Doku_Renderer $renderer the current renderer object
+ * @param array $data data created by handler()
+ * @return boolean rendered correctly?
*/
function render($format, Doku_Renderer $renderer, $data) {
if($format == 'xhtml'){
@@ -103,8 +113,11 @@ class syntax_plugin_info extends DokuWiki_Syntax_Plugin {
* list all installed plugins
*
* uses some of the original renderer methods
+ *
+ * @param string $type
+ * @param Doku_Renderer_xhtml $renderer
*/
- function _plugins_xhtml($type, Doku_Renderer &$renderer){
+ function _plugins_xhtml($type, Doku_Renderer_xhtml $renderer){
global $lang;
$renderer->doc .= '<ul>';
@@ -114,7 +127,7 @@ class syntax_plugin_info extends DokuWiki_Syntax_Plugin {
// remove subparts
foreach($plugins as $p){
if (!$po = plugin_load($type,$p)) continue;
- list($name,$part) = explode('_',$p,2);
+ list($name,/* $part */) = explode('_',$p,2);
$plginfo[$name] = $po->getInfo();
}
@@ -141,8 +154,10 @@ class syntax_plugin_info extends DokuWiki_Syntax_Plugin {
* list all installed plugins
*
* uses some of the original renderer methods
+ *
+ * @param Doku_Renderer_xhtml $renderer
*/
- function _helpermethods_xhtml(Doku_Renderer &$renderer){
+ function _helpermethods_xhtml(Doku_Renderer_xhtml $renderer){
$plugins = plugin_list('helper');
foreach($plugins as $p){
if (!$po = plugin_load('helper',$p)) continue;
@@ -189,6 +204,8 @@ class syntax_plugin_info extends DokuWiki_Syntax_Plugin {
/**
* lists all known syntax types and their registered modes
+ *
+ * @return string
*/
function _syntaxtypes_xhtml(){
global $PARSER_MODES;
@@ -211,6 +228,8 @@ class syntax_plugin_info extends DokuWiki_Syntax_Plugin {
/**
* lists all known syntax modes and their sorting value
+ *
+ * @return string
*/
function _syntaxmodes_xhtml(){
$modes = p_get_parsermodes();
@@ -249,13 +268,18 @@ class syntax_plugin_info extends DokuWiki_Syntax_Plugin {
/**
* Adds a TOC item
+ *
+ * @param string $text
+ * @param int $level
+ * @param Doku_Renderer_xhtml $renderer
+ * @return string
*/
- function _addToTOC($text, $level, Doku_Renderer &$renderer){
+ protected function _addToTOC($text, $level, Doku_Renderer_xhtml $renderer){
global $conf;
+ $hid = '';
if (($level >= $conf['toptoclevel']) && ($level <= $conf['maxtoclevel'])){
- /** @var $renderer Doku_Renderer_xhtml */
- $hid = $renderer->_headerToLink($text, 'true');
+ $hid = $renderer->_headerToLink($text, true);
$renderer->toc[] = array(
'hid' => $hid,
'title' => $text,
diff --git a/lib/plugins/popularity/action.php b/lib/plugins/popularity/action.php
index 9e2e78d11..d5ec0f5c5 100644
--- a/lib/plugins/popularity/action.php
+++ b/lib/plugins/popularity/action.php
@@ -15,7 +15,7 @@ class action_plugin_popularity extends Dokuwiki_Action_Plugin {
*/
var $helper;
- function action_plugin_popularity(){
+ function __construct(){
$this->helper = $this->loadHelper('popularity', false);
}
diff --git a/lib/plugins/popularity/admin.php b/lib/plugins/popularity/admin.php
index bd2d090e1..0cf174e0d 100644
--- a/lib/plugins/popularity/admin.php
+++ b/lib/plugins/popularity/admin.php
@@ -20,7 +20,7 @@ class admin_plugin_popularity extends DokuWiki_Admin_Plugin {
var $helper;
var $sentStatus = null;
- function admin_plugin_popularity(){
+ function __construct(){
$this->helper = $this->loadHelper('popularity', false);
}
@@ -87,7 +87,7 @@ class admin_plugin_popularity extends DokuWiki_Admin_Plugin {
//If there was an error the last time we tried to autosubmit, warn the user
if ( $this->helper->isAutoSubmitEnabled() ){
- if ( @file_exists($this->helper->autosubmitErrorFile) ){
+ if ( file_exists($this->helper->autosubmitErrorFile) ){
echo $this->getLang('autosubmitError');
echo io_readFile( $this->helper->autosubmitErrorFile );
}
@@ -144,7 +144,7 @@ class admin_plugin_popularity extends DokuWiki_Admin_Plugin {
.'<input type="hidden" name="do" value="admin" />'
.'<input type="hidden" name="page" value="popularity" />';
}
- $form .= '<input type="submit" class="button" value="'.$this->getLang('submit').'"/>'
+ $form .= '<button type="submit">'.$this->getLang('submit').'</button>'
.'</fieldset>'
.'</form>';
return $form;
diff --git a/lib/plugins/popularity/helper.php b/lib/plugins/popularity/helper.php
index eacde06d0..27755b0ed 100644
--- a/lib/plugins/popularity/helper.php
+++ b/lib/plugins/popularity/helper.php
@@ -30,7 +30,7 @@ class helper_plugin_popularity extends Dokuwiki_Plugin {
var $popularityLastSubmitFile;
- function helper_plugin_popularity(){
+ function __construct(){
global $conf;
$this->autosubmitFile = $conf['cachedir'].'/autosubmit.txt';
$this->autosubmitErrorFile = $conf['cachedir'].'/autosubmitError.txt';
@@ -74,14 +74,16 @@ class helper_plugin_popularity extends Dokuwiki_Plugin {
/**
* Check if autosubmit is enabled
+ *
* @return boolean TRUE if we should send data once a month, FALSE otherwise
*/
function isAutoSubmitEnabled(){
- return @file_exists($this->autosubmitFile);
+ return file_exists($this->autosubmitFile);
}
/**
* Send the data, to the submit url
+ *
* @param string $data The popularity data
* @return string An empty string if everything worked fine, a string describing the error otherwise
*/
@@ -97,6 +99,8 @@ class helper_plugin_popularity extends Dokuwiki_Plugin {
/**
* Compute the last time the data was sent. If it has never been sent, we return 0.
+ *
+ * @return int
*/
function lastSentTime(){
$manualSubmission = @filemtime($this->popularityLastSubmitFile);
@@ -107,6 +111,7 @@ class helper_plugin_popularity extends Dokuwiki_Plugin {
/**
* Gather all information
+ *
* @return string The popularity data as a string
*/
function gatherAsString(){
@@ -124,6 +129,7 @@ class helper_plugin_popularity extends Dokuwiki_Plugin {
/**
* Gather all information
+ *
* @return array The popularity data as an array
*/
function _gather(){
@@ -247,9 +253,26 @@ class helper_plugin_popularity extends Dokuwiki_Plugin {
$data['php_exectime'] = $phptime;
$data['php_extension'] = get_loaded_extensions();
+ // plugin usage data
+ $this->_add_plugin_usage_data($data);
+
return $data;
}
+ protected function _add_plugin_usage_data(&$data){
+ $pluginsData = array();
+ trigger_event('PLUGIN_POPULARITY_DATA_SETUP', $pluginsData);
+ foreach($pluginsData as $plugin => $d){
+ if ( is_array($d) ) {
+ foreach($d as $key => $value){
+ $data['plugin_' . $plugin . '_' . $key] = $value;
+ }
+ } else {
+ $data['plugin_' . $plugin] = $d;
+ }
+ }
+ }
+
/**
* Callback to search and count the content of directories in DokuWiki
*
@@ -288,17 +311,24 @@ class helper_plugin_popularity extends Dokuwiki_Plugin {
*
* @author <gilthans dot NO dot SPAM at gmail dot com>
* @link http://de3.php.net/manual/en/ini.core.php#79564
+ *
+ * @param string $v
+ * @return int|string
*/
function _to_byte($v){
$l = substr($v, -1);
$ret = substr($v, 0, -1);
switch(strtoupper($l)){
+ /** @noinspection PhpMissingBreakStatementInspection */
case 'P':
$ret *= 1024;
+ /** @noinspection PhpMissingBreakStatementInspection */
case 'T':
$ret *= 1024;
+ /** @noinspection PhpMissingBreakStatementInspection */
case 'G':
$ret *= 1024;
+ /** @noinspection PhpMissingBreakStatementInspection */
case 'M':
$ret *= 1024;
case 'K':
diff --git a/lib/plugins/popularity/lang/ca/lang.php b/lib/plugins/popularity/lang/ca/lang.php
index b30846118..9eb1655d2 100644
--- a/lib/plugins/popularity/lang/ca/lang.php
+++ b/lib/plugins/popularity/lang/ca/lang.php
@@ -1,7 +1,8 @@
<?php
+
/**
- * Catalan language file
- *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
* @author Carles Bellver <carles.bellver@cent.uji.es>
* @author Carles Bellver <carles.bellver@gmail.com>
* @author carles.bellver@cent.uji.es
diff --git a/lib/plugins/popularity/lang/eu/lang.php b/lib/plugins/popularity/lang/eu/lang.php
index b52ccaee1..b5b80357c 100644
--- a/lib/plugins/popularity/lang/eu/lang.php
+++ b/lib/plugins/popularity/lang/eu/lang.php
@@ -1,7 +1,8 @@
<?php
+
/**
- * Basque language file
- *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
* @author Inko Illarramendi <inko.i.a@gmail.com>
* @author Zigor Astarbe <astarbe@gmail.com>
*/
diff --git a/lib/plugins/popularity/lang/ja/intro.txt b/lib/plugins/popularity/lang/ja/intro.txt
index 09886f418..db9a34284 100644
--- a/lib/plugins/popularity/lang/ja/intro.txt
+++ b/lib/plugins/popularity/lang/ja/intro.txt
@@ -1,6 +1,6 @@
====== 利用状況調査 ======
-このツールは、ご利用中のwikiの情報を収集し、それをDokuWikiの開発者へ匿名で送信するものです。開発者はこのツールにより、DokuWikiが実際にどの様に利用されているかを理解し、そして実際の利用状況に基づいて今後の開発方針の決定することができます。
+この[[doku>ja:popularity|ツール]]は、ご利用中のwikiの情報を収集し、それをDokuWikiの開発者へ匿名で送信するものです。開発者はこのツールにより、DokuWikiが実際にどの様に利用されているかを理解し、そして実際の利用状況に基づいて今後の開発方針の決定することができます。
お使いのwikiの規模が大きくなってきたときは、このステップを定期的に繰り返すことを推奨しています。また、送信されたデータは匿名のIDで識別されます。
diff --git a/lib/plugins/popularity/lang/ko/intro.txt b/lib/plugins/popularity/lang/ko/intro.txt
index bc9bb9dd0..edc0f8733 100644
--- a/lib/plugins/popularity/lang/ko/intro.txt
+++ b/lib/plugins/popularity/lang/ko/intro.txt
@@ -1,6 +1,6 @@
====== 인기도 조사 ======
-설치된 위키의 익명 정보를 도쿠위키 개발자에게 보냅니다. 이 [[doku>ko:popularity|도구]]는 도쿠위키가 실제 사용자에게 어떻게 사용되는지 도쿠위키 개발자에게 알려줌으로써 이 후 개발 시 참고가 됩니다.
+설치된 위키의 익명 정보를 도쿠위키 개발자에게 보냅니다. 이 [[doku>ko:popularity|도구]]는 도쿠위키가 실제 사용자에게 어떻게 사용되는지 도쿠위키 개발자에게 알려줌으로써 이 후 개발 시 참조가 됩니다.
설치된 위키가 커짐에 따라서 이 과정을 반복할 필요가 있습니다. 반복된 데이터는 익명 ID로 구별되어집니다.
diff --git a/lib/plugins/popularity/lang/lt/lang.php b/lib/plugins/popularity/lang/lt/lang.php
index 88df29c50..dca350475 100644
--- a/lib/plugins/popularity/lang/lt/lang.php
+++ b/lib/plugins/popularity/lang/lt/lang.php
@@ -1,7 +1,8 @@
<?php
+
/**
- * Lithuanian language file
- *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
* @author audrius.klevas@gmail.com
* @author Arunas Vaitekunas <aras@fan.lt>
*/
diff --git a/lib/plugins/popularity/lang/ro/lang.php b/lib/plugins/popularity/lang/ro/lang.php
index 8ba119dcb..5be528bac 100644
--- a/lib/plugins/popularity/lang/ro/lang.php
+++ b/lib/plugins/popularity/lang/ro/lang.php
@@ -1,7 +1,8 @@
<?php
+
/**
- * Romanian language file
- *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
* @author Emanuel-Emeric Andrasi <n30@mandrivausers.ro>
* @author Emanuel-Emeric Andrași <n30@mandrivausers.ro>
* @author Emanuel-Emeric Andraşi <em.andrasi@mandrivausers.ro>
diff --git a/lib/plugins/popularity/plugin.info.txt b/lib/plugins/popularity/plugin.info.txt
index eadfffaa0..8ffc136a1 100644
--- a/lib/plugins/popularity/plugin.info.txt
+++ b/lib/plugins/popularity/plugin.info.txt
@@ -1,7 +1,7 @@
base popularity
author Andreas Gohr
email andi@splitbrain.org
-date 2013-10-14
+date 2015-07-15
name Popularity Feedback Plugin
desc Send anonymous data about your wiki to the DokuWiki developers
url http://www.dokuwiki.org/plugin:popularity
diff --git a/lib/plugins/remote.php b/lib/plugins/remote.php
index a51f701fb..47f954ee6 100644
--- a/lib/plugins/remote.php
+++ b/lib/plugins/remote.php
@@ -1,19 +1,30 @@
<?php
+/**
+ * Class DokuWiki_Remote_Plugin
+ */
abstract class DokuWiki_Remote_Plugin extends DokuWiki_Plugin {
private $api;
+ /**
+ * Constructor
+ */
public function __construct() {
$this->api = new RemoteAPI();
}
/**
+ * Get all available methods with remote access.
+ *
* @abstract
- * @return array Information to all provided methods. {@see RemoteAPI}.
+ * @return array Information about all provided methods. {@see RemoteAPI}.
*/
public abstract function _getMethods();
+ /**
+ * @return RemoteAPI
+ */
protected function getApi() {
return $this->api;
}
diff --git a/lib/plugins/revert/admin.php b/lib/plugins/revert/admin.php
index 88d8cd93d..1a0300585 100644
--- a/lib/plugins/revert/admin.php
+++ b/lib/plugins/revert/admin.php
@@ -16,7 +16,7 @@ class admin_plugin_revert extends DokuWiki_Admin_Plugin {
/**
* Constructor
*/
- function admin_plugin_revert(){
+ function __construct(){
$this->setupLocale();
}
@@ -64,9 +64,9 @@ class admin_plugin_revert extends DokuWiki_Admin_Plugin {
global $lang, $INPUT;
echo '<form action="" method="post"><div class="no">';
echo '<label>'.$this->getLang('filter').': </label>';
- echo '<input type="text" name="filter" class="edit" value="'.hsc($INPUT->str('filter')).'" />';
- echo ' <input type="submit" class="button" value="'.$lang['btn_search'].'" />';
- echo ' <span>'.$this->getLang('note1').'</span>';
+ echo '<input type="text" name="filter" class="edit" value="'.hsc($INPUT->str('filter')).'" /> ';
+ echo '<button type="submit">'.$lang['btn_search'].'</button> ';
+ echo '<span>'.$this->getLang('note1').'</span>';
echo '</div></form><br /><br />';
}
@@ -173,7 +173,7 @@ class admin_plugin_revert extends DokuWiki_Admin_Plugin {
echo '</ul>';
echo '<p>';
- echo '<input type="submit" class="button" value="'.$this->getLang('revert').'" /> ';
+ echo '<button type="submit">'.$this->getLang('revert').'</button> ';
printf($this->getLang('note2'),hsc($filter));
echo '</p>';
diff --git a/lib/plugins/revert/lang/ca/lang.php b/lib/plugins/revert/lang/ca/lang.php
index 4f4d518ea..e2755f8d3 100644
--- a/lib/plugins/revert/lang/ca/lang.php
+++ b/lib/plugins/revert/lang/ca/lang.php
@@ -1,7 +1,8 @@
<?php
+
/**
- * Catalan language file
- *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
* @author Carles Bellver <carles.bellver@gmail.com>
* @author carles.bellver@gmail.com
* @author carles.bellver@cent.uji.es
diff --git a/lib/plugins/revert/lang/eu/lang.php b/lib/plugins/revert/lang/eu/lang.php
index d3532c070..40be3e382 100644
--- a/lib/plugins/revert/lang/eu/lang.php
+++ b/lib/plugins/revert/lang/eu/lang.php
@@ -1,9 +1,11 @@
<?php
+
/**
- * Basque language file
- *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
* @author Inko Illarramendi <inko.i.a@gmail.com>
* @author Zigor Astarbe <astarbe@gmail.com>
+ * @author Yadav Gowda <yadav.gowda@gmail.com>
*/
$lang['menu'] = 'Berrezartze Kudeatzailea';
$lang['filter'] = 'Bilatu spam duten orriak';
diff --git a/lib/plugins/revert/lang/ko/lang.php b/lib/plugins/revert/lang/ko/lang.php
index 5666100e9..f99b0ab23 100644
--- a/lib/plugins/revert/lang/ko/lang.php
+++ b/lib/plugins/revert/lang/ko/lang.php
@@ -15,7 +15,9 @@ $lang['filter'] = '스팸 문서 검색';
$lang['revert'] = '선택한 문서 되돌리기';
$lang['reverted'] = '%s 판을 %s 판으로 되돌림';
$lang['removed'] = '%s 제거됨';
-$lang['revstart'] = '되돌리기 작업을 시작합니다. 오랜 시간이 걸릴 수 있습니다. 완료되기 전에 스크립트 시간 초과가 발생한다면 더 작은 작업으로 나누어서 되돌리시기 바랍니다.';
+$lang['revstart'] = '되돌리기 작업을 시작합니다. 오랜 시간이 걸릴 수 있습니다. 완료되기 전에
+ 스크립트 시간 초과가 발생한다면 더 작은 작업으로 나누어서
+ 되돌리시기 바랍니다.';
$lang['revstop'] = '되돌리기 작업이 성공적으로 끝났습니다.';
$lang['note1'] = '참고: 대소문자를 구별해 찾습니다';
-$lang['note2'] = '참고: 문서는 <i>%s</i> 스팸 단어를 포함하지 않은 최신 판으로 되돌립니다. ';
+$lang['note2'] = '참고: 문서는 <i>%s</i> 스팸 단어를 포함하지 않은 최신 판으로 되돌립니다.';
diff --git a/lib/plugins/revert/lang/no/lang.php b/lib/plugins/revert/lang/no/lang.php
index 6806dcd93..d5307c7ca 100644
--- a/lib/plugins/revert/lang/no/lang.php
+++ b/lib/plugins/revert/lang/no/lang.php
@@ -19,6 +19,8 @@
* @author Thomas Juberg <Thomas.Juberg@Gmail.com>
* @author Boris <boris@newton-media.no>
* @author Christopher Schive <chschive@frisurf.no>
+ * @author Patrick <spill.p@hotmail.com>
+ * @author Danny Buckhof <daniel.raknes@hotmail.no>
*/
$lang['menu'] = 'Tilbakestillingsbehandler';
$lang['filter'] = 'Søk etter søppelmeldinger';
diff --git a/lib/plugins/revert/lang/ro/lang.php b/lib/plugins/revert/lang/ro/lang.php
index 5ea802575..3d0ca7957 100644
--- a/lib/plugins/revert/lang/ro/lang.php
+++ b/lib/plugins/revert/lang/ro/lang.php
@@ -1,7 +1,8 @@
<?php
+
/**
- * Romanian language file
- *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
* @author Sergiu Baltariu <s_baltariu@yahoo.com>
* @author s_baltariu@yahoo.com
* @author Emanuel-Emeric Andrasi <n30@mandrivausers.ro>
diff --git a/lib/plugins/revert/plugin.info.txt b/lib/plugins/revert/plugin.info.txt
index 8d107dc32..bba939d37 100644
--- a/lib/plugins/revert/plugin.info.txt
+++ b/lib/plugins/revert/plugin.info.txt
@@ -1,7 +1,7 @@
base revert
author Andreas Gohr
email andi@splitbrain.org
-date 2013-11-21
+date 2015-07-15
name Revert Manager
desc Allows you to mass revert recent edits to remove Spam or vandalism
url http://dokuwiki.org/plugin:revert
diff --git a/lib/plugins/styling/.travis.yml b/lib/plugins/styling/.travis.yml
new file mode 100644
index 000000000..75ee0b152
--- /dev/null
+++ b/lib/plugins/styling/.travis.yml
@@ -0,0 +1,13 @@
+# Config file for travis-ci.org
+
+language: php
+php:
+ - "5.5"
+ - "5.4"
+ - "5.3"
+env:
+ - DOKUWIKI=master
+ - DOKUWIKI=stable
+before_install: wget https://raw.github.com/splitbrain/dokuwiki-travis/master/travis.sh
+install: sh travis.sh
+script: cd _test && phpunit --stderr --group plugin_styling
diff --git a/lib/plugins/styling/README b/lib/plugins/styling/README
new file mode 100644
index 000000000..a1a5e890c
--- /dev/null
+++ b/lib/plugins/styling/README
@@ -0,0 +1,27 @@
+styling Plugin for DokuWiki
+
+Allows to edit style.ini replacements
+
+All documentation for this plugin can be found at
+https://www.dokuwiki.org/plugin:styling
+
+If you install this plugin manually, make sure it is installed in
+lib/plugins/styling/ - if the folder is called different it
+will not work!
+
+Please refer to http://www.dokuwiki.org/plugins for additional info
+on how to install plugins in DokuWiki.
+
+----
+Copyright (C) Andreas Gohr <andi@splitbrain.org>
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; version 2 of the License
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+See the COPYING file in your DokuWiki folder for details
diff --git a/lib/plugins/styling/_test/general.test.php b/lib/plugins/styling/_test/general.test.php
new file mode 100644
index 000000000..1337f6f75
--- /dev/null
+++ b/lib/plugins/styling/_test/general.test.php
@@ -0,0 +1,33 @@
+<?php
+/**
+ * General tests for the styling plugin
+ *
+ * @group plugin_styling
+ * @group plugins
+ */
+class general_plugin_styling_test extends DokuWikiTest {
+
+ /**
+ * Simple test to make sure the plugin.info.txt is in correct format
+ */
+ public function test_plugininfo() {
+ $file = __DIR__.'/../plugin.info.txt';
+ $this->assertFileExists($file);
+
+ $info = confToHash($file);
+
+ $this->assertArrayHasKey('base', $info);
+ $this->assertArrayHasKey('author', $info);
+ $this->assertArrayHasKey('email', $info);
+ $this->assertArrayHasKey('date', $info);
+ $this->assertArrayHasKey('name', $info);
+ $this->assertArrayHasKey('desc', $info);
+ $this->assertArrayHasKey('url', $info);
+
+ $this->assertEquals('styling', $info['base']);
+ $this->assertRegExp('/^https?:\/\//', $info['url']);
+ $this->assertTrue(mail_isvalid($info['email']));
+ $this->assertRegExp('/^\d\d\d\d-\d\d-\d\d$/', $info['date']);
+ $this->assertTrue(false !== strtotime($info['date']));
+ }
+}
diff --git a/lib/plugins/styling/action.php b/lib/plugins/styling/action.php
new file mode 100644
index 000000000..896e14bef
--- /dev/null
+++ b/lib/plugins/styling/action.php
@@ -0,0 +1,60 @@
+<?php
+/**
+ * DokuWiki Plugin styling (Action Component)
+ *
+ * @license GPL 2 http://www.gnu.org/licenses/gpl-2.0.html
+ * @author Andreas Gohr <andi@splitbrain.org>
+ */
+
+// must be run within Dokuwiki
+if(!defined('DOKU_INC')) die();
+
+/**
+ * Class action_plugin_styling
+ *
+ * This handles all the save actions and loading the interface
+ *
+ * All this usually would be done within an admin plugin, but we want to have this available outside
+ * the admin interface using our floating dialog.
+ */
+class action_plugin_styling extends DokuWiki_Action_Plugin {
+
+ /**
+ * Registers a callback functions
+ *
+ * @param Doku_Event_Handler $controller DokuWiki's event controller object
+ * @return void
+ */
+ public function register(Doku_Event_Handler $controller) {
+ $controller->register_hook('TPL_METAHEADER_OUTPUT', 'BEFORE', $this, 'handle_header');
+ }
+
+ /**
+ * Adds the preview parameter to the stylesheet loading in non-js mode
+ *
+ * @param Doku_Event $event event object by reference
+ * @param mixed $param [the parameters passed as fifth argument to register_hook() when this
+ * handler was registered]
+ * @return void
+ */
+ public function handle_header(Doku_Event &$event, $param) {
+ global $ACT;
+ global $INPUT;
+ if($ACT != 'admin' || $INPUT->str('page') != 'styling') return;
+ if(!auth_isadmin()) return;
+
+ // set preview
+ $len = count($event->data['link']);
+ for($i = 0; $i < $len; $i++) {
+ if(
+ $event->data['link'][$i]['rel'] == 'stylesheet' &&
+ strpos($event->data['link'][$i]['href'], 'lib/exe/css.php') !== false
+ ) {
+ $event->data['link'][$i]['href'] .= '&preview=1&tseed='.time();
+ }
+ }
+ }
+
+}
+
+// vim:ts=4:sw=4:et:
diff --git a/lib/plugins/styling/admin.php b/lib/plugins/styling/admin.php
new file mode 100644
index 000000000..c747c3130
--- /dev/null
+++ b/lib/plugins/styling/admin.php
@@ -0,0 +1,211 @@
+<?php
+/**
+ * DokuWiki Plugin styling (Admin Component)
+ *
+ * @license GPL 2 http://www.gnu.org/licenses/gpl-2.0.html
+ * @author Andreas Gohr <andi@splitbrain.org>
+ */
+
+// must be run within Dokuwiki
+if(!defined('DOKU_INC')) die();
+
+class admin_plugin_styling extends DokuWiki_Admin_Plugin {
+
+ public $ispopup = false;
+
+ /**
+ * @return int sort number in admin menu
+ */
+ public function getMenuSort() {
+ return 1000;
+ }
+
+ /**
+ * @return bool true if only access for superuser, false is for superusers and moderators
+ */
+ public function forAdminOnly() {
+ return true;
+ }
+
+ /**
+ * handle the different actions (also called from ajax)
+ */
+ public function handle() {
+ global $INPUT;
+ $run = $INPUT->extract('run')->str('run');
+ if(!$run) return;
+ $run = "run_$run";
+ $this->$run();
+ }
+
+ /**
+ * Render HTML output, e.g. helpful text and a form
+ */
+ public function html() {
+ $class = 'nopopup';
+ if($this->ispopup) $class = 'ispopup page';
+
+ echo '<div id="plugin__styling" class="'.$class.'">';
+ ptln('<h1>'.$this->getLang('menu').'</h1>');
+ $this->form();
+ echo '</div>';
+ }
+
+ /**
+ * Create the actual editing form
+ */
+ public function form() {
+ global $conf;
+ global $ID;
+ define('SIMPLE_TEST', 1); // hack, ideally certain functions should be moved out of css.php
+ require_once(DOKU_INC.'lib/exe/css.php');
+ $styleini = css_styleini($conf['template'], true);
+ $replacements = $styleini['replacements'];
+
+ if($this->ispopup) {
+ $target = DOKU_BASE.'lib/plugins/styling/popup.php';
+ } else {
+ $target = wl($ID, array('do' => 'admin', 'page' => 'styling'));
+ }
+
+ if(empty($replacements)) {
+ echo '<p class="error">'.$this->getLang('error').'</p>';
+ } else {
+ echo $this->locale_xhtml('intro');
+
+ echo '<form class="styling" method="post" action="'.$target.'">';
+
+ echo '<table><tbody>';
+ foreach($replacements as $key => $value) {
+ $name = tpl_getLang($key);
+ if(empty($name)) $name = $this->getLang($key);
+ if(empty($name)) $name = $key;
+
+ echo '<tr>';
+ echo '<td><label for="tpl__'.hsc($key).'">'.$name.'</label></td>';
+ echo '<td><input type="text" name="tpl['.hsc($key).']" id="tpl__'.hsc($key).'" value="'.hsc($value).'" '.$this->colorClass($key).' dir="ltr" /></td>';
+ echo '</tr>';
+ }
+ echo '</tbody></table>';
+
+ echo '<p>';
+ echo '<button type="submit" name="run[preview]" class="btn_preview primary">'.$this->getLang('btn_preview').'</button> ';
+ echo '<button type="submit" name="run[reset]">'.$this->getLang('btn_reset').'</button>'; #FIXME only if preview.ini exists
+ echo '</p>';
+
+ echo '<p>';
+ echo '<button type="submit" name="run[save]" class="primary">'.$this->getLang('btn_save').'</button>';
+ echo '</p>';
+
+ echo '<p>';
+ echo '<button type="submit" name="run[revert]">'.$this->getLang('btn_revert').'</button>'; #FIXME only if local.ini exists
+ echo '</p>';
+
+ echo '</form>';
+
+ echo tpl_locale_xhtml('style');
+
+ }
+ }
+
+ /**
+ * set the color class attribute
+ */
+ protected function colorClass($key) {
+ static $colors = array(
+ 'text',
+ 'background',
+ 'text_alt',
+ 'background_alt',
+ 'text_neu',
+ 'background_neu',
+ 'border',
+ 'highlight',
+ 'background_site',
+ 'link',
+ 'existing',
+ 'missing',
+ );
+
+ if(preg_match('/colou?r/', $key) || in_array(trim($key,'_'), $colors)) {
+ return 'class="color"';
+ } else {
+ return '';
+ }
+ }
+
+ /**
+ * saves the preview.ini (alos called from ajax directly)
+ */
+ public function run_preview() {
+ global $conf;
+ $ini = $conf['cachedir'].'/preview.ini';
+ io_saveFile($ini, $this->makeini());
+ }
+
+ /**
+ * deletes the preview.ini
+ */
+ protected function run_reset() {
+ global $conf;
+ $ini = $conf['cachedir'].'/preview.ini';
+ io_saveFile($ini, '');
+ }
+
+ /**
+ * deletes the local style.ini replacements
+ */
+ protected function run_revert() {
+ $this->replaceini('');
+ $this->run_reset();
+ }
+
+ /**
+ * save the local style.ini replacements
+ */
+ protected function run_save() {
+ $this->replaceini($this->makeini());
+ $this->run_reset();
+ }
+
+ /**
+ * create the replacement part of a style.ini from submitted data
+ *
+ * @return string
+ */
+ protected function makeini() {
+ global $INPUT;
+
+ $ini = "[replacements]\n";
+ $ini .= ";These overwrites have been generated from the Template styling Admin interface\n";
+ $ini .= ";Any values in this section will be overwritten by that tool again\n";
+ foreach($INPUT->arr('tpl') as $key => $val) {
+ $ini .= $key.' = "'.addslashes($val).'"'."\n";
+ }
+
+ return $ini;
+ }
+
+ /**
+ * replaces the replacement parts in the local ini
+ *
+ * @param string $new the new ini contents
+ */
+ protected function replaceini($new) {
+ global $conf;
+ $ini = DOKU_CONF."tpl/".$conf['template']."/style.ini";
+ if(file_exists($ini)) {
+ $old = io_readFile($ini);
+ $old = preg_replace('/\[replacements\]\n.*?(\n\[.*]|$)/s', '\\1', $old);
+ $old = trim($old);
+ } else {
+ $old = '';
+ }
+
+ io_makeFileDir($ini);
+ io_saveFile($ini, "$old\n\n$new");
+ }
+
+}
+
+// vim:ts=4:sw=4:et:
diff --git a/lib/plugins/styling/iris.js b/lib/plugins/styling/iris.js
new file mode 100644
index 000000000..4eda5022e
--- /dev/null
+++ b/lib/plugins/styling/iris.js
@@ -0,0 +1,1488 @@
+/*! Iris Color Picker - v1.0.7 - 2014-11-28
+* https://github.com/Automattic/Iris
+* Copyright (c) 2014 Matt Wiebe; Licensed GPLv2 */
+(function( $, undef ){
+ var _html, nonGradientIE, gradientType, vendorPrefixes, _css, Iris, UA, isIE, IEVersion;
+
+ _html = '<div class="iris-picker"><div class="iris-picker-inner"><div class="iris-square"><a class="iris-square-value" href="#"><span class="iris-square-handle ui-slider-handle"></span></a><div class="iris-square-inner iris-square-horiz"></div><div class="iris-square-inner iris-square-vert"></div></div><div class="iris-slider iris-strip"><div class="iris-slider-offset"></div></div></div></div>';
+ _css = '.iris-picker{display:block;position:relative}.iris-picker,.iris-picker *{-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input+.iris-picker{margin-top:4px}.iris-error{background-color:#ffafaf}.iris-border{border-radius:3px;border:1px solid #aaa;width:200px;background-color:#fff}.iris-picker-inner{position:absolute;top:0;right:0;left:0;bottom:0}.iris-border .iris-picker-inner{top:10px;right:10px;left:10px;bottom:10px}.iris-picker .iris-square-inner{position:absolute;left:0;right:0;top:0;bottom:0}.iris-picker .iris-square,.iris-picker .iris-slider,.iris-picker .iris-square-inner,.iris-picker .iris-palette{border-radius:3px;box-shadow:inset 0 0 5px rgba(0,0,0,.4);height:100%;width:12.5%;float:left;margin-right:5%}.iris-picker .iris-square{width:76%;margin-right:10%;position:relative}.iris-picker .iris-square-inner{width:auto;margin:0}.iris-ie-9 .iris-square,.iris-ie-9 .iris-slider,.iris-ie-9 .iris-square-inner,.iris-ie-9 .iris-palette{box-shadow:none;border-radius:0}.iris-ie-9 .iris-square,.iris-ie-9 .iris-slider,.iris-ie-9 .iris-palette{outline:1px solid rgba(0,0,0,.1)}.iris-ie-lt9 .iris-square,.iris-ie-lt9 .iris-slider,.iris-ie-lt9 .iris-square-inner,.iris-ie-lt9 .iris-palette{outline:1px solid #aaa}.iris-ie-lt9 .iris-square .ui-slider-handle{outline:1px solid #aaa;background-color:#fff;-ms-filter:"alpha(Opacity=30)"}.iris-ie-lt9 .iris-square .iris-square-handle{background:0;border:3px solid #fff;-ms-filter:"alpha(Opacity=50)"}.iris-picker .iris-strip{margin-right:0;position:relative}.iris-picker .iris-strip .ui-slider-handle{position:absolute;background:0;margin:0;right:-3px;left:-3px;border:4px solid #aaa;border-width:4px 3px;width:auto;height:6px;border-radius:4px;box-shadow:0 1px 2px rgba(0,0,0,.2);opacity:.9;z-index:5;cursor:ns-resize}.iris-strip .ui-slider-handle:before{content:" ";position:absolute;left:-2px;right:-2px;top:-3px;bottom:-3px;border:2px solid #fff;border-radius:3px}.iris-picker .iris-slider-offset{position:absolute;top:11px;left:0;right:0;bottom:-3px;width:auto;height:auto;background:transparent;border:0;border-radius:0}.iris-picker .iris-square-handle{background:transparent;border:5px solid #aaa;border-radius:50%;border-color:rgba(128,128,128,.5);box-shadow:none;width:12px;height:12px;position:absolute;left:-10px;top:-10px;cursor:move;opacity:1;z-index:10}.iris-picker .ui-state-focus .iris-square-handle{opacity:.8}.iris-picker .iris-square-handle:hover{border-color:#999}.iris-picker .iris-square-value:focus .iris-square-handle{box-shadow:0 0 2px rgba(0,0,0,.75);opacity:.8}.iris-picker .iris-square-handle:hover::after{border-color:#fff}.iris-picker .iris-square-handle::after{position:absolute;bottom:-4px;right:-4px;left:-4px;top:-4px;border:3px solid #f9f9f9;border-color:rgba(255,255,255,.8);border-radius:50%;content:" "}.iris-picker .iris-square-value{width:8px;height:8px;position:absolute}.iris-ie-lt9 .iris-square-value,.iris-mozilla .iris-square-value{width:1px;height:1px}.iris-palette-container{position:absolute;bottom:0;left:0;margin:0;padding:0}.iris-border .iris-palette-container{left:10px;bottom:10px}.iris-picker .iris-palette{margin:0;cursor:pointer}.iris-square-handle,.ui-slider-handle{border:0;outline:0}';
+
+ // Even IE9 dosen't support gradients. Elaborate sigh.
+ UA = navigator.userAgent.toLowerCase();
+ isIE = navigator.appName === 'Microsoft Internet Explorer';
+ IEVersion = isIE ? parseFloat( UA.match( /msie ([0-9]{1,}[\.0-9]{0,})/ )[1] ) : 0;
+ nonGradientIE = ( isIE && IEVersion < 10 );
+ gradientType = false;
+
+ // we don't bother with an unprefixed version, as it has a different syntax
+ vendorPrefixes = [ '-moz-', '-webkit-', '-o-', '-ms-' ];
+
+ // Bail for IE <= 7
+ if ( nonGradientIE && IEVersion <= 7 ) {
+ $.fn.iris = $.noop;
+ $.support.iris = false;
+ return;
+ }
+
+ $.support.iris = true;
+
+ function testGradientType() {
+ var el, base,
+ bgImageString = 'backgroundImage';
+
+ if ( nonGradientIE ) {
+ gradientType = 'filter';
+ }
+ else {
+ el = $( '<div id="iris-gradtest" />' );
+ base = 'linear-gradient(top,#fff,#000)';
+ $.each( vendorPrefixes, function( i, val ){
+ el.css( bgImageString, val + base );
+ if ( el.css( bgImageString ).match( 'gradient' ) ) {
+ gradientType = i;
+ return false;
+ }
+ });
+ // check for legacy webkit gradient syntax
+ if ( gradientType === false ) {
+ el.css( 'background', '-webkit-gradient(linear,0% 0%,0% 100%,from(#fff),to(#000))' );
+ if ( el.css( bgImageString ).match( 'gradient' ) ) {
+ gradientType = 'webkit';
+ }
+ }
+ el.remove();
+ }
+
+ }
+
+ /**
+ * Only for CSS3 gradients. oldIE will use a separate function.
+ *
+ * Accepts as many color stops as necessary from 2nd arg on, or 2nd
+ * arg can be an array of color stops
+ *
+ * @param {string} origin Gradient origin - top or left, defaults to left.
+ * @return {string} Appropriate CSS3 gradient string for use in
+ */
+ function createGradient( origin, stops ) {
+ origin = ( origin === 'top' ) ? 'top' : 'left';
+ stops = $.isArray( stops ) ? stops : Array.prototype.slice.call( arguments, 1 );
+ if ( gradientType === 'webkit' ) {
+ return legacyWebkitGradient( origin, stops );
+ } else {
+ return vendorPrefixes[ gradientType ] + 'linear-gradient(' + origin + ', ' + stops.join(', ') + ')';
+ }
+ }
+
+ /**
+ * Stupid gradients for a stupid browser.
+ */
+ function stupidIEGradient( origin, stops ) {
+ var type, self, lastIndex, filter, startPosProp, endPosProp, dimensionProp, template, html;
+
+ origin = ( origin === 'top' ) ? 'top' : 'left';
+ stops = $.isArray( stops ) ? stops : Array.prototype.slice.call( arguments, 1 );
+ // 8 hex: AARRGGBB
+ // GradientType: 0 vertical, 1 horizontal
+ type = ( origin === 'top' ) ? 0 : 1;
+ self = $( this );
+ lastIndex = stops.length - 1;
+ filter = 'filter';
+ startPosProp = ( type === 1 ) ? 'left' : 'top';
+ endPosProp = ( type === 1 ) ? 'right' : 'bottom';
+ dimensionProp = ( type === 1 ) ? 'height' : 'width';
+ template = '<div class="iris-ie-gradient-shim" style="position:absolute;' + dimensionProp + ':100%;' + startPosProp + ':%start%;' + endPosProp + ':%end%;' + filter + ':%filter%;" data-color:"%color%"></div>';
+ html = '';
+ // need a positioning context
+ if ( self.css('position') === 'static' ) {
+ self.css( {position: 'relative' } );
+ }
+
+ stops = fillColorStops( stops );
+ $.each(stops, function( i, startColor ) {
+ var endColor, endStop, filterVal;
+
+ // we want two at a time. if we're on the last pair, bail.
+ if ( i === lastIndex ) {
+ return false;
+ }
+
+ endColor = stops[ i + 1 ];
+ //if our pairs are at the same color stop, moving along.
+ if ( startColor.stop === endColor.stop ) {
+ return;
+ }
+
+ endStop = 100 - parseFloat( endColor.stop ) + '%';
+ startColor.octoHex = new Color( startColor.color ).toIEOctoHex();
+ endColor.octoHex = new Color( endColor.color ).toIEOctoHex();
+
+ filterVal = 'progid:DXImageTransform.Microsoft.Gradient(GradientType=' + type + ', StartColorStr=\'' + startColor.octoHex + '\', EndColorStr=\'' + endColor.octoHex + '\')';
+ html += template.replace( '%start%', startColor.stop ).replace( '%end%', endStop ).replace( '%filter%', filterVal );
+ });
+ self.find( '.iris-ie-gradient-shim' ).remove();
+ $( html ).prependTo( self );
+ }
+
+ function legacyWebkitGradient( origin, colorList ) {
+ var stops = [];
+ origin = ( origin === 'top' ) ? '0% 0%,0% 100%,' : '0% 100%,100% 100%,';
+ colorList = fillColorStops( colorList );
+ $.each( colorList, function( i, val ){
+ stops.push( 'color-stop(' + ( parseFloat( val.stop ) / 100 ) + ', ' + val.color + ')' );
+ });
+ return '-webkit-gradient(linear,' + origin + stops.join(',') + ')';
+ }
+
+ function fillColorStops( colorList ) {
+ var colors = [],
+ percs = [],
+ newColorList = [],
+ lastIndex = colorList.length - 1;
+
+ $.each( colorList, function( index, val ) {
+ var color = val,
+ perc = false,
+ match = val.match( /1?[0-9]{1,2}%$/ );
+
+ if ( match ) {
+ color = val.replace( /\s?1?[0-9]{1,2}%$/, '' );
+ perc = match.shift();
+ }
+ colors.push( color );
+ percs.push( perc );
+ });
+
+ // back fill first and last
+ if ( percs[0] === false ) {
+ percs[0] = '0%';
+ }
+
+ if ( percs[lastIndex] === false ) {
+ percs[lastIndex] = '100%';
+ }
+
+ percs = backFillColorStops( percs );
+
+ $.each( percs, function( i ){
+ newColorList[i] = { color: colors[i], stop: percs[i] };
+ });
+ return newColorList;
+ }
+
+ function backFillColorStops( stops ) {
+ var first = 0,
+ last = stops.length - 1,
+ i = 0,
+ foundFirst = false,
+ incr,
+ steps,
+ step,
+ firstVal;
+
+ if ( stops.length <= 2 || $.inArray( false, stops ) < 0 ) {
+ return stops;
+ }
+ while ( i < stops.length - 1 ) {
+ if ( ! foundFirst && stops[i] === false ) {
+ first = i - 1;
+ foundFirst = true;
+ } else if ( foundFirst && stops[i] !== false ) {
+ last = i;
+ i = stops.length;
+ }
+ i++;
+ }
+ steps = last - first;
+ firstVal = parseInt( stops[first].replace('%'), 10 );
+ incr = ( parseFloat( stops[last].replace('%') ) - firstVal ) / steps;
+ i = first + 1;
+ step = 1;
+ while ( i < last ) {
+ stops[i] = ( firstVal + ( step * incr ) ) + '%';
+ step++;
+ i++;
+ }
+ return backFillColorStops( stops );
+ }
+
+ $.fn.gradient = function() {
+ var args = arguments;
+ return this.each( function() {
+ // this'll be oldishIE
+ if ( nonGradientIE ) {
+ stupidIEGradient.apply( this, args );
+ } else {
+ // new hotness
+ $( this ).css( 'backgroundImage', createGradient.apply( this, args ) );
+ }
+ });
+ };
+
+ $.fn.raninbowGradient = function( origin, args ) {
+ var opts, template, i, steps;
+
+ origin = origin || 'top';
+ opts = $.extend( {}, { s: 100, l: 50 }, args );
+ template = 'hsl(%h%,' + opts.s + '%,' + opts.l + '%)';
+ i = 0;
+ steps = [];
+ while ( i <= 360 ) {
+ steps.push( template.replace('%h%', i) );
+ i += 30;
+ }
+ return this.each(function() {
+ $(this).gradient( origin, steps );
+ });
+ };
+
+ // the colorpicker widget def.
+ Iris = {
+ options: {
+ color: false,
+ mode: 'hsl',
+ controls: {
+ horiz: 's', // horizontal defaults to saturation
+ vert: 'l', // vertical defaults to lightness
+ strip: 'h' // right strip defaults to hue
+ },
+ hide: true, // hide the color picker by default
+ border: true, // draw a border around the collection of UI elements
+ target: false, // a DOM element / jQuery selector that the element will be appended within. Only used when called on an input.
+ width: 200, // the width of the collection of UI elements
+ palettes: false // show a palette of basic colors beneath the square.
+ },
+ _color: '',
+ _palettes: [ '#000', '#fff', '#d33', '#d93', '#ee2', '#81d742', '#1e73be', '#8224e3' ],
+ _inited: false,
+ _defaultHSLControls: {
+ horiz: 's',
+ vert: 'l',
+ strip: 'h'
+ },
+ _defaultHSVControls: {
+ horiz: 'h',
+ vert: 'v',
+ strip: 's'
+ },
+ _scale: {
+ h: 360,
+ s: 100,
+ l: 100,
+ v: 100
+ },
+ _create: function() {
+ var self = this,
+ el = self.element,
+ color = self.options.color || el.val();
+
+ if ( gradientType === false ) {
+ testGradientType();
+ }
+
+ if ( el.is( 'input' ) ) {
+ if ( self.options.target ) {
+ self.picker = $( _html ).appendTo( self.options.target );
+ } else {
+ self.picker = $( _html ).insertAfter( el );
+ }
+
+ self._addInputListeners( el );
+ } else {
+ el.append( _html );
+ self.picker = el.find( '.iris-picker' );
+ }
+
+ // Browsers / Versions
+ // Feature detection doesn't work for these, and $.browser is deprecated
+ if ( isIE ) {
+ if ( IEVersion === 9 ) {
+ self.picker.addClass( 'iris-ie-9' );
+ } else if ( IEVersion <= 8 ) {
+ self.picker.addClass( 'iris-ie-lt9' );
+ }
+ } else if ( UA.indexOf('compatible') < 0 && UA.indexOf('khtml') < 0 && UA.match( /mozilla/ ) ) {
+ self.picker.addClass( 'iris-mozilla' );
+ }
+
+ if ( self.options.palettes ) {
+ self._addPalettes();
+ }
+
+ self._color = new Color( color ).setHSpace( self.options.mode );
+ self.options.color = self._color.toString();
+
+ // prep 'em for re-use
+ self.controls = {
+ square: self.picker.find( '.iris-square' ),
+ squareDrag: self.picker.find( '.iris-square-value' ),
+ horiz: self.picker.find( '.iris-square-horiz' ),
+ vert: self.picker.find( '.iris-square-vert' ),
+ strip: self.picker.find( '.iris-strip' ),
+ stripSlider: self.picker.find( '.iris-strip .iris-slider-offset' )
+ };
+
+ // small sanity check - if we chose hsv, change default controls away from hsl
+ if ( self.options.mode === 'hsv' && self._has('l', self.options.controls) ) {
+ self.options.controls = self._defaultHSVControls;
+ } else if ( self.options.mode === 'hsl' && self._has('v', self.options.controls) ) {
+ self.options.controls = self._defaultHSLControls;
+ }
+
+ // store it. HSL gets squirrely
+ self.hue = self._color.h();
+
+ if ( self.options.hide ) {
+ self.picker.hide();
+ }
+
+ if ( self.options.border ) {
+ self.picker.addClass( 'iris-border' );
+ }
+
+ self._initControls();
+ self.active = 'external';
+ self._dimensions();
+ self._change();
+ },
+ _has: function(needle, haystack) {
+ var ret = false;
+ $.each(haystack, function(i,v){
+ if ( needle === v ) {
+ ret = true;
+ // exit the loop
+ return false;
+ }
+ });
+ return ret;
+ },
+ _addPalettes: function () {
+ var container = $( '<div class="iris-palette-container" />' ),
+ palette = $( '<a class="iris-palette" tabindex="0" />' ),
+ colors = $.isArray( this.options.palettes ) ? this.options.palettes : this._palettes;
+
+ // do we have an existing container? Empty and reuse it.
+ if ( this.picker.find( '.iris-palette-container' ).length ) {
+ container = this.picker.find( '.iris-palette-container' ).detach().html( '' );
+ }
+
+ $.each(colors, function(index, val) {
+ palette.clone().data( 'color', val )
+ .css( 'backgroundColor', val ).appendTo( container )
+ .height( 10 ).width( 10 );
+ });
+
+ this.picker.append(container);
+ },
+ _paint: function() {
+ var self = this;
+ self._paintDimension( 'top', 'strip' );
+ self._paintDimension( 'top', 'vert' );
+ self._paintDimension( 'left', 'horiz' );
+ },
+ _paintDimension: function( origin, control ) {
+ var self = this,
+ c = self._color,
+ mode = self.options.mode,
+ color = self._getHSpaceColor(),
+ target = self.controls[ control ],
+ controlOpts = self.options.controls,
+ stops;
+
+ // don't paint the active control
+ if ( control === self.active || ( self.active === 'square' && control !== 'strip' ) ) {
+ return;
+ }
+
+ switch ( controlOpts[ control ] ) {
+ case 'h':
+ if ( mode === 'hsv' ) {
+ color = c.clone();
+ switch ( control ) {
+ case 'horiz':
+ color[controlOpts.vert](100);
+ break;
+ case 'vert':
+ color[controlOpts.horiz](100);
+ break;
+ case 'strip':
+ color.setHSpace('hsl');
+ break;
+ }
+ stops = color.toHsl();
+ } else {
+ if ( control === 'strip' ) {
+ stops = { s: color.s, l: color.l };
+ } else {
+ stops = { s: 100, l: color.l };
+ }
+ }
+
+ target.raninbowGradient( origin, stops );
+ break;
+ case 's':
+ if ( mode === 'hsv' ) {
+ if ( control === 'vert' ) {
+ stops = [ c.clone().a(0).s(0).toCSS('rgba'), c.clone().a(1).s(0).toCSS('rgba') ];
+ } else if ( control === 'strip' ) {
+ stops = [ c.clone().s(100).toCSS('hsl'), c.clone().s(0).toCSS('hsl') ];
+ } else if ( control === 'horiz' ) {
+ stops = [ '#fff', 'hsl(' + color.h + ',100%,50%)' ];
+ }
+ } else { // implicit mode === 'hsl'
+ if ( control === 'vert' && self.options.controls.horiz === 'h' ) {
+ stops = ['hsla(0, 0%, ' + color.l + '%, 0)', 'hsla(0, 0%, ' + color.l + '%, 1)'];
+ } else {
+ stops = ['hsl('+ color.h +',0%,50%)', 'hsl(' + color.h + ',100%,50%)'];
+ }
+ }
+
+
+ target.gradient( origin, stops );
+ break;
+ case 'l':
+ if ( control === 'strip' ) {
+ stops = ['hsl(' + color.h + ',100%,100%)', 'hsl(' + color.h + ', ' + color.s + '%,50%)', 'hsl('+ color.h +',100%,0%)'];
+ } else {
+ stops = ['#fff', 'rgba(255,255,255,0) 50%', 'rgba(0,0,0,0) 50%', 'rgba(0,0,0,1)'];
+ }
+ target.gradient( origin, stops );
+ break;
+ case 'v':
+ if ( control === 'strip' ) {
+ stops = [ c.clone().v(100).toCSS(), c.clone().v(0).toCSS() ];
+ } else {
+ stops = ['rgba(0,0,0,0)', '#000'];
+ }
+ target.gradient( origin, stops );
+ break;
+ default:
+ break;
+ }
+ },
+
+ _getHSpaceColor: function() {
+ return ( this.options.mode === 'hsv' ) ? this._color.toHsv() : this._color.toHsl();
+ },
+
+ _dimensions: function( reset ) {
+ // whatever size
+ var self = this,
+ opts = self.options,
+ controls = self.controls,
+ square = controls.square,
+ strip = self.picker.find( '.iris-strip' ),
+ squareWidth = '77.5%',
+ stripWidth = '12%',
+ totalPadding = 20,
+ innerWidth = opts.border ? opts.width - totalPadding : opts.width,
+ controlsHeight,
+ paletteCount = $.isArray( opts.palettes ) ? opts.palettes.length : self._palettes.length,
+ paletteMargin, paletteWidth, paletteContainerWidth;
+
+ if ( reset ) {
+ square.css( 'width', '' );
+ strip.css( 'width', '' );
+ self.picker.css( {width: '', height: ''} );
+ }
+
+ squareWidth = innerWidth * ( parseFloat( squareWidth ) / 100 );
+ stripWidth = innerWidth * ( parseFloat( stripWidth ) / 100 );
+ controlsHeight = opts.border ? squareWidth + totalPadding : squareWidth;
+
+ square.width( squareWidth ).height( squareWidth );
+ strip.height( squareWidth ).width( stripWidth );
+ self.picker.css( { width: opts.width, height: controlsHeight } );
+
+ if ( ! opts.palettes ) {
+ return self.picker.css( 'paddingBottom', '' );
+ }
+
+ // single margin at 2%
+ paletteMargin = squareWidth * 2 / 100;
+ paletteContainerWidth = squareWidth - ( ( paletteCount - 1 ) * paletteMargin );
+ paletteWidth = paletteContainerWidth / paletteCount;
+ self.picker.find('.iris-palette').each( function( i ) {
+ var margin = i === 0 ? 0 : paletteMargin;
+ $( this ).css({
+ width: paletteWidth,
+ height: paletteWidth,
+ marginLeft: margin
+ });
+ });
+ self.picker.css( 'paddingBottom', paletteWidth + paletteMargin );
+ strip.height( paletteWidth + paletteMargin + squareWidth );
+ },
+
+ _addInputListeners: function( input ) {
+ var self = this,
+ debounceTimeout = 100,
+ callback = function( event ){
+ var color = new Color( input.val() ),
+ val = input.val().replace( /^#/, '' );
+
+ input.removeClass( 'iris-error' );
+ // we gave a bad color
+ if ( color.error ) {
+ // don't error on an empty input - we want those allowed
+ if ( val !== '' ) {
+ input.addClass( 'iris-error' );
+ }
+ } else {
+ if ( color.toString() !== self._color.toString() ) {
+ // let's not do this on keyup for hex shortcodes
+ if ( ! ( event.type === 'keyup' && val.match( /^[0-9a-fA-F]{3}$/ ) ) ) {
+ self._setOption( 'color', color.toString() );
+ }
+ }
+ }
+ };
+
+ input.on( 'change', callback ).on( 'keyup', self._debounce( callback, debounceTimeout ) );
+
+ // If we initialized hidden, show on first focus. The rest is up to you.
+ if ( self.options.hide ) {
+ input.one( 'focus', function() {
+ self.show();
+ });
+ }
+ },
+
+ _initControls: function() {
+ var self = this,
+ controls = self.controls,
+ square = controls.square,
+ controlOpts = self.options.controls,
+ stripScale = self._scale[controlOpts.strip];
+
+ controls.stripSlider.slider({
+ orientation: 'vertical',
+ max: stripScale,
+ slide: function( event, ui ) {
+ self.active = 'strip';
+ // "reverse" for hue.
+ if ( controlOpts.strip === 'h' ) {
+ ui.value = stripScale - ui.value;
+ }
+
+ self._color[controlOpts.strip]( ui.value );
+ self._change.apply( self, arguments );
+ }
+ });
+
+ controls.squareDrag.draggable({
+ containment: controls.square.find( '.iris-square-inner' ),
+ zIndex: 1000,
+ cursor: 'move',
+ drag: function( event, ui ) {
+ self._squareDrag( event, ui );
+ },
+ start: function() {
+ square.addClass( 'iris-dragging' );
+ $(this).addClass( 'ui-state-focus' );
+ },
+ stop: function() {
+ square.removeClass( 'iris-dragging' );
+ $(this).removeClass( 'ui-state-focus' );
+ }
+ }).on( 'mousedown mouseup', function( event ) {
+ var focusClass = 'ui-state-focus';
+ event.preventDefault();
+ if (event.type === 'mousedown' ) {
+ self.picker.find( '.' + focusClass ).removeClass( focusClass ).blur();
+ $(this).addClass( focusClass ).focus();
+ } else {
+ $(this).removeClass( focusClass );
+ }
+ }).on( 'keydown', function( event ) {
+ var container = controls.square,
+ draggable = controls.squareDrag,
+ position = draggable.position(),
+ distance = self.options.width / 100; // Distance in pixels the draggable should be moved: 1 "stop"
+
+ // make alt key go "10"
+ if ( event.altKey ) {
+ distance *= 10;
+ }
+
+ // Reposition if one of the directional keys is pressed
+ switch ( event.keyCode ) {
+ case 37: position.left -= distance; break; // Left
+ case 38: position.top -= distance; break; // Up
+ case 39: position.left += distance; break; // Right
+ case 40: position.top += distance; break; // Down
+ default: return true; // Exit and bubble
+ }
+
+ // Keep draggable within container
+ position.left = Math.max( 0, Math.min( position.left, container.width() ) );
+ position.top = Math.max( 0, Math.min( position.top, container.height() ) );
+
+ draggable.css(position);
+ self._squareDrag( event, { position: position });
+ event.preventDefault();
+ });
+
+ // allow clicking on the square to move there and keep dragging
+ square.mousedown( function( event ) {
+ var squareOffset, pos;
+ // only left click
+ if ( event.which !== 1 ) {
+ return;
+ }
+
+ // prevent bubbling from the handle: no infinite loops
+ if ( ! $( event.target ).is( 'div' ) ) {
+ return;
+ }
+
+ squareOffset = self.controls.square.offset();
+ pos = {
+ top: event.pageY - squareOffset.top,
+ left: event.pageX - squareOffset.left
+ };
+ event.preventDefault();
+ self._squareDrag( event, { position: pos } );
+ event.target = self.controls.squareDrag.get(0);
+ self.controls.squareDrag.css( pos ).trigger( event );
+ });
+
+ // palettes
+ if ( self.options.palettes ) {
+ self._paletteListeners();
+ }
+ },
+
+ _paletteListeners: function() {
+ var self = this;
+ self.picker.find('.iris-palette-container').on('click.palette', '.iris-palette', function() {
+ self._color.fromCSS( $(this).data('color') );
+ self.active = 'external';
+ self._change();
+ }).on( 'keydown.palette', '.iris-palette', function( event ) {
+ if ( ! ( event.keyCode === 13 || event.keyCode === 32 ) ) {
+ return true;
+ }
+ event.stopPropagation();
+ $( this ).click();
+ });
+ },
+
+ _squareDrag: function( event, ui ) {
+ var self = this,
+ controlOpts = self.options.controls,
+ dimensions = self._squareDimensions(),
+ vertVal = Math.round( ( dimensions.h - ui.position.top ) / dimensions.h * self._scale[controlOpts.vert] ),
+ horizVal = self._scale[controlOpts.horiz] - Math.round( ( dimensions.w - ui.position.left ) / dimensions.w * self._scale[controlOpts.horiz] );
+
+ self._color[controlOpts.horiz]( horizVal )[controlOpts.vert]( vertVal );
+
+ self.active = 'square';
+ self._change.apply( self, arguments );
+ },
+
+ _setOption: function( key, value ) {
+ var self = this,
+ oldValue = self.options[key],
+ doDimensions = false,
+ hexLessColor,
+ newColor,
+ method;
+
+ // ensure the new value is set. We can reset to oldValue if some check wasn't met.
+ self.options[key] = value;
+
+ switch(key) {
+ case 'color':
+ // cast to string in case we have a number
+ value = '' + value;
+ hexLessColor = value.replace( /^#/, '' );
+ newColor = new Color( value ).setHSpace( self.options.mode );
+ if ( newColor.error ) {
+ self.options[key] = oldValue;
+ } else {
+ self._color = newColor;
+ self.options.color = self.options[key] = self._color.toString();
+ self.active = 'external';
+ self._change();
+ }
+ break;
+ case 'palettes':
+ doDimensions = true;
+
+ if ( value ) {
+ self._addPalettes();
+ } else {
+ self.picker.find('.iris-palette-container').remove();
+ }
+
+ // do we need to add events?
+ if ( ! oldValue ) {
+ self._paletteListeners();
+ }
+ break;
+ case 'width':
+ doDimensions = true;
+ break;
+ case 'border':
+ doDimensions = true;
+ method = value ? 'addClass' : 'removeClass';
+ self.picker[method]('iris-border');
+ break;
+ case 'mode':
+ case 'controls':
+ // if nothing's changed, let's bail, since this causes re-rendering the whole widget
+ if ( oldValue === value ) {
+ return;
+ }
+
+ // we're using these poorly named variables because they're already scoped.
+ // method is the element that Iris was called on. oldValue will be the options
+ method = self.element;
+ oldValue = self.options;
+ oldValue.hide = ! self.picker.is( ':visible' );
+ self.destroy();
+ self.picker.remove();
+ return $(self.element).iris(oldValue);
+ }
+
+ // Do we need to recalc dimensions?
+ if ( doDimensions ) {
+ self._dimensions(true);
+ }
+ },
+
+ _squareDimensions: function( forceRefresh ) {
+ var square = this.controls.square,
+ dimensions,
+ control;
+
+ if ( forceRefresh !== undef && square.data('dimensions') ) {
+ return square.data('dimensions');
+ }
+
+ control = this.controls.squareDrag;
+ dimensions = {
+ w: square.width(),
+ h: square.height()
+ };
+ square.data( 'dimensions', dimensions );
+ return dimensions;
+ },
+
+ _isNonHueControl: function( active, type ) {
+ if ( active === 'square' && this.options.controls.strip === 'h' ) {
+ return true;
+ } else if ( type === 'external' || ( type === 'h' && active === 'strip' ) ) {
+ return false;
+ }
+
+ return true;
+ },
+
+ _change: function() {
+ var self = this,
+ controls = self.controls,
+ color = self._getHSpaceColor(),
+ actions = [ 'square', 'strip' ],
+ controlOpts = self.options.controls,
+ type = controlOpts[self.active] || 'external',
+ oldHue = self.hue;
+
+ if ( self.active === 'strip' ) {
+ // take no action on any of the square sliders if we adjusted the strip
+ actions = [];
+ } else if ( self.active !== 'external' ) {
+ // for non-strip, non-external, strip should never change
+ actions.pop(); // conveniently the last item
+ }
+
+ $.each( actions, function(index, item) {
+ var value, dimensions, cssObj;
+ if ( item !== self.active ) {
+ switch ( item ) {
+ case 'strip':
+ // reverse for hue
+ value = ( controlOpts.strip === 'h' ) ? self._scale[controlOpts.strip] - color[controlOpts.strip] : color[controlOpts.strip];
+ controls.stripSlider.slider( 'value', value );
+ break;
+ case 'square':
+ dimensions = self._squareDimensions();
+ cssObj = {
+ left: color[controlOpts.horiz] / self._scale[controlOpts.horiz] * dimensions.w,
+ top: dimensions.h - ( color[controlOpts.vert] / self._scale[controlOpts.vert] * dimensions.h )
+ };
+
+ self.controls.squareDrag.css( cssObj );
+ break;
+ }
+ }
+ });
+
+ // Ensure that we don't change hue if we triggered a hue reset
+ if ( color.h !== oldHue && self._isNonHueControl( self.active, type ) ) {
+ self._color.h(oldHue);
+ }
+
+ // store hue for repeating above check next time
+ self.hue = self._color.h();
+
+ self.options.color = self._color.toString();
+
+ // only run after the first time
+ if ( self._inited ) {
+ self._trigger( 'change', { type: self.active }, { color: self._color } );
+ }
+
+ if ( self.element.is( ':input' ) && ! self._color.error ) {
+ self.element.removeClass( 'iris-error' );
+ if ( self.element.val() !== self._color.toString() ) {
+ self.element.val( self._color.toString() );
+ }
+ }
+
+ self._paint();
+ self._inited = true;
+ self.active = false;
+ },
+ // taken from underscore.js _.debounce method
+ _debounce: function( func, wait, immediate ) {
+ var timeout, result;
+ return function() {
+ var context = this,
+ args = arguments,
+ later,
+ callNow;
+
+ later = function() {
+ timeout = null;
+ if ( ! immediate) {
+ result = func.apply( context, args );
+ }
+ };
+
+ callNow = immediate && !timeout;
+ clearTimeout( timeout );
+ timeout = setTimeout( later, wait );
+ if ( callNow ) {
+ result = func.apply( context, args );
+ }
+ return result;
+ };
+ },
+ show: function() {
+ this.picker.show();
+ },
+ hide: function() {
+ this.picker.hide();
+ },
+ toggle: function() {
+ this.picker.toggle();
+ },
+ color: function(newColor) {
+ if ( newColor === true ) {
+ return this._color.clone();
+ } else if ( newColor === undef ) {
+ return this._color.toString();
+ }
+ this.option('color', newColor);
+ }
+ };
+ // initialize the widget
+ $.widget( 'a8c.iris', Iris );
+ // add CSS
+ $( '<style id="iris-css">' + _css + '</style>' ).appendTo( 'head' );
+
+}( jQuery ));
+/*! Color.js - v0.9.11 - 2013-08-09
+* https://github.com/Automattic/Color.js
+* Copyright (c) 2013 Matt Wiebe; Licensed GPLv2 */
+(function(global, undef) {
+
+ var Color = function( color, type ) {
+ if ( ! ( this instanceof Color ) )
+ return new Color( color, type );
+
+ return this._init( color, type );
+ };
+
+ Color.fn = Color.prototype = {
+ _color: 0,
+ _alpha: 1,
+ error: false,
+ // for preserving hue/sat in fromHsl().toHsl() flows
+ _hsl: { h: 0, s: 0, l: 0 },
+ // for preserving hue/sat in fromHsv().toHsv() flows
+ _hsv: { h: 0, s: 0, v: 0 },
+ // for setting hsl or hsv space - needed for .h() & .s() functions to function properly
+ _hSpace: 'hsl',
+ _init: function( color ) {
+ var func = 'noop';
+ switch ( typeof color ) {
+ case 'object':
+ // alpha?
+ if ( color.a !== undef )
+ this.a( color.a );
+ func = ( color.r !== undef ) ? 'fromRgb' :
+ ( color.l !== undef ) ? 'fromHsl' :
+ ( color.v !== undef ) ? 'fromHsv' : func;
+ return this[func]( color );
+ case 'string':
+ return this.fromCSS( color );
+ case 'number':
+ return this.fromInt( parseInt( color, 10 ) );
+ }
+ return this;
+ },
+
+ _error: function() {
+ this.error = true;
+ return this;
+ },
+
+ clone: function() {
+ var newColor = new Color( this.toInt() ),
+ copy = ['_alpha', '_hSpace', '_hsl', '_hsv', 'error'];
+ for ( var i = copy.length - 1; i >= 0; i-- ) {
+ newColor[ copy[i] ] = this[ copy[i] ];
+ }
+ return newColor;
+ },
+
+ setHSpace: function( space ) {
+ this._hSpace = ( space === 'hsv' ) ? space : 'hsl';
+ return this;
+ },
+
+ noop: function() {
+ return this;
+ },
+
+ fromCSS: function( color ) {
+ var list,
+ leadingRE = /^(rgb|hs(l|v))a?\(/;
+ this.error = false;
+
+ // whitespace and semicolon trim
+ color = color.replace(/^\s+/, '').replace(/\s+$/, '').replace(/;$/, '');
+
+ if ( color.match(leadingRE) && color.match(/\)$/) ) {
+ list = color.replace(/(\s|%)/g, '').replace(leadingRE, '').replace(/,?\);?$/, '').split(',');
+
+ if ( list.length < 3 )
+ return this._error();
+
+ if ( list.length === 4 ) {
+ this.a( parseFloat( list.pop() ) );
+ // error state has been set to true in .a() if we passed NaN
+ if ( this.error )
+ return this;
+ }
+
+ for (var i = list.length - 1; i >= 0; i--) {
+ list[i] = parseInt(list[i], 10);
+ if ( isNaN( list[i] ) )
+ return this._error();
+ }
+
+ if ( color.match(/^rgb/) ) {
+ return this.fromRgb( {
+ r: list[0],
+ g: list[1],
+ b: list[2]
+ } );
+ } else if ( color.match(/^hsv/) ) {
+ return this.fromHsv( {
+ h: list[0],
+ s: list[1],
+ v: list[2]
+ } );
+ } else {
+ return this.fromHsl( {
+ h: list[0],
+ s: list[1],
+ l: list[2]
+ } );
+ }
+ } else {
+ // must be hex amirite?
+ return this.fromHex( color );
+ }
+ },
+
+ fromRgb: function( rgb, preserve ) {
+ if ( typeof rgb !== 'object' || rgb.r === undef || rgb.g === undef || rgb.b === undef )
+ return this._error();
+
+ this.error = false;
+ return this.fromInt( parseInt( ( rgb.r << 16 ) + ( rgb.g << 8 ) + rgb.b, 10 ), preserve );
+ },
+
+ fromHex: function( color ) {
+ color = color.replace(/^#/, '').replace(/^0x/, '');
+ if ( color.length === 3 ) {
+ color = color[0] + color[0] + color[1] + color[1] + color[2] + color[2];
+ }
+
+ // rough error checking - this is where things go squirrely the most
+ this.error = ! /^[0-9A-F]{6}$/i.test( color );
+ return this.fromInt( parseInt( color, 16 ) );
+ },
+
+ fromHsl: function( hsl ) {
+ var r, g, b, q, p, h, s, l;
+
+ if ( typeof hsl !== 'object' || hsl.h === undef || hsl.s === undef || hsl.l === undef )
+ return this._error();
+
+ this._hsl = hsl; // store it
+ this._hSpace = 'hsl'; // implicit
+ h = hsl.h / 360; s = hsl.s / 100; l = hsl.l / 100;
+ if ( s === 0 ) {
+ r = g = b = l; // achromatic
+ }
+ else {
+ q = l < 0.5 ? l * ( 1 + s ) : l + s - l * s;
+ p = 2 * l - q;
+ r = this.hue2rgb( p, q, h + 1/3 );
+ g = this.hue2rgb( p, q, h );
+ b = this.hue2rgb( p, q, h - 1/3 );
+ }
+ return this.fromRgb( {
+ r: r * 255,
+ g: g * 255,
+ b: b * 255
+ }, true ); // true preserves hue/sat
+ },
+
+ fromHsv: function( hsv ) {
+ var h, s, v, r, g, b, i, f, p, q, t;
+ if ( typeof hsv !== 'object' || hsv.h === undef || hsv.s === undef || hsv.v === undef )
+ return this._error();
+
+ this._hsv = hsv; // store it
+ this._hSpace = 'hsv'; // implicit
+
+ h = hsv.h / 360; s = hsv.s / 100; v = hsv.v / 100;
+ i = Math.floor( h * 6 );
+ f = h * 6 - i;
+ p = v * ( 1 - s );
+ q = v * ( 1 - f * s );
+ t = v * ( 1 - ( 1 - f ) * s );
+
+ switch( i % 6 ) {
+ case 0:
+ r = v; g = t; b = p;
+ break;
+ case 1:
+ r = q; g = v; b = p;
+ break;
+ case 2:
+ r = p; g = v; b = t;
+ break;
+ case 3:
+ r = p; g = q; b = v;
+ break;
+ case 4:
+ r = t; g = p; b = v;
+ break;
+ case 5:
+ r = v; g = p; b = q;
+ break;
+ }
+
+ return this.fromRgb( {
+ r: r * 255,
+ g: g * 255,
+ b: b * 255
+ }, true ); // true preserves hue/sat
+
+ },
+ // everything comes down to fromInt
+ fromInt: function( color, preserve ) {
+ this._color = parseInt( color, 10 );
+
+ if ( isNaN( this._color ) )
+ this._color = 0;
+
+ // let's coerce things
+ if ( this._color > 16777215 )
+ this._color = 16777215;
+ else if ( this._color < 0 )
+ this._color = 0;
+
+ // let's not do weird things
+ if ( preserve === undef ) {
+ this._hsv.h = this._hsv.s = this._hsl.h = this._hsl.s = 0;
+ }
+ // EVENT GOES HERE
+ return this;
+ },
+
+ hue2rgb: function( p, q, t ) {
+ if ( t < 0 ) {
+ t += 1;
+ }
+ if ( t > 1 ) {
+ t -= 1;
+ }
+ if ( t < 1/6 ) {
+ return p + ( q - p ) * 6 * t;
+ }
+ if ( t < 1/2 ) {
+ return q;
+ }
+ if ( t < 2/3 ) {
+ return p + ( q - p ) * ( 2/3 - t ) * 6;
+ }
+ return p;
+ },
+
+ toString: function() {
+ var hex = parseInt( this._color, 10 ).toString( 16 );
+ if ( this.error )
+ return '';
+ // maybe left pad it
+ if ( hex.length < 6 ) {
+ for (var i = 6 - hex.length - 1; i >= 0; i--) {
+ hex = '0' + hex;
+ }
+ }
+ return '#' + hex;
+ },
+
+ toCSS: function( type, alpha ) {
+ type = type || 'hex';
+ alpha = parseFloat( alpha || this._alpha );
+ switch ( type ) {
+ case 'rgb':
+ case 'rgba':
+ var rgb = this.toRgb();
+ if ( alpha < 1 ) {
+ return "rgba( " + rgb.r + ", " + rgb.g + ", " + rgb.b + ", " + alpha + " )";
+ }
+ else {
+ return "rgb( " + rgb.r + ", " + rgb.g + ", " + rgb.b + " )";
+ }
+ break;
+ case 'hsl':
+ case 'hsla':
+ var hsl = this.toHsl();
+ if ( alpha < 1 ) {
+ return "hsla( " + hsl.h + ", " + hsl.s + "%, " + hsl.l + "%, " + alpha + " )";
+ }
+ else {
+ return "hsl( " + hsl.h + ", " + hsl.s + "%, " + hsl.l + "% )";
+ }
+ break;
+ default:
+ return this.toString();
+ }
+ },
+
+ toRgb: function() {
+ return {
+ r: 255 & ( this._color >> 16 ),
+ g: 255 & ( this._color >> 8 ),
+ b: 255 & ( this._color )
+ };
+ },
+
+ toHsl: function() {
+ var rgb = this.toRgb();
+ var r = rgb.r / 255, g = rgb.g / 255, b = rgb.b / 255;
+ var max = Math.max( r, g, b ), min = Math.min( r, g, b );
+ var h, s, l = ( max + min ) / 2;
+
+ if ( max === min ) {
+ h = s = 0; // achromatic
+ } else {
+ var d = max - min;
+ s = l > 0.5 ? d / ( 2 - max - min ) : d / ( max + min );
+ switch ( max ) {
+ case r: h = ( g - b ) / d + ( g < b ? 6 : 0 );
+ break;
+ case g: h = ( b - r ) / d + 2;
+ break;
+ case b: h = ( r - g ) / d + 4;
+ break;
+ }
+ h /= 6;
+ }
+
+ // maintain hue & sat if we've been manipulating things in the HSL space.
+ h = Math.round( h * 360 );
+ if ( h === 0 && this._hsl.h !== h ) {
+ h = this._hsl.h;
+ }
+ s = Math.round( s * 100 );
+ if ( s === 0 && this._hsl.s ) {
+ s = this._hsl.s;
+ }
+
+ return {
+ h: h,
+ s: s,
+ l: Math.round( l * 100 )
+ };
+
+ },
+
+ toHsv: function() {
+ var rgb = this.toRgb();
+ var r = rgb.r / 255, g = rgb.g / 255, b = rgb.b / 255;
+ var max = Math.max( r, g, b ), min = Math.min( r, g, b );
+ var h, s, v = max;
+ var d = max - min;
+ s = max === 0 ? 0 : d / max;
+
+ if ( max === min ) {
+ h = s = 0; // achromatic
+ } else {
+ switch( max ){
+ case r:
+ h = ( g - b ) / d + ( g < b ? 6 : 0 );
+ break;
+ case g:
+ h = ( b - r ) / d + 2;
+ break;
+ case b:
+ h = ( r - g ) / d + 4;
+ break;
+ }
+ h /= 6;
+ }
+
+ // maintain hue & sat if we've been manipulating things in the HSV space.
+ h = Math.round( h * 360 );
+ if ( h === 0 && this._hsv.h !== h ) {
+ h = this._hsv.h;
+ }
+ s = Math.round( s * 100 );
+ if ( s === 0 && this._hsv.s ) {
+ s = this._hsv.s;
+ }
+
+ return {
+ h: h,
+ s: s,
+ v: Math.round( v * 100 )
+ };
+ },
+
+ toInt: function() {
+ return this._color;
+ },
+
+ toIEOctoHex: function() {
+ // AARRBBGG
+ var hex = this.toString();
+ var AA = parseInt( 255 * this._alpha, 10 ).toString(16);
+ if ( AA.length === 1 ) {
+ AA = '0' + AA;
+ }
+ return '#' + AA + hex.replace(/^#/, '' );
+ },
+
+ toLuminosity: function() {
+ var rgb = this.toRgb();
+ return 0.2126 * Math.pow( rgb.r / 255, 2.2 ) + 0.7152 * Math.pow( rgb.g / 255, 2.2 ) + 0.0722 * Math.pow( rgb.b / 255, 2.2);
+ },
+
+ getDistanceLuminosityFrom: function( color ) {
+ if ( ! ( color instanceof Color ) ) {
+ throw 'getDistanceLuminosityFrom requires a Color object';
+ }
+ var lum1 = this.toLuminosity();
+ var lum2 = color.toLuminosity();
+ if ( lum1 > lum2 ) {
+ return ( lum1 + 0.05 ) / ( lum2 + 0.05 );
+ }
+ else {
+ return ( lum2 + 0.05 ) / ( lum1 + 0.05 );
+ }
+ },
+
+ getMaxContrastColor: function() {
+ var lum = this.toLuminosity();
+ var hex = ( lum >= 0.5 ) ? '000000' : 'ffffff';
+ return new Color( hex );
+ },
+
+ getReadableContrastingColor: function( bgColor, minContrast ) {
+ if ( ! bgColor instanceof Color ) {
+ return this;
+ }
+
+ // you shouldn't use less than 5, but you might want to.
+ var targetContrast = ( minContrast === undef ) ? 5 : minContrast;
+ // working things
+ var contrast = bgColor.getDistanceLuminosityFrom( this );
+ var maxContrastColor = bgColor.getMaxContrastColor();
+ var maxContrast = maxContrastColor.getDistanceLuminosityFrom( bgColor );
+
+ // if current max contrast is less than the target contrast, we had wishful thinking.
+ // still, go max
+ if ( maxContrast <= targetContrast ) {
+ return maxContrastColor;
+ }
+ // or, we might already have sufficient contrast
+ else if ( contrast >= targetContrast ) {
+ return this;
+ }
+
+ var incr = ( 0 === maxContrastColor.toInt() ) ? -1 : 1;
+ while ( contrast < targetContrast ) {
+ this.l( incr, true ); // 2nd arg turns this into an incrementer
+ contrast = this.getDistanceLuminosityFrom( bgColor );
+ // infininite loop prevention: you never know.
+ if ( this._color === 0 || this._color === 16777215 ) {
+ break;
+ }
+ }
+
+ return this;
+
+ },
+
+ a: function( val ) {
+ if ( val === undef )
+ return this._alpha;
+
+ var a = parseFloat( val );
+
+ if ( isNaN( a ) )
+ return this._error();
+
+ this._alpha = a;
+ return this;
+ },
+
+ // TRANSFORMS
+
+ darken: function( amount ) {
+ amount = amount || 5;
+ return this.l( - amount, true );
+ },
+
+ lighten: function( amount ) {
+ amount = amount || 5;
+ return this.l( amount, true );
+ },
+
+ saturate: function( amount ) {
+ amount = amount || 15;
+ return this.s( amount, true );
+ },
+
+ desaturate: function( amount ) {
+ amount = amount || 15;
+ return this.s( - amount, true );
+ },
+
+ toGrayscale: function() {
+ return this.setHSpace('hsl').s( 0 );
+ },
+
+ getComplement: function() {
+ return this.h( 180, true );
+ },
+
+ getSplitComplement: function( step ) {
+ step = step || 1;
+ var incr = 180 + ( step * 30 );
+ return this.h( incr, true );
+ },
+
+ getAnalog: function( step ) {
+ step = step || 1;
+ var incr = step * 30;
+ return this.h( incr, true );
+ },
+
+ getTetrad: function( step ) {
+ step = step || 1;
+ var incr = step * 60;
+ return this.h( incr, true );
+ },
+
+ getTriad: function( step ) {
+ step = step || 1;
+ var incr = step * 120;
+ return this.h( incr, true );
+ },
+
+ _partial: function( key ) {
+ var prop = shortProps[key];
+ return function( val, incr ) {
+ var color = this._spaceFunc('to', prop.space);
+
+ // GETTER
+ if ( val === undef )
+ return color[key];
+
+ // INCREMENT
+ if ( incr === true )
+ val = color[key] + val;
+
+ // MOD & RANGE
+ if ( prop.mod )
+ val = val % prop.mod;
+ if ( prop.range )
+ val = ( val < prop.range[0] ) ? prop.range[0] : ( val > prop.range[1] ) ? prop.range[1] : val;
+
+ // NEW VALUE
+ color[key] = val;
+
+ return this._spaceFunc('from', prop.space, color);
+ };
+ },
+
+ _spaceFunc: function( dir, s, val ) {
+ var space = s || this._hSpace,
+ funcName = dir + space.charAt(0).toUpperCase() + space.substr(1);
+ return this[funcName](val);
+ }
+ };
+
+ var shortProps = {
+ h: {
+ mod: 360
+ },
+ s: {
+ range: [0,100]
+ },
+ l: {
+ space: 'hsl',
+ range: [0,100]
+ },
+ v: {
+ space: 'hsv',
+ range: [0,100]
+ },
+ r: {
+ space: 'rgb',
+ range: [0,255]
+ },
+ g: {
+ space: 'rgb',
+ range: [0,255]
+ },
+ b: {
+ space: 'rgb',
+ range: [0,255]
+ }
+ };
+
+ for ( var key in shortProps ) {
+ if ( shortProps.hasOwnProperty( key ) )
+ Color.fn[key] = Color.fn._partial(key);
+ }
+
+ // play nicely with Node + browser
+ if ( typeof exports === 'object' )
+ module.exports = Color;
+ else
+ global.Color = Color;
+
+}(this));
diff --git a/lib/plugins/styling/lang/bg/lang.php b/lib/plugins/styling/lang/bg/lang.php
new file mode 100644
index 000000000..5e457380c
--- /dev/null
+++ b/lib/plugins/styling/lang/bg/lang.php
@@ -0,0 +1,17 @@
+<?php
+
+/**
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Kiril <neohidra@gmail.com>
+ */
+$lang['btn_preview'] = 'Преглед на промените';
+$lang['btn_save'] = 'Запис на промените';
+$lang['btn_reset'] = 'Анулиране на промените';
+$lang['__text__'] = 'Цвят на основния текст';
+$lang['__background__'] = 'Цвят на основния фон';
+$lang['__text_alt__'] = 'Алтернативен цвят за текста';
+$lang['__background_alt__'] = 'Алтернативен цвят за фона';
+$lang['__text_neu__'] = 'Неутрален цвят за текста';
+$lang['__background_neu__'] = 'Неутрален цвят за фона';
+$lang['__border__'] = 'Цвят на рамката';
diff --git a/lib/plugins/styling/lang/de/intro.txt b/lib/plugins/styling/lang/de/intro.txt
new file mode 100644
index 000000000..aa9577355
--- /dev/null
+++ b/lib/plugins/styling/lang/de/intro.txt
@@ -0,0 +1,2 @@
+Dieses Plugin ermöglicht es, bestimmte Designeinstellungen des ausgewählten Templates zu ändern.
+Alle Änderungen werden in einer lokalen Konfigurationsdatei gespeichert und sind upgrade-sicher. \ No newline at end of file
diff --git a/lib/plugins/styling/lang/de/lang.php b/lib/plugins/styling/lang/de/lang.php
new file mode 100644
index 000000000..8a46f818e
--- /dev/null
+++ b/lib/plugins/styling/lang/de/lang.php
@@ -0,0 +1,23 @@
+<?php
+
+/**
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Anika Henke <anika@selfthinker.org>
+ */
+$lang['menu'] = 'Einstellungen fürs Template-Design';
+$lang['js']['loader'] = 'Vorschau lädt...<br />Falls diese Nachricht nicht verschwindet, könnten Ihre Werte fehlerhaft sein';
+$lang['js']['popup'] = 'Öffne als Popup';
+$lang['error'] = 'Dieses Template unterstützt diese Funktion nicht.';
+$lang['btn_preview'] = 'Vorschau der Änderungen anzeigen';
+$lang['btn_save'] = 'Änderungen speichern';
+$lang['btn_reset'] = 'Jetzige Änderungen rückgängig machen';
+$lang['btn_revert'] = 'Auf Templates Voreinstellungen zurückfallen';
+$lang['__text__'] = 'Haupttextfarbe';
+$lang['__background__'] = 'Haupthintergrundfarbe';
+$lang['__text_alt__'] = 'Alternative Textfarbe';
+$lang['__background_alt__'] = 'Alternative Hintergrundfarbe';
+$lang['__text_neu__'] = 'Neutrale Textfarbe';
+$lang['__background_neu__'] = 'Neutrale Hintergrundfarbe';
+$lang['__border__'] = 'Rahmenfarbe';
+$lang['__highlight__'] = 'Hervorhebungsfarbe (hauptsächlich für Suchergebnisse)';
diff --git a/lib/plugins/styling/lang/en/intro.txt b/lib/plugins/styling/lang/en/intro.txt
new file mode 100644
index 000000000..4ea55172f
--- /dev/null
+++ b/lib/plugins/styling/lang/en/intro.txt
@@ -0,0 +1,2 @@
+This tool allows you to change certain style settings of your currently selected template.
+All changes are stored in a local configuration file and are upgrade safe. \ No newline at end of file
diff --git a/lib/plugins/styling/lang/en/lang.php b/lib/plugins/styling/lang/en/lang.php
new file mode 100644
index 000000000..e0011eb83
--- /dev/null
+++ b/lib/plugins/styling/lang/en/lang.php
@@ -0,0 +1,35 @@
+<?php
+/**
+ * English language file for styling plugin
+ *
+ * @author Andreas Gohr <andi@splitbrain.org>
+ */
+
+// menu entry for admin plugins
+$lang['menu'] = 'Template Style Settings';
+
+$lang['js']['loader'] = 'Preview is loading...<br />if this does not goes away, your values may be faulty';
+$lang['js']['popup'] = 'Open as a popup';
+
+// custom language strings for the plugin
+$lang['error'] = 'Sorry, this template does not support this functionality.';
+
+$lang['btn_preview'] = 'Preview changes';
+$lang['btn_save'] = 'Save changes';
+$lang['btn_reset'] = 'Reset current changes';
+$lang['btn_revert'] = 'Revert styles back to template\'s default';
+
+// default guaranteed placeholders
+$lang['__text__'] = 'Main text color';
+$lang['__background__'] = 'Main background color';
+$lang['__text_alt__'] = 'Alternative text color';
+$lang['__background_alt__'] = 'Alternative background color';
+$lang['__text_neu__'] = 'Neutral text color';
+$lang['__background_neu__'] = 'Neutral background color';
+$lang['__border__'] = 'Border color';
+$lang['__highlight__'] = 'Highlight color (for search results mainly)';
+
+
+
+
+//Setup VIM: ex: et ts=4 :
diff --git a/lib/plugins/styling/lang/es/intro.txt b/lib/plugins/styling/lang/es/intro.txt
new file mode 100644
index 000000000..8a556002e
--- /dev/null
+++ b/lib/plugins/styling/lang/es/intro.txt
@@ -0,0 +1,2 @@
+Esta herramienta le permite cambiar algunos ajustes de estilo de la plantilla seleccionada.
+Todos los cambios se guardan en un archivo de configuración local y son una actualización segura. \ No newline at end of file
diff --git a/lib/plugins/styling/lang/es/lang.php b/lib/plugins/styling/lang/es/lang.php
new file mode 100644
index 000000000..ad300dc12
--- /dev/null
+++ b/lib/plugins/styling/lang/es/lang.php
@@ -0,0 +1,23 @@
+<?php
+
+/**
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Domingo Redal <docxml@gmail.com>
+ */
+$lang['menu'] = 'Ajustes de plantilla';
+$lang['js']['loader'] = 'La vista previa se está cargando ... <br /> si esto no se ve, sus valores pueden ser defectuosos';
+$lang['js']['popup'] = 'Abrir como una ventana emergente';
+$lang['error'] = 'Lo sentimos, esta plantilla no admite esta funcionalidad.';
+$lang['btn_preview'] = 'Vista previa de los cambios';
+$lang['btn_save'] = 'Guardar cambios';
+$lang['btn_reset'] = 'Reiniciar los cambios actuales';
+$lang['btn_revert'] = 'Revertir estilos volviendo a los valores por defecto de la plantilla';
+$lang['__text__'] = 'Color del texto principal';
+$lang['__background__'] = 'Color de fondo del texto principal';
+$lang['__text_alt__'] = 'Color del texto alternativo';
+$lang['__background_alt__'] = 'Color de fondo del texto alternativo';
+$lang['__text_neu__'] = 'Color del texto neutro';
+$lang['__background_neu__'] = 'Color de fondo del texto neutro';
+$lang['__border__'] = 'Color del borde';
+$lang['__highlight__'] = 'Color resaltado (para los resultados de búsqueda, principalmente)';
diff --git a/lib/plugins/styling/lang/fr/intro.txt b/lib/plugins/styling/lang/fr/intro.txt
new file mode 100644
index 000000000..14a615c8d
--- /dev/null
+++ b/lib/plugins/styling/lang/fr/intro.txt
@@ -0,0 +1,2 @@
+Cet outil vous permet de changer les paramètres de certains style de votre thème actuel.
+Tous les changement sont enregistrés dans un fichier de configuration local qui sera inchangé en cas de mise à jour. \ No newline at end of file
diff --git a/lib/plugins/styling/lang/fr/lang.php b/lib/plugins/styling/lang/fr/lang.php
new file mode 100644
index 000000000..92b8c3d74
--- /dev/null
+++ b/lib/plugins/styling/lang/fr/lang.php
@@ -0,0 +1,24 @@
+<?php
+
+/**
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Carbain Frédéric <fcarbain@yahoo.fr>
+ * @author Nicolas Friedli <nicolas@theologique.ch>
+ */
+$lang['menu'] = 'Paramètres de style du thème (template)';
+$lang['js']['loader'] = 'La prévisualisation est en chargement... <br />Si rien ne se passe, les données sont peut-être erronées';
+$lang['js']['popup'] = 'Ouvrir dans une nouvelle fenêtre';
+$lang['error'] = 'Désolé, ce thème ne supporte pas cette fonctionnalité.';
+$lang['btn_preview'] = 'Aperçu des changements';
+$lang['btn_save'] = 'sauvegarder les changements.';
+$lang['btn_reset'] = 'Remettre les changements courants à zéro';
+$lang['btn_revert'] = 'Remettre les styles du thème aux valeurs par défaut';
+$lang['__text__'] = 'Couleur de texte principale';
+$lang['__background__'] = 'Couleur de fond principale';
+$lang['__text_alt__'] = 'Couleur de texte alternative';
+$lang['__background_alt__'] = 'Couleur de fond alternative';
+$lang['__text_neu__'] = 'Couleur de texte neutre';
+$lang['__background_neu__'] = 'Couleur de fond neutre';
+$lang['__border__'] = 'Couleur des contours';
+$lang['__highlight__'] = 'Couleur de surbrillance (utilisée pincipalement pour les résultats de recherche)';
diff --git a/lib/plugins/styling/lang/ja/intro.txt b/lib/plugins/styling/lang/ja/intro.txt
new file mode 100644
index 000000000..1feb4e033
--- /dev/null
+++ b/lib/plugins/styling/lang/ja/intro.txt
@@ -0,0 +1,2 @@
+この画面上で、選択中のテンプレート固有のスタイル設定を変更できます。
+変更内容はすべてローカルの設定ファイル内に保存され、テンプレートを更新しても初期化されません。 \ No newline at end of file
diff --git a/lib/plugins/styling/lang/ja/lang.php b/lib/plugins/styling/lang/ja/lang.php
new file mode 100644
index 000000000..da18829b2
--- /dev/null
+++ b/lib/plugins/styling/lang/ja/lang.php
@@ -0,0 +1,23 @@
+<?php
+
+/**
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Hideaki SAWADA <chuno@live.jp>
+ */
+$lang['menu'] = 'テンプレートのスタイル設定';
+$lang['js']['loader'] = 'プレビューを読込み中です・・・<br/>この表示が消えない場合、変更した設定値に問題があるかもしれません。';
+$lang['js']['popup'] = 'ポップアップとして表示';
+$lang['error'] = 'このテンプレートは、この機能に対応していません。';
+$lang['btn_preview'] = '変更内容のプレビュー';
+$lang['btn_save'] = '変更内容の保存';
+$lang['btn_reset'] = '変更内容の初期化';
+$lang['btn_revert'] = 'テンプレートのデフォルト値に戻す';
+$lang['__text__'] = 'メイン文字色';
+$lang['__background__'] = 'メイン背景色';
+$lang['__text_alt__'] = '代替文字色';
+$lang['__background_alt__'] = '代替背景色';
+$lang['__text_neu__'] = '無彩色の文字色';
+$lang['__background_neu__'] = '無彩色の背景色';
+$lang['__border__'] = '枠線の色';
+$lang['__highlight__'] = '強調色(主に検索結果用)';
diff --git a/lib/plugins/styling/lang/ko/intro.txt b/lib/plugins/styling/lang/ko/intro.txt
new file mode 100644
index 000000000..c460801b1
--- /dev/null
+++ b/lib/plugins/styling/lang/ko/intro.txt
@@ -0,0 +1,2 @@
+이 도구는 현재 선택한 템플릿의 특정 스타일 설정을 바꿀 수 있습니다.
+모든 바뀜은 로컬 환경 설정 파일에 저장되며 안전하게 업그레이드됩니다. \ No newline at end of file
diff --git a/lib/plugins/styling/lang/ko/lang.php b/lib/plugins/styling/lang/ko/lang.php
new file mode 100644
index 000000000..96da76d48
--- /dev/null
+++ b/lib/plugins/styling/lang/ko/lang.php
@@ -0,0 +1,23 @@
+<?php
+
+/**
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Myeongjin <aranet100@gmail.com>
+ */
+$lang['menu'] = '템플릿 스타일 설정';
+$lang['js']['loader'] = '미리 보기를 불러오는 중...<br />만약 이것이 사라지지 않는다면, 당신은 실망하겠죠';
+$lang['js']['popup'] = '팝업으로 열기';
+$lang['error'] = '죄송하지만 이 템플릿은 이 기능으로 지원하지 않습니다.';
+$lang['btn_preview'] = '바뀜 미리 보기';
+$lang['btn_save'] = '바뀜 저장';
+$lang['btn_reset'] = '현재 바뀜 재설정';
+$lang['btn_revert'] = '틀의 기본값으로 스타일을 되돌리기';
+$lang['__text__'] = '주요 텍스트 색';
+$lang['__background__'] = '주요 배경 색';
+$lang['__text_alt__'] = '대체 텍스트 색';
+$lang['__background_alt__'] = '대체 배경 색';
+$lang['__text_neu__'] = '중립 텍스트 색';
+$lang['__background_neu__'] = '중립 배경 색';
+$lang['__border__'] = '윤곽선 색';
+$lang['__highlight__'] = '(주로 검색 결과를 위한) 강조 색';
diff --git a/lib/plugins/styling/lang/nl/intro.txt b/lib/plugins/styling/lang/nl/intro.txt
new file mode 100644
index 000000000..727593848
--- /dev/null
+++ b/lib/plugins/styling/lang/nl/intro.txt
@@ -0,0 +1,2 @@
+Deze tool laat u een aantal stijlinstellingen van uw huidig geselecteerde template aanpassen.
+Alle aanpassingen worden in een lokaal configuratiebestand bewaard en zijn upgrade veilig.
diff --git a/lib/plugins/styling/lang/nl/lang.php b/lib/plugins/styling/lang/nl/lang.php
new file mode 100644
index 000000000..dd258051e
--- /dev/null
+++ b/lib/plugins/styling/lang/nl/lang.php
@@ -0,0 +1,24 @@
+<?php
+
+/**
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Mark C. Prins <mprins@users.sf.net>
+ * @author hugo smet <hugo.smet@scarlet.be>
+ */
+$lang['menu'] = 'Template stijl-instellingen';
+$lang['js']['loader'] = 'Voorbeeldweergave is aan het laden...<br />als dit niet verdwijnt zijn uw instellingen mogelijk foutief.';
+$lang['js']['popup'] = 'Open als popup';
+$lang['error'] = 'Sorry, deze template ondersteunt deze functionaliteit niet.';
+$lang['btn_preview'] = 'Bekijk aanpassingen';
+$lang['btn_save'] = 'Sla aanpassingen op';
+$lang['btn_reset'] = 'Huidige aanpassingen verwerpen';
+$lang['btn_revert'] = 'Stijlen terugzetten naar de standaard waardes van de template';
+$lang['__text__'] = 'Hoofd tekstkleur';
+$lang['__background__'] = 'Hoofd achtergrondkleur';
+$lang['__text_alt__'] = 'Alternatieve tekstkleur';
+$lang['__background_alt__'] = 'Alternatieve achtergrondkleur';
+$lang['__text_neu__'] = 'Neutrale tekstkleur';
+$lang['__background_neu__'] = 'Neutrale achtergrondkleur';
+$lang['__border__'] = 'Kader kleur';
+$lang['__highlight__'] = 'Markeringskleur (hoofdzakelijk voor zoekresultaten)';
diff --git a/lib/plugins/styling/lang/pt-br/intro.txt b/lib/plugins/styling/lang/pt-br/intro.txt
new file mode 100644
index 000000000..3d0f47fd6
--- /dev/null
+++ b/lib/plugins/styling/lang/pt-br/intro.txt
@@ -0,0 +1,2 @@
+Essa ferramente permite a alteração de certas configurações do estilo do seu modelo atual.
+Todas as modificações são armazenadas em um arquivo de configuração local e estão protegidas contra atualizações. \ No newline at end of file
diff --git a/lib/plugins/styling/lang/pt-br/lang.php b/lib/plugins/styling/lang/pt-br/lang.php
new file mode 100644
index 000000000..b7ac1fcd8
--- /dev/null
+++ b/lib/plugins/styling/lang/pt-br/lang.php
@@ -0,0 +1,23 @@
+<?php
+
+/**
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Frederico Gonçalves Guimarães <frederico@teia.bio.br>
+ */
+$lang['menu'] = 'Configurações de estilo do modelo';
+$lang['js']['loader'] = 'A visualização está carregando...<br />Caso essa mensagem não desapareça, pode ter algum problema com os seus valores.';
+$lang['js']['popup'] = 'Abrir como um popup';
+$lang['error'] = 'Desculpe, mas esse modelo não suporta essa funcionalidade.';
+$lang['btn_preview'] = 'Ver alterações';
+$lang['btn_save'] = 'Salvar alterações';
+$lang['btn_reset'] = 'Eliminar as alterações atuais';
+$lang['btn_revert'] = 'Reverter o estilo para os padrões do modelo';
+$lang['__text__'] = 'Cor principal do texto';
+$lang['__background__'] = 'Cor principal do fundo';
+$lang['__text_alt__'] = 'Cor alternativa do texto';
+$lang['__background_alt__'] = 'Cor alternativa do fundo';
+$lang['__text_neu__'] = 'Cor neutra do texto';
+$lang['__background_neu__'] = 'Cor neutra do fundo';
+$lang['__border__'] = 'Cor da borda';
+$lang['__highlight__'] = 'Cor do destaque (primariamente em resultados da pesquisa)';
diff --git a/lib/plugins/styling/lang/zh/intro.txt b/lib/plugins/styling/lang/zh/intro.txt
new file mode 100644
index 000000000..709171247
--- /dev/null
+++ b/lib/plugins/styling/lang/zh/intro.txt
@@ -0,0 +1 @@
+这个工具可以让您对当前选中的模板的某些样式设置进行改变。所有改动会保存在一个本地配置文件中,不会被升级所影响。 \ No newline at end of file
diff --git a/lib/plugins/styling/lang/zh/lang.php b/lib/plugins/styling/lang/zh/lang.php
new file mode 100644
index 000000000..805d070df
--- /dev/null
+++ b/lib/plugins/styling/lang/zh/lang.php
@@ -0,0 +1,23 @@
+<?php
+
+/**
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author lainme <lainme993@gmail.com>
+ */
+$lang['menu'] = '模板样式设置';
+$lang['js']['loader'] = '正在载入预览...<br />如果本句一直没有消失,您的设置可能有错';
+$lang['js']['popup'] = '作为弹出窗口打开';
+$lang['error'] = '抱歉,这个模板不支持这项功能。';
+$lang['btn_preview'] = '预览改动';
+$lang['btn_save'] = '保存改动';
+$lang['btn_reset'] = '重置当前改动';
+$lang['btn_revert'] = '回退样式到模板的默认值';
+$lang['__text__'] = '主要的字体颜色';
+$lang['__background__'] = '主要的背景颜色';
+$lang['__text_alt__'] = '备选字体的颜色';
+$lang['__background_alt__'] = '备选背景的颜色';
+$lang['__text_neu__'] = '中性字体的颜色';
+$lang['__background_neu__'] = '中性背景的颜色';
+$lang['__border__'] = '边框颜色';
+$lang['__highlight__'] = '高亮颜色 (主要用于搜索结果)';
diff --git a/lib/plugins/styling/plugin.info.txt b/lib/plugins/styling/plugin.info.txt
new file mode 100644
index 000000000..9f002e282
--- /dev/null
+++ b/lib/plugins/styling/plugin.info.txt
@@ -0,0 +1,7 @@
+base styling
+author Andreas Gohr
+email andi@splitbrain.org
+date 2015-07-26
+name styling plugin
+desc Allows to edit style.ini replacements
+url https://www.dokuwiki.org/plugin:styling
diff --git a/lib/plugins/styling/popup.php b/lib/plugins/styling/popup.php
new file mode 100644
index 000000000..964b19e29
--- /dev/null
+++ b/lib/plugins/styling/popup.php
@@ -0,0 +1,30 @@
+<?php
+if(!defined('DOKU_INC')) define('DOKU_INC', dirname(__FILE__) . '/../../../');
+require_once(DOKU_INC . 'inc/init.php');
+//close session
+session_write_close();
+header('Content-Type: text/html; charset=utf-8');
+header('X-UA-Compatible: IE=edge,chrome=1');
+
+/** @var admin_plugin_styling $plugin */
+$plugin = plugin_load('admin', 'styling');
+if(!auth_isadmin()) die('only admins allowed');
+$plugin->ispopup = true;
+
+// handle posts
+$plugin->handle();
+
+// output plugin in a very minimal template:
+?><!DOCTYPE html>
+<html lang="<?php echo $conf['lang'] ?>" dir="<?php echo $lang['direction'] ?>">
+<head>
+ <meta charset="utf-8" />
+ <title><?php echo $plugin->getLang('menu') ?></title>
+ <?php tpl_metaheaders(false) ?>
+ <meta name="viewport" content="width=device-width,initial-scale=1" />
+ <?php echo tpl_favicon(array('favicon')) ?>
+</head>
+<body class="dokuwiki">
+ <?php $plugin->html() ?>
+</body>
+</html>
diff --git a/lib/plugins/styling/script.js b/lib/plugins/styling/script.js
new file mode 100644
index 000000000..074c8dc40
--- /dev/null
+++ b/lib/plugins/styling/script.js
@@ -0,0 +1,97 @@
+/* DOKUWIKI:include_once iris.js */
+
+jQuery(function () {
+
+ /**
+ * Function to reload the preview styles in the main window
+ *
+ * @param {Window} target the main window
+ */
+ function applyPreview(target) {
+ // remove style
+ var $style = target.jQuery('link[rel=stylesheet][href*="lib/exe/css.php"]');
+ $style.attr('href', '');
+
+ // append the loader screen
+ var $loader = target.jQuery('#plugin__styling_loader');
+ if (!$loader.length) {
+ $loader = target.jQuery('<div id="plugin__styling_loader">' + LANG.plugins.styling.loader + '</div>');
+ $loader.css({
+ 'position': 'absolute',
+ 'width': '100%',
+ 'height': '100%',
+ 'top': 0,
+ 'left': 0,
+ 'z-index': 5000,
+ 'background-color': '#fff',
+ 'opacity': '0.7',
+ 'color': '#000',
+ 'font-size': '2.5em',
+ 'text-align': 'center',
+ 'line-height': 1.5,
+ 'padding-top': '2em'
+ });
+ target.jQuery('body').append($loader);
+ }
+
+ // load preview in main window (timeout works around chrome updating CSS weirdness)
+ setTimeout(function () {
+ var now = new Date().getTime();
+ $style.attr('href', DOKU_BASE + 'lib/exe/css.php?preview=1&tseed=' + now);
+ }, 500);
+ }
+
+ var doreload = 1;
+ var $styling_plugin = jQuery('#plugin__styling');
+
+ // if we are not on the plugin page (either main or popup)
+ if (!$styling_plugin.length) {
+ // handle the preview cookie
+ if(DokuCookie.getValue('styling_plugin') == 1) {
+ applyPreview(window);
+ }
+ return; // nothing more to do here
+ }
+
+ /* ---- from here on we're in the popup or admin page ---- */
+
+ // add the color picker
+ $styling_plugin.find('.color').iris({});
+
+ // add button on main page
+ if (!$styling_plugin.hasClass('ispopup')) {
+ var $form = $styling_plugin.find('form.styling').first();
+ var $btn = jQuery('<button>' + LANG.plugins.styling.popup + '</button>');
+ $form.prepend($btn);
+
+ $btn.click(function (e) {
+ var windowFeatures = "menubar=no,location=no,resizable=yes,scrollbars=yes,status=false,width=500,height=500";
+ window.open(DOKU_BASE + 'lib/plugins/styling/popup.php', 'styling_popup', windowFeatures);
+ e.preventDefault();
+ e.stopPropagation();
+ }).wrap('<p></p>');
+ return; // we exit here if this is not the popup
+ }
+
+ /* ---- from here on we're in the popup only ---- */
+
+ // reload the main page on close
+ window.onunload = function(e) {
+ if(doreload) {
+ window.opener.DokuCookie.setValue('styling_plugin', 0);
+ window.opener.document.location.reload();
+ }
+ return null;
+ };
+
+ // don't reload on our own buttons
+ jQuery(':button').click(function(e){
+ doreload = false;
+ });
+
+ // on first load apply preview
+ applyPreview(window.opener);
+
+ // enable the preview cookie
+ window.opener.DokuCookie.setValue('styling_plugin', 1);
+});
diff --git a/lib/plugins/styling/style.less b/lib/plugins/styling/style.less
new file mode 100644
index 000000000..be0e16a5b
--- /dev/null
+++ b/lib/plugins/styling/style.less
@@ -0,0 +1,13 @@
+#plugin__styling {
+ button.primary {
+ font-weight: bold;
+ }
+
+ [dir=rtl] & table input {
+ text-align: right;
+ }
+}
+
+#plugin__styling_loader {
+ display: none;
+}
diff --git a/lib/plugins/syntax.php b/lib/plugins/syntax.php
index 4a301f927..9e2913d78 100644
--- a/lib/plugins/syntax.php
+++ b/lib/plugins/syntax.php
@@ -52,6 +52,7 @@ class DokuWiki_Syntax_Plugin extends Doku_Parser_Mode_Plugin {
* 'stack' - Special case. Plugin wraps other paragraphs.
*
* @see Doku_Handler_Block
+ *
* @return string
*/
function getPType(){
@@ -70,7 +71,7 @@ class DokuWiki_Syntax_Plugin extends Doku_Parser_Mode_Plugin {
* @param int $state The lexer state for the match
* @param int $pos The character position of the matched text
* @param Doku_Handler $handler The Doku_Handler object
- * @return array Return an array with all data you want to use in render
+ * @return bool|array Return an array with all data you want to use in render, false don't add an instruction
*/
function handle($match, $state, $pos, Doku_Handler $handler){
trigger_error('handle() not implemented in '.get_class($this), E_USER_WARNING);
@@ -94,10 +95,10 @@ class DokuWiki_Syntax_Plugin extends Doku_Parser_Mode_Plugin {
* The contents of the $data array depends on what the handler() function above
* created
*
- * @param $format string output format being rendered
- * @param $renderer Doku_Renderer the current renderer object
- * @param $data array data created by handler()
- * @return boolean rendered correctly?
+ * @param string $format output format being rendered
+ * @param Doku_Renderer $renderer the current renderer object
+ * @param array $data data created by handler()
+ * @return boolean rendered correctly? (however, returned value is not used at the moment)
*/
function render($format, Doku_Renderer $renderer, $data) {
trigger_error('render() not implemented in '.get_class($this), E_USER_WARNING);
diff --git a/lib/plugins/usermanager/admin.php b/lib/plugins/usermanager/admin.php
index d777b6542..86823ee2f 100644
--- a/lib/plugins/usermanager/admin.php
+++ b/lib/plugins/usermanager/admin.php
@@ -31,11 +31,12 @@ class admin_plugin_usermanager extends DokuWiki_Admin_Plugin {
protected $_edit_userdata = array();
protected $_disabled = ''; // if disabled set to explanatory string
protected $_import_failures = array();
+ protected $_lastdisabled = false; // set to true if last user is unknown and last button is hence buggy
/**
* Constructor
*/
- public function admin_plugin_usermanager(){
+ public function __construct(){
/** @var DokuWiki_Auth_Plugin $auth */
global $auth;
@@ -58,9 +59,12 @@ class admin_plugin_usermanager extends DokuWiki_Admin_Plugin {
}
}
- /**
- * Return prompt for admin menu
- */
+ /**
+ * Return prompt for admin menu
+ *
+ * @param string $language
+ * @return string
+ */
public function getMenuText($language) {
if (!is_null($this->_auth))
@@ -71,13 +75,38 @@ class admin_plugin_usermanager extends DokuWiki_Admin_Plugin {
/**
* return sort order for position in admin menu
+ *
+ * @return int
*/
public function getMenuSort() {
return 2;
}
/**
+ * @return int current start value for pageination
+ */
+ public function getStart() {
+ return $this->_start;
+ }
+
+ /**
+ * @return int number of users per page
+ */
+ public function getPagesize() {
+ return $this->_pagesize;
+ }
+
+ /**
+ * @param boolean $lastdisabled
+ */
+ public function setLastdisabled($lastdisabled) {
+ $this->_lastdisabled = $lastdisabled;
+ }
+
+ /**
* Handle user request
+ *
+ * @return bool
*/
public function handle() {
global $INPUT;
@@ -128,6 +157,8 @@ class admin_plugin_usermanager extends DokuWiki_Admin_Plugin {
/**
* Output appropriate html
+ *
+ * @return bool
*/
public function html() {
global $ID;
@@ -210,18 +241,18 @@ class admin_plugin_usermanager extends DokuWiki_Admin_Plugin {
ptln(" <tbody>");
ptln(" <tr><td colspan=\"5\" class=\"centeralign\">");
ptln(" <span class=\"medialeft\">");
- ptln(" <input type=\"submit\" name=\"fn[delete]\" ".$delete_disable." class=\"button\" value=\"".$this->lang['delete_selected']."\" id=\"usrmgr__del\" />");
- ptln(" </span>");
+ ptln(" <button type=\"submit\" name=\"fn[delete]\" id=\"usrmgr__del\" ".$delete_disable.">".$this->lang['delete_selected']."</button>");
+ ptln(" ");
ptln(" <span class=\"mediaright\">");
- ptln(" <input type=\"submit\" name=\"fn[start]\" ".$page_buttons['start']." class=\"button\" value=\"".$this->lang['start']."\" />");
- ptln(" <input type=\"submit\" name=\"fn[prev]\" ".$page_buttons['prev']." class=\"button\" value=\"".$this->lang['prev']."\" />");
- ptln(" <input type=\"submit\" name=\"fn[next]\" ".$page_buttons['next']." class=\"button\" value=\"".$this->lang['next']."\" />");
- ptln(" <input type=\"submit\" name=\"fn[last]\" ".$page_buttons['last']." class=\"button\" value=\"".$this->lang['last']."\" />");
+ ptln(" <button type=\"submit\" name=\"fn[start]\" ".$page_buttons['start'].">".$this->lang['start']."</button>");
+ ptln(" <button type=\"submit\" name=\"fn[prev]\" ".$page_buttons['prev'].">".$this->lang['prev']."</button>");
+ ptln(" <button type=\"submit\" name=\"fn[next]\" ".$page_buttons['next'].">".$this->lang['next']."</button>");
+ ptln(" <button type=\"submit\" name=\"fn[last]\" ".$page_buttons['last'].">".$this->lang['last']."</button>");
ptln(" </span>");
if (!empty($this->_filter)) {
- ptln(" <input type=\"submit\" name=\"fn[search][clear]\" class=\"button\" value=\"".$this->lang['clear']."\" />");
+ ptln(" <button type=\"submit\" name=\"fn[search][clear]\">".$this->lang['clear']."</button>");
}
- ptln(" <input type=\"submit\" name=\"fn[export]\" class=\"button\" value=\"".$export_label."\" />");
+ ptln(" <button type=\"submit\" name=\"fn[export]\">".$export_label."</button>");
ptln(" <input type=\"hidden\" name=\"do\" value=\"admin\" />");
ptln(" <input type=\"hidden\" name=\"page\" value=\"usermanager\" />");
@@ -329,7 +360,7 @@ class admin_plugin_usermanager extends DokuWiki_Admin_Plugin {
$this->_htmlFilterSettings($indent+10);
- ptln(" <input type=\"submit\" name=\"fn[".$cmd."]\" class=\"button\" value=\"".$this->lang[$cmd]."\" />",$indent);
+ ptln(" <button type=\"submit\" name=\"fn[".$cmd."]\">".$this->lang[$cmd]."</button>",$indent);
ptln(" </td>",$indent);
ptln(" </tr>",$indent);
ptln(" </tbody>",$indent);
@@ -338,7 +369,7 @@ class admin_plugin_usermanager extends DokuWiki_Admin_Plugin {
if ($notes) {
ptln(" <ul class=\"notes\">");
foreach ($notes as $note) {
- ptln(" <li><span class=\"li\">".$note."</span></li>",$indent);
+ ptln(" <li><span class=\"li\">".$note."</li>",$indent);
}
ptln(" </ul>");
}
@@ -425,7 +456,7 @@ class admin_plugin_usermanager extends DokuWiki_Admin_Plugin {
ptln(' <form action="'.wl($ID).'" method="post" enctype="multipart/form-data">',$indent);
formSecurityToken();
ptln(' <label>'.$this->lang['import_userlistcsv'].'<input type="file" name="import" /></label>',$indent);
- ptln(' <input type="submit" name="fn[import]" value="'.$this->lang['import'].'" />',$indent);
+ ptln(' <button type="submit" name="fn[import]">'.$this->lang['import'].'</button>',$indent);
ptln(' <input type="hidden" name="do" value="admin" />',$indent);
ptln(' <input type="hidden" name="page" value="usermanager" />',$indent);
@@ -739,6 +770,7 @@ class admin_plugin_usermanager extends DokuWiki_Admin_Plugin {
global $auth;
global $INPUT;
+ $user = array();
$user[0] = ($clean) ? $auth->cleanUser($INPUT->str('userid')) : $INPUT->str('userid');
$user[1] = $INPUT->str('userpass');
$user[2] = $INPUT->str('username');
@@ -765,7 +797,7 @@ class admin_plugin_usermanager extends DokuWiki_Admin_Plugin {
$this->_filter = array();
if ($op == 'new') {
- list($user,$pass,$name,$mail,$grps) = $this->_retrieveUser(false);
+ list($user,/* $pass */,$name,$mail,$grps) = $this->_retrieveUser(false);
if (!empty($user)) $this->_filter['user'] = $user;
if (!empty($name)) $this->_filter['name'] = $name;
@@ -817,6 +849,7 @@ class admin_plugin_usermanager extends DokuWiki_Admin_Plugin {
$disabled = 'disabled="disabled"';
+ $buttons = array();
$buttons['start'] = $buttons['prev'] = ($this->_start == 0) ? $disabled : '';
if ($this->_user_total == -1) {
@@ -826,6 +859,10 @@ class admin_plugin_usermanager extends DokuWiki_Admin_Plugin {
$buttons['last'] = $buttons['next'] = (($this->_start + $this->_pagesize) >= $this->_user_total) ? $disabled : '';
}
+ if ($this->_lastdisabled) {
+ $buttons['last'] = $disabled;
+ }
+
return $buttons;
}
@@ -938,8 +975,8 @@ class admin_plugin_usermanager extends DokuWiki_Admin_Plugin {
* Returns cleaned user data
*
* @param array $candidate raw values of line from input file
- * @param $error
- * @return array|bool cleaned data or false
+ * @param string $error
+ * @return array|false cleaned data or false
*/
protected function _cleanImportUser($candidate, & $error){
global $INPUT;
@@ -952,7 +989,7 @@ class admin_plugin_usermanager extends DokuWiki_Admin_Plugin {
$INPUT->set('usergroups', $candidate[4]);
$cleaned = $this->_retrieveUser();
- list($user,$pass,$name,$mail,$grps) = $cleaned;
+ list($user,/* $pass */,$name,$mail,/* $grps */) = $cleaned;
if (empty($user)) {
$error = $this->lang['import_error_baduserid'];
return false;
@@ -1022,6 +1059,9 @@ class admin_plugin_usermanager extends DokuWiki_Admin_Plugin {
/**
* wrapper for is_uploaded_file to facilitate overriding by test suite
+ *
+ * @param string $file filename
+ * @return bool
*/
protected function _isUploadedFile($file) {
return is_uploaded_file($file);
@@ -1032,6 +1072,9 @@ class admin_plugin_usermanager extends DokuWiki_Admin_Plugin {
*
* @deprecated remove when dokuwiki php requirement increases to 5.3+
* also associated unit test & mock access method
+ *
+ * @param string $csv string to parse
+ * @return array
*/
protected function _getcsv($csv) {
return function_exists('str_getcsv') ? str_getcsv($csv) : $this->str_getcsv($csv);
@@ -1042,6 +1085,9 @@ class admin_plugin_usermanager extends DokuWiki_Admin_Plugin {
* loosely based on www.php.net/str_getcsv#88311
*
* @deprecated remove when dokuwiki php requirement increases to 5.3+
+ *
+ * @param string $str string to parse
+ * @return array
*/
protected function str_getcsv($str) {
$fp = fopen("php://temp/maxmemory:1048576", 'r+'); // 1MiB
diff --git a/lib/plugins/usermanager/images/search.png b/lib/plugins/usermanager/images/search.png
index e9dabc11e..3f2a0b53b 100644
--- a/lib/plugins/usermanager/images/search.png
+++ b/lib/plugins/usermanager/images/search.png
Binary files differ
diff --git a/lib/plugins/usermanager/lang/bg/lang.php b/lib/plugins/usermanager/lang/bg/lang.php
index aadf76512..f98cc8c40 100644
--- a/lib/plugins/usermanager/lang/bg/lang.php
+++ b/lib/plugins/usermanager/lang/bg/lang.php
@@ -28,6 +28,10 @@ $lang['search'] = 'Търсене';
$lang['search_prompt'] = 'Търси';
$lang['clear'] = 'Обновяване на търсенето';
$lang['filter'] = 'Филтър';
+$lang['export_all'] = 'Износ на всички потребители (CSV)';
+$lang['import'] = 'Импорт на нови потребители';
+$lang['line'] = 'Ред №';
+$lang['error'] = 'Съобщение за грешка';
$lang['summary'] = 'Показване на потребители %1$d-%2$d от %3$d намерени. Общо %4$d потребителя.';
$lang['nonefound'] = 'Не са намерени потребители. Общо %d потребителя.';
$lang['delete_ok'] = '%d изтрити потребителя';
@@ -48,3 +52,8 @@ $lang['add_ok'] = 'Добавянето на потребител
$lang['add_fail'] = 'Добавянето на потребителя се провали';
$lang['notify_ok'] = 'Изпратено е осведомителен имейл';
$lang['notify_fail'] = 'Изпращането на осведомителен имейл не е възможно';
+$lang['import_error_badname'] = 'Грешно потребителско име';
+$lang['import_error_badmail'] = 'Грешен имейл адрес';
+$lang['import_error_upload'] = 'Внасянето се провали. CSV файлът не може да бъде качен или е празен.';
+$lang['import_error_readfail'] = 'Внасянето се провали. Каченият файл не може да бъде прочетен.';
+$lang['import_error_create'] = 'Потребителят не може да бъде съдаден';
diff --git a/lib/plugins/usermanager/lang/ca/lang.php b/lib/plugins/usermanager/lang/ca/lang.php
index 6debd73ca..4b07326ab 100644
--- a/lib/plugins/usermanager/lang/ca/lang.php
+++ b/lib/plugins/usermanager/lang/ca/lang.php
@@ -1,7 +1,8 @@
<?php
+
/**
- * Catalan language file
- *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
* @author Carles Bellver <carles.bellver@gmail.com>
* @author carles.bellver@gmail.com
* @author carles.bellver@cent.uji.es
diff --git a/lib/plugins/usermanager/lang/cs/lang.php b/lib/plugins/usermanager/lang/cs/lang.php
index bbb560679..6130fccd8 100644
--- a/lib/plugins/usermanager/lang/cs/lang.php
+++ b/lib/plugins/usermanager/lang/cs/lang.php
@@ -15,6 +15,7 @@
* @author Jakub A. Těšínský (j@kub.cz)
* @author mkucera66@seznam.cz
* @author Zbyněk Křivka <krivka@fit.vutbr.cz>
+ * @author Jaroslav Lichtblau <jlichtblau@seznam.cz>
*/
$lang['menu'] = 'Správa uživatelů';
$lang['noauth'] = '(autentizace uživatelů není k dispozici)';
@@ -55,20 +56,23 @@ $lang['next'] = 'další';
$lang['last'] = 'poslední';
$lang['edit_usermissing'] = 'Vybraný uživatel nebyl nalezen, zadané uživatelského mohlo být smazáno nebo změněno.';
$lang['user_notify'] = 'Upozornit uživatele';
-$lang['note_notify'] = 'Maily s upozorněním se budou posílat pouze, když uživatel dostává nové heslo.';
+$lang['note_notify'] = 'E-maily s upozorněním se budou posílat pouze, když uživatel dostává nové heslo.';
$lang['note_group'] = 'Noví uživatelé budou přidáváni do této výchozí skupiny (%s), pokud pro ně není uvedena žádná skupina.';
$lang['note_pass'] = 'Heslo bude automaticky vygenerováno, pokud je pole ponecháno prázdné a je zapnuto upozornění uživatele.';
$lang['add_ok'] = 'Uživatel úspěšně vytvořen';
$lang['add_fail'] = 'Vytvoření uživatele selhalo';
-$lang['notify_ok'] = 'Odeslán mail s upozorněním';
-$lang['notify_fail'] = 'Mail s upozorněním nebylo možno odeslat';
+$lang['notify_ok'] = 'Odeslán e-mail s upozorněním';
+$lang['notify_fail'] = 'E-mail s upozorněním nebylo možno odeslat';
+$lang['import_userlistcsv'] = 'Seznam uživatelů (CSV):';
+$lang['import_header'] = 'Poslední selhání importu';
$lang['import_success_count'] = 'Import uživatelů: nalezeno %d uživatelů, %d úspěšně importováno.';
$lang['import_failure_count'] = 'Import uživatelů: %d selhalo. Seznam chybných je níže.';
$lang['import_error_fields'] = 'Nedostatek položek, nalezena/y %d, požadovány 4.';
$lang['import_error_baduserid'] = 'Chybí User-id';
$lang['import_error_badname'] = 'Špatné jméno';
-$lang['import_error_badmail'] = 'Špatná emailová adresa';
+$lang['import_error_badmail'] = 'Špatná e-mailová adresa';
$lang['import_error_upload'] = 'Import selhal. CSV soubor nemohl být nahrán nebo je prázdný.';
$lang['import_error_readfail'] = 'Import selhal. Nelze číst nahraný soubor.';
$lang['import_error_create'] = 'Nelze vytvořit uživatele';
-$lang['import_notify_fail'] = 'Importovanému uživateli %s s emailem %s nemohlo být zasláno upozornění.';
+$lang['import_notify_fail'] = 'Importovanému uživateli %s s e-mailem %s nemohlo být zasláno upozornění.';
+$lang['import_downloadfailures'] = 'Stáhnout chyby pro nápravu jako CVS';
diff --git a/lib/plugins/usermanager/lang/da/import.txt b/lib/plugins/usermanager/lang/da/import.txt
new file mode 100644
index 000000000..8ff1946b8
--- /dev/null
+++ b/lib/plugins/usermanager/lang/da/import.txt
@@ -0,0 +1,9 @@
+===== Samling af Brugere Import =====
+
+Kræver en CSV-fil med brugere på mindst fire kolonner.
+Kolonnerne skal indeholde, i denne orden: bruger-id, fulde navn, email-adresse og grupper.
+CSV-felterne skal separeres af kommaer (,) og strengafgrænser med anførelsestegn (%%""%%). Backslash (\) kan benyttes som "escape character".
+For et eksempel på en brugbar fil, kan du prøve "Eksportér Brugere"-funktionen her over.
+Overlappende bruger-id'er bliver ignoreret.
+
+En adgangskode vil blive genereret og sendt til hver succesfuldt importeret bruger. \ No newline at end of file
diff --git a/lib/plugins/usermanager/lang/da/lang.php b/lib/plugins/usermanager/lang/da/lang.php
index 47d7efea2..795024f89 100644
--- a/lib/plugins/usermanager/lang/da/lang.php
+++ b/lib/plugins/usermanager/lang/da/lang.php
@@ -13,6 +13,7 @@
* @author Michael Pedersen subben@gmail.com
* @author Mikael Lyngvig <mikael@lyngvig.org>
* @author soer9648 <soer9648@eucl.dk>
+ * @author Søren Birk <soer9648@eucl.dk>
*/
$lang['menu'] = 'Brugerstyring';
$lang['noauth'] = '(Brugervalidering er ikke tilgængelig)';
@@ -72,3 +73,4 @@ $lang['import_error_upload'] = 'Import Fejlet. CSV-filen kunne ikke uploades e
$lang['import_error_readfail'] = 'Import Fejlet. Ikke muligt at læse uploadede fil.';
$lang['import_error_create'] = 'Ikke muligt at oprette brugeren';
$lang['import_notify_fail'] = 'Notifikationsmeddelelse kunne ikke sendes for importerede bruger %s, med emailen %s.';
+$lang['import_downloadfailures'] = 'Download Fejl som CSV til rettelser';
diff --git a/lib/plugins/usermanager/lang/en/import.txt b/lib/plugins/usermanager/lang/en/import.txt
index 360a0689b..3a1cf999e 100644
--- a/lib/plugins/usermanager/lang/en/import.txt
+++ b/lib/plugins/usermanager/lang/en/import.txt
@@ -2,8 +2,8 @@
Requires a CSV file of users with at least four columns.
The columns must contain, in order: user-id, full name, email address and groups.
-The CSV fields should be separated by commas (,) and strings delimited by quotation marks (%%""%%). Backslash (\) can be used for escaping.
-For an example of a suitable file, try the "Export Users" function above.
+The CSV fields should be separated by commas (,) and strings delimited by quotation marks (%%""%%). Backslash (\) can be used for escaping.
+For an example of a suitable file, try the "Export Users" function above.
Duplicate user-ids will be ignored.
A password will be generated and emailed to each successfully imported user.
diff --git a/lib/plugins/usermanager/lang/es/import.txt b/lib/plugins/usermanager/lang/es/import.txt
new file mode 100644
index 000000000..2482096d5
--- /dev/null
+++ b/lib/plugins/usermanager/lang/es/import.txt
@@ -0,0 +1,9 @@
+===== Importación y carga de usuarios =====
+
+Se requiere un archivo CSV de usuarios con al menos cuatro columnas.
+Las columnas deben contener, en este orden: Identificador de usuario, nombre completo, dirección de correo electrónico y grupos.
+Los campos CSV deben estar separados por comas (,) y las cadenas delimitadas por comillas dobles (%%""%%). Barra inversa (\\) se puede utilizar para escapar caracteres.
+Para un ejemplo de un archivo adecuado, probar la función "Exportar usuarios" de arriba.
+Valores de identificador de usuario duplicados serán ignorados.
+
+Una contraseña será generada y enviada por correo electrónico a cada usuario importado correctamente. \ No newline at end of file
diff --git a/lib/plugins/usermanager/lang/es/lang.php b/lib/plugins/usermanager/lang/es/lang.php
index a557eacdd..284d50f34 100644
--- a/lib/plugins/usermanager/lang/es/lang.php
+++ b/lib/plugins/usermanager/lang/es/lang.php
@@ -27,6 +27,7 @@
* @author Antonio Bueno <atnbueno@gmail.com>
* @author Antonio Castilla <antoniocastilla@trazoide.com>
* @author Jonathan Hernández <me@jhalicea.com>
+ * @author Domingo Redal <docxml@gmail.com>
*/
$lang['menu'] = 'Administración de usuarios';
$lang['noauth'] = '(la autenticación de usuarios no está disponible)';
@@ -75,6 +76,12 @@ $lang['add_fail'] = 'Falló la creación del usuario';
$lang['notify_ok'] = 'Se envió la notificación por correo electrónico';
$lang['notify_fail'] = 'No se pudo enviar la notificación por correo electrónico';
$lang['import_userlistcsv'] = 'Lista de usuarios (CSV): ';
+$lang['import_header'] = 'Importaciones Más Recientes - Fallos';
+$lang['import_success_count'] = 'Importación de usuarios: %d usuarios encontrados, %d importados correctamente.';
+$lang['import_failure_count'] = 'Importación de usuarios: %d fallaron. Los fallos se enumeran a continuación.';
+$lang['import_error_fields'] = 'Campos insuficientes, encontrados %d, se requieren 4.';
+$lang['import_error_baduserid'] = 'Identificador de usuario no encontrado';
+$lang['import_error_badname'] = 'Nombre erróneo';
$lang['import_error_badmail'] = 'Dirección de correo electrónico incorrecta';
$lang['import_error_upload'] = 'Error al importar. El archivo csv no se pudo cargar o está vacío.';
$lang['import_error_readfail'] = 'Error al importar. No se puede leer el archivo subido.';
diff --git a/lib/plugins/usermanager/lang/eu/lang.php b/lib/plugins/usermanager/lang/eu/lang.php
index 5d3a01fc7..1fbe13739 100644
--- a/lib/plugins/usermanager/lang/eu/lang.php
+++ b/lib/plugins/usermanager/lang/eu/lang.php
@@ -1,7 +1,8 @@
<?php
+
/**
- * Basque language file
- *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
* @author Inko Illarramendi <inko.i.a@gmail.com>
* @author Zigor Astarbe <astarbe@gmail.com>
*/
diff --git a/lib/plugins/usermanager/lang/fi/lang.php b/lib/plugins/usermanager/lang/fi/lang.php
index de243133a..dba67fb61 100644
--- a/lib/plugins/usermanager/lang/fi/lang.php
+++ b/lib/plugins/usermanager/lang/fi/lang.php
@@ -7,6 +7,7 @@
* @author Otto Vainio <otto@valjakko.net>
* @author Teemu Mattila <ghcsystems@gmail.com>
* @author Sami Olmari <sami@olmari.fi>
+ * @author Jussi Takala <jussi.takala@live.fi>
*/
$lang['menu'] = 'Käyttäjähallinta';
$lang['noauth'] = '(autentikointi ei ole käytössä)';
@@ -29,6 +30,9 @@ $lang['search'] = 'Hae';
$lang['search_prompt'] = 'Tee haku';
$lang['clear'] = 'Tyhjennä hakusuodatin';
$lang['filter'] = 'Suodatin';
+$lang['import'] = 'Tuo uusia käyttäjiä';
+$lang['line'] = 'Rivi nro.';
+$lang['error'] = 'Vikailmoitus';
$lang['summary'] = 'Näytetään käyttäjät %1$d-%2$d / %3$d löytynyttä. %4$d käyttäjää yhteensä.';
$lang['nonefound'] = 'Ei löytynyt käyttäjiä. %d käyttäjää yhteensä.';
$lang['delete_ok'] = '%d käyttäjää poistettu';
@@ -49,3 +53,9 @@ $lang['add_ok'] = 'Käyttäjä lisätty onnistuneesti';
$lang['add_fail'] = 'Käyttäjän lisäys epäonnistui';
$lang['notify_ok'] = 'Ilmoitus sähköpostilla lähetetty';
$lang['notify_fail'] = 'Ilmoitusta sähköpostilla ei voitu lähettää';
+$lang['import_error_baduserid'] = 'Käyttäjätunnus puuttuu';
+$lang['import_error_badname'] = 'Epäkelpo nimi';
+$lang['import_error_badmail'] = 'Epäkelpo sähköpostiosoite';
+$lang['import_error_upload'] = 'Tuonti epäonnistui. CSV-tiedostoa ei voitu ladata tai se on tyhjä.';
+$lang['import_error_readfail'] = 'Tuonti epäonnistui. Ladattua tiedostoa ei voida lukea.';
+$lang['import_error_create'] = 'Käyttäjää ei voida luoda.';
diff --git a/lib/plugins/usermanager/lang/hr/lang.php b/lib/plugins/usermanager/lang/hr/lang.php
index 80613ed6f..a71afb60a 100644
--- a/lib/plugins/usermanager/lang/hr/lang.php
+++ b/lib/plugins/usermanager/lang/hr/lang.php
@@ -33,7 +33,7 @@ $lang['line'] = 'Linija br.';
$lang['error'] = 'Poruka o grešci';
$lang['summary'] = 'Prikaz korisnika %1$d-%2$d od %3$d nađenih. Ukupno %4$d korisnika.';
$lang['nonefound'] = 'Nema korisnika koji odgovaraju filtru.Ukupno %d korisnika.';
-$lang['delete_ok'] = '%d korisnik obrisano';
+$lang['delete_ok'] = '%d korisnika obrisano';
$lang['delete_fail'] = '%d neuspjelih brisanja.';
$lang['update_ok'] = 'Korisnik uspješno izmijenjen';
$lang['update_fail'] = 'Neuspjela izmjena korisnika';
@@ -49,7 +49,7 @@ $lang['note_group'] = 'Novi korisnik biti će dodijeljen u podrazumij
$lang['note_pass'] = 'Lozinka će biti generirana ako se polje ostavi prazno i obavješćivanje korisnika je omogućeno.';
$lang['add_ok'] = 'Korisnik uspješno dodan';
$lang['add_fail'] = 'Neuspješno dodavanje korisnika';
-$lang['notify_ok'] = 'Obavijest korisniku poslana';
+$lang['notify_ok'] = 'Poslana obavijest korisniku';
$lang['notify_fail'] = 'Obavijest korisniku ne može biti poslana';
$lang['import_userlistcsv'] = 'Datoteka s popisom korisnika (CSV):';
$lang['import_header'] = 'Zadnje greške pri uvozu';
diff --git a/lib/plugins/usermanager/lang/ja/import.txt b/lib/plugins/usermanager/lang/ja/import.txt
index 6af87c263..4987df0e3 100644
--- a/lib/plugins/usermanager/lang/ja/import.txt
+++ b/lib/plugins/usermanager/lang/ja/import.txt
@@ -1,7 +1,7 @@
===== 一括ユーザーインポート =====
少なくとも4列のユーザーCSVファイルが必要です。
-列の順序:ユーザーID、氏名、電子メールアドレス、グループ。
+列の順序: ユーザーID、フルネーム、電子メールアドレス、グループ。
CSVフィールドはカンマ(,)区切り、文字列は引用符(%%""%%)区切りです。
エスケープにバックスラッシュ(\)を使用できます。
適切なファイル例は、上記の"エクスポートユーザー"機能で試して下さい。
diff --git a/lib/plugins/usermanager/lang/ja/lang.php b/lib/plugins/usermanager/lang/ja/lang.php
index 23109f2a2..c7952d8f0 100644
--- a/lib/plugins/usermanager/lang/ja/lang.php
+++ b/lib/plugins/usermanager/lang/ja/lang.php
@@ -19,7 +19,7 @@ $lang['nosupport'] = '(ユーザー管理はサポートされて
$lang['badauth'] = '認証のメカニズムが無効です';
$lang['user_id'] = 'ユーザー';
$lang['user_pass'] = 'パスワード';
-$lang['user_name'] = '氏名';
+$lang['user_name'] = 'フルネーム';
$lang['user_mail'] = 'メールアドレス';
$lang['user_groups'] = 'グループ';
$lang['field'] = '項目';
@@ -65,7 +65,7 @@ $lang['import_success_count'] = 'ユーザーインポート:ユーザーが%
$lang['import_failure_count'] = 'ユーザーインポート:%d件が失敗しました。失敗は次のとおりです。';
$lang['import_error_fields'] = '列の不足(4列必要)が%d件ありました。';
$lang['import_error_baduserid'] = '欠落したユーザーID';
-$lang['import_error_badname'] = '不正な氏名';
+$lang['import_error_badname'] = '不正なフルネーム';
$lang['import_error_badmail'] = '不正な電子メールアドレス';
$lang['import_error_upload'] = 'インポートが失敗しました。CSVファイルをアップロードできなかったか、ファイルが空です。';
$lang['import_error_readfail'] = 'インポートが失敗しました。アップロードされたファイルが読込できません。';
diff --git a/lib/plugins/usermanager/lang/ko/lang.php b/lib/plugins/usermanager/lang/ko/lang.php
index 70e3d94f0..ec55d5586 100644
--- a/lib/plugins/usermanager/lang/ko/lang.php
+++ b/lib/plugins/usermanager/lang/ko/lang.php
@@ -13,7 +13,7 @@
* @author Garam <rowain8@gmail.com>
*/
$lang['menu'] = '사용자 관리자';
-$lang['noauth'] = '(사용자 인증이 불가능합니다)';
+$lang['noauth'] = '(사용자 인증을 사용할 수 없습니다)';
$lang['nosupport'] = '(사용자 관리가 지원되지 않습니다)';
$lang['badauth'] = '인증 메커니즘이 잘못되었습니다';
$lang['user_id'] = '사용자';
@@ -35,15 +35,15 @@ $lang['clear'] = '검색 필터 재설정';
$lang['filter'] = '필터';
$lang['export_all'] = '모든 사용자 목록 내보내기 (CSV)';
$lang['export_filtered'] = '필터된 사용자 목록 내보내기 (CSV)';
-$lang['import'] = '새 사용자 목록 가져오기';
+$lang['import'] = '새 사용자 가져오기';
$lang['line'] = '줄 번호';
$lang['error'] = '오류 메시지';
-$lang['summary'] = '찾은 사용자 %3$d 중 %1$d-%2$d을(를) 봅니다. 전체 사용자는 %4$d명입니다.';
+$lang['summary'] = '찾은 사용자 %3$d명 중 %1$d-%2$d을(를) 봅니다. 전체 사용자는 %4$d명입니다.';
$lang['nonefound'] = '찾은 사용자가 없습니다. 전체 사용자는 %d명입니다.';
$lang['delete_ok'] = '사용자 %d명이 삭제되었습니다';
$lang['delete_fail'] = '사용자 %d명을 삭제하는 데 실패했습니다.';
$lang['update_ok'] = '사용자 정보를 성공적으로 바꾸었습니다';
-$lang['update_fail'] = '사용자 정보를 바꾸는 데 실패했습니다';
+$lang['update_fail'] = '사용자 정보를 업데이트하는 데 실패했습니다';
$lang['update_exists'] = '사용자 이름을 바꾸는 데 실패했습니다. 사용자 이름(%s)이 이미 존재합니다. (다른 항목의 바뀜은 적용됩니다)';
$lang['start'] = '시작';
$lang['prev'] = '이전';
@@ -53,7 +53,7 @@ $lang['edit_usermissing'] = '선택된 사용자를 찾을 수 없습니다
$lang['user_notify'] = '사용자에게 알림';
$lang['note_notify'] = '사용자에게 새로운 비밀번호를 준 경우에만 알림 이메일이 보내집니다.';
$lang['note_group'] = '새로운 사용자는 어떤 그룹도 설정하지 않은 경우에 기본 그룹(%s)에 추가됩니다.';
-$lang['note_pass'] = '사용자 알림이 지정되어 있을 때 필드에 아무 값도 입력하지 않으면 비밀번호가 자동으로 만들어집니다.';
+$lang['note_pass'] = '사용자 알림이 지정되어 있을 때 필드에 아무 값도 입력하지 않으면 비밀번호가 자동으로 생성됩니다.';
$lang['add_ok'] = '사용자를 성공적으로 추가했습니다';
$lang['add_fail'] = '사용자 추가를 실패했습니다';
$lang['notify_ok'] = '알림 이메일을 성공적으로 보냈습니다';
@@ -68,6 +68,6 @@ $lang['import_error_badname'] = '잘못된 이름';
$lang['import_error_badmail'] = '잘못된 이메일 주소';
$lang['import_error_upload'] = '가져오기를 실패했습니다. csv 파일을 올릴 수 없거나 비어 있습니다.';
$lang['import_error_readfail'] = '가져오기를 실패했습니다. 올린 파일을 읽을 수 없습니다.';
-$lang['import_error_create'] = '사용자를 만들 수 없습니다.';
+$lang['import_error_create'] = '사용자를 만들 수 없습니다';
$lang['import_notify_fail'] = '알림 메시지를 가져온 %s (이메일: %s) 사용자에게 보낼 수 없습니다.';
$lang['import_downloadfailures'] = '교정을 위한 CSV로 다운로드 실패';
diff --git a/lib/plugins/usermanager/lang/lt/lang.php b/lib/plugins/usermanager/lang/lt/lang.php
index db3cf2d32..3c0029303 100644
--- a/lib/plugins/usermanager/lang/lt/lang.php
+++ b/lib/plugins/usermanager/lang/lt/lang.php
@@ -1,7 +1,8 @@
<?php
+
/**
- * Lithuanian language file
- *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
* @author grawity <grawity@gmail.com>
* @author audrius.klevas@gmail.com
* @author Arunas Vaitekunas <aras@fan.lt>
diff --git a/lib/plugins/usermanager/lang/pt-br/import.txt b/lib/plugins/usermanager/lang/pt-br/import.txt
new file mode 100644
index 000000000..d692bb364
--- /dev/null
+++ b/lib/plugins/usermanager/lang/pt-br/import.txt
@@ -0,0 +1,9 @@
+===== Importação de Usuários em Massa =====
+
+Requer um arquivo CSV de usuários com pelo menos quatro colunas.
+As colunas devem conter, nesta ordem: id-usuário, nome completo, endereço de e-mail e grupos.
+Os campos CSV devem ser separados por vírgulas ( , ) e nomes delimitados por aspas (). Barra invertida (\ ) pode ser usado para escapar nomes.
+Para um exemplo de um arquivo adequado , tente a função Exportar usuários acima.
+Usuário ids duplicados serão ignorados.
+
+A senha será gerada e enviada para cada usuário importado com sucesso. \ No newline at end of file
diff --git a/lib/plugins/usermanager/lang/pt/lang.php b/lib/plugins/usermanager/lang/pt/lang.php
index b59649aa1..a0b70d2d9 100644
--- a/lib/plugins/usermanager/lang/pt/lang.php
+++ b/lib/plugins/usermanager/lang/pt/lang.php
@@ -8,6 +8,9 @@
* @author Fil <fil@meteopt.com>
* @author André Neves <drakferion@gmail.com>
* @author José Campos zecarlosdecampos@gmail.com
+ * @author Guido Salatino <guidorafael23@gmail.com>
+ * @author Romulo Pereira <romuloccomp@gmail.com>
+ * @author Paulo Carmino <contato@paulocarmino.com>
*/
$lang['menu'] = 'Gestor de Perfis';
$lang['noauth'] = '(autenticação indisponível)';
@@ -33,6 +36,8 @@ $lang['filter'] = 'Filtro';
$lang['export_all'] = 'Exportar Todos os Utilizadores (CSV)';
$lang['export_filtered'] = 'Exportar a lista de utilizadores filtrada (CSV)';
$lang['import'] = 'Importar Novos Utilizadores';
+$lang['line'] = 'Linha nº
+';
$lang['error'] = 'Mensagem de erro';
$lang['summary'] = 'Apresentar utilizadores %1$d-%2$d de %3$d encontrados. %4$d inscritos.';
$lang['nonefound'] = 'Nenhum utilizador encontrado. %d inscritos.';
@@ -54,11 +59,17 @@ $lang['add_ok'] = 'Utilizador adicionado.';
$lang['add_fail'] = 'Utilizador não adicionado.';
$lang['notify_ok'] = 'Mensagem de notificação enviada.';
$lang['notify_fail'] = 'Não foi possível enviar mensagem de notificação';
+$lang['import_userlistcsv'] = 'Arquivo de lista do usuário (CSV):
+';
+$lang['import_header'] = 'Mais Recentes Importações - Falhas';
$lang['import_success_count'] = 'Importar Utilizadores: %d utiliyadores encontrados, %d importados com sucesso.';
$lang['import_failure_count'] = 'Importar Utilizadores: %d falharam. As falhas estão listadas abaixo.';
$lang['import_error_fields'] = 'Campos insuficientes, encontrados %d mas requeridos 4.';
$lang['import_error_baduserid'] = 'Falta id de utilizador';
+$lang['import_error_badname'] = 'Nome inválido';
+$lang['import_error_badmail'] = 'E-Mail inválido';
$lang['import_error_upload'] = 'Falhou a importação. O ficheiro csv não pôde ser importado ou está vazio.';
$lang['import_error_readfail'] = 'Falhou a importação. Não foi possível ler o ficheiro submetido.';
$lang['import_error_create'] = 'Não foi possível criar o utilizador.';
$lang['import_notify_fail'] = 'A mensagem de notificação não pôde ser enviada para o utilizador importado, %s com email %s.';
+$lang['import_downloadfailures'] = 'Baixe Falhas como CSV para a correção';
diff --git a/lib/plugins/usermanager/lang/ro/lang.php b/lib/plugins/usermanager/lang/ro/lang.php
index 1b33cc4f8..55cbbed04 100644
--- a/lib/plugins/usermanager/lang/ro/lang.php
+++ b/lib/plugins/usermanager/lang/ro/lang.php
@@ -1,7 +1,8 @@
<?php
+
/**
- * Romanian language file
- *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
* @author Sergiu Baltariu <s_baltariu@yahoo.com>
* @author s_baltariu@yahoo.com
* @author Emanuel-Emeric Andrasi <n30@mandrivausers.ro>
diff --git a/lib/plugins/usermanager/lang/ru/import.txt b/lib/plugins/usermanager/lang/ru/import.txt
index f2049dd0c..22372c254 100644
--- a/lib/plugins/usermanager/lang/ru/import.txt
+++ b/lib/plugins/usermanager/lang/ru/import.txt
@@ -2,8 +2,8 @@
Потребуется список пользователей в файле формата CSV, состоящий из 4 столбцов.
Столбцы должны быть заполнены следующим образом: user-id, полное имя, эл. почта, группы.
-Поля CSV должны быть отделены запятой (,), а строки должны быть заключены в кавычки (%%""%%). Обратный слэш используется как прерывание.
-В качестве примера можете взять список пользователей, экспортированный через «Экспорт пользователей».
+Поля CSV должны быть отделены запятой (,), а строки должны быть заключены в кавычки (%%""%%). Обратный слэш (\) используется как прерывание.
+В качестве примера можете взять список пользователей, экспортированный через «Экспорт пользователей».
Повторяющиеся идентификаторы user-id будут игнорироваться.
Пароль доступа будет сгенерирован и отправлен по почте удачно импортированному пользователю. \ No newline at end of file
diff --git a/lib/plugins/usermanager/lang/ru/lang.php b/lib/plugins/usermanager/lang/ru/lang.php
index 8bbfa639c..de650d681 100644
--- a/lib/plugins/usermanager/lang/ru/lang.php
+++ b/lib/plugins/usermanager/lang/ru/lang.php
@@ -21,6 +21,7 @@
* @author Pavel <ivanovtsk@mail.ru>
* @author Aleksandr Selivanov <alexgearbox@yandex.ru>
* @author Igor Degraf <igordegraf@gmail.com>
+ * @author Vitaly Filatenko <kot@hacktest.net>
*/
$lang['menu'] = 'Управление пользователями';
$lang['noauth'] = '(авторизация пользователей недоступна)';
@@ -68,9 +69,11 @@ $lang['add_ok'] = 'Пользователь успешно доб
$lang['add_fail'] = 'Не удалось добавить пользователя';
$lang['notify_ok'] = 'Письмо с уведомлением отправлено';
$lang['notify_fail'] = 'Не удалось отправить письмо с уведомлением';
+$lang['import_userlistcsv'] = 'Файл со списком пользователей (CSV):';
+$lang['import_header'] = 'Последний импорт — список ошибок';
$lang['import_success_count'] = 'Импорт пользователей: %d пользователей найдено, %d импортировано успешно.';
$lang['import_failure_count'] = 'Импорт пользователей: %d не удалось. Список ошибок прочтите ниже.';
-$lang['import_error_fields'] = 'Не все поля заполнены. Найдено %d, а нужно 4.';
+$lang['import_error_fields'] = 'Не все поля заполнены. Найдено %d, а нужно: 4.';
$lang['import_error_baduserid'] = 'Отсутствует идентификатор пользователя';
$lang['import_error_badname'] = 'Имя не годится';
$lang['import_error_badmail'] = 'Адрес электронной почты не годится';
@@ -78,4 +81,4 @@ $lang['import_error_upload'] = 'Импорт не удался. CSV-файл
$lang['import_error_readfail'] = 'Импорт не удался. Невозможно прочесть загруженный файл.';
$lang['import_error_create'] = 'Невозможно создать пользователя';
$lang['import_notify_fail'] = 'Оповещение не может быть отправлено импортированному пользователю %s по электронной почте %s.';
-$lang['import_downloadfailures'] = 'Скачать Ошибки в формате CSV для исправления';
+$lang['import_downloadfailures'] = 'Скачать ошибки в формате CSV для исправления';
diff --git a/lib/plugins/usermanager/plugin.info.txt b/lib/plugins/usermanager/plugin.info.txt
index ae4f9b9cc..607eca75f 100644
--- a/lib/plugins/usermanager/plugin.info.txt
+++ b/lib/plugins/usermanager/plugin.info.txt
@@ -1,7 +1,7 @@
base usermanager
author Chris Smith
email chris@jalakai.co.uk
-date 2014-03-05
+date 2015-07-15
name User Manager
desc Manage DokuWiki user accounts
url http://dokuwiki.org/plugin:usermanager
diff --git a/lib/plugins/usermanager/style.css b/lib/plugins/usermanager/style.css
index d119b195a..9028fed5e 100644
--- a/lib/plugins/usermanager/style.css
+++ b/lib/plugins/usermanager/style.css
@@ -17,7 +17,7 @@
padding-left: 0;
padding-right: 1.4em;
}
-#user__manager input.button[disabled] {
+#user__manager button[disabled] {
color: #ccc!important;
border-color: #ccc!important;
}