From f62ea8a1d1cf10eddeae777b11420624e111b7ea Mon Sep 17 00:00:00 2001 From: andi Date: Sun, 5 Jun 2005 12:38:42 +0200 Subject: directory layout cleanup !IMPORTANT This patch changes the directory structure of dokuwiki as suggested in http://www.freelists.org/archives/dokuwiki/06-2005/msg00045.html As the changes.log is not managed through darcs you need to move it your self to the new location in data/changes.log I think I modified the code at all nessessary places, but I may have forgotten a few things. darcs-hash:20050605103842-9977f-af20f63c1d604888375d175d89ac6bd71566d47d.gz --- ajax.js | 51 --- ajax.php | 53 --- conf/dokuwiki.php | 10 +- conf/interwiki.conf | 1 + conf/wordblock.conf | 126 +++++- data/.htaccess | 2 - data/media/.htaccess | 2 + data/media/wiki/dokuwiki-128.png | Bin 0 -> 33615 bytes data/pages/.htaccess | 2 + data/pages/wiki/dokuwiki.txt | 44 +++ data/pages/wiki/syntax.txt | 362 +++++++++++++++++ data/wiki/dokuwiki.txt | 44 --- data/wiki/syntax.txt | 362 ----------------- feed.css | 65 ---- feed.php | 18 +- fetch.php | 230 ----------- images/arrow_down.png | Bin 462 -> 0 bytes images/arrow_up.png | Bin 431 -> 0 bytes images/blank.gif | Bin 42 -> 0 bytes images/bold.png | Bin 738 -> 0 bytes images/code.png | Bin 573 -> 0 bytes images/del.png | Bin 433 -> 0 bytes images/diff.png | Bin 219 -> 0 bytes images/empty.png | Bin 516 -> 0 bytes images/error.png | Bin 655 -> 0 bytes images/extlink.png | Bin 849 -> 0 bytes images/favicon.ico | Bin 7406 -> 0 bytes images/fonth1.png | Bin 594 -> 0 bytes images/fonth2.png | Bin 712 -> 0 bytes images/fonth3.png | Bin 681 -> 0 bytes images/fonth4.png | Bin 688 -> 0 bytes images/fonth5.png | Bin 672 -> 0 bytes images/history.png | Bin 202 -> 0 bytes images/image.png | Bin 996 -> 0 bytes images/info.png | Bin 718 -> 0 bytes images/italic.png | Bin 676 -> 0 bytes images/larger.gif | Bin 87 -> 0 bytes images/link.png | Bin 798 -> 0 bytes images/list.png | Bin 582 -> 0 bytes images/list_ul.png | Bin 560 -> 0 bytes images/loading.gif | Bin 1876 -> 0 bytes images/rule.png | Bin 574 -> 0 bytes images/sig.png | Bin 679 -> 0 bytes images/smaller.gif | Bin 86 -> 0 bytes images/thumbup.gif | Bin 167 -> 0 bytes images/underline.png | Bin 743 -> 0 bytes inc/actions.php | 2 +- inc/admin_acl.php | 10 +- inc/auth.php | 4 +- inc/auth/ldap.php | 281 ++++++++++++++ inc/auth/mysql.php | 182 +++++++++ inc/auth/pgsql.php | 135 +++++++ inc/auth/plain.php | 113 ++++++ inc/auth_ldap.php | 281 -------------- inc/auth_mysql.php | 182 --------- inc/auth_pgsql.php | 135 ------- inc/auth_plain.php | 113 ------ inc/common.php | 10 +- inc/html.php | 40 +- inc/init.php | 30 +- inc/io.php | 49 --- inc/parser/xhtml.php | 26 +- inc/plugins/info/syntax.php | 110 ------ inc/plugins/syntax.php | 66 ---- inc/template.php | 19 +- interwiki/amazon.de.gif | Bin 882 -> 0 bytes interwiki/amazon.gif | Bin 882 -> 0 bytes interwiki/amazon.uk.gif | Bin 882 -> 0 bytes interwiki/bug.gif | Bin 166 -> 0 bytes interwiki/coral.gif | Bin 85 -> 0 bytes interwiki/doku.gif | Bin 257 -> 0 bytes interwiki/google.gif | Bin 980 -> 0 bytes interwiki/meatball.gif | Bin 1100 -> 0 bytes interwiki/phpfn.gif | Bin 330 -> 0 bytes interwiki/sb.gif | Bin 886 -> 0 bytes interwiki/wiki.gif | Bin 909 -> 0 bytes interwiki/wp.gif | Bin 680 -> 0 bytes interwiki/wpde.gif | Bin 680 -> 0 bytes interwiki/wpmeta.gif | Bin 680 -> 0 bytes lib/exe/ajax.php | 53 +++ lib/exe/fetch.php | 230 +++++++++++ lib/exe/media.php | 133 +++++++ lib/images/arrow_down.png | Bin 0 -> 462 bytes lib/images/arrow_up.png | Bin 0 -> 431 bytes lib/images/blank.gif | Bin 0 -> 42 bytes lib/images/del.png | Bin 0 -> 433 bytes lib/images/diff.png | Bin 0 -> 219 bytes lib/images/error.png | Bin 0 -> 655 bytes lib/images/favicon.ico | Bin 0 -> 7406 bytes lib/images/history.png | Bin 0 -> 202 bytes lib/images/info.png | Bin 0 -> 718 bytes lib/images/interwiki/amazon.de.gif | Bin 0 -> 882 bytes lib/images/interwiki/amazon.gif | Bin 0 -> 882 bytes lib/images/interwiki/amazon.uk.gif | Bin 0 -> 882 bytes lib/images/interwiki/bug.gif | Bin 0 -> 166 bytes lib/images/interwiki/coral.gif | Bin 0 -> 85 bytes lib/images/interwiki/doku.gif | Bin 0 -> 257 bytes lib/images/interwiki/google.gif | Bin 0 -> 980 bytes lib/images/interwiki/meatball.gif | Bin 0 -> 1100 bytes lib/images/interwiki/phpfn.gif | Bin 0 -> 330 bytes lib/images/interwiki/sb.gif | Bin 0 -> 886 bytes lib/images/interwiki/wiki.gif | Bin 0 -> 909 bytes lib/images/interwiki/wp.gif | Bin 0 -> 680 bytes lib/images/interwiki/wpde.gif | Bin 0 -> 680 bytes lib/images/interwiki/wpmeta.gif | Bin 0 -> 680 bytes lib/images/larger.gif | Bin 0 -> 87 bytes lib/images/loading.gif | Bin 0 -> 1876 bytes lib/images/smaller.gif | Bin 0 -> 86 bytes lib/images/smileys/delete.gif | Bin 0 -> 1421 bytes lib/images/smileys/fixme.gif | Bin 0 -> 1435 bytes lib/images/smileys/icon_arrow.gif | Bin 0 -> 170 bytes lib/images/smileys/icon_biggrin.gif | Bin 0 -> 172 bytes lib/images/smileys/icon_confused.gif | Bin 0 -> 171 bytes lib/images/smileys/icon_cool.gif | Bin 0 -> 172 bytes lib/images/smileys/icon_cry.gif | Bin 0 -> 498 bytes lib/images/smileys/icon_doubt.gif | Bin 0 -> 990 bytes lib/images/smileys/icon_doubt2.gif | Bin 0 -> 992 bytes lib/images/smileys/icon_eek.gif | Bin 0 -> 170 bytes lib/images/smileys/icon_evil.gif | Bin 0 -> 236 bytes lib/images/smileys/icon_exclaim.gif | Bin 0 -> 236 bytes lib/images/smileys/icon_frown.gif | Bin 0 -> 171 bytes lib/images/smileys/icon_fun.gif | Bin 0 -> 590 bytes lib/images/smileys/icon_idea.gif | Bin 0 -> 176 bytes lib/images/smileys/icon_kaddi.gif | Bin 0 -> 991 bytes lib/images/smileys/icon_lol.gif | Bin 0 -> 336 bytes lib/images/smileys/icon_mrgreen.gif | Bin 0 -> 349 bytes lib/images/smileys/icon_neutral.gif | Bin 0 -> 171 bytes lib/images/smileys/icon_question.gif | Bin 0 -> 248 bytes lib/images/smileys/icon_razz.gif | Bin 0 -> 176 bytes lib/images/smileys/icon_redface.gif | Bin 0 -> 650 bytes lib/images/smileys/icon_rolleyes.gif | Bin 0 -> 485 bytes lib/images/smileys/icon_sad.gif | Bin 0 -> 171 bytes lib/images/smileys/icon_silenced.gif | Bin 0 -> 231 bytes lib/images/smileys/icon_smile.gif | Bin 0 -> 174 bytes lib/images/smileys/icon_smile2.gif | Bin 0 -> 174 bytes lib/images/smileys/icon_surprised.gif | Bin 0 -> 174 bytes lib/images/smileys/icon_twisted.gif | Bin 0 -> 238 bytes lib/images/smileys/icon_wink.gif | Bin 0 -> 170 bytes lib/images/thumbup.gif | Bin 0 -> 167 bytes lib/images/toolbar/bold.png | Bin 0 -> 738 bytes lib/images/toolbar/code.png | Bin 0 -> 573 bytes lib/images/toolbar/empty.png | Bin 0 -> 516 bytes lib/images/toolbar/extlink.png | Bin 0 -> 849 bytes lib/images/toolbar/fonth1.png | Bin 0 -> 594 bytes lib/images/toolbar/fonth2.png | Bin 0 -> 712 bytes lib/images/toolbar/fonth3.png | Bin 0 -> 681 bytes lib/images/toolbar/fonth4.png | Bin 0 -> 688 bytes lib/images/toolbar/fonth5.png | Bin 0 -> 672 bytes lib/images/toolbar/image.png | Bin 0 -> 996 bytes lib/images/toolbar/italic.png | Bin 0 -> 676 bytes lib/images/toolbar/link.png | Bin 0 -> 798 bytes lib/images/toolbar/list.png | Bin 0 -> 582 bytes lib/images/toolbar/list_ul.png | Bin 0 -> 560 bytes lib/images/toolbar/rule.png | Bin 0 -> 574 bytes lib/images/toolbar/sig.png | Bin 0 -> 679 bytes lib/images/toolbar/underline.png | Bin 0 -> 743 bytes lib/plugins/info/syntax.php | 110 ++++++ lib/plugins/syntax.php | 66 ++++ lib/scripts/ajax.js | 51 +++ lib/scripts/pngbehavior.htc | 53 +++ lib/scripts/script.js | 456 ++++++++++++++++++++++ lib/scripts/tw-sack.js | 95 +++++ lib/styles/feed.css | 63 +++ lib/styles/style.css | 44 +++ lib/tpl/default/design.css | 642 +++++++++++++++++++++++++++++++ lib/tpl/default/footer.html | 56 +++ lib/tpl/default/images/bullet.gif | Bin 0 -> 50 bytes lib/tpl/default/images/button-cc.gif | Bin 0 -> 1231 bytes lib/tpl/default/images/button-css.png | Bin 0 -> 299 bytes lib/tpl/default/images/button-donate.gif | Bin 0 -> 200 bytes lib/tpl/default/images/button-dw.png | Bin 0 -> 427 bytes lib/tpl/default/images/button-php.gif | Bin 0 -> 269 bytes lib/tpl/default/images/button-rss.png | Bin 0 -> 280 bytes lib/tpl/default/images/button-xhtml.png | Bin 0 -> 321 bytes lib/tpl/default/images/closed.gif | Bin 0 -> 54 bytes lib/tpl/default/images/interwiki.png | Bin 0 -> 1089 bytes lib/tpl/default/images/link_icon.gif | Bin 0 -> 942 bytes lib/tpl/default/images/mail_icon.gif | Bin 0 -> 918 bytes lib/tpl/default/images/open.gif | Bin 0 -> 54 bytes lib/tpl/default/images/tocdot2.gif | Bin 0 -> 810 bytes lib/tpl/default/images/windows.gif | Bin 0 -> 223 bytes lib/tpl/default/layout.css | 109 ++++++ lib/tpl/default/main.php | 129 +++++++ lib/tpl/default/media.php | 61 +++ lib/tpl/default/print.css | 223 +++++++++++ lib/tpl/default/rtl.css | 111 ++++++ media.php | 133 ------- media/.htaccess | 2 - media/wiki/dokuwiki-128.png | Bin 33615 -> 0 bytes pngbehavior.htc | 53 --- script.js | 456 ---------------------- smileys/delete.gif | Bin 1421 -> 0 bytes smileys/fixme.gif | Bin 1435 -> 0 bytes smileys/icon_arrow.gif | Bin 170 -> 0 bytes smileys/icon_biggrin.gif | Bin 172 -> 0 bytes smileys/icon_confused.gif | Bin 171 -> 0 bytes smileys/icon_cool.gif | Bin 172 -> 0 bytes smileys/icon_cry.gif | Bin 498 -> 0 bytes smileys/icon_doubt.gif | Bin 990 -> 0 bytes smileys/icon_doubt2.gif | Bin 992 -> 0 bytes smileys/icon_eek.gif | Bin 170 -> 0 bytes smileys/icon_evil.gif | Bin 236 -> 0 bytes smileys/icon_exclaim.gif | Bin 236 -> 0 bytes smileys/icon_frown.gif | Bin 171 -> 0 bytes smileys/icon_fun.gif | Bin 590 -> 0 bytes smileys/icon_idea.gif | Bin 176 -> 0 bytes smileys/icon_kaddi.gif | Bin 991 -> 0 bytes smileys/icon_lol.gif | Bin 336 -> 0 bytes smileys/icon_mrgreen.gif | Bin 349 -> 0 bytes smileys/icon_neutral.gif | Bin 171 -> 0 bytes smileys/icon_question.gif | Bin 248 -> 0 bytes smileys/icon_razz.gif | Bin 176 -> 0 bytes smileys/icon_redface.gif | Bin 650 -> 0 bytes smileys/icon_rolleyes.gif | Bin 485 -> 0 bytes smileys/icon_sad.gif | Bin 171 -> 0 bytes smileys/icon_silenced.gif | Bin 231 -> 0 bytes smileys/icon_smile.gif | Bin 174 -> 0 bytes smileys/icon_smile2.gif | Bin 174 -> 0 bytes smileys/icon_surprised.gif | Bin 174 -> 0 bytes smileys/icon_twisted.gif | Bin 238 -> 0 bytes smileys/icon_wink.gif | Bin 170 -> 0 bytes style.css | 44 --- tpl/default/design.css | 642 ------------------------------- tpl/default/footer.html | 56 --- tpl/default/images/bullet.gif | Bin 50 -> 0 bytes tpl/default/images/button-cc.gif | Bin 1231 -> 0 bytes tpl/default/images/button-css.png | Bin 299 -> 0 bytes tpl/default/images/button-donate.gif | Bin 200 -> 0 bytes tpl/default/images/button-dw.png | Bin 427 -> 0 bytes tpl/default/images/button-php.gif | Bin 269 -> 0 bytes tpl/default/images/button-rss.png | Bin 280 -> 0 bytes tpl/default/images/button-xhtml.png | Bin 321 -> 0 bytes tpl/default/images/closed.gif | Bin 54 -> 0 bytes tpl/default/images/interwiki.png | Bin 1089 -> 0 bytes tpl/default/images/link_icon.gif | Bin 942 -> 0 bytes tpl/default/images/mail_icon.gif | Bin 918 -> 0 bytes tpl/default/images/open.gif | Bin 54 -> 0 bytes tpl/default/images/tocdot2.gif | Bin 810 -> 0 bytes tpl/default/images/windows.gif | Bin 223 -> 0 bytes tpl/default/layout.css | 109 ------ tpl/default/main.php | 129 ------- tpl/default/media.php | 61 --- tpl/default/print.css | 223 ----------- tpl/default/rtl.css | 111 ------ tw-sack.js | 95 ----- 245 files changed, 4029 insertions(+), 3930 deletions(-) delete mode 100644 ajax.js delete mode 100644 ajax.php delete mode 100644 data/.htaccess create mode 100644 data/media/.htaccess create mode 100644 data/media/wiki/dokuwiki-128.png create mode 100644 data/pages/.htaccess create mode 100644 data/pages/wiki/dokuwiki.txt create mode 100644 data/pages/wiki/syntax.txt delete mode 100644 data/wiki/dokuwiki.txt delete mode 100644 data/wiki/syntax.txt delete mode 100644 feed.css delete mode 100644 fetch.php delete mode 100644 images/arrow_down.png delete mode 100644 images/arrow_up.png delete mode 100644 images/blank.gif delete mode 100644 images/bold.png delete mode 100644 images/code.png delete mode 100644 images/del.png delete mode 100644 images/diff.png delete mode 100644 images/empty.png delete mode 100644 images/error.png delete mode 100644 images/extlink.png delete mode 100644 images/favicon.ico delete mode 100644 images/fonth1.png delete mode 100644 images/fonth2.png delete mode 100644 images/fonth3.png delete mode 100644 images/fonth4.png delete mode 100644 images/fonth5.png delete mode 100644 images/history.png delete mode 100644 images/image.png delete mode 100644 images/info.png delete mode 100644 images/italic.png delete mode 100644 images/larger.gif delete mode 100644 images/link.png delete mode 100644 images/list.png delete mode 100644 images/list_ul.png delete mode 100644 images/loading.gif delete mode 100644 images/rule.png delete mode 100644 images/sig.png delete mode 100644 images/smaller.gif delete mode 100644 images/thumbup.gif delete mode 100644 images/underline.png create mode 100644 inc/auth/ldap.php create mode 100644 inc/auth/mysql.php create mode 100644 inc/auth/pgsql.php create mode 100644 inc/auth/plain.php delete mode 100644 inc/auth_ldap.php delete mode 100644 inc/auth_mysql.php delete mode 100644 inc/auth_pgsql.php delete mode 100644 inc/auth_plain.php delete mode 100644 inc/plugins/info/syntax.php delete mode 100644 inc/plugins/syntax.php delete mode 100644 interwiki/amazon.de.gif delete mode 100644 interwiki/amazon.gif delete mode 100644 interwiki/amazon.uk.gif delete mode 100644 interwiki/bug.gif delete mode 100644 interwiki/coral.gif delete mode 100644 interwiki/doku.gif delete mode 100644 interwiki/google.gif delete mode 100644 interwiki/meatball.gif delete mode 100644 interwiki/phpfn.gif delete mode 100644 interwiki/sb.gif delete mode 100644 interwiki/wiki.gif delete mode 100644 interwiki/wp.gif delete mode 100644 interwiki/wpde.gif delete mode 100644 interwiki/wpmeta.gif create mode 100644 lib/exe/ajax.php create mode 100644 lib/exe/fetch.php create mode 100644 lib/exe/media.php create mode 100644 lib/images/arrow_down.png create mode 100644 lib/images/arrow_up.png create mode 100644 lib/images/blank.gif create mode 100644 lib/images/del.png create mode 100644 lib/images/diff.png create mode 100644 lib/images/error.png create mode 100644 lib/images/favicon.ico create mode 100644 lib/images/history.png create mode 100644 lib/images/info.png create mode 100644 lib/images/interwiki/amazon.de.gif create mode 100644 lib/images/interwiki/amazon.gif create mode 100644 lib/images/interwiki/amazon.uk.gif create mode 100644 lib/images/interwiki/bug.gif create mode 100644 lib/images/interwiki/coral.gif create mode 100644 lib/images/interwiki/doku.gif create mode 100644 lib/images/interwiki/google.gif create mode 100644 lib/images/interwiki/meatball.gif create mode 100644 lib/images/interwiki/phpfn.gif create mode 100644 lib/images/interwiki/sb.gif create mode 100644 lib/images/interwiki/wiki.gif create mode 100644 lib/images/interwiki/wp.gif create mode 100644 lib/images/interwiki/wpde.gif create mode 100644 lib/images/interwiki/wpmeta.gif create mode 100644 lib/images/larger.gif create mode 100644 lib/images/loading.gif create mode 100644 lib/images/smaller.gif create mode 100644 lib/images/smileys/delete.gif create mode 100644 lib/images/smileys/fixme.gif create mode 100644 lib/images/smileys/icon_arrow.gif create mode 100644 lib/images/smileys/icon_biggrin.gif create mode 100644 lib/images/smileys/icon_confused.gif create mode 100644 lib/images/smileys/icon_cool.gif create mode 100644 lib/images/smileys/icon_cry.gif create mode 100644 lib/images/smileys/icon_doubt.gif create mode 100644 lib/images/smileys/icon_doubt2.gif create mode 100644 lib/images/smileys/icon_eek.gif create mode 100644 lib/images/smileys/icon_evil.gif create mode 100644 lib/images/smileys/icon_exclaim.gif create mode 100644 lib/images/smileys/icon_frown.gif create mode 100644 lib/images/smileys/icon_fun.gif create mode 100644 lib/images/smileys/icon_idea.gif create mode 100644 lib/images/smileys/icon_kaddi.gif create mode 100644 lib/images/smileys/icon_lol.gif create mode 100644 lib/images/smileys/icon_mrgreen.gif create mode 100644 lib/images/smileys/icon_neutral.gif create mode 100644 lib/images/smileys/icon_question.gif create mode 100644 lib/images/smileys/icon_razz.gif create mode 100644 lib/images/smileys/icon_redface.gif create mode 100644 lib/images/smileys/icon_rolleyes.gif create mode 100644 lib/images/smileys/icon_sad.gif create mode 100644 lib/images/smileys/icon_silenced.gif create mode 100644 lib/images/smileys/icon_smile.gif create mode 100644 lib/images/smileys/icon_smile2.gif create mode 100644 lib/images/smileys/icon_surprised.gif create mode 100644 lib/images/smileys/icon_twisted.gif create mode 100644 lib/images/smileys/icon_wink.gif create mode 100644 lib/images/thumbup.gif create mode 100644 lib/images/toolbar/bold.png create mode 100644 lib/images/toolbar/code.png create mode 100644 lib/images/toolbar/empty.png create mode 100644 lib/images/toolbar/extlink.png create mode 100644 lib/images/toolbar/fonth1.png create mode 100644 lib/images/toolbar/fonth2.png create mode 100644 lib/images/toolbar/fonth3.png create mode 100644 lib/images/toolbar/fonth4.png create mode 100644 lib/images/toolbar/fonth5.png create mode 100644 lib/images/toolbar/image.png create mode 100644 lib/images/toolbar/italic.png create mode 100644 lib/images/toolbar/link.png create mode 100644 lib/images/toolbar/list.png create mode 100644 lib/images/toolbar/list_ul.png create mode 100644 lib/images/toolbar/rule.png create mode 100644 lib/images/toolbar/sig.png create mode 100644 lib/images/toolbar/underline.png create mode 100644 lib/plugins/info/syntax.php create mode 100644 lib/plugins/syntax.php create mode 100644 lib/scripts/ajax.js create mode 100644 lib/scripts/pngbehavior.htc create mode 100644 lib/scripts/script.js create mode 100644 lib/scripts/tw-sack.js create mode 100644 lib/styles/feed.css create mode 100644 lib/styles/style.css create mode 100644 lib/tpl/default/design.css create mode 100644 lib/tpl/default/footer.html create mode 100644 lib/tpl/default/images/bullet.gif create mode 100644 lib/tpl/default/images/button-cc.gif create mode 100644 lib/tpl/default/images/button-css.png create mode 100644 lib/tpl/default/images/button-donate.gif create mode 100644 lib/tpl/default/images/button-dw.png create mode 100644 lib/tpl/default/images/button-php.gif create mode 100644 lib/tpl/default/images/button-rss.png create mode 100644 lib/tpl/default/images/button-xhtml.png create mode 100644 lib/tpl/default/images/closed.gif create mode 100644 lib/tpl/default/images/interwiki.png create mode 100644 lib/tpl/default/images/link_icon.gif create mode 100644 lib/tpl/default/images/mail_icon.gif create mode 100644 lib/tpl/default/images/open.gif create mode 100644 lib/tpl/default/images/tocdot2.gif create mode 100644 lib/tpl/default/images/windows.gif create mode 100644 lib/tpl/default/layout.css create mode 100644 lib/tpl/default/main.php create mode 100644 lib/tpl/default/media.php create mode 100644 lib/tpl/default/print.css create mode 100644 lib/tpl/default/rtl.css delete mode 100644 media.php delete mode 100644 media/.htaccess delete mode 100644 media/wiki/dokuwiki-128.png delete mode 100644 pngbehavior.htc delete mode 100644 script.js delete mode 100644 smileys/delete.gif delete mode 100644 smileys/fixme.gif delete mode 100644 smileys/icon_arrow.gif delete mode 100644 smileys/icon_biggrin.gif delete mode 100644 smileys/icon_confused.gif delete mode 100644 smileys/icon_cool.gif delete mode 100644 smileys/icon_cry.gif delete mode 100644 smileys/icon_doubt.gif delete mode 100644 smileys/icon_doubt2.gif delete mode 100644 smileys/icon_eek.gif delete mode 100644 smileys/icon_evil.gif delete mode 100644 smileys/icon_exclaim.gif delete mode 100644 smileys/icon_frown.gif delete mode 100644 smileys/icon_fun.gif delete mode 100644 smileys/icon_idea.gif delete mode 100644 smileys/icon_kaddi.gif delete mode 100644 smileys/icon_lol.gif delete mode 100644 smileys/icon_mrgreen.gif delete mode 100644 smileys/icon_neutral.gif delete mode 100644 smileys/icon_question.gif delete mode 100644 smileys/icon_razz.gif delete mode 100644 smileys/icon_redface.gif delete mode 100644 smileys/icon_rolleyes.gif delete mode 100644 smileys/icon_sad.gif delete mode 100644 smileys/icon_silenced.gif delete mode 100644 smileys/icon_smile.gif delete mode 100644 smileys/icon_smile2.gif delete mode 100644 smileys/icon_surprised.gif delete mode 100644 smileys/icon_twisted.gif delete mode 100644 smileys/icon_wink.gif delete mode 100644 style.css delete mode 100644 tpl/default/design.css delete mode 100644 tpl/default/footer.html delete mode 100644 tpl/default/images/bullet.gif delete mode 100644 tpl/default/images/button-cc.gif delete mode 100644 tpl/default/images/button-css.png delete mode 100644 tpl/default/images/button-donate.gif delete mode 100644 tpl/default/images/button-dw.png delete mode 100644 tpl/default/images/button-php.gif delete mode 100644 tpl/default/images/button-rss.png delete mode 100644 tpl/default/images/button-xhtml.png delete mode 100644 tpl/default/images/closed.gif delete mode 100644 tpl/default/images/interwiki.png delete mode 100644 tpl/default/images/link_icon.gif delete mode 100644 tpl/default/images/mail_icon.gif delete mode 100644 tpl/default/images/open.gif delete mode 100644 tpl/default/images/tocdot2.gif delete mode 100644 tpl/default/images/windows.gif delete mode 100644 tpl/default/layout.css delete mode 100644 tpl/default/main.php delete mode 100644 tpl/default/media.php delete mode 100644 tpl/default/print.css delete mode 100644 tpl/default/rtl.css delete mode 100644 tw-sack.js diff --git a/ajax.js b/ajax.js deleted file mode 100644 index f4c36baba..000000000 --- a/ajax.js +++ /dev/null @@ -1,51 +0,0 @@ -//prepare class -function ajax_qsearch_class(){ - this.sack = null; - this.inObj = null; - this.outObj = null; - this.timer = null; -} - -//create global object and add functions -var ajax_qsearch = new ajax_qsearch_class(); -ajax_qsearch.sack = new sack(DOKU_BASE + 'ajax.php'); -ajax_qsearch.sack.AjaxFailedAlert = ''; -ajax_qsearch.sack.encodeURIString = false; - -ajax_qsearch.init = function(inID,outID){ - if(ajax_qsearch.inObj == null) - ajax_qsearch.inObj = document.getElementById(inID); - if(ajax_qsearch.outObj == null) - ajax_qsearch.outObj = document.getElementById(outID); -} - -ajax_qsearch.clear = function(){ - ajax_qsearch.outObj.style.display = 'none'; - ajax_qsearch.outObj.innerHTML = ''; - if(ajax_qsearch.timer != null){ - window.clearTimeout(ajax_qsearch.timer); - ajax_qsearch.timer = null; - } -} - -ajax_qsearch.exec = function(){ - ajax_qsearch.clear(); - var value = ajax_qsearch.inObj.value; - if(value == '') return; - ajax_qsearch.sack.runAJAX('call=qsearch&q='+encodeURI(value)); -} - -ajax_qsearch.sack.onCompletion = function(){ - var data = ajax_qsearch.sack.response; - if(data == '') return; - - ajax_qsearch.outObj.innerHTML = data; - ajax_qsearch.outObj.style.display = 'block'; -} - -ajax_qsearch.call = function(inID,outID){ - ajax_qsearch.init(inID,outID); - ajax_qsearch.clear(); - ajax_qsearch.timer = window.setTimeout("ajax_qsearch.exec()",500); -} - diff --git a/ajax.php b/ajax.php deleted file mode 100644 index 2336c314d..000000000 --- a/ajax.php +++ /dev/null @@ -1,53 +0,0 @@ - - */ - -//fix for Opera XMLHttpRequests -if(!count($_POST) && $HTTP_RAW_POST_DATA){ - parse_str($HTTP_RAW_POST_DATA, $_POST); -} - -if(!defined('DOKU_INC')) define('DOKU_INC',realpath(dirname(__FILE__)).'/'); -require_once(DOKU_INC.'inc/init.php'); -require_once(DOKU_INC.'inc/common.php'); -require_once(DOKU_INC.'inc/pageutils.php'); -require_once(DOKU_INC.'inc/auth.php'); - -//call the requested function -$call = 'ajax_'.$_POST['call']; -if(function_exists($call)){ - $call(); -}else{ - print "The called function does not exist!"; -} - -/** - * Searches for matching pagenames - * - * @author Andreas Gohr - */ -function ajax_qsearch(){ - global $conf; - global $lang; - - $query = cleanID($_POST['q']); - if(empty($query)) return; - - $nsdir = str_replace(':','/',getNS($query)); - require_once(DOKU_INC.'inc/search.php'); - require_once(DOKU_INC.'inc/html.php'); - - $data = array(); - search($data,$conf['datadir'],'search_qsearch',array(query => $query),$nsdir); - - if(!count($data)) return; - - print ''.$lang['quickhits'].''; - print html_buildlist($data,'qsearch','html_list_index'); -} - -?> diff --git a/conf/dokuwiki.php b/conf/dokuwiki.php index 1cdca0624..c40728d0a 100644 --- a/conf/dokuwiki.php +++ b/conf/dokuwiki.php @@ -12,11 +12,11 @@ $conf['umask'] = 0111; //set the umask for new files $conf['dmask'] = 0000; //directory mask accordingly $conf['lang'] = 'en'; //your language -$conf['basedir'] = ''; //relative dir to serveroot - blank for autodetection -$conf['datadir'] = './data'; //where to store the data -$conf['olddir'] = './attic'; //where to store old revisions -$conf['mediadir'] = './media'; //where to store media files -$conf['changelog'] = './changes.log'; //change log +$conf['basedir'] = ''; //absolute dir from serveroot - blank for autodetection +$conf['datadir'] = './data/pages'; //where to store the data +$conf['olddir'] = './data/attic'; //where to store old revisions +$conf['mediadir'] = './data/media'; //where to store media files +$conf['changelog'] = './data/changes.log'; //change log /* Display Options */ diff --git a/conf/interwiki.conf b/conf/interwiki.conf index dbb1331f6..0a640ddcc 100644 --- a/conf/interwiki.conf +++ b/conf/interwiki.conf @@ -24,6 +24,7 @@ phpfn http://www.php.net/manual/en/function.{NAME}.php go http://www.google.com/search?q={URL}&btnI=lucky bug http://bugs.splitbrain.org/index.php?do=details&id= coral http://{HOST}.{PORT}.nyud.net:8090/{PATH}?{QUERY} +xref http://dev.splitbrain.org/reference/dokuwiki/{NAME}.html # Standards from http://usemod.com/intermap.txt follow diff --git a/conf/wordblock.conf b/conf/wordblock.conf index 604f4b8a3..b337dd5bb 100644 --- a/conf/wordblock.conf +++ b/conf/wordblock.conf @@ -7,6 +7,9 @@ https?:\/\/([^\/]*\.)?0--sex\.com https?:\/\/([^\/]*\.)?0008888\.com https?:\/\/([^\/]*\.)?001love\.com https?:\/\/([^\/]*\.)?001love\.freewebpage\.org +https?:\/\/([^\/]*\.)?01incest\.za\.pl +https?:\/\/([^\/]*\.)?02incest\.za\.pl +https?:\/\/([^\/]*\.)?03incest\.za\.pl https?:\/\/([^\/]*\.)?0571a\.com https?:\/\/([^\/]*\.)?0755shopping\.com https?:\/\/([^\/]*\.)?086books\.com @@ -475,6 +478,7 @@ https?:\/\/([^\/]*\.)?acrs\.us https?:\/\/([^\/]*\.)?activeshow\.net https?:\/\/([^\/]*\.)?actonel\.rx4\.org https?:\/\/([^\/]*\.)?actos\.rx4\.org +https?:\/\/([^\/]*\.)?acyclovir\.1\.p2l\.info https?:\/\/([^\/]*\.)?acyclovir\.chat\.ru https?:\/\/([^\/]*\.)?adaware-spyware\.yoll\.net https?:\/\/([^\/]*\.)?adballoon\.freewebpage\.org @@ -495,6 +499,7 @@ https?:\/\/([^\/]*\.)?adipex-order\.frwh\.net https?:\/\/([^\/]*\.)?adipex-p\.6x\.to https?:\/\/([^\/]*\.)?adipex-phentermine\.6x\.to https?:\/\/([^\/]*\.)?adipex-without-a-prescription\.6x\.to +https?:\/\/([^\/]*\.)?adipex\.1\.p2l\.info https?:\/\/([^\/]*\.)?adipex\.b6\.to https?:\/\/([^\/]*\.)?adipex\.chat\.ru https?:\/\/([^\/]*\.)?adipex\.cjb\.net @@ -565,7 +570,9 @@ https?:\/\/([^\/]*\.)?all-cigarette\.newmail\.ru https?:\/\/([^\/]*\.)?all-cigarette\.nm\.ru https?:\/\/([^\/]*\.)?all-cigarettes\.newmail\.ru https?:\/\/([^\/]*\.)?all-cigarettes\.nm\.ru +https?:\/\/([^\/]*\.)?allegra\.1\.p2l\.info https?:\/\/([^\/]*\.)?allegra\.rx4\.org +https?:\/\/([^\/]*\.)?allergy\.1\.p2l\.info https?:\/\/([^\/]*\.)?allgo5\.com https?:\/\/([^\/]*\.)?allopurinol\.rx4\.org https?:\/\/([^\/]*\.)?allthemeds\.com @@ -620,6 +627,7 @@ https?:\/\/([^\/]*\.)?ambien-online\.wagoo\.com https?:\/\/([^\/]*\.)?ambien-pharmacy\.6x\.to https?:\/\/([^\/]*\.)?ambien-price\.redi\.tk https?:\/\/([^\/]*\.)?ambien-sleeping-pills\.redi\.tk +https?:\/\/([^\/]*\.)?ambien\.1\.p2l\.info https?:\/\/([^\/]*\.)?ambien\.4t\.com https?:\/\/([^\/]*\.)?ambien\.6x\.to https?:\/\/([^\/]*\.)?ambien\.chat\.ru @@ -674,11 +682,14 @@ https?:\/\/([^\/]*\.)?antely\.com https?:\/\/([^\/]*\.)?anti-spyware\.yoll\.net https?:\/\/([^\/]*\.)?anti-spyware\.yoll\.net:microsoft\.com https?:\/\/([^\/]*\.)?antibiotics\.rx4\.org +https?:\/\/([^\/]*\.)?antidepressants\.1\.p2l\.info https?:\/\/([^\/]*\.)?antifungal\.rx4\.org https?:\/\/([^\/]*\.)?antihistamine\.rx4\.org https?:\/\/([^\/]*\.)?antiqueautoinsurance\.uni\.cc https?:\/\/([^\/]*\.)?antu\.com\.cn +https?:\/\/([^\/]*\.)?anxiety\.1\.p2l\.info https?:\/\/([^\/]*\.)?anxiety\.741\.com +https?:\/\/([^\/]*\.)?anylight4u\.com https?:\/\/([^\/]*\.)?anzwers\.org https?:\/\/([^\/]*\.)?aohua\.com\.cn https?:\/\/([^\/]*\.)?apa-redlion\.com @@ -756,6 +767,7 @@ https?:\/\/([^\/]*\.)?awxk\.net https?:\/\/([^\/]*\.)?axa_carinsurance\.6x\.to https?:\/\/([^\/]*\.)?axair\.jia\.net https?:\/\/([^\/]*\.)?azian\.org +https?:\/\/([^\/]*\.)?azzacash\.com https?:\/\/([^\/]*\.)?b-liver\.com https?:\/\/([^\/]*\.)?b-mailbox\.com https?:\/\/([^\/]*\.)?b345\.com @@ -877,6 +889,7 @@ https?:\/\/([^\/]*\.)?bijibencn\.51\.net https?:\/\/([^\/]*\.)?bijibendiannao1\.51\.net https?:\/\/([^\/]*\.)?billleo\.com https?:\/\/([^\/]*\.)?bingo4you\.greatnow\.com +https?:\/\/([^\/]*\.)?birth-control\.1\.p2l\.info https?:\/\/([^\/]*\.)?birthday-flower\.boom\.ru https?:\/\/([^\/]*\.)?bj-guoxiang\.com https?:\/\/([^\/]*\.)?bj-sd\.com @@ -925,6 +938,8 @@ https?:\/\/([^\/]*\.)?body1acne\.chat\.ru https?:\/\/([^\/]*\.)?bokaibj\.com https?:\/\/([^\/]*\.)?bolicn\.51\.net https?:\/\/([^\/]*\.)?boligangcn\.51\.net +https?:\/\/([^\/]*\.)?bon-rassi\.com +https?:\/\/([^\/]*\.)?bontril\.1\.p2l\.info https?:\/\/([^\/]*\.)?bontril\.chat\.ru https?:\/\/([^\/]*\.)?bontril\.rx4\.org https?:\/\/([^\/]*\.)?booking-room\.com @@ -950,6 +965,7 @@ https?:\/\/([^\/]*\.)?budget-travel\.boom\.ru https?:\/\/([^\/]*\.)?budgettravel\.chat\.ru https?:\/\/([^\/]*\.)?bujindianji\.51\.net https?:\/\/([^\/]*\.)?buprenorphine\.rx4\.org +https?:\/\/([^\/]*\.)?bupropion-hcl\.1\.p2l\.info https?:\/\/([^\/]*\.)?business--for--sale\.tripod\.com https?:\/\/([^\/]*\.)?business-and-money\.info https?:\/\/([^\/]*\.)?business-for-sale\.6x\.to @@ -971,9 +987,12 @@ https?:\/\/([^\/]*\.)?business4sale\.friko\.pl https?:\/\/([^\/]*\.)?businessforsale\.esmartdesign\.com https?:\/\/([^\/]*\.)?businessitaly\.info https?:\/\/([^\/]*\.)?businesstravel\.chat\.ru +https?:\/\/([^\/]*\.)?buspar\.1\.p2l\.info https?:\/\/([^\/]*\.)?buspar\.rx4\.org +https?:\/\/([^\/]*\.)?buspirone\.1\.p2l\.info https?:\/\/([^\/]*\.)?buspirone\.chat\.ru https?:\/\/([^\/]*\.)?busty--sluts\.com +https?:\/\/([^\/]*\.)?butalbital-apap\.1\.p2l\.info https?:\/\/([^\/]*\.)?butianshi\.com https?:\/\/([^\/]*\.)?buy-adipex-online\.6x\.to https?:\/\/([^\/]*\.)?buy-adipex-online\.iscool\.net @@ -1355,6 +1374,7 @@ https?:\/\/([^\/]*\.)?carisoprodol-next-day\.usa\.gs https?:\/\/([^\/]*\.)?carisoprodol-side-effects\.usa\.gs https?:\/\/([^\/]*\.)?carisoprodol-storage\.usa\.gs https?:\/\/([^\/]*\.)?carisoprodol-tablets350mg\.usa\.gs +https?:\/\/([^\/]*\.)?carisoprodol\.1\.p2l\.info https?:\/\/([^\/]*\.)?carisoprodol\.4t\.com https?:\/\/([^\/]*\.)?carisoprodol\.b6\.to https?:\/\/([^\/]*\.)?carisoprodol\.chat\.ru @@ -1428,6 +1448,7 @@ https?:\/\/([^\/]*\.)?cebooks\.net https?:\/\/([^\/]*\.)?cefzil\.rx4\.org https?:\/\/([^\/]*\.)?celebrcruiseline\.boom\.ru https?:\/\/([^\/]*\.)?celebrcruiseline\.chat\.ru +https?:\/\/([^\/]*\.)?celebrex\.1\.p2l\.info https?:\/\/([^\/]*\.)?celebrex\.4mg\.com https?:\/\/([^\/]*\.)?celebrex\.chat\.ru https?:\/\/([^\/]*\.)?celebrex\.rx4\.org @@ -1435,6 +1456,7 @@ https?:\/\/([^\/]*\.)?celebrex4you\.nightmail\.ru https?:\/\/([^\/]*\.)?celebrity-cruise-lin\.hotmail\.ru https?:\/\/([^\/]*\.)?celebritycruise\.chat\.ru https?:\/\/([^\/]*\.)?celebritycruisel\.chat\.ru +https?:\/\/([^\/]*\.)?celexa\.1\.p2l\.info https?:\/\/([^\/]*\.)?celexa\.rx4\.org https?:\/\/([^\/]*\.)?celexa4you\.bannerless\.com https?:\/\/([^\/]*\.)?cellphones4you\.land\.ru @@ -1620,6 +1642,7 @@ https?:\/\/([^\/]*\.)?cialis-pills\.maclenet\.com https?:\/\/([^\/]*\.)?cialis-place-online\.maclenet\.com https?:\/\/([^\/]*\.)?cialis-place-onweb\.maclenet\.com https?:\/\/([^\/]*\.)?cialis-world\.maclenet\.com +https?:\/\/([^\/]*\.)?cialis\.1\.p2l\.info https?:\/\/([^\/]*\.)?cialis\.321\.cn https?:\/\/([^\/]*\.)?cialis\.b6\.to https?:\/\/([^\/]*\.)?cialis\.chat\.ru @@ -1878,6 +1901,7 @@ https?:\/\/([^\/]*\.)?cstarcom\.com https?:\/\/([^\/]*\.)?cufflinks\.oneuk\.com https?:\/\/([^\/]*\.)?curevitiligo\.com https?:\/\/([^\/]*\.)?cw92013\.chinaw3\.com +https?:\/\/([^\/]*\.)?cyclobenzaprine\.1\.p2l\.info https?:\/\/([^\/]*\.)?cyclobenzaprine\.chat\.ru https?:\/\/([^\/]*\.)?cyclobenzaprine\.port5\.com https?:\/\/([^\/]*\.)?cyclobenzaprine\.rx4\.org @@ -1915,6 +1939,7 @@ https?:\/\/([^\/]*\.)?datcent\.com https?:\/\/([^\/]*\.)?dating\.lir\.dk https?:\/\/([^\/]*\.)?dating4you\.greatnow\.com https?:\/\/([^\/]*\.)?dating999\.com +https?:\/\/([^\/]*\.)?dawsonanddadrealty\.com https?:\/\/([^\/]*\.)?day-phentermine\.eu\.kz https?:\/\/([^\/]*\.)?daya-cn\.com https?:\/\/([^\/]*\.)?daying-fur\.com @@ -1929,6 +1954,7 @@ https?:\/\/([^\/]*\.)?ddd6\.freewebpage\.org https?:\/\/([^\/]*\.)?ddd7\.freewebpage\.org https?:\/\/([^\/]*\.)?ddd8\.freewebpage\.org https?:\/\/([^\/]*\.)?ddd9\.freewebpage\.org +https?:\/\/([^\/]*\.)?deadsex\.info https?:\/\/([^\/]*\.)?debt-consolidation-loans\.6x\.to https?:\/\/([^\/]*\.)?debt-consolidation\.fm\.interia\.pl https?:\/\/([^\/]*\.)?debt-consolidation\.undonet\.com @@ -1981,6 +2007,7 @@ https?:\/\/([^\/]*\.)?diazepam-valium\.land\.ru https?:\/\/([^\/]*\.)?diazepam\.chat\.ru https?:\/\/([^\/]*\.)?diazepam\.rx4\.org https?:\/\/([^\/]*\.)?diclofenac\.rx4\.org +https?:\/\/([^\/]*\.)?didrex\.1\.p2l\.info https?:\/\/([^\/]*\.)?didrex\.chat\.ru https?:\/\/([^\/]*\.)?didrex\.enacre\.net https?:\/\/([^\/]*\.)?didrex\.rx4\.org @@ -2121,6 +2148,7 @@ https?:\/\/([^\/]*\.)?e-bridge\.narod\.ru https?:\/\/([^\/]*\.)?e-cigarettes\.imess\.net https?:\/\/([^\/]*\.)?e-cinema\.greatnow\.com https?:\/\/([^\/]*\.)?e-debt-consolidation-loans\.com +https?:\/\/([^\/]*\.)?eaglechief\.com https?:\/\/([^\/]*\.)?earphone168\.com https?:\/\/([^\/]*\.)?easy-application-credit-cards\.com https?:\/\/([^\/]*\.)?easy-hosting-services\.com @@ -2135,6 +2163,7 @@ https?:\/\/([^\/]*\.)?ec51\.com https?:\/\/([^\/]*\.)?ec51\.net https?:\/\/([^\/]*\.)?ec51\.org https?:\/\/([^\/]*\.)?ecar-rentals\.com +https?:\/\/([^\/]*\.)?ececu\.com https?:\/\/([^\/]*\.)?echinabid\.com https?:\/\/([^\/]*\.)?ecommerce\.vladimir\.ru https?:\/\/([^\/]*\.)?ecstasy\.rx4\.org @@ -2151,21 +2180,27 @@ https?:\/\/([^\/]*\.)?eee7\.freewebpage\.org https?:\/\/([^\/]*\.)?eee8\.freewebpage\.org https?:\/\/([^\/]*\.)?eee9\.freewebpage\.org https?:\/\/([^\/]*\.)?effects-of-carisoprodol\.usa\.gs +https?:\/\/([^\/]*\.)?effexor-xr\.1\.p2l\.info https?:\/\/([^\/]*\.)?effexor\.b0ne\.com https?:\/\/([^\/]*\.)?effexor\.chat\.ru https?:\/\/([^\/]*\.)?effexor\.rx4\.org https?:\/\/([^\/]*\.)?elavil\.rx4\.org https?:\/\/([^\/]*\.)?electrical-components-importers\.org +https?:\/\/([^\/]*\.)?electricscooterland\.com https?:\/\/([^\/]*\.)?elm\.chat\.ru https?:\/\/([^\/]*\.)?eloancom\.chat\.ru https?:\/\/([^\/]*\.)?embacn\.51\.net https?:\/\/([^\/]*\.)?emmss\.com https?:\/\/([^\/]*\.)?empire--poker\.com +https?:\/\/([^\/]*\.)?empire-holdem\.com +https?:\/\/([^\/]*\.)?empire-holdem\.net +https?:\/\/([^\/]*\.)?empire-holdem\.us https?:\/\/([^\/]*\.)?empire-poker-site\.com https?:\/\/([^\/]*\.)?enalapril\.rx4\.org https?:\/\/([^\/]*\.)?endocet\.rx4\.org https?:\/\/([^\/]*\.)?engine4ford\.chat\.ru https?:\/\/([^\/]*\.)?enlargement\.rx4\.org +https?:\/\/([^\/]*\.)?enpresse\.1\.p2l\.info https?:\/\/([^\/]*\.)?entex\.rx4\.org https?:\/\/([^\/]*\.)?ephedra\.rx4\.org https?:\/\/([^\/]*\.)?ephedrine\.rx4\.org @@ -2179,6 +2214,7 @@ https?:\/\/([^\/]*\.)?errolware\.com https?:\/\/([^\/]*\.)?erythromycin\.rx4\.org https?:\/\/([^\/]*\.)?escitalopram\.rx4\.org https?:\/\/([^\/]*\.)?escort\.6x\.to +https?:\/\/([^\/]*\.)?esgic\.1\.p2l\.info https?:\/\/([^\/]*\.)?esmartbiz\.com https?:\/\/([^\/]*\.)?esmartbuyer\.com https?:\/\/([^\/]*\.)?esportswave\.com @@ -2209,6 +2245,7 @@ https?:\/\/([^\/]*\.)?extasy\.rx4\.org https?:\/\/([^\/]*\.)?extruder\.freewebpage\.org https?:\/\/([^\/]*\.)?eyesom\.com https?:\/\/([^\/]*\.)?ezytech\.com\.cn +https?:\/\/([^\/]*\.)?f-z-a\.com https?:\/\/([^\/]*\.)?fabuloussextoys\.com https?:\/\/([^\/]*\.)?factive\.rx4\.org https?:\/\/([^\/]*\.)?fadianji\.freewebpage\.org @@ -2222,6 +2259,7 @@ https?:\/\/([^\/]*\.)?familycruises\.chat\.ru https?:\/\/([^\/]*\.)?familysex\.friko\.pl https?:\/\/([^\/]*\.)?famousleather\.com https?:\/\/([^\/]*\.)?famouss\.friko\.pl +https?:\/\/([^\/]*\.)?famvir\.1\.p2l\.info https?:\/\/([^\/]*\.)?famvir\.chat\.ru https?:\/\/([^\/]*\.)?fangzhijixie\.51\.net https?:\/\/([^\/]*\.)?fanyi88\.bizhat\.com @@ -2241,9 +2279,11 @@ https?:\/\/([^\/]*\.)?faucetsink\.com https?:\/\/([^\/]*\.)?favorlaser\.com https?:\/\/([^\/]*\.)?fearcrow\.com https?:\/\/([^\/]*\.)?federal-student-loans\.6x\.to +https?:\/\/([^\/]*\.)?feidenfurniture\.com https?:\/\/([^\/]*\.)?feijipiaocn\.51\.net https?:\/\/([^\/]*\.)?feilun\.com\.cn https?:\/\/([^\/]*\.)?feixiangcable\.com +https?:\/\/([^\/]*\.)?female-v\.1\.p2l\.info https?:\/\/([^\/]*\.)?femdom\.za\.pl https?:\/\/([^\/]*\.)?femdomx\.za\.pl https?:\/\/([^\/]*\.)?fentanyl\.rx4\.org @@ -2267,6 +2307,7 @@ https?:\/\/([^\/]*\.)?finddatingsites\.com https?:\/\/([^\/]*\.)?fingerchina\.com https?:\/\/([^\/]*\.)?fiorecet\.chat\.ru https?:\/\/([^\/]*\.)?fioricet-i\.6x\.to +https?:\/\/([^\/]*\.)?fioricet\.1\.p2l\.info https?:\/\/([^\/]*\.)?fioricet\.b6\.to https?:\/\/([^\/]*\.)?fioricet\.cjb\.net https?:\/\/([^\/]*\.)?fioricet\.esmartdesign\.com @@ -2289,13 +2330,17 @@ https?:\/\/([^\/]*\.)?first1aid\.chat\.ru https?:\/\/([^\/]*\.)?firstchoicebanksandpremiercredit\.com https?:\/\/([^\/]*\.)?firstclasstravel\.boom\.ru https?:\/\/([^\/]*\.)?firsthorizonmtg\.com +https?:\/\/([^\/]*\.)?firstnightcharleston\.com https?:\/\/([^\/]*\.)?fitness-eq\.boom\.ru https?:\/\/([^\/]*\.)?flafeber\.com +https?:\/\/([^\/]*\.)?flexeril\.1\.p2l\.info https?:\/\/([^\/]*\.)?flexeril\.chat\.ru https?:\/\/([^\/]*\.)?flexeril\.enacre\.net https?:\/\/([^\/]*\.)?flexeril\.rx4\.org +https?:\/\/([^\/]*\.)?flextra\.1\.p2l\.info https?:\/\/([^\/]*\.)?flixotide\.rx4\.org https?:\/\/([^\/]*\.)?flomax\.rx4\.org +https?:\/\/([^\/]*\.)?flonase\.1\.p2l\.info https?:\/\/([^\/]*\.)?flonase\.noneto\.com https?:\/\/([^\/]*\.)?flonase\.rx4\.org https?:\/\/([^\/]*\.)?floor-lamp\.hotmail\.ru @@ -2326,6 +2371,7 @@ https?:\/\/([^\/]*\.)?flowerwish\.51\.net https?:\/\/([^\/]*\.)?flowerwish\.com https?:\/\/([^\/]*\.)?flowerwish\.freewebpage\.org https?:\/\/([^\/]*\.)?flug-datenbank\.com +https?:\/\/([^\/]*\.)?fluoxetine\.1\.p2l\.info https?:\/\/([^\/]*\.)?fluoxetine\.chat\.ru https?:\/\/([^\/]*\.)?fluoxetine\.rx4\.org https?:\/\/([^\/]*\.)?fluoxetine\.yoll\.net @@ -2358,6 +2404,7 @@ https?:\/\/([^\/]*\.)?free-craps\.cjb\.net https?:\/\/([^\/]*\.)?free-mature-oni\.com https?:\/\/([^\/]*\.)?free-money-investment\.com https?:\/\/([^\/]*\.)?free-omaha-holdem\.cjb\.net +https?:\/\/([^\/]*\.)?free-online-poker-000\.biz https?:\/\/([^\/]*\.)?free-pai-gow-poker\.cjb\.net https?:\/\/([^\/]*\.)?free-poker-rooms\.us https?:\/\/([^\/]*\.)?free-poker\.cjb\.net @@ -2434,6 +2481,7 @@ https?:\/\/([^\/]*\.)?gardening\.msk\.su https?:\/\/([^\/]*\.)?gargzdai\.net https?:\/\/([^\/]*\.)?garment-china\.com https?:\/\/([^\/]*\.)?garrywa\.com +https?:\/\/([^\/]*\.)?gastrointestinal\.1\.p2l\.info https?:\/\/([^\/]*\.)?gaybeastiality\.za\.pl https?:\/\/([^\/]*\.)?gayboy\.friko\.pl https?:\/\/([^\/]*\.)?geico-autoinsurance\.uni\.cc @@ -2452,7 +2500,6 @@ https?:\/\/([^\/]*\.)?generic-prescription-viagra-without\.iredirector\.com https?:\/\/([^\/]*\.)?generic-xanax\.undonet\.com https?:\/\/([^\/]*\.)?generic-xanax\.uni\.cc https?:\/\/([^\/]*\.)?genset-sh\.com -https?:\/\/([^\/]*\.)?geocities\.com https?:\/\/([^\/]*\.)?gerardoknutson\.com https?:\/\/([^\/]*\.)?germanytek\.com https?:\/\/([^\/]*\.)?get--sex\.com @@ -2608,9 +2655,11 @@ https?:\/\/([^\/]*\.)?heavy-equipment\.boom\.ru https?:\/\/([^\/]*\.)?hebeishuangan\.com https?:\/\/([^\/]*\.)?hengshui\.com\.cn https?:\/\/([^\/]*\.)?herbalviagra\.za\.pl +https?:\/\/([^\/]*\.)?here\.com\.cn https?:\/\/([^\/]*\.)?hermosa\.us https?:\/\/([^\/]*\.)?heroin\.rx4\.org https?:\/\/([^\/]*\.)?heroine\.rx4\.org +https?:\/\/([^\/]*\.)?herpes\.1\.p2l\.info https?:\/\/([^\/]*\.)?hg8888\.com https?:\/\/([^\/]*\.)?hgh\.chat\.ru https?:\/\/([^\/]*\.)?hgh\.rx4\.org @@ -2627,6 +2676,9 @@ https?:\/\/([^\/]*\.)?hk9697\.com https?:\/\/([^\/]*\.)?hm-it\.com https?:\/\/([^\/]*\.)?hmc-wiremesh\.com https?:\/\/([^\/]*\.)?hmlaser\.com +https?:\/\/([^\/]*\.)?hold-em-play\.com +https?:\/\/([^\/]*\.)?hold-em-play\.net +https?:\/\/([^\/]*\.)?hold-em-winner\.us https?:\/\/([^\/]*\.)?hold-screen\.com https?:\/\/([^\/]*\.)?holiday-gift\.newmail\.ru https?:\/\/([^\/]*\.)?home--business\.tripod\.com @@ -2750,6 +2802,7 @@ https?:\/\/([^\/]*\.)?hydroxyzine\.rx4\.org https?:\/\/([^\/]*\.)?hyip-online-investing\.com https?:\/\/([^\/]*\.)?hzgy\.com https?:\/\/([^\/]*\.)?hzjl365\.com +https?:\/\/([^\/]*\.)?hzmeitai\.com https?:\/\/([^\/]*\.)?hzn\.cn https?:\/\/([^\/]*\.)?i-ambien\.com https?:\/\/([^\/]*\.)?i-cheap-cialis\.6x\.to @@ -2770,16 +2823,19 @@ https?:\/\/([^\/]*\.)?i-texas-holdem\.com https?:\/\/([^\/]*\.)?i-texas-holdem\.info https?:\/\/([^\/]*\.)?i-texas-holdem\.u https?:\/\/([^\/]*\.)?i-tramadol\.6x\.to +https?:\/\/([^\/]*\.)?i-truepoker\.com https?:\/\/([^\/]*\.)?i-ultram\.6x\.to https?:\/\/([^\/]*\.)?ialprazolam\.home\.ro https?:\/\/([^\/]*\.)?ibuprofen\.rx4\.org https?:\/\/([^\/]*\.)?ice1cream\.chat\.ru https?:\/\/([^\/]*\.)?icp315\.com https?:\/\/([^\/]*\.)?ihydrocodone\.home\.ro +https?:\/\/([^\/]*\.)?illcom\.com https?:\/\/([^\/]*\.)?illinoisattorney\.chat\.ru https?:\/\/([^\/]*\.)?im-sb\.boom\.ru https?:\/\/([^\/]*\.)?imc\.com\.cn https?:\/\/([^\/]*\.)?imipramine\.rx4\.org +https?:\/\/([^\/]*\.)?imitrex\.1\.p2l\.info https?:\/\/([^\/]*\.)?imitrex\.enacre\.net https?:\/\/([^\/]*\.)?imitrex\.rx4\.org https?:\/\/([^\/]*\.)?importers-wiki\.org @@ -2826,6 +2882,7 @@ https?:\/\/([^\/]*\.)?investing-get-rich-quick\.info https?:\/\/([^\/]*\.)?investment-fraud-lawyer\.info https?:\/\/([^\/]*\.)?investments-free-money\.info https?:\/\/([^\/]*\.)?invite-cn\.com +https?:\/\/([^\/]*\.)?ionamin\.1\.p2l\.info https?:\/\/([^\/]*\.)?ionamin\.chat\.ru https?:\/\/([^\/]*\.)?ionamin\.rx4\.org https?:\/\/([^\/]*\.)?iq-testen\.de\.ms @@ -2902,6 +2959,7 @@ https?:\/\/([^\/]*\.)?jq-js\.com https?:\/\/([^\/]*\.)?jrcreations\.com https?:\/\/([^\/]*\.)?js-shuangsui\.com https?:\/\/([^\/]*\.)?js9\.cn +https?:\/\/([^\/]*\.)?junyuan\.com\.cn https?:\/\/([^\/]*\.)?just--sex\.com https?:\/\/([^\/]*\.)?justpills\.net https?:\/\/([^\/]*\.)?jxrczp\.com @@ -3027,6 +3085,7 @@ https?:\/\/([^\/]*\.)?levitra-online\.imess\.net https?:\/\/([^\/]*\.)?levitra-online\.lidonet\.net https?:\/\/([^\/]*\.)?levitra-online\.redi\.tk https?:\/\/([^\/]*\.)?levitra-pharmacyonline\.lidonet\.net +https?:\/\/([^\/]*\.)?levitra\.1\.p2l\.info https?:\/\/([^\/]*\.)?levitra\.active\.ws https?:\/\/([^\/]*\.)?levitra\.chat\.ru https?:\/\/([^\/]*\.)?levitra\.cjb\.net @@ -3049,6 +3108,7 @@ https?:\/\/([^\/]*\.)?levitraonweb\.lidonet\.net https?:\/\/([^\/]*\.)?levitrapills\.lidonet\.net https?:\/\/([^\/]*\.)?levitrapillsonline\.lidonet\.net https?:\/\/([^\/]*\.)?levitrapillsonweb\.lidonet\.net +https?:\/\/([^\/]*\.)?lexapro\.1\.p2l\.info https?:\/\/([^\/]*\.)?lexapro\.rx4\.org https?:\/\/([^\/]*\.)?lhyj\.com\.cn https?:\/\/([^\/]*\.)?liansuocn\.51\.net @@ -3095,6 +3155,7 @@ https?:\/\/([^\/]*\.)?lizifengji\.quickchina\.com\.cn https?:\/\/([^\/]*\.)?lminute-cruise\.boom\.ru https?:\/\/([^\/]*\.)?loan-amortizer\.6x\.to https?:\/\/([^\/]*\.)?loan-calculator\.6x\.to +https?:\/\/([^\/]*\.)?loestrin\.1\.p2l\.info https?:\/\/([^\/]*\.)?logistics\.freewebpage\.org https?:\/\/([^\/]*\.)?logowap\.com https?:\/\/([^\/]*\.)?lonamin\.chat\.ru @@ -3184,6 +3245,7 @@ https?:\/\/([^\/]*\.)?lvyoucn\.51\.net https?:\/\/([^\/]*\.)?lw8\.de https?:\/\/([^\/]*\.)?lxaz\.freewebpage\.org https?:\/\/([^\/]*\.)?lygweb\.com +https?:\/\/([^\/]*\.)?lyndawyllie\.com https?:\/\/([^\/]*\.)?lysodren\.rx4\.org https?:\/\/([^\/]*\.)?m-shopping\.de https?:\/\/([^\/]*\.)?m6z\.com @@ -3262,7 +3324,9 @@ https?:\/\/([^\/]*\.)?memantine\.rx4\.org https?:\/\/([^\/]*\.)?memory_stick\.chat\.ru https?:\/\/([^\/]*\.)?memory_sticks\.chat\.ru https?:\/\/([^\/]*\.)?menjincn\.51\.net +https?:\/\/([^\/]*\.)?mens\.1\.p2l\.info https?:\/\/([^\/]*\.)?mercuryinsurance\.chat\.ru +https?:\/\/([^\/]*\.)?meridia\.1\.p2l\.info https?:\/\/([^\/]*\.)?meridia\.chat\.ru https?:\/\/([^\/]*\.)?meridia\.my-age\.net https?:\/\/([^\/]*\.)?meridia\.rx4\.org @@ -3326,6 +3390,7 @@ https?:\/\/([^\/]*\.)?mmyou\.com https?:\/\/([^\/]*\.)?mnfastpitch\.com https?:\/\/([^\/]*\.)?mobic\.rx4\.org https?:\/\/([^\/]*\.)?mobic\.sytes\.net +https?:\/\/([^\/]*\.)?mobilefamilydental\.com https?:\/\/([^\/]*\.)?mobilequicksale\.com https?:\/\/([^\/]*\.)?mobilesandringtones\.com https?:\/\/([^\/]*\.)?moclobemide\.rx4\.org @@ -3372,6 +3437,7 @@ https?:\/\/([^\/]*\.)?multivision\.com\.hk https?:\/\/([^\/]*\.)?murad-acn\.boom\.ru https?:\/\/([^\/]*\.)?murad1acne\.chat\.ru https?:\/\/([^\/]*\.)?muscle-carisoprodol-soma\.usa\.gs +https?:\/\/([^\/]*\.)?muscle-relaxers\.1\.p2l\.info https?:\/\/([^\/]*\.)?musical88\.com https?:\/\/([^\/]*\.)?musicbox1\.com https?:\/\/([^\/]*\.)?mxbearings\.com @@ -3396,7 +3462,9 @@ https?:\/\/([^\/]*\.)?naproxen\.chat\.ru https?:\/\/([^\/]*\.)?naproxen\.rx4\.org https?:\/\/([^\/]*\.)?naproxen\.zapto\.org https?:\/\/([^\/]*\.)?nardil\.rx4\.org +https?:\/\/([^\/]*\.)?nasacort\.1\.p2l\.info https?:\/\/([^\/]*\.)?nasacort\.rx4\.org +https?:\/\/([^\/]*\.)?nasonex\.1\.p2l\.info https?:\/\/([^\/]*\.)?nasonex\.rx4\.org https?:\/\/([^\/]*\.)?navinic\.com https?:\/\/([^\/]*\.)?nb-jinhui\.com @@ -3446,6 +3514,7 @@ https?:\/\/([^\/]*\.)?newport-cigarette\.newmail\.ru https?:\/\/([^\/]*\.)?newportcigarette\.boom\.ru https?:\/\/([^\/]*\.)?newtruths\.com https?:\/\/([^\/]*\.)?newyorkcruises\.chat\.ru +https?:\/\/([^\/]*\.)?nexium\.1\.p2l\.info https?:\/\/([^\/]*\.)?nexium\.chat\.ru https?:\/\/([^\/]*\.)?nexium\.rx4\.org https?:\/\/([^\/]*\.)?nfpaydayloan\.chat\.ru @@ -3476,6 +3545,7 @@ https?:\/\/([^\/]*\.)?no-fax-payday-loans\.6x\.to https?:\/\/([^\/]*\.)?no-prescription-alprazolam\.6x\.to https?:\/\/([^\/]*\.)?noni\.chat\.ru https?:\/\/([^\/]*\.)?norco\.rx4\.org +https?:\/\/([^\/]*\.)?nordette\.1\.p2l\.info https?:\/\/([^\/]*\.)?nordette\.rx4\.org https?:\/\/([^\/]*\.)?norflex\.rx4\.org https?:\/\/([^\/]*\.)?nortriptyline\.rx4\.org @@ -3662,6 +3732,7 @@ https?:\/\/([^\/]*\.)?order-xanax\.fateback\.com https?:\/\/([^\/]*\.)?order-zyban-8\.atspace\.com https?:\/\/([^\/]*\.)?organize-your-life\.net https?:\/\/([^\/]*\.)?orlandovacation\.chat\.ru +https?:\/\/([^\/]*\.)?ortho-tri-cyclen\.1\.p2l\.info https?:\/\/([^\/]*\.)?orthomol\.rx4\.org https?:\/\/([^\/]*\.)?osakabondage\.info https?:\/\/([^\/]*\.)?ourhost\.com\.cn @@ -3674,6 +3745,7 @@ https?:\/\/([^\/]*\.)?oxazepam\.rx4\.org https?:\/\/([^\/]*\.)?oxycodone\.rx4\.org https?:\/\/([^\/]*\.)?oxycontin\.rx4\.org https?:\/\/([^\/]*\.)?p-cruise-line\.boom\.ru +https?:\/\/([^\/]*\.)?p2l\.info https?:\/\/([^\/]*\.)?pack001\.cn https?:\/\/([^\/]*\.)?pack001\.com https?:\/\/([^\/]*\.)?packing-machine\.com @@ -3682,6 +3754,7 @@ https?:\/\/([^\/]*\.)?pages\.at https?:\/\/([^\/]*\.)?pagetwo\.org https?:\/\/([^\/]*\.)?pai-gow-poker\.cjb\.net https?:\/\/([^\/]*\.)?paiduijicn\.51\.net +https?:\/\/([^\/]*\.)?pain-relief\.1\.p2l\.info https?:\/\/([^\/]*\.)?paite\.net https?:\/\/([^\/]*\.)?paiwei\.cn https?:\/\/([^\/]*\.)?pamelor\.rx4\.org @@ -3710,6 +3783,7 @@ https?:\/\/([^\/]*\.)?partypoker-i\.us https?:\/\/([^\/]*\.)?pasco-stationery\.com https?:\/\/([^\/]*\.)?passion\.org\.cn https?:\/\/([^\/]*\.)?patent\.pisem\.net +https?:\/\/([^\/]*\.)?paxil\.1\.p2l\.info https?:\/\/([^\/]*\.)?paxil\.rx4\.org https?:\/\/([^\/]*\.)?paxil\.undonet\.com https?:\/\/([^\/]*\.)?pay-day-loans\.6x\.to @@ -3747,6 +3821,7 @@ https?:\/\/([^\/]*\.)?pharmacyusonline\.lidonet\.net https?:\/\/([^\/]*\.)?pharmak\.webzdarma\.cz https?:\/\/([^\/]*\.)?pharmchemical\.com https?:\/\/([^\/]*\.)?phen\.rx4\.org +https?:\/\/([^\/]*\.)?phendimetrazine\.1\.p2l\.info https?:\/\/([^\/]*\.)?phendimetrazine\.rx4\.org https?:\/\/([^\/]*\.)?phenergan\.rx4\.org https?:\/\/([^\/]*\.)?phenobarbital\.rx4\.org @@ -3763,6 +3838,7 @@ https?:\/\/([^\/]*\.)?phentermine-online\.b6\.to https?:\/\/([^\/]*\.)?phentermine-order\.199mb\.com https?:\/\/([^\/]*\.)?phentermine-pills\.wagoo\.com https?:\/\/([^\/]*\.)?phentermine-weight-loss\.eu\.kz +https?:\/\/([^\/]*\.)?phentermine\.1\.p2l\.info https?:\/\/([^\/]*\.)?phentermine\.b6\.to https?:\/\/([^\/]*\.)?phentermine\.chat\.ru https?:\/\/([^\/]*\.)?phentermine\.cjb\.net @@ -3874,9 +3950,12 @@ https?:\/\/([^\/]*\.)?prednisone\.rx4\.org https?:\/\/([^\/]*\.)?premarin\.rx4\.org https?:\/\/([^\/]*\.)?premarin\.undonet\.com https?:\/\/([^\/]*\.)?prescription-ambien\.hotusa\.org +https?:\/\/([^\/]*\.)?prevacid\.1\.p2l\.info https?:\/\/([^\/]*\.)?prevacid\.chat\.ru https?:\/\/([^\/]*\.)?prevacid\.rx4\.org https?:\/\/([^\/]*\.)?prevnar\.rx4\.org +https?:\/\/([^\/]*\.)?price-top\.com +https?:\/\/([^\/]*\.)?prilosec\.1\.p2l\.info https?:\/\/([^\/]*\.)?prilosec\.rx4\.org https?:\/\/([^\/]*\.)?princescruiselin\.boom\.ru https?:\/\/([^\/]*\.)?princescruiselin\.chat\.ru @@ -3896,6 +3975,7 @@ https?:\/\/([^\/]*\.)?projector2lamp\.chat\.ru https?:\/\/([^\/]*\.)?promethazine\.rx4\.org https?:\/\/([^\/]*\.)?promotional-gift\.newmail\.ru https?:\/\/([^\/]*\.)?promoz\.ipupdater\.com +https?:\/\/([^\/]*\.)?propecia\.1\.p2l\.info https?:\/\/([^\/]*\.)?propecia\.bump2me\.com https?:\/\/([^\/]*\.)?propecia\.chat\.ru https?:\/\/([^\/]*\.)?propecia\.rx4\.org @@ -3997,6 +4077,7 @@ https?:\/\/([^\/]*\.)?reliablevicodin\.com https?:\/\/([^\/]*\.)?relpax\.rx4\.org https?:\/\/([^\/]*\.)?remeron\.rx4\.org https?:\/\/([^\/]*\.)?renliziyuancn\.51\.net +https?:\/\/([^\/]*\.)?renova\.1\.p2l\.info https?:\/\/([^\/]*\.)?renova\.rbcmail\.ru https?:\/\/([^\/]*\.)?renova\.rx4\.org https?:\/\/([^\/]*\.)?rentersinsurance\.chat\.ru @@ -4014,6 +4095,7 @@ https?:\/\/([^\/]*\.)?restaurant-eq\.boom\.ru https?:\/\/([^\/]*\.)?restoril\.rx4\.org https?:\/\/([^\/]*\.)?rethyassociates\.net https?:\/\/([^\/]*\.)?rethyassociates\.org +https?:\/\/([^\/]*\.)?retin-a\.1\.p2l\.info https?:\/\/([^\/]*\.)?retin\.rx4\.org https?:\/\/([^\/]*\.)?rezeptfrei\.rx4\.org https?:\/\/([^\/]*\.)?rhinocort\.rx4\.org @@ -4126,6 +4208,7 @@ https?:\/\/([^\/]*\.)?se4u\.net https?:\/\/([^\/]*\.)?seamaxinc\.com https?:\/\/([^\/]*\.)?search88\.net https?:\/\/([^\/]*\.)?searcher\.cn +https?:\/\/([^\/]*\.)?seasonale\.1\.p2l\.info https?:\/\/([^\/]*\.)?seasonale\.rx4\.org https?:\/\/([^\/]*\.)?sec66\.com https?:\/\/([^\/]*\.)?secure-network\.info @@ -4287,6 +4370,8 @@ https?:\/\/([^\/]*\.)?sildenafil\.yoll\.net https?:\/\/([^\/]*\.)?siliconpulse\.info https?:\/\/([^\/]*\.)?simplyupside\.de https?:\/\/([^\/]*\.)?simvastatin\.rx4\.org +https?:\/\/([^\/]*\.)?sindyhalliday\.com +https?:\/\/([^\/]*\.)?sineto\.net https?:\/\/([^\/]*\.)?single-cruises\.hotmail\.ru https?:\/\/([^\/]*\.)?single4cruises\.chat\.ru https?:\/\/([^\/]*\.)?sinoart\.com\.cn @@ -4295,9 +4380,11 @@ https?:\/\/([^\/]*\.)?sinosyn\.com https?:\/\/([^\/]*\.)?sitit\.com https?:\/\/([^\/]*\.)?sjdd\.com\.cn https?:\/\/([^\/]*\.)?sjzyxh\.com +https?:\/\/([^\/]*\.)?skelaxin\.1\.p2l\.info https?:\/\/([^\/]*\.)?skelaxin\.chat\.ru https?:\/\/([^\/]*\.)?skelaxin\.rx4\.org https?:\/\/([^\/]*\.)?skf-baijia\.com +https?:\/\/([^\/]*\.)?skin-care\.1\.p2l\.info https?:\/\/([^\/]*\.)?skin-disease\.boom\.ru https?:\/\/([^\/]*\.)?skin-disease\.newmail\.ru https?:\/\/([^\/]*\.)?skin-treat\.boom\.ru @@ -4312,6 +4399,7 @@ https?:\/\/([^\/]*\.)?skincare\.freewebpage\.org https?:\/\/([^\/]*\.)?skivacation\.chat\.ru https?:\/\/([^\/]*\.)?skytv\.linkdata\.cn https?:\/\/([^\/]*\.)?slatersdvds\.co\.uk +https?:\/\/([^\/]*\.)?sleep-aids\.1\.p2l\.info https?:\/\/([^\/]*\.)?slot-machine\.hotmail\.ru https?:\/\/([^\/]*\.)?slot_machine\.chat\.ru https?:\/\/([^\/]*\.)?slots\.cjb\.net @@ -4335,12 +4423,14 @@ https?:\/\/([^\/]*\.)?software-engine\.org https?:\/\/([^\/]*\.)?software2network\.chat\.ru https?:\/\/([^\/]*\.)?soma-i\.6x\.to https?:\/\/([^\/]*\.)?soma-i\.freeservers\.com +https?:\/\/([^\/]*\.)?soma\.1\.p2l\.info https?:\/\/([^\/]*\.)?soma\.chat\.ru https?:\/\/([^\/]*\.)?soma\.cjb\.net https?:\/\/([^\/]*\.)?soma\.homelinux\.com https?:\/\/([^\/]*\.)?soma\.rx4\.org https?:\/\/([^\/]*\.)?soma\.smtp\.ru https?:\/\/([^\/]*\.)?somee\.com +https?:\/\/([^\/]*\.)?sonata\.1\.p2l\.info https?:\/\/([^\/]*\.)?sonata\.chat\.ru https?:\/\/([^\/]*\.)?sonata\.rx4\.org https?:\/\/([^\/]*\.)?songshangroup\.com @@ -4350,6 +4440,7 @@ https?:\/\/([^\/]*\.)?sooson\.com https?:\/\/([^\/]*\.)?sooyi\.com https?:\/\/([^\/]*\.)?sosdata\.freewebpage\.org https?:\/\/([^\/]*\.)?soundandmossl\.com +https?:\/\/([^\/]*\.)?southtecrepair\.com https?:\/\/([^\/]*\.)?spam--sex\.com https?:\/\/([^\/]*\.)?spam\.buyphentermine\.frwh\.net https?:\/\/([^\/]*\.)?spavacation\.chat\.ru @@ -4393,6 +4484,7 @@ https?:\/\/([^\/]*\.)?steroids\.rx4\.org https?:\/\/([^\/]*\.)?stilnox\.rx4\.org https?:\/\/([^\/]*\.)?stmaryonline\.org https?:\/\/([^\/]*\.)?stock-cn\.com +https?:\/\/([^\/]*\.)?stop-smoking\.1\.p2l\.info https?:\/\/([^\/]*\.)?stop-spyware\.fateback\.com https?:\/\/([^\/]*\.)?stories-on-cd\.net https?:\/\/([^\/]*\.)?stories-on-cd\.org @@ -4419,6 +4511,7 @@ https?:\/\/([^\/]*\.)?sunsetdreamscondo\.com https?:\/\/([^\/]*\.)?sunup\.com\.cn https?:\/\/([^\/]*\.)?suolide\.googlebaidu\.com https?:\/\/([^\/]*\.)?super-celebs\.com +https?:\/\/([^\/]*\.)?supplements\.1\.p2l\.info https?:\/\/([^\/]*\.)?surior\.za\.pl https?:\/\/([^\/]*\.)?surv-equipment\.boom\.ru https?:\/\/([^\/]*\.)?suttonjames\.net @@ -4517,6 +4610,7 @@ https?:\/\/([^\/]*\.)?sz-xwf\.com https?:\/\/([^\/]*\.)?sz686\.com https?:\/\/([^\/]*\.)?szgoldad\.com https?:\/\/([^\/]*\.)?szhx\.net +https?:\/\/([^\/]*\.)?szhxseo\.com https?:\/\/([^\/]*\.)?szlongshine\.com https?:\/\/([^\/]*\.)?szshinerich\.com https?:\/\/([^\/]*\.)?szsuun\.com @@ -4560,6 +4654,7 @@ https?:\/\/([^\/]*\.)?telfast\.rx4\.org https?:\/\/([^\/]*\.)?temazepam\.rx4\.org https?:\/\/([^\/]*\.)?tempurpedic\.vladimir\.su https?:\/\/([^\/]*\.)?tennesseevac\.chat\.ru +https?:\/\/([^\/]*\.)?tenuate\.1\.p2l\.info https?:\/\/([^\/]*\.)?tenuate\.chat\.ru https?:\/\/([^\/]*\.)?tenuate\.rx4\.org https?:\/\/([^\/]*\.)?terazosin\.rx4\.org @@ -4582,7 +4677,9 @@ https?:\/\/([^\/]*\.)?texas-holdem-play\.com https?:\/\/([^\/]*\.)?texas-holdem-play\.us https?:\/\/([^\/]*\.)?texas-holdem-poker\.fm\.interia\.pl https?:\/\/([^\/]*\.)?texas-holdem-poker\.tripod\.com +https?:\/\/([^\/]*\.)?texas-holdem-poker\.us\.com https?:\/\/([^\/]*\.)?texas-holdem-site\.tripod\.com +https?:\/\/([^\/]*\.)?texas-holdem-winner\.com https?:\/\/([^\/]*\.)?texas-holdem\.freeservers\.com https?:\/\/([^\/]*\.)?texas-holdem\.here\.ws https?:\/\/([^\/]*\.)?texas-holdem\.k9\.pl @@ -4635,6 +4732,7 @@ https?:\/\/([^\/]*\.)?tire-wheels\.boom\.ru https?:\/\/([^\/]*\.)?tires\.newmail\.ru https?:\/\/([^\/]*\.)?titanautoinsurance\.uni\.cc https?:\/\/([^\/]*\.)?title-loans\.6x\.to +https?:\/\/([^\/]*\.)?tizanidine\.1\.p2l\.info https?:\/\/([^\/]*\.)?tizanidine\.rx4\.org https?:\/\/([^\/]*\.)?tjwatch\.com https?:\/\/([^\/]*\.)?tlifeinsuranceq\.chat\.ru @@ -4652,6 +4750,9 @@ https?:\/\/([^\/]*\.)?tools-manufacturer\.org https?:\/\/([^\/]*\.)?top-adipex\.com https?:\/\/([^\/]*\.)?top-ambien\.com https?:\/\/([^\/]*\.)?top-firoicet\.com +https?:\/\/([^\/]*\.)?top-hold-em\.us +https?:\/\/([^\/]*\.)?top-holdem\.com +https?:\/\/([^\/]*\.)?top-holdem\.us https?:\/\/([^\/]*\.)?top-point\.net https?:\/\/([^\/]*\.)?top-poker-21\.com https?:\/\/([^\/]*\.)?top-poker-tables\.com @@ -4681,6 +4782,7 @@ https?:\/\/([^\/]*\.)?tragency\.boom\.ru https?:\/\/([^\/]*\.)?trailer-tire\.boom\.ru https?:\/\/([^\/]*\.)?tramadol-for-depression\.pt\.gs https?:\/\/([^\/]*\.)?tramadol-i\.freeservers\.com +https?:\/\/([^\/]*\.)?tramadol\.1\.p2l\.info https?:\/\/([^\/]*\.)?tramadol\.chat\.ru https?:\/\/([^\/]*\.)?tramadol\.cjb\.net https?:\/\/([^\/]*\.)?tramadol\.esmartbuyer\.com @@ -4735,6 +4837,7 @@ https?:\/\/([^\/]*\.)?trileptal\.rx4\.org https?:\/\/([^\/]*\.)?trimox\.rx4\.org https?:\/\/([^\/]*\.)?trimspa\.rx4\.org https?:\/\/([^\/]*\.)?tripak\.za\.pl +https?:\/\/([^\/]*\.)?triphasil\.1\.p2l\.info https?:\/\/([^\/]*\.)?tropical-cruise\.boom\.ru https?:\/\/([^\/]*\.)?tropical-cruise\.hotmail\.ru https?:\/\/([^\/]*\.)?tropicalvacation\.chat\.ru @@ -4774,9 +4877,11 @@ https?:\/\/([^\/]*\.)?ultimate-bet\.biz https?:\/\/([^\/]*\.)?ultimate-bet\.us https?:\/\/([^\/]*\.)?ultimate-betsite\.com https?:\/\/([^\/]*\.)?ultra-sex-videos\.com +https?:\/\/([^\/]*\.)?ultracet\.1\.p2l\.info https?:\/\/([^\/]*\.)?ultracet\.rx4\.org https?:\/\/([^\/]*\.)?ultram-tramadol\.grozny\.ru https?:\/\/([^\/]*\.)?ultram-tramadol\.mordovia\.ru +https?:\/\/([^\/]*\.)?ultram\.1\.p2l\.info https?:\/\/([^\/]*\.)?ultram\.b6\.to https?:\/\/([^\/]*\.)?ultram\.chat\.ru https?:\/\/([^\/]*\.)?ultram\.cjb\.net @@ -4850,10 +4955,12 @@ https?:\/\/([^\/]*\.)?valium\.webzdarma\.cz https?:\/\/([^\/]*\.)?valiumpharm\.home\.ro https?:\/\/([^\/]*\.)?valiumsource\.com https?:\/\/([^\/]*\.)?valoan\.chat\.ru +https?:\/\/([^\/]*\.)?valtrex\.1\.p2l\.info https?:\/\/([^\/]*\.)?valtrex\.chat\.ru https?:\/\/([^\/]*\.)?valtrex\.noneto\.com https?:\/\/([^\/]*\.)?valtrex\.rx4\.org https?:\/\/([^\/]*\.)?vancomycin\.rx4\.org +https?:\/\/([^\/]*\.)?vaniqa\.1\.p2l\.info https?:\/\/([^\/]*\.)?vaniqa\.chat\.ru https?:\/\/([^\/]*\.)?vaniqa\.rx4\.org https?:\/\/([^\/]*\.)?vardenafil\.rx4\.org @@ -4879,8 +4986,10 @@ https?:\/\/([^\/]*\.)?viagra-mail\.iredirector\.com https?:\/\/([^\/]*\.)?viagra-order\.iredirector\.com https?:\/\/([^\/]*\.)?viagra-pfizer\.iredirector\.com https?:\/\/([^\/]*\.)?viagra-site\.tripod\.com +https?:\/\/([^\/]*\.)?viagra-soft-tabs\.1\.p2l\.info https?:\/\/([^\/]*\.)?viagra-verkauf\.iredirector\.com https?:\/\/([^\/]*\.)?viagra-wirkung\.iredirector\.com +https?:\/\/([^\/]*\.)?viagra\.1\.p2l\.info https?:\/\/([^\/]*\.)?viagra\.b6\.to https?:\/\/([^\/]*\.)?viagra\.chat\.ru https?:\/\/([^\/]*\.)?viagra\.esmartbuyer\.com @@ -4906,14 +5015,17 @@ https?:\/\/([^\/]*\.)?vicodin\.za\.pl https?:\/\/([^\/]*\.)?vicodinonline\.home\.ro https?:\/\/([^\/]*\.)?vicoprofen\.rx4\.org https?:\/\/([^\/]*\.)?video-poker\.cjb\.net +https?:\/\/([^\/]*\.)?vietnamparadisetravel\.com https?:\/\/([^\/]*\.)?view--sex\.com https?:\/\/([^\/]*\.)?vigrx\.rx4\.org https?:\/\/([^\/]*\.)?vimax\.rx4\.org https?:\/\/([^\/]*\.)?violent--sex\.com +https?:\/\/([^\/]*\.)?vioxx\.1\.p2l\.info https?:\/\/([^\/]*\.)?vioxx\.3d-game\.com https?:\/\/([^\/]*\.)?vioxx\.chat\.ru https?:\/\/([^\/]*\.)?vioxx\.rx4\.org https?:\/\/([^\/]*\.)?virgin-sexy\.com +https?:\/\/([^\/]*\.)?vitalitymax\.1\.p2l\.info https?:\/\/([^\/]*\.)?vitamin\.chat\.ru https?:\/\/([^\/]*\.)?vivaful\.com https?:\/\/([^\/]*\.)?vod-solutions\.com @@ -4972,7 +5084,9 @@ https?:\/\/([^\/]*\.)?webuspharmacy\.lidonet\.net https?:\/\/([^\/]*\.)?wecony\.com https?:\/\/([^\/]*\.)?wedding-knot\.com https?:\/\/([^\/]*\.)?weekly-pay\.com +https?:\/\/([^\/]*\.)?weight-loss\.1\.p2l\.info https?:\/\/([^\/]*\.)?welded-wire-mesh\.com +https?:\/\/([^\/]*\.)?wellbutrin\.1\.p2l\.info https?:\/\/([^\/]*\.)?wellbutrin\.chat\.ru https?:\/\/([^\/]*\.)?wellbutrin\.fromru\.com https?:\/\/([^\/]*\.)?wellbutrin\.rx4\.org @@ -5216,6 +5330,7 @@ https?:\/\/([^\/]*\.)?xanaxreliable\.com https?:\/\/([^\/]*\.)?xanex\.chat\.ru https?:\/\/([^\/]*\.)?xeboo\.com https?:\/\/([^\/]*\.)?xenadrine\.rx4\.org +https?:\/\/([^\/]*\.)?xenical\.1\.p2l\.info https?:\/\/([^\/]*\.)?xenical\.rx4\.org https?:\/\/([^\/]*\.)?xenical\.undonet\.com https?:\/\/([^\/]*\.)?xenical\.za\.pl @@ -5241,6 +5356,7 @@ https?:\/\/([^\/]*\.)?xnan2\.91x\.net https?:\/\/([^\/]*\.)?xolair\.rx4\.org https?:\/\/([^\/]*\.)?xrnet\.cn https?:\/\/([^\/]*\.)?xsjby\.cn +https?:\/\/([^\/]*\.)?xt168\.com https?:\/\/([^\/]*\.)?xudianchi\.sinoar\.com\.cn https?:\/\/([^\/]*\.)?xunizhuji\.51\.net https?:\/\/([^\/]*\.)?xuzhouren\.com @@ -5254,6 +5370,7 @@ https?:\/\/([^\/]*\.)?ya-ke\.net https?:\/\/([^\/]*\.)?yanchanghui\.51\.net https?:\/\/([^\/]*\.)?yasicn\.51\.net https?:\/\/([^\/]*\.)?yasipeixun\.51\.net +https?:\/\/([^\/]*\.)?yasmin\.1\.p2l\.info https?:\/\/([^\/]*\.)?yasmin\.rx4\.org https?:\/\/([^\/]*\.)?ychzn\.com https?:\/\/([^\/]*\.)?yeeyoo\.com @@ -5288,6 +5405,7 @@ https?:\/\/([^\/]*\.)?yokohama-tire\.boom\.ru https?:\/\/([^\/]*\.)?yomilf\.com https?:\/\/([^\/]*\.)?youll\.com\.cn https?:\/\/([^\/]*\.)?young--fuckers\.com +https?:\/\/([^\/]*\.)?youngshemalesex\.com https?:\/\/([^\/]*\.)?youqicn\.51\.net https?:\/\/([^\/]*\.)?your--sex\.com https?:\/\/([^\/]*\.)?your-onlinepharmacy\.com @@ -5301,7 +5419,9 @@ https?:\/\/([^\/]*\.)?yuzhiguang\.com https?:\/\/([^\/]*\.)?yx-colorweaving\.com https?:\/\/([^\/]*\.)?z--sex\.com https?:\/\/([^\/]*\.)?z100\.boom\.ru +https?:\/\/([^\/]*\.)?z411\.net https?:\/\/([^\/]*\.)?zalaszentgrot\.com +https?:\/\/([^\/]*\.)?zanaflex\.1\.p2l\.info https?:\/\/([^\/]*\.)?zanaflex\.chat\.ru https?:\/\/([^\/]*\.)?zanaflex\.rx4\.org https?:\/\/([^\/]*\.)?zantac\.rx4\.org @@ -5310,6 +5430,7 @@ https?:\/\/([^\/]*\.)?zaraza\.za\.pl https?:\/\/([^\/]*\.)?zcfounder\.com https?:\/\/([^\/]*\.)?zchb\.com https?:\/\/([^\/]*\.)?zctq\.com +https?:\/\/([^\/]*\.)?zebutal\.1\.p2l\.info https?:\/\/([^\/]*\.)?zebutal\.chat\.ru https?:\/\/([^\/]*\.)?zelnorm\.rx4\.org https?:\/\/([^\/]*\.)?zenical\.rx4\.org @@ -5360,6 +5481,7 @@ https?:\/\/([^\/]*\.)?znpp\.com https?:\/\/([^\/]*\.)?zocor\.chat\.ru https?:\/\/([^\/]*\.)?zocor\.rx4\.org https?:\/\/([^\/]*\.)?zocor\.sinfree\.net +https?:\/\/([^\/]*\.)?zoloft\.1\.p2l\.info https?:\/\/([^\/]*\.)?zoloft\.bebto\.com https?:\/\/([^\/]*\.)?zoloft\.chat\.ru https?:\/\/([^\/]*\.)?zoloft\.rx4\.org @@ -5386,12 +5508,14 @@ https?:\/\/([^\/]*\.)?zyban-buy-8\.atspace\.com https?:\/\/([^\/]*\.)?zyban-order-6\.atspace\.com https?:\/\/([^\/]*\.)?zyban-pills-6\.atspace\.com https?:\/\/([^\/]*\.)?zyban-pills-8\.atspace\.com +https?:\/\/([^\/]*\.)?zyban\.1\.p2l\.info https?:\/\/([^\/]*\.)?zyban\.chat\.ru https?:\/\/([^\/]*\.)?zyban\.rx4\.org https?:\/\/([^\/]*\.)?zydone\.rx4\.org https?:\/\/([^\/]*\.)?zygua\.com https?:\/\/([^\/]*\.)?zyname\.com https?:\/\/([^\/]*\.)?zyprexa\.rx4\.org +https?:\/\/([^\/]*\.)?zyrtec\.1\.p2l\.info https?:\/\/([^\/]*\.)?zyrtec\.chat\.ru https?:\/\/([^\/]*\.)?zyrtec\.rx4\.org https?:\/\/([^\/]*\.)?zytemp\.com\.cn diff --git a/data/.htaccess b/data/.htaccess deleted file mode 100644 index 9c96d3742..000000000 --- a/data/.htaccess +++ /dev/null @@ -1,2 +0,0 @@ -order allow,deny -deny from all diff --git a/data/media/.htaccess b/data/media/.htaccess new file mode 100644 index 000000000..9c96d3742 --- /dev/null +++ b/data/media/.htaccess @@ -0,0 +1,2 @@ +order allow,deny +deny from all diff --git a/data/media/wiki/dokuwiki-128.png b/data/media/wiki/dokuwiki-128.png new file mode 100644 index 000000000..b2306ac95 Binary files /dev/null and b/data/media/wiki/dokuwiki-128.png differ diff --git a/data/pages/.htaccess b/data/pages/.htaccess new file mode 100644 index 000000000..9c96d3742 --- /dev/null +++ b/data/pages/.htaccess @@ -0,0 +1,2 @@ +order allow,deny +deny from all diff --git a/data/pages/wiki/dokuwiki.txt b/data/pages/wiki/dokuwiki.txt new file mode 100644 index 000000000..ba3b429cd --- /dev/null +++ b/data/pages/wiki/dokuwiki.txt @@ -0,0 +1,44 @@ +====== DokuWiki ====== + +[[doku>wiki:dokuwiki|{{wiki:dokuwiki-128.png }}]] DokuWiki is a standards compliant, simple to use [[wp>Wiki]], mainly aimed at creating documentation of any kind. It is targeted at developer teams, workgroups and small companies. It has a simple but powerful [[wiki:syntax]] which makes sure the datafiles remain readable outside the Wiki and eases the creation of structured texts. All data is stored in plain text files -- no database is required. + +===== Download ===== + +DokuWiki is available at http://www.splitbrain.org/go/dokuwiki + +===== Read More ===== + +All documentation and additional information besides the [[syntax|syntax description]] is maintained in the DokuWiki at [[doku>wiki:dokuwiki|wiki.splitbrain.org]]. + + * [[doku>wiki:news|News and Announcements]] + * [[doku>wiki:features|Features]] + * [[doku>wiki:requirements|System Requirements]] + * [[doku>wiki:compatibility|Browser Compatibility]] + * [[doku>wiki:Install|How to install or upgrade]] + * [[doku>wiki:config|Configuration]] + * [[doku>wiki:FAQ|Frequently Asked Questions (FAQ)]] + * [[doku>wiki:accesskeys|Accesskeys]] + + * [[doku>wiki:discussion:discussion|Discussion]] + * [[doku>wiki:users|DokuWiki Users]] + * [[doku>wiki:compare|Wiki Engine Comparison]] + * [[doku>wiki:experiences|Experiences]] + * [[doku>wiki:tips|Tips and Tricks]] + + * [[http://bugs.splitbrain.org/index.php?project=1|Bugs and feature wishes]] + * [[doku>wiki:mailinglist|Mailing List]] + + * [[doku>wiki:todo|ToDo List]] + * [[doku>wiki:development|Development Resources]] + * [[doku>wiki:changes|Change Log]] + * [[doku>wiki:thanks|Thanks]] + +===== Copyright ===== + +2004-2005 (c) Andreas Gohr + +The DokuWiki engine is licensend under [[http://www.gnu.org/licenses/gpl.html|GNU General Public License]] Version 2. If you use DokuWiki in your company, consider donating a few bucks to me via [[https://www.paypal.com/xclick/business=andi%40splitbrain.org&item_name=DokuWiki+Donation&no_shipping=1&no_note=1&tax=0&currency_code=EUR&lc=US|PayPal]] ;-). + +The content published in the DokuWiki at http://www.splitbrain.org/dokuwiki/ is licensed under the [[http://creativecommons.org/licenses/by-nc-sa/2.0/|Creative Commons Attribution-NonCommercial-ShareAlike License]] Version 2.0. This is true for all content (files inside the ''data'' directory) distributed in the download tarball, too. + +Not sure what this means? See the [[doku>wiki:faq#licenses_explained|FAQ on the Licenses]]. \ No newline at end of file diff --git a/data/pages/wiki/syntax.txt b/data/pages/wiki/syntax.txt new file mode 100644 index 000000000..924eed449 --- /dev/null +++ b/data/pages/wiki/syntax.txt @@ -0,0 +1,362 @@ +====== Formatting Syntax ====== + +[[wiki:DokuWiki]] supports some simple markup language, which tries to make the datafiles to be as readable as possible. This page contains all possible syntax you may use when editing the pages. Simply have a look at the source of this page by pressing the //Edit this page// button at the top or bottom of the page. If you want to try something, just use the [[playground]] page. The simpler markup is easily accessible via [[doku>wiki:quickbuttons|quickbuttons]], too. + +===== Basic text formatting ===== + +DokuWiki supports **bold**, //italic//, __underlined__ and ''monospaced'' texts. Of course you can **__//''combine''//__** all these. + + DokuWiki supports **bold**, //italic//, __underlined__ and ''monospaced'' texts. + Of course you can **__//''combine''//__** all these. + +You can use subscript and superscript, too. + + You can use subscript and superscript, too. + +You can mark something as deleted as well. + + You can mark something as deleted as well. + +**Paragraphs** are created from blank lines. If you want to **force a newline** without a paragraph, you can use two backslashes followed by a whitespace or the end of line. + +This is some text with some linebreaks\\ Note that the +two backslashes are only recognized at the end of a line\\ +or followed by\\ a whitespace \\this happens without it. + + This is some text with some linebreaks\\ Note that the + two backslashes are only recognized at the end of a line\\ + or followed by\\ a whitespace \\this happens without it. + +You should use forced newlines only if really needed. + +===== Links ===== + +DokuWiki supports multiple ways of creating links. + +==== External ==== + +External links are recognized automagically: http://www.google.com or simply www.google.com - You can set Linknames, too: [[http://www.google.com|This Link points to google]]. Email addresses like this one: are recognized, too. + + DokuWiki supports multiple ways of creating links. External links are recognized + automagically: http://www.google.com or simply www.google.com - You can set + Linknames, too: [[http://www.google.com|This Link points to google]]. Email + addresses like this one: are recognized, too. + +==== Internal ==== + +Internal links are created by using square brackets. You can either just give a [[doku>wiki:pagename]] or use an additional [[doku>wiki:pagename|Title Text]]. Wiki pagenames are converted to lowercase automatically, special characters are not allowed. + + Internal links are created by using square brackets. You can either just give + a [[pagename]] or use an additional [[pagename|Title Text]]. Wiki pagenames + are converted to lowercase automatically, special chars are not allowed. + +You can use [[wiki:namespaces]] by using a colon in the pagename. + + You can use [[wiki:namespaces]] by using a colon in the pagename. + +For details about namespaces see [[doku>wiki:namespaces]]. + +Linking to a specific section is possible, too. Just add the sectionname behind a hash character as known from HTML. This links to [[syntax#internal|this Section]]. + + This links to [[syntax#internal|this Section]]. + +Notes: + + * Links to [[wiki:syntax|existing pages]] are shown in a different style from [[wiki:nonexisting]] ones. + * DokuWiki does not use [[wp>CamelCase]] to automatically create links by default, but this behaviour can be enabled in the [[doku>config]] file. Hint: If DokuWiki is a link, then it's enabled. + * When a section's heading is changed, it's bookmark changes, too. So don't rely on section linking too much. + +==== Interwiki ==== + +DokuWiki supports [[doku>wiki:interwiki|Interwiki]] links. These are quick links to other Wikis. For example this is a link to Wikipedia's page about Wikis: [[wp>Wiki]]. + + DokuWiki supports [[doku>wiki:interwiki|Interwiki]] links. These are quick links to other Wikis. + For example this is a link to Wikipedia's page about Wikis: [[wp>Wiki]]. + +==== Windows Shares ==== + +Windows shares like [[\\server\share|this]] are recognized, too. Please note that these only make sense in a homogenous user group like a corporate [[wp>Intranet]]. + + Windows Shares like [[\\server\share|this]] are recognized, too. + +Notes: + + * For security reasons direct browsing of windows shares only works in Microsoft Internet Explorer per default (and only in the "local zone"). + * For Mozilla and Firefox it can be enabled through the config option [[http://www.mozilla.org/quality/networking/docs/netprefs.html#file|security.checkloaduri]] but this is not recommended + * See [[bug>151]] for more info + +==== Image Links ==== + +You can also use an image to link to another internal or external page by combining the syntax for links and images (see below) like this: + + [[http://www.php.net|{{wiki:dokuwiki-128.png}}]] + +[[http://www.php.net|{{wiki:dokuwiki-128.png}}]] + +Please note: The image formatting is the only formatting syntax accepted in link names. + +===== Footnotes ===== + +You can add footnotes ((This is a footnote)) by using double parenthesises. + + You can add footnotes ((This is a footnote)) by using double parenthesises. + +===== Sectioning ===== + +You can use up to five different levels of headlines to structure your content. If you have more than three headlines, a table of contents is generated automatically -- this can be disabled by including the string ''~~NOTOC~~'' in the document. + +==== Headline Level 3 ==== +=== Headline Level 4 === +== Headline Level 5 == + + ==== Headline Level 3 ==== + === Headline Level 4 === + == Headline Level 5 == + +By using four or more dashes, you can make a horizontal line: + +---- + +===== Images and other files ===== + +You can include external and internal [[doku>images]] with curly brackets. Optionally you can specify the size of them. + +Real size: {{wiki:dokuwiki-128.png}} + +Resize to given width: {{wiki:dokuwiki-128.png?50}} + +Resize to given width and height: {{wiki:dokuwiki-128.png?200x50}} + +Resized external image: {{http://de3.php.net/images/php.gif?200x50}} + + Real size: {{wiki:dokuwiki-128.png}} + Resize to given width: {{wiki:dokuwiki-128.png?50}} + Resize to given width and height: {{wiki:dokuwiki-128.png?200x50}} + Resized external image: {{http://de3.php.net/images/php.gif?200x50}} + + +By using left or right whitespaces you can choose the alignment + +{{ wiki:dokuwiki-128.png}} + +{{wiki:dokuwiki-128.png }} + +{{ wiki:dokuwiki-128.png }} + + {{ wiki:dokuwiki-128.png}} + {{wiki:dokuwiki-128.png }} + {{ wiki:dokuwiki-128.png }} + +Of course, you can add a title (displayed as a tooltip by most browsers), too. + +{{ wiki:dokuwiki-128.png |This is the caption}} + + {{ wiki:dokuwiki-128.png |This is the caption}} + +If you specify a filename (external or internal) that is not an image (''gif,jpeg,png''), then it will be displayed as a link instead. + +===== Lists ===== + +Dokuwiki supports ordered and unordered lists. To create a list item, indent your text by two spaces and use a ''*'' for unordered lists or a ''-'' for ordered ones. + + * This is a list + * The second item + * You may have different levels + * Another item + + - The same list but ordered + - Another item + - Just use indention for deeper levels + - That's it + + + * This is a list + * The second item + * You may have different levels + * Another item + + - The same list but ordered + - Another item + - Just use indention for deeper levels + - That's it + + +===== Smileys ===== + +DokuWiki converts commonly used [[wp>emoticon]]s to their graphical equivalents. More smileys can be placed in the ''smiley'' directory and configured in the ''conf/smileys.conf'' file. Here is an overview of Smileys included in DokuWiki. + + * 8-) %% 8-) %% + * 8-O %% 8-O %% + * :-( %% :-( %% + * :-) %% :-) %% + * =) %% =) %% + * :-/ %% :-/ %% + * :-\ %% :-\ %% + * :-? %% :-? %% + * :-D %% :-D %% + * :-P %% :-P %% + * :-O %% :-O %% + * :-X %% :-X %% + * :-| %% :-| %% + * ;-) %% ;-) %% + * ^_^ %% ^_^ %% + * :?: %% :?: %% + * :!: %% :!: %% + * LOL %% LOL %% + * FIXME %% FIXME %% + * DELETEME %% DELETEME %% + +===== Typography ===== + +[[DokuWiki]] can convert simple text characters to their typographically correct entities. Here is an example of recognized characters. + +-> <- <-> => <= <=> >> << -- --- 640x480 (c) (tm) (r) +"He thought 'It's a man's world'..." + + +-> <- <-> => <= <=> >> << -- --- 640x480 (c) (tm) (r) +"He thought 'It's a man's world'..." + + +Please note: These conversions can be turned off in the config file. + +===== Quoting ===== + +Some times you want to mark some text to show it's a reply or comment. You can use the following syntax: + + I think we should do it + + > No we shouldn't + + >> Well, I say we should + + > Really? + + >> Yes! + + >>> Then lets do it! + +I think we should do it + +> No we shouldn't + +>> Well, I say we should + +> Really? + +>> Yes! + +>>> Then lets do it! + +===== Tables ===== + +DokuWiki supports a simple syntax to create tables. + +^ Heading 1 ^ Heading 2 ^ Heading 3 ^ +| Row 1 Col 1 | Row 1 Col 2 | Row 1 Col 3 | +| Row 2 Col 1 | some colspan (note the double pipe) || +| Row 3 Col 1 | Row 2 Col 2 | Row 2 Col 3 | + +Table rows have to start and end with a ''|'' for normal rows or a ''^'' for headers. + + ^ Heading 1 ^ Heading 2 ^ Heading 3 ^ + | Row 1 Col 1 | Row 1 Col 2 | Row 1 Col 3 | + | Row 2 Col 1 | some colspan (note the double pipe) || + | Row 3 Col 1 | Row 2 Col 2 | Row 2 Col 3 | + +To connect cells horizontally, just make the next cell completely empty as shown above. Be sure to have always the same amount of cell separators! + +Vertical tableheaders are possible, too. + +| ^ Heading 1 ^ Heading 2 ^ +^ Heading 3 | Row 1 Col 2 | Row 1 Col 3 | +^ Heading 4 | no colspan this time | | +^ Heading 5 | Row 2 Col 2 | Row 2 Col 3 | + +As you can see, it's the cell separator before a cell which decides about the formatting: + + | ^ Heading 1 ^ Heading 2 ^ + ^ Heading 3 | Row 1 Col 2 | Row 1 Col 3 | + ^ Heading 4 | no colspan this time | | + ^ Heading 5 | Row 2 Col 2 | Row 2 Col 3 | + +Note: Vertical spans (rowspan) are not possible. + +You can align the table contents, too. Just add at least two whitespaces at the opposite end of your text: Add two spaces on the left to align right, two spaces on the right to align left and two spaces at least at both ends for centered text. + +^ Table with alignment ^^^ +| right| center |left | +|left | right| center | +| xxxxxxxxxxxx | xxxxxxxxxxxx | xxxxxxxxxxxx | + +This is how it looks in the source: + + ^ Table with alignment ^^^ + | right| center |left | + |left | right| center | + | xxxxxxxxxxxx | xxxxxxxxxxxx | xxxxxxxxxxxx | + +===== Nonparsed Blocks ===== + +You can include non parsed blocks into your documents by either indenting them by at least two spaces (like used for the previous examples) or by using the tags ''code'' or ''file''. + + +This is preformatted code all spaces are preserved: like <-this + + + +This is pretty much the same, but you could use it to show that you quoted a file. + + +To let the parser ignore an area completely (ie. do no formatting on it), enclose the area either with ''nowiki'' tags or even simpler, with double percent signs ''%%''. + + +This is some text which contains addresses like this: http://www.splitbrain.org and **formatting**, but nothing is done with it. + + +See the source of this page to see how to use these blocks. + +===== Syntax Highlighting ===== + +[[DokuWiki]] can highlight sourcecode, which makes it easier to read. It uses the [[http://qbnz.com/highlighter/|GeSHi]] Generic Syntax Highlighter -- so any language supported by GeSHi is supported. The syntax is the same like in the code block in the previous section, but this time the name of the used language is inserted inside the tag. Eg. ''''. + + +/** + * The HelloWorldApp class implements an application that + * simply displays "Hello World!" to the standard output. + */ +class HelloWorldApp { + public static void main(String[] args) { + System.out.println("Hello World!"); //Display the string. + } +} + + +The following language strings are currently recognized: //actionscript, ada, apache, asm, asp, bash, caddcl, cadlisp, c, c_mac, cpp, csharp, css, delphi, html4strict, java, javascript, lisp, lua, mpasm, nsis, objc, oobas, oracle8, pascal, perl, php-brief, php, python, qbasic, smarty, sql, vb, vbnet, visualfoxpro, xml// + +===== Embedding HTML and PHP ===== + +You can embed raw HTML or PHP code into your documents by using the ''html'' or ''php'' tags like this: + + +This is some HTML + + + + +This is some HTML + + + + +echo 'A logo generated by PHP:'; +echo 'PHP Logo !'; + + + + +echo 'A logo generated by PHP:'; +echo 'PHP Logo !'; + + +**Please Note**: HTML and PHP embedding is disabled by default in the configuration. If disabled, the code is displayed instead of executed. \ No newline at end of file diff --git a/data/wiki/dokuwiki.txt b/data/wiki/dokuwiki.txt deleted file mode 100644 index 658a08007..000000000 --- a/data/wiki/dokuwiki.txt +++ /dev/null @@ -1,44 +0,0 @@ -====== DokuWiki ====== - -[[doku>wiki:dokuwiki|{{wiki:dokuwiki-128.png }}]] DokuWiki is a standards compliant, simple to use [[wp>Wiki]], mainly aimed at creating documentation of any kind. It is targeted at developer teams, workgroups and small companies. It has a simple but powerful [[wiki:syntax]] which makes sure the datafiles remain readable outside the Wiki and eases the creation of structured texts. All data is stored in plain text files -- no database is required. - -===== Download ===== - -DokuWiki is available at http://www.splitbrain.org/go/dokuwiki - -===== Read More ===== - -All documentation and additional information besides the [[syntax|syntax description]] is now maintained in the DokuWiki at [[doku>wiki:dokuwiki|splitbrain]] only and not included in the releases anymore. - - * [[doku>wiki:news|News and Announcements]] - * [[doku>wiki:features|Features]] - * [[doku>wiki:requirements|System Requirements]] - * [[doku>wiki:compatibility|Browser Compatibility]] - * [[doku>wiki:Install|How to install or upgrade]] - * [[doku>wiki:config|Configuration]] - * [[doku>wiki:FAQ|Frequently Asked Questions (FAQ)]] - * [[doku>wiki:accesskeys|Accesskeys]] - - * [[doku>wiki:discussion:discussion|Discussion]] - * [[doku>wiki:users|DokuWiki Users]] - * [[doku>wiki:compare|Wiki Engine Comparison]] - * [[doku>wiki:experiences|Experiences]] - * [[doku>wiki:tips|Tips and Tricks]] - - * [[http://bugs.splitbrain.org/index.php?project=1|Bugs and feature wishes]] - * [[doku>wiki:mailinglist|Mailing List]] - - * [[doku>wiki:todo|ToDo List]] - * [[doku>wiki:development|Development Ressources]] - * [[doku>wiki:changes|Change Log]] - * [[doku>wiki:thanks|Thanks]] - -===== Copyright ===== - -2004-2005 (c) Andreas Gohr - -The DokuWiki engine is licensend under [[http://www.gnu.org/licenses/gpl.html|GNU General Public License]] Version 2. If you use DokuWiki in your company, consider donating a few bucks to me via [[https://www.paypal.com/xclick/business=andi%40splitbrain.org&item_name=DokuWiki+Donation&no_shipping=1&no_note=1&tax=0&currency_code=EUR&lc=US|PayPal]] ;-). - -The content published in the DokuWiki at http://www.splitbrain.org/dokuwiki/ is licensed under the [[http://creativecommons.org/licenses/by-nc-sa/2.0/|Creative Commons Attribution-NonCommercial-ShareAlike License]] Version 2.0. This is true for all content (files inside the ''data'' directory) distributed in the download tarball, too. - -Not sure what this means? See the [[doku>wiki:faq#licenses_explained|FAQ on the Licenses]]. \ No newline at end of file diff --git a/data/wiki/syntax.txt b/data/wiki/syntax.txt deleted file mode 100644 index 6ae657568..000000000 --- a/data/wiki/syntax.txt +++ /dev/null @@ -1,362 +0,0 @@ -====== Formatting Syntax ====== - -[[wiki:DokuWiki]] supports some simple markup language, which tries to make the datafiles to be as readable as possible. This page contains all possible syntax you may use when editing the pages. Simply have a look at the source of this page by pressing the //Edit this page// button at the top or bottom of the page. If you want to try something, just use the [[playground]] page. The simpler markup is easily accessible via [[doku>wiki:quickbuttons|quickbuttons]], too. - -===== Basic text formatting ===== - -DokuWiki supports **bold**, //italic//, __underlined__ and ''monospaced'' texts. Of course you can **__//''combine''//__** all these. - - DokuWiki supports **bold**, //italic//, __underlined__ and ''monospaced'' texts. - Of course you can **__//''combine''//__** all these. - -You can use subscript and superscript, too. - - You can use subscript and superscript, too. - -You can mark something as deleted as well. - - You can mark something as deleted as well. - -**Paragraphs** are created from blank lines. If you want to **force a newline** without a paragraph, you can use two backslashes followed by a whitespace or the end of line. - -This is some text with some linebreaks\\ Note that the -two backslashes are only recognized at the end of a line\\ -or followed by\\ a whitespace \\this happens without it. - - This is some text with some linebreaks\\ Note that the - two backslashes are only recognized at the end of a line\\ - or followed by\\ a whitespace \\this happens without it. - -You should use forced newlines only if really needed. - -===== Links ===== - -DokuWiki supports multiple ways of creating links. - -==== External ==== - -External links are recognized automagically: http://www.google.com or simply www.google.com - You can set Linknames, too: [[http://www.google.com|This Link points to google]]. Email addresses like this one: are recognized, too. - - DokuWiki supports multiple ways of creating links. External links are recognized - automagically: http://www.google.com or simply www.google.com - You can set - Linknames, too: [[http://www.google.com|This Link points to google]]. Email - addresses like this one: are recognized, too. - -==== Internal ==== - -Internal links are created by using square brackets. You can either just give a [[doku>wiki:pagename]] or use an additional [[doku>wiki:pagename|Title Text]]. Wiki pagenames are converted to lowercase automatically, special characters are not allowed. - - Internal links are created by using square brackets. You can either just give - a [[pagename]] or use an additional [[pagename|Title Text]]. Wiki pagenames - are converted to lowercase automatically, special chars are not allowed. - -You can use [[wiki:namespaces]] by using a colon in the pagename. - - You can use [[wiki:namespaces]] by using a colon in the pagename. - -For details about namespaces see [[doku>wiki:namespaces]]. - -Linking to a specific section is possible, too. Just add the sectionname behind a hash character as known from HTML. This links to [[syntax#internal|this Section]]. - - This links to [[syntax#internal|this Section]]. - -Notes: - - * Links to [[wiki:syntax|existing pages]] are shown in a different style from [[wiki:nonexisting]] ones. - * DokuWiki does not use [[wp>CamelCase]] to automatically create links by default, but this behaviour can be enabled in the [[doku>config]] file. Hint: If DokuWiki is a link, then it's enabled. - * When a section's heading is changed, it's bookmark changes, too. So don't rely on section linking too much. - -==== Interwiki ==== - -DokuWiki supports [[doku>wiki:interwiki]] links. These are quick links to other Wikis. For example this is a link to Wikipedia's page about Wikis: [[wp>Wiki]]. - - DokuWiki supports [[doku>wiki:interwiki]] links. These are quick links to other Wikis. - For example this is a link to Wikipedia's page about Wikis: [[wp>Wiki]]. - -==== Windows Shares ==== - -Windows shares like [[\\server\share|this]] are recognized, too. Please note that these only make sense in a homogenous user group like a corporate [[wp>Intranet]]. - - Windows Shares like [[\\server\share|this]] are recognized, too. - -Notes: - - * For security reasons direct browsing of windows shares only works in Microsoft Internet Explorer per default (and only in the "local zone"). - * For Mozilla and Firefox it can be enabled through the config option [[http://www.mozilla.org/quality/networking/docs/netprefs.html#file|security.checkloaduri]] but this is not recommended - * See [[bug>151]] for more info - -==== Image Links ==== - -You can also use an image to link to another internal or external page by combining the syntax for links and images (see below) like this: - - [[http://www.php.net|{{wiki:dokuwiki-128.png}}]] - -[[http://www.php.net|{{wiki:dokuwiki-128.png}}]] - -Please note: The image formatting is the only formatting syntax accepted in link names. - -===== Footnotes ===== - -You can add footnotes ((This is a footnote)) by using double parenthesises. - - You can add footnotes ((This is a footnote)) by using double parenthesises. - -===== Sectioning ===== - -You can use up to five different levels of headlines to structure your content. If you have more than three headlines, a table of contents is generated automatically -- this can be disabled by including the string ''~~NOTOC~~'' in the document. - -==== Headline Level 3 ==== -=== Headline Level 4 === -== Headline Level 5 == - - ==== Headline Level 3 ==== - === Headline Level 4 === - == Headline Level 5 == - -By using four or more dashes, you can make a horizontal line: - ----- - -===== Images and other files ===== - -You can include external and internal [[doku>images]] with curly brackets. Optionally you can specify the size of them. - -Real size: {{wiki:dokuwiki-128.png}} - -Resize to given width: {{wiki:dokuwiki-128.png?50}} - -Resize to given width and height: {{wiki:dokuwiki-128.png?200x50}} - -Resized external image: {{http://de3.php.net/images/php.gif?200x50}} - - Real size: {{wiki:dokuwiki-128.png}} - Resize to given width: {{wiki:dokuwiki-128.png?50}} - Resize to given width and height: {{wiki:dokuwiki-128.png?200x50}} - Resized external image: {{http://de3.php.net/images/php.gif?200x50}} - - -By using left or right whitespaces you can choose the alignment - -{{ wiki:dokuwiki-128.png}} - -{{wiki:dokuwiki-128.png }} - -{{ wiki:dokuwiki-128.png }} - - {{ wiki:dokuwiki-128.png}} - {{wiki:dokuwiki-128.png }} - {{ wiki:dokuwiki-128.png }} - -Of course, you can add a title (displayed as a tooltip by most browsers), too. - -{{ wiki:dokuwiki-128.png |This is the caption}} - - {{ wiki:dokuwiki-128.png |This is the caption}} - -If you specify a filename (external or internal) that is not an image (''gif,jpeg,png''), then it will be displayed as a link instead. - -===== Lists ===== - -Dokuwiki supports ordered and unordered lists. To create a list item, indent your text by two spaces and use a ''*'' for unordered lists or a ''-'' for ordered ones. - - * This is a list - * The second item - * You may have different levels - * Another item - - - The same list but ordered - - Another item - - Just use indention for deeper levels - - That's it - - - * This is a list - * The second item - * You may have different levels - * Another item - - - The same list but ordered - - Another item - - Just use indention for deeper levels - - That's it - - -===== Smileys ===== - -DokuWiki converts commonly used [[wp>emoticon]]s to their graphical equivalents. More smileys can be placed in the ''smiley'' directory and configured in the ''conf/smileys.conf'' file. Here is an overview of Smileys included in DokuWiki. - - * 8-) %% 8-) %% - * 8-O %% 8-O %% - * :-( %% :-( %% - * :-) %% :-) %% - * =) %% =) %% - * :-/ %% :-/ %% - * :-\ %% :-\ %% - * :-? %% :-? %% - * :-D %% :-D %% - * :-P %% :-P %% - * :-O %% :-O %% - * :-X %% :-X %% - * :-| %% :-| %% - * ;-) %% ;-) %% - * ^_^ %% ^_^ %% - * :?: %% :?: %% - * :!: %% :!: %% - * LOL %% LOL %% - * FIXME %% FIXME %% - * DELETEME %% DELETEME %% - -===== Typography ===== - -[[DokuWiki]] can convert simple text characters to their typographically correct entities. Here is an example of recognized characters. - --> <- <-> => <= <=> >> << -- --- 640x480 (c) (tm) (r) -"He thought 'It's a man's world'..." - - --> <- <-> => <= <=> >> << -- --- 640x480 (c) (tm) (r) -"He thought 'It's a man's world'..." - - -Please note: These conversions can be turned off in the config file. - -===== Quoting ===== - -Some times you want to mark some text to show it's a reply or comment. You can use the following syntax: - - I think we should do it - - > No we shouldn't - - >> Well, I say we should - - > Really? - - >> Yes! - - >>> Then lets do it! - -I think we should do it - -> No we shouldn't - ->> Well, I say we should - -> Really? - ->> Yes! - ->>> Then lets do it! - -===== Tables ===== - -DokuWiki supports a simple syntax to create tables. - -^ Heading 1 ^ Heading 2 ^ Heading 3 ^ -| Row 1 Col 1 | Row 1 Col 2 | Row 1 Col 3 | -| Row 2 Col 1 | some colspan (note the double pipe) || -| Row 3 Col 1 | Row 2 Col 2 | Row 2 Col 3 | - -Table rows have to start and end with a ''|'' for normal rows or a ''^'' for headers. - - ^ Heading 1 ^ Heading 2 ^ Heading 3 ^ - | Row 1 Col 1 | Row 1 Col 2 | Row 1 Col 3 | - | Row 2 Col 1 | some colspan (note the double pipe) || - | Row 3 Col 1 | Row 2 Col 2 | Row 2 Col 3 | - -To connect cells horizontally, just make the next cell completely empty as shown above. Be sure to have always the same amount of cell separators! - -Vertical tableheaders are possible, too. - -| ^ Heading 1 ^ Heading 2 ^ -^ Heading 3 | Row 1 Col 2 | Row 1 Col 3 | -^ Heading 4 | no colspan this time | | -^ Heading 5 | Row 2 Col 2 | Row 2 Col 3 | - -As you can see, it's the cell separator before a cell which decides about the formatting: - - | ^ Heading 1 ^ Heading 2 ^ - ^ Heading 3 | Row 1 Col 2 | Row 1 Col 3 | - ^ Heading 4 | no colspan this time | | - ^ Heading 5 | Row 2 Col 2 | Row 2 Col 3 | - -Note: Vertical spans (rowspan) are not possible. - -You can align the table contents, too. Just add at least two whitespaces at the opposite end of your text: Add two spaces on the left to align right, two spaces on the right to align left and two spaces at least at both ends for centered text. - -^ Table with alignment ^^^ -| right| center |left | -|left | right| center | -| xxxxxxxxxxxx | xxxxxxxxxxxx | xxxxxxxxxxxx | - -This is how it looks in the source: - - ^ Table with alignment ^^^ - | right| center |left | - |left | right| center | - | xxxxxxxxxxxx | xxxxxxxxxxxx | xxxxxxxxxxxx | - -===== Nonparsed Blocks ===== - -You can include non parsed blocks into your documents by either indenting them by at least two spaces (like used for the previous examples) or by using the tags ''code'' or ''file''. - - -This is preformatted code all spaces are preserved: like <-this - - - -This is pretty much the same, but you could use it to show that you quoted a file. - - -To let the parser ignore an area completely (ie. do no formatting on it), enclose the area either with ''nowiki'' tags or even simpler, with double percent signs ''%%''. - - -This is some text which contains addresses like this: http://www.splitbrain.org and **formatting**, but nothing is done with it. - - -See the source of this page to see how to use these blocks. - -===== Syntax Highlighting ===== - -[[DokuWiki]] can highlight sourcecode, which makes it easier to read. It uses the [[http://qbnz.com/highlighter/|GeSHi]] Generic Syntax Highlighter -- so any language supported by GeSHi is supported. The syntax is the same like in the code block in the previous section, but this time the name of the used language is inserted inside the tag. Eg. ''''. - - -/** - * The HelloWorldApp class implements an application that - * simply displays "Hello World!" to the standard output. - */ -class HelloWorldApp { - public static void main(String[] args) { - System.out.println("Hello World!"); //Display the string. - } -} - - -The following language strings are currently recognized: //actionscript, ada, apache, asm, asp, bash, caddcl, cadlisp, c, c_mac, cpp, csharp, css, delphi, html4strict, java, javascript, lisp, lua, mpasm, nsis, objc, oobas, oracle8, pascal, perl, php-brief, php, python, qbasic, smarty, sql, vb, vbnet, visualfoxpro, xml// - -===== Embedding HTML and PHP ===== - -You can embed raw HTML or PHP code into your documents by using the ''html'' or ''php'' tags like this: - - -This is some HTML - - - - -This is some HTML - - - - -echo 'A logo generated by PHP:'; -echo 'PHP Logo !'; - - - - -echo 'A logo generated by PHP:'; -echo 'PHP Logo !'; - - -**Please Note**: HTML and PHP embedding is disabled by default in the configuration. If disabled, the code is displayed instead of executed. \ No newline at end of file diff --git a/feed.css b/feed.css deleted file mode 100644 index 1c53a5e88..000000000 --- a/feed.css +++ /dev/null @@ -1,65 +0,0 @@ -rss channel, feed, RDF { - font: 80% "Lucida Grande", Verdana, Lucida, Helvetica, Arial, sans-serif; - background-color: White; - color: Black; - margin: 0; - padding: 0; -} - - -link, description, language, managingEditor, copyright, lastBuildDate, date, -pubDate, generator, webMaster, ttl, docs, tagline, author, copyright, -generator, content, created, issued, modified, subject, id, format, creator, -category { - display: none; -} - -item link, entry id { - display: block; - background: transparent url(images/link_icon.gif) 0px 1px no-repeat; - padding: 1px 0px 1px 16px; - color:#436976; - text-decoration:underline; -} - -channel title, feed title { - display: block; - font-size:200%; - font-weight:bolder; - color:#436976; - text-decoration:none; - border-bottom: 20px solid #dee7ec; -} - -:root:before, :root:before { - content: "This data file is meant to be read in a XML feed reader. See document source." -} - -item, entry { - display: block; - margin: 1em 180px 1em 1em; - border-bottom: 1px solid #8cacbb; - padding-bottom: 1em; -} - -item title, entry title { - display: block; - background: transparent none; - border: 0px solid #ffffff; - padding: 0; - color: #222; - font-size: 1.4em; - font-weight: bold; -} - -item pubDate, entry modified, item date { - display: inline; - color: #AAA; - font: 1em trebuchet ms, arial, helvetica, sans-serif; -} - -item description, entry summary { - display: block; - clear: both; - padding-top: 0.5em; -} diff --git a/feed.php b/feed.php index 8b24d2d28..96263c5b8 100644 --- a/feed.php +++ b/feed.php @@ -51,12 +51,12 @@ $rss = new DokuWikiFeedCreator(); $rss->title = $conf['title']; $rss->link = DOKU_URL; - $rss->syndicationURL = DOKU_URL.'/feed.php'; - $rss->cssStyleSheet = DOKU_URL.'/feed.css'; + $rss->syndicationURL = DOKU_URL.'feed.php'; + $rss->cssStyleSheet = DOKU_URL.'lib/styles/feed.css'; $image = new FeedImage(); $image->title = $conf['title']; - $image->url = DOKU_URL."images/favicon.ico"; + $image->url = DOKU_URL."lib/images/favicon.ico"; $image->link = DOKU_URL; $rss->image = $image; @@ -77,7 +77,14 @@ * @author Andreas Gohr */ function rssRecentChanges(&$rss,$num,$ltype){ + global $conf; + if(!$num) $num = $conf['recent']; + $recents = getRecents(0,$num); + + //this can take some time if a lot of recaching has to be done + @set_time_limit(90); // set max execution time + foreach(array_keys($recents) as $id){ $desc = cleanDesc(p_wiki_xhtml($id,'',false)); $item = new FeedItem(); @@ -109,9 +116,6 @@ function rssRecentChanges(&$rss,$num,$ltype){ } $item->author .= $recents[$id]['ip']; $rss->addItem($item); - - //this can take some time if a lot of recaching has to be done - @set_time_limit(30); //reset execution time } } @@ -121,7 +125,7 @@ function rssRecentChanges(&$rss,$num,$ltype){ * @author Andreas Gohr */ function rssListNamespace(&$rss,$ns){ - require_once("inc/search.php"); + require_once(DOKU_INC.'inc/search.php'); global $conf; $ns=':'.cleanID($ns); diff --git a/fetch.php b/fetch.php deleted file mode 100644 index 3fa8777f1..000000000 --- a/fetch.php +++ /dev/null @@ -1,230 +0,0 @@ - - */ - - if(!defined('DOKU_INC')) define('DOKU_INC',realpath(dirname(__FILE__)).'/'); - require_once(DOKU_INC.'inc/init.php'); - require_once(DOKU_INC.'inc/common.php'); - require_once(DOKU_INC.'inc/pageutils.php'); - require_once(DOKU_INC.'inc/confutils.php'); - require_once(DOKU_INC.'inc/auth.php'); - $mimetypes = getMimeTypes(); - - //get input - $MEDIA = $_REQUEST['media']; - $CACHE = calc_cache($_REQUEST['cache']); - $WIDTH = $_REQUEST['w']; - $HEIGHT = $_REQUEST['h']; - list($EXT,$MIME) = mimetype($MEDIA); - if($EXT === false){ - $EXT = 'unknown'; - $MIME = 'application/octet-stream'; - } - - //media to local file - if(preg_match('#^(https?|ftp)://#i',$MEDIA)){ - //handle external media - $FILE = get_from_URL($MEDIA,$EXT,$CACHE); - if(!$FILE){ - //download failed - redirect to original URL - header('Location: '.$MEDIA); - exit; - } - }else{ - $MEDIA = cleanID($MEDIA); - if(empty($MEDIA)){ - header("HTTP/1.0 400 Bad Request"); - print 'Bad request'; - exit; - } - - //check permissions (namespace only) - if(auth_quickaclcheck(getNS($MEDIA).':X') < AUTH_READ){ - header("HTTP/1.0 401 Unauthorized"); - //fixme add some image for imagefiles - print 'Unauthorized'; - exit; - } - $FILE = mediaFN($MEDIA); - } - - //check file existance - if(!@file_exists($FILE)){ - header("HTTP/1.0 404 Not Found"); - //FIXME add some default broken image - print 'Not Found'; - exit; - } - - //handle image resizing - if((substr($MIME,0,5) == 'image') && $WIDTH){ - $FILE = get_resized($FILE,$EXT,$WIDTH,$HEIGHT); - } - - - //FIXME set sane cachecontrol headers - //FIXME handle conditional and partial requests - - //send file - header("Content-Type: $MIME"); - header('Last-Modified: '.date('r',filemtime($FILE))); - header('Content-Length: '.filesize($FILE)); - - //application mime type is downloadable - if(substr($MIME,0,11) == 'application'){ - header('Content-Disposition: attachment; filename="'.basename($FILE).'"'); - } - - $fp = @fopen($FILE,"rb"); - if($fp){ - fpassthru($fp); //does a close itself - }else{ - header("HTTP/1.0 500 Internal Server Error"); - print "Could not read $FILE - bad permissions?"; - } - -/* ------------------------------------------------------------------------ */ - -/** - * Resizes the given image to the given size - * - * @author Andreas Gohr - */ -function get_resized($file, $ext, $w, $h=0){ - global $conf; - - $md5 = md5($file); - $info = getimagesize($file); - if(!$h) $h = round(($w * $info[1]) / $info[0]); - - - //cache - $local = $conf['mediadir'].'/_cache/'.$md5.'.'.$w.'x'.$h.'.'.$ext; - $mtime = @filemtime($local); // 0 if not exists - - if( $mtime > filemtime($file) || resize_image($ext,$file,$info[0],$info[1],$local,$w,$h) ){ - return $local; - } - //still here? resizing failed - return $file; -} - -/** - * Returns the wanted cachetime in seconds - * - * Resolves named constants - * - * @author Andreas Gohr - */ -function calc_cache($cache){ - global $conf; - - if(strtolower($cache) == 'nocache') return 0; //never cache - if(strtolower($cache) == 'recache') return $conf['cachetime']; //use standard cache - return -1; //cache endless -} - -/** - * Download a remote file and return local filename - * - * returns false if download fails. Uses cached file if available and - * wanted - * - * @author Andreas Gohr - */ -function get_from_URL($url,$ext,$cache){ - global $conf; - - $url = strtolower($url); - $md5 = md5($url); - - $local = $conf['mediadir']."/_cache/$md5.$ext"; - $mtime = @filemtime($local); // 0 if not exists - - //decide if download needed: - - // never cache exists but no endless cache not exists or expired - if( $cache == 0 || ($mtime != 0 && $cache != -1) || $mtime < time()-$cache ){ - if(io_download($url,$local)){ - return $local; - }else{ - return false; - } - } - - //if cache exists use it else - if($mtime) return $local; - - //else return false - return false; -} - -/** - * resize images - * - * @author Andreas Gohr - */ -function resize_image($ext,$from,$from_w,$from_h,$to,$to_w,$to_h){ - global $conf; - - if($conf['gdlib'] < 1) return false; //no GDlib available or wanted - - // create an image of the given filetype - if ($ext == 'jpg' || $ext == 'jpeg'){ - if(!function_exists("imagecreatefromjpeg")) return false; - $image = @imagecreatefromjpeg($from); - }elseif($ext == 'png') { - if(!function_exists("imagecreatefrompng")) return false; - $image = @imagecreatefrompng($from); - - }elseif($ext == 'gif') { - if(!function_exists("imagecreatefromgif")) return false; - $image = @imagecreatefromgif($from); - } - if(!$image) return false; - - if(($conf['gdlib']>1) && function_exists("imagecreatetruecolor")){ - $newimg = @imagecreatetruecolor ($to_w, $to_h); - } - if(!$newimg) $newimg = @imagecreate($to_w, $to_h); - if(!$newimg) return false; - - //keep png alpha channel if possible - if($ext == 'png' && $conf['gdlib']>1 && function_exists('imagesavealpha')){ - imagealphablending($newimg, false); - imagesavealpha($newimg,true); - } - - // create cachedir - io_makeFileDir($to); - - //try resampling first - if(function_exists("imagecopyresampled")){ - if(!@imagecopyresampled($newimg, $image, 0, 0, 0, 0, $to_w, $to_h, $from_w, $from_h)) { - imagecopyresized($newimg, $image, 0, 0, 0, 0, $to_w, $to_h, $from_w, $from_h); - } - }else{ - imagecopyresized($newimg, $image, 0, 0, 0, 0, $to_w, $to_h, $from_w, $from_h); - } - - if ($ext == 'jpg' || $ext == 'jpeg'){ - if(!function_exists("imagejpeg")) return false; - return imagejpeg($newimg, $to, 70); - }elseif($ext == 'png') { - if(!function_exists("imagepng")) return false; - return imagepng($newimg, $to); - }elseif($ext == 'gif') { - if(!function_exists("imagegif")) return false; - return imagegif($newimg, $to); - } - - return false; -} - - -//Setup VIM: ex: et ts=2 enc=utf-8 : -?> diff --git a/images/arrow_down.png b/images/arrow_down.png deleted file mode 100644 index cc0ab149c..000000000 Binary files a/images/arrow_down.png and /dev/null differ diff --git a/images/arrow_up.png b/images/arrow_up.png deleted file mode 100644 index 3031122e5..000000000 Binary files a/images/arrow_up.png and /dev/null differ diff --git a/images/blank.gif b/images/blank.gif deleted file mode 100644 index 9935f8210..000000000 Binary files a/images/blank.gif and /dev/null differ diff --git a/images/bold.png b/images/bold.png deleted file mode 100644 index d12c5710e..000000000 Binary files a/images/bold.png and /dev/null differ diff --git a/images/code.png b/images/code.png deleted file mode 100644 index 8f74d8101..000000000 Binary files a/images/code.png and /dev/null differ diff --git a/images/del.png b/images/del.png deleted file mode 100644 index a3260d718..000000000 Binary files a/images/del.png and /dev/null differ diff --git a/images/diff.png b/images/diff.png deleted file mode 100644 index 0b98d79ac..000000000 Binary files a/images/diff.png and /dev/null differ diff --git a/images/empty.png b/images/empty.png deleted file mode 100644 index e606cfd07..000000000 Binary files a/images/empty.png and /dev/null differ diff --git a/images/error.png b/images/error.png deleted file mode 100644 index ad2ca6ee2..000000000 Binary files a/images/error.png and /dev/null differ diff --git a/images/extlink.png b/images/extlink.png deleted file mode 100644 index 22971725c..000000000 Binary files a/images/extlink.png and /dev/null differ diff --git a/images/favicon.ico b/images/favicon.ico deleted file mode 100644 index 8b9616abb..000000000 Binary files a/images/favicon.ico and /dev/null differ diff --git a/images/fonth1.png b/images/fonth1.png deleted file mode 100644 index 13d52b979..000000000 Binary files a/images/fonth1.png and /dev/null differ diff --git a/images/fonth2.png b/images/fonth2.png deleted file mode 100644 index 8e39a14de..000000000 Binary files a/images/fonth2.png and /dev/null differ diff --git a/images/fonth3.png b/images/fonth3.png deleted file mode 100644 index 80fd308e7..000000000 Binary files a/images/fonth3.png and /dev/null differ diff --git a/images/fonth4.png b/images/fonth4.png deleted file mode 100644 index e3a333535..000000000 Binary files a/images/fonth4.png and /dev/null differ diff --git a/images/fonth5.png b/images/fonth5.png deleted file mode 100644 index e9fc8bb56..000000000 Binary files a/images/fonth5.png and /dev/null differ diff --git a/images/history.png b/images/history.png deleted file mode 100644 index ef9e311d3..000000000 Binary files a/images/history.png and /dev/null differ diff --git a/images/image.png b/images/image.png deleted file mode 100644 index f64493125..000000000 Binary files a/images/image.png and /dev/null differ diff --git a/images/info.png b/images/info.png deleted file mode 100644 index ee5f3f5ad..000000000 Binary files a/images/info.png and /dev/null differ diff --git a/images/italic.png b/images/italic.png deleted file mode 100644 index f4ecd0ddf..000000000 Binary files a/images/italic.png and /dev/null differ diff --git a/images/larger.gif b/images/larger.gif deleted file mode 100644 index e137c92fa..000000000 Binary files a/images/larger.gif and /dev/null differ diff --git a/images/link.png b/images/link.png deleted file mode 100644 index 41fddbb28..000000000 Binary files a/images/link.png and /dev/null differ diff --git a/images/list.png b/images/list.png deleted file mode 100644 index ffae5cfbf..000000000 Binary files a/images/list.png and /dev/null differ diff --git a/images/list_ul.png b/images/list_ul.png deleted file mode 100644 index b86bcef7d..000000000 Binary files a/images/list_ul.png and /dev/null differ diff --git a/images/loading.gif b/images/loading.gif deleted file mode 100644 index 240bd88c5..000000000 Binary files a/images/loading.gif and /dev/null differ diff --git a/images/rule.png b/images/rule.png deleted file mode 100644 index a432b206e..000000000 Binary files a/images/rule.png and /dev/null differ diff --git a/images/sig.png b/images/sig.png deleted file mode 100644 index 2917048f6..000000000 Binary files a/images/sig.png and /dev/null differ diff --git a/images/smaller.gif b/images/smaller.gif deleted file mode 100644 index 66d3a51e7..000000000 Binary files a/images/smaller.gif and /dev/null differ diff --git a/images/thumbup.gif b/images/thumbup.gif deleted file mode 100644 index c96d73c71..000000000 Binary files a/images/thumbup.gif and /dev/null differ diff --git a/images/underline.png b/images/underline.png deleted file mode 100644 index db07038fd..000000000 Binary files a/images/underline.png and /dev/null differ diff --git a/inc/actions.php b/inc/actions.php index 25a2e14c2..aef63b94c 100644 --- a/inc/actions.php +++ b/inc/actions.php @@ -69,7 +69,7 @@ function act_dispatch(){ //call template FIXME: all needed vars available? header('Content-Type: text/html; charset=utf-8'); - include(DOKU_INC.'tpl/'.$conf['template'].'/main.php'); + include(DOKU_INC.'lib/tpl/'.$conf['template'].'/main.php'); // output for the commands is now handled in inc/templates.php // in function tpl_content() } diff --git a/inc/admin_acl.php b/inc/admin_acl.php index fcf9d9ae3..15332b3b4 100644 --- a/inc/admin_acl.php +++ b/inc/admin_acl.php @@ -43,7 +43,7 @@ function admin_acl_handler(){ } // reload ACL config - $AUTH_ACL = file('conf/acl.auth.php'); + $AUTH_ACL = file(DOKU_INC.'conf/acl.auth.php'); } /** @@ -117,7 +117,7 @@ function get_acl_config($id){ * @author Frank Schubert */ function admin_acl_add($acl_scope, $acl_user, $acl_level){ - $acl_config = join("",file('conf/acl.auth.php')); + $acl_config = join("",file(DOKU_INC.'conf/acl.auth.php')); // max level for pagenames is edit if(strpos($acl_scope,'*') === false) { @@ -128,7 +128,7 @@ function admin_acl_add($acl_scope, $acl_user, $acl_level){ $new_config = $acl_config.$new_acl; - return io_saveFile("conf/acl.auth.php", $new_config); + return io_saveFile(DOKU_INC.'conf/acl.auth.php', $new_config); } /** @@ -137,14 +137,14 @@ function admin_acl_add($acl_scope, $acl_user, $acl_level){ * @author Frank Schubert */ function admin_acl_del($acl_scope, $acl_user){ - $acl_config = file('conf/acl.auth.php'); + $acl_config = file(DOKU_INC.'conf/acl.auth.php'); $acl_pattern = '^'.preg_quote($acl_scope,'/').'\s+'.$acl_user.'\s+[0-8].*$'; // save all non!-matching #FIXME invert is available from 4.2.0 only! $new_config = preg_grep("/$acl_pattern/", $acl_config, PREG_GREP_INVERT); - return io_saveFile("conf/acl.auth.php", join("",$new_config)); + return io_saveFile(DOKU_INC.'conf/acl.auth.php', join('',$new_config)); } // --- HTML OUTPUT FUNCTIONS BELOW --- // diff --git a/inc/auth.php b/inc/auth.php index a55cfbc51..863bb3c49 100644 --- a/inc/auth.php +++ b/inc/auth.php @@ -15,7 +15,7 @@ require_once(DOKU_INC.'inc/blowfish.php'); require_once(DOKU_INC.'inc/mail.php'); // load the the auth functions - require_once(DOKU_INC.'inc/auth_'.$conf['authtype'].'.php'); + require_once(DOKU_INC.'inc/auth/'.$conf['authtype'].'.php'); // some ACL level defines define('AUTH_NONE',0); @@ -29,7 +29,7 @@ if($conf['useacl']){ auth_login($_REQUEST['u'],$_REQUEST['p'],$_REQUEST['r']); //load ACL into a global array - $AUTH_ACL = file('conf/acl.auth.php'); + $AUTH_ACL = file(DOKU_INC.'conf/acl.auth.php'); } /** diff --git a/inc/auth/ldap.php b/inc/auth/ldap.php new file mode 100644 index 000000000..2f0f4f1ff --- /dev/null +++ b/inc/auth/ldap.php @@ -0,0 +1,281 @@ + + */ + +//check for LDAP extension on load +if(!function_exists('ldap_connect')) + msg("LDAP extension not found",-1); + +/** + * Connect to the LDAP server + * + * Holds the connection in global scope for multiple use + * + * @author Andreas Gohr + */ +function auth_ldap_connect(){ + global $LDAP_CONNECTION; + global $conf; + $cnf = $conf['auth']['ldap']; + + if(!$LDAP_CONNECTION){ + $LDAP_CONNECTION = @ldap_connect($cnf['server']); + if(!$LDAP_CONNECTION){ + msg("LDAP: couldn't connect to LDAP server",-1); + return false; + } + //set protocol version + if($cnf['version']){ + if(!@ldap_set_option($LDAP_CONNECTION, + LDAP_OPT_PROTOCOL_VERSION, + $cnf['version'])){ + msg('Setting LDAP Protocol version '.$cnf['version'].' failed',-1); + if($cnf['debug']) + msg('LDAP errstr: '.htmlspecialchars(ldap_error($LDAP_CONNECTION)),0); + + } else { + //use TLS (needs version 3) + if($cnf['starttls']) { + if (!@ldap_start_tls($LDAP_CONNECTION)){ + msg('Starting TLS failed',-1); + if($cnf['debug']) + msg('LDAP errstr: '.htmlspecialchars(ldap_error($LDAP_CONNECTION)),0); + } + } + // needs version 3 + if(isset($cnf['referrals'])) { + if(!@ldap_set_option($LDAP_CONNECTION, + LDAP_OPT_REFERRALS, + $cnf['referrals'])){ + msg('Setting LDAP referrals to off failed',-1); + if($cnf['debug']) + msg('LDAP errstr: '.htmlspecialchars(ldap_error($LDAP_CONNECTION)),0); + } + } + } + } + } + return $LDAP_CONNECTION; +} + +/** + * Check user+password [required auth function] + * + * Checks if the given user exists and the given + * plaintext password is correct by trying to bind + * to the LDAP server + * + * @author Andreas Gohr + * @return bool + */ +function auth_checkPass($user,$pass){ + global $conf; + $cnf = $conf['auth']['ldap']; + + //reject empty password + if(empty($pass)) return false; + + //connect to LDAP Server + $conn = auth_ldap_connect(); + if(!$conn) return false; + + // indirect user bind + if(!empty($cnf['binddn']) and !empty($cnf['bindpw'])) { + //use superuser credentials + if(!@ldap_bind($conn,$cnf['binddn'],$cnf['bindpw'])){ + if($cnf['debug']) msg('LDAP errstr: '.htmlspecialchars(ldap_error($conn)),0); + return false; + } + + // special bind string + } else if(!empty($cnf['binddn']) and !empty($cnf['usertree']) and !empty($cnf['userfilter'])) { + $dn = auth_ldap_makeFilter($cnf['binddn'], array('user'=>$user,'server'=>$cnf['server'])); + + // direct user bind + } else if(strpos($cnf['usertree'], '%{user}')) { + $dn = auth_ldap_makeFilter($cnf['usertree'], array('user'=>$user,'server'=>$cnf['server'])); + + // Anonymous bind + } else { + if(!@ldap_bind($conn)){ + msg("LDAP: can not bind anonymously",-1); + if($cnf['debug']) msg('LDAP errstr: '.htmlspecialchars(ldap_error($conn)),0); + return false; + } + } + + // Try to bind to with the dn if we have one. + if(!empty($dn)) { + // User/Password bind + if(!@ldap_bind($conn,$dn,$pass)){ + if($cnf['debug']) msg('LDAP errstr: '.htmlspecialchars(ldap_error($conn)),0); + return false; + } + return true; + } else { + // See if we can find the user + $info = auth_getUserData($user); + if(empty($info['dn'])) { + return false; + } else { + $dn = $info['dn']; + } + // Try to bind with the dn provided + if(!@ldap_bind($conn,$dn,$pass)){ + if($cnf['debug']) msg('LDAP errstr: '.htmlspecialchars(ldap_error($conn)),0); + return false; + } + return true; + } + + return false; +} + +/** + * Return user info [required auth function] + * + * Returns info about the given user needs to contain + * at least these fields: + * + * name string full name of the user + * mail string email addres of the user + * grps array list of groups the user is in + * + * This LDAP specific function returns the following + * addional fields: + * + * dn string distinguished name (DN) + * uid string Posix User ID + * + * @author Andreas Gohr + * @author Trouble + * @author Dan Allen + * @auhtor + */ +function auth_getUserData($user){ + global $conf; + $cnf = $conf['auth']['ldap']; + + //connect to LDAP Server + $conn = auth_ldap_connect(); + if(!$conn) return false; + + $info['user']= $user; + $info['server']= $cnf['server']; + + //get info for given user + $base = auth_ldap_makeFilter($cnf['usertree'], $info); + if(!empty($cnf['userfilter'])) { + $filter = auth_ldap_makeFilter($cnf['userfilter'], $info); + } else { + $filter = "(ObjectClass=*)"; + } + + $sr = @ldap_search($conn, $base, $filter); + $result = @ldap_get_entries($conn, $sr); + if($cnf['debug']) msg('LDAP errstr: '.htmlspecialchars(ldap_error($conn)),0); + + // Don't accept more or less than one response + if($result['count'] != 1){ + return false; //user not found + } + + $user_result = $result[0]; + + //general user info + $info['dn']= $user_result['dn']; + $info['mail']= $user_result['mail'][0]; + $info['name']= $user_result['cn'][0]; + + #overwrite if other attribs are specified. + foreach($cnf['mapping'] as $localkey => $key) { + if(is_array($key)) { + //use regexp to clean up user_result + list($key, $regexp) = each($key); + foreach($user_result[$key] as $grp){ + if (preg_match($regexp,$grp,$match)) { + if($localkey == 'grps') { + $info[$localkey][] = $match[1]; + } else { + $info[$localkey] = $match[1]; + } + } + } + } else { + $info[$localkey] = $user_result[$key][0]; + } + } + + //get groups for given user if grouptree is given + if (!empty($cnf['grouptree'])) { + $base = auth_ldap_makeFilter($cnf['grouptree'], $user_result); + $filter = auth_ldap_makeFilter($cnf['groupfilter'], $user_result); + + $sr = @ldap_search($conn, $base, $filter); + if(!$sr){ + msg("LDAP: Reading group memberships failed",-1); + if($cnf['debug']) msg('LDAP errstr: '.htmlspecialchars(ldap_error($conn)),0); + return false; + } + $result = ldap_get_entries($conn, $sr); + foreach($result as $grp){ + if(!empty($grp['cn'][0])) + $info['grps'][] = $grp['cn'][0]; + } + } + + //if no groups were found always return the default group + if(!count($info['grps'])) $info['grps'][] = $conf['defaultgroup']; + + return $info; +} + +/** + * Create a new User [required auth function] + * + * Not implemented + * + * @author Andreas Gohr + */ +function auth_createUser($user,$pass,$name,$mail){ + msg("Sorry. Creating users is not supported by the LDAP backend",-1); + return null; +} + + +/** + * Make ldap filter strings. + * + * Used by auth_getUserData to make the filter + * strings for grouptree and groupfilter + * + * filter string ldap search filter with placeholders + * placeholders array array with the placeholders + * + * @author Troels Liebe Bentsen + * @return string + */ +function auth_ldap_makeFilter($filter, $placeholders) { + preg_match_all("/%{([^}]+)/", $filter, $matches, PREG_PATTERN_ORDER); + //replace each match + foreach ($matches[1] as $match) { + //take first element if array + if(is_array($placeholders[$match])) { + $value = $placeholders[$match][0]; + } else { + $value = $placeholders[$match]; + } + $filter = str_replace('%{'.$match.'}', $value, $filter); + } + return $filter; +} + +//Setup VIM: ex: et ts=2 enc=utf-8 : diff --git a/inc/auth/mysql.php b/inc/auth/mysql.php new file mode 100644 index 000000000..758fe3b77 --- /dev/null +++ b/inc/auth/mysql.php @@ -0,0 +1,182 @@ + + */ + +//check for MySQL extension on load +if(!function_exists('mysql_connect')) + msg("MySQL extension not found",-1); + +/** + * Execute SQL + * + * Executes SQL statements and returns the results as list + * of hashes. Returns false on error. Returns auto_increment + * IDs on INSERT statements. + * + * @author Andreas Gohr + */ +function auth_mysql_runsql($sql_string) { + global $conf; + $cnf = $conf['auth']['mysql']; + + $link = @mysql_connect ($cnf['server'], $cnf['user'], $cnf['password']); + if(!$link){ + msg('MySQL: Connection to database failed!',-1); + return false; + } + $result = @mysql_db_query($cnf['database'],$sql_string,$link); + if(!$result){ + msg('MySQL: '.mysql_error($link)); + return false; + } + + //mysql_db_query returns 1 on a insert statement -> no need to ask for results + if ($result != 1) { + for($i=0; $i< mysql_num_rows($result); $i++) { + $temparray = mysql_fetch_assoc($result); + $resultarray[]=$temparray; + } + mysql_free_result ($result); + } elseif (mysql_insert_id($link)) { + $resultarray = mysql_insert_id($link); //give back ID on insert + } else + $resultarray = 0; // asure that the return value is valid + + mysql_close ($link); + return $resultarray; +} + +/** + * Check user+password [required auth function] + * + * Checks if the given user exists and the given + * plaintext password is correct. Furtheron it + * might be checked wether the user is member of + * the right group + * + * @author Andreas Gohr + * @author Matthias Grimm + * @return bool + */ +function auth_checkPass($user,$pass){ + global $conf; + $cnf = $conf['auth']['mysql']; + + $sql = str_replace('%u',addslashes($user),$cnf['passcheck']); + $sql = str_replace('%g',addslashes($conf['defaultgroup']),$sql); + $result = auth_mysql_runsql($sql); + + if(count($result)){ + return(auth_verifyPassword($pass,$result[0]['pass'])); + }else{ + return(false); + } +} + +/** + * Return user info [required auth function] + * + * Returns info about the given user needs to contain + * at least these fields: + * + * name string full name of the user + * mail string email addres of the user + * grps array list of groups the user is in + * + * @author Andreas Gohr + */ +function auth_getUserData($user){ + global $conf; + $cnf = $conf['auth']['mysql']; + + $sql = str_replace('%u',addslashes($user),$cnf['userinfo']); + $result = auth_mysql_runsql($sql); + if(!count($result)) return false; + $info = $result[0]; + + $sql = str_replace('%u',addslashes($user),$cnf['groups']); + $result = auth_mysql_runsql($sql); + if(!count($result)){ + $info['grps'][] = $conf['defaultgroup']; + }else{ + foreach($result as $row){ + $info['grps'][] = $row['group']; + } + } + + return $info; +} + +/** + * Create a new User [required auth function] + * + * user string username + * pass string password + * name string full name of the user + * mail string email address + * + * Returns false if the user already exists, null when an error + * occoured and the cleartext password of the new user if + * everything went well. + * + * The user HAS TO be added to the default group by this + * function + * + * @author Matthias Grimm + */ +function auth_createUser($user,$pass,$name,$mail){ + global $conf; + $cnf = $conf['auth']['mysql']; + + //check if user exists + $info = auth_getUserData($user); + if ($info != false) return false; + + //get groupid of default group + if($cnf['getgroupid']){ + $sql = str_replace('%g',addslashes($conf['defaultgroup']),$cnf['getgroupid']); + $result = auth_mysql_runsql($sql); + if($result === false) return null; + if (count($result) == 1){ + $gid = $result[0]['gid']; + }else{ + msg("MySQL: Couldn't find the default group",-1); + return null; + } + } + + //prepare the insert + $sql = str_replace('%u' ,addslashes($user),$cnf['adduser']); + $sql = str_replace('%p' ,addslashes(auth_cryptPassword($pass)),$sql); + $sql = str_replace('%n' ,addslashes($name),$sql); + $sql = str_replace('%e' ,addslashes($mail),$sql); + $sql = str_replace('%gid',addslashes($gid),$sql); + $sql = str_replace('%g' ,addslashes($conf['defaultgroup']),$sql); + + //do the insert + $uid = auth_mysql_runsql($sql); + if($uid == 0){ + msg("Registering of the new user '$user' failed!", -1); + return null; + } + + //add to default group + if ($cnf['addusergroup']) { + $sql = str_replace('%uid',addslashes($uid),$cnf['addusergroup']); + $sql = str_replace('%u' ,addslashes($user),$sql); + $sql = str_replace('%gid',addslashes($gid),$sql); + $sql = str_replace('%g' ,addslashes($conf['defaultgroup']),$sql); + $result = auth_mysql_runsql($sql); + if($result === false) msg("MySQL: couldn't add user to the default group"); + } + + return $pass; +} + +//Setup VIM: ex: et ts=2 enc=utf-8 : diff --git a/inc/auth/pgsql.php b/inc/auth/pgsql.php new file mode 100644 index 000000000..b063f405e --- /dev/null +++ b/inc/auth/pgsql.php @@ -0,0 +1,135 @@ + + */ + +//check for Postgresql extension on load +if(!function_exists('pg_connect')) + msg("PgSQL extension not found",-1); + +/** + * Execute SQL + * + * Executes SQL statements and returns the results as list + * of hashes. Returns false on error. + * + */ +function auth_pgsql_runsql($sql_string) { + global $conf; + $cnf = $conf['auth']['pgsql']; + + if($cnf['port']) { + $port=" port=".$cnf['port']; + } + + $dsn="host=".$cnf['server']." dbname=".$cnf['database'].$port." user=".$cnf['user']." password=".$cnf['password']; + $link = pg_connect($dsn); + if(!$link){ + msg('PgSQL: Connection to database failed!',-1); + return false; + } + + $result = pg_query($link, $sql_string); + if(!$result){ + msg('PgSQL: '.pg_last_error($link)); + return false; + } + + for($i=0; $i< pg_num_rows($result); $i++) { + $temparray = pg_fetch_assoc($result); + $resultarray[]=$temparray; + } + pg_free_result($result); + pg_close($link); + return $resultarray; +} + +/** + * Check user+password [required auth function] + * + * Checks if the given user exists and the given + * plaintext password is correct + * + * @author Andreas Gohr + * @return bool + */ +function auth_checkPass($user,$pass){ + global $conf; + $cnf = $conf['auth']['pgsql']; + + $sql = str_replace('%u',addslashes($user),$cnf['userinfo']); + $result = auth_pgsql_runsql($sql); + if(count($result)>0) { + $info=$result[0]; + return auth_verifyPassword($pass, $info['pass']); + } else { + return false; + } +} + +/** + * Return user info [required auth function] + * + * Returns info about the given user needs to contain + * at least these fields: + * + * name string full name of the user + * mail string email addres of the user + * grps array list of groups the user is in + * + * @author Andreas Gohr + */ +function auth_getUserData($user){ + global $conf; + $cnf = $conf['auth']['pgsql']; + + $sql = str_replace('%u',addslashes($user),$cnf['userinfo']); + $result = auth_pgsql_runsql($sql); + if(!count($result)) return false; + $info = $result[0]; + + $sql = str_replace('%u',addslashes($user),$cnf['groups']); + $result = auth_pgsql_runsql($sql); + if(!count($result)) return false; + foreach($result as $row){ + $info['grps'][] = $row['group']; + } + + return $info; +} + +/** + * Create a new User [required auth function] + */ +function auth_createUser($user,$pass,$name,$mail) { + global $conf; + $cnf = $conf['auth']['pgsql']; + + if($cnf['createuser']) { + $sql = str_replace('%u',addslashes($user),$cnf['userinfo']); + $result = auth_pgsql_runsql($sql); + if(count($result)>0) return false; + + $sql = str_replace('%u',addslashes($user),$cnf['createuser']); + $sql = str_replace('%p',auth_cryptPassword($pass),$sql); + $sql = str_replace('%f',addslashes($name),$sql); + $sql = str_replace('%e',addslashes($mail),$sql); + $sql = str_replace('%g',addslashes($conf['defaultgroup']),$sql); + + $result=auth_pgsql_runsql($sql); + if(count($result)) + return $pass; + } else { + msg("Sorry. Your PgSQL backend is not configured to create new users.",-1); + } + return null; +} + +//Setup VIM: ex: et ts=2 enc=utf-8 : + diff --git a/inc/auth/plain.php b/inc/auth/plain.php new file mode 100644 index 000000000..eaa01b79d --- /dev/null +++ b/inc/auth/plain.php @@ -0,0 +1,113 @@ + + */ + +// we only accept page ids for auth_plain +if(isset($_REQUEST['u'])) + $_REQUEST['u'] = cleanID($_REQUEST['u']); + +/** + * Check user+password [required auth function] + * + * Checks if the given user exists and the given + * plaintext password is correct + * + * @author Andreas Gohr + * @return bool + */ +function auth_checkPass($user,$pass){ + $users = auth_plain_loadUserData(); + + if(!isset($users[$user])) return false; + + return auth_verifyPassword($pass,$users[$user]['pass']); +} + +/** + * Return user info [required auth function] + * + * Returns info about the given user needs to contain + * at least these fields: + * + * name string full name of the user + * mail string email addres of the user + * grps array list of groups the user is in + * + * @author Andreas Gohr + */ +function auth_getUserData($user){ + $users = auth_plain_loadUserData(); + return $users[$user]; +} + +/** + * Create a new User [required auth function] + * + * Returns false if the user already exists, null when an error + * occured and the cleartext password of the new user if + * everything went well. + * + * The new user HAS TO be added to the default group by this + * function! + * + * @author Andreas Gohr + */ +function auth_createUser($user,$pass,$name,$mail){ + global $conf; + + $users = auth_plain_loadUserData(); + if(isset($users[$user])) return false; + + $userline = join(':',array($user, + auth_cryptPassword($pass), + $name, + $mail, + $conf['defaultgroup'])); + $userline .= "\n"; + $fh = fopen(DOKU_INC.'conf/users.auth.php','a'); + if($fh){ + fwrite($fh,$userline); + fclose($fh); + return $pass; + } + msg('The users.auth.php file is not writable. Please inform the Wiki-Admin',-1); + return null; +} + +/** + * Load all user data + * + * Used by the plaintext auth functions + * loads the user file into a datastructure + * + * @author Andreas Gohr + */ +function auth_plain_loadUserData(){ + $data = array(); + $lines = file(DOKU_INC.'conf/users.auth.php'); + foreach($lines as $line){ + $line = preg_replace('/#.*$/','',$line); //ignore comments + $line = trim($line); + if(empty($line)) continue; + + $row = split(":",$line,5); + $groups = split(",",$row[4]); + $data[$row[0]]['pass'] = $row[1]; + $data[$row[0]]['name'] = urldecode($row[2]); + $data[$row[0]]['mail'] = $row[3]; + $data[$row[0]]['grps'] = $groups; + } + return $data; +} + + +//Setup VIM: ex: et ts=2 enc=utf-8 : diff --git a/inc/auth_ldap.php b/inc/auth_ldap.php deleted file mode 100644 index 2f0f4f1ff..000000000 --- a/inc/auth_ldap.php +++ /dev/null @@ -1,281 +0,0 @@ - - */ - -//check for LDAP extension on load -if(!function_exists('ldap_connect')) - msg("LDAP extension not found",-1); - -/** - * Connect to the LDAP server - * - * Holds the connection in global scope for multiple use - * - * @author Andreas Gohr - */ -function auth_ldap_connect(){ - global $LDAP_CONNECTION; - global $conf; - $cnf = $conf['auth']['ldap']; - - if(!$LDAP_CONNECTION){ - $LDAP_CONNECTION = @ldap_connect($cnf['server']); - if(!$LDAP_CONNECTION){ - msg("LDAP: couldn't connect to LDAP server",-1); - return false; - } - //set protocol version - if($cnf['version']){ - if(!@ldap_set_option($LDAP_CONNECTION, - LDAP_OPT_PROTOCOL_VERSION, - $cnf['version'])){ - msg('Setting LDAP Protocol version '.$cnf['version'].' failed',-1); - if($cnf['debug']) - msg('LDAP errstr: '.htmlspecialchars(ldap_error($LDAP_CONNECTION)),0); - - } else { - //use TLS (needs version 3) - if($cnf['starttls']) { - if (!@ldap_start_tls($LDAP_CONNECTION)){ - msg('Starting TLS failed',-1); - if($cnf['debug']) - msg('LDAP errstr: '.htmlspecialchars(ldap_error($LDAP_CONNECTION)),0); - } - } - // needs version 3 - if(isset($cnf['referrals'])) { - if(!@ldap_set_option($LDAP_CONNECTION, - LDAP_OPT_REFERRALS, - $cnf['referrals'])){ - msg('Setting LDAP referrals to off failed',-1); - if($cnf['debug']) - msg('LDAP errstr: '.htmlspecialchars(ldap_error($LDAP_CONNECTION)),0); - } - } - } - } - } - return $LDAP_CONNECTION; -} - -/** - * Check user+password [required auth function] - * - * Checks if the given user exists and the given - * plaintext password is correct by trying to bind - * to the LDAP server - * - * @author Andreas Gohr - * @return bool - */ -function auth_checkPass($user,$pass){ - global $conf; - $cnf = $conf['auth']['ldap']; - - //reject empty password - if(empty($pass)) return false; - - //connect to LDAP Server - $conn = auth_ldap_connect(); - if(!$conn) return false; - - // indirect user bind - if(!empty($cnf['binddn']) and !empty($cnf['bindpw'])) { - //use superuser credentials - if(!@ldap_bind($conn,$cnf['binddn'],$cnf['bindpw'])){ - if($cnf['debug']) msg('LDAP errstr: '.htmlspecialchars(ldap_error($conn)),0); - return false; - } - - // special bind string - } else if(!empty($cnf['binddn']) and !empty($cnf['usertree']) and !empty($cnf['userfilter'])) { - $dn = auth_ldap_makeFilter($cnf['binddn'], array('user'=>$user,'server'=>$cnf['server'])); - - // direct user bind - } else if(strpos($cnf['usertree'], '%{user}')) { - $dn = auth_ldap_makeFilter($cnf['usertree'], array('user'=>$user,'server'=>$cnf['server'])); - - // Anonymous bind - } else { - if(!@ldap_bind($conn)){ - msg("LDAP: can not bind anonymously",-1); - if($cnf['debug']) msg('LDAP errstr: '.htmlspecialchars(ldap_error($conn)),0); - return false; - } - } - - // Try to bind to with the dn if we have one. - if(!empty($dn)) { - // User/Password bind - if(!@ldap_bind($conn,$dn,$pass)){ - if($cnf['debug']) msg('LDAP errstr: '.htmlspecialchars(ldap_error($conn)),0); - return false; - } - return true; - } else { - // See if we can find the user - $info = auth_getUserData($user); - if(empty($info['dn'])) { - return false; - } else { - $dn = $info['dn']; - } - // Try to bind with the dn provided - if(!@ldap_bind($conn,$dn,$pass)){ - if($cnf['debug']) msg('LDAP errstr: '.htmlspecialchars(ldap_error($conn)),0); - return false; - } - return true; - } - - return false; -} - -/** - * Return user info [required auth function] - * - * Returns info about the given user needs to contain - * at least these fields: - * - * name string full name of the user - * mail string email addres of the user - * grps array list of groups the user is in - * - * This LDAP specific function returns the following - * addional fields: - * - * dn string distinguished name (DN) - * uid string Posix User ID - * - * @author Andreas Gohr - * @author Trouble - * @author Dan Allen - * @auhtor - */ -function auth_getUserData($user){ - global $conf; - $cnf = $conf['auth']['ldap']; - - //connect to LDAP Server - $conn = auth_ldap_connect(); - if(!$conn) return false; - - $info['user']= $user; - $info['server']= $cnf['server']; - - //get info for given user - $base = auth_ldap_makeFilter($cnf['usertree'], $info); - if(!empty($cnf['userfilter'])) { - $filter = auth_ldap_makeFilter($cnf['userfilter'], $info); - } else { - $filter = "(ObjectClass=*)"; - } - - $sr = @ldap_search($conn, $base, $filter); - $result = @ldap_get_entries($conn, $sr); - if($cnf['debug']) msg('LDAP errstr: '.htmlspecialchars(ldap_error($conn)),0); - - // Don't accept more or less than one response - if($result['count'] != 1){ - return false; //user not found - } - - $user_result = $result[0]; - - //general user info - $info['dn']= $user_result['dn']; - $info['mail']= $user_result['mail'][0]; - $info['name']= $user_result['cn'][0]; - - #overwrite if other attribs are specified. - foreach($cnf['mapping'] as $localkey => $key) { - if(is_array($key)) { - //use regexp to clean up user_result - list($key, $regexp) = each($key); - foreach($user_result[$key] as $grp){ - if (preg_match($regexp,$grp,$match)) { - if($localkey == 'grps') { - $info[$localkey][] = $match[1]; - } else { - $info[$localkey] = $match[1]; - } - } - } - } else { - $info[$localkey] = $user_result[$key][0]; - } - } - - //get groups for given user if grouptree is given - if (!empty($cnf['grouptree'])) { - $base = auth_ldap_makeFilter($cnf['grouptree'], $user_result); - $filter = auth_ldap_makeFilter($cnf['groupfilter'], $user_result); - - $sr = @ldap_search($conn, $base, $filter); - if(!$sr){ - msg("LDAP: Reading group memberships failed",-1); - if($cnf['debug']) msg('LDAP errstr: '.htmlspecialchars(ldap_error($conn)),0); - return false; - } - $result = ldap_get_entries($conn, $sr); - foreach($result as $grp){ - if(!empty($grp['cn'][0])) - $info['grps'][] = $grp['cn'][0]; - } - } - - //if no groups were found always return the default group - if(!count($info['grps'])) $info['grps'][] = $conf['defaultgroup']; - - return $info; -} - -/** - * Create a new User [required auth function] - * - * Not implemented - * - * @author Andreas Gohr - */ -function auth_createUser($user,$pass,$name,$mail){ - msg("Sorry. Creating users is not supported by the LDAP backend",-1); - return null; -} - - -/** - * Make ldap filter strings. - * - * Used by auth_getUserData to make the filter - * strings for grouptree and groupfilter - * - * filter string ldap search filter with placeholders - * placeholders array array with the placeholders - * - * @author Troels Liebe Bentsen - * @return string - */ -function auth_ldap_makeFilter($filter, $placeholders) { - preg_match_all("/%{([^}]+)/", $filter, $matches, PREG_PATTERN_ORDER); - //replace each match - foreach ($matches[1] as $match) { - //take first element if array - if(is_array($placeholders[$match])) { - $value = $placeholders[$match][0]; - } else { - $value = $placeholders[$match]; - } - $filter = str_replace('%{'.$match.'}', $value, $filter); - } - return $filter; -} - -//Setup VIM: ex: et ts=2 enc=utf-8 : diff --git a/inc/auth_mysql.php b/inc/auth_mysql.php deleted file mode 100644 index 758fe3b77..000000000 --- a/inc/auth_mysql.php +++ /dev/null @@ -1,182 +0,0 @@ - - */ - -//check for MySQL extension on load -if(!function_exists('mysql_connect')) - msg("MySQL extension not found",-1); - -/** - * Execute SQL - * - * Executes SQL statements and returns the results as list - * of hashes. Returns false on error. Returns auto_increment - * IDs on INSERT statements. - * - * @author Andreas Gohr - */ -function auth_mysql_runsql($sql_string) { - global $conf; - $cnf = $conf['auth']['mysql']; - - $link = @mysql_connect ($cnf['server'], $cnf['user'], $cnf['password']); - if(!$link){ - msg('MySQL: Connection to database failed!',-1); - return false; - } - $result = @mysql_db_query($cnf['database'],$sql_string,$link); - if(!$result){ - msg('MySQL: '.mysql_error($link)); - return false; - } - - //mysql_db_query returns 1 on a insert statement -> no need to ask for results - if ($result != 1) { - for($i=0; $i< mysql_num_rows($result); $i++) { - $temparray = mysql_fetch_assoc($result); - $resultarray[]=$temparray; - } - mysql_free_result ($result); - } elseif (mysql_insert_id($link)) { - $resultarray = mysql_insert_id($link); //give back ID on insert - } else - $resultarray = 0; // asure that the return value is valid - - mysql_close ($link); - return $resultarray; -} - -/** - * Check user+password [required auth function] - * - * Checks if the given user exists and the given - * plaintext password is correct. Furtheron it - * might be checked wether the user is member of - * the right group - * - * @author Andreas Gohr - * @author Matthias Grimm - * @return bool - */ -function auth_checkPass($user,$pass){ - global $conf; - $cnf = $conf['auth']['mysql']; - - $sql = str_replace('%u',addslashes($user),$cnf['passcheck']); - $sql = str_replace('%g',addslashes($conf['defaultgroup']),$sql); - $result = auth_mysql_runsql($sql); - - if(count($result)){ - return(auth_verifyPassword($pass,$result[0]['pass'])); - }else{ - return(false); - } -} - -/** - * Return user info [required auth function] - * - * Returns info about the given user needs to contain - * at least these fields: - * - * name string full name of the user - * mail string email addres of the user - * grps array list of groups the user is in - * - * @author Andreas Gohr - */ -function auth_getUserData($user){ - global $conf; - $cnf = $conf['auth']['mysql']; - - $sql = str_replace('%u',addslashes($user),$cnf['userinfo']); - $result = auth_mysql_runsql($sql); - if(!count($result)) return false; - $info = $result[0]; - - $sql = str_replace('%u',addslashes($user),$cnf['groups']); - $result = auth_mysql_runsql($sql); - if(!count($result)){ - $info['grps'][] = $conf['defaultgroup']; - }else{ - foreach($result as $row){ - $info['grps'][] = $row['group']; - } - } - - return $info; -} - -/** - * Create a new User [required auth function] - * - * user string username - * pass string password - * name string full name of the user - * mail string email address - * - * Returns false if the user already exists, null when an error - * occoured and the cleartext password of the new user if - * everything went well. - * - * The user HAS TO be added to the default group by this - * function - * - * @author Matthias Grimm - */ -function auth_createUser($user,$pass,$name,$mail){ - global $conf; - $cnf = $conf['auth']['mysql']; - - //check if user exists - $info = auth_getUserData($user); - if ($info != false) return false; - - //get groupid of default group - if($cnf['getgroupid']){ - $sql = str_replace('%g',addslashes($conf['defaultgroup']),$cnf['getgroupid']); - $result = auth_mysql_runsql($sql); - if($result === false) return null; - if (count($result) == 1){ - $gid = $result[0]['gid']; - }else{ - msg("MySQL: Couldn't find the default group",-1); - return null; - } - } - - //prepare the insert - $sql = str_replace('%u' ,addslashes($user),$cnf['adduser']); - $sql = str_replace('%p' ,addslashes(auth_cryptPassword($pass)),$sql); - $sql = str_replace('%n' ,addslashes($name),$sql); - $sql = str_replace('%e' ,addslashes($mail),$sql); - $sql = str_replace('%gid',addslashes($gid),$sql); - $sql = str_replace('%g' ,addslashes($conf['defaultgroup']),$sql); - - //do the insert - $uid = auth_mysql_runsql($sql); - if($uid == 0){ - msg("Registering of the new user '$user' failed!", -1); - return null; - } - - //add to default group - if ($cnf['addusergroup']) { - $sql = str_replace('%uid',addslashes($uid),$cnf['addusergroup']); - $sql = str_replace('%u' ,addslashes($user),$sql); - $sql = str_replace('%gid',addslashes($gid),$sql); - $sql = str_replace('%g' ,addslashes($conf['defaultgroup']),$sql); - $result = auth_mysql_runsql($sql); - if($result === false) msg("MySQL: couldn't add user to the default group"); - } - - return $pass; -} - -//Setup VIM: ex: et ts=2 enc=utf-8 : diff --git a/inc/auth_pgsql.php b/inc/auth_pgsql.php deleted file mode 100644 index b063f405e..000000000 --- a/inc/auth_pgsql.php +++ /dev/null @@ -1,135 +0,0 @@ - - */ - -//check for Postgresql extension on load -if(!function_exists('pg_connect')) - msg("PgSQL extension not found",-1); - -/** - * Execute SQL - * - * Executes SQL statements and returns the results as list - * of hashes. Returns false on error. - * - */ -function auth_pgsql_runsql($sql_string) { - global $conf; - $cnf = $conf['auth']['pgsql']; - - if($cnf['port']) { - $port=" port=".$cnf['port']; - } - - $dsn="host=".$cnf['server']." dbname=".$cnf['database'].$port." user=".$cnf['user']." password=".$cnf['password']; - $link = pg_connect($dsn); - if(!$link){ - msg('PgSQL: Connection to database failed!',-1); - return false; - } - - $result = pg_query($link, $sql_string); - if(!$result){ - msg('PgSQL: '.pg_last_error($link)); - return false; - } - - for($i=0; $i< pg_num_rows($result); $i++) { - $temparray = pg_fetch_assoc($result); - $resultarray[]=$temparray; - } - pg_free_result($result); - pg_close($link); - return $resultarray; -} - -/** - * Check user+password [required auth function] - * - * Checks if the given user exists and the given - * plaintext password is correct - * - * @author Andreas Gohr - * @return bool - */ -function auth_checkPass($user,$pass){ - global $conf; - $cnf = $conf['auth']['pgsql']; - - $sql = str_replace('%u',addslashes($user),$cnf['userinfo']); - $result = auth_pgsql_runsql($sql); - if(count($result)>0) { - $info=$result[0]; - return auth_verifyPassword($pass, $info['pass']); - } else { - return false; - } -} - -/** - * Return user info [required auth function] - * - * Returns info about the given user needs to contain - * at least these fields: - * - * name string full name of the user - * mail string email addres of the user - * grps array list of groups the user is in - * - * @author Andreas Gohr - */ -function auth_getUserData($user){ - global $conf; - $cnf = $conf['auth']['pgsql']; - - $sql = str_replace('%u',addslashes($user),$cnf['userinfo']); - $result = auth_pgsql_runsql($sql); - if(!count($result)) return false; - $info = $result[0]; - - $sql = str_replace('%u',addslashes($user),$cnf['groups']); - $result = auth_pgsql_runsql($sql); - if(!count($result)) return false; - foreach($result as $row){ - $info['grps'][] = $row['group']; - } - - return $info; -} - -/** - * Create a new User [required auth function] - */ -function auth_createUser($user,$pass,$name,$mail) { - global $conf; - $cnf = $conf['auth']['pgsql']; - - if($cnf['createuser']) { - $sql = str_replace('%u',addslashes($user),$cnf['userinfo']); - $result = auth_pgsql_runsql($sql); - if(count($result)>0) return false; - - $sql = str_replace('%u',addslashes($user),$cnf['createuser']); - $sql = str_replace('%p',auth_cryptPassword($pass),$sql); - $sql = str_replace('%f',addslashes($name),$sql); - $sql = str_replace('%e',addslashes($mail),$sql); - $sql = str_replace('%g',addslashes($conf['defaultgroup']),$sql); - - $result=auth_pgsql_runsql($sql); - if(count($result)) - return $pass; - } else { - msg("Sorry. Your PgSQL backend is not configured to create new users.",-1); - } - return null; -} - -//Setup VIM: ex: et ts=2 enc=utf-8 : - diff --git a/inc/auth_plain.php b/inc/auth_plain.php deleted file mode 100644 index 55e1fa9f6..000000000 --- a/inc/auth_plain.php +++ /dev/null @@ -1,113 +0,0 @@ - - */ - -// we only accept page ids for auth_plain -if(isset($_REQUEST['u'])) - $_REQUEST['u'] = cleanID($_REQUEST['u']); - -/** - * Check user+password [required auth function] - * - * Checks if the given user exists and the given - * plaintext password is correct - * - * @author Andreas Gohr - * @return bool - */ -function auth_checkPass($user,$pass){ - $users = auth_plain_loadUserData(); - - if(!isset($users[$user])) return false; - - return auth_verifyPassword($pass,$users[$user]['pass']); -} - -/** - * Return user info [required auth function] - * - * Returns info about the given user needs to contain - * at least these fields: - * - * name string full name of the user - * mail string email addres of the user - * grps array list of groups the user is in - * - * @author Andreas Gohr - */ -function auth_getUserData($user){ - $users = auth_plain_loadUserData(); - return $users[$user]; -} - -/** - * Create a new User [required auth function] - * - * Returns false if the user already exists, null when an error - * occured and the cleartext password of the new user if - * everything went well. - * - * The new user HAS TO be added to the default group by this - * function! - * - * @author Andreas Gohr - */ -function auth_createUser($user,$pass,$name,$mail){ - global $conf; - - $users = auth_plain_loadUserData(); - if(isset($users[$user])) return false; - - $userline = join(':',array($user, - auth_cryptPassword($pass), - $name, - $mail, - $conf['defaultgroup'])); - $userline .= "\n"; - $fh = fopen('conf/users.auth.php','a'); - if($fh){ - fwrite($fh,$userline); - fclose($fh); - return $pass; - } - msg('The users.auth.php file is not writable. Please inform the Wiki-Admin',-1); - return null; -} - -/** - * Load all user data - * - * Used by the plaintext auth functions - * loads the user file into a datastructure - * - * @author Andreas Gohr - */ -function auth_plain_loadUserData(){ - $data = array(); - $lines = file('conf/users.auth.php'); - foreach($lines as $line){ - $line = preg_replace('/#.*$/','',$line); //ignore comments - $line = trim($line); - if(empty($line)) continue; - - $row = split(":",$line,5); - $groups = split(",",$row[4]); - $data[$row[0]]['pass'] = $row[1]; - $data[$row[0]]['name'] = urldecode($row[2]); - $data[$row[0]]['mail'] = $row[3]; - $data[$row[0]]['grps'] = $groups; - } - return $data; -} - - -//Setup VIM: ex: et ts=2 enc=utf-8 : diff --git a/inc/common.php b/inc/common.php index 162a1a8e4..99cec10a9 100644 --- a/inc/common.php +++ b/inc/common.php @@ -105,7 +105,11 @@ function msg($message,$lvl=0){ }else{ $MSG = array(); $MSG[]=array('lvl' => $errors[$lvl], 'msg' => $message); - html_msgarea(); + if(function_exists('html_msgarea')){ + html_msgarea(); + }else{ + print "ERROR($lvl) $message"; + } } } @@ -244,7 +248,7 @@ function checkwordblock(){ if(!$conf['usewordblock']) return false; - $blockfile = file('conf/wordblock.conf'); + $blockfile = file(DOKU_INC.'conf/wordblock.conf'); //how many lines to read at once (to work around some PCRE limits) if(version_compare(phpversion(),'4.3.0','<')){ //old versions of PCRE define a maximum of parenthesises even if no @@ -799,7 +803,7 @@ function check(){ msg('Mediadir is not writable',-1); } - if(is_writable('conf/users.auth.php')){ + if(is_writable(DOKU_INC.'conf/users.auth.php')){ msg('conf/users.auth.php is writable',1); }else{ msg('conf/users.auth.php is not writable',0); diff --git a/inc/html.php b/inc/html.php index 411e230c7..acdfaecba 100644 --- a/inc/html.php +++ b/inc/html.php @@ -364,7 +364,7 @@ function html_revisions(){ print $date; - print ' '; + print ' '; print ''.$ID.' '; @@ -386,7 +386,7 @@ function html_revisions(){ print $date; print ' '; - print ''; + print ''; print ' '; print ''.$ID.' '; @@ -438,11 +438,11 @@ function html_recent($first=0){ print $date.' '; print ''; - print ''; + print ''; print ' '; print ''; - print ''; + print ''; print ' '; print html_wikilink($id,$id); @@ -848,29 +848,29 @@ function html_edit($text=null,$include='edit'){ //FIXME: include needed? textChanged = ; - formatButton('images/bold.png','','**','**','','b'); - formatButton('images/italic.png','',"\/\/","\/\/",'','i'); - formatButton('images/underline.png','','__','__','','u'); - formatButton('images/code.png','','\'\'','\'\'','','c'); + formatButton('bold.png','','**','**','','b'); + formatButton('italic.png','',"\/\/","\/\/",'','i'); + formatButton('underline.png','','__','__','','u'); + formatButton('code.png','','\'\'','\'\'','','c'); - formatButton('images/fonth1.png','','====== ',' ======\n','','1'); - formatButton('images/fonth2.png','','===== ',' =====\n','','2'); - formatButton('images/fonth3.png','','==== ',' ====\n','','3'); - formatButton('images/fonth4.png','','=== ',' ===\n','','4'); - formatButton('images/fonth5.png','','== ',' ==\n','','5'); + formatButton('fonth1.png','','====== ',' ======\n','','1'); + formatButton('fonth2.png','','===== ',' =====\n','','2'); + formatButton('fonth3.png','','==== ',' ====\n','','3'); + formatButton('fonth4.png','','=== ',' ===\n','','4'); + formatButton('fonth5.png','','== ',' ==\n','','5'); - formatButton('images/link.png','','[[',']]','','l'); - formatButton('images/extlink.png','','[[',']]','http://www.example.com|'); + formatButton('link.png','','[[',']]','','l'); + formatButton('extlink.png','','[[',']]','http://www.example.com|'); - formatButton('images/list.png','',' - ','\n',''); - formatButton('images/list_ul.png','',' * ','\n',''); + formatButton('list.png','',' - ','\n',''); + formatButton('list_ul.png','',' * ','\n',''); - insertButton('images/rule.png','','----\n'); - mediaButton('images/image.png','','m',''); + insertButton('rule.png','','----\n'); + mediaButton('image.png','','m',''); diff --git a/inc/init.php b/inc/init.php index 363518b65..dd5614d42 100644 --- a/inc/init.php +++ b/inc/init.php @@ -30,14 +30,14 @@ if(!defined('DOKU_URL')) define('DOKU_URL',getBaseURL(true)); // define Plugin dir - if(!defined('DOKU_PLUGIN')) define('DOKU_PLUGIN',DOKU_INC.'inc/plugins/'); + if(!defined('DOKU_PLUGIN')) define('DOKU_PLUGIN',DOKU_INC.'lib/plugins/'); // define main script if(!defined('DOKU_SCRIPT')) define('DOKU_SCRIPT','doku.php'); // define Template baseURL if(!defined('DOKU_TPL')) define('DOKU_TPL', - DOKU_BASE.'tpl/'.$conf['template'].'/'); + DOKU_BASE.'lib/tpl/'.$conf['template'].'/'); // make session rewrites XHTML compliant @ini_set('arg_separator.output', '&'); @@ -72,16 +72,29 @@ } // make real paths and check them - $conf['datadir'] = realpath($conf['datadir']); + $conf['datadir'] = init_path($conf['datadir']); if(!$conf['datadir']) die('Wrong datadir! Check config!'); - $conf['olddir'] = realpath($conf['olddir']); + $conf['olddir'] = init_path($conf['olddir']); if(!$conf['olddir']) die('Wrong olddir! Check config!'); - $conf['mediadir'] = realpath($conf['mediadir']); + $conf['mediadir'] = init_path($conf['mediadir']); if(!$conf['mediadir']) die('Wrong mediadir! Check config!'); // automatic upgrade to script versions of certain files - scriptify('conf/users.auth'); - scriptify('conf/acl.auth'); + scriptify(DOKU_INC.'conf/users.auth'); + scriptify(DOKU_INC.'conf/acl.auth'); + + +/** + * returns absolute path + * + * This tries the given past first, then checks in DOKU_INC + */ +function init_path($path){ + $p = realpath($path); + if($p) return $p; + $p = realpath(DOKU_INC.$path); + return $p; +} /** * remove magic quotes recursivly @@ -123,6 +136,9 @@ function getBaseURL($abs=false){ $dir = str_replace('\\','/',$dir); #bugfix for weird WIN behaviour $dir = preg_replace('#//+#','/',$dir); + + //handle script in lib/exe dir + $dir = preg_replace('!lib/exe/$!','',$dir); //finish here for relative URLs if(!$abs) return $dir; diff --git a/inc/io.php b/inc/io.php index 3981757da..a3e5f85c4 100644 --- a/inc/io.php +++ b/inc/io.php @@ -9,55 +9,6 @@ if(!defined('DOKU_INC')) define('DOKU_INC',realpath(dirname(__FILE__).'/../').'/'); require_once(DOKU_INC.'inc/common.php'); -/** - * Returns the parsed text from the given sourcefile. Uses cache - * if exists. Creates it if not. - * - * @author Andreas Gohr - * @deprecated -> parserutils - */ -function io_cacheParse($file){ - trigger_error("deprecated io_cacheParse called"); - - global $conf; - global $CACHEGROUP; - global $parser; //we read parser options - $parsed = ''; - $cache = $conf['datadir'].'/_cache/'; - $cache .= md5($file.$_SERVER['HTTP_HOST'].$_SERVER['SERVER_PORT'].$CACHEGROUP); - $purge = $conf['datadir'].'/_cache/purgefile'; - - // check if cache can be used - $cachetime = @filemtime($cache); - - if( @file_exists($cache) // does the cachefile exist - && @file_exists($file) // and does the source exist - && !isset($_REQUEST['purge']) // no purge param was set - && filesize($cache) // and contains the cachefile any data - && ((time() - $cachetime) < $conf['cachetime']) // and is cachefile young enough - && ($cachetime > filemtime($file)) // and newer than the source - && ($cachetime > @filemtime($purge)) // and newer than the purgefile - && ($cachetime > filemtime('conf/dokuwiki.php')) // and newer than the config file - && ($cachetime > @filemtime('conf/local.php')) // and newer than the local config file - && ($cachetime > filemtime('inc/parser.php')) // and newer than the parser - && ($cachetime > filemtime('inc/format.php'))) // and newer than the formating functions - { - $parsed = io_readFile($cache); //give back cache - $parsed .= "\n\n"; - }elseif(@file_exists($file)){ - $parsed = parse(io_readFile($file)); //sets global parseroptions - if($parser['cache']){ - io_saveFile($cache,$parsed); //save cachefile - $parsed .= "\n\n"; - }else{ - @unlink($cache); //try to delete cachefile - $parsed .= "\n\n"; - } - } - - return $parsed; -} - /** * Removes empty directories * diff --git a/inc/parser/xhtml.php b/inc/parser/xhtml.php index 5c3c8f86e..dde735b2f 100644 --- a/inc/parser/xhtml.php +++ b/inc/parser/xhtml.php @@ -73,8 +73,8 @@ class Doku_Renderer_xhtml extends Doku_Renderer { /* The (+/-) version will work too but needs some CSS tweaking to look fine */ /* $this->doc .= ' '; $this->doc .= $lang['toc']; $this->doc .= ''.DOKU_LF; @@ -376,12 +376,10 @@ class Doku_Renderer_xhtml extends Doku_Renderer { } } - /** - */ function smiley($smiley) { if ( array_key_exists($smiley, $this->smileys) ) { $title = $this->_xmlEntities($this->smileys[$smiley]); - $this->doc .= 'smileys[$smiley]. '" align="middle" alt="'. $this->_xmlEntities($smiley).'" />'; } else { @@ -389,7 +387,7 @@ class Doku_Renderer_xhtml extends Doku_Renderer { } } - /** + /* * not used function wordblock($word) { if ( array_key_exists($word, $this->badwords) ) { @@ -566,10 +564,10 @@ class Doku_Renderer_xhtml extends Doku_Renderer { if(!$isImage){ //if ico exists set additional style - if(@file_exists(DOKU_INC.'interwiki/'.$wikiName.'.png')){ - $link['style']='background-image: url('.DOKU_BASE.'interwiki/'.$wikiName.'.png)'; + if(@file_exists(DOKU_INC.'lib/images/interwiki/'.$wikiName.'.png')){ + $link['style']='background-image: url('.DOKU_BASE.'lib/images/interwiki/'.$wikiName.'.png)'; }elseif(@file_exists(DOKU_INC.'interwiki/'.$wikiName.'.gif')){ - $link['style']='background-image: url('.DOKU_BASE.'interwiki/'.$wikiName.'.gif)'; + $link['style']='background-image: url('.DOKU_BASE.'lib/images/interwiki/'.$wikiName.'.gif)'; } } @@ -714,7 +712,7 @@ class Doku_Renderer_xhtml extends Doku_Renderer { $link['target'] = $conf['target']['media']; $link['title'] = $this->_xmlEntities($src); - $link['url'] = DOKU_BASE.'fetch.php?cache='.$cache.'&media='.urlencode($src); + $link['url'] = DOKU_BASE.'lib/exe/fetch.php?cache='.$cache.'&media='.urlencode($src); $link['name'] = $this->_media ($src, $title, $align, $width, $height, $cache); @@ -738,7 +736,7 @@ class Doku_Renderer_xhtml extends Doku_Renderer { $link['target'] = $conf['target']['media']; $link['title'] = $this->_xmlEntities($src); - $link['url'] = DOKU_BASE.'fetch.php?cache='.$cache.'&media='.urlencode($src); + $link['url'] = DOKU_BASE.'lib/exe/fetch.php?cache='.$cache.'&media='.urlencode($src); $link['name'] = $this->_media ($src, $title, $align, $width, $height, $cache); @@ -893,7 +891,7 @@ class Doku_Renderer_xhtml extends Doku_Renderer { list($ext,$mime) = mimetype($src); if(substr($mime,0,5) == 'image'){ //add image tag - $ret .= '_xmlEntities($width).'"'; if ( !is_null($height) ) $ret .= ' height="'.$this->_xmlEntities($height).'"'; $ret .= '>'.DOKU_LF; - $ret .= ''.DOKU_LF; + $ret .= ''.DOKU_LF; $ret .= ''.DOKU_LF; - $ret .= '_xmlEntities($width).'"'; if ( !is_null($height) ) $ret .= ' height="'.$this->_xmlEntities($height).'"'; diff --git a/inc/plugins/info/syntax.php b/inc/plugins/info/syntax.php deleted file mode 100644 index bf45e5d11..000000000 --- a/inc/plugins/info/syntax.php +++ /dev/null @@ -1,110 +0,0 @@ - - */ - -if(!defined('DOKU_INC')) define('DOKU_INC',realpath(dirname(__FILE__).'/../../').'/'); -if(!defined('DOKU_PLUGIN')) define('DOKU_PLUGIN',DOKU_INC.'inc/plugins/'); -require_once(DOKU_PLUGIN.'syntax.php'); - -/** - * All DokuWiki plugins to extend the parser/rendering mechanism - * need to inherit from this class - */ -class syntax_plugin_info extends DokuWiki_Syntax_Plugin { - - /** - * What kind of syntax are we? - */ - function getType(){ - return 'substition'; - } - - /** - * Where to sort in? - */ - function getSort(){ - return 155; - } - - - /** - * Connect pattern to lexer - */ - function connectTo($mode) { - $this->Lexer->addSpecialPattern('~~INFO:\w+~~',$mode,'plugin_info'); - } - - - /** - * Handle the match - */ - function handle($match, $state, $pos, &$handler){ - $match = substr($match,7,-2); //strip ~~INFO: from start and ~~ from end - return array(strtolower($match)); - } - - /** - * Create output - */ - function render($mode, &$renderer, $data) { - if($mode == 'xhtml'){ - //handle various info stuff - switch ($data[0]){ - case 'version'; - $renderer->doc .= getVersion(); - break; - case 'syntaxmodes'; - $renderer->doc .= $this->_syntaxmodes_xhtml(); - break; - case 'syntaxtypes'; - $renderer->doc .= $this->_syntaxtypes_xhtml(); - break; - default: - $renderer->doc .= "no info about ".htmlspecialchars($data[0]); - } - return true; - } - return false; - } - - /** - * lists all known syntax types and their registered modes - */ - function _syntaxtypes_xhtml(){ - global $PARSER_MODES; - $doc = ''; - - $doc .= ''; - foreach($PARSER_MODES as $mode => $modes){ - $doc .= ''; - $doc .= ''; - $doc .= ''; - $doc .= ''; - } - $doc .= '
'; - $doc .= $mode; - $doc .= ''; - $doc .= join(', ',$modes); - $doc .= '
'; - return $doc; - } - - /** - * lists all known syntax modes and their sorting value - */ - function _syntaxmodes_xhtml(){ - $modes = p_get_parsermodes(); - $doc = ''; - - foreach ($modes as $mode){ - $doc .= $mode['mode'].' ('.$mode['sort'].'), '; - } - return $doc; - } -} - -//Setup VIM: ex: et ts=4 enc=utf-8 : diff --git a/inc/plugins/syntax.php b/inc/plugins/syntax.php deleted file mode 100644 index bb5680cd3..000000000 --- a/inc/plugins/syntax.php +++ /dev/null @@ -1,66 +0,0 @@ - - */ - -if(!defined('DOKU_INC')) define('DOKU_INC',realpath(dirname(__FILE__).'/../').'/'); -if(!defined('DOKU_PLUGIN')) define('DOKU_PLUGIN',DOKU_INC.'inc/plugins/'); -require_once(DOKU_INC.'inc/parser/parser.php'); - -/** - * All DokuWiki plugins to extend the parser/rendering mechanism - * need to inherit from this class - */ -class DokuWiki_Syntax_Plugin extends Doku_Parser_Mode { - - /** - * Needs to return one of the mode types defined in $PARSER_MODES in parser.php - */ - function getType(){ - trigger_error('getType() not implemented in '.get_class($this), E_USER_WARNING); - } - - /** - * Handler to prepare matched data for the rendering process - * - * Usually you should only need the $match param. - * - * @param $match string The text matched by the patterns - * @param $state int The lexer state for the match - * @param $pos int The character position of the matched text - * @param $handler ref Reference to the Doku_Handler object - * @return array Return an array with all data you want to use in render - */ - function handle($match, $state, $pos, &$handler){ - trigger_error('handle() not implemented in '.get_class($this), E_USER_WARNING); - } - - /** - * Handles the actual output creation. - * - * The function should always check for the given mode and return false - * when a mode isn't supported. - * - * $renderer contains a reference to the renderer object which is - * currently handling the rendering. You need to use it for writing - * the output. How this is done depends on the renderer used (specified - * by $mode - * - * The contents of the $data array depends on what the handler() function above - * created - * - * @param $mode string current Rendermode - * @param $renderer ref reference to the current renderer object - * @param $data array data created by handler() - * @return boolean rendered correctly? - */ - function render($mode, &$renderer, $data) { - trigger_error('render() not implemented in '.get_class($this), E_USER_WARNING); - } - -} - -//Setup VIM: ex: et ts=4 enc=utf-8 : diff --git a/inc/template.php b/inc/template.php index 11a1112d0..43c224926 100644 --- a/inc/template.php +++ b/inc/template.php @@ -145,7 +145,7 @@ function tpl_metaheaders(){ ptln('',$it); ptln('',$it); ptln('',$it); - ptln('',$it); + ptln('',$it); // setup robot tags apropriate for different modes if( ($ACT=='show' || $ACT=='export_html') && !$REV){ @@ -172,9 +172,12 @@ function tpl_metaheaders(){ ptln('',$it); // load the default JavaScript files - ptln('',$it); - ptln('',$it); - ptln('',$it); + ptln('',$it); + ptln('',$it); + ptln('',$it); //FIXME include some default CSS ? IE FIX? } @@ -571,9 +574,9 @@ function tpl_mediafilelist(){ $ask = $lang['del_confirm'].'\\n'; $ask .= $item['id']; - $del = ''. - ''.$lang['btn_delete'].''; }else{ $del = ''; @@ -589,9 +592,9 @@ function tpl_mediafilelist(){ ptln(''); if($w>120){ - print ''; + print ''; }else{ - print ''; + print ''; } print ''; diff --git a/interwiki/amazon.de.gif b/interwiki/amazon.de.gif deleted file mode 100644 index f52c1c581..000000000 Binary files a/interwiki/amazon.de.gif and /dev/null differ diff --git a/interwiki/amazon.gif b/interwiki/amazon.gif deleted file mode 100644 index f52c1c581..000000000 Binary files a/interwiki/amazon.gif and /dev/null differ diff --git a/interwiki/amazon.uk.gif b/interwiki/amazon.uk.gif deleted file mode 100644 index f52c1c581..000000000 Binary files a/interwiki/amazon.uk.gif and /dev/null differ diff --git a/interwiki/bug.gif b/interwiki/bug.gif deleted file mode 100644 index 3432b8d57..000000000 Binary files a/interwiki/bug.gif and /dev/null differ diff --git a/interwiki/coral.gif b/interwiki/coral.gif deleted file mode 100644 index 0f9f67587..000000000 Binary files a/interwiki/coral.gif and /dev/null differ diff --git a/interwiki/doku.gif b/interwiki/doku.gif deleted file mode 100644 index 7dc4248e8..000000000 Binary files a/interwiki/doku.gif and /dev/null differ diff --git a/interwiki/google.gif b/interwiki/google.gif deleted file mode 100644 index fb39f6152..000000000 Binary files a/interwiki/google.gif and /dev/null differ diff --git a/interwiki/meatball.gif b/interwiki/meatball.gif deleted file mode 100644 index 7ac545436..000000000 Binary files a/interwiki/meatball.gif and /dev/null differ diff --git a/interwiki/phpfn.gif b/interwiki/phpfn.gif deleted file mode 100644 index 638d4c450..000000000 Binary files a/interwiki/phpfn.gif and /dev/null differ diff --git a/interwiki/sb.gif b/interwiki/sb.gif deleted file mode 100644 index e272a29b7..000000000 Binary files a/interwiki/sb.gif and /dev/null differ diff --git a/interwiki/wiki.gif b/interwiki/wiki.gif deleted file mode 100644 index e8dc5d274..000000000 Binary files a/interwiki/wiki.gif and /dev/null differ diff --git a/interwiki/wp.gif b/interwiki/wp.gif deleted file mode 100644 index ca853b8c9..000000000 Binary files a/interwiki/wp.gif and /dev/null differ diff --git a/interwiki/wpde.gif b/interwiki/wpde.gif deleted file mode 100644 index ca853b8c9..000000000 Binary files a/interwiki/wpde.gif and /dev/null differ diff --git a/interwiki/wpmeta.gif b/interwiki/wpmeta.gif deleted file mode 100644 index ca853b8c9..000000000 Binary files a/interwiki/wpmeta.gif and /dev/null differ diff --git a/lib/exe/ajax.php b/lib/exe/ajax.php new file mode 100644 index 000000000..dfe0d2ceb --- /dev/null +++ b/lib/exe/ajax.php @@ -0,0 +1,53 @@ + + */ + +//fix for Opera XMLHttpRequests +if(!count($_POST) && $HTTP_RAW_POST_DATA){ + parse_str($HTTP_RAW_POST_DATA, $_POST); +} + +if(!defined('DOKU_INC')) define('DOKU_INC',realpath(dirname(__FILE__).'/../../').'/'); +require_once(DOKU_INC.'inc/init.php'); +require_once(DOKU_INC.'inc/common.php'); +require_once(DOKU_INC.'inc/pageutils.php'); +require_once(DOKU_INC.'inc/auth.php'); + +//call the requested function +$call = 'ajax_'.$_POST['call']; +if(function_exists($call)){ + $call(); +}else{ + print "The called function does not exist!"; +} + +/** + * Searches for matching pagenames + * + * @author Andreas Gohr + */ +function ajax_qsearch(){ + global $conf; + global $lang; + + $query = cleanID($_POST['q']); + if(empty($query)) return; + + $nsdir = str_replace(':','/',getNS($query)); + require_once(DOKU_INC.'inc/search.php'); + require_once(DOKU_INC.'inc/html.php'); + + $data = array(); + search($data,$conf['datadir'],'search_qsearch',array(query => $query),$nsdir); + + if(!count($data)) return; + + print ''.$lang['quickhits'].''; + print html_buildlist($data,'qsearch','html_list_index'); +} + +?> diff --git a/lib/exe/fetch.php b/lib/exe/fetch.php new file mode 100644 index 000000000..3fa8777f1 --- /dev/null +++ b/lib/exe/fetch.php @@ -0,0 +1,230 @@ + + */ + + if(!defined('DOKU_INC')) define('DOKU_INC',realpath(dirname(__FILE__)).'/'); + require_once(DOKU_INC.'inc/init.php'); + require_once(DOKU_INC.'inc/common.php'); + require_once(DOKU_INC.'inc/pageutils.php'); + require_once(DOKU_INC.'inc/confutils.php'); + require_once(DOKU_INC.'inc/auth.php'); + $mimetypes = getMimeTypes(); + + //get input + $MEDIA = $_REQUEST['media']; + $CACHE = calc_cache($_REQUEST['cache']); + $WIDTH = $_REQUEST['w']; + $HEIGHT = $_REQUEST['h']; + list($EXT,$MIME) = mimetype($MEDIA); + if($EXT === false){ + $EXT = 'unknown'; + $MIME = 'application/octet-stream'; + } + + //media to local file + if(preg_match('#^(https?|ftp)://#i',$MEDIA)){ + //handle external media + $FILE = get_from_URL($MEDIA,$EXT,$CACHE); + if(!$FILE){ + //download failed - redirect to original URL + header('Location: '.$MEDIA); + exit; + } + }else{ + $MEDIA = cleanID($MEDIA); + if(empty($MEDIA)){ + header("HTTP/1.0 400 Bad Request"); + print 'Bad request'; + exit; + } + + //check permissions (namespace only) + if(auth_quickaclcheck(getNS($MEDIA).':X') < AUTH_READ){ + header("HTTP/1.0 401 Unauthorized"); + //fixme add some image for imagefiles + print 'Unauthorized'; + exit; + } + $FILE = mediaFN($MEDIA); + } + + //check file existance + if(!@file_exists($FILE)){ + header("HTTP/1.0 404 Not Found"); + //FIXME add some default broken image + print 'Not Found'; + exit; + } + + //handle image resizing + if((substr($MIME,0,5) == 'image') && $WIDTH){ + $FILE = get_resized($FILE,$EXT,$WIDTH,$HEIGHT); + } + + + //FIXME set sane cachecontrol headers + //FIXME handle conditional and partial requests + + //send file + header("Content-Type: $MIME"); + header('Last-Modified: '.date('r',filemtime($FILE))); + header('Content-Length: '.filesize($FILE)); + + //application mime type is downloadable + if(substr($MIME,0,11) == 'application'){ + header('Content-Disposition: attachment; filename="'.basename($FILE).'"'); + } + + $fp = @fopen($FILE,"rb"); + if($fp){ + fpassthru($fp); //does a close itself + }else{ + header("HTTP/1.0 500 Internal Server Error"); + print "Could not read $FILE - bad permissions?"; + } + +/* ------------------------------------------------------------------------ */ + +/** + * Resizes the given image to the given size + * + * @author Andreas Gohr + */ +function get_resized($file, $ext, $w, $h=0){ + global $conf; + + $md5 = md5($file); + $info = getimagesize($file); + if(!$h) $h = round(($w * $info[1]) / $info[0]); + + + //cache + $local = $conf['mediadir'].'/_cache/'.$md5.'.'.$w.'x'.$h.'.'.$ext; + $mtime = @filemtime($local); // 0 if not exists + + if( $mtime > filemtime($file) || resize_image($ext,$file,$info[0],$info[1],$local,$w,$h) ){ + return $local; + } + //still here? resizing failed + return $file; +} + +/** + * Returns the wanted cachetime in seconds + * + * Resolves named constants + * + * @author Andreas Gohr + */ +function calc_cache($cache){ + global $conf; + + if(strtolower($cache) == 'nocache') return 0; //never cache + if(strtolower($cache) == 'recache') return $conf['cachetime']; //use standard cache + return -1; //cache endless +} + +/** + * Download a remote file and return local filename + * + * returns false if download fails. Uses cached file if available and + * wanted + * + * @author Andreas Gohr + */ +function get_from_URL($url,$ext,$cache){ + global $conf; + + $url = strtolower($url); + $md5 = md5($url); + + $local = $conf['mediadir']."/_cache/$md5.$ext"; + $mtime = @filemtime($local); // 0 if not exists + + //decide if download needed: + + // never cache exists but no endless cache not exists or expired + if( $cache == 0 || ($mtime != 0 && $cache != -1) || $mtime < time()-$cache ){ + if(io_download($url,$local)){ + return $local; + }else{ + return false; + } + } + + //if cache exists use it else + if($mtime) return $local; + + //else return false + return false; +} + +/** + * resize images + * + * @author Andreas Gohr + */ +function resize_image($ext,$from,$from_w,$from_h,$to,$to_w,$to_h){ + global $conf; + + if($conf['gdlib'] < 1) return false; //no GDlib available or wanted + + // create an image of the given filetype + if ($ext == 'jpg' || $ext == 'jpeg'){ + if(!function_exists("imagecreatefromjpeg")) return false; + $image = @imagecreatefromjpeg($from); + }elseif($ext == 'png') { + if(!function_exists("imagecreatefrompng")) return false; + $image = @imagecreatefrompng($from); + + }elseif($ext == 'gif') { + if(!function_exists("imagecreatefromgif")) return false; + $image = @imagecreatefromgif($from); + } + if(!$image) return false; + + if(($conf['gdlib']>1) && function_exists("imagecreatetruecolor")){ + $newimg = @imagecreatetruecolor ($to_w, $to_h); + } + if(!$newimg) $newimg = @imagecreate($to_w, $to_h); + if(!$newimg) return false; + + //keep png alpha channel if possible + if($ext == 'png' && $conf['gdlib']>1 && function_exists('imagesavealpha')){ + imagealphablending($newimg, false); + imagesavealpha($newimg,true); + } + + // create cachedir + io_makeFileDir($to); + + //try resampling first + if(function_exists("imagecopyresampled")){ + if(!@imagecopyresampled($newimg, $image, 0, 0, 0, 0, $to_w, $to_h, $from_w, $from_h)) { + imagecopyresized($newimg, $image, 0, 0, 0, 0, $to_w, $to_h, $from_w, $from_h); + } + }else{ + imagecopyresized($newimg, $image, 0, 0, 0, 0, $to_w, $to_h, $from_w, $from_h); + } + + if ($ext == 'jpg' || $ext == 'jpeg'){ + if(!function_exists("imagejpeg")) return false; + return imagejpeg($newimg, $to, 70); + }elseif($ext == 'png') { + if(!function_exists("imagepng")) return false; + return imagepng($newimg, $to); + }elseif($ext == 'gif') { + if(!function_exists("imagegif")) return false; + return imagegif($newimg, $to); + } + + return false; +} + + +//Setup VIM: ex: et ts=2 enc=utf-8 : +?> diff --git a/lib/exe/media.php b/lib/exe/media.php new file mode 100644 index 000000000..5ca3bd360 --- /dev/null +++ b/lib/exe/media.php @@ -0,0 +1,133 @@ += AUTH_UPLOAD){ + $UPLOADOK = true; + //create the given namespace (just for beautification) + $mdir = $conf['mediadir'].'/'.utf8_encodeFN(str_replace(':','/',$NS)); + io_makeFileDir("$mdir/xxx"); + }else{ + $UPLOADOK = false; + } + + //handle deletion + if($DEL && $AUTH >= AUTH_DELETE){ + media_delete($DEL); + } + + //handle upload + if($_FILES['upload']['tmp_name'] && $UPLOADOK){ + media_upload($NS,$AUTH); + } + + //start output and load template + header('Content-Type: text/html; charset=utf-8'); + include(DOKU_INC.'lib/tpl/'.$conf['template'].'/lib/exe/media.php'); + + //restore old umask + umask($conf['oldumask']); + +/**********************************************/ + +/** + * Deletes mediafiles - Auth is not handled here! + * + * @author Andreas Gohr + */ +function media_delete($delid){ + $file = mediaFN($delid); + if(@unlink($file)){ + return true; + } + //something went wrong + msg("'$file' couldn't be deleted - check permissions",-1); + return false; +} + +/** + * Handles Mediafile uploads + * + * @author Andreas Gohr + */ +function media_upload($NS,$AUTH){ + require_once(DOKU_INC.'inc/confutils.php'); + global $lang; + global $conf; + + // get file + $id = $_POST['id']; + $file = $_FILES['upload']; + // get id + if(empty($id)) $id = $file['name']; + $id = cleanID($NS.':'.$id); + // get filename + $fn = mediaFN($id); + + // get filetype regexp + $types = array_keys(getMimeTypes()); + $types = array_map(create_function('$q','return preg_quote($q,"/");'),$types); + $regex = join('|',$types); + + // we set the umask here but this doesn't really help + // because a temp file was created already + umask($conf['umask']); + if(preg_match('/\.('.$regex.')$/i',$fn)){ + //check for overwrite + if(@file_exists($fn) && (!$_POST['ow'] || $AUTH < AUTH_DELETE)){ + msg($lang['uploadexist'],0); + return false; + } + // prepare directory + io_makeFileDir($fn); + if(move_uploaded_file($file['tmp_name'], $fn)) { + // set the correct permission here + chmod($fn, 0777 - $conf['umask']); + msg($lang['uploadsucc'],1); + return true; + }else{ + msg($lang['uploadfail'],-1); + } + }else{ + msg($lang['uploadwrong'],-1); + } + return false; +} + +/** + * Userfunction for html_buildlist + * + * Prints available media namespaces + * + * @author Andreas Gohr + */ +function media_html_list_namespaces($item){ + $ret = ''; + $ret .= ''; + $pos = strrpos($item['id'], ':'); + $ret .= substr($item['id'], $pos > 0 ? $pos + 1 : 0); + $ret .= ''; + return $ret; +} + +?> diff --git a/lib/images/arrow_down.png b/lib/images/arrow_down.png new file mode 100644 index 000000000..cc0ab149c Binary files /dev/null and b/lib/images/arrow_down.png differ diff --git a/lib/images/arrow_up.png b/lib/images/arrow_up.png new file mode 100644 index 000000000..3031122e5 Binary files /dev/null and b/lib/images/arrow_up.png differ diff --git a/lib/images/blank.gif b/lib/images/blank.gif new file mode 100644 index 000000000..9935f8210 Binary files /dev/null and b/lib/images/blank.gif differ diff --git a/lib/images/del.png b/lib/images/del.png new file mode 100644 index 000000000..a3260d718 Binary files /dev/null and b/lib/images/del.png differ diff --git a/lib/images/diff.png b/lib/images/diff.png new file mode 100644 index 000000000..0b98d79ac Binary files /dev/null and b/lib/images/diff.png differ diff --git a/lib/images/error.png b/lib/images/error.png new file mode 100644 index 000000000..ad2ca6ee2 Binary files /dev/null and b/lib/images/error.png differ diff --git a/lib/images/favicon.ico b/lib/images/favicon.ico new file mode 100644 index 000000000..8b9616abb Binary files /dev/null and b/lib/images/favicon.ico differ diff --git a/lib/images/history.png b/lib/images/history.png new file mode 100644 index 000000000..ef9e311d3 Binary files /dev/null and b/lib/images/history.png differ diff --git a/lib/images/info.png b/lib/images/info.png new file mode 100644 index 000000000..ee5f3f5ad Binary files /dev/null and b/lib/images/info.png differ diff --git a/lib/images/interwiki/amazon.de.gif b/lib/images/interwiki/amazon.de.gif new file mode 100644 index 000000000..f52c1c581 Binary files /dev/null and b/lib/images/interwiki/amazon.de.gif differ diff --git a/lib/images/interwiki/amazon.gif b/lib/images/interwiki/amazon.gif new file mode 100644 index 000000000..f52c1c581 Binary files /dev/null and b/lib/images/interwiki/amazon.gif differ diff --git a/lib/images/interwiki/amazon.uk.gif b/lib/images/interwiki/amazon.uk.gif new file mode 100644 index 000000000..f52c1c581 Binary files /dev/null and b/lib/images/interwiki/amazon.uk.gif differ diff --git a/lib/images/interwiki/bug.gif b/lib/images/interwiki/bug.gif new file mode 100644 index 000000000..3432b8d57 Binary files /dev/null and b/lib/images/interwiki/bug.gif differ diff --git a/lib/images/interwiki/coral.gif b/lib/images/interwiki/coral.gif new file mode 100644 index 000000000..0f9f67587 Binary files /dev/null and b/lib/images/interwiki/coral.gif differ diff --git a/lib/images/interwiki/doku.gif b/lib/images/interwiki/doku.gif new file mode 100644 index 000000000..7dc4248e8 Binary files /dev/null and b/lib/images/interwiki/doku.gif differ diff --git a/lib/images/interwiki/google.gif b/lib/images/interwiki/google.gif new file mode 100644 index 000000000..fb39f6152 Binary files /dev/null and b/lib/images/interwiki/google.gif differ diff --git a/lib/images/interwiki/meatball.gif b/lib/images/interwiki/meatball.gif new file mode 100644 index 000000000..7ac545436 Binary files /dev/null and b/lib/images/interwiki/meatball.gif differ diff --git a/lib/images/interwiki/phpfn.gif b/lib/images/interwiki/phpfn.gif new file mode 100644 index 000000000..638d4c450 Binary files /dev/null and b/lib/images/interwiki/phpfn.gif differ diff --git a/lib/images/interwiki/sb.gif b/lib/images/interwiki/sb.gif new file mode 100644 index 000000000..e272a29b7 Binary files /dev/null and b/lib/images/interwiki/sb.gif differ diff --git a/lib/images/interwiki/wiki.gif b/lib/images/interwiki/wiki.gif new file mode 100644 index 000000000..e8dc5d274 Binary files /dev/null and b/lib/images/interwiki/wiki.gif differ diff --git a/lib/images/interwiki/wp.gif b/lib/images/interwiki/wp.gif new file mode 100644 index 000000000..ca853b8c9 Binary files /dev/null and b/lib/images/interwiki/wp.gif differ diff --git a/lib/images/interwiki/wpde.gif b/lib/images/interwiki/wpde.gif new file mode 100644 index 000000000..ca853b8c9 Binary files /dev/null and b/lib/images/interwiki/wpde.gif differ diff --git a/lib/images/interwiki/wpmeta.gif b/lib/images/interwiki/wpmeta.gif new file mode 100644 index 000000000..ca853b8c9 Binary files /dev/null and b/lib/images/interwiki/wpmeta.gif differ diff --git a/lib/images/larger.gif b/lib/images/larger.gif new file mode 100644 index 000000000..e137c92fa Binary files /dev/null and b/lib/images/larger.gif differ diff --git a/lib/images/loading.gif b/lib/images/loading.gif new file mode 100644 index 000000000..240bd88c5 Binary files /dev/null and b/lib/images/loading.gif differ diff --git a/lib/images/smaller.gif b/lib/images/smaller.gif new file mode 100644 index 000000000..66d3a51e7 Binary files /dev/null and b/lib/images/smaller.gif differ diff --git a/lib/images/smileys/delete.gif b/lib/images/smileys/delete.gif new file mode 100644 index 000000000..d668348b9 Binary files /dev/null and b/lib/images/smileys/delete.gif differ diff --git a/lib/images/smileys/fixme.gif b/lib/images/smileys/fixme.gif new file mode 100644 index 000000000..b66ea99d6 Binary files /dev/null and b/lib/images/smileys/fixme.gif differ diff --git a/lib/images/smileys/icon_arrow.gif b/lib/images/smileys/icon_arrow.gif new file mode 100644 index 000000000..2880055cc Binary files /dev/null and b/lib/images/smileys/icon_arrow.gif differ diff --git a/lib/images/smileys/icon_biggrin.gif b/lib/images/smileys/icon_biggrin.gif new file mode 100644 index 000000000..d3527723c Binary files /dev/null and b/lib/images/smileys/icon_biggrin.gif differ diff --git a/lib/images/smileys/icon_confused.gif b/lib/images/smileys/icon_confused.gif new file mode 100644 index 000000000..0c49e0698 Binary files /dev/null and b/lib/images/smileys/icon_confused.gif differ diff --git a/lib/images/smileys/icon_cool.gif b/lib/images/smileys/icon_cool.gif new file mode 100644 index 000000000..cead0306c Binary files /dev/null and b/lib/images/smileys/icon_cool.gif differ diff --git a/lib/images/smileys/icon_cry.gif b/lib/images/smileys/icon_cry.gif new file mode 100644 index 000000000..7d54b1f99 Binary files /dev/null and b/lib/images/smileys/icon_cry.gif differ diff --git a/lib/images/smileys/icon_doubt.gif b/lib/images/smileys/icon_doubt.gif new file mode 100644 index 000000000..fd7903b19 Binary files /dev/null and b/lib/images/smileys/icon_doubt.gif differ diff --git a/lib/images/smileys/icon_doubt2.gif b/lib/images/smileys/icon_doubt2.gif new file mode 100644 index 000000000..eb4b70b66 Binary files /dev/null and b/lib/images/smileys/icon_doubt2.gif differ diff --git a/lib/images/smileys/icon_eek.gif b/lib/images/smileys/icon_eek.gif new file mode 100644 index 000000000..5d3978106 Binary files /dev/null and b/lib/images/smileys/icon_eek.gif differ diff --git a/lib/images/smileys/icon_evil.gif b/lib/images/smileys/icon_evil.gif new file mode 100644 index 000000000..ab1aa8e12 Binary files /dev/null and b/lib/images/smileys/icon_evil.gif differ diff --git a/lib/images/smileys/icon_exclaim.gif b/lib/images/smileys/icon_exclaim.gif new file mode 100644 index 000000000..6e50e2eec Binary files /dev/null and b/lib/images/smileys/icon_exclaim.gif differ diff --git a/lib/images/smileys/icon_frown.gif b/lib/images/smileys/icon_frown.gif new file mode 100644 index 000000000..d2ac78c04 Binary files /dev/null and b/lib/images/smileys/icon_frown.gif differ diff --git a/lib/images/smileys/icon_fun.gif b/lib/images/smileys/icon_fun.gif new file mode 100644 index 000000000..a8bb8a303 Binary files /dev/null and b/lib/images/smileys/icon_fun.gif differ diff --git a/lib/images/smileys/icon_idea.gif b/lib/images/smileys/icon_idea.gif new file mode 100644 index 000000000..a40ae0d7e Binary files /dev/null and b/lib/images/smileys/icon_idea.gif differ diff --git a/lib/images/smileys/icon_kaddi.gif b/lib/images/smileys/icon_kaddi.gif new file mode 100644 index 000000000..1410f7f1e Binary files /dev/null and b/lib/images/smileys/icon_kaddi.gif differ diff --git a/lib/images/smileys/icon_lol.gif b/lib/images/smileys/icon_lol.gif new file mode 100644 index 000000000..374ba150f Binary files /dev/null and b/lib/images/smileys/icon_lol.gif differ diff --git a/lib/images/smileys/icon_mrgreen.gif b/lib/images/smileys/icon_mrgreen.gif new file mode 100644 index 000000000..b54cd0f94 Binary files /dev/null and b/lib/images/smileys/icon_mrgreen.gif differ diff --git a/lib/images/smileys/icon_neutral.gif b/lib/images/smileys/icon_neutral.gif new file mode 100644 index 000000000..4f311567e Binary files /dev/null and b/lib/images/smileys/icon_neutral.gif differ diff --git a/lib/images/smileys/icon_question.gif b/lib/images/smileys/icon_question.gif new file mode 100644 index 000000000..9d072265b Binary files /dev/null and b/lib/images/smileys/icon_question.gif differ diff --git a/lib/images/smileys/icon_razz.gif b/lib/images/smileys/icon_razz.gif new file mode 100644 index 000000000..29da2a2fc Binary files /dev/null and b/lib/images/smileys/icon_razz.gif differ diff --git a/lib/images/smileys/icon_redface.gif b/lib/images/smileys/icon_redface.gif new file mode 100644 index 000000000..ad7628320 Binary files /dev/null and b/lib/images/smileys/icon_redface.gif differ diff --git a/lib/images/smileys/icon_rolleyes.gif b/lib/images/smileys/icon_rolleyes.gif new file mode 100644 index 000000000..d7f5f2f4b Binary files /dev/null and b/lib/images/smileys/icon_rolleyes.gif differ diff --git a/lib/images/smileys/icon_sad.gif b/lib/images/smileys/icon_sad.gif new file mode 100644 index 000000000..d2ac78c04 Binary files /dev/null and b/lib/images/smileys/icon_sad.gif differ diff --git a/lib/images/smileys/icon_silenced.gif b/lib/images/smileys/icon_silenced.gif new file mode 100644 index 000000000..448399b2b Binary files /dev/null and b/lib/images/smileys/icon_silenced.gif differ diff --git a/lib/images/smileys/icon_smile.gif b/lib/images/smileys/icon_smile.gif new file mode 100644 index 000000000..7b1f6d304 Binary files /dev/null and b/lib/images/smileys/icon_smile.gif differ diff --git a/lib/images/smileys/icon_smile2.gif b/lib/images/smileys/icon_smile2.gif new file mode 100644 index 000000000..769639d32 Binary files /dev/null and b/lib/images/smileys/icon_smile2.gif differ diff --git a/lib/images/smileys/icon_surprised.gif b/lib/images/smileys/icon_surprised.gif new file mode 100644 index 000000000..cb2142431 Binary files /dev/null and b/lib/images/smileys/icon_surprised.gif differ diff --git a/lib/images/smileys/icon_twisted.gif b/lib/images/smileys/icon_twisted.gif new file mode 100644 index 000000000..502fe247e Binary files /dev/null and b/lib/images/smileys/icon_twisted.gif differ diff --git a/lib/images/smileys/icon_wink.gif b/lib/images/smileys/icon_wink.gif new file mode 100644 index 000000000..d14828804 Binary files /dev/null and b/lib/images/smileys/icon_wink.gif differ diff --git a/lib/images/thumbup.gif b/lib/images/thumbup.gif new file mode 100644 index 000000000..c96d73c71 Binary files /dev/null and b/lib/images/thumbup.gif differ diff --git a/lib/images/toolbar/bold.png b/lib/images/toolbar/bold.png new file mode 100644 index 000000000..d12c5710e Binary files /dev/null and b/lib/images/toolbar/bold.png differ diff --git a/lib/images/toolbar/code.png b/lib/images/toolbar/code.png new file mode 100644 index 000000000..8f74d8101 Binary files /dev/null and b/lib/images/toolbar/code.png differ diff --git a/lib/images/toolbar/empty.png b/lib/images/toolbar/empty.png new file mode 100644 index 000000000..e606cfd07 Binary files /dev/null and b/lib/images/toolbar/empty.png differ diff --git a/lib/images/toolbar/extlink.png b/lib/images/toolbar/extlink.png new file mode 100644 index 000000000..22971725c Binary files /dev/null and b/lib/images/toolbar/extlink.png differ diff --git a/lib/images/toolbar/fonth1.png b/lib/images/toolbar/fonth1.png new file mode 100644 index 000000000..13d52b979 Binary files /dev/null and b/lib/images/toolbar/fonth1.png differ diff --git a/lib/images/toolbar/fonth2.png b/lib/images/toolbar/fonth2.png new file mode 100644 index 000000000..8e39a14de Binary files /dev/null and b/lib/images/toolbar/fonth2.png differ diff --git a/lib/images/toolbar/fonth3.png b/lib/images/toolbar/fonth3.png new file mode 100644 index 000000000..80fd308e7 Binary files /dev/null and b/lib/images/toolbar/fonth3.png differ diff --git a/lib/images/toolbar/fonth4.png b/lib/images/toolbar/fonth4.png new file mode 100644 index 000000000..e3a333535 Binary files /dev/null and b/lib/images/toolbar/fonth4.png differ diff --git a/lib/images/toolbar/fonth5.png b/lib/images/toolbar/fonth5.png new file mode 100644 index 000000000..e9fc8bb56 Binary files /dev/null and b/lib/images/toolbar/fonth5.png differ diff --git a/lib/images/toolbar/image.png b/lib/images/toolbar/image.png new file mode 100644 index 000000000..f64493125 Binary files /dev/null and b/lib/images/toolbar/image.png differ diff --git a/lib/images/toolbar/italic.png b/lib/images/toolbar/italic.png new file mode 100644 index 000000000..f4ecd0ddf Binary files /dev/null and b/lib/images/toolbar/italic.png differ diff --git a/lib/images/toolbar/link.png b/lib/images/toolbar/link.png new file mode 100644 index 000000000..41fddbb28 Binary files /dev/null and b/lib/images/toolbar/link.png differ diff --git a/lib/images/toolbar/list.png b/lib/images/toolbar/list.png new file mode 100644 index 000000000..ffae5cfbf Binary files /dev/null and b/lib/images/toolbar/list.png differ diff --git a/lib/images/toolbar/list_ul.png b/lib/images/toolbar/list_ul.png new file mode 100644 index 000000000..b86bcef7d Binary files /dev/null and b/lib/images/toolbar/list_ul.png differ diff --git a/lib/images/toolbar/rule.png b/lib/images/toolbar/rule.png new file mode 100644 index 000000000..a432b206e Binary files /dev/null and b/lib/images/toolbar/rule.png differ diff --git a/lib/images/toolbar/sig.png b/lib/images/toolbar/sig.png new file mode 100644 index 000000000..2917048f6 Binary files /dev/null and b/lib/images/toolbar/sig.png differ diff --git a/lib/images/toolbar/underline.png b/lib/images/toolbar/underline.png new file mode 100644 index 000000000..db07038fd Binary files /dev/null and b/lib/images/toolbar/underline.png differ diff --git a/lib/plugins/info/syntax.php b/lib/plugins/info/syntax.php new file mode 100644 index 000000000..f0afcf2ec --- /dev/null +++ b/lib/plugins/info/syntax.php @@ -0,0 +1,110 @@ + + */ + +if(!defined('DOKU_INC')) define('DOKU_INC',realpath(dirname(__FILE__).'/../../').'/'); +if(!defined('DOKU_PLUGIN')) define('DOKU_PLUGIN',DOKU_INC.'lib/plugins/'); +require_once(DOKU_PLUGIN.'syntax.php'); + +/** + * All DokuWiki plugins to extend the parser/rendering mechanism + * need to inherit from this class + */ +class syntax_plugin_info extends DokuWiki_Syntax_Plugin { + + /** + * What kind of syntax are we? + */ + function getType(){ + return 'substition'; + } + + /** + * Where to sort in? + */ + function getSort(){ + return 155; + } + + + /** + * Connect pattern to lexer + */ + function connectTo($mode) { + $this->Lexer->addSpecialPattern('~~INFO:\w+~~',$mode,'plugin_info'); + } + + + /** + * Handle the match + */ + function handle($match, $state, $pos, &$handler){ + $match = substr($match,7,-2); //strip ~~INFO: from start and ~~ from end + return array(strtolower($match)); + } + + /** + * Create output + */ + function render($mode, &$renderer, $data) { + if($mode == 'xhtml'){ + //handle various info stuff + switch ($data[0]){ + case 'version'; + $renderer->doc .= getVersion(); + break; + case 'syntaxmodes'; + $renderer->doc .= $this->_syntaxmodes_xhtml(); + break; + case 'syntaxtypes'; + $renderer->doc .= $this->_syntaxtypes_xhtml(); + break; + default: + $renderer->doc .= "no info about ".htmlspecialchars($data[0]); + } + return true; + } + return false; + } + + /** + * lists all known syntax types and their registered modes + */ + function _syntaxtypes_xhtml(){ + global $PARSER_MODES; + $doc = ''; + + $doc .= ''; + foreach($PARSER_MODES as $mode => $modes){ + $doc .= ''; + $doc .= ''; + $doc .= ''; + $doc .= ''; + } + $doc .= '
'; + $doc .= $mode; + $doc .= ''; + $doc .= join(', ',$modes); + $doc .= '
'; + return $doc; + } + + /** + * lists all known syntax modes and their sorting value + */ + function _syntaxmodes_xhtml(){ + $modes = p_get_parsermodes(); + $doc = ''; + + foreach ($modes as $mode){ + $doc .= $mode['mode'].' ('.$mode['sort'].'), '; + } + return $doc; + } +} + +//Setup VIM: ex: et ts=4 enc=utf-8 : diff --git a/lib/plugins/syntax.php b/lib/plugins/syntax.php new file mode 100644 index 000000000..303c0de33 --- /dev/null +++ b/lib/plugins/syntax.php @@ -0,0 +1,66 @@ + + */ + +if(!defined('DOKU_INC')) define('DOKU_INC',realpath(dirname(__FILE__).'/../').'/'); +if(!defined('DOKU_PLUGIN')) define('DOKU_PLUGIN',DOKU_INC.'lib/plugins/'); +require_once(DOKU_INC.'inc/parser/parser.php'); + +/** + * All DokuWiki plugins to extend the parser/rendering mechanism + * need to inherit from this class + */ +class DokuWiki_Syntax_Plugin extends Doku_Parser_Mode { + + /** + * Needs to return one of the mode types defined in $PARSER_MODES in parser.php + */ + function getType(){ + trigger_error('getType() not implemented in '.get_class($this), E_USER_WARNING); + } + + /** + * Handler to prepare matched data for the rendering process + * + * Usually you should only need the $match param. + * + * @param $match string The text matched by the patterns + * @param $state int The lexer state for the match + * @param $pos int The character position of the matched text + * @param $handler ref Reference to the Doku_Handler object + * @return array Return an array with all data you want to use in render + */ + function handle($match, $state, $pos, &$handler){ + trigger_error('handle() not implemented in '.get_class($this), E_USER_WARNING); + } + + /** + * Handles the actual output creation. + * + * The function should always check for the given mode and return false + * when a mode isn't supported. + * + * $renderer contains a reference to the renderer object which is + * currently handling the rendering. You need to use it for writing + * the output. How this is done depends on the renderer used (specified + * by $mode + * + * The contents of the $data array depends on what the handler() function above + * created + * + * @param $mode string current Rendermode + * @param $renderer ref reference to the current renderer object + * @param $data array data created by handler() + * @return boolean rendered correctly? + */ + function render($mode, &$renderer, $data) { + trigger_error('render() not implemented in '.get_class($this), E_USER_WARNING); + } + +} + +//Setup VIM: ex: et ts=4 enc=utf-8 : diff --git a/lib/scripts/ajax.js b/lib/scripts/ajax.js new file mode 100644 index 000000000..b3c32e950 --- /dev/null +++ b/lib/scripts/ajax.js @@ -0,0 +1,51 @@ +//prepare class +function ajax_qsearch_class(){ + this.sack = null; + this.inObj = null; + this.outObj = null; + this.timer = null; +} + +//create global object and add functions +var ajax_qsearch = new ajax_qsearch_class(); +ajax_qsearch.sack = new sack(DOKU_BASE + 'lib/exe/ajax.php'); +ajax_qsearch.sack.AjaxFailedAlert = ''; +ajax_qsearch.sack.encodeURIString = false; + +ajax_qsearch.init = function(inID,outID){ + if(ajax_qsearch.inObj == null) + ajax_qsearch.inObj = document.getElementById(inID); + if(ajax_qsearch.outObj == null) + ajax_qsearch.outObj = document.getElementById(outID); +} + +ajax_qsearch.clear = function(){ + ajax_qsearch.outObj.style.display = 'none'; + ajax_qsearch.outObj.innerHTML = ''; + if(ajax_qsearch.timer != null){ + window.clearTimeout(ajax_qsearch.timer); + ajax_qsearch.timer = null; + } +} + +ajax_qsearch.exec = function(){ + ajax_qsearch.clear(); + var value = ajax_qsearch.inObj.value; + if(value == '') return; + ajax_qsearch.sack.runAJAX('call=qsearch&q='+encodeURI(value)); +} + +ajax_qsearch.sack.onCompletion = function(){ + var data = ajax_qsearch.sack.response; + if(data == '') return; + + ajax_qsearch.outObj.innerHTML = data; + ajax_qsearch.outObj.style.display = 'block'; +} + +ajax_qsearch.call = function(inID,outID){ + ajax_qsearch.init(inID,outID); + ajax_qsearch.clear(); + ajax_qsearch.timer = window.setTimeout("ajax_qsearch.exec()",500); +} + diff --git a/lib/scripts/pngbehavior.htc b/lib/scripts/pngbehavior.htc new file mode 100644 index 000000000..d1db8e765 --- /dev/null +++ b/lib/scripts/pngbehavior.htc @@ -0,0 +1,53 @@ +// this is an ugly fix to make Internet Explorer work with transparent +// PNG images - do your self a favour and use a real browser! + + + + + diff --git a/lib/scripts/script.js b/lib/scripts/script.js new file mode 100644 index 000000000..5ad930281 --- /dev/null +++ b/lib/scripts/script.js @@ -0,0 +1,456 @@ +/** + * Some of these scripts were taken from wikipedia.org and were modified for DokuWiki + */ + +/** + * Some browser detection + */ +var clientPC = navigator.userAgent.toLowerCase(); // Get client info +var is_gecko = ((clientPC.indexOf('gecko')!=-1) && (clientPC.indexOf('spoofer')==-1) + && (clientPC.indexOf('khtml') == -1) && (clientPC.indexOf('netscape/7.0')==-1)); +var is_safari = ((clientPC.indexOf('AppleWebKit')!=-1) && (clientPC.indexOf('spoofer')==-1)); +var is_khtml = (navigator.vendor == 'KDE' || ( document.childNodes && !document.all && !navigator.taintEnabled )); +if (clientPC.indexOf('opera')!=-1) { + var is_opera = true; + var is_opera_preseven = (window.opera && !document.childNodes); + var is_opera_seven = (window.opera && document.childNodes); +} + + +/** + * This function escapes some special chars + */ +function escapeQuotes(text) { + var re=new RegExp("'","g"); + text=text.replace(re,"\\'"); + re=new RegExp('"',"g"); + text=text.replace(re,'"'); + re=new RegExp("\\n","g"); + text=text.replace(re,"\\n"); + return text; +} + +/** + * Prints a animated gif to show the search is performed + * + * @author Andreas Gohr + */ +function showLoadBar(){ + if(document.getElementById){ + document.write(''); + } +} + +/** + * Disables the animated gif to show the search is done + * + * @author Andreas Gohr + */ +function hideLoadBar(){ + if(document.getElementById){ + document.getElementById('loading').style.display="none"; + } +} + +/** + * Checks if a summary was entered - if not the style is changed + * + * @author Andreas Gohr + */ +function summaryCheck(){ + if(document.getElementById){ + var sum = document.getElementById('summary'); + if(sum.value == ''){ + sum.className='missing'; + }else{ + sum.className='edit'; + } + } +} + +/** + * This function generates the actual toolbar buttons with localized text + * we use it to avoid creating the toolbar where javascript is not enabled + */ +function formatButton(imageFile, speedTip, tagOpen, tagClose, sampleText, accessKey) { + speedTip=escapeQuotes(speedTip); + tagOpen=escapeQuotes(tagOpen); + tagClose=escapeQuotes(tagClose); + sampleText=escapeQuotes(sampleText); + + document.write(""); + + document.write("\""+"); + document.write(""); + return; +} + +/** + * This function generates the actual toolbar buttons with localized text + * we use it to avoid creating the toolbar where javascript is not enabled + */ +function insertButton(imageFile, speedTip, value, accessKey) { + speedTip=escapeQuotes(speedTip); + value=escapeQuotes(value); + + document.write(""); + + document.write("\""+"); + document.write(""); + return; +} + +/** + * This adds a button for the MediaSelection Popup + */ +function mediaButton(imageFile, speedTip, accessKey, namespace) { + speedTip=escapeQuotes(speedTip); + document.write(""); + document.write("\""+"); + document.write(""); + return; +} + +/** + * apply tagOpen/tagClose to selection in textarea, use sampleText instead + * of selection if there is none copied and adapted from phpBB + * + * @author phpBB development team + * @author MediaWiki development team + * @author Andreas Gohr + * @author Jim Raynor + */ +function insertTags(tagOpen, tagClose, sampleText) { + var txtarea = document.editform.wikitext; + // IE + if(document.selection && !is_gecko) { + var theSelection = document.selection.createRange().text; + var replaced = true; + if(!theSelection){ + replaced = false; + theSelection=sampleText; + } + txtarea.focus(); + + // This has change + text = theSelection; + if(theSelection.charAt(theSelection.length - 1) == " "){// exclude ending space char, if any + theSelection = theSelection.substring(0, theSelection.length - 1); + r = document.selection.createRange(); + r.text = tagOpen + theSelection + tagClose + " "; + } else { + r = document.selection.createRange(); + r.text = tagOpen + theSelection + tagClose; + } + if(!replaced){ + r.moveStart('character',-text.length-tagClose.length); + r.moveEnd('character',-tagClose.length); + } + r.select(); + // Mozilla + } else if(txtarea.selectionStart || txtarea.selectionStart == '0') { + var replaced = false; + var startPos = txtarea.selectionStart; + var endPos = txtarea.selectionEnd; + if(endPos - startPos) replaced = true; + var scrollTop=txtarea.scrollTop; + var myText = (txtarea.value).substring(startPos, endPos); + if(!myText) { myText=sampleText;} + if(myText.charAt(myText.length - 1) == " "){ // exclude ending space char, if any + subst = tagOpen + myText.substring(0, (myText.length - 1)) + tagClose + " "; + } else { + subst = tagOpen + myText + tagClose; + } + txtarea.value = txtarea.value.substring(0, startPos) + subst + + txtarea.value.substring(endPos, txtarea.value.length); + txtarea.focus(); + + //set new selection + if(replaced){ + var cPos=startPos+(tagOpen.length+myText.length+tagClose.length); + txtarea.selectionStart=cPos; + txtarea.selectionEnd=cPos; + }else{ + txtarea.selectionStart=startPos+tagOpen.length; + txtarea.selectionEnd=startPos+tagOpen.length+myText.length; + } + txtarea.scrollTop=scrollTop; + // All others + } else { + var copy_alertText=alertText; + var re1=new RegExp("\\$1","g"); + var re2=new RegExp("\\$2","g"); + copy_alertText=copy_alertText.replace(re1,sampleText); + copy_alertText=copy_alertText.replace(re2,tagOpen+sampleText+tagClose); + var text; + if (sampleText) { + text=prompt(copy_alertText); + } else { + text=""; + } + if(!text) { text=sampleText;} + text=tagOpen+text+tagClose; + //append to the end + txtarea.value += "\n"+text; + + // in Safari this causes scrolling + if(!is_safari) { + txtarea.focus(); + } + + } + // reposition cursor if possible + if (txtarea.createTextRange) txtarea.caretPos = document.selection.createRange().duplicate(); +} + + +/* + * Insert the selected filename and close the window + * + * @see http://www.alexking.org/index.php?content=software/javascript/content.php + */ +function mediaSelect(file){ + insertAtCarret(opener.document.editform.wikitext,'{{'+file+'}}'); + window.close(); +} + +/* + * Insert the given value at the current cursor position + * + * @see http://www.alexking.org/index.php?content=software/javascript/content.php + */ +function insertAtCarret(field,value){ + //IE support + if (document.selection) { + field.focus(); + if(opener == null){ + sel = document.selection.createRange(); + }else{ + sel = opener.document.selection.createRange(); + } + sel.text = value; + //MOZILLA/NETSCAPE support + }else if (field.selectionStart || field.selectionStart == '0') { + var startPos = field.selectionStart; + var endPos = field.selectionEnd; + var scrollTop = field.scrollTop; + field.value = field.value.substring(0, startPos) + + value + + field.value.substring(endPos, field.value.length); + + field.focus(); + var cPos=startPos+(value.length); + field.selectionStart=cPos; + field.selectionEnd=cPos; + field.scrollTop=scrollTop; + } else { + field.value += "\n"+value; + } + // reposition cursor if possible + if (field.createTextRange) field.caretPos = document.selection.createRange().duplicate(); +} + +/** + * For the upload Dialog. Prefills the wikiname. + */ +function suggestWikiname(){ + var file = document.upload.upload.value; + + file = file.substr(file.lastIndexOf('/')+1); + file = file.substr(file.lastIndexOf('\\')+1); + + document.upload.id.value = file; +} + +/** + * This prints the switch to toggle the Table of Contents + */ +function showTocToggle(show,hide) { + if(document.getElementById) { + document.writeln(''); + } +} + +/** + * This toggles the visibility of the Table of Contents + */ +function toggleToc() { + var toc = document.getElementById('tocinside'); + var showlink=document.getElementById('showlink'); + var hidelink=document.getElementById('hidelink'); + if(toc.style.display == 'none') { + toc.style.display = tocWas; + hidelink.style.display=''; + showlink.style.display='none'; + } else { + tocWas = toc.style.display; + toc.style.display = 'none'; + hidelink.style.display='none'; + showlink.style.display=''; + + } +} + +/** + * Sizecontrol inspired by TikiWiki. This displays the buttons. + */ +function showSizeCtl(){ + if(document.getElementById) { + var textarea = document.getElementById('wikitext'); + var hgt = getCookie('DokuWikisizeCtl'); + if(hgt == null){ + textarea.style.height = '300px'; + }else{ + textarea.style.height = hgt; + } + document.writeln(''); + document.writeln(''); + } +} + +/** + * This sets the vertical size of the editbox + */ +function sizeCtl(val){ + var textarea = document.getElementById('wikitext'); + var height = parseInt(textarea.style.height.substr(0,textarea.style.height.length-2)); + height += val; + textarea.style.height = height+'px'; + + var now = new Date(); + fixDate(now); + now.setTime(now.getTime() + 365 * 24 * 60 * 60 * 1000); //expire in a year + setCookie('DokuWikisizeCtl',textarea.style.height,now); +} + + +/** + * global var used for not saved yet warning + */ +var textChanged = false; + +function svchk(){ + if(textChanged){ + return confirm(notSavedYet); + }else{ + return true; + } +} + +/** + * global variable for the locktimer + */ +var locktimerID; + +/** + * This starts a timer to remind the user of an expiring lock + * Accepts the delay in seconds and a text to display. + */ +function init_locktimer(delay,txt){ + txt = escapeQuotes(txt); + locktimerID = self.setTimeout("locktimer('"+txt+"')", delay*1000); +} + +/** + * This stops the timer and displays a message about the expiring lock + */ +function locktimer(txt){ + clearTimeout(locktimerID); + alert(txt); +} + +/* + * This sets a cookie by JavaScript + * + * @see http://www.webreference.com/js/column8/functions.html + */ +function setCookie(name, value, expires, path, domain, secure) { + var curCookie = name + "=" + escape(value) + + ((expires) ? "; expires=" + expires.toGMTString() : "") + + ((path) ? "; path=" + path : "") + + ((domain) ? "; domain=" + domain : "") + + ((secure) ? "; secure" : ""); + document.cookie = curCookie; +} + +/* + * This reads a cookie by JavaScript + * + * @see http://www.webreference.com/js/column8/functions.html + */ +function getCookie(name) { + var dc = document.cookie; + var prefix = name + "="; + var begin = dc.indexOf("; " + prefix); + if (begin == -1) { + begin = dc.indexOf(prefix); + if (begin != 0) return null; + } else + begin += 2; + var end = document.cookie.indexOf(";", begin); + if (end == -1) + end = dc.length; + return unescape(dc.substring(begin + prefix.length, end)); +} + +/* + * This is needed for the cookie functions + * + * @see http://www.webreference.com/js/column8/functions.html + */ +function fixDate(date) { + var base = new Date(0); + var skew = base.getTime(); + if (skew > 0) + date.setTime(date.getTime() - skew); +} + +/* + * This enables/disables checkboxes for acl-administration + * + * @author Frank Schubert + */ +function checkAclLevel(){ + if(document.getElementById) { + var scope = document.getElementById('acl_scope').value; + + //check for namespace + if( (scope.indexOf(":*") > 0) || (scope == "*") ){ + document.getElementsByName('acl_checkbox[4]')[0].disabled=false; + document.getElementsByName('acl_checkbox[8]')[0].disabled=false; + }else{ + document.getElementsByName('acl_checkbox[4]')[0].checked=false; + document.getElementsByName('acl_checkbox[8]')[0].checked=false; + + document.getElementsByName('acl_checkbox[4]')[0].disabled=true; + document.getElementsByName('acl_checkbox[8]')[0].disabled=true; + } + } +} diff --git a/lib/scripts/tw-sack.js b/lib/scripts/tw-sack.js new file mode 100644 index 000000000..8a9d12746 --- /dev/null +++ b/lib/scripts/tw-sack.js @@ -0,0 +1,95 @@ +// ====== Simple Ajax Code Kit ======= +// code by Gregory Wild-Smith (c)2005 +// http://twilightuniverse.com +// If you use this code please keep this credit intact. +// A link or email would be nice, but is not required. +// v1.01 + +function sack(file){ + this.AjaxFailedAlert = "Your browser doesn't support the extended functionality of this website, and therefore you have have an experience that differs from the intended one.\n"; + this.requestFile = file; + this.method = "POST"; + this.URLString = ""; + this.encodeURIString = true; + this.execute = false; + + this.onLoading = function() { }; + this.onLoaded = function() { }; + this.onInteractive = function() { }; + this.onCompletion = function() { }; + + this.createAJAX = function() { + try { + this.xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); + } catch (e) { + try { + this.xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); + } catch (oc) { + this.xmlhttp = null; + } + } + if(!this.xmlhttp && typeof XMLHttpRequest != "undefined") + this.xmlhttp = new XMLHttpRequest(); + if (!this.xmlhttp){ + // no XMLHttpRequest support, so no AJAX. + this.failed = true; + } + }; + + this.encodeURLString = function(string){ + varArray = string.split('&'); + for (i = 0; i < varArray.length; i++){ + urlVars = varArray[i].split('='); + if (urlVars[0].indexOf('amp;') != -1){ + urlVars[0] = urlVars[0].substring(4); + } + urlVars[0] = encodeURIComponent(urlVars[0]); + urlVars[1] = encodeURIComponent(urlVars[1]); + varArray[i] = urlVars.join("="); + } + return varArray.join('&'); + } + + this.runResponse = function(){ + eval(this.response); + } + + this.runAJAX = function(urlstring){ + if (urlstring){ this.URLString = urlstring; } + if (this.element) { this.elementObj = document.getElementById(this.element); } + if (this.xmlhttp) { + var self = this; // wierd fix for odd behavior where "this" wouldn't work in the readystate function. + this.xmlhttp.open(this.method, this.requestFile ,true); + if (this.method == "POST" && this.xmlhttp.setRequestHeader) { + this.xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded') + } + if (this.encodeURIString){ this.URLString = this.encodeURLString(this.URLString); } + this.xmlhttp.send(this.URLString); + this.xmlhttp.onreadystatechange = function() { + switch (self.xmlhttp.readyState){ + case 1: // Loading. + self.onLoading(); + break; + case 2: // Loaded. + self.onLoaded(); + break; + case 3: // Interactive - is called every 4096 bytes.. pretty much just tells you it's downloading data. + self.onInteractive(); + break; + case 4: // Completed. + self.response = self.xmlhttp.responseText; + self.responseXML = self.xmlhttp.responseXML; + self.onCompletion(); + if(self.execute){ self.runResponse(); } + if (self.elementObj) { + self.elementObj.innerHTML = self.response; + } + break; + } + }; + } + }; +this.createAJAX(); +//if(this.failed && this.AjaxFailedAlert){ alert(this.AjaxFailedAlert); } +} +//Setup VIM: ex: et ts=2 enc=utf-8 : diff --git a/lib/styles/feed.css b/lib/styles/feed.css new file mode 100644 index 000000000..0fcc222cd --- /dev/null +++ b/lib/styles/feed.css @@ -0,0 +1,63 @@ +rss channel, feed, RDF { + font: 80% "Lucida Grande", Verdana, Lucida, Helvetica, Arial, sans-serif; + background-color: White; + color: Black; + margin: 0; + padding: 0; +} + + +link, description, language, managingEditor, copyright, lastBuildDate, date, +pubDate, generator, webMaster, ttl, docs, tagline, author, copyright, +generator, content, created, issued, modified, subject, id, format, creator, +category { + display: none; +} + +item link, entry id { + display: block; + color:#436976; + text-decoration:underline; +} + +channel title, feed title { + display: block; + font-size:200%; + font-weight:bolder; + color:#436976; + text-decoration:none; + border-bottom: 20px solid #dee7ec; +} + +:root:before, :root:before { + content: "This data file is meant to be read in a XML feed reader. See document source." +} + +item, entry { + display: block; + margin: 1em 180px 1em 1em; + border-bottom: 1px solid #8cacbb; + padding-bottom: 1em; +} + +item title, entry title { + display: block; + background: transparent none; + border: 0px solid #ffffff; + padding: 0; + color: #222; + font-size: 1.4em; + font-weight: bold; +} + +item pubDate, entry modified, item date { + display: inline; + color: #AAA; + font: 1em trebuchet ms, arial, helvetica, sans-serif; +} + +item description, entry summary { + display: block; + clear: both; + padding-top: 0.5em; +} diff --git a/lib/styles/style.css b/lib/styles/style.css new file mode 100644 index 000000000..ff9bdf3ce --- /dev/null +++ b/lib/styles/style.css @@ -0,0 +1,44 @@ +div.clearer {clear: both; line-height: 0; height: 0;} + +div.error{ + background: #ff6666 url(../images/error.png) 0.5em 0px no-repeat; + font-size: 90%; + margin: 0px; + padding-left: 3em; +} + +div.info{ + background: #ffff66 url(../images/info.png) 0.5em 0px no-repeat; + font-size: 90%; + margin: 0; + padding-left: 3em; +} + +div.success{ + background: #66ff66 url(../images/thumbup.gif) 0.5em 0px no-repeat; + font-size: 90%; + margin: 0; + padding-left: 3em; +} + +/* syntax highlighting code */ +.code .br0 { color: #66cc66; } +.code .co1 { color: #808080; font-style: italic; } +.code .co2 { color: #808080; font-style: italic; } +.code .coMULTI { color: #808080; font-style: italic; } +.code .es0 { color: #000099; font-weight: bold; } +.code .kw1 { color: #b1b100; } +.code .kw2 { color: #000000; font-weight: bold; } +.code .kw3 { color: #000066; } +.code .kw4 { color: #993333; } +.code .kw5 { color: #0000ff; } +.code .me0 { color: #006600; } +.code .nu0 { color: #cc66cc; } +.code .re0 { color: #0000ff; } +.code .re1 { color: #0000ff; } +.code .re2 { color: #0000ff; } +.code .re4 { color: #009999; } +.code .sc0 { color: #00bbdd; } +.code .sc1 { color: #ddbb00; } +.code .sc2 { color: #009900; } +.code .st0 { color: #ff0000; } diff --git a/lib/tpl/default/design.css b/lib/tpl/default/design.css new file mode 100644 index 000000000..14c419df4 --- /dev/null +++ b/lib/tpl/default/design.css @@ -0,0 +1,642 @@ +/** + * Design elements for default Template + * + * @author Andreas Gohr + * @author Anika Henke + */ + +/* -------------- general elements --------------- */ + +body { + font: 80% "Lucida Grande", Verdana, Lucida, Helvetica, Arial, sans-serif; + background-color: White; + color: Black; + margin: 0; + padding: 0; +} + +/* the document */ +div.page { + margin-top: 4px; + margin-left: 1em; + margin-right: 2em; + text-align: justify; +} + +table { + font-size: 100%; + padding:0; + margin:0; +} + +tr,td,th {padding:0; margin:0;} + +img {border:0} + +p {padding:0; margin: 0 0 1.0em 0;} + +hr { + border: 0px; + border-top: 1px solid #8cacbb; + text-align:center; + height: 0px; +} + +div.nothing { + text-align:center; + margin: 2em; +} + +/* ---------------- forms ------------------------ */ + +form { + border: none; + margin: 0; + display: inline; +} + +label { + display: block; + text-align: right; + font-weight: bold; +} + +label.simple { + text-align: left; + font-weight: normal; +} + +label input.edit { + width: 50%; +} + +fieldset { + width: 300px; + text-align: center; + border: 1px solid #8cacbb; + padding: 0.5em; +} + +textarea.edit { + font-family:monospace; + border: 1px solid #8cacbb; + color: Black; + background-color: white; + font-size:14px; + padding: 3px; + width:100%; +} + +input.edit,select.edit { + font-size: 100%; + border: 1px solid #8cacbb; + height: 22px !important; + max-height: 22px !important; + min-height: 22px !important; + color: Black; + background-color: white; + vertical-align: middle; + padding: 1px; + display: inline; +} + +input.missing { + font-size: 100%; + border: 1px solid #8cacbb; + height: 22px !important; + max-height: 22px !important; + min-height: 22px !important; + color: Black; + background-color: #ffcccc; + vertical-align: middle; + padding: 1px; + display: inline; +} + +/* --------- buttons ------------------- */ + + +input.button { + border: 1px solid #8cacbb; + color: Black; + background-color: white; + vertical-align: middle; + text-decoration:none; + font-size: 100%; + cursor: pointer; + height: 22px !important; + max-height: 22px !important; + min-height: 22px !important; + margin: 1px; + display: inline; +} + +div.secedit input.button { + border: 1px solid #8cacbb; + color: Black; + background-color: white; + vertical-align: middle; + text-decoration:none; + margin: 0px; + padding: 0px; + font-size: 10px; + cursor: pointer; + height: 15px; + max-height: 15px !important; + min-height: 15px !important; + float:right; + display: inline; +} + +/* ----------- page navigator ------------- */ + +div.pagenav { + margin-top:1em; +} + +div.pagenav-prev { + text-align:right; + float:left; + width:50% +} + +div.pagenav-prev input.button { + margin-right:5px; +} + +div.pagenav-next { + text-align:left; + float:right; + width:50% +} + +div.pagenav-next input.button { + margin-left:5px; +} + +/* --------------- Links ------------------ */ + +a { + color:#436976; + text-decoration:none; +} +a:hover { + color:#000000; + text-decoration:underline; +} + +/* external link */ +a.urlextern{ + background: transparent url(images/link_icon.gif) 0px 1px no-repeat; + padding: 1px 0px 1px 16px; + color:#436976; + text-decoration:none; +} +a.urlextern:visited { + color:Purple; +} +a.urlextern:hover { + text-decoration:underline; +} + +/* windows share */ +a.windows{ + background: transparent url(images/windows.gif) 0px 1px no-repeat; + padding: 1px 0px 1px 16px; + color:#436976; + text-decoration:none; +} +a.windows:visited { + color:Purple; +} +a.windows:hover { + text-decoration:underline; +} + +/* interwiki link */ +a.interwiki{ + background: transparent url(images/interwiki.png) 0px 1px no-repeat; + padding-left: 16px; + color:#436976; + text-decoration:none; +} +a.interwiki:visited { + color:Purple; +} +a.interwiki:hover { + text-decoration:underline; +} + +/* link to some embedded media */ +a.media { + color:#436976; + text-decoration:none; +} +a.media:hover { + color:#436976; + text-decoration:underline +} + +/* email link */ +a.mail { + background: transparent url(images/mail_icon.gif) 0px 1px no-repeat; + padding: 1px 0px 1px 16px; + color:#436976; + text-decoration:none; +} +a.mail:hover { + text-decoration:underline; +} + +/* existing wikipage */ +a.wikilink1:link { color:#009900; text-decoration:none } +a.wikilink1:visited { color:#009900; text-decoration:none } +a.wikilink1:hover { color:#009900; text-decoration:underline } + +/* not existing wikipage */ +a.wikilink2:link { color:#FF3300; text-decoration:none } +a.wikilink2:visited { color:#FF3300; text-decoration:none } +a.wikilink2:hover { color:#FF3300; text-decoration:underline } + + +/* ------------- Page elements ----------------- */ + +div.preview{ + background:#f7f9fa; + margin-left:2em; + padding: 4px; + border: 1px dashed #000000; +} + +div.breadcrumbs{ + background-color: #f5f5f5; + font-size:80%; + color: #666666; + padding-left: 4px; +} + +span.user{ + color: #cccccc; + font-size: 90%; +} + +/* embedded images */ +img.media { + margin: 3px; +} + +img.medialeft { + border: 0; + float: left; + margin: 0 1.5em 0 0; +} + +img.mediaright { + border: 0; + float: right; + margin: 0 0 0 1.5em; +} + +img.mediacenter { + border: 0; + display: block; + margin-left: auto; + margin-right: auto; +} + +acronym { + cursor: help; + border-bottom: 1px dotted #000; +} + +/* general headline setup */ +h1, h2, h3, h4, h5 { + color: Black; + background-color: transparent; + font-family: "Lucida Grande", Verdana, Lucida, Helvetica, Arial, sans-serif; + font-size: 100%; + font-weight: normal; + margin-left: 0; + margin-right: 0; + margin-top: 0; + margin-bottom: 1em; + padding-left: 0; + padding-right: 0; + padding-top: 0.5em; + padding-bottom: 0; + border-bottom: 1px solid #8cacbb; + clear: left; +} + +/* special headlines */ +h1 {font-size: 160%; margin-left: 0px; font-weight: bold;} +h2 {font-size: 150%; margin-left: 20px;} +h3 {font-size: 140%; margin-left: 40px; border-bottom: none; font-weight: bold;} +h4 {font-size: 120%; margin-left: 60px; border-bottom: none; font-weight: bold;} +h5 {font-size: 100%; margin-left: 80px; border-bottom: none; font-weight: bold;} + +/* indent different sections */ +div.level1 {margin-left: 3px;} +div.level2 {margin-left: 23px;} +div.level3 {margin-left: 43px;} +div.level4 {margin-left: 63px;} +div.level5 {margin-left: 83px;} + +/* unordered lists */ +ul { + line-height: 1.5em; + list-style-type: square; + margin: 0 0 0.5em 1.5em; + padding: 0; + list-style-image: url(images/bullet.gif); +} + +/* ordered lists */ +ol { + line-height: 1.5em; + margin: 0 0 0.5em 1.5em; + padding: 0; + color: #638c9c; + font-weight: bold; + list-style-image: none; +} + +/* the list items overriding the ol definition */ +span.li { + color: #000000; + font-weight: normal; +} + +ol {list-style-type: decimal} +ol ol {list-style-type: upper-roman} +ol ol ol {list-style-type: lower-alpha} +ol ol ol ol {list-style-type: lower-greek} + +li.open { + list-style-image: url(images/open.gif); +} + +li.closed { + list-style-image: url(images/closed.gif); +} + +blockquote { + border-left: 2px solid #8cacbb; + padding-left: 3px; + margin-left: 0; +} + +/* code blocks by indention */ +pre.pre { + font-size: 120%; + padding: 0.5em; + border: 1px dashed #8cacbb; + color: Black; + background-color: #f7f9fa; + overflow: auto; +} + +/* code blocks by code tag */ +pre.code { + font-size: 120%; + padding: 0.5em; + border: 1px dashed #8cacbb; + color: Black; + background-color: #f7f9fa; + overflow: auto; +} + +/* inline code words */ +code { + font-size: 120%; +} + +/* code blocks by file tag */ +pre.file { + font-size: 120%; + padding: 0.5em; + border: 1px dashed #8cacbb; + color: Black; + background-color: #dee7ec; + overflow: auto; +} + +/* inline tables */ +table.inline { + background-color: #ffffff; + border-spacing: 0px; + border-collapse: collapse; +} + +table.inline th { + padding: 3px; + border: 1px solid #8cacbb; + background-color: #dee7ec; +} + +table.inline td { + padding: 3px; + border: 1px solid #8cacbb; +} + +.leftalign{ + text-align: left; +} + +.centeralign{ + text-align: center; +} + +.rightalign{ + text-align: right; +} + +/* ---------- table of contents ------------------- */ + +div.toc { + margin-left: 2em; + margin-top: 1.2em; + margin-bottom: 0; + float:right; + width: 200px; + font-size: 80%; + clear:both; +} + +div.tocheader { + padding: 3px; + border: 1px solid #8cacbb; + background-color: #dee7ec; + text-align: left; + font-weight:bold; + margin-bottom: 2px; +} + +div.toctoggle { + float:right; + margin-top:0.3em; + margin-right:3px; +} + +div.toctoggle img { + width:0.8em; + height:0.8em; +} + +#tocinside { + border: 1px solid #8cacbb; + background-color: #ffffff; + text-align: left; + padding-top: 0.5em; + padding-bottom: 0.7em; +} + +ul.toc { + list-style-type: none; + list-style-image: none; + line-height: 1.2em; + margin: 0; + padding: 0; + padding-left: 1em; +} + +ul.toc li { + background: transparent url(images/tocdot2.gif) 0 0.6em no-repeat; + padding-left:0.4em; +} + +ul.toc li.clear { + background-image: none; + padding-left:0.4em; +} + +a.toc { + color: #436976; + text-decoration:none; +} + +a.toc:hover { + color: #000000; + text-decoration:underline; +} + +/* ---------------------------- Diff rendering --------------------------*/ +table.diff { background:white; } +td.diff-blockheader {font-weight:bold} +td.diff-header { + border-bottom: 1px solid #8cacbb; + font-size:120%; +} +td.diff-addedline { + background:#ddffdd; + font-family: monospace; + font-size: 100%; +} +td.diff-deletedline { + background:#ffffbb; + font-family: monospace; + font-size: 100%; +} +td.diff-context { + background:#f7f9fa; + font-family: monospace; + font-size: 100%; +} +span.diffchange { color: red; } + +/* --------------------- footnotes -------------------------------- */ + +div.footnotes{ + clear:both; + border-top: 1px solid #8cacbb; + padding-left: 1em; + margin-top: 1em; +} + +div.fn{ + font-size:90%; +} + +a.fn_top{ + vertical-align:super; + font-size:80%; +} + +a.fn_bot{ + vertical-align:super; + font-size:80%; + font-weight:bold; +} + + +/* --------------- search result formating --------------- */ +.search_result{ + margin-bottom: 6px; + padding-left: 30px; + padding-right: 10px; +} + +.search_snippet{ + color: #999999; + font-size: 12px; + margin-left: 20px; +} + +.search_sep{ + color: #000000; +} + +.search_hit{ + color: #000000; + background: #FFFF99; +} + +div.search_quickresult{ + margin-bottom: 15px; + padding-bottom: 5px; + border-bottom: 1px dashed #8cacbb; + margin-left: 30px; + padding-right: 10px; +} + +div.search_quickhits { + margin-left: 1em; + float:left; + background: transparent url(images/bullet.gif) 0px 1px no-repeat; + padding: 1px 0px 1px 8px; + width: 30%; +} + +/* ------------------ Additional ---------------------- */ +.footerinc a img { + opacity: 0.5; +} + +.footerinc a:hover img { + opacity: 1; +} + +/* ---- Admin --- */ + +div.acladmin label { + text-align: left; + font-weight: normal; + display: inline; +} + +div.acladmin table{ + margin-left: 10%; + width: 80%; +} + +/* ---------- AJAX quicksearch ----------- */ + +div.ajax_qsearch { + position:absolute; + right:225px;; + text-align:left; + width: 200px; + background-color: #ff9; + opacity: 0.9; + display:none; +} diff --git a/lib/tpl/default/footer.html b/lib/tpl/default/footer.html new file mode 100644 index 000000000..577bb3b3c --- /dev/null +++ b/lib/tpl/default/footer.html @@ -0,0 +1,56 @@ + + +
+ Recent changes RSS feed + + Creative Commons License + + Donate + + Powered by PHP + + Valid XHTML 1.0 + + Valid CSS + + Driven by DokuWiki + + + + + +
diff --git a/lib/tpl/default/images/bullet.gif b/lib/tpl/default/images/bullet.gif new file mode 100644 index 000000000..b43de48a4 Binary files /dev/null and b/lib/tpl/default/images/bullet.gif differ diff --git a/lib/tpl/default/images/button-cc.gif b/lib/tpl/default/images/button-cc.gif new file mode 100644 index 000000000..5861d637f Binary files /dev/null and b/lib/tpl/default/images/button-cc.gif differ diff --git a/lib/tpl/default/images/button-css.png b/lib/tpl/default/images/button-css.png new file mode 100644 index 000000000..706325e1c Binary files /dev/null and b/lib/tpl/default/images/button-css.png differ diff --git a/lib/tpl/default/images/button-donate.gif b/lib/tpl/default/images/button-donate.gif new file mode 100644 index 000000000..ec682c6b1 Binary files /dev/null and b/lib/tpl/default/images/button-donate.gif differ diff --git a/lib/tpl/default/images/button-dw.png b/lib/tpl/default/images/button-dw.png new file mode 100644 index 000000000..39d5f56a9 Binary files /dev/null and b/lib/tpl/default/images/button-dw.png differ diff --git a/lib/tpl/default/images/button-php.gif b/lib/tpl/default/images/button-php.gif new file mode 100644 index 000000000..28f329aaa Binary files /dev/null and b/lib/tpl/default/images/button-php.gif differ diff --git a/lib/tpl/default/images/button-rss.png b/lib/tpl/default/images/button-rss.png new file mode 100644 index 000000000..b036f7152 Binary files /dev/null and b/lib/tpl/default/images/button-rss.png differ diff --git a/lib/tpl/default/images/button-xhtml.png b/lib/tpl/default/images/button-xhtml.png new file mode 100644 index 000000000..ec686442c Binary files /dev/null and b/lib/tpl/default/images/button-xhtml.png differ diff --git a/lib/tpl/default/images/closed.gif b/lib/tpl/default/images/closed.gif new file mode 100644 index 000000000..8414d4d69 Binary files /dev/null and b/lib/tpl/default/images/closed.gif differ diff --git a/lib/tpl/default/images/interwiki.png b/lib/tpl/default/images/interwiki.png new file mode 100644 index 000000000..73d6f8d39 Binary files /dev/null and b/lib/tpl/default/images/interwiki.png differ diff --git a/lib/tpl/default/images/link_icon.gif b/lib/tpl/default/images/link_icon.gif new file mode 100644 index 000000000..815ccb1b1 Binary files /dev/null and b/lib/tpl/default/images/link_icon.gif differ diff --git a/lib/tpl/default/images/mail_icon.gif b/lib/tpl/default/images/mail_icon.gif new file mode 100644 index 000000000..50a87a9a0 Binary files /dev/null and b/lib/tpl/default/images/mail_icon.gif differ diff --git a/lib/tpl/default/images/open.gif b/lib/tpl/default/images/open.gif new file mode 100644 index 000000000..f5d5c7e56 Binary files /dev/null and b/lib/tpl/default/images/open.gif differ diff --git a/lib/tpl/default/images/tocdot2.gif b/lib/tpl/default/images/tocdot2.gif new file mode 100644 index 000000000..3d39c2e73 Binary files /dev/null and b/lib/tpl/default/images/tocdot2.gif differ diff --git a/lib/tpl/default/images/windows.gif b/lib/tpl/default/images/windows.gif new file mode 100644 index 000000000..4f12acce1 Binary files /dev/null and b/lib/tpl/default/images/windows.gif differ diff --git a/lib/tpl/default/layout.css b/lib/tpl/default/layout.css new file mode 100644 index 000000000..fea7c58ab --- /dev/null +++ b/lib/tpl/default/layout.css @@ -0,0 +1,109 @@ +/** + * Tableless Layout for default template + * + * @author Andreas Gohr + * @author moraes + */ + + +/* -------------- top row --------------- */ +.header { + height:35px; + padding:3px 0 2px 2px; +} + +.pagename { + height:25px; + float:left; + font-size:200%; + font-weight:bolder; + color:#DEE7EC; + text-align:left; + vertical-align:middle; + padding:1px 0 0 1px; +} + +.pagename a:link, .pagename a:visited { + color:#436976; + text-decoration:none; +} + +.pagename a:hover, .pagename a:active { + color:#FF9933; +} + +.logo { + float:right; + font-size:220%; + font-weight:bolder; + text-align:right; + vertical-align:middle; +} + +.logo a:link, .logo a:visited, .logo a:hover, .logo a:active { + color:#dee7ec; + text-decoration:none; + font-variant:small-caps; + letter-spacing:2pt; +} + +/* --------------- top and bottom bar ---------------- */ +.bar { + height:25px; + border-top:1px solid #8CACBB; + border-bottom:1px solid #8CACBB; + background:#DEE7EC; + padding:2px; + margin:0; + clear: both; +} + +.bar-left { + float:left; +} + +.bar-right { + float:right; + text-align:right; +} + +#bar_bottom { + margin-bottom:3px; +} + +/* ------------- File Metadata ----------------------- */ + +div.meta { + clear: both; + margin-top: 1em; + color:#436976; + font-size:70%; +} + +div.meta div.user { + float:left; +} + +div.meta div.doc{ + text-align:right; +} + +/* --------------- Media Selection ----------------- */ + +div.uploadform { + margin-top: 0.5em; + border-top: 1px solid #8cacbb; +} + +.mediaselect-left { + float:left; + padding: 0.5em; + width:30%; +} + +.mediaselect-right { + float:right; + border-left: 1px solid #8cacbb; + padding: 0.5em; + width:65%; +} diff --git a/lib/tpl/default/main.php b/lib/tpl/default/main.php new file mode 100644 index 000000000..28ad48f6f --- /dev/null +++ b/lib/tpl/default/main.php @@ -0,0 +1,129 @@ + + + */ +?> + + + <?=$ID?> [<?=hsc($conf['title'])?>] + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ [[]] +
+ +
+ + + +
+
+ + +
+ +
+ +   +
+
+ + + + + +
+ + + + +
+ + + +
+ +
 
+ + + +
+ +
+
+ +
+
+ +
+
+ + + +
+
+ + +
+
+ + + +   +
+
+ +
+ +
+ + + diff --git a/lib/tpl/default/media.php b/lib/tpl/default/media.php new file mode 100644 index 000000000..507717463 --- /dev/null +++ b/lib/tpl/default/media.php @@ -0,0 +1,61 @@ + + + */ +?> + + + <?=hsc($lang['mediaselect'])?> [<?=hsc($conf['title'])?>] + + + + + + + + + + + + +
+ + +

+ +
+ +
+ + + +
+ +
+ + +
+ +
+
+ +
+ +
+ diff --git a/lib/tpl/default/print.css b/lib/tpl/default/print.css new file mode 100644 index 000000000..77c82a580 --- /dev/null +++ b/lib/tpl/default/print.css @@ -0,0 +1,223 @@ + +body { + font: 12pt "Lucida Grande", Verdana, Lucida, Helvetica, Arial, sans-serif; + background-color: White; + color: Black; +} + +table { + font-size: 100%; + padding:0; + margin:0; +} + +tr,td,th {padding:0; margin:0;} + +img {border:0} + +a { + color:#000000; + text-decoration:none; +} + + +div.meta { + clear:both; + margin-top: 1em; + font-size:70%; + text-align:right; +} + +div.breadcrumbs{ + display:none; +} + +div.secedit{ + display:none; +} + +/* --------------------- Text formating -------------------------------- */ + +/* external link */ +a.urlextern:after { + content: " [" attr(href) "]"; + font-size: 90%; +} + +/* interwiki link */ +a.interwiki:after { + content: " [" attr(href) "]"; + font-size: 90%; +} + +/* email link */ +a.mail:after { + content: " [" attr(href) "]"; + font-size: 90%; +} + +/* existing wikilink */ +a.wikilink1 {text-decoration:underline } + +/* the document */ +div.page { + text-align: justify; +} + +/* general headline setup */ +h1, h2, h3, h4, h5 { + color: Black; + background-color: transparent; + font-family: "Lucida Grande", Verdana, Lucida, Helvetica, Arial, sans-serif; + font-size: 100%; + font-weight: normal; + margin-left: 0; + margin-right: 0; + margin-top: 0; + margin-bottom: 1em; + padding-left: 0; + padding-right: 0; + padding-top: 0.5em; + padding-bottom: 0; + border-bottom: 1px solid #000000; + clear:left; +} + +/* special headlines */ +h1 {font-size: 160%; font-weight: bold;} +h2 {font-size: 150%; } +h3 {font-size: 140%; border-bottom: none; font-weight: bold;} +h4 {font-size: 120%; border-bottom: none; font-weight: bold;} +h5 {font-size: 100%; border-bottom: none; font-weight: bold;} + +/* embedded images */ +img.media { + margin: 3px; +} + +img.medialeft { + border: 0; + float: left; + margin: 0 1.5em 0 0; +} + +img.mediaright { + border: 0; + float: right; + margin: 0 0 0 1.5em; +} + +/* unordered lists */ +ul { + line-height: 1.5em; + list-style-type: square; + margin: 0 0 1.0em 1.5em; + padding: 0; + +} + +/* ordered lists */ +ol { + line-height: 1.5em; + margin: 0 0 1.0em 1.5em; + padding: 0; + font-weight: bold; +} + +/* the list items overriding the ol definition */ +span.li { + font-weight: normal; +} + +/* code blocks by indention */ +pre.pre { + font-size: 8pt; + padding: 0.5em; + border: 1px dashed #000000; + color: Black; + overflow: visible; +} + +/* code blocks by code tag */ +pre.code { + font-size: 8pt; + padding: 0.5em; + border: 1px dashed #000000; + color: Black; + overflow: visible; +} + +/* inline code words */ +code { + font-size: 120%; +} + +/* code blocks by file tag */ +pre.file { + font-size: 8pt; + padding: 0.5em; + border: 1px dotted #000000; + color: Black; + overflow: visible; +} + +/* footnotes */ +div.footnotes{ + clear:both; + border-top: 1px solid #000000; + padding-left: 1em; + margin-top: 1em; +} + +div.fn{ + font-size:90%; +} + +a.fn_top{ + vertical-align:super; + font-size:80%; +} + +a.fn_bot{ + vertical-align:super; + font-size:80%; + font-weight:bold; +} + +acronym{ + border: 0; +} + +/* ---------- inline tables ------------------- */ + +table.inline { + font-size: 80%; + background-color: #ffffff; + border-spacing: 0px; + border-collapse: collapse; +} + +table.inline th { + padding: 3px; + border: 1px solid #000000; + border-bottom: 2px solid #000000; +} + +table.inline td { + padding: 3px; + border: 1px solid #000000; +} + +.leftalign{ + text-align: left; +} + +.centeralign{ + text-align: center; +} + +.rightalign{ + text-align: right; +} + +.toc, .footerinc, .header, .bar, .user {display:none} diff --git a/lib/tpl/default/rtl.css b/lib/tpl/default/rtl.css new file mode 100644 index 000000000..9a8294774 --- /dev/null +++ b/lib/tpl/default/rtl.css @@ -0,0 +1,111 @@ +/** + * Layout and dedsign corrections for right-to-left languages + * + * @author Andreas Gohr + * @author Dotan Kamber + */ + +.bar-left { + float: right; + text-align: right; +} + +.bar-right { + float: left; + text-align: left; +} + +.pagename { + float: right; + text-align: right; +} + +.logo { + float: left; + text-align: left; +} + +label { + text-align: left; +} + +label.simple { + text-align: right; +} + +div.meta div.user { + float: right +} + +div.meta div.doc{ + text-align: left; +} + +/* ------------------ Design corrections --------------------------------- */ + +ul,ol { + margin: 0.5em 1.5em 0.5em 0; +} + +a.urlextern,a.interwiki,a.windows{ + /* should work but dosn't - so we just disable icons here*/ + /* + background-position: right 1px; + padding-right: 16px; + */ + background-image: none !important; + padding: 0; +} + +div.secedit input.button { + float: left; +} + +/* headlines */ +h1, h2, h3, h4, h5 { + clear: right; +} + +/* special headlines */ +h1 {margin-left: 0px; margin-right: 0px;} +h2 {margin-left: 0px; margin-right: 20px;} +h3 {margin-left: 0px; margin-right: 40px;} +h4 {margin-left: 0px; margin-right: 60px;} +h5 {margin-left: 0px; margin-right: 80px;} + +/* indent different sections */ +div.level1 {margin-left: 0px; margin-right: 3px;} +div.level2 {margin-left: 0px; margin-right: 23px;} +div.level3 {margin-left: 0px; margin-right: 43px;} +div.level4 {margin-left: 0px; margin-right: 63px;} +div.level5 {margin-left: 0px; margin-right: 83px;} + +/* TOC control */ +div.toc { + float: left; + margin-left: 0; + margin-right: 2em; +} + +div.tocheader { + text-align: right; +} + +#tocinside { + text-align: right; +} + +ul.toc { + padding: 0; + padding-right: 1em; +} + +ul.toc li { + background-position: right 0.6em; + padding-right:0.4em; +} + +ul.toc li.clear { + padding-right:0.4em; +} + diff --git a/media.php b/media.php deleted file mode 100644 index 3340bae4e..000000000 --- a/media.php +++ /dev/null @@ -1,133 +0,0 @@ -= AUTH_UPLOAD){ - $UPLOADOK = true; - //create the given namespace (just for beautification) - $mdir = $conf['mediadir'].'/'.utf8_encodeFN(str_replace(':','/',$NS)); - io_makeFileDir("$mdir/xxx"); - }else{ - $UPLOADOK = false; - } - - //handle deletion - if($DEL && $AUTH >= AUTH_DELETE){ - media_delete($DEL); - } - - //handle upload - if($_FILES['upload']['tmp_name'] && $UPLOADOK){ - media_upload($NS,$AUTH); - } - - //start output and load template - header('Content-Type: text/html; charset=utf-8'); - include(DOKU_INC.'tpl/'.$conf['template'].'/media.php'); - - //restore old umask - umask($conf['oldumask']); - -/**********************************************/ - -/** - * Deletes mediafiles - Auth is not handled here! - * - * @author Andreas Gohr - */ -function media_delete($delid){ - $file = mediaFN($delid); - if(@unlink($file)){ - return true; - } - //something went wrong - msg("'$file' couldn't be deleted - check permissions",-1); - return false; -} - -/** - * Handles Mediafile uploads - * - * @author Andreas Gohr - */ -function media_upload($NS,$AUTH){ - require_once(DOKU_INC.'inc/confutils.php'); - global $lang; - global $conf; - - // get file - $id = $_POST['id']; - $file = $_FILES['upload']; - // get id - if(empty($id)) $id = $file['name']; - $id = cleanID($NS.':'.$id); - // get filename - $fn = mediaFN($id); - - // get filetype regexp - $types = array_keys(getMimeTypes()); - $types = array_map(create_function('$q','return preg_quote($q,"/");'),$types); - $regex = join('|',$types); - - // we set the umask here but this doesn't really help - // because a temp file was created already - umask($conf['umask']); - if(preg_match('/\.('.$regex.')$/i',$fn)){ - //check for overwrite - if(@file_exists($fn) && (!$_POST['ow'] || $AUTH < AUTH_DELETE)){ - msg($lang['uploadexist'],0); - return false; - } - // prepare directory - io_makeFileDir($fn); - if(move_uploaded_file($file['tmp_name'], $fn)) { - // set the correct permission here - chmod($fn, 0777 - $conf['umask']); - msg($lang['uploadsucc'],1); - return true; - }else{ - msg($lang['uploadfail'],-1); - } - }else{ - msg($lang['uploadwrong'],-1); - } - return false; -} - -/** - * Userfunction for html_buildlist - * - * Prints available media namespaces - * - * @author Andreas Gohr - */ -function media_html_list_namespaces($item){ - $ret = ''; - $ret .= ''; - $pos = strrpos($item['id'], ':'); - $ret .= substr($item['id'], $pos > 0 ? $pos + 1 : 0); - $ret .= ''; - return $ret; -} - -?> diff --git a/media/.htaccess b/media/.htaccess deleted file mode 100644 index 9c96d3742..000000000 --- a/media/.htaccess +++ /dev/null @@ -1,2 +0,0 @@ -order allow,deny -deny from all diff --git a/media/wiki/dokuwiki-128.png b/media/wiki/dokuwiki-128.png deleted file mode 100644 index b2306ac95..000000000 Binary files a/media/wiki/dokuwiki-128.png and /dev/null differ diff --git a/pngbehavior.htc b/pngbehavior.htc deleted file mode 100644 index ee974afe9..000000000 --- a/pngbehavior.htc +++ /dev/null @@ -1,53 +0,0 @@ -// this is an ugly fix to make Internet Explorer work with transparent -// PNG images - do your self a favour and use a real browser! - - - - - diff --git a/script.js b/script.js deleted file mode 100644 index d25246c9c..000000000 --- a/script.js +++ /dev/null @@ -1,456 +0,0 @@ -/** - * Some of these scripts were taken from wikipedia.org and were modified for DokuWiki - */ - -/** - * Some browser detection - */ -var clientPC = navigator.userAgent.toLowerCase(); // Get client info -var is_gecko = ((clientPC.indexOf('gecko')!=-1) && (clientPC.indexOf('spoofer')==-1) - && (clientPC.indexOf('khtml') == -1) && (clientPC.indexOf('netscape/7.0')==-1)); -var is_safari = ((clientPC.indexOf('AppleWebKit')!=-1) && (clientPC.indexOf('spoofer')==-1)); -var is_khtml = (navigator.vendor == 'KDE' || ( document.childNodes && !document.all && !navigator.taintEnabled )); -if (clientPC.indexOf('opera')!=-1) { - var is_opera = true; - var is_opera_preseven = (window.opera && !document.childNodes); - var is_opera_seven = (window.opera && document.childNodes); -} - - -/** - * This function escapes some special chars - */ -function escapeQuotes(text) { - var re=new RegExp("'","g"); - text=text.replace(re,"\\'"); - re=new RegExp('"',"g"); - text=text.replace(re,'"'); - re=new RegExp("\\n","g"); - text=text.replace(re,"\\n"); - return text; -} - -/** - * Prints a animated gif to show the search is performed - * - * @author Andreas Gohr - */ -function showLoadBar(){ - if(document.getElementById){ - document.write(''); - } -} - -/** - * Disables the animated gif to show the search is done - * - * @author Andreas Gohr - */ -function hideLoadBar(){ - if(document.getElementById){ - document.getElementById('loading').style.display="none"; - } -} - -/** - * Checks if a summary was entered - if not the style is changed - * - * @author Andreas Gohr - */ -function summaryCheck(){ - if(document.getElementById){ - var sum = document.getElementById('summary'); - if(sum.value == ''){ - sum.className='missing'; - }else{ - sum.className='edit'; - } - } -} - -/** - * This function generates the actual toolbar buttons with localized text - * we use it to avoid creating the toolbar where javascript is not enabled - */ -function formatButton(imageFile, speedTip, tagOpen, tagClose, sampleText, accessKey) { - speedTip=escapeQuotes(speedTip); - tagOpen=escapeQuotes(tagOpen); - tagClose=escapeQuotes(tagClose); - sampleText=escapeQuotes(sampleText); - - document.write(""); - - document.write("\""+"); - document.write(""); - return; -} - -/** - * This function generates the actual toolbar buttons with localized text - * we use it to avoid creating the toolbar where javascript is not enabled - */ -function insertButton(imageFile, speedTip, value, accessKey) { - speedTip=escapeQuotes(speedTip); - value=escapeQuotes(value); - - document.write(""); - - document.write("\""+"); - document.write(""); - return; -} - -/** - * This adds a button for the MediaSelection Popup - */ -function mediaButton(imageFile, speedTip, accessKey, namespace) { - speedTip=escapeQuotes(speedTip); - document.write(""); - document.write("\""+"); - document.write(""); - return; -} - -/** - * apply tagOpen/tagClose to selection in textarea, use sampleText instead - * of selection if there is none copied and adapted from phpBB - * - * @author phpBB development team - * @author MediaWiki development team - * @author Andreas Gohr - * @author Jim Raynor - */ -function insertTags(tagOpen, tagClose, sampleText) { - var txtarea = document.editform.wikitext; - // IE - if(document.selection && !is_gecko) { - var theSelection = document.selection.createRange().text; - var replaced = true; - if(!theSelection){ - replaced = false; - theSelection=sampleText; - } - txtarea.focus(); - - // This has change - text = theSelection; - if(theSelection.charAt(theSelection.length - 1) == " "){// exclude ending space char, if any - theSelection = theSelection.substring(0, theSelection.length - 1); - r = document.selection.createRange(); - r.text = tagOpen + theSelection + tagClose + " "; - } else { - r = document.selection.createRange(); - r.text = tagOpen + theSelection + tagClose; - } - if(!replaced){ - r.moveStart('character',-text.length-tagClose.length); - r.moveEnd('character',-tagClose.length); - } - r.select(); - // Mozilla - } else if(txtarea.selectionStart || txtarea.selectionStart == '0') { - var replaced = false; - var startPos = txtarea.selectionStart; - var endPos = txtarea.selectionEnd; - if(endPos - startPos) replaced = true; - var scrollTop=txtarea.scrollTop; - var myText = (txtarea.value).substring(startPos, endPos); - if(!myText) { myText=sampleText;} - if(myText.charAt(myText.length - 1) == " "){ // exclude ending space char, if any - subst = tagOpen + myText.substring(0, (myText.length - 1)) + tagClose + " "; - } else { - subst = tagOpen + myText + tagClose; - } - txtarea.value = txtarea.value.substring(0, startPos) + subst + - txtarea.value.substring(endPos, txtarea.value.length); - txtarea.focus(); - - //set new selection - if(replaced){ - var cPos=startPos+(tagOpen.length+myText.length+tagClose.length); - txtarea.selectionStart=cPos; - txtarea.selectionEnd=cPos; - }else{ - txtarea.selectionStart=startPos+tagOpen.length; - txtarea.selectionEnd=startPos+tagOpen.length+myText.length; - } - txtarea.scrollTop=scrollTop; - // All others - } else { - var copy_alertText=alertText; - var re1=new RegExp("\\$1","g"); - var re2=new RegExp("\\$2","g"); - copy_alertText=copy_alertText.replace(re1,sampleText); - copy_alertText=copy_alertText.replace(re2,tagOpen+sampleText+tagClose); - var text; - if (sampleText) { - text=prompt(copy_alertText); - } else { - text=""; - } - if(!text) { text=sampleText;} - text=tagOpen+text+tagClose; - //append to the end - txtarea.value += "\n"+text; - - // in Safari this causes scrolling - if(!is_safari) { - txtarea.focus(); - } - - } - // reposition cursor if possible - if (txtarea.createTextRange) txtarea.caretPos = document.selection.createRange().duplicate(); -} - - -/* - * Insert the selected filename and close the window - * - * @see http://www.alexking.org/index.php?content=software/javascript/content.php - */ -function mediaSelect(file){ - insertAtCarret(opener.document.editform.wikitext,'{{'+file+'}}'); - window.close(); -} - -/* - * Insert the given value at the current cursor position - * - * @see http://www.alexking.org/index.php?content=software/javascript/content.php - */ -function insertAtCarret(field,value){ - //IE support - if (document.selection) { - field.focus(); - if(opener == null){ - sel = document.selection.createRange(); - }else{ - sel = opener.document.selection.createRange(); - } - sel.text = value; - //MOZILLA/NETSCAPE support - }else if (field.selectionStart || field.selectionStart == '0') { - var startPos = field.selectionStart; - var endPos = field.selectionEnd; - var scrollTop = field.scrollTop; - field.value = field.value.substring(0, startPos) - + value - + field.value.substring(endPos, field.value.length); - - field.focus(); - var cPos=startPos+(value.length); - field.selectionStart=cPos; - field.selectionEnd=cPos; - field.scrollTop=scrollTop; - } else { - field.value += "\n"+value; - } - // reposition cursor if possible - if (field.createTextRange) field.caretPos = document.selection.createRange().duplicate(); -} - -/** - * For the upload Dialog. Prefills the wikiname. - */ -function suggestWikiname(){ - var file = document.upload.upload.value; - - file = file.substr(file.lastIndexOf('/')+1); - file = file.substr(file.lastIndexOf('\\')+1); - - document.upload.id.value = file; -} - -/** - * This prints the switch to toggle the Table of Contents - */ -function showTocToggle(show,hide) { - if(document.getElementById) { - document.writeln(''); - } -} - -/** - * This toggles the visibility of the Table of Contents - */ -function toggleToc() { - var toc = document.getElementById('tocinside'); - var showlink=document.getElementById('showlink'); - var hidelink=document.getElementById('hidelink'); - if(toc.style.display == 'none') { - toc.style.display = tocWas; - hidelink.style.display=''; - showlink.style.display='none'; - } else { - tocWas = toc.style.display; - toc.style.display = 'none'; - hidelink.style.display='none'; - showlink.style.display=''; - - } -} - -/** - * Sizecontrol inspired by TikiWiki. This displays the buttons. - */ -function showSizeCtl(){ - if(document.getElementById) { - var textarea = document.getElementById('wikitext'); - var hgt = getCookie('DokuWikisizeCtl'); - if(hgt == null){ - textarea.style.height = '300px'; - }else{ - textarea.style.height = hgt; - } - document.writeln(''); - document.writeln(''); - } -} - -/** - * This sets the vertical size of the editbox - */ -function sizeCtl(val){ - var textarea = document.getElementById('wikitext'); - var height = parseInt(textarea.style.height.substr(0,textarea.style.height.length-2)); - height += val; - textarea.style.height = height+'px'; - - var now = new Date(); - fixDate(now); - now.setTime(now.getTime() + 365 * 24 * 60 * 60 * 1000); //expire in a year - setCookie('DokuWikisizeCtl',textarea.style.height,now); -} - - -/** - * global var used for not saved yet warning - */ -var textChanged = false; - -function svchk(){ - if(textChanged){ - return confirm(notSavedYet); - }else{ - return true; - } -} - -/** - * global variable for the locktimer - */ -var locktimerID; - -/** - * This starts a timer to remind the user of an expiring lock - * Accepts the delay in seconds and a text to display. - */ -function init_locktimer(delay,txt){ - txt = escapeQuotes(txt); - locktimerID = self.setTimeout("locktimer('"+txt+"')", delay*1000); -} - -/** - * This stops the timer and displays a message about the expiring lock - */ -function locktimer(txt){ - clearTimeout(locktimerID); - alert(txt); -} - -/* - * This sets a cookie by JavaScript - * - * @see http://www.webreference.com/js/column8/functions.html - */ -function setCookie(name, value, expires, path, domain, secure) { - var curCookie = name + "=" + escape(value) + - ((expires) ? "; expires=" + expires.toGMTString() : "") + - ((path) ? "; path=" + path : "") + - ((domain) ? "; domain=" + domain : "") + - ((secure) ? "; secure" : ""); - document.cookie = curCookie; -} - -/* - * This reads a cookie by JavaScript - * - * @see http://www.webreference.com/js/column8/functions.html - */ -function getCookie(name) { - var dc = document.cookie; - var prefix = name + "="; - var begin = dc.indexOf("; " + prefix); - if (begin == -1) { - begin = dc.indexOf(prefix); - if (begin != 0) return null; - } else - begin += 2; - var end = document.cookie.indexOf(";", begin); - if (end == -1) - end = dc.length; - return unescape(dc.substring(begin + prefix.length, end)); -} - -/* - * This is needed for the cookie functions - * - * @see http://www.webreference.com/js/column8/functions.html - */ -function fixDate(date) { - var base = new Date(0); - var skew = base.getTime(); - if (skew > 0) - date.setTime(date.getTime() - skew); -} - -/* - * This enables/disables checkboxes for acl-administration - * - * @author Frank Schubert - */ -function checkAclLevel(){ - if(document.getElementById) { - var scope = document.getElementById('acl_scope').value; - - //check for namespace - if( (scope.indexOf(":*") > 0) || (scope == "*") ){ - document.getElementsByName('acl_checkbox[4]')[0].disabled=false; - document.getElementsByName('acl_checkbox[8]')[0].disabled=false; - }else{ - document.getElementsByName('acl_checkbox[4]')[0].checked=false; - document.getElementsByName('acl_checkbox[8]')[0].checked=false; - - document.getElementsByName('acl_checkbox[4]')[0].disabled=true; - document.getElementsByName('acl_checkbox[8]')[0].disabled=true; - } - } -} diff --git a/smileys/delete.gif b/smileys/delete.gif deleted file mode 100644 index d668348b9..000000000 Binary files a/smileys/delete.gif and /dev/null differ diff --git a/smileys/fixme.gif b/smileys/fixme.gif deleted file mode 100644 index b66ea99d6..000000000 Binary files a/smileys/fixme.gif and /dev/null differ diff --git a/smileys/icon_arrow.gif b/smileys/icon_arrow.gif deleted file mode 100644 index 2880055cc..000000000 Binary files a/smileys/icon_arrow.gif and /dev/null differ diff --git a/smileys/icon_biggrin.gif b/smileys/icon_biggrin.gif deleted file mode 100644 index d3527723c..000000000 Binary files a/smileys/icon_biggrin.gif and /dev/null differ diff --git a/smileys/icon_confused.gif b/smileys/icon_confused.gif deleted file mode 100644 index 0c49e0698..000000000 Binary files a/smileys/icon_confused.gif and /dev/null differ diff --git a/smileys/icon_cool.gif b/smileys/icon_cool.gif deleted file mode 100644 index cead0306c..000000000 Binary files a/smileys/icon_cool.gif and /dev/null differ diff --git a/smileys/icon_cry.gif b/smileys/icon_cry.gif deleted file mode 100644 index 7d54b1f99..000000000 Binary files a/smileys/icon_cry.gif and /dev/null differ diff --git a/smileys/icon_doubt.gif b/smileys/icon_doubt.gif deleted file mode 100644 index fd7903b19..000000000 Binary files a/smileys/icon_doubt.gif and /dev/null differ diff --git a/smileys/icon_doubt2.gif b/smileys/icon_doubt2.gif deleted file mode 100644 index eb4b70b66..000000000 Binary files a/smileys/icon_doubt2.gif and /dev/null differ diff --git a/smileys/icon_eek.gif b/smileys/icon_eek.gif deleted file mode 100644 index 5d3978106..000000000 Binary files a/smileys/icon_eek.gif and /dev/null differ diff --git a/smileys/icon_evil.gif b/smileys/icon_evil.gif deleted file mode 100644 index ab1aa8e12..000000000 Binary files a/smileys/icon_evil.gif and /dev/null differ diff --git a/smileys/icon_exclaim.gif b/smileys/icon_exclaim.gif deleted file mode 100644 index 6e50e2eec..000000000 Binary files a/smileys/icon_exclaim.gif and /dev/null differ diff --git a/smileys/icon_frown.gif b/smileys/icon_frown.gif deleted file mode 100644 index d2ac78c04..000000000 Binary files a/smileys/icon_frown.gif and /dev/null differ diff --git a/smileys/icon_fun.gif b/smileys/icon_fun.gif deleted file mode 100644 index a8bb8a303..000000000 Binary files a/smileys/icon_fun.gif and /dev/null differ diff --git a/smileys/icon_idea.gif b/smileys/icon_idea.gif deleted file mode 100644 index a40ae0d7e..000000000 Binary files a/smileys/icon_idea.gif and /dev/null differ diff --git a/smileys/icon_kaddi.gif b/smileys/icon_kaddi.gif deleted file mode 100644 index 1410f7f1e..000000000 Binary files a/smileys/icon_kaddi.gif and /dev/null differ diff --git a/smileys/icon_lol.gif b/smileys/icon_lol.gif deleted file mode 100644 index 374ba150f..000000000 Binary files a/smileys/icon_lol.gif and /dev/null differ diff --git a/smileys/icon_mrgreen.gif b/smileys/icon_mrgreen.gif deleted file mode 100644 index b54cd0f94..000000000 Binary files a/smileys/icon_mrgreen.gif and /dev/null differ diff --git a/smileys/icon_neutral.gif b/smileys/icon_neutral.gif deleted file mode 100644 index 4f311567e..000000000 Binary files a/smileys/icon_neutral.gif and /dev/null differ diff --git a/smileys/icon_question.gif b/smileys/icon_question.gif deleted file mode 100644 index 9d072265b..000000000 Binary files a/smileys/icon_question.gif and /dev/null differ diff --git a/smileys/icon_razz.gif b/smileys/icon_razz.gif deleted file mode 100644 index 29da2a2fc..000000000 Binary files a/smileys/icon_razz.gif and /dev/null differ diff --git a/smileys/icon_redface.gif b/smileys/icon_redface.gif deleted file mode 100644 index ad7628320..000000000 Binary files a/smileys/icon_redface.gif and /dev/null differ diff --git a/smileys/icon_rolleyes.gif b/smileys/icon_rolleyes.gif deleted file mode 100644 index d7f5f2f4b..000000000 Binary files a/smileys/icon_rolleyes.gif and /dev/null differ diff --git a/smileys/icon_sad.gif b/smileys/icon_sad.gif deleted file mode 100644 index d2ac78c04..000000000 Binary files a/smileys/icon_sad.gif and /dev/null differ diff --git a/smileys/icon_silenced.gif b/smileys/icon_silenced.gif deleted file mode 100644 index 448399b2b..000000000 Binary files a/smileys/icon_silenced.gif and /dev/null differ diff --git a/smileys/icon_smile.gif b/smileys/icon_smile.gif deleted file mode 100644 index 7b1f6d304..000000000 Binary files a/smileys/icon_smile.gif and /dev/null differ diff --git a/smileys/icon_smile2.gif b/smileys/icon_smile2.gif deleted file mode 100644 index 769639d32..000000000 Binary files a/smileys/icon_smile2.gif and /dev/null differ diff --git a/smileys/icon_surprised.gif b/smileys/icon_surprised.gif deleted file mode 100644 index cb2142431..000000000 Binary files a/smileys/icon_surprised.gif and /dev/null differ diff --git a/smileys/icon_twisted.gif b/smileys/icon_twisted.gif deleted file mode 100644 index 502fe247e..000000000 Binary files a/smileys/icon_twisted.gif and /dev/null differ diff --git a/smileys/icon_wink.gif b/smileys/icon_wink.gif deleted file mode 100644 index d14828804..000000000 Binary files a/smileys/icon_wink.gif and /dev/null differ diff --git a/style.css b/style.css deleted file mode 100644 index 4e19909bf..000000000 --- a/style.css +++ /dev/null @@ -1,44 +0,0 @@ -div.clearer {clear: both; line-height: 0; height: 0;} - -div.error{ - background: #ff6666 url(images/error.png) 0.5em 0px no-repeat; - font-size: 90%; - margin: 0px; - padding-left: 3em; -} - -div.info{ - background: #ffff66 url(images/info.png) 0.5em 0px no-repeat; - font-size: 90%; - margin: 0; - padding-left: 3em; -} - -div.success{ - background: #66ff66 url(images/thumbup.gif) 0.5em 0px no-repeat; - font-size: 90%; - margin: 0; - padding-left: 3em; -} - -/* syntax highlighting code */ -.code .br0 { color: #66cc66; } -.code .co1 { color: #808080; font-style: italic; } -.code .co2 { color: #808080; font-style: italic; } -.code .coMULTI { color: #808080; font-style: italic; } -.code .es0 { color: #000099; font-weight: bold; } -.code .kw1 { color: #b1b100; } -.code .kw2 { color: #000000; font-weight: bold; } -.code .kw3 { color: #000066; } -.code .kw4 { color: #993333; } -.code .kw5 { color: #0000ff; } -.code .me0 { color: #006600; } -.code .nu0 { color: #cc66cc; } -.code .re0 { color: #0000ff; } -.code .re1 { color: #0000ff; } -.code .re2 { color: #0000ff; } -.code .re4 { color: #009999; } -.code .sc0 { color: #00bbdd; } -.code .sc1 { color: #ddbb00; } -.code .sc2 { color: #009900; } -.code .st0 { color: #ff0000; } diff --git a/tpl/default/design.css b/tpl/default/design.css deleted file mode 100644 index 14c419df4..000000000 --- a/tpl/default/design.css +++ /dev/null @@ -1,642 +0,0 @@ -/** - * Design elements for default Template - * - * @author Andreas Gohr - * @author Anika Henke - */ - -/* -------------- general elements --------------- */ - -body { - font: 80% "Lucida Grande", Verdana, Lucida, Helvetica, Arial, sans-serif; - background-color: White; - color: Black; - margin: 0; - padding: 0; -} - -/* the document */ -div.page { - margin-top: 4px; - margin-left: 1em; - margin-right: 2em; - text-align: justify; -} - -table { - font-size: 100%; - padding:0; - margin:0; -} - -tr,td,th {padding:0; margin:0;} - -img {border:0} - -p {padding:0; margin: 0 0 1.0em 0;} - -hr { - border: 0px; - border-top: 1px solid #8cacbb; - text-align:center; - height: 0px; -} - -div.nothing { - text-align:center; - margin: 2em; -} - -/* ---------------- forms ------------------------ */ - -form { - border: none; - margin: 0; - display: inline; -} - -label { - display: block; - text-align: right; - font-weight: bold; -} - -label.simple { - text-align: left; - font-weight: normal; -} - -label input.edit { - width: 50%; -} - -fieldset { - width: 300px; - text-align: center; - border: 1px solid #8cacbb; - padding: 0.5em; -} - -textarea.edit { - font-family:monospace; - border: 1px solid #8cacbb; - color: Black; - background-color: white; - font-size:14px; - padding: 3px; - width:100%; -} - -input.edit,select.edit { - font-size: 100%; - border: 1px solid #8cacbb; - height: 22px !important; - max-height: 22px !important; - min-height: 22px !important; - color: Black; - background-color: white; - vertical-align: middle; - padding: 1px; - display: inline; -} - -input.missing { - font-size: 100%; - border: 1px solid #8cacbb; - height: 22px !important; - max-height: 22px !important; - min-height: 22px !important; - color: Black; - background-color: #ffcccc; - vertical-align: middle; - padding: 1px; - display: inline; -} - -/* --------- buttons ------------------- */ - - -input.button { - border: 1px solid #8cacbb; - color: Black; - background-color: white; - vertical-align: middle; - text-decoration:none; - font-size: 100%; - cursor: pointer; - height: 22px !important; - max-height: 22px !important; - min-height: 22px !important; - margin: 1px; - display: inline; -} - -div.secedit input.button { - border: 1px solid #8cacbb; - color: Black; - background-color: white; - vertical-align: middle; - text-decoration:none; - margin: 0px; - padding: 0px; - font-size: 10px; - cursor: pointer; - height: 15px; - max-height: 15px !important; - min-height: 15px !important; - float:right; - display: inline; -} - -/* ----------- page navigator ------------- */ - -div.pagenav { - margin-top:1em; -} - -div.pagenav-prev { - text-align:right; - float:left; - width:50% -} - -div.pagenav-prev input.button { - margin-right:5px; -} - -div.pagenav-next { - text-align:left; - float:right; - width:50% -} - -div.pagenav-next input.button { - margin-left:5px; -} - -/* --------------- Links ------------------ */ - -a { - color:#436976; - text-decoration:none; -} -a:hover { - color:#000000; - text-decoration:underline; -} - -/* external link */ -a.urlextern{ - background: transparent url(images/link_icon.gif) 0px 1px no-repeat; - padding: 1px 0px 1px 16px; - color:#436976; - text-decoration:none; -} -a.urlextern:visited { - color:Purple; -} -a.urlextern:hover { - text-decoration:underline; -} - -/* windows share */ -a.windows{ - background: transparent url(images/windows.gif) 0px 1px no-repeat; - padding: 1px 0px 1px 16px; - color:#436976; - text-decoration:none; -} -a.windows:visited { - color:Purple; -} -a.windows:hover { - text-decoration:underline; -} - -/* interwiki link */ -a.interwiki{ - background: transparent url(images/interwiki.png) 0px 1px no-repeat; - padding-left: 16px; - color:#436976; - text-decoration:none; -} -a.interwiki:visited { - color:Purple; -} -a.interwiki:hover { - text-decoration:underline; -} - -/* link to some embedded media */ -a.media { - color:#436976; - text-decoration:none; -} -a.media:hover { - color:#436976; - text-decoration:underline -} - -/* email link */ -a.mail { - background: transparent url(images/mail_icon.gif) 0px 1px no-repeat; - padding: 1px 0px 1px 16px; - color:#436976; - text-decoration:none; -} -a.mail:hover { - text-decoration:underline; -} - -/* existing wikipage */ -a.wikilink1:link { color:#009900; text-decoration:none } -a.wikilink1:visited { color:#009900; text-decoration:none } -a.wikilink1:hover { color:#009900; text-decoration:underline } - -/* not existing wikipage */ -a.wikilink2:link { color:#FF3300; text-decoration:none } -a.wikilink2:visited { color:#FF3300; text-decoration:none } -a.wikilink2:hover { color:#FF3300; text-decoration:underline } - - -/* ------------- Page elements ----------------- */ - -div.preview{ - background:#f7f9fa; - margin-left:2em; - padding: 4px; - border: 1px dashed #000000; -} - -div.breadcrumbs{ - background-color: #f5f5f5; - font-size:80%; - color: #666666; - padding-left: 4px; -} - -span.user{ - color: #cccccc; - font-size: 90%; -} - -/* embedded images */ -img.media { - margin: 3px; -} - -img.medialeft { - border: 0; - float: left; - margin: 0 1.5em 0 0; -} - -img.mediaright { - border: 0; - float: right; - margin: 0 0 0 1.5em; -} - -img.mediacenter { - border: 0; - display: block; - margin-left: auto; - margin-right: auto; -} - -acronym { - cursor: help; - border-bottom: 1px dotted #000; -} - -/* general headline setup */ -h1, h2, h3, h4, h5 { - color: Black; - background-color: transparent; - font-family: "Lucida Grande", Verdana, Lucida, Helvetica, Arial, sans-serif; - font-size: 100%; - font-weight: normal; - margin-left: 0; - margin-right: 0; - margin-top: 0; - margin-bottom: 1em; - padding-left: 0; - padding-right: 0; - padding-top: 0.5em; - padding-bottom: 0; - border-bottom: 1px solid #8cacbb; - clear: left; -} - -/* special headlines */ -h1 {font-size: 160%; margin-left: 0px; font-weight: bold;} -h2 {font-size: 150%; margin-left: 20px;} -h3 {font-size: 140%; margin-left: 40px; border-bottom: none; font-weight: bold;} -h4 {font-size: 120%; margin-left: 60px; border-bottom: none; font-weight: bold;} -h5 {font-size: 100%; margin-left: 80px; border-bottom: none; font-weight: bold;} - -/* indent different sections */ -div.level1 {margin-left: 3px;} -div.level2 {margin-left: 23px;} -div.level3 {margin-left: 43px;} -div.level4 {margin-left: 63px;} -div.level5 {margin-left: 83px;} - -/* unordered lists */ -ul { - line-height: 1.5em; - list-style-type: square; - margin: 0 0 0.5em 1.5em; - padding: 0; - list-style-image: url(images/bullet.gif); -} - -/* ordered lists */ -ol { - line-height: 1.5em; - margin: 0 0 0.5em 1.5em; - padding: 0; - color: #638c9c; - font-weight: bold; - list-style-image: none; -} - -/* the list items overriding the ol definition */ -span.li { - color: #000000; - font-weight: normal; -} - -ol {list-style-type: decimal} -ol ol {list-style-type: upper-roman} -ol ol ol {list-style-type: lower-alpha} -ol ol ol ol {list-style-type: lower-greek} - -li.open { - list-style-image: url(images/open.gif); -} - -li.closed { - list-style-image: url(images/closed.gif); -} - -blockquote { - border-left: 2px solid #8cacbb; - padding-left: 3px; - margin-left: 0; -} - -/* code blocks by indention */ -pre.pre { - font-size: 120%; - padding: 0.5em; - border: 1px dashed #8cacbb; - color: Black; - background-color: #f7f9fa; - overflow: auto; -} - -/* code blocks by code tag */ -pre.code { - font-size: 120%; - padding: 0.5em; - border: 1px dashed #8cacbb; - color: Black; - background-color: #f7f9fa; - overflow: auto; -} - -/* inline code words */ -code { - font-size: 120%; -} - -/* code blocks by file tag */ -pre.file { - font-size: 120%; - padding: 0.5em; - border: 1px dashed #8cacbb; - color: Black; - background-color: #dee7ec; - overflow: auto; -} - -/* inline tables */ -table.inline { - background-color: #ffffff; - border-spacing: 0px; - border-collapse: collapse; -} - -table.inline th { - padding: 3px; - border: 1px solid #8cacbb; - background-color: #dee7ec; -} - -table.inline td { - padding: 3px; - border: 1px solid #8cacbb; -} - -.leftalign{ - text-align: left; -} - -.centeralign{ - text-align: center; -} - -.rightalign{ - text-align: right; -} - -/* ---------- table of contents ------------------- */ - -div.toc { - margin-left: 2em; - margin-top: 1.2em; - margin-bottom: 0; - float:right; - width: 200px; - font-size: 80%; - clear:both; -} - -div.tocheader { - padding: 3px; - border: 1px solid #8cacbb; - background-color: #dee7ec; - text-align: left; - font-weight:bold; - margin-bottom: 2px; -} - -div.toctoggle { - float:right; - margin-top:0.3em; - margin-right:3px; -} - -div.toctoggle img { - width:0.8em; - height:0.8em; -} - -#tocinside { - border: 1px solid #8cacbb; - background-color: #ffffff; - text-align: left; - padding-top: 0.5em; - padding-bottom: 0.7em; -} - -ul.toc { - list-style-type: none; - list-style-image: none; - line-height: 1.2em; - margin: 0; - padding: 0; - padding-left: 1em; -} - -ul.toc li { - background: transparent url(images/tocdot2.gif) 0 0.6em no-repeat; - padding-left:0.4em; -} - -ul.toc li.clear { - background-image: none; - padding-left:0.4em; -} - -a.toc { - color: #436976; - text-decoration:none; -} - -a.toc:hover { - color: #000000; - text-decoration:underline; -} - -/* ---------------------------- Diff rendering --------------------------*/ -table.diff { background:white; } -td.diff-blockheader {font-weight:bold} -td.diff-header { - border-bottom: 1px solid #8cacbb; - font-size:120%; -} -td.diff-addedline { - background:#ddffdd; - font-family: monospace; - font-size: 100%; -} -td.diff-deletedline { - background:#ffffbb; - font-family: monospace; - font-size: 100%; -} -td.diff-context { - background:#f7f9fa; - font-family: monospace; - font-size: 100%; -} -span.diffchange { color: red; } - -/* --------------------- footnotes -------------------------------- */ - -div.footnotes{ - clear:both; - border-top: 1px solid #8cacbb; - padding-left: 1em; - margin-top: 1em; -} - -div.fn{ - font-size:90%; -} - -a.fn_top{ - vertical-align:super; - font-size:80%; -} - -a.fn_bot{ - vertical-align:super; - font-size:80%; - font-weight:bold; -} - - -/* --------------- search result formating --------------- */ -.search_result{ - margin-bottom: 6px; - padding-left: 30px; - padding-right: 10px; -} - -.search_snippet{ - color: #999999; - font-size: 12px; - margin-left: 20px; -} - -.search_sep{ - color: #000000; -} - -.search_hit{ - color: #000000; - background: #FFFF99; -} - -div.search_quickresult{ - margin-bottom: 15px; - padding-bottom: 5px; - border-bottom: 1px dashed #8cacbb; - margin-left: 30px; - padding-right: 10px; -} - -div.search_quickhits { - margin-left: 1em; - float:left; - background: transparent url(images/bullet.gif) 0px 1px no-repeat; - padding: 1px 0px 1px 8px; - width: 30%; -} - -/* ------------------ Additional ---------------------- */ -.footerinc a img { - opacity: 0.5; -} - -.footerinc a:hover img { - opacity: 1; -} - -/* ---- Admin --- */ - -div.acladmin label { - text-align: left; - font-weight: normal; - display: inline; -} - -div.acladmin table{ - margin-left: 10%; - width: 80%; -} - -/* ---------- AJAX quicksearch ----------- */ - -div.ajax_qsearch { - position:absolute; - right:225px;; - text-align:left; - width: 200px; - background-color: #ff9; - opacity: 0.9; - display:none; -} diff --git a/tpl/default/footer.html b/tpl/default/footer.html deleted file mode 100644 index 577bb3b3c..000000000 --- a/tpl/default/footer.html +++ /dev/null @@ -1,56 +0,0 @@ - - -
- Recent changes RSS feed - - Creative Commons License - - Donate - - Powered by PHP - - Valid XHTML 1.0 - - Valid CSS - - Driven by DokuWiki - - - - - -
diff --git a/tpl/default/images/bullet.gif b/tpl/default/images/bullet.gif deleted file mode 100644 index b43de48a4..000000000 Binary files a/tpl/default/images/bullet.gif and /dev/null differ diff --git a/tpl/default/images/button-cc.gif b/tpl/default/images/button-cc.gif deleted file mode 100644 index 5861d637f..000000000 Binary files a/tpl/default/images/button-cc.gif and /dev/null differ diff --git a/tpl/default/images/button-css.png b/tpl/default/images/button-css.png deleted file mode 100644 index 706325e1c..000000000 Binary files a/tpl/default/images/button-css.png and /dev/null differ diff --git a/tpl/default/images/button-donate.gif b/tpl/default/images/button-donate.gif deleted file mode 100644 index ec682c6b1..000000000 Binary files a/tpl/default/images/button-donate.gif and /dev/null differ diff --git a/tpl/default/images/button-dw.png b/tpl/default/images/button-dw.png deleted file mode 100644 index 39d5f56a9..000000000 Binary files a/tpl/default/images/button-dw.png and /dev/null differ diff --git a/tpl/default/images/button-php.gif b/tpl/default/images/button-php.gif deleted file mode 100644 index 28f329aaa..000000000 Binary files a/tpl/default/images/button-php.gif and /dev/null differ diff --git a/tpl/default/images/button-rss.png b/tpl/default/images/button-rss.png deleted file mode 100644 index b036f7152..000000000 Binary files a/tpl/default/images/button-rss.png and /dev/null differ diff --git a/tpl/default/images/button-xhtml.png b/tpl/default/images/button-xhtml.png deleted file mode 100644 index ec686442c..000000000 Binary files a/tpl/default/images/button-xhtml.png and /dev/null differ diff --git a/tpl/default/images/closed.gif b/tpl/default/images/closed.gif deleted file mode 100644 index 8414d4d69..000000000 Binary files a/tpl/default/images/closed.gif and /dev/null differ diff --git a/tpl/default/images/interwiki.png b/tpl/default/images/interwiki.png deleted file mode 100644 index 73d6f8d39..000000000 Binary files a/tpl/default/images/interwiki.png and /dev/null differ diff --git a/tpl/default/images/link_icon.gif b/tpl/default/images/link_icon.gif deleted file mode 100644 index 815ccb1b1..000000000 Binary files a/tpl/default/images/link_icon.gif and /dev/null differ diff --git a/tpl/default/images/mail_icon.gif b/tpl/default/images/mail_icon.gif deleted file mode 100644 index 50a87a9a0..000000000 Binary files a/tpl/default/images/mail_icon.gif and /dev/null differ diff --git a/tpl/default/images/open.gif b/tpl/default/images/open.gif deleted file mode 100644 index f5d5c7e56..000000000 Binary files a/tpl/default/images/open.gif and /dev/null differ diff --git a/tpl/default/images/tocdot2.gif b/tpl/default/images/tocdot2.gif deleted file mode 100644 index 3d39c2e73..000000000 Binary files a/tpl/default/images/tocdot2.gif and /dev/null differ diff --git a/tpl/default/images/windows.gif b/tpl/default/images/windows.gif deleted file mode 100644 index 4f12acce1..000000000 Binary files a/tpl/default/images/windows.gif and /dev/null differ diff --git a/tpl/default/layout.css b/tpl/default/layout.css deleted file mode 100644 index fea7c58ab..000000000 --- a/tpl/default/layout.css +++ /dev/null @@ -1,109 +0,0 @@ -/** - * Tableless Layout for default template - * - * @author Andreas Gohr - * @author moraes - */ - - -/* -------------- top row --------------- */ -.header { - height:35px; - padding:3px 0 2px 2px; -} - -.pagename { - height:25px; - float:left; - font-size:200%; - font-weight:bolder; - color:#DEE7EC; - text-align:left; - vertical-align:middle; - padding:1px 0 0 1px; -} - -.pagename a:link, .pagename a:visited { - color:#436976; - text-decoration:none; -} - -.pagename a:hover, .pagename a:active { - color:#FF9933; -} - -.logo { - float:right; - font-size:220%; - font-weight:bolder; - text-align:right; - vertical-align:middle; -} - -.logo a:link, .logo a:visited, .logo a:hover, .logo a:active { - color:#dee7ec; - text-decoration:none; - font-variant:small-caps; - letter-spacing:2pt; -} - -/* --------------- top and bottom bar ---------------- */ -.bar { - height:25px; - border-top:1px solid #8CACBB; - border-bottom:1px solid #8CACBB; - background:#DEE7EC; - padding:2px; - margin:0; - clear: both; -} - -.bar-left { - float:left; -} - -.bar-right { - float:right; - text-align:right; -} - -#bar_bottom { - margin-bottom:3px; -} - -/* ------------- File Metadata ----------------------- */ - -div.meta { - clear: both; - margin-top: 1em; - color:#436976; - font-size:70%; -} - -div.meta div.user { - float:left; -} - -div.meta div.doc{ - text-align:right; -} - -/* --------------- Media Selection ----------------- */ - -div.uploadform { - margin-top: 0.5em; - border-top: 1px solid #8cacbb; -} - -.mediaselect-left { - float:left; - padding: 0.5em; - width:30%; -} - -.mediaselect-right { - float:right; - border-left: 1px solid #8cacbb; - padding: 0.5em; - width:65%; -} diff --git a/tpl/default/main.php b/tpl/default/main.php deleted file mode 100644 index 35fd97713..000000000 --- a/tpl/default/main.php +++ /dev/null @@ -1,129 +0,0 @@ - - - */ -?> - - - <?=$ID?> [<?=hsc($conf['title'])?>] - - - - - - - - - - - - - - - - - - - - - -
- - -
- -
-
- [[]] -
- -
- - - -
-
- - -
- -
- -   -
-
- - - - - -
- - - - -
- - - -
- -
 
- - - -
- -
-
- -
-
- -
-
- - - -
-
- - -
-
- - - -   -
-
- -
- -
- - - diff --git a/tpl/default/media.php b/tpl/default/media.php deleted file mode 100644 index a781ec166..000000000 --- a/tpl/default/media.php +++ /dev/null @@ -1,61 +0,0 @@ - - - */ -?> - - - <?=hsc($lang['mediaselect'])?> [<?=hsc($conf['title'])?>] - - - - - - - - - - - - -
- - -

- -
- -
- - - -
- -
- - -
- -
-
- -
- -
- diff --git a/tpl/default/print.css b/tpl/default/print.css deleted file mode 100644 index 77c82a580..000000000 --- a/tpl/default/print.css +++ /dev/null @@ -1,223 +0,0 @@ - -body { - font: 12pt "Lucida Grande", Verdana, Lucida, Helvetica, Arial, sans-serif; - background-color: White; - color: Black; -} - -table { - font-size: 100%; - padding:0; - margin:0; -} - -tr,td,th {padding:0; margin:0;} - -img {border:0} - -a { - color:#000000; - text-decoration:none; -} - - -div.meta { - clear:both; - margin-top: 1em; - font-size:70%; - text-align:right; -} - -div.breadcrumbs{ - display:none; -} - -div.secedit{ - display:none; -} - -/* --------------------- Text formating -------------------------------- */ - -/* external link */ -a.urlextern:after { - content: " [" attr(href) "]"; - font-size: 90%; -} - -/* interwiki link */ -a.interwiki:after { - content: " [" attr(href) "]"; - font-size: 90%; -} - -/* email link */ -a.mail:after { - content: " [" attr(href) "]"; - font-size: 90%; -} - -/* existing wikilink */ -a.wikilink1 {text-decoration:underline } - -/* the document */ -div.page { - text-align: justify; -} - -/* general headline setup */ -h1, h2, h3, h4, h5 { - color: Black; - background-color: transparent; - font-family: "Lucida Grande", Verdana, Lucida, Helvetica, Arial, sans-serif; - font-size: 100%; - font-weight: normal; - margin-left: 0; - margin-right: 0; - margin-top: 0; - margin-bottom: 1em; - padding-left: 0; - padding-right: 0; - padding-top: 0.5em; - padding-bottom: 0; - border-bottom: 1px solid #000000; - clear:left; -} - -/* special headlines */ -h1 {font-size: 160%; font-weight: bold;} -h2 {font-size: 150%; } -h3 {font-size: 140%; border-bottom: none; font-weight: bold;} -h4 {font-size: 120%; border-bottom: none; font-weight: bold;} -h5 {font-size: 100%; border-bottom: none; font-weight: bold;} - -/* embedded images */ -img.media { - margin: 3px; -} - -img.medialeft { - border: 0; - float: left; - margin: 0 1.5em 0 0; -} - -img.mediaright { - border: 0; - float: right; - margin: 0 0 0 1.5em; -} - -/* unordered lists */ -ul { - line-height: 1.5em; - list-style-type: square; - margin: 0 0 1.0em 1.5em; - padding: 0; - -} - -/* ordered lists */ -ol { - line-height: 1.5em; - margin: 0 0 1.0em 1.5em; - padding: 0; - font-weight: bold; -} - -/* the list items overriding the ol definition */ -span.li { - font-weight: normal; -} - -/* code blocks by indention */ -pre.pre { - font-size: 8pt; - padding: 0.5em; - border: 1px dashed #000000; - color: Black; - overflow: visible; -} - -/* code blocks by code tag */ -pre.code { - font-size: 8pt; - padding: 0.5em; - border: 1px dashed #000000; - color: Black; - overflow: visible; -} - -/* inline code words */ -code { - font-size: 120%; -} - -/* code blocks by file tag */ -pre.file { - font-size: 8pt; - padding: 0.5em; - border: 1px dotted #000000; - color: Black; - overflow: visible; -} - -/* footnotes */ -div.footnotes{ - clear:both; - border-top: 1px solid #000000; - padding-left: 1em; - margin-top: 1em; -} - -div.fn{ - font-size:90%; -} - -a.fn_top{ - vertical-align:super; - font-size:80%; -} - -a.fn_bot{ - vertical-align:super; - font-size:80%; - font-weight:bold; -} - -acronym{ - border: 0; -} - -/* ---------- inline tables ------------------- */ - -table.inline { - font-size: 80%; - background-color: #ffffff; - border-spacing: 0px; - border-collapse: collapse; -} - -table.inline th { - padding: 3px; - border: 1px solid #000000; - border-bottom: 2px solid #000000; -} - -table.inline td { - padding: 3px; - border: 1px solid #000000; -} - -.leftalign{ - text-align: left; -} - -.centeralign{ - text-align: center; -} - -.rightalign{ - text-align: right; -} - -.toc, .footerinc, .header, .bar, .user {display:none} diff --git a/tpl/default/rtl.css b/tpl/default/rtl.css deleted file mode 100644 index 9a8294774..000000000 --- a/tpl/default/rtl.css +++ /dev/null @@ -1,111 +0,0 @@ -/** - * Layout and dedsign corrections for right-to-left languages - * - * @author Andreas Gohr - * @author Dotan Kamber - */ - -.bar-left { - float: right; - text-align: right; -} - -.bar-right { - float: left; - text-align: left; -} - -.pagename { - float: right; - text-align: right; -} - -.logo { - float: left; - text-align: left; -} - -label { - text-align: left; -} - -label.simple { - text-align: right; -} - -div.meta div.user { - float: right -} - -div.meta div.doc{ - text-align: left; -} - -/* ------------------ Design corrections --------------------------------- */ - -ul,ol { - margin: 0.5em 1.5em 0.5em 0; -} - -a.urlextern,a.interwiki,a.windows{ - /* should work but dosn't - so we just disable icons here*/ - /* - background-position: right 1px; - padding-right: 16px; - */ - background-image: none !important; - padding: 0; -} - -div.secedit input.button { - float: left; -} - -/* headlines */ -h1, h2, h3, h4, h5 { - clear: right; -} - -/* special headlines */ -h1 {margin-left: 0px; margin-right: 0px;} -h2 {margin-left: 0px; margin-right: 20px;} -h3 {margin-left: 0px; margin-right: 40px;} -h4 {margin-left: 0px; margin-right: 60px;} -h5 {margin-left: 0px; margin-right: 80px;} - -/* indent different sections */ -div.level1 {margin-left: 0px; margin-right: 3px;} -div.level2 {margin-left: 0px; margin-right: 23px;} -div.level3 {margin-left: 0px; margin-right: 43px;} -div.level4 {margin-left: 0px; margin-right: 63px;} -div.level5 {margin-left: 0px; margin-right: 83px;} - -/* TOC control */ -div.toc { - float: left; - margin-left: 0; - margin-right: 2em; -} - -div.tocheader { - text-align: right; -} - -#tocinside { - text-align: right; -} - -ul.toc { - padding: 0; - padding-right: 1em; -} - -ul.toc li { - background-position: right 0.6em; - padding-right:0.4em; -} - -ul.toc li.clear { - padding-right:0.4em; -} - diff --git a/tw-sack.js b/tw-sack.js deleted file mode 100644 index 8a9d12746..000000000 --- a/tw-sack.js +++ /dev/null @@ -1,95 +0,0 @@ -// ====== Simple Ajax Code Kit ======= -// code by Gregory Wild-Smith (c)2005 -// http://twilightuniverse.com -// If you use this code please keep this credit intact. -// A link or email would be nice, but is not required. -// v1.01 - -function sack(file){ - this.AjaxFailedAlert = "Your browser doesn't support the extended functionality of this website, and therefore you have have an experience that differs from the intended one.\n"; - this.requestFile = file; - this.method = "POST"; - this.URLString = ""; - this.encodeURIString = true; - this.execute = false; - - this.onLoading = function() { }; - this.onLoaded = function() { }; - this.onInteractive = function() { }; - this.onCompletion = function() { }; - - this.createAJAX = function() { - try { - this.xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); - } catch (e) { - try { - this.xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); - } catch (oc) { - this.xmlhttp = null; - } - } - if(!this.xmlhttp && typeof XMLHttpRequest != "undefined") - this.xmlhttp = new XMLHttpRequest(); - if (!this.xmlhttp){ - // no XMLHttpRequest support, so no AJAX. - this.failed = true; - } - }; - - this.encodeURLString = function(string){ - varArray = string.split('&'); - for (i = 0; i < varArray.length; i++){ - urlVars = varArray[i].split('='); - if (urlVars[0].indexOf('amp;') != -1){ - urlVars[0] = urlVars[0].substring(4); - } - urlVars[0] = encodeURIComponent(urlVars[0]); - urlVars[1] = encodeURIComponent(urlVars[1]); - varArray[i] = urlVars.join("="); - } - return varArray.join('&'); - } - - this.runResponse = function(){ - eval(this.response); - } - - this.runAJAX = function(urlstring){ - if (urlstring){ this.URLString = urlstring; } - if (this.element) { this.elementObj = document.getElementById(this.element); } - if (this.xmlhttp) { - var self = this; // wierd fix for odd behavior where "this" wouldn't work in the readystate function. - this.xmlhttp.open(this.method, this.requestFile ,true); - if (this.method == "POST" && this.xmlhttp.setRequestHeader) { - this.xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded') - } - if (this.encodeURIString){ this.URLString = this.encodeURLString(this.URLString); } - this.xmlhttp.send(this.URLString); - this.xmlhttp.onreadystatechange = function() { - switch (self.xmlhttp.readyState){ - case 1: // Loading. - self.onLoading(); - break; - case 2: // Loaded. - self.onLoaded(); - break; - case 3: // Interactive - is called every 4096 bytes.. pretty much just tells you it's downloading data. - self.onInteractive(); - break; - case 4: // Completed. - self.response = self.xmlhttp.responseText; - self.responseXML = self.xmlhttp.responseXML; - self.onCompletion(); - if(self.execute){ self.runResponse(); } - if (self.elementObj) { - self.elementObj.innerHTML = self.response; - } - break; - } - }; - } - }; -this.createAJAX(); -//if(this.failed && this.AjaxFailedAlert){ alert(this.AjaxFailedAlert); } -} -//Setup VIM: ex: et ts=2 enc=utf-8 : -- cgit v1.2.3