mirror of
https://github.com/moodle/moodle.git
synced 2025-02-13 20:36:42 +01:00
4863 lines
199 KiB
Plaintext
4863 lines
199 KiB
Plaintext
|
||
ErfurtWiki - a fast, user-friendly, highly configurable Wiki engine in PHP
|
||
==========================================================================
|
||
|
||
|
||
README
|
||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
This is the documentation for ewiki. I tries to describe nearly everything,
|
||
but therefore has now grown to long to be read at once. However it is often
|
||
sufficient to just read the first few paragraphs to set it up (plugins can be
|
||
activated at any later time). If you have the Wiki running, then you can also
|
||
read this file in hypertext format.
|
||
|
||
|
||
1 What is this?
|
||
1.1 Why "ErfurtWiki"?
|
||
1.2 WikiAlternatives
|
||
1.3 Authors
|
||
1.4 Project pages
|
||
1.5 Obtaining support
|
||
1.6 License
|
||
1.7 Known Bugs
|
||
|
||
2 HowTo
|
||
2.1 Integration with yoursite.php
|
||
2.1.1 Creating a "config.php"
|
||
2.1.2 Generation of a "monsterwiki.php" script
|
||
2.1.3 What to do if images don't work
|
||
2.2 Supplying the WikiPageName
|
||
2.2.1 mod_rewrite or PATH_INFO
|
||
2.2.2 use with the 404 trick
|
||
2.3 Security considerations
|
||
2.3.1 PHP settings (register_globals)
|
||
2.3.2 _protected_mode
|
||
2.4 simple usage restrictions via wrappers
|
||
2.5 PhpWiki compatibility
|
||
2.5.1 Transition from another WikiWare
|
||
2.6 Idea Collection
|
||
2.6.1 Multiple Wikis / InterWiki feature abuse
|
||
|
||
3 Internals
|
||
3.1 the ewiki_ functions
|
||
3.2 $GLOBALS pollution
|
||
3.3 the EWIKI_ constants
|
||
3.4 $ewiki_config array
|
||
3.5 internal coding explained
|
||
3.5.1 how ewiki operates
|
||
3.5.2 used variables
|
||
|
||
4 Tweaking
|
||
4.1 Using the wiki source transformation only
|
||
4.2 Customizing ewiki_format()
|
||
4.3 Customization using CSS
|
||
4.3.1 user style classes in pages
|
||
4.3.2 rendered page content
|
||
4.3.3 pages enclosed in style classes
|
||
4.3.4 plugin output styling
|
||
|
||
5 Explanations
|
||
5.1 Binary and text support
|
||
5.1.1 Image uploading
|
||
5.1.2 Image caching
|
||
5.1.3 Image WikiMarkup
|
||
5.1.4 binary_store, direct access
|
||
5.1.5 Arbitrary binary content
|
||
5.2 $action and $id
|
||
5.2.1 ewiki URLs
|
||
|
||
6 Everything in one script
|
||
6.1 database plugins
|
||
6.1.1 MySQL support
|
||
6.1.2 plugins/db/flat_files (IMPORTANT)
|
||
6.1.3 plugins/db/fast_files
|
||
6.1.4 plugins/db/any
|
||
6.1.5 plugins/db/adodb
|
||
6.1.6 plugins/db/dba
|
||
6.1.7 plugins/db/phpwiki13
|
||
6.1.8 plugins/db/binary_store
|
||
6.2 core enhancements
|
||
6.2.1 plugins/patchsaving
|
||
6.2.2 plugins/notify
|
||
6.2.3 plugins/jump
|
||
6.2.4 plugins/email_protect
|
||
6.2.5 plugins/spages (StaticPages)
|
||
6.2.6 plugins/pluginloader
|
||
6.2.7 plugins/init
|
||
6.2.8 plugins/feature/appendonly.php
|
||
6.2.9 plugins/feature/imgresize_gd.php
|
||
6.2.A plugins/feature/imgresize_magick.php
|
||
6.2.B plugins/feature/spellcheck.php
|
||
6.3 action/ plugins
|
||
6.3.1 plugins/action/diff.php
|
||
6.3.2 plugins/action/translation.php
|
||
6.3.3 plugins/action/like_pages.php
|
||
6.3.4 plugins/action/raw.php
|
||
6.4 plugins related to hypertext links
|
||
6.4.1 plugins/linking/tcn
|
||
6.4.2 plugins/linking/plural
|
||
6.4.3 plugins/linking/autolinking
|
||
6.4.4 plugins/linking/link_css
|
||
6.4.5 plugins/linking/link_icons
|
||
6.4.6 plugins/linking/link_target_blank
|
||
6.4.7 plugins/linking/linkexcerpts
|
||
6.4.8 plugins/linking/linkdatabase
|
||
6.4.9 plugins/linking/instanturls
|
||
6.4.A plugins/linking/titlefix
|
||
6.4.B plugins/interwiki/intermap
|
||
6.5 appearance/ tweaks
|
||
6.5.1 plugins/appearance/listpages_br
|
||
6.5.2 plugins/appearance/listpages_ul
|
||
6.5.3 plugins/appearance/listpages_tbl
|
||
6.5.4 plugins/appearance/fancy_list_dict
|
||
6.5.5 plugins/appearance/title_calendar.php
|
||
6.6 page/ plugins
|
||
6.6.1 plugins/page/powersearch
|
||
6.6.2 plugins/page/pageindex
|
||
6.6.3 plugins/page/wordindex
|
||
6.6.4 plugins/page/imagegallery
|
||
6.6.5 plugins/page/aboutplugins
|
||
6.6.6 plugins/page/orphanedpages
|
||
6.6.7 plugins/page/wantedpages
|
||
6.6.8 plugins/page/since_updates
|
||
6.6.9 plugins/page/textupload
|
||
6.6.A plugins/page/wikidump
|
||
6.6.B plugins/page/interwikimap
|
||
6.6.C plugins/page/hitcounter
|
||
6.6.D plugins/page/scandisk
|
||
6.6.E plugins/page/wikinews
|
||
6.6.F plugins/page/wikiuserlogin
|
||
6.6.G plugins/page/randompage
|
||
6.6.H plugins/page/fortune
|
||
6.6.J plugins/page/ewikilog
|
||
6.6.J plugins/page/phpinfo
|
||
6.6.K plugins/page/README
|
||
6.7 markup/ plugins
|
||
6.7.1 Other WikiWares markup
|
||
6.7.2 plugins/markup/css
|
||
6.7.3 plugins/markup/css_singleat
|
||
6.7.4 plugins/markup/footnotes
|
||
6.7.5 plugins/markup/asciitbl
|
||
6.7.6 plugins/markup/complextbl
|
||
6.7.7 plugins/markup/htmltbl
|
||
6.7.8 plugins/markup/rescuehtml
|
||
6.7.9 plugins/markup/rendering_phpwiki12
|
||
6.7.A plugins/markup/rendering_null
|
||
6.8 mpi
|
||
6.8.1 mpi_backlinks
|
||
6.8.2 mpi_multimedia
|
||
6.8.3 mpi_syndicate
|
||
6.8.4 mpi_insert
|
||
6.8.5 mpi_localsitemap
|
||
6.9 visual extensions
|
||
6.9.1 plugins/aview/backlinks
|
||
6.9.2 plugins/aview/linktree
|
||
6.9.3 plugins/aview/toc
|
||
6.9.4 plugins/aview/posts
|
||
6.9.5 plugins/aview/threads
|
||
6.9.6 plugins/aview/subpages
|
||
6.9.7 plugins/aview/downloads
|
||
6.9.8 plugins/aview/imgappend
|
||
6.9.9 plugins/aview/piclogocntrl
|
||
6.9.A plugins/aview/aedit_pageimage
|
||
6.9.B plugins/aview/control2
|
||
6.9.C plugins/aview/aedit_authorname
|
||
6.9.D plugins/aview/aedit_deletebutton.js
|
||
6.A page filters
|
||
6.A.1 plugins/filter/f_fixhtml
|
||
6.A.2 plugins/filter/search_highlight
|
||
6.A.3 plugins/filter/fun_chef
|
||
6.A.4 plugins/filter/fun_upsidedown
|
||
6.A.5 plugins/filter/fun_wella
|
||
6.A.6 plugins/filter/fun_screamomatic
|
||
6.A.7 plugins/filter/f_msiepng
|
||
B.9 BloatWiki extensions
|
||
6.B.1 plugins/module/calendar
|
||
6.B.2 plugins/module/downloads
|
||
6.B.3 plugins/module/tour
|
||
6.C utility code
|
||
6.C.1 plugins/lib/cache
|
||
6.C.2 plugins/lib/speed
|
||
6.C.3 plugins/lib/mime_magic
|
||
6.C.4 plugins/lib/navbar
|
||
6.C.5 plugins/lib/protmode
|
||
6.C.6 plugins/lib/save_storevars
|
||
6.D admin/ plugins
|
||
6.D.1 control
|
||
6.D.2 SearchAndReplace
|
||
6.D.3 SearchCache
|
||
6.E other plugins
|
||
6.E.1 plugins/debug/
|
||
6.E.2 plugins/auth/
|
||
6.E.3 plugins/auth-liveuser/
|
||
6.F separate "extra" tarball
|
||
|
||
7 More separate files
|
||
7.1 Pages in init-pages/
|
||
7.2 Additional tools/ (IMPORTANT)
|
||
7.2.1 tools/t_flags
|
||
7.2.2 tools/t_backup
|
||
7.2.3 tools/t_restore
|
||
7.2.4 tools/t_remove
|
||
7.2.5 tools/t_holes
|
||
7.2.6 tools/t_textinsert
|
||
7.2.7 tools/t_transfer
|
||
7.2.8 tools/t_revert
|
||
7.2.9 tools/ewikictl
|
||
7.2.A tools/wiki2html
|
||
7.2.B tools/mkhuge
|
||
7.2.C tools/mkpluginmap
|
||
7.2.D tools/mkpageplugin
|
||
7.3 examples/
|
||
7.3.1 examples/homepage.php
|
||
7.4 Nice things in fragments/
|
||
7.4.1 strip_wonderful_slashes.php (IMPORTANT)
|
||
7.4.2 strike_register_globals.php
|
||
7.4.3 404finder.php
|
||
7.4.4 htaccess
|
||
7.4.5 binary.php
|
||
7.5 fragments/funcs/*
|
||
7.5.1 fragments/funcs/wiki_format.inc
|
||
7.5.2 fragments/funcs/auth.php
|
||
7.6 fragments/css/*
|
||
7.7 fragments/blocks/*
|
||
7.8 fragments/patches/*
|
||
7.9 How to deal with tweaked code
|
||
|
||
8 Extension HowTo
|
||
8.1 the PlugInterface
|
||
8.2 plugin tasks
|
||
8.2.1 mpi plugins
|
||
8.2.2 authentication/permission plugins
|
||
8.3 writing your own plugin
|
||
8.4 format_* / rendering plugins
|
||
8.4.1 ewiki_format() internals
|
||
8.4.2 the format_ plugin hooks
|
||
8.4.3 $iii[] and $ooo[] block flags
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
-------------------------------------------------------------------- 1 --
|
||
|
||
|
||
|
||
What is this?
|
||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
This is a WikiWikiWeb engine implemented in the PHP web scripting
|
||
language. A WikiWiki is a web site which can be edited by everybody
|
||
who visits it (most commonly without requiring that user to register
|
||
before).
|
||
|
||
It should allow easy integration into an existing web site (portal
|
||
or homepage / CMS-like software), as it is more a library and does
|
||
not output a full .html page but instead just the formatted wiki
|
||
text for inclusion in your pages` body/content area.
|
||
|
||
|
||
|
||
Why "ErfurtWiki"?
|
||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
My home town (Btw, Erfurt is next to Weimar.de) and really that's
|
||
just a name (you're allowed to rename, extend it and to finally
|
||
ship it GPLifyed). You'll soon see the internal name is "ewiki",
|
||
and it is also sometimes called 'EmbeddableWiki'.
|
||
|
||
|
||
If you asked - Why you should I use it?
|
||
|
||
- It is contained within a single file. It does not require 20 other
|
||
files to lie around between your own scripts.
|
||
|
||
- It does not impose a pre-defined layout, and you do not need
|
||
to customize it either as it nicely integrates with your sites`
|
||
layout.
|
||
|
||
- I think it's rather fast. It uses regexs too, but most of the
|
||
ewiki_format() uses the simple and quick string functions.
|
||
|
||
- It got rather featureful, the final release seems near :)
|
||
|
||
|
||
|
||
WikiAlternatives
|
||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
If you don't like ewiki, then try at least one of these:
|
||
|
||
* PhpWiki has a more complete approach than this WikiWare,
|
||
get it from http://freshmeat.net/projects/phpwiki,
|
||
it has support for different database types, features localization
|
||
and comes with an integrated admin area.
|
||
|
||
* WakkaWiki by Hendrik Mans is also a very powerful PHP implementation,
|
||
see http://www.wakkawiki.com/
|
||
|
||
* Miki is another nice (small) implementation in PHP from Jukka
|
||
Zitting. Get it from http://miki.sourceforge.net/
|
||
|
||
* Finally sfWiki - the sourceforge Wiki (therefore can be found on
|
||
http://sfwiki.sourceforge.net/). Some of its wiki syntax looks
|
||
a bit weird (other parts were inspiring), but it features complex
|
||
user authentication.
|
||
|
||
* coWiki - completely OOP and the source code layout is great; looks
|
||
very featureful, but is more a CMS than a Wiki (authentication bloat)
|
||
and has also a little weird markup,
|
||
but better check it out yourself on http://cowiki.org/
|
||
|
||
* And of course there are Wikis in other scripting languages (and yes,
|
||
there is still demand for an implementation in assembler or C !!)
|
||
http://www.freshmeat.net/search/?q=wiki§ion=projects or just
|
||
have a look at http://www.google.com/search?q=wiki
|
||
|
||
* However, the BEST PLACE to look for evil concurrent implementations is
|
||
http://c2.com/cgi/wiki?WikiEngines
|
||
|
||
|
||
|
||
Authors
|
||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
current maintainer: Mario Salzer <mario*erphesfurt<72>de> icq95596825 (+Yah,Jab)
|
||
main contributor: Andy Fundinger <andy*burgiss<73>com> from http://burgiss.com/
|
||
|
||
For the complete list of authors and contributors please see the CREDITS
|
||
file.
|
||
|
||
This project is still in an early stage, to improve it further we need
|
||
to know what doesn't work or what could be enhanced. Every mail is a
|
||
contribution (yep, that is not measured in lines of source code).
|
||
|
||
|
||
|
||
Project Pages
|
||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
official freshmeat project page:
|
||
- http://freshmeat.net/projects/ewiki
|
||
|
||
demo site:
|
||
- http://erfurtwiki.sourceforge.net/
|
||
|
||
newest versions (unstable development releases):
|
||
- http://erfurtwiki.sourceforge.net/downloads/
|
||
|
||
mailing list archive
|
||
- http://www.freelists.org/archives/ewiki/
|
||
|
||
|
||
|
||
Obtaining Support
|
||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
Getting support for problems with ewiki is possible, but please read this
|
||
README first. The author is thankful for BugReports, and of course would
|
||
like to know were this documentation is not detailed enough and fails to
|
||
explain things clearly.
|
||
However, before you send requests to anyone, please visit following site
|
||
(this is necessary to get FREE support):
|
||
|
||
http://www.catb.org/~esr/faqs/smart-questions.html
|
||
|
||
Then please feel free to contact the author or leave notes on the BugReports
|
||
or UserSuggestion pages on our project site.
|
||
Joining our http://erfurtwiki.sourceforge.net/?MailingList would allow you
|
||
to reach a larger audience for your questions (and you can unsubscribe as
|
||
soon as your problems are solved).
|
||
|
||
|
||
|
||
License
|
||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
This "program" is "distributed" as "Public Domain". Public Domain
|
||
is like "FreeWare", but a bit more free ;-> You can think of it
|
||
as the GPL without being bound to the GPL. <note> I didn't want to
|
||
include a LICENSE file larger than the program itself. </note>
|
||
|
||
As this is a free (beer) piece of software, you cannot make me
|
||
responsible for any BUGS or all the REALLY BAD HARD DISK DAMAGES ;-P
|
||
it may lead to.
|
||
|
||
Additional note: a few plugins contain GPL code, and therefore must be
|
||
downloaded separately (mime_magic.php, rendering_phpwiki12.php).
|
||
|
||
|
||
|
||
Known Bugs
|
||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
Currently none. But this note is just here to encourage you to visit
|
||
http://erfurtwiki.sourceforge.net/?BugReports
|
||
|
||
|
||
|
||
|
||
|
||
-------------------------------------------------------------------- 2 --
|
||
|
||
|
||
|
||
|
||
HowTo
|
||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
the ewiki script requires:
|
||
|
||
- Webserver (Apache, Nanoweb, ...)
|
||
- PHP 4.1 or later
|
||
- a SQL database (works faster if you have one)
|
||
- your existing web site layout
|
||
- older PHP's wonderful magic slashes should really be disabled
|
||
|
||
If you don't have the database, there is an add-on for flat-file
|
||
usage (search this document for "db_flat_files" for notes on how to
|
||
get this running).
|
||
|
||
|
||
|
||
Integration with yoursite.php
|
||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
For the next few paragraphs the "yoursite.php" refers to whatever
|
||
files and/or scripts belong to your already existing website. This
|
||
hypothetical script should at least output the <html><body> tags
|
||
around the output from ewiki. The most simple script to accomplish
|
||
this could look like this (see also example-2.php):
|
||
|
||
<HTML>
|
||
<BODY>
|
||
<?php
|
||
|
||
mysql_connect("localhost", "DB-USER-NAME", "PASSWORD"); #[1]
|
||
mysql_query("use DATABASE-NAME-HERE");
|
||
|
||
define("EWIKI_SCRIPT", "yoursite.php?page="); #[2]
|
||
error_reporting(0); #[3]
|
||
|
||
include("ewiki.php"); #[4]
|
||
|
||
echo ewiki_page(); #[5]
|
||
|
||
?>
|
||
</BODY>
|
||
</HTML>
|
||
|
||
[1] The first two commands open a connection to your MySQL database,
|
||
usually one saves the result of mysql_connect() in a variable named
|
||
$db or so, but as PHP does not depend on it if there is only one
|
||
single database connection, it is not used in "ewiki.php" at all.
|
||
|
||
[2] The define line tells ewiki about the hyperlinks it shall
|
||
create.
|
||
|
||
[3] The error_reporting(0) is highly encouraged (but something similar
|
||
is already built into the ewiki.php script).
|
||
|
||
[4] The include("ewiki.php") finally loads the ewiki "library" and sets
|
||
any EWIKI_ constants that have not already been defined here.
|
||
|
||
[5] The final call to the ewiki_page() function returns the wiki page
|
||
which was requested by the browser. You must prepend it with
|
||
"echo" because the ewiki_page() function just returns a <html> enhanced
|
||
string but does not output that one itself.
|
||
|
||
|
||
|
||
Creating a "config.php"
|
||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
Instead of including the plain "ewiki.php" script as shown in the
|
||
example above, many people may find it more useful to include()
|
||
a more customized Wiki yoursite.
|
||
|
||
Customization of ewiki takes place, by pre-defining() some of the
|
||
EWIKI_ configuration settings and loading extension plugins. To
|
||
not move that work and code into yoursite it is recommended to
|
||
create some sort of "config.php" script, which then contained the
|
||
various define() and include() commands.
|
||
It is sometimes even senseful to establish the database connection
|
||
(if you use SQL and not the flat_files backend) inside of such a
|
||
config script, if there wasn't already established in yoursite.
|
||
|
||
So such a config.php script could contain:
|
||
- multiple define() commands, setting ewiki behaviour constants
|
||
- include() comands to load extension plugins
|
||
- evtl. some include() and define() for the db_flat_files plugin
|
||
(if you don't have a SQL database)
|
||
- and last but not least, the include("ewiki.php") script
|
||
|
||
If you then include() such a config.php, you get a fully functional
|
||
and preconfigured Wiki to include into yoursite. By using this
|
||
approach, you still could override some of the EWIKI_ settings with
|
||
additional define() constants right before the include("config.php").
|
||
|
||
<?php
|
||
include("includes/ewiki/myconfig.php");
|
||
?>
|
||
<HTML>
|
||
<BODY>
|
||
<?php
|
||
echo ewiki_page();
|
||
?>
|
||
</BODY>
|
||
</HTML>
|
||
|
||
Note: Please don't get confused by the path names, you of course
|
||
needed to use a subdirectory specification like "ewiki/" before
|
||
every filename specified in these include() commands, if this was
|
||
the dir you put all the ewiki scripts.
|
||
|
||
|
||
|
||
Generation of a "monsterwiki.php" script
|
||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
ewiki over the time grow larger, and nowadays isn't anymore the
|
||
single script it once was. The distribution ships with over hundreds
|
||
of extension plugins. But nevertheless it is still possible to build
|
||
a single script from it all!
|
||
|
||
That being said, the "ewiki.php" script still implements a fully
|
||
functional Wiki (and just only lacks the advanced features supplied
|
||
the plugins). - You could still just include() the "ewiki.php"
|
||
script into yoursite and delete everything else the ewiki tarball
|
||
contained.
|
||
|
||
However, it is also possible to MERGE all wanted plugins and the
|
||
core script together to built a customized (feature enhanced) Wiki
|
||
script from it. All you needed to do was:
|
||
|
||
/unix/$ cat ewiki.php plugins/*.* > monsterwiki.php
|
||
C:/dos/ type ewiki.php plugins/*.* > monsterwiki.php
|
||
|
||
This way you'd get the "monsterwiki.php" file, which contained the
|
||
ewiki core script plug all plugins - but of course, you should only
|
||
copy the ones in, you really need and want (but not "*.*" all as
|
||
shown in the example above)!
|
||
|
||
The UNIX shell script "tools/mkhuge" will do exactly that for you;
|
||
it accepts a parameter from 0 to 3, which will merge a custom set
|
||
of useful plugins into the then generated "monsterwiki.php" script.
|
||
|
||
If you have built a "monsterwiki.php" script, you can include() this
|
||
instead of the minimal "ewiki.php" into yoursite to integrate a Wiki.
|
||
|
||
Eventually you'd also want to merge some configuration settings into
|
||
this monsterwiki script, so you wouldn't have to put the define(...)
|
||
commands into yoursite.php before you include("monsterwiki.php");
|
||
The define() commands however need to be the very first part merged
|
||
into that monsterwiki script, so it's best to edit the monsterscript
|
||
after generation and insert the appropriate settings then at the
|
||
very beginning.
|
||
You could also merge a (reduced!) "config.php" into the script,
|
||
using the above "cat" (or "type" for DOS/Win) method. But beware,
|
||
that this "config.php" then does not contain any include() command;
|
||
because else the resulting "monsterwiki.php" script would then try
|
||
to load the "ewiki.php" core script and plugins which were probably
|
||
already merged in. Even if you merge such a minimal config script
|
||
at the start of this monsterwiki script, you still could override
|
||
some settings (at least establishing the database connection) from
|
||
within yoursite, if you think it's useful.
|
||
|
||
Additional note: You could still include() plugins, if you included()
|
||
such a monsterwiki script into yoursite, provided that the plugin
|
||
you try to include() wasn't already merged into that monsterwiki.php
|
||
script before (else it would crash the PHP interpreter, because
|
||
loading it twice is once too much).
|
||
|
||
StaticPages (read about "spages" plugin) can also be included, if
|
||
you first convert them into ordinary ["page"] plugins using the
|
||
'mkpageplugin' commandline tool.
|
||
|
||
|
||
|
||
What to do if images don't work
|
||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
The first example, as well as the "example-2.php" have problems with
|
||
binary content, because: the <HTML> is output before the 'ewiki.php'
|
||
library was loaded and got the chance to output pictures.
|
||
|
||
So one should better rewrite the above example yoursite.php script to:
|
||
|
||
<?php
|
||
mysql_connect(":/var/run/mysqld/mysqld.sock", "USER", "PW");
|
||
mysql_query("use DBNAME");
|
||
|
||
define("EWIKI_SCRIPT", "yoursite.php?page=);
|
||
error_reporting(0);
|
||
|
||
include("ewiki.php");
|
||
|
||
$content = ewiki_page();
|
||
?>
|
||
<HTML>
|
||
<HEAD>
|
||
<TITLE><?php echo $ewiki_title; ?>
|
||
</HEAD>
|
||
<BODY>
|
||
<?php
|
||
echo $content;
|
||
?>
|
||
</BODY>
|
||
</HTML>
|
||
|
||
Please again, note the initial <?php part before the very first plain
|
||
HTML output - yoursite.php must really start with it, or else binary
|
||
content (uploaded images) won't work!
|
||
|
||
You could, of course write a "binary.php" besides "yoursite.php", to
|
||
get around this problem; please see fragments/ for an example.
|
||
|
||
|
||
|
||
Supplying the WikiPageName
|
||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
If you just call ewiki_page() as shown in the first example, it will
|
||
try to get the name of the requested WikiPage either from the
|
||
$_SERVER["PATH_INFO"] variable or from one of the GET-variables '?id='
|
||
or '?name=' or '?page=' or '?file=' (available as $_REQUEST["name"]).
|
||
If yoursite.php however uses another way or another varname to receive
|
||
the WikiPageName you can just give it as first parameter:
|
||
|
||
ewiki_page( $id = "WikiPageName" );
|
||
|
||
example-4.php shows how this can be used to list a second WikiPage
|
||
(the list of newest pages) somewhere else on yoursite.php.
|
||
|
||
|
||
|
||
mod_rewrite or PATH_INFO
|
||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
If you dedicate a complete directory for your wiki, you should keep
|
||
in mind, that some of the generated URLs contain slashes (for
|
||
example "edit/WikiPage"), and will look like subdirectories and thus
|
||
confuse browsers.
|
||
|
||
So you should either set EWIKI_SCRIPT to the absolute directory
|
||
containing your wiki wrapper script: define(EWIKI_SCRIPT,
|
||
"http://myserver/wiki/"); or else put a <BASE HREF="..."> into the
|
||
generated pages. Take this precaution because some of the generated
|
||
links contain additional slashes (like "edit/ThisPage") and thus may
|
||
make browsers believe in a changed subdirectory.
|
||
|
||
This applies to mod_rewrite usage and if you call your wiki wrapper
|
||
with the page name as PATH_INFO (like "/wiki/index.php/WikiPage").
|
||
|
||
Do not forget to enable EWIKI_USE_PATH_INFO, as it is per default
|
||
disabled for Apache servers! Also check, if EWIKI_URLENCODE and
|
||
_URLDECODE suit your needs, else you will find it useful to have URL
|
||
generation encapsulated in the ewiki_script() function.
|
||
|
||
|
||
|
||
use with the 404 trick
|
||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
Once I implemented a way to run a web server below another one
|
||
(actually Nanoweb below Apache, for more details see
|
||
http://nanoweb.si.kz/), because the Apache on one of my providers
|
||
servers was heavily misconfigured - so I handed work over to a
|
||
secondary WebServer.
|
||
|
||
This trick also works without mod_rewrite support, and is therefore
|
||
also well suited for cheap WebSpace. Put following into the
|
||
.htaccess of the dedicated wiki directory:
|
||
|
||
#-- handle "not found" pages by ewiki
|
||
ErrorDocument 404 /wiki/index.php
|
||
DirectoryIndex 404 index.php
|
||
|
||
This will allow the "yoursite.php/ewiki.php" script to catch all
|
||
missed files, which would usually trigger a 404 error. Inside your
|
||
ewiki wrapper script, you must then however decode the originally
|
||
requested URL:
|
||
|
||
$url = $_SERVER["REQUEST_URL"]; # Apache often uses this one
|
||
$url = preg_replace("#^/wiki#", "", $url); # strip wiki subdir name
|
||
$_SERVER["PATH_INFO"] = $url; # make ewiki see it
|
||
|
||
The second step is very important, it strips the name of the
|
||
dedicated subdirectory from the URL, which cannot be done inside
|
||
ewiki.php.
|
||
|
||
The $url from the above example could also be used as $id
|
||
parameter to ewiki_page().
|
||
|
||
It should be noted, that some Apache implementations are garbaging
|
||
POST requests in case of a triggered 404 error - but you can simply
|
||
test this by saving a changed WikiPage.
|
||
|
||
See also the "fragments/404finder.php" example on this.
|
||
|
||
Do not forget to enable EWIKI_USE_PATH_INFO, as it is per default
|
||
disabled for Apache servers!
|
||
|
||
|
||
|
||
|
||
|
||
|
||
Security considerations
|
||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
ewiki was developed using a PHP5 interpreter, but with limitations of PHP4.3
|
||
in mind. There are huge differences (a rather instable, bug-prone and still
|
||
unfinished language) across the 4.x versions of PHP. The 4.0 series is not
|
||
enough to run ewiki, you'll need at least a PHP 4.1 (4.07) to make it work
|
||
reliable.
|
||
|
||
One must also know, that there are also differences between the settings of
|
||
providers. Some for example enforce users to run their scripts in so called
|
||
"safe mode" (crippled mode) in place of real server security guidelines.
|
||
Other still use pre-4.3 settings for the PHP interpreter (the Win4 php.ini
|
||
still is outdated). So take care, and adjust settings using .htaccess`
|
||
php_option for Apache servers.
|
||
|
||
|
||
|
||
PHP settings (register_globals)
|
||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
Because ewiki was developed on later PHP versions (at least 4.3), it
|
||
heavily uses the $_REQUEST array and assumes a deactivated
|
||
"register_globals" setting in php.ini
|
||
If this is not the case for your setup / WebServer. or with your
|
||
provider the ewiki.php script may expose a lot security leaks
|
||
(because of uninitialized variables).
|
||
|
||
ewiki in general does only use a few global variables, but especially
|
||
the $ewiki_ring variable (which is used for PROTECTED_MODE) can lead
|
||
to problems, if you use it without an existing authentication
|
||
concept. The $ewiki_plugins is also a very complex task, and I
|
||
cannot safely state that it won't be able to produce exploits, if
|
||
the variable is tweaked externally (pushed into by a client).
|
||
|
||
So the best thing you could do is to disable register_globals (this
|
||
can be done from inside a directories .htaccess file by inserting
|
||
the line "php_option register_globals off").
|
||
|
||
A fragments/ include will be added to strike against variables which
|
||
got set from outside (this is rather easy for variables used by
|
||
ewiki, because their names all start with "$ewiki_").
|
||
|
||
|
||
|
||
The two modes of operation (_protected_mode and _flat_real_mode)
|
||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
While this wiki was originally developed as a real wiki, many people
|
||
use it for different things now, like private HomePages, easy CMS on
|
||
commercial web sites.
|
||
|
||
This fact lead to the support of a restricted operation mode, now
|
||
known as the _PROTECTED_MODE. It is often used to require people to
|
||
log in before they can edit pages or upload things. In this README
|
||
this mode of operation will often be referred to also as the
|
||
'crippled mode'. It is completely optional, and doesn't have any
|
||
impact on speed, when left disabled.
|
||
|
||
Btw, the standard ewiki operation mode is
|
||
now known as the _FLAT_REAL_MODE.
|
||
|
||
If you'd like to use authentication, you'll probably want to chain
|
||
some plugins which enable you to use the user database from
|
||
yoursite.php, so you do not need a separate .htaccess or an
|
||
additional relational database for passwords. Please see the section
|
||
on auth plugins.
|
||
|
||
See also the EWIKI_PROTECTED_MODE configuration constant and the
|
||
separate "plugins/auth/README.auth" file for further and more
|
||
detailed informations on this feature.
|
||
|
||
|
||
|
||
simple usage restrictions via wrappers
|
||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
The easiest way to cripple a Wiki setup to be browseable-only for the larger
|
||
public, and to allow only a small subset of users to edit pages is to write
|
||
two wrapper scripts around the ewiki.php library.
|
||
|
||
One of the wrapper scripts should include and use ewiki as described in the
|
||
"Integration with yoursite.php" paragraph. You may want to move this wrapper
|
||
script into a password protected subdirectory (say "/wikiadmin/index.php").
|
||
|
||
Another wrapper script should then be provided for the users that are only
|
||
allowed to view pages. To disallow editing you'll just have to enrich it
|
||
with commands like:
|
||
|
||
unset($ewiki_plugins["action"]["edit"]); # disables editing
|
||
unset($ewiki_plugins["action"]["info"]); # no info/ action
|
||
unset($ewiki_plugins["page"]["SearchPages"]); # no search function
|
||
unset($ewiki_plugins["action"]["view"]); # kill wiki completely
|
||
|
||
This code must occur after you have 'included("ewiki.php");' the library,
|
||
but before you call the 'ewiki_page();' function, so the unwanted actions
|
||
and pages really do not get activated.
|
||
|
||
So far the basic approach. If you however have real user authentication
|
||
code behind the scenes you probably don't want to maintain two different
|
||
wrapper scripts. You'll then just put the functionality stripping code
|
||
from above into an if-clause in "yoursite.php" like:
|
||
|
||
if (! $user_is_logged_in) {
|
||
unset($ewiki_plugins["action"]); # (do it less destructive ;)
|
||
}
|
||
|
||
Note: this is again an example, DO NOT copy&paste examples and assume
|
||
they'll work for you!
|
||
|
||
|
||
|
||
PhpWiki compatibility
|
||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
The MySQL database table is partially compatible to PhpWiki versions 1.2.x,
|
||
but not with the current PhpWiki 1.3.x versions. There is however now the
|
||
db_phpwiki13 plugin which allows to access those (rw).
|
||
|
||
|
||
|
||
Transition from another WikiWare
|
||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
If you choosed ewiki to replace an already existing wiki script on
|
||
your site, you should first think about, that the syntax/WikiMarkup
|
||
isn't equal across all Wikis. There are a few markup extension
|
||
plugins, that may help you around this, but beware that transition
|
||
with a larger collection of WikiPages won't be very easy.
|
||
|
||
The best way to import the old WikiPages to ewiki, is to first
|
||
export it using the tools of the previous WikiWare. You can then
|
||
just put the produced text/plain PageSource into "init-pages/",
|
||
because all files found therein (note, that there shouldn't be any
|
||
file name extension like .txt) are feed directly into the ewiki
|
||
database, when ewiki is run for the very first time (when the
|
||
EWIKI_PAGE_INDEX is not found in the db).
|
||
|
||
There is a "plugins/db_phpwiki13.php" which may be useful in first
|
||
trying ewiki, but it is not recommended to use it for daily work.
|
||
Speaking of PhpWiki you could also use the "tools/t_convertdb.php"
|
||
to import (and markup convert) all pages from PhpWiki to the ewiki
|
||
database format.
|
||
|
||
|
||
|
||
|
||
|
||
|
||
-------------------------------------------------------------------- 3 --
|
||
|
||
|
||
|
||
|
||
Internals
|
||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
The MySQL database table structure is to a certain degree compatible
|
||
with that of the well known <20>PHPWiki<6B> v1.2.x (you only need to change
|
||
EWIKI_DB_TABLE_NAME to "wiki" to use it). This is the MySQL statement
|
||
which creates our database table (you can find it at the bottom of the
|
||
"ewiki.php" script):
|
||
CREATE TABLE ewiki (
|
||
pagename VARCHAR(160) NOT NULL,
|
||
version INTEGER UNSIGNED NOT NULL DEFAULT 0,
|
||
flags INTEGER UNSIGNED DEFAULT 0,
|
||
content MEDIUMTEXT,
|
||
author VARCHAR(100) DEFAULT 'ewiki',
|
||
created INTEGER UNSIGNED DEFAULT 0,
|
||
lastmodified INTEGER UNSIGNED DEFAULT 0,
|
||
refs MEDIUMTEXT,
|
||
meta MEDIUMTEXT,
|
||
hits INTEGER UNSIGNED DEFAULT 0,
|
||
PRIMARY KEY id (pagename, version)
|
||
)
|
||
|
||
I didn't like the column name {pagename} but as I've seen this was
|
||
the only difference I renamed it, therefore now the ewiki_database()
|
||
function translates it from "pagename" to "id" and vice versa most of
|
||
the time - else this would be really slim and nice code :)
|
||
|
||
The columns {version} holds the different saved page versions. Other
|
||
Wikis require a secondary "backup" or "history" table for old versions,
|
||
but as I couldn't imagine what this is for, there is just one table
|
||
in ewiki; and it seems this is really enough. The first {version} of
|
||
a wiki page is always numbered 1. An existing page {version} will
|
||
never get overwritten => very secure MySQL usage.
|
||
|
||
For what's in the {flags}, see the README section about constants. The
|
||
{content} of course holds the wiki pages source. The {created} and
|
||
{lastmodified} should be clear too.
|
||
|
||
{refs} contains a "\n" separated list of referenced WikiPages. The
|
||
code to generate that list is rather unclean, so it often contains
|
||
GhostPages. However this does not hurt ewiki and the few functions
|
||
that utilize {refs}, so there is currently no need to slow it down
|
||
by fixing this.
|
||
|
||
{meta} can hold additional informations, which allows to extend ewiki
|
||
without requiring to ALTER and convert the ewiki database table. It
|
||
currently holds some mime headers for binary content and some other
|
||
useful informations for images and uploaded files.
|
||
|
||
{hits} should have gone into {meta} really. But having it separate
|
||
allows us to use the very fast mysql UPDATE function.
|
||
|
||
Note, that the ewiki database table can hold other things than wiki
|
||
pages - binary content (images) for example, depending on the setting
|
||
of the {flags} field.
|
||
|
||
And last comment about this, the one-table-concept also made it really easy
|
||
to implement the flat file based "database backend".
|
||
|
||
|
||
|
||
ewiki_ functions
|
||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
Some of the core functions of ewiki.php can be used separate from the
|
||
others and some of them were designed to be replaced by different
|
||
implementations.
|
||
Btw, all the functions, constants and variables start with "ewiki_"
|
||
to make it easier to mix it into other projects (reduces function name
|
||
conflicts and similar problems, that usually arise if you join two
|
||
or more scripts into one program).
|
||
|
||
|
||
ewiki_page($id)
|
||
---------------
|
||
This is the main function which fetches the selected WikiPage
|
||
(or the one given with $id) via ewiki_database to transform
|
||
with ewiki_format().
|
||
If the requested page does not exist it returns the edit
|
||
screen.
|
||
It also includes some virtual pages (InfoAboutThisPage,
|
||
NewestPages, SearchPage, ReferencesToThisPage, ...).
|
||
|
||
|
||
ewiki_page_...()
|
||
----------------
|
||
These functions were separated out from the main ewiki_page()
|
||
to make it more readable.
|
||
Most of them contain code to generate the few special/internal
|
||
WikiPages (Search, Newest, Info, and the Edit <FORM>, ...)
|
||
|
||
|
||
ewiki_control_links($id, $data)
|
||
-------------------------------
|
||
Prints the line with the EditThisPage and PageInfo, ... links.
|
||
|
||
|
||
ewiki_format($wiki_source, $params)
|
||
----------------------------------------------------------
|
||
This returns the formatted (HTML) output for the given WikiSource
|
||
(with all the WikiMarkup in it).
|
||
|
||
The second param is an array with various config overrides. An entry
|
||
of "scan_links"=>1 for example tells ewiki_format to lookup the
|
||
referenced WikiPages in the database (see ewiki_scan_wikiwords) for
|
||
filling up $ewiki_links. Another $params entry is "html"=>0, which
|
||
controls interpetation of the <html>...</html> page content blocks.
|
||
|
||
|
||
ewiki_render_wiki_links(&$o)
|
||
----------------------------
|
||
Transforms WikiLinks and square brackets in a page into html links.
|
||
|
||
|
||
ewiki_scan_wikiwords(&$wiki_source, &$ewiki_links)
|
||
--------------------------------------------------
|
||
work with regex on the wiki source text, to find valid WikiWords,
|
||
the $ewiki_links will be filled with informations if the found page
|
||
names exist in the DB.
|
||
|
||
|
||
ewiki_link_regex_callback()
|
||
---------------------------
|
||
Called from ewiki_format(). To separate the ewiki_format() from
|
||
the database this function will utilize the global $ewiki_links
|
||
(generated on demand by ewiki_format) to output either a normal
|
||
link or a question-mark after the WikiPageName to signal a
|
||
non-existent page.
|
||
|
||
|
||
ewiki_script()
|
||
--------------
|
||
Builds the complete URL needed to access the given resource. This
|
||
function replaces/enhances the static EWIKI_SCRIPT constant and
|
||
unifies the generated URLs (less bugs). It also helps around
|
||
various design flaws (like nice looking URL strings), that made
|
||
some parts of ewiki a bit weird and unreliable in the past. Btw,
|
||
now the base URL is stored in $ewiki_config["script"].
|
||
|
||
|
||
ewiki_script_binary()
|
||
---------------------
|
||
Is just a ewiki_script() wrapper, but can additionally distinguish
|
||
between binary download and upload URLs, which could be utilized by
|
||
(database external) plain file storages (see plugins/binary_store).
|
||
|
||
|
||
ewiki_binary()
|
||
--------------
|
||
Gets called automatically for requests with the ?binary= trailer
|
||
which is used to reference cached and uploaded images (or not
|
||
yet cached ones).
|
||
|
||
|
||
ewiki_author()
|
||
--------------
|
||
returns a string with REMOTE_ADDR and the $ewiki_author or a default
|
||
string incorporated
|
||
|
||
|
||
ewiki_auth()
|
||
------------
|
||
Is a simple interface to a probably large collection of plugins,
|
||
which should to actual user and permission management. Support for
|
||
this in the core is however still sporadic.
|
||
|
||
|
||
ewiki_auth_user()
|
||
-----------------
|
||
Queries all registered user databases, and is usually itself called
|
||
from within an auth_method/auth_query plugin.
|
||
|
||
|
||
ewiki_t()
|
||
---------
|
||
Fetches a text string from the $ewiki_t[] array and additionally adds
|
||
some text pieces into it (given as second param). It can retrieve
|
||
translations for registered abbreviations, or searches for complete
|
||
text fragment replacements. It also understands _{...} to recursively
|
||
translate a text snippet inside of larger text blocks.
|
||
This is probably a bit slower and less readable than the previous usage
|
||
of EWIKI_T_ constants, but it saves some memory and allows to extend
|
||
translations or additional text constants (of plugins) a lot more
|
||
easier (previously one had to edit inside a function, which is almost
|
||
impossible to do from outside / per configuration).
|
||
|
||
|
||
ewiki_make_title()
|
||
------------------
|
||
Returns a string enclosing (the generated) page title (as link) into
|
||
the html title markup "<h2>". The $class parameter actually tells from
|
||
which plugin sort it was called, and this decides if a link will be
|
||
generated or the title will be unclickable plain text (the setting in
|
||
$ewiki_config["print_title"] is used to determine that). $go_action tells
|
||
which action to link the title to.
|
||
|
||
|
||
ewiki_chunked_page(...)
|
||
-----------------------
|
||
Is a helper function to split large results into multiple click-through
|
||
pages, and is used by info/ and some search functions/plugins. It only
|
||
produces the click-through links for inclusion on other dynamic pages,
|
||
allows overlapping of page chunk ranges.
|
||
|
||
|
||
ewiki_in_array($value, &$array, $dn=0)
|
||
--------------------------------------
|
||
Case-insensitive variant of PHPs` in_array(), returns the $value if
|
||
found. The $array will be all-lowercased afterwards (except when $dn
|
||
was set).
|
||
|
||
|
||
ewiki_array($array, $index=false, $am=1)
|
||
----------------------------------------
|
||
Returns input-array lowercased (indices), or just the entry for the
|
||
$index if searched for. The $am decides if multiple entries should be
|
||
merged together (uppercase+lowercase merging produces overlaps).
|
||
|
||
|
||
ewiki_database($FUNCTION, $args=array() )
|
||
------------------------------------------
|
||
This function is the "database abstraction" in ewiki. It contains
|
||
''only'' eight SQL statements which must be replaced if you'd like
|
||
to use another database server. It is very stupid, and does not know
|
||
much about its database (keeping it extensible on the other hand),
|
||
therefore one must be careful when passing database entries to it.
|
||
The individual "atomic" functions are:
|
||
|
||
"GET", $args = array( "id"=>STRING, ["version"=>NUM] )
|
||
Fetches the newest wiki page incarnation from the database,
|
||
or alternatively the one given by version.
|
||
|
||
"WRITE", $args = array( COLUMN-NAME => VALUE, ... )
|
||
Saves the contents of the given data array in the database,
|
||
does _never_ overwrite an existing entry (you must keep track
|
||
of the {version} yourself).
|
||
|
||
"GETALL", $args = array( "COLUMN-1", "COLUMN-2", ... )
|
||
Fetches an array of all existing pages in the database, but
|
||
returns it as ewiki_dbquery_result object, which will throw
|
||
the requested columns on ->get(), where the entries 'id',
|
||
'version' and 'flags' are always present.
|
||
|
||
"FIND", $args = array( "WikiPage1", "WikiPageName2", ... )
|
||
Searches the database for the queried page names, returns an
|
||
array which associates the boolean value (if pages found) with
|
||
their names
|
||
|
||
"SEARCH", $args = array( "COLUMN" => "CONTENT" )
|
||
Returns only those pages, where the database COLUMN has a content
|
||
that matches the requested value; the list of pages is returned
|
||
as ewiki_dbquery_result object, where you can access the
|
||
individual entries using the ->get() call, which will return the
|
||
columns 'id', 'version', 'flags' and the scanned COLUMN of course
|
||
unless you ->get("_ALL=1").
|
||
|
||
The following three actions are not required for correct operation,
|
||
but provide additional functionality for some plugins or tools.
|
||
|
||
"HIT", $args = array( "id"=>STRING )
|
||
Increases the hit counter of the given wiki page by 1,
|
||
what is not implemented in db_flat_file.
|
||
|
||
"OVERWRITE"
|
||
Is a wrapper to "WRITE" and does replace existing entries.
|
||
|
||
"DELETE", $args = array( "id"=>STRING, "version"=>NUM )
|
||
Removes the specified page (only the given version) from the
|
||
database; implemented in all database plugins but should be used
|
||
from within the tools/ only.
|
||
|
||
Other functions are usually used internally only, as for example the
|
||
"ALLFILES" command in dbff or dba/dbm plugins.
|
||
|
||
|
||
ewiki_dbquery_result
|
||
--------------------
|
||
Has the member variables $keys and $entries, where the latter
|
||
contains an array of page names that where triggered by your GETALL
|
||
or SEARCH request, and the $keys array contains the column names that
|
||
each subsequent "$result->get()" will return.
|
||
|
||
get()
|
||
Returns the database entry array (see GET above), but only the
|
||
fields the database query should return (at minimum these are
|
||
'id', 'version' and 'flags' and the searched column for SEARCH).
|
||
|
||
get("_ALL=1")
|
||
Instead returns the complete entry.
|
||
|
||
count()
|
||
Returns the number of found database entries.
|
||
|
||
add($row)
|
||
[internal] This is used by the ewiki_database() core functions
|
||
to initialize the $result object with the found entries.
|
||
|
||
|
||
|
||
$GLOBALS pollution
|
||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
At least the ewiki_page() function produces variables in the
|
||
global namespace. Of course they also were named to not interfere
|
||
with anything from yoursite.php:
|
||
|
||
$ewiki_id - Contains the current page name, after ewiki_page()
|
||
was called.
|
||
|
||
$ewiki_action - Contains the $action/ForTheCurrentPage.
|
||
|
||
$ewiki_title - Will be set after the first call to ewiki_page(),
|
||
it is most useful to be printed inside the <TITLE>
|
||
tags inside <HEAD>. So if you want to use it you
|
||
should call ewiki_page() very early, but save its
|
||
output into a variable for later use. This way
|
||
you can make the current wiki pages` title available
|
||
(the _title may be different from the pages _id).
|
||
|
||
$ewiki_errmsg - Sometimes used to pass error notices back (ewiki_auth
|
||
does so for example).
|
||
|
||
$ewiki_links - Is an array produced by ewiki_format() that associates
|
||
all found WikiPageNames with a value of 0 or 1,
|
||
depending on if the referred page exists in the
|
||
database.
|
||
|
||
$ewiki_author - The content of this variable is saved in the author
|
||
field of newly created wiki pages (it will be filled
|
||
with IP:PORT if not set from outside). This is only an
|
||
informational setting, and does not directly correspond
|
||
to the _PROTECTED_MODE.
|
||
You should set it, whenever yoursite.php notes a logged in
|
||
user (so his login gets saved in the wiki pages 'author'
|
||
column). But you should REALLY NOT SPAM IT with your own
|
||
name or ad words.
|
||
|
||
$ewiki_auth_user - Is set by ewiki_auth_user() whenever it successfully
|
||
authenticates a user in _PROTECTED_MODE. This variable
|
||
is then used as reliable state setting, which affects
|
||
permission granting.
|
||
|
||
$ewiki_ring - Holds the permission level ('ring') of the currently
|
||
authenticated user (or else will be unset). This value
|
||
tells only about the user, many plugin functions have
|
||
built-in requirements which will be compared against
|
||
this value (no value or zero means full permissions).
|
||
While this is the built-in way to grant permissions
|
||
and often also suits the needs to do it, the _auth()
|
||
plugin interface allows to work at a much finer degree
|
||
of access granting.
|
||
values: 0=administrator, 1=moderator, 2=editor, 3=guest
|
||
See also plugins/auth/README.auth for more informations.
|
||
|
||
$ewiki_plugins - Is an array which connects task names (say "database"
|
||
or "image_resize" for example) to function names.
|
||
You can utilize this if you decide to extend ewiki.
|
||
There is an own chapter on this.
|
||
|
||
$ewiki_config - Imports some configuration settings from older constants,
|
||
and introduces newer ones, which can then be overridden at
|
||
runtime. Also holds some work and markup transform data.
|
||
|
||
$ewiki_t - Text definitions and translations for all possible
|
||
messages.
|
||
|
||
Things that disappeared again, and which are now part of the $ewiki_config
|
||
array instead include:
|
||
|
||
$ewiki_data - May reappear by setting a _config[] variable.
|
||
|
||
$ewiki_interwiki - Was errornously part of _plugins[] for some time.
|
||
|
||
$ewiki_script - Was a global var for a short period of time, but now is
|
||
a subentry in $ewiki_config.
|
||
|
||
|
||
|
||
|
||
EWIKI_ constants
|
||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
This chapter explains some of the constants and how you can utilize
|
||
them to tweak some of ewiki's behaviour.
|
||
|
||
The recommended way to change settings is to copy the define() commands
|
||
from "ewiki.php" into "yoursite.php" (see our example "config.php"). This
|
||
is a good idea, because then your settings won't get lost if you upgrade
|
||
to a newer version by overwriting your tweaked "ewiki.php".
|
||
|
||
[Note: constants in PHP can be defined() once only, so
|
||
pre-defining them in "yoursite.php" or a "config.php"
|
||
script is nearly like a 'configuration']
|
||
|
||
To define() some of those constants in 'yoursite.php' is especially a good
|
||
thing, because some of them are more used like state variables and it may
|
||
be more senseful to set them depending on informations only available in
|
||
the scripts of yoursite.php (for example if yourscripts provide a way to
|
||
authenticate and login a user you may give him additional rights within
|
||
ewiki by pre-defining one of the following constants).
|
||
|
||
|
||
EWIKI_SCRIPT
|
||
This is the most important setting. It is used by ewiki.php
|
||
to generate links to other WikiPages.
|
||
|
||
It needs the name of yourscript.php which itself includes
|
||
ewiki.php.
|
||
The name of the linked WikiPage is just appended to the string
|
||
defined here, so you must ensure that it either ends in "/"
|
||
or "?id=" or "?name=" or "?page=" so it constructs a valid
|
||
URL after concatenation (or %s replaced) with the WikiPageName.
|
||
|
||
If you utilize mod_rewrite on your server, you may wish to
|
||
make it blank when all requests to http://wiki.example.com/
|
||
are redirected to the correct script by your WebServer.
|
||
|
||
If your wrapper script for example is called 'index.php' then you
|
||
can just set EWIKI_SCRIPT to "?page=" (which then refers to the
|
||
index.php of the current directory).
|
||
You should preferrably set it absolute to the servers DocumentRoot,
|
||
which gets a requirement if you'd like to give page names and actions
|
||
via PATH_INFO "/wiki.php/WikiPage" and not as QUERY_STRING "?id=".
|
||
|
||
Update: this constant will stay, but the core script now utilizes
|
||
the ewiki_script() function (which itself additionally respects
|
||
the $ewiki_config["script"] config variable in favour).
|
||
|
||
ewiki_script() introduces use of the "%s" placeholder inside
|
||
EWIKI_SCRIPT, which will be replaced by pagename and action, when
|
||
URLs are generated.
|
||
|
||
EWIKI_SCRIPT_URL
|
||
Some parts of ewiki require the absolute URL of the ewiki wrapper
|
||
script. So in contrast to the (often) short EWIKI_SCRIPT, this
|
||
constant MUST contain the protocol and server name, like:
|
||
"http://www.example.com/wiki/index.php?id="
|
||
|
||
If you do not set this constant, it will be guessed by the
|
||
ewiki_script_url() funciton, what often works but may be suboptimal
|
||
and could also lead to security problems.
|
||
|
||
|
||
EWIKI_DB_TABLE_NAME
|
||
Sets the name of the MySQL database table name to be created
|
||
and used to store all WikiPages.
|
||
|
||
EWIKI_DBQUERY_BUFFER
|
||
When set to a value>0 then SQL database buffering will be enabled
|
||
for SEARCH and GETALL queries. This is mostly like the old (R1.00)
|
||
behaviour (memory exhaustive), but instead is limited to the size
|
||
defined by this configuration constant (for example 384K).
|
||
|
||
EWIKI_DBFILES_DIRECTORY
|
||
Defines where db_flat_files puts the database (made up of files).
|
||
There is a separate paragraph about this,
|
||
|
||
EWIKI_DBFILES_ENCODE
|
||
If set to 1 will generate urlencoded() filenames even on UNIX
|
||
systems, so the dbff database 'files' get exchangeable across
|
||
DOS/Win and UNIX filesystems. Not recommended, and will make
|
||
ewiki run bogus, if you switch it after there already entries
|
||
in the database.
|
||
It may however be useful to enable this per default, if you want to
|
||
"backup" (this is the wrong way) from a Unix server to a Win box via
|
||
an ordinary FTP program (more professional tools could however handle
|
||
this more easily).
|
||
|
||
EWIKI_INIT_PAGES
|
||
Names the directory from which the basic pages should be read and
|
||
then written into the database, when ewiki is run the very first
|
||
time (or the FrontPage - EWIKI_PAGE_INDEX) is still empty.
|
||
Btw, you could use the 'ewikictl' utility to export all your Wiki
|
||
pages into this directory as auto-reinit-backup.
|
||
|
||
|
||
EWIKI_NAME
|
||
Defines the name of your Wiki. (This is not used currently, but
|
||
is required, as _PAGE_INDEX is often just set to "FrontPage".)
|
||
|
||
EWIKI_PAGE_INDEX
|
||
This defines the name of the WikiPage which shall be displayed
|
||
when no value is received within the URL. Often this is called
|
||
the "FrontPage" of the Wiki.
|
||
|
||
The mysql error message "Table 'ewiki' already exists" will appear
|
||
until you create (and fill) the page specified herein.
|
||
|
||
If you'd like to have a wiki without FrontPage, you can set this
|
||
constant to 0 or "" - you must then however ensure, that the ewiki
|
||
script is never activated without a page name!
|
||
|
||
EWIKI_PAGE_NEWEST
|
||
This defined the name of the virtual (internally generated) page
|
||
containing a list of the lately added WikiPages.
|
||
EWIKI_PAGE_SEARCH
|
||
Holds the WikiPageName for the search function.
|
||
|
||
|
||
EWIKI_CONTROL_LINE
|
||
Pre-define this with 0 before including("ewiki.php") if you
|
||
don't want that "<HR><A HREF>EditThisPage</A> ..." to be shown
|
||
at the bottom of each page.
|
||
|
||
You must then generate the EditThisPage link yourself somewhere
|
||
else on yoursite.php
|
||
|
||
It is often easier to edit the ewiki_control_links() function
|
||
to match the layout/design of yoursite.php.
|
||
|
||
EWIKI_AUTO_EDIT
|
||
If set to 1 (default) will automatically bring up the edit box
|
||
for non-existent pages. Else a page in between will appear ("please
|
||
edit me!") like in PhpWiki.
|
||
|
||
EWIKI_LIST_LIMIT
|
||
Number of pages to show up in search queries (and other generated
|
||
pages).
|
||
|
||
|
||
EWIKI_PRINT_TITLE
|
||
If set to 0 will prevent the page title from being shown on many
|
||
pages (generated and database content ones).
|
||
|
||
EWIKI_SPLIT_TITLE
|
||
If changed to 1 will separate WikiPages titles into its different
|
||
word parts (only on top of each page).
|
||
|
||
|
||
EWIKI_ALLOW_HTML
|
||
Usually you do not want that users are able to add <HTML> tags
|
||
inside the WikiPages as this allows for corruption of your page
|
||
layout or creation of harmful JavaScript areas.
|
||
|
||
This is however one of the few constants which could be set by
|
||
yoursite.php for logged-in users. If it is set while a user
|
||
saves a changed page, then the special EWIKI_DB_F_HTML will
|
||
be set for the newly created version, so <HTML> won't be
|
||
garbaged by ewiki_format() if another (not logged-in) user
|
||
requests the WikiPage next time.
|
||
|
||
You must start a line with a "|" to actually make the HTML
|
||
work within a WikiPage.
|
||
|
||
If a not logged-in user however re-saves the page this flag
|
||
won't be set anymore, so you should be careful about that.
|
||
{{edit ewiki.php and define(_DB_F_HTML with 8+16) to change}}
|
||
|
||
EWIKI_RESCUE_HTML
|
||
Was replaced by "plugins/markup_rescuehtml.php", which now allows
|
||
for certain 'safe' HTML tags within the wiki source to be used.
|
||
|
||
EWIKI_HTML_CHARS
|
||
If set the rendering function will backconvert html entities which
|
||
represent non-latin characters, like ႊ or Ԭ
|
||
|
||
|
||
EWIKI_HTTP_HEADERS
|
||
Allows ewiki to throw HTTP headers, where appropriate. You should keep
|
||
it enabled, as it allows for things like RedirectionAfterEdit (when
|
||
a page gets saved), and many other useful things.
|
||
headers() can often only be sent, if your wiki/yoursite.php is binary
|
||
safe, or uses PHPs output buffering (less reliable).
|
||
|
||
EWIKI_HTTP_HEADERS
|
||
Instructs browsers not to cache delivered pages at all. This is often
|
||
a good thing, because otherwise unclever caches will prevent the most
|
||
recent wikipage version to get seen by users.
|
||
|
||
|
||
EWIKI_CASE_INSENSITIVE
|
||
Was only recently implemented, but ewiki is fully configurable now in
|
||
regards to WikiLink case. It is enabled per default, and thus allows
|
||
referencing any "WikiPage" using strings like "WiKipAgE". This is
|
||
believed to be more user-friendly than case-dependency.
|
||
Reverting to "binary" page name matching is not fully complete now (our
|
||
database scheme was designed for case-insensitivity from the very start
|
||
and thus the DB code first needs tweaking before links in ewiki really
|
||
get case-dependent.
|
||
|
||
|
||
EWIKI_ESCAPE_AT
|
||
Encodes the "@" sign into a html entities, which in the past helped
|
||
a little bit against address rippers. But please check out the new
|
||
plugins/email_protect.php, which is more effective against email
|
||
harvesters.
|
||
|
||
|
||
EWIKI_URLENCODE
|
||
EWIKI_URLDECODE
|
||
You shouldn't disable both unless you know, you don't need to encode
|
||
WikiPageNames (else almost always necessary for sanity and security
|
||
reasons).
|
||
|
||
|
||
EWIKI_USE_PATH_INFO
|
||
If you have a broken Webserver (like many Apache versions), you may
|
||
wish to disable the use of PATH_INFO.
|
||
If you ever happen to see "Edit page '/wiki/example-1.php'", you
|
||
probably need to disable it.
|
||
|
||
|
||
EWIKI_USE_ACTION_PARAM
|
||
Allows the page action command to be given as '&action=...' within
|
||
an URL (else only "action/WikiPage" allowed).
|
||
If you set this constant to 2, ewiki will also create such URLs
|
||
(instead of the usual "edit/PageName" prefix).
|
||
|
||
EWIKI_ACTION_SEP_CHAR
|
||
Defines the character that separates the page name from the action
|
||
name in generated URLs. Per default this is the slash, but you
|
||
could use something else (like the ":" colon), which however may
|
||
have a few drawbacks somewhere else.
|
||
|
||
|
||
EWIKI_DB_F_TEXT
|
||
This flag is set for every WikiPage inside the database. Usually
|
||
the only flag set on creation of a new page.
|
||
Starting from R1.00b previous flags will be copied after applying
|
||
EWIKI_DB_F_COPYMASK.
|
||
|
||
EWIKI_DB_F_BINARY
|
||
Used for cached/uploaded images. Prevents a page from getting
|
||
shown.
|
||
|
||
EWIKI_DB_F_DISABLED
|
||
If set will prevent the page from being shown. Not useful.
|
||
You could more easily unset the TEXT flag to disable page view.
|
||
|
||
EWIKI_DB_F_HTML
|
||
Special flag to allow the current version to include <HTML>
|
||
tags regardless of the global EWIKI_ALLOW_HTML setting.
|
||
|
||
EWIKI_DB_F_READONLY
|
||
Prevents a new version to be saved, and thus disallows
|
||
editing of the WikiPage.
|
||
|
||
EWIKI_DB_F_WRITEABLE
|
||
Is the reversal of READONLY but only useful if you crippled
|
||
ewiki by setting EWIKI_EDIT_AUTHENTICATE, as this flag is only
|
||
intended to reallow editing of a page if you disallowed it before
|
||
with _EDIT_AUTH (which denies access to _all_ pages).
|
||
|
||
EWIKI_DB_F_APPENDONLY
|
||
Gets implemented by the plugins/append*.php, and allows to lock
|
||
a page, in that users can only append to edit (or edit parts of
|
||
it). See the plugin description for more details.
|
||
|
||
EWIKI_DB_F_SYSTEM
|
||
Is used to mark internally used data holders (usually serialized()
|
||
variables).
|
||
|
||
EWIKI_DB_F_TYPE
|
||
Used internally to separate TEXT, BINARY, DISABLED and SYSTEM entries.
|
||
|
||
EWIKI_DB_F_COPYMASK
|
||
When a new page is created, the flags of the previous version
|
||
are ANDed with this value to strip off some unsafe settings.
|
||
It could be possible to add the _DB_F_HTML setting to here, but
|
||
this would allow HTML to be used by all users if the READONLY
|
||
isn't set.
|
||
Always keep in mind, that flags could be reimported from previous
|
||
versions as well (I'm usure if this could happen).
|
||
|
||
|
||
EWIKI_PROTECTED_MODE
|
||
Is an operation mode of ewiki, which activates ewiki_auth() function,
|
||
that is utilized from many places to require a permission level (from
|
||
authenticated users). Set this constant to 1 to enable this mode.
|
||
You'll also need some plugins from plugins/auth/ to make this useful.
|
||
|
||
If this constant is set to 2, then you don't need a permission plugin,
|
||
but can control access to the edit/ function, by setting $ewiki_ring
|
||
to 2 (to allow) from within yoursite.php scripts. This setting is also
|
||
sometimes referred to as the "ClassicProtectedMode".
|
||
|
||
EWIKI_FLAT_REAL_MODE
|
||
Not a configuration directive, but the opposite to _PROTECTED_MODE ;)
|
||
|
||
EWIKI_AUTH_DEFAULT_RING
|
||
Is the permission level which is to be set, if no user is logged in
|
||
currently (defaults to 3 - which means "browsing only").
|
||
|
||
EWIKI_AUTO_LOGIN
|
||
If this is enabled, then ewiki_page() automatically requests for
|
||
(re-)presenting the login <form> on startup, if current authentication
|
||
isn't sufficient to go any further. Leave this enabled, it helps around
|
||
some problems.
|
||
|
||
EWIKI_EDIT_AUTHENTICATE
|
||
EWIKI_ALLOW_OVERWRITE
|
||
Outdated (were present in older ewiki versions). See
|
||
'plugins/auth/auth_perm_old.php' to get them back.
|
||
|
||
|
||
EWIKI_TMP
|
||
Tells ewiki which directory to use for temporary files. The default
|
||
value is "/tmp" or whatever the environment variable $TEMP or %TEMP
|
||
tells (often "C:\\Windoze\\Temp" or "C:\\Trashcan" on DOS systems).
|
||
|
||
|
||
EWIKI_LOGLEVEL
|
||
Log messages are internally separated into four categories:
|
||
0=evil errors, 1=warnings, 2=notices, 3=annoying debug stuff.
|
||
If you do not want a log at all, just set this constant
|
||
to -1 or 357. If you set it to 1 for example, you will see
|
||
error and warning messages in EWIKI_LOGFILE.
|
||
|
||
|
||
EWIKI_SCRIPT_BINARY
|
||
This requires the REAL absolute address of the ewiki.php
|
||
library script (but the database must already be opened).
|
||
Needed for the function for cached/uploaded images.
|
||
You can set it to almost the same value as EWIKI_SCRIPT if it
|
||
is ensured that there is yet no output made, and the headers()
|
||
are not already sent.
|
||
|
||
Usually just "?binary=" works fine (if you use the index.php
|
||
way of including ewiki.php).
|
||
|
||
If you don't want ewiki to use image caching and uploading
|
||
functions you would define this to "" or 0, because this disables
|
||
the <img href> redirection through ewiki_binary(). You should then
|
||
also disable the following two constants:
|
||
|
||
EWIKI_CACHE_IMAGES
|
||
Allow caching of images.
|
||
To disable all the image functions (uploading, caching) set this to 0,
|
||
as well as EWIKI_SCRIPT_BINARY and:
|
||
|
||
EWIKI_IMAGE_MAXSIZE
|
||
ewiki will scale down images until they get smaller than
|
||
the absolute size (bytes) given here. This is true for cached
|
||
and uploaded images.
|
||
Your database may grow really fast, if you set it too high!
|
||
(even if .BMP and .XWD files are discarded normally ;-)
|
||
|
||
EWIKI_IMAGE_MAXALLOC
|
||
Maximum size of image while uploading and resizing it (memory
|
||
limits).
|
||
|
||
EWIKI_IMAGE_RESIZE
|
||
Enables the internal resizing functions.
|
||
|
||
EWIKI_IDF_INTERNAL
|
||
Is used to identify uploaded images and data files. Usually you do
|
||
not want to change it, especially if there are already uploaded
|
||
files; however "chrome://" or "file://localhost/tmp/" could be
|
||
funny alternatives to the default "internal://".
|
||
|
||
Note that the renderer relies only on some unique string to detect
|
||
binary references, but the database functions in fact depend upon
|
||
"://" to return image sizes on "FIND" calls.
|
||
|
||
EWIKI_ACCEPT_BINARY
|
||
Allows users to upload arbitrary binary files through the image upload
|
||
function. You should now rather use the downloads plugin, which adds
|
||
a lot of functionality missing better suited for such purposes.
|
||
This feature depends on the image upload and cache function.
|
||
|
||
|
||
EWIKI_ADDPARAMDELIM
|
||
Automatically defined, holds either "?" or "&" depending on what
|
||
is in EWIKI_SCRIPT. You shouldn't change this unless you know what
|
||
you are doing.
|
||
|
||
|
||
EWIKI_T_*
|
||
These were replaced by the $ewiki_t[] array and ewiki_t() function.
|
||
|
||
|
||
EWIKI_CHARS_U
|
||
EWIKI_CHARS_L
|
||
Allowed chars in WikiPageNames (uppercase and lowercase chars). Use
|
||
this to localize your wiki (standard Wikis only allow A-Z, think of
|
||
that when it comes to InterWiki).
|
||
|
||
|
||
EWIKI_UP_*
|
||
URL parameters. Changing these may only be necessary, if one is already
|
||
evaluated within yoursite.php for other purposes (incompatibilities).
|
||
You could also change these just to make some of the generated URLs
|
||
look a bit nicer ;)
|
||
|
||
|
||
EWIKI_DEFAULT_LANG
|
||
This value is used by a few plugins, that must guess the desired
|
||
language of visitors, or the language of a pages content.
|
||
|
||
EWIKI_CHARSET
|
||
ewiki currently only supports the Latin-1 charset, but UTF-8
|
||
support is underway. So you should only specify "ISO-8859-1"
|
||
or "UTF-8" herein (while most other "ISO-8859-*" are believed
|
||
to work too).
|
||
|
||
|
||
UNIX_MILLENNIUM
|
||
Ey, don't tell me you're using Windoze ;)
|
||
|
||
|
||
EWIKI_VERSION
|
||
Is not used at all. It is just placed on top of every ewiki.php to tell
|
||
you, which version you are running currently.
|
||
Major releases have a version number like 'R1.00a', while testing and
|
||
unstable releases have another number appended 'R1.00a7'.
|
||
|
||
|
||
See the tools/ subdir for a small utility to change the mentioned flags
|
||
in the ewiki database table.
|
||
|
||
|
||
|
||
$ewiki_config array
|
||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
As it turned out not all configuration settings are as everlasting that
|
||
they can be constants (this mainly applies to "look&feel"-settings). So
|
||
some of the above mentioned EWIKI_ constants can now be overridden by
|
||
settings in the more flexible $ewiki_config[] array.
|
||
|
||
Usually this array contains index=>value pairs with simple boolean
|
||
meanings, but often there are more complex entries and some of its contents
|
||
are data/behaviour entries (that were previously/falsely in $ewiki_plugins).
|
||
|
||
You can override settings by just setting $ewiki_config["..."]="...";
|
||
because the entries in ewiki.php are defaults that do not overwrite any
|
||
existing var. So it is really not important if you change things after or
|
||
before the 'ewiki.php' script gets included().
|
||
|
||
["script"] Replaced EWIKI_SCRIPT, and is used to define the
|
||
path/URL of the ewiki wrapper script (yoursite.php,
|
||
which at least included the ewiki.php script and
|
||
runs the ewiki_page() function).
|
||
|
||
["script_url"] Should contain an absolute URL to the ewiki wrapper
|
||
script. (replaces EWIKI_SCRIPT_URL)
|
||
|
||
["script_binary"] like EWIKI_SCRIPT_BINARY
|
||
|
||
["print_title"] replaces EWIKI_PRINT_TITLE, but also allows finer
|
||
grained control:
|
||
a 1 says that titles should be added at top of pages
|
||
a 2 states that titles should also link for internal
|
||
and generated pages
|
||
a 3 will make linked titles even for pages, that
|
||
should normally not have them
|
||
|
||
["split_title"] replaces EWIKI_SPLIT_TITLE, defines if pages` titles
|
||
WikiWords should be separated by spaces when displayed
|
||
|
||
["wiki_pre_scan_regex"] Is the regular expression used to separate out links
|
||
from a pages` content to query the database for
|
||
existence of all mentioned WikiPages.
|
||
|
||
["wiki_link_regex"] Is the actual link search regular expression. It is
|
||
responsible for finding WikiWords and things in square
|
||
brackets and ordinary http:// or internal:// WWW-links
|
||
and even email addresses.
|
||
|
||
["action_links"][$ACTION1][$ACTION2] Holds title for $ACTION2 when shown
|
||
on a page activated with $ACTION1 (only "view" and
|
||
"info" get other actions` titles associated currently).
|
||
This is used for the _control_links() for example to
|
||
entitle/show action links.
|
||
|
||
["idf"][$TYPE] Associates arrays with identification (search) strings
|
||
into classes (we have "url" and "img", "obj" for
|
||
example associated with proto:// prefixes or filename
|
||
extension lists).
|
||
|
||
["interwiki"][$PREFX] Connects other Wikis` script URLs to WikiLinkPrefixes.
|
||
|
||
|
||
["format_block"][$BTYPE] Defines "block" types, which are scanned for in
|
||
WikiPages (using the given search strings), and then
|
||
handled by specialized ["format_block"] plugins
|
||
(instead of the core ewiki_format() function code).
|
||
|
||
["format_params"][] Contains the default $params, the ewiki_format()
|
||
function will assume, if they weren't overridden
|
||
by the second paramater given to it.
|
||
|
||
["wm_..."] WikiMarkup definitions.
|
||
|
||
["htmlentities"] Used by ewiki_format() to pre-escape <html> in
|
||
wikipages (later some of the escaped html is
|
||
often reactivated).
|
||
|
||
|
||
|
||
internal coding explained
|
||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
This section is to explain some of the coding style of ewiki, and how some
|
||
things work. While many parts of ewiki carry good source code comments, it
|
||
is always difficult to quickly understand larger scripts like the ewiki one
|
||
by just reading it.
|
||
|
||
|
||
|
||
how ewiki operates
|
||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
ewiki_page()
|
||
- decodes the $id and $action from the GET or POST parameters
|
||
- tries to load the page from ewiki_database()
|
||
- if this failed then it calls the database init function
|
||
- calls some init plugins, calls the _auth() interface
|
||
- chains to ["page"] plugins which activate for registered $id's
|
||
- alternatively calls a plugin that was registered for $action
|
||
- the default however is to render the current page via _page_view()
|
||
- adds a page title
|
||
- sends the generated output (view page or plugin output) back to
|
||
caller (for output into yoursite.php)
|
||
|
||
ewiki_page_view()
|
||
- feeds the current page $data's ["content"] into ewiki_format()
|
||
- also decodes paramters (html allowed)
|
||
- returns the gererated html back
|
||
|
||
ewiki_format()
|
||
- beatifies the source code (unifies to plain UNIX newlines)
|
||
- calls init plugins (wiki source mangling)
|
||
- splits source into blocks, calls block plugins
|
||
- then goes through each line of the wiki source to generate html
|
||
- there is line-start, in-line and complete-markup
|
||
- afterwards everything went from source into the $ooo-output var
|
||
- first calls the link pre scan regex (which searches for
|
||
wikiwords and stores that information into $ewiki_links)
|
||
- then calls the wiki-link transformation regex function
|
||
- then calls post plugins and returns generated <html>
|
||
|
||
ewiki_render_wiki_links()
|
||
- searches for all (pre-fetched) $ewiki_links in the
|
||
ewiki_database ("FIND")
|
||
- transforms the wikiwords into html-links
|
||
- with the regex and callback func: returns output back to
|
||
- ewiki_format()
|
||
|
||
ewiki_link_regex_callback()
|
||
- transform the wiki source snippet returned from the
|
||
preg_replace() call into a html link string
|
||
- (complicated)
|
||
|
||
ewiki_$page_plugin_*()
|
||
- page plugins return html output, which usually is hardcoded as
|
||
strings into them
|
||
- provide some interactivity
|
||
|
||
ewiki_$action_plugins_*()
|
||
- activate on pages with special registered $action's
|
||
- provide some interactivity (for page editing for example)
|
||
|
||
|
||
|
||
used variables
|
||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
Variables in ewiki often have similar names, and are also
|
||
regularily passed by reference from one function to another (so it
|
||
is in fact the same variable).
|
||
|
||
$id - Is often the name of the current page (which is to be shown
|
||
returned as output. The content of this variable is
|
||
also available via the global $ewiki_id [[for plugins
|
||
that do not have the common ($id,$data,$action)
|
||
interface parameters]].
|
||
|
||
$data - Contains the entry fetched with the initial
|
||
ewiki_database() call. This is an array of the form:
|
||
array(
|
||
"id" => "CurrentPageName",
|
||
"version" => 1, # 1 is the lowest possible
|
||
"flags" => 1,
|
||
"created" => 1002056301,
|
||
"lastmodified" => 1002171711,
|
||
"hits" => 235,
|
||
"author" => "localhost (127.0.0.1:4981),
|
||
"meta" => array("Http-Header"=>"X", "setting"=>"val"),
|
||
"content" => "wiki source...",
|
||
)
|
||
|
||
$action - The $action with wich the current page was requested
|
||
(most often "view", but everybody also knows "edit").
|
||
|
||
$uu - Short for "unused". Is used as temporary variable, especially
|
||
with preg_match() and string functions.
|
||
|
||
$result - Used for database queries SEARCH and GETALL.
|
||
|
||
$row - Holds temporarily fetched entries from the databases
|
||
(like $data), if page lists are to be generated.
|
||
|
||
|
||
|
||
|
||
|
||
-------------------------------------------------------------------- 4 --
|
||
|
||
|
||
|
||
|
||
|
||
Tweaking
|
||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
(this part of the README is also just a collection of random notes)
|
||
|
||
|
||
|
||
Just using the wiki source transformation
|
||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
The ewiki_format function was designed to be used independently from the
|
||
ewiki database.
|
||
|
||
ewiki_format($wiki_source, 0);
|
||
|
||
It just needs the "wiki_source" as argument and generates a nicely
|
||
formatted page from it. All you need to take care about is the
|
||
$ewiki_links variable.
|
||
Set the $ewiki_links=true ("true" and not "1" or anything else) to
|
||
enforce ewiki_format() to treat all references as existing.
|
||
|
||
To separate the ewiki_format() function out of recent ewiki versions,
|
||
you'll also need ewiki_script(), ewiki_link_regex_callback(), ... and
|
||
a lot of constants to take with. It is often much easier to just
|
||
include("ewiki.php") for using ewiki_format(). You then should however
|
||
take care, that the _binary part doesn't get activated by accident. To
|
||
prevent this, just put following before the include() statement:
|
||
|
||
unset($_REQUEST["binary"]);
|
||
include("ewiki.php");
|
||
|
||
If you need it more quickly, or don't want to load the whole ewiki.php
|
||
file, then just try the fragments/wiki_format.inc, which is a stripped
|
||
down version of an older rendering core function (no WikiLinks, no binary
|
||
stuff). Contributed by Frank Luithle.
|
||
|
||
|
||
|
||
Customizing ewiki_format()
|
||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
There are various markup extension plugins available for ewiki, which
|
||
allow you to use BBCode or the syntax of another WikiWare. But if you
|
||
have a closer look at $ewiki_config (the defaults are in 'ewiki.php'
|
||
around line 200), you'll notice, that you can configure the WikiMarkup
|
||
that is to be used.
|
||
Various "wm_..." entries map our obscure markup to html <tags> (or at
|
||
least fragments of them). So in order to add a feature you could insert
|
||
an own rule there. (But keep in mind, that every new WikiMarkup slows
|
||
down the transformation function.)
|
||
|
||
Often you want to append an entry to "wm_style", for example:
|
||
|
||
$ewiki_config["wm_style"]["==="] = array("<h1>", "</h1>");
|
||
|
||
Would allow you to write "===SomeText===" in a WikiPage, which then would
|
||
display as an far-too-large headline.
|
||
|
||
You can also add markup with different 'start' and 'end' characters, using
|
||
the "wm_start_end" entry in $ewiki_config. For example the following would
|
||
render "... ((((some text)))) ..." in a page using the html <kbd> tag:
|
||
|
||
$ewiki_config["wm_start_end"][] = array(
|
||
"((((", "))))", "<kbd>", "</kbd>",
|
||
);
|
||
|
||
Please see the section on "ewiki_format() internals" on how to write a
|
||
["format_..."] or markup plugin.
|
||
|
||
|
||
|
||
Customization using CSS
|
||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
There are now some interesting ways to style ewiki output, just read on.
|
||
|
||
Please note, that it in your stylesheets you just write ".wiki" and
|
||
REALLY NOT ".ewiki" this time.
|
||
|
||
Also important is, that we discourage use of the underscore in CSS class
|
||
names, because it is simply forbidden there, even if current browsers do
|
||
not complain as loudly as the w3c does. (That's just why you'll now see
|
||
lots of class names with minus dashes instead of underscores.)
|
||
|
||
|
||
|
||
user style classes in pages
|
||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
The plugins/markup_css allows you to use CSS classes and style definitions
|
||
in WikiPages. With the double at @@ followed by a css classname or command
|
||
you start styling a paragraph or parts of the text.
|
||
|
||
@@classname at the start of a paragraph will
|
||
enclose it into a <div class="classname">
|
||
completely
|
||
|
||
But inside of some text, the @@styledef only
|
||
affects the part until the next @@ everything
|
||
that comes later won't be enclosed in a <span>
|
||
|
||
While the css style classes must be defined in your sites` global stylesheet
|
||
to take effect, you could also use direct CSS style commands instead. These
|
||
also must follow the @@ immediately and may not contain spaces. So something
|
||
like @@color:#ff0000; will work, while specifying font names may not always.
|
||
|
||
|
||
|
||
rendered page content
|
||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
If you are not interested in walking around the "ewiki.php" script
|
||
when you want to tune how the output looks, you should try to
|
||
utilize the (few) CSS classes ewiki defines (it does not include
|
||
even one color setting or <font> tag):
|
||
|
||
<style type="text/css">
|
||
|
||
p { font: ... } // almost every part of the generated
|
||
// wiki pages is inside a <p>...</p>
|
||
|
||
em { ... } // you could encolour this, if the browsers
|
||
strong { ... } // usual italic is not emphasized enough
|
||
|
||
.indent // to specify a different space-indentation
|
||
|
||
</style>
|
||
|
||
|
||
|
||
pages enclosed in style classes
|
||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
The most powerful way to style the content ewiki includes into your site
|
||
is to use the generic style class names which enclose every page that comes
|
||
from ewiki:
|
||
|
||
<div class="wiki view ThatPage">
|
||
...
|
||
</div>
|
||
|
||
This <div> is always the outermost tag around the html content that returns
|
||
from ewiki_page(). It will always contain the class "wiki", after this
|
||
the current page action/ and PageName (the action is usually "view", but
|
||
can be also "edit", "info", "links" or something similar).
|
||
|
||
Keeping this in mind you can easily style all, a few or even just a single
|
||
page from ewiki in your stylesheet. (We'll explain it here, because the word
|
||
of multiple class names and the cascading way of using CSS is not very
|
||
widespread.)
|
||
|
||
.wiki { // this affects every page ewiki returns
|
||
background-color: #ccccff;
|
||
font-family: "WikiFont";
|
||
...
|
||
}
|
||
|
||
.wiki.view { ... } // only applies to pages that are "view"ed
|
||
.wiki.links { ... } // BackLinks
|
||
.wiki.edit { ... } // when a page gets edited
|
||
|
||
.wiki.PageIndex { // this rule affects only a __single__ page
|
||
... // regardless what the "action/" is now;
|
||
} // useful for "PowerSearch" or "PageIndex"
|
||
|
||
.wiki.edit.ThisVerySpecialPage { // this css section applies to just one
|
||
... // page again, and this time only when
|
||
} // it gets edited
|
||
|
||
|
||
|
||
plugin output styling
|
||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
There often appear special 'pieces' within a rendered page that ewiki
|
||
returns, because not everything in the returned html code belongs to the
|
||
requested pages` content.
|
||
|
||
For example the current pages` title needs its own css class, like does
|
||
the block of action links ("EditThisPage, PageInfo, ...") below every page,
|
||
so it can be distinguished from the pages` text.
|
||
|
||
Also note again the use of the '.wiki' selector within the following
|
||
stylesheet guide and ewiki CSS class overview:
|
||
|
||
|
||
.wiki h2.page.title { // all titles now have it, while many
|
||
... // of them include links as well
|
||
}
|
||
|
||
.wiki.view .action-links { // "EditThisPage, PageInfo, ..." links
|
||
... // are inside such a block, like are two
|
||
} // <hr>'s
|
||
|
||
.wiki.info .chunked-result { // some generated pages (like the history
|
||
... // info/ ones) may need to split their
|
||
} // results; this matches those links
|
||
|
||
//-- the edit/ pages are separated into
|
||
// following blocks:
|
||
.wiki.edit .edit-box { ... }
|
||
.wiki.edit .image-upload { ... }
|
||
.wiki.edit .preview { ... }
|
||
|
||
//-- info/ pages contain a history of page versions, each enclosed in
|
||
// a <table class="version-info">, the <tr>s inside can be selected
|
||
// separately:
|
||
.wiki.info table.version-info { ... }
|
||
.wiki.info .version-info .action-links { ... }
|
||
.wiki.info .version-info .page-author { ... }
|
||
.wiki.info .page-refs { ... }
|
||
.wiki.info .page-flags { ... }
|
||
|
||
|
||
The class naming across most of the extension plugins is not unified, so you
|
||
may often need to look it up here - or inside of the plugins source code.
|
||
This is at least necessary for calendar and navbar, which follow a very
|
||
different naming scheme.
|
||
|
||
.wiki .download-entry { ... }
|
||
.wiki .download-form { ... }
|
||
.wiki .upload-form { ... }
|
||
|
||
.wiki .image-append { ... }
|
||
|
||
|
||
|
||
Idea Collection
|
||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
Here we'll note some tricks, on how to do this and that. Some of the
|
||
following paragraphs also explain workarounds for currently lacking
|
||
features.
|
||
|
||
|
||
|
||
Multiple Wikis / InterWiki feature abuse
|
||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
Other WikiWare provides means to have multiple namespaces in a wiki,
|
||
what if fact is contrary to the original Wiki idea suggesting a
|
||
single flat namespace. ewiki does not support SubWikis or alike, to
|
||
get multiple Wikis using one ewiki installation you'll need multiple
|
||
layout and config wrappers (each with its own absolute URL and
|
||
differen EWIKI_DB_TABLE_NAME or EWIKI_DBFILES_DIRECTORY constants).
|
||
|
||
This way you'd get two independent Wikis (with two different SQL
|
||
database tables, or flat_files directories), and of course links
|
||
between those two need a special syntax. And the best approach here
|
||
was to use the InterWiki linking feature.
|
||
|
||
To do so, invent to InterWikiAbbreviations for each of your separate
|
||
Wikis and add it to $ewiki_config["interwiki"] as follows:
|
||
|
||
$ewiki_config["interwiki"]["main"] = "/wiki/main/?id=";
|
||
$ewiki_config["interwiki"]["office"] = "/wiki/office/?id=";
|
||
$ewiki_config["interwiki"]["tech"] = "http://tech.company.com/?id=";
|
||
$ewiki_config["interwiki"]["our-www"] = "http://www.company.com/";
|
||
|
||
The last one is an example, on how to use the InterWiki feature to
|
||
generate references to arbitrary web documents, with a simple syntax
|
||
like "[our-www:/customers/pub/rules.html]" - it's somehow standard to
|
||
use "company-url:" or "company-www:" as InterWikiAbbreviation for this
|
||
purpose.
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
-------------------------------------------------------------------- 5 --
|
||
|
||
|
||
|
||
|
||
Explanations
|
||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
The next few paragraphs shall enlight more detailed how some things are
|
||
handled in ewiki (and why it is that way).
|
||
|
||
|
||
|
||
Binary and Text content
|
||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
Because I'd like to keep it small (see also the "Everything in one
|
||
script" paragraph) ewiki also creates just one database table.
|
||
Differently from other Wikis this one has the 'flags' setting for
|
||
each saved page. And as I successfully used this bad trick in earlier
|
||
projects many times to integrate support for hundreds of different
|
||
functions (CMS, links, boards/forums, ...) into a single table; I
|
||
thought it could be funny to have something like this in ewiki too.
|
||
|
||
While the image thingi seemed senseful to me, other binary data
|
||
cannot be feed into database without helper plugins, because this is
|
||
a Wiki script and not an almighty portal software!
|
||
|
||
Uploading and caching of images requires the EWIKI_SCRIPT_BINARY
|
||
constant to be set correctly (no output may be made before "ewiki.php"
|
||
is included == "binary safe").
|
||
The ewiki_binary() function handles almost all of this, and gets
|
||
activated automagically (whenever required) as soon as ewiki.php is
|
||
included().
|
||
|
||
I believe these functions to be rather safe, as there are many sanity checks
|
||
throughout the code to separate between _DB_F_BINARY and _DB_F_TEXT content.
|
||
|
||
|
||
|
||
Image Uploading
|
||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
The currently most important use for the BINARY flag and image
|
||
functions is to upload images with the small form below every page
|
||
edit box.
|
||
|
||
The upload/caching functions can be disabled fully if
|
||
EWIKI_SCRIPT_BINARY and EWIKI_CACHE_IMAGES are set empty (or zero).
|
||
|
||
URLs starting with "internal://" represent the uploaded files. The
|
||
string is just a md5() sum generated from the contents of the
|
||
uploaded file. This way files won't get saved another time if they
|
||
are uploaded twice. For uploading a JavaScript-capable browser is
|
||
recommended. It will work without, but then requires the user to
|
||
copy the [internal://...] text (from one window to another).
|
||
|
||
The color of the temporary upload info screen can only be changed
|
||
inside the ewiki_binary() function, currently.
|
||
|
||
Beware that images usually get downscaled if they are larger than
|
||
specified with EWIKI_IMAGE_MAXSIZE (per default 64K).
|
||
|
||
|
||
|
||
Images Caching
|
||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
Images are usually redirected through EWIKI_SCRIPT_BINARY, and ewiki
|
||
tries to save them inside the database as with uploaded images. So
|
||
most of the facts from the previous paragraph apply to this function
|
||
too.
|
||
|
||
You must enable this feature with EWIKI_IMAGE_CACHING, it is shipped
|
||
disabled currently.
|
||
Adding a ?nocache to the image URL disables this feature for just one
|
||
specific image, if _IMAGE_CACHING was otherwise enabled.
|
||
|
||
Images are downscaled to fit the maximum defined size in
|
||
EWIKI_IMAGE_MAXSIZE (bytes) if the PHP libgd extension is available
|
||
(else dropped and then always redirecting clients which request
|
||
those image).
|
||
|
||
|
||
|
||
Image WikiMarkup
|
||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
Usually one writes image references using square brackets around the
|
||
url of an image: [http://www.example.com/pics/image.png] or:
|
||
[internal://md5md5md5md5md5md5md5md5md5md5md5md5.png]
|
||
|
||
This will include (inline) the image into the page, when rendered
|
||
and viewed. Using the standard square bracket link entitling syntax
|
||
also image references can be named (non-graphics / alternative
|
||
text):
|
||
[http://www.example.com/pics/image.png | This is an example image]
|
||
[http://.../image.pic "or entitle it using double quotes"]
|
||
|
||
Images can also be "aligned" to either side of the screen, thus the
|
||
remaining text will flow around it. To achieve this include spaces
|
||
to the left or the right of the image URL:
|
||
|
||
* picture to the LEFT: [http://www.example.com/pics/image.png ]
|
||
* picture to the RIGHT: [ http://www.example.com/pics/image.png]
|
||
* CENTRED picture: [ http://www.example.com/pics/image.png ]
|
||
|
||
Note that you must use __two__ spaces, currently!
|
||
|
||
Image rescaling is possible by appending x=... and y=... as query
|
||
string parameters behind the image URL:
|
||
[http://www.example.com/pics/image.png?x=160&y=120]
|
||
The query string parameters "width" and "height" are also accepted.
|
||
|
||
If you have an image URL, but you do not want to get that image
|
||
inlined into the current page, then just leave out the square
|
||
brackets around.
|
||
|
||
|
||
|
||
binary_store, direct access
|
||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
While storing the binary data together with text pages in the same
|
||
database is most often a good thing and suits most sites, there
|
||
exists also a workaround/hack to keep this binary data in plain
|
||
files. The advantage is a smaller database and possibly a little
|
||
speed enhancement (with a large collection of binary things in the
|
||
db). However the drawback is, that use of plugins/binary_store is
|
||
only transparent to the main ewiki script, but all admin tools/
|
||
won't be aware of it.
|
||
|
||
If you choose to use the binary_store.php plugin, you can also let
|
||
ewiki generate URLs directly to the then stored data files if you
|
||
just set the EWIKI_DB_STORE_URL constant.
|
||
|
||
Please see the paragraph on this plugin for more informations on
|
||
this.
|
||
|
||
|
||
|
||
Arbitrary Binary Content
|
||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
Set the EWIKI_ACCEPT_BINARY constant, if you'd like to allow any
|
||
binary file to be uploaded and saved in the database using the image
|
||
upload function. Uploaded files will show up as ordinary (except
|
||
that "internal://" href prefix) links.
|
||
|
||
Please also note the "plugins/download.php", which does a much
|
||
better job than this constant.
|
||
|
||
|
||
|
||
$action and $id
|
||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
Inside of ewiki.php you'll see many occurrences of variables named $id and
|
||
$action. The $id refers to the current page, which usually is a string like
|
||
ThisPage, ThatPage, OrAnotherPage.
|
||
|
||
Because just having pages wasn't believed to be sufficient enough, there
|
||
is also a way to do something with them. That is what the $action tells.
|
||
The most often used $action is "view" and is automatically assumed when
|
||
no other $action was specified in the current ewiki URL. For non-existent
|
||
pages alternatively the "edit" $action may get used instead.
|
||
|
||
So the $action now delegates control about a requested page to a subfunc
|
||
or plugin of ewiki, so the stored data of the page can be used for
|
||
something (viewing being again the most common thing to do with it).
|
||
|
||
"action/ForTheCurrentPage" is how both often looks in conjunction (again:
|
||
if there is no "$action/" then "view/" will be assumed). Here the $action
|
||
appears in front of the page name separated by a slash. A pagename now can
|
||
contain slashes too, because ewiki can figure out, that "view/That/Page"
|
||
separates into the $action being "view" and $id is "That/Page" in this
|
||
example (the "view" gets mandatory in such cases).
|
||
|
||
|
||
|
||
ewiki URLs
|
||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
"$action/$id" is most commonly appended as "GET parameter" to an
|
||
ewiki URL, after a string like "?id=" or "?page=" - you've already
|
||
noticed that!
|
||
|
||
There are of course other ways to design the URLs ewiki produces
|
||
and uses, the PATH_INFO being one of the most favoured alternatives.
|
||
(we had a paragraph on this earlier, see on top of this README)
|
||
|
||
Other Wikis use different URLs too, but you can tweak ewiki easily
|
||
to a different behaviour, because you have the chance to pass your
|
||
$action and $id to ewiki_page() from different sources. And because
|
||
URL generation is encapsulated into the function ewiki_script()
|
||
you could easily change just a few lines to make them look like you
|
||
desire.
|
||
|
||
The $action can be passed as "?action=" parameter already (this is
|
||
core support), so URLs could for example look like
|
||
".../my/wiki.php?id=ThisPage&action=view" ... or something alike.
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
-------------------------------------------------------------------- 6 --
|
||
|
||
|
||
|
||
|
||
|
||
|
||
Everything in one script
|
||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
I think its handy to have one script for one task, and as ewiki is not
|
||
intended to be used as portal script I think it's senseless to have
|
||
always thousands of libs/scripts surrounding it.
|
||
|
||
However as time went on, it turned out, that it would either slow down
|
||
the core 'library' when everything was included into it, or that there
|
||
couldn't be much further development at some point.
|
||
|
||
So packaging useful but non-essential extensions into separate files was
|
||
a good decision. Most of the plugin code can however still be inserted
|
||
into or appended to the main "ewiki.php" script easily.
|
||
|
||
As I realized that it really takes some time to edit the source when
|
||
including non-standard things I decided to add that simple extension
|
||
mechanism. Internally it is represented by the "$ewiki_plugins" array,
|
||
which holds an list of alternative functions for various tasks.
|
||
This allows to just include("a/plugin.php") for additional functionality
|
||
inside ewiki.
|
||
|
||
Note: if you're going to use almost all plugins, you should think about
|
||
merging them altogether into one .php file:
|
||
cat plugins/*.php > all-plugins.php
|
||
It is much faster to include() just one big .php script, than it is to
|
||
let the PHP parser run over twenty small ones (PHP is not interpreted,
|
||
but memory-compiled).
|
||
|
||
|
||
|
||
database plugins
|
||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
The ewiki.php core script contains a database request function which is
|
||
tailored to a MySQL database. However that function is already prepared
|
||
to chain to another "database abstraction" function if desired.
|
||
|
||
|
||
|
||
MySQL support
|
||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
The first implemented, and still most recommended way to use
|
||
ewiki is with a MySQL (3.21 or later) database. RDBMS work more
|
||
reliably and of course much faster than any other of the ewiki
|
||
database backends.
|
||
|
||
As the core ewiki_database() inside ewiki.php already includes
|
||
the MySQL database calls, there is usually nothing to do, but
|
||
opening a database connection before ewiki.php is included()
|
||
from yoursite.php
|
||
Please look at the top of this README for an example.
|
||
|
||
As PHPs mysql_() functions don't require a db resource link to
|
||
be given anymore, the ewiki_database() function does not pass
|
||
and thus does not require it too. (If you use more than one MySQL
|
||
database, you should take care, that ewiki accesses the one you
|
||
accesses least.)
|
||
|
||
|
||
|
||
plugins/db_flat_files
|
||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
If you don't have access to a MySQL database, then just include()
|
||
this plugin to save your wiki pages into simple text files (editable,
|
||
often called "flat files") inside a dedicated subdirectory. You
|
||
must set EWIKI_DBFILES_DIRECTORY in the 'ewiki.php' script to the
|
||
correct dirname. Don't forget, that it must be given either relative
|
||
to where the ewiki.php script is run from (like "./pages") or
|
||
absolute to the servers filesystem root (for example
|
||
"/export/htdocs/user528742/www.example.com/ewiki/pages") but NOT
|
||
relative to your WebSpaces DocumentRoot!.
|
||
|
||
Usually "/tmp" will work, but this one is purged on every boot; and
|
||
therefore you should create a new sub directory (" mkdir ./pages ")
|
||
where all files go into. This newly created subdir must be made
|
||
<20>world-writeable<6C> using the command "chmod 777 ./pages", because the
|
||
WebServers user id counts when accessing it.
|
||
|
||
Usually you can do both from within your ftp client (the commands
|
||
are the same if you have a shell account):
|
||
ftp> cd .../ewiki
|
||
ftp> mkdir pages
|
||
ftp> chmod 777 pages
|
||
ftp> ls
|
||
-rw----r-- 1 yourname yourname 57024 01. Jan 00:00 ewiki.php
|
||
-rw----r-- 1 yourname yourname 512 01. Jan 00:00 index.php
|
||
drwx---r-x 2 yourname yourname 4096 01. Jan 00:00 init-pages
|
||
drwxrwxrwx 2 yourname yourname 4096 25. Feb 23:59 pages
|
||
drwx---r-x 2 yourname yourname 4096 01. Jan 00:00 plugins
|
||
-rw----r-- 1 yourname yourname 33010 01. Jan 00:00 README
|
||
ftp> quit
|
||
|
||
In graphical FTP clients there is usually a menu entry to set
|
||
"access mode" or "access rights" (sometimes "file permissions") of
|
||
files and directories equally.
|
||
|
||
Again: don't forget to set the EWIKI_DBFILES_DIRECTORY constant to
|
||
the correct value!
|
||
If you create a subdirectory for the page files in the same directory
|
||
the main 'ewiki.php' script resides, you usually want to set the
|
||
config constant to just "./thesubdirectory" - here you could leave
|
||
out the "./" (not required as it only refers to the current path).
|
||
Btw, the slash character will work in directory specifications on
|
||
windoze systems too (mr. bill once had to introduce a hierarchical
|
||
filesystem in DOS 2.0, but choosed the bad backslashes, so no one
|
||
should notice where that idea was borought from).
|
||
|
||
The saved pages are in a format usually referred to as
|
||
"message/http" (like www service request) or "message/rfc822"
|
||
(internet mail). They usually look like:
|
||
+-----------------------------------------------
|
||
| id: WikiPageName
|
||
| version: 1
|
||
| flags: 1
|
||
| author: 127.0.0.1:3054
|
||
| created: 1046532697
|
||
| lastmodified: 1046532697
|
||
| refs: \nErfurtWiki\nNewestPages\n
|
||
|
|
||
| !! WikiSourceContent
|
||
| <more-text>...
|
||
|
||
This file format can be exported by the "backup" tool, so you could
|
||
easily change from the MySQL database to the flat-files one, if
|
||
desired. Each page file exists in different versions, where the
|
||
version number is always appended to the saved pages` file name.
|
||
|
||
EWIKI_DBFILES_NLR converts newlines into the string "\n", but just
|
||
for the values of the metadata. So there shouldn't occur much
|
||
inconsistency, because the wiki content is saved binary safe in
|
||
those "flat files".
|
||
|
||
Filenames will be heavily converted on Win32 (urlencoded), while on
|
||
state of the art UNIX/Linux systems only a few characters are
|
||
replaced (slashes into backslashes) to match filesystem requirements.
|
||
|
||
Problems: dbff WikiPageNames are currently not case-insensitive on
|
||
UNIX-filesystems (while the MySQL-table is).
|
||
Hits won't get counted; I don't think it is that essential, and it
|
||
would take too much effort and time (file accesses) to support this.
|
||
|
||
Note: You cannot do a "backup" from a Unix server to a Win box by
|
||
using a plain FTP program, because many characters are allowed in
|
||
Unix filenames but not on Win partitions. If you really want and
|
||
need to do so regularily, you could then setup ewiki with
|
||
EWIKI_DBFILES_ENCODE enabled from the very beginning. - The better
|
||
aproach was to use 'ewikictl' or 't_backup' or 't_transfer' for the
|
||
backup task.
|
||
|
||
|
||
|
||
plugins/db_fast_files
|
||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
NOTE: The db_fast_files has been merged into db_flat_files, so both
|
||
formats can be read now - at the same time! Updated or new pages will
|
||
however always be written in the file format determined by
|
||
EWIKI_DB_FAST_FILES (defaults to 0), edit the "db_flat_files.php"
|
||
script to change that constant setting, or even add it to your
|
||
"config.php" so it was always present.
|
||
|
||
While "db_flat_files" allows you to edit the WikiPage files (using
|
||
any simple text editor), the "db_FAST_files" plugin saves the pages
|
||
in a binary&compressed format (utilizing PHP's serialize function).
|
||
|
||
This generally leads to a speed enhancement. Additionally this also
|
||
allowed the PageHit counting to be activated (which is off in plain
|
||
flat files).
|
||
|
||
So you may wish to use this plugin in favour of the older
|
||
db_flat_files. And as now both methods are available at the same
|
||
time, you can switch whenever you want.
|
||
|
||
Most of the setup guide from above is true for this one, too.
|
||
|
||
An additional configuration constant introduced here is
|
||
EWIKI_DBFILES_GZLEVEL, which tells the PHP internal zlib how much
|
||
time to spend on compression of the saved pages. Usually the zlib
|
||
uses a default of 5, but for speed purposes it is set to 2 here. You
|
||
can also set the constant to 0 so the files will get saved
|
||
uncompressed (but still in 'binary' format). A value of 9 will give
|
||
you the smallest possible files, but this takes a little more CPU
|
||
cycles (a bit slower).
|
||
|
||
This plugin was contributed by Carsten Senf.
|
||
|
||
|
||
|
||
plugins/db_any
|
||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
If you use a relational SQL database other than MySQL, then you
|
||
may want to give this plugin a try. It itself provides a wrapper
|
||
for the PHP database access wrapper libraries ADOdb, PEAR::DB and
|
||
dbx().
|
||
These wrappers themselves provide unified access to various SQL
|
||
databases in contrast to the many highly different db access
|
||
functions of PHP. Each of these db access wrappers has advantages
|
||
and disadvantages and so none of them is really widespread and many
|
||
users of course only jump on one of these trains. Because ewiki now
|
||
tries to be 'library' it will use whatever database access wrapper
|
||
you already have running on your site or container CMS, and the
|
||
highly simplified anydb_*() now tries to make use of it.
|
||
|
||
The plugin is based upon the current MySQL database backend, and
|
||
thus may not be compatible to all proprietary SQL variants other
|
||
vendors usually enforce.
|
||
|
||
Before you can use the db_any plugin you must ensure that you
|
||
either already have the PHP dbx extension dll loaded or the PEAR::DB
|
||
or ADOdb include files loaded. db_any will like to see an opened
|
||
database connection inside of the global '$db' variable. If
|
||
yoursite.php hasn't already a connection opened when ewiki.php
|
||
gets included, then you should preferably choose to use the
|
||
anydb_connect() function to do so (it will choose from PEAR::DB,
|
||
ADOdb and PHP dbx interfaces).
|
||
The '$db' connection handle can be shared between your site and
|
||
ewiki as long as it is a handle for one of the mentioned database
|
||
access wrapper libraries.
|
||
|
||
|
||
|
||
plugins/db_adodb
|
||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
obsoleted by plugins/db_any
|
||
|
||
|
||
|
||
plugins/db_dba
|
||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
including() this plugin enables ewiki to store the WikiPages in the
|
||
Berkeley DB file given with the EWIKI_DBA constant. Your PHP binary
|
||
must be compiled with either the "dba" or the "dbm" extension to use
|
||
this (and the dba extension requires at least one other database
|
||
type to be enabled).
|
||
|
||
The plugin has a built-in list of preferred dba database types, but
|
||
it respects the filename extension of EWIKI_DBA. For example
|
||
"wiki.db3" would create a DB3 database file, while "wiki.gdbm"
|
||
resulted in a GDBM file, if that php extension was available.
|
||
|
||
The PHP dba extension can support the db types (if compiled for):
|
||
.gdbm
|
||
.ndbm
|
||
.db2
|
||
.db3
|
||
.db4
|
||
.flatfile
|
||
.dbm
|
||
|
||
If you have the PHP "dbm" extension enabled, wrapper functions will
|
||
get enabled, so this works even if the "dba" extension is not there.
|
||
|
||
The .flatfile is often available even if you haven't compiled your
|
||
PHP binary for anything else than "dba". This may also often be
|
||
faster than one of the db_flat_files plugins.
|
||
|
||
If EWIKI_DBFILES_GZLEVEL is set to a value from 1 (fast) till 9
|
||
(very good compression, but slow), the saved pages will get
|
||
compressed inside the dba database. With 0 this feature gets
|
||
disabled.
|
||
|
||
|
||
|
||
plugins/db_phpwiki13
|
||
--------------------
|
||
The original ewiki database table structure was compatible with the
|
||
one used in PhpWiki version 1.2.x, however it turned out that the
|
||
PhpWiki project has yet not stopped completely and choosed to
|
||
implement a more relational table structure with version 1.3
|
||
|
||
This plugin is only meant for transition __from__ PhpWiki v1.3.x to
|
||
ewiki, it should NOT be used to connect ewiki with PhpWiki forever.
|
||
|
||
Write access is disabled per default, but available. However it is
|
||
probably not fully compatible with the database abstraction and usage
|
||
of PhpWiki, so it is likely to corrupt your database if you use it
|
||
for a longer period of time. This warning is mainly because the
|
||
'latestmajor', 'latestminor and 'minor_edit' rows in the PhpWiki
|
||
database, because such stuff is not used by ewiki at all. ewiki also
|
||
tries to put some of the pages meta data into places where it could
|
||
eventually confuse PhpWiki.
|
||
Write access is however done nearly as safe as within the ewiki
|
||
database access layer (INSERT statement to not overwrite existing
|
||
entries).
|
||
|
||
Again: this plugin is in no way meant to encourage you to keep your
|
||
old PhpWiki database! ;>
|
||
Please see also "tools/ewiki_convertdb.php".
|
||
|
||
If you temporarily enable this plugin within the default/example
|
||
"config.php" or the "tools/ewiki_tools_config.php" you can also
|
||
utilize the very powerful 'ewikictl' cmdline utility to generate a
|
||
copy of your PhpWiki database in one of the backup formats suitable
|
||
for later use with ewiki.
|
||
|
||
|
||
|
||
plugins/binary_store
|
||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
Is a hack into the ewiki core, which will store binary/uploaded
|
||
files outside of the default ewiki database (as plain files in a
|
||
data directory).
|
||
|
||
Please also see the documentation on top of the plugin file.
|
||
|
||
Per default ewiki can store "binary" entries beside ordinary text
|
||
pages in the database. If you'd like to keep uploaded files/images
|
||
out of the db, then this plugin/hack will help. It intercepts ewiki
|
||
and saves uploaded data into a plain data file, and instead creates
|
||
a "binary symlink" in the database for it (just the binary meta
|
||
data will get stored, with a hint on where to later access the plain
|
||
data file).
|
||
|
||
This may sometimes be a speed enhancement and reduces size of the
|
||
database, however it has the drawback that only the main ewiki
|
||
script can handle this transparently and all admin tools/ fail to
|
||
deal with the stored plain data files (no backup support and so on).
|
||
|
||
By setting the EWIKI_DB_STORE_URL constant correctly (corresponding
|
||
to your wiki setup and where you store the data files, compare with
|
||
EWIKI_DB_STORE_DIRECTORY) you can make ewiki create URLs directly
|
||
to where the stored plain data files reside (they do not contain
|
||
ewiki database meta data, and thus could be accessed directly by
|
||
http clients/browsers).
|
||
|
||
Please be sure to configure this plugin by setting _DB_STORE_DIRECTORY
|
||
to something more useful than "/tmp", so your uploaded files will
|
||
still be there after a reboot.
|
||
|
||
|
||
|
||
core enhancements
|
||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
Some really cool features are put into extension plugins, and the most
|
||
important, recommended and most often used ones are listed in this section:
|
||
|
||
|
||
|
||
plugins/patchsaving
|
||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
If two users concurrently edit a page, then only the first saving
|
||
attempt will succeed; which the second user is told by the "This
|
||
page version was already saved" failure message.
|
||
|
||
This plugin works around this by passing the contents of the
|
||
concurrent versions through the 'diff' and 'patch' utilities, which
|
||
often merges the two different modifications in a new version that
|
||
can be saved into the database so there is no need for the failure
|
||
message.
|
||
|
||
|
||
|
||
plugins/notify
|
||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
This plugin enables users to get notified, whenever someone changes
|
||
a watched page. To enable 'watching' one must just place an email
|
||
address into the page with following syntax:
|
||
[notify:mail@example.com]
|
||
|
||
This bracket will be invisible, when a page is viewed, so it can be
|
||
placed anywhere. The notifications will be sent to this address
|
||
as long as the tag is there.
|
||
|
||
If one wishes to receive notification messages in another language,
|
||
this just needs to be added after a comma or semicolon, like:
|
||
[notify:pop3@example.net,de]
|
||
This is often only necessary for the generic TLDs .com .org .net,
|
||
or where language code and TLD differ.
|
||
|
||
|
||
|
||
plugins/jump
|
||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
Introduces magic markup for page redirection (switching to another
|
||
page). Possible notations are:
|
||
|
||
[jump:OtherPage]
|
||
[goto:SwitchToThere]
|
||
|
||
The EWIKI_JUMP_HTTP setting tells this plugin to send a Location:
|
||
and redirect HTTP status when encountering a page [jump:]. Else
|
||
this plugin will show up the JumpDestination page without notifying
|
||
the browser about it.
|
||
|
||
It is also possible to perform InterWiki jumps, just be using the
|
||
common InterWikiMoniker: syntax. [jump:WardsWiki:WelcomeVisitors]
|
||
|
||
|
||
|
||
plugins/email_protect
|
||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
This plugin 'ciphers' all valid email addresses inside a WikiPage
|
||
for protection against automated spambots. Additionally it
|
||
throws fake/trap email addresses to spam spammers databases :>
|
||
|
||
It ist not integrated into the core script, because some people
|
||
may prefer to have email addresses visible (intranet usage).
|
||
However it is HIGHLY RECOMMENDED to enable this plugin. Despite
|
||
its file size it is rather fast.
|
||
|
||
|
||
|
||
plugins/spages (StaticPages)
|
||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
The "StaticPages"-plugin allows ewiki to access files in a given
|
||
directory. If these files are in text format, ewiki will parse them
|
||
as WikiPages. But if you put files with an extension .html, .htm or
|
||
.php into one of the specified StaticPages` directories they will
|
||
be returned as is from ewiki_page() - the .php files will of course
|
||
get executed and their output is returned.
|
||
|
||
The basename of the files in the directories to be used by spages
|
||
will make up the WikiPageName with which the files will be
|
||
accessible.
|
||
|
||
Any given directory (see on top of plugins/spages.php) will be read
|
||
recursively. So files in a subdirectory will get available as a
|
||
page with a name like "subdir/FileName". If the name of the
|
||
subdirectory contains a dot at the end, then the slash will be left
|
||
out in favour of a dot: resulted in "subdir.FileName" for example.
|
||
|
||
PHP scripts in a spages directory however have some restrictions,
|
||
like not being able to return headers() or to access most global
|
||
variables without use of the $GLOBALS[] syntax. If you rely on
|
||
such functionality you should rather write an ordinary page plugin
|
||
(which in fact is often much easier).
|
||
From the output of .html and .php scripts only the parts between
|
||
<body> and </body> will be returned as page content. Any <html>
|
||
head area will get stripped, as it would lead to completely invalid
|
||
html code if it was returned as is by ewiki_page() into yoursite.
|
||
|
||
To let this plugin load pages from directories, you should either
|
||
edit the array on top of this plugin file, or define() the
|
||
EWIKI_SPAGES_DIR (before! including the spages.php script), which
|
||
then also would be read in.
|
||
Alternatively you could call the ewiki_init_spages() function
|
||
yourself to register a directory for processing (after! loading the
|
||
spages plugin):
|
||
|
||
include("plugins/spages.php");
|
||
ewiki_init_spages("/var/www/wiki/staticpages/");
|
||
|
||
You could also use this plugin to inline the ewiki database tools/
|
||
as virtual pages.
|
||
|
||
Btw, it is very easy to make a StaticPage from a ewiki page plugin
|
||
and vice versa. Please also note the tools/mkpageplugin which can
|
||
convert anything used as StaticPage into a page plugin for easy
|
||
including() with other ewiki plugins.
|
||
|
||
|
||
|
||
plugins/pluginloader
|
||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
The pluginloader plugin automatically loads ["action"] and ["page"]
|
||
plugins, whenever necessary. This allows to skip dozens of
|
||
include() statements within the config.php (which most always just
|
||
slow down script startup). It is configured via a static array,
|
||
which defines which plugins are allowed to be automatically invoked
|
||
on request.
|
||
Detailed explanaition is available within this script.
|
||
|
||
|
||
|
||
plugins/init
|
||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
Handles database initialization using the distributed standard Wiki
|
||
files from './init-pages'. Unlike the ewiki-builtin function to
|
||
perform that task, this plugin first outputs informational notes
|
||
to the user, prior database initialization.
|
||
Once you have your SQL or ./files database initialized, you should
|
||
disable this plugin (it then isn't be required anymore).
|
||
|
||
|
||
|
||
plugins/feature/appendonly
|
||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
This plugin (a family of) implements the actual support for the
|
||
_DB_F_APPENDONLY page flag. When the flag is set, and this plugin
|
||
active, then ordinary users can further only append text to the
|
||
page, and won't be able to edit the earlier written parts of it. So
|
||
this implements a much softer approach than the _READONLY page
|
||
flag.
|
||
|
||
Also this plugin comes in three flavours, but you can often only
|
||
load one of them:
|
||
|
||
"appendonly" - Really allows just additions to be made to the page,
|
||
each new separated by a horizontal bar.
|
||
|
||
"appendwrite" - Allows to insert a page separator, which protects
|
||
the upper part from getting edited by ordinary
|
||
users. Everything below a horizontal bar (denoted
|
||
by at least 16 minus signs) or a double horizontal
|
||
bar remains editable by all users.
|
||
This plugin activates only if the _APPENDONLY and
|
||
_WRITEABLE flag is set.
|
||
|
||
"appendcomments" - stores page additions in an separate database
|
||
entry marked with _DB_F_PART, but allows this part
|
||
to get edited as whole (like "appendwrite" plugin).
|
||
|
||
The last one is probably not very useful, as it generates some
|
||
overhead and in fact is a collection of various workarounds to
|
||
accomplish the desired functionality (so it may prove little
|
||
lifetime).
|
||
|
||
|
||
|
||
plugins/feature/imgresize_gd
|
||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
Was extracted from the core during the R1.00f development releases.
|
||
Automatically rescales uploaded images, if they are larger than
|
||
EWIKI_IMAGE_MAXSIZE.
|
||
As it uses the gd2 library, there must be support for this in your
|
||
PHP binary. There are a lot of problems on Win32 systems, and also
|
||
some Linux binarys (-dev ones) crash constantly if you load this
|
||
plugin but don't have the libgd activated or available.
|
||
|
||
|
||
|
||
plugins/feature/imgresize_magick
|
||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
Rescales uploaded images via the ImageMagick utility "mogrify",
|
||
which is usually only available on UNIX systems. It should however
|
||
be fairly simple to make this plugin work with some other image
|
||
manipulation tool (at least with Linux).
|
||
|
||
|
||
|
||
plugins/feature/spellcheck
|
||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
Turns the [preview] button below every page edit box into a
|
||
spellcheck function.
|
||
|
||
You need a working 'aspell' or 'ispell' on your system, or the
|
||
PHP internal aspell functions - as it is rather slow it only shows
|
||
up the first 20 errors on a page
|
||
|
||
|
||
|
||
action/ plugins
|
||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
Action plugins are those, that can be activated ON individual pages. And
|
||
usually are shown as links below a page. The ewiki-builtin EditThisPage,
|
||
BackLinks and PageInfo are ["action"] plugins for example.
|
||
|
||
|
||
|
||
plugins/action/diff
|
||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
Enables to view the differences between two saved page versions
|
||
(what changes somebody has done to the page), but it is rather
|
||
stupid and guessworking in how it does so.
|
||
|
||
|
||
|
||
plugins/action/translation
|
||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
This plugin adds a link to the GoogleLanguageTools or AltaVista
|
||
BabelFish, which then remotely translated the current page into
|
||
the users preferred language. It has support to detect the lang
|
||
of the current pages content, to redirect to the right service.
|
||
|
||
|
||
|
||
plugins/like_pages
|
||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
LikePages is a search feature of WardsWiki, which scans for
|
||
WikiPages whose name is somewhat similar to the one of the current
|
||
page (the pagename must be made up of the same WikiWordParts so a
|
||
page gets listed).
|
||
|
||
|
||
|
||
plugins/action/raw
|
||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
Can be used to download the unrendered Wiki source of a page.
|
||
|
||
|
||
|
||
plugins related to hypertext links
|
||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
The linking/ plugin group deals with how links inside the Wiki will look and
|
||
work. Some of them are would also fall the "core enhancements" group, while
|
||
others are just handy or for link beatification.
|
||
|
||
|
||
|
||
plugins/linking/tcn
|
||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
ewiki evaluates the Accept-Language HTTP header modern browser
|
||
send with each request. This plugin now automatically brings up
|
||
a variant of the current requested page if it finds a match in
|
||
the database. To make it work, you need to create pages with
|
||
language suffixes in their names like:
|
||
ThisPage.es
|
||
ThisPage
|
||
ThisPage.de
|
||
or
|
||
OtherPage
|
||
OtherPage*nl
|
||
|
||
Note, that there can always be one page in each name group without
|
||
that suffix. This page then will be assumed to be in the default
|
||
language set by EWIKI_DEFAULT_LANG.
|
||
|
||
If multiple page versions are available, then a list will be
|
||
printed above the page title to allow users to override the
|
||
prefered language guess of this plugin.
|
||
|
||
|
||
|
||
plugins/linking/plural
|
||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
This plugin tries to alias plural and singular page names against
|
||
each other. That is, "WikiPage" will be shown, whenever "WikiPages"
|
||
was requested (and vice versa).
|
||
|
||
|
||
|
||
plugins/linking/autolinking
|
||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
The autolinking plugin allows to have automatic links inside the
|
||
Wiki for words which exist in the database, but are no real
|
||
WikiWords. This is made possible by the companion StaticPage
|
||
admin plugin "spages/Admin/PrepareAutolinking", which must be
|
||
invoked from time to time to update the db cache entry, which the
|
||
autolinking plugin utilizes.
|
||
|
||
|
||
|
||
plugins/linking/link_css
|
||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
Adds CSS classes to the links generated by the Wiki page formatting
|
||
kernel, which then allow you to colorize (or to otherwise change
|
||
appearance of links) via a style sheet.
|
||
|
||
|
||
|
||
plugins/linking/link_icons
|
||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
The link_icons plugin prepends icon <img>s before registered link
|
||
types, like the link_css plugin adds class="..." attributes to the
|
||
html formatted links in every page.
|
||
|
||
|
||
|
||
plugins/linking/link_target_blank
|
||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
Adds 'target="blank"' to link tags <a>, which will result in most
|
||
browsers opening pages in a new window.
|
||
|
||
|
||
|
||
plugins/linking/linkexcerpts
|
||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
Adds a short preview text (with <a title="...">) to every link of
|
||
a page. This however requires multiple additonal database accesses
|
||
(slower) and could enlarge delivered .html page sizes dramatically.
|
||
|
||
|
||
|
||
plugins/linking/linkdatabase
|
||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
Is a page plugin, which provides a nearly compliant implementation
|
||
of the page and link structure export function known from the UseMod
|
||
WikiWare and MeatBall:LinkDatabase. This is useful for contributing
|
||
to the upcoming InterWikiBatabase and BorgWiki.
|
||
|
||
|
||
|
||
plugins/linking/instanturls
|
||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
Allows to specify URL abbreviations on one or more summary pages.
|
||
This can be done using a table or a definition list to assign
|
||
each URL a title, which then can be used on other pages as square
|
||
bracket reference.
|
||
|
||
The 'instanturl_find' plugin in addition allows to use the [find:]
|
||
moniker to perform partial searches in the list of URL
|
||
abbreviations, but also in the list of interwiki monikers. As
|
||
fallback it searches for matching page names or redirects to
|
||
Google.
|
||
|
||
|
||
|
||
plugins/linking/titlefix
|
||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
Allows to swap [title|PageName] in square brackers [Page|title],
|
||
because that can easily be detected, if the page already exists.
|
||
|
||
|
||
|
||
plugins/interwiki/intermap
|
||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
This plugin (in fact only a general include) extends the list of
|
||
known InterWiki: prefixes with a more complete set merged from
|
||
MoinMoin and PhpWiki's interwiki.map. The links are rather
|
||
untested to work at the moment.
|
||
|
||
|
||
|
||
|
||
appearance/ tweaks
|
||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
There are various plugin hooks within ewiki, which allow to mangle text
|
||
strings and data immediately before it would be returned as output.
|
||
|
||
|
||
|
||
plugins/appearance/listpages_br
|
||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
This plugin will produce <br> separated lists (for SearchPages,
|
||
PageIndex, MostVisitedPages, and so on).
|
||
|
||
|
||
|
||
plugins/appearance/listpages_ul
|
||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
Creates real <ul> lists (WordIndex, CreatedPages, ...) instead of
|
||
the · ones, ewiki core would usually return.
|
||
|
||
|
||
|
||
plugins/listpages_tbl
|
||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
The listpages_tbl plugin outputs a table instead of the ordinary
|
||
page lists (PageIndex, UpdatedPages, ...). You need to edit its
|
||
source to set colours to fit your site layout.
|
||
|
||
|
||
|
||
plugins/appearance/fancy_list_dict
|
||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
The WordIndex and PageIndex plugins (unlike the other page list
|
||
returning ones like SearchPages and UpdatedPages) can utlize this
|
||
plugin to output a pretty dictionary like listing of pages.
|
||
|
||
|
||
|
||
plugins/appearance/title_calendar
|
||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
Changes the titles of calendar plugin entries in the database into
|
||
a more readable format for page lists (PageIndex, PowerSearch,
|
||
UpdatedPages, and so on).
|
||
|
||
|
||
|
||
page plugins
|
||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
The page plugins provide additional "generated/internal" pages, which have
|
||
a standard WikiWordPageName and can thus be referenced easily from within
|
||
ordingary WikiPages. But they are of course uneditable (because their
|
||
content is 'hardcoded' as PHP code) and most action/ plugins cannot perform
|
||
any function on them.
|
||
|
||
With the rise of the StaticPages plugin, the page plugins are almost
|
||
outdated, because all their code could now be extracted into a StaticPage
|
||
file, so their code had to be loaded only on request (instead of including()
|
||
them regardless if they're needed or not, how it currently is done).
|
||
|
||
|
||
|
||
plugins/page/powersearch
|
||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
This plugins provides a (probably) better search function
|
||
with the default page name "PowerSearch". It tries to guess
|
||
a value, which tells something about how good a page matches
|
||
the searched words and orders the found pages list by this
|
||
(possibly not very useful) value. It prints the top 10 results
|
||
more verbose.
|
||
|
||
|
||
|
||
plugins/page/pageindex
|
||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
Lists all pages found in the database alphabetically.
|
||
|
||
|
||
|
||
plugins/page/wordindex
|
||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
Lists the word parts of all wiki pages, but requires the
|
||
powersearch plugin to be present, because the result is redirected
|
||
to there as usually many of the listed words belong to multiple
|
||
page names.
|
||
|
||
|
||
|
||
plugins/page/imagegallery
|
||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
Outputs a page containing all cached/uploaded images. The
|
||
images are currently not rescaled to fit on the page; this
|
||
work is left to the browser.
|
||
Needs enhancement.
|
||
|
||
|
||
|
||
plugins/page/aboutplugins
|
||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
Lists all registered plugins (mpi, page, action, task/core). The
|
||
name refers to the "about:plugins" page present in recent browsers.
|
||
|
||
|
||
|
||
plugins/page/orphanedpages
|
||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
Shows up a list of pages, that exist, but are not linked from any
|
||
other pages. These is often also called dead pages.
|
||
|
||
Note that this plugin does not take into account, if any page
|
||
can be reached from the frontpage - such a hypertext tree test
|
||
would require much more work than realized in here.
|
||
|
||
|
||
|
||
plugins/page/wantedpages
|
||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
Returns a list of pages to which QuestionMarkLinks? currently
|
||
exist.
|
||
|
||
|
||
|
||
plugins/page/since_updates
|
||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
Provides a list of pages with actualization times.
|
||
|
||
|
||
|
||
plugins/page/textupload
|
||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
The virtual TextUpload plugin allows to insert new WikiPages by
|
||
uploading text files. It can convert from various formats into Wiki
|
||
content, including some proprietary Office file formats, if one of
|
||
the possibile filters is avaiable (Unix style file piping).
|
||
It also can extract multiple files from a Tarball or ZIP archive
|
||
if the according utilities are available (even on DOS/Win systems).
|
||
|
||
|
||
|
||
plugins/page/wikidump
|
||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
Allows to download a gzipped tarball containing all readily
|
||
rendered pages as .html files and also images.
|
||
|
||
|
||
|
||
plugins/page/interwikimap
|
||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
Shows up the currently in use InterWikiMap.
|
||
|
||
|
||
|
||
plugins/page/hitcounter
|
||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
Sums up the individual {hits} count of all pages and returns the
|
||
overall count.
|
||
|
||
|
||
|
||
plugins/page/scandisk
|
||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
Presents an unserious statistic.
|
||
|
||
|
||
|
||
plugins/page/wikinews
|
||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
Returns the most recently added pages in an overview, that
|
||
incorporates a small fragment from the content of those newly added
|
||
pages.
|
||
|
||
|
||
|
||
plugins/page/wikiuserlogin
|
||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
Allows to set a free-form username, which then would be stored into
|
||
the database whenever a page was edited.
|
||
|
||
|
||
|
||
plugins/page/randompage
|
||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
Shows up a randomly choosen page from the database.
|
||
|
||
|
||
|
||
plugins/page/fortune
|
||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
Calls the Unix /usr/games/fortune program and prints out returned
|
||
content.
|
||
|
||
|
||
|
||
plugins/page/ewikilog
|
||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
Allows to review the content of the 'ewiki.log' file.
|
||
|
||
|
||
|
||
plugins/page/phpinfo
|
||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
Shows the settings of your PHP interpreter.
|
||
|
||
|
||
|
||
plugins/page/README
|
||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
Can parse the distributed README file and make a hypertext
|
||
presentation from it, for easier reading of the Wiki documentation.
|
||
It is printed in <pre> text, but with WikiLinking enabled (which
|
||
however is rarely used in the README file). It additionally
|
||
presents the README.de and README.auth files.
|
||
|
||
|
||
|
||
plugins/page/wikiuserlogin
|
||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
Allows to post a username (Note: this one does not do any sort of
|
||
real authentication), which is saved in the http client as cookie,
|
||
but can afterwards be evaluated as $ewiki_author, so the according
|
||
field in the database entries contains a bit more than just
|
||
the IP address when a changed page gets saved.
|
||
|
||
|
||
|
||
markup plugins
|
||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
The ewiki rendering core is rather fast and consolidated, that was the goal.
|
||
However if you ever happen to need more functionality, this can be added
|
||
easily by the use of plugins.
|
||
|
||
Several are already available to emulate the WikiMarkup of other commonly
|
||
used WikiWare.
|
||
|
||
|
||
|
||
Other WikiWares markup
|
||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
The WikiWorld still lacks a unified markup (and thus also the
|
||
interchangeablity that made html THE standard it today is), and
|
||
while ewiki usues nearly MeatBall:WikiMarkupStandard, you may want
|
||
to reuse existing pages from another Wiki.
|
||
|
||
Currently we provide emulation for:
|
||
* PhpWiki
|
||
* sfWiki
|
||
* miki
|
||
* bbcode (BulletinBoard, not a Wiki)
|
||
|
||
But please see the individual files on which (additional) markup
|
||
they introduce.
|
||
|
||
These plugins on occasion only register their markup within
|
||
$ewiki_config["wm_*"] settings, but often just perfrom
|
||
pre-conversion of foreign markup by utilizing the ["format_src"]
|
||
plugin hook (they then pre-convert page content to use ewiki
|
||
markup rules before the ewiki_format() kernel performs
|
||
transformation).
|
||
|
||
|
||
|
||
plugins/markup/css
|
||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
CSS markup allows you to assign visual styles (or semantic CSS
|
||
class names) to a block of text (paragraph) or to pieces of text.
|
||
@@ is used to start a styled area. The @@ must be immediately
|
||
followed by either a CSS class name (without the dot) or with
|
||
CSS instructions without any whitespaces.
|
||
The following text (after the @@, the class name and a space) will
|
||
then be assigned the class until a (possible) next @@ without
|
||
attached classname or style definition.
|
||
|
||
If the @@ occurs at the start of a paragraph it will enclose it
|
||
in a <div> with the according style assignment, otherwise (in the
|
||
text) a @@ will become a <span>.
|
||
|
||
See also the explanation and examples in this plugins` comments.
|
||
|
||
|
||
|
||
plugins/markup/css_singleat
|
||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
This plugin allows you (like the markup_css plugin) to attach CSS
|
||
classes to a paragraph of text with just a single @ character:
|
||
|
||
@JAVADOCLIKE paragraphs text...
|
||
... ... ... .... ... ... ... ...
|
||
|
||
|
||
|
||
plugins/markup/footnotes
|
||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
Introduces the ability to generate footnotes by placing an
|
||
explanation into double curly brackets {{footnote text}}.
|
||
|
||
You should activate this only if you really need it. Sometimes this
|
||
may be useful, but it is rather bad wiki style; because if someone
|
||
would like to explain something in more detail he should create a
|
||
WikiLink to a new page. So this should be used for very short
|
||
explanations, say incomplete sentences or a book reference and
|
||
other things where it really seems bloat to create a new page.
|
||
|
||
USE THIS RARELY or better not at all!
|
||
(this is a feature copied from MS` EvilWiki)
|
||
|
||
|
||
|
||
plugins/markup/asciitbl
|
||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
Allows to use ASCII-Art tables as outputed by lynx and other
|
||
console programs inside of WikiPages, which eases life, when
|
||
dealing with multiline table cell content.
|
||
|
||
|
||
|
||
plugins/markup_complextbl
|
||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
ewiki allows you to use tables with the || | characters in the wiki
|
||
page source. However the html code for the table layout is
|
||
hardcoded and cannot be changed on a per-page basis.
|
||
This plugin intercepts the wiki source formation process to allow
|
||
you to specify html tag attributes inside a table definition like:
|
||
|
||
|{ border=0 cellspacing=10} here is | the table | content |
|
||
| 2nd line | 2nd line |{ rowspan=2} fills two table rows |
|
||
|{ colspan=2} 3rd line |
|
||
|
||
Note, the opening "{" must follow the "|" character immediately.
|
||
|
||
This code was provided by Hans B Pufal.
|
||
|
||
It may be a security risk to include it per default, as this allows
|
||
to add SomethingScript references as well.
|
||
|
||
|
||
|
||
plugins/markup/htmltbl
|
||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
Provides a block escape to use the standard html <table> code
|
||
instead of the limited pipe syntax provided by ewiki. It will parse
|
||
for <tr> and <td> tags and strip any not registered attributes to
|
||
defend against harm that could be caused by EvilScript additions.
|
||
|
||
The common html <table> syntax then allows easily to include
|
||
multiline table cell content, which is nearly impossible (to edit)
|
||
for the "|...|..|" table syntax.
|
||
|
||
|
||
|
||
plugins/markup_rescuehtml
|
||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
Allows to use some 'safe' HTML tags within the WikiPage. This
|
||
plugin replaces the previous EWIKI_RESCUE_HTML constant.
|
||
|
||
Note that those 'safe' HTML tags may also lead to some confusion,
|
||
especially if you have a wiki about HTML, because then you cannot
|
||
write text about the <STRONG> tag because it will actually always
|
||
be interpolated as itself and not as the text string "<STRONG>".
|
||
|
||
|
||
|
||
plugins/contrib/rendering_phpwiki12
|
||
-----------------------------------
|
||
This is the rendering kernel of PhpWiki 1.2 which was made compatible
|
||
with the ewiki function set.
|
||
It may be useful to reuse old WikiPages, but anyhow most of its
|
||
features are supported by the standard ewiki rendering kernel, so
|
||
this is just a fun and proof-of-concept plugin.
|
||
..................................................................
|
||
: The code of this module is covered by the GPL license, as it :
|
||
: was copied verbatim from the PhpWiki project. :
|
||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
|
||
|
||
|
||
plugins/rendering_null
|
||
----------------------
|
||
If someone would like to use ewiki for a personal homepage, but
|
||
prefers HTML over WikiSyntax, then this rendering core replacement
|
||
may suit his needs. It allows HTML to be used, but still renders
|
||
WikiWords into valid hyperlinks (a few other features from the
|
||
original ewiki_format function are also supported, but you can
|
||
strip even those).
|
||
|
||
|
||
|
||
mpi
|
||
<EFBFBD><EFBFBD><EFBFBD>
|
||
The so called "mpi" plugins can be embedded into pages, and produce their
|
||
output there. They are loaded on demand (only if it appears that they should
|
||
be invoked), but it is possible to include() the individual files regardless
|
||
if they would be used or not.
|
||
|
||
In order to have the mpi plugins available, you must however first load the
|
||
mpi dispatcher:
|
||
include("plugins/mpi/mpi.php");
|
||
Which then takes care of the markup and loading of the requested plugins.
|
||
|
||
The syntax for calling a mpi plugin is (write this inside of a WikiPage,
|
||
when editing it):
|
||
|
||
<?plugin PluginName arg="..." arg2=DDD ?>
|
||
|
||
Where args are often optional or could even be written without the 'argname='
|
||
if only one was required. The name of the mpi plugin is case-insensitive
|
||
here.
|
||
|
||
It is often possible to invoke mpi plugins like ["page"] plugins, if you
|
||
create a link inside of the page using the syntax <?plugin-link PluginName ?>
|
||
|
||
|
||
|
||
mpi_backlinks
|
||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
Prints a list of BackLinks to the current page (the same as when
|
||
clicking on the title of a page or on the BackLinks action link).
|
||
<?plugin BackLinks ?>
|
||
<?plugin BackLinks page=ForThatPage ?>
|
||
|
||
|
||
|
||
mpi_multimedia
|
||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
Allows to <embed> multimedia files into a page.
|
||
|
||
|
||
|
||
mpi_syndicate
|
||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
Embeds remote RSS feeds (abbrv. for "ReallySimpleSyndication" or
|
||
"RichSiteSummary") into the current page. It caches the fetched
|
||
data for quite some time in a pre-parsed _BINARY database entry.
|
||
|
||
|
||
|
||
mpi_insert
|
||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
Allows to insert another readily rendered WikiPage into the current
|
||
one, usually inside of a <table border="1">.
|
||
|
||
|
||
|
||
mpi_localsitemap
|
||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
Is a mix of BackLinks and LinkTree features, and prints the tree of
|
||
pages backreferencing to the current one.
|
||
|
||
|
||
|
||
visual extensions
|
||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
The hook following plugins utilize is called "append-view". It allows to put
|
||
content below a pages contents (after the action links).
|
||
|
||
|
||
|
||
plugins/aview/backlinks
|
||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
Adds the list of BackLinks (references from others to the current
|
||
page) to the current page below it (this list is also available,
|
||
when a user clicks on the title of a page).
|
||
|
||
|
||
|
||
plugins/aview/linktree
|
||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
Prints the possible (shortest) paths to the FrontPage (determined
|
||
by the EWIKI_PAGE_INDEX constant) starting from the current one
|
||
below. Calculations and database access required by this plugin
|
||
often means a slowdown up to 2 seconds before the page is readily
|
||
rendered.
|
||
|
||
|
||
|
||
plugins/aview/toc
|
||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
Analyzes a pages headlines and generates a list of contents box
|
||
from it, which is inserted as float box on top of it then. Use the
|
||
following CSS selector to style it:
|
||
|
||
.wiki .page-toc {
|
||
...
|
||
}
|
||
|
||
|
||
|
||
plugins/aview/posts
|
||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
Allows to add separate comment pages, which will then always be
|
||
displayed below the current one, but remain editable as standalone
|
||
pages. (So the page they are appended to could be marked as
|
||
_READONLY).
|
||
|
||
|
||
|
||
plugins/aview/threads
|
||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
Allows to group the pages created using the "posts" plugin into
|
||
threads.
|
||
|
||
|
||
|
||
plugins/aview/subpages
|
||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
Adds the list of pages, which appear to be SubPages of the current
|
||
one, below it.
|
||
|
||
|
||
|
||
plugins/aview/downloads
|
||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
Shows the uploaded files, which appear to belong to the current
|
||
page (individual pages can be treated as upload sections).
|
||
|
||
|
||
|
||
plugins/aview/imgappend
|
||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
Prints an image uploading box below every page, which allows to
|
||
append an image without prior clicking EditThisPage (the image
|
||
will be automatically appended to the bottom of the page).
|
||
|
||
|
||
|
||
plugins/aview/piclogocntrl
|
||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
This plugin allows users to select a logo graphic which will be
|
||
made available for use in the site template as
|
||
$ewiki_config["page_logo"]. Configureable through the internal
|
||
image list array.
|
||
|
||
|
||
|
||
plugins/aview/aedit_pageimage
|
||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
This plugin allows users to select a page image graphic, and is a
|
||
mix of the aview/piclogocntrl and page/imagegallery plugins.
|
||
|
||
|
||
|
||
plugins/aview/control2
|
||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
Shows examplarily how to replace the standard "action-links" box,
|
||
and adds it on top of the page (including the page title).
|
||
|
||
|
||
|
||
plugins/aview/aedit_authorname
|
||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
Adds a text <input> field below the edit/ box, which allows to
|
||
set the AuthorName which then will get stored, when the page is
|
||
saved. This name is then also stored client-side as cookie for
|
||
at least 45 minutes.
|
||
|
||
Before using this plugin, you must consider, that it eventually
|
||
allows to override the correct username that ProtectedMode plugins
|
||
already provided. And there is no way to prevent users from using
|
||
faked names (because this plugin cannot check if a username was
|
||
already 'registered' and thus can't initiate a password query).
|
||
|
||
|
||
|
||
plugins/aview/aedit_deletebutton.js
|
||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
Adds a JavsScript snippet to allow users to quickly mark a page
|
||
for deleterequest, by inserting the link to "DeleteMe" into the
|
||
contents, when editing it.
|
||
|
||
|
||
|
||
page filters
|
||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
A few plugin hooks exist to completely rework generate page output. These
|
||
are often used to insert content into the otherwise readily rendered .html
|
||
pages (some of the above aview plugins do so, too).
|
||
|
||
|
||
|
||
plugins/filter/f_fixhtml
|
||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
Is a minimal tag balancer (a highly simplified HTML tidy) and can
|
||
work around various html code problems that the ewiki_format()
|
||
html rendering function has. It is for example specialized to
|
||
correct broken html that resulted from WikiMarkupAbuse as for
|
||
example nesting text style attributes like this: __''text__''
|
||
|
||
|
||
|
||
plugins/filter/search_highlight
|
||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
Evaluates the Referer header sent by many browsers to detect if
|
||
a visitor came from a search engine (even the internal PowerSearch
|
||
or SearchPages ones) and highlights the searched words in the
|
||
current pages body (using CSS).
|
||
|
||
|
||
|
||
plugins/filter/fun_chef
|
||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
Borg, Borg, Borg!
|
||
|
||
|
||
|
||
plugins/filter/fun_upsidedown
|
||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
Transforms a pages content using letter transformation to make
|
||
them readibly from upside down with certain fonts. This however
|
||
is a bit tricky for html pages and thus will always wrongly
|
||
intermix sentence order.
|
||
|
||
|
||
|
||
plugins/filter/fun_wella
|
||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
Adds a little CSS to make text swirrling on both sides.
|
||
|
||
|
||
|
||
plugins/filter/fun_screamomatic
|
||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
Detects if someone entered a FULL LINE OF YELLING into a page
|
||
when editing it, and then sets a persistent cookie. That cookie
|
||
will result in all pages contents to be converted into uppercase
|
||
characters.
|
||
|
||
|
||
|
||
plugins/filter/f_msiepng
|
||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
Converts .png <img> references in the WhateverX code required by
|
||
all current IE versions to display .png images according to the
|
||
specification (which currently only an IE external plugin can handle
|
||
correctly).
|
||
|
||
|
||
|
||
BloatWiki extensions
|
||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
ewiki slowly evolves into a well-bloated portal software, and some plugins
|
||
already extend it far beyond the scope of an ordinary Wiki.
|
||
|
||
|
||
|
||
plugins/module/calendar
|
||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
The calendar plugin enables you to add an editable calendar to
|
||
every WikiPage. It is not a fully integral part of ewiki, and needs
|
||
additional calls from yoursite.php to integrate nicely into your
|
||
sites layout.
|
||
|
||
You even don't need to allow a calendar to be added to every page,
|
||
you can just include the plugin file and use the _one_ page called
|
||
"Calendar" or "YearCalendar", where everybody can make additions.
|
||
|
||
The coolest about this plugin is, that it nicely integrates into
|
||
the common WikiNameSpace.
|
||
|
||
Just include("plugins/calendar.php"); so it gets available.
|
||
In yoursite.php integrate it as follows:
|
||
|
||
<?php
|
||
...
|
||
|
||
echo ewiki_page(); // print current pages content, as usual
|
||
|
||
...
|
||
|
||
if ( calendar_exists() )
|
||
{
|
||
...
|
||
echo calendar(); // print calendar for current page
|
||
}
|
||
else {
|
||
... // else only a link to the cal. page
|
||
echo "<a href=\"?id=calendar/$ewiki_id\">ShowCalendar</a>";
|
||
}
|
||
|
||
?>
|
||
|
||
The calendar() function call emits the html for the calendar of the
|
||
currently viewed page (see ewiki_page() call).
|
||
|
||
The function calendar_exists() only checks for already existing
|
||
event entries in the calendar, so the calendar won't show up, if
|
||
there isn't yet anything inside (so only the "ShowCalendar" link at
|
||
the bottom of the page will link to the still empty calendar). You
|
||
can of course leave out this function call or alternatively call
|
||
it with calendar_exists($always=true) if you want the calendar to
|
||
appear most of the time / or for all pages.
|
||
|
||
Please note the "fragments/calendar.css" file, which illustrates
|
||
how to tweak layout and look of the generated calendars.
|
||
|
||
This plugin was contributed by Carsten Senf (originally
|
||
implemented for good old PhpWiki).
|
||
|
||
|
||
|
||
plugins/module/downloads
|
||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
From the very beginning the ewiki core supported uploading image
|
||
files into the database. As time and discussions went on, there
|
||
came the idea to allow arbitrary binary files to be inserted too.
|
||
|
||
The old EWIKI_ALLOW_BINARY way should now be avoided, because the
|
||
download plugin adds more functionality and more features, and is
|
||
easier and more intuitive to use.
|
||
|
||
It adds the virtual page FileUpload to insert a file into the
|
||
database, and the page FileDownload, which lists all available and
|
||
uploaded binary files from the db.
|
||
|
||
Please note, that due to the use of the database interface, the
|
||
file sizes are usually limited to 1-2M (depending on PHP and MySQL
|
||
settings), so there may still be some need to reimplement this,
|
||
using the antique world-writable incoming/ directory method.
|
||
|
||
The mime_magic plugin should be used together with this one, and
|
||
you should change the icon file names (use the ones from the Apache
|
||
distribution for example).
|
||
|
||
(It may also be a good idea to run a secondary database if you
|
||
use it. Have a look at fragments/binary.php, and set up a
|
||
secondary ewiki database using it and the db_flat_files plugin.
|
||
This is useful, because you then can more easily delete uploaded
|
||
files as they don't get saved into a SQL database.)
|
||
|
||
Different download sections can be defined. The "*" merges all
|
||
allowed sections into one list again, and the "**" section even
|
||
lists the files attached to pages.
|
||
|
||
The page attachment link (to append download functionality to each
|
||
page) can be revoked by unsetting the $ewiki_plugins["action"]
|
||
line in the downloads.php file; so only the default sections are
|
||
accepted (and page names rejected).
|
||
|
||
The plugins/downloads_view.php brings up the list of uploaded
|
||
attachments below each page (if existing). It works rather fast
|
||
due to an improved database search call, and should therefore be
|
||
activated whenever you use the per-page attachments feature.
|
||
|
||
See also plugins/binary_store.php to keep your SQL database small,
|
||
but note its limitations.
|
||
|
||
|
||
|
||
plugins/module/tour
|
||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
Provides a shortened view of the current page and all linked ones
|
||
(even the backlinked ones). This eases navigation and page content
|
||
"scanning" (getting a quick overview).
|
||
|
||
|
||
|
||
|
||
utility code
|
||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
The plugins/lib/ directory contains code and functionality, which often is
|
||
required by some of the other plugins (they depend on it then), but which
|
||
was too specialized to get part of the ewiki.php core script.
|
||
|
||
Other extensions in the lib/ subdir didn't match in any of the other plugin
|
||
categories.
|
||
|
||
|
||
|
||
plugins/lib/cache
|
||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
This plugin stores readily rendered Wiki page content (already in
|
||
html format) either into a dedicated directory, or into specially
|
||
named _BINARY wiki database entries. This then allows to satisfy
|
||
further requests to a page with the saved content.
|
||
|
||
You should set EWIKI_CACHE_DIR to a useful value (a so called
|
||
"chmod 777" directory, so your webserver process can write into it),
|
||
or alternatively unset this constant and instead define
|
||
EWIKI_CACHE_DB so cache entries get stored into the ewiki database.
|
||
The _CACHE_DB constant is just prepended to the name of the current
|
||
page to get the name for the database entry for the cache data.
|
||
|
||
|
||
|
||
plugins/lib/speed
|
||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
Evaluates the "conditional HTTP request headers" to tell a client
|
||
if it could reuse its existing cache entry for a requested page.
|
||
This is believed to reduce traffic and also speed up some
|
||
applications. However it is still rather untested and could anyhow
|
||
lead to some problems (never updating pages for some broken
|
||
browsers). The evaluated headers include "If-Unmodified-Since:"
|
||
which corresponds to the "Last-Modified:" answer header ewiki
|
||
always sends.
|
||
|
||
However this will only work, if you disable EWIKI_NOCACHE - but
|
||
then some browsers will never see updated pages, if they were
|
||
misconfigured to not refetch pages, once they got into the internal
|
||
browser cache. (But on the other hand, that is users fault ;)
|
||
|
||
|
||
|
||
plugins/lib/mime_magic
|
||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
Implements the mime_magic feature absent from some (older and
|
||
misconfigured current) PHP interpreter versions (check your phpinfo
|
||
and /etc/mime.types).
|
||
|
||
This is recommended in conjunction with the downloads plugin to
|
||
store correct mime type data, for proper use of icons beside
|
||
download links. Also the correct Content-Type header should always
|
||
be available, when binary content is delivered.
|
||
..................................................................
|
||
: The data of this plugin is covered by the GNU General Public :
|
||
: License. :
|
||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
|
||
|
||
|
||
plugins/lib/navbar
|
||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
Provides a configureable menu for the contents of your Wiki for
|
||
inclusion in your site template, which changes depending on which
|
||
site area you're currently inside (determined partially by
|
||
the linktree plugin).
|
||
|
||
|
||
|
||
plugins/lib/protmode
|
||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
Is an extension package (currently in development) with various
|
||
helper functions for ProtectedMode plugins. Especailly useful in
|
||
conjunction with the auth-liveuser framework.
|
||
|
||
|
||
|
||
plugins/lib/save_storevars
|
||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
An example script on how to store additional vars into page entries
|
||
of the ewiki database (session like).
|
||
|
||
|
||
|
||
admin/ plugins
|
||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
Collects plugins for ewiki / database administration. Often these depend
|
||
upon $ewiki_ring==0 (superuser authentication level in EWIKI_PROTECTED_MODE),
|
||
otherwise refuse to work for security reasons (some functions are however
|
||
available to moderators too, ring level 1).
|
||
|
||
Some of these plugins may be reimplementation of stuff from the tools/
|
||
directory (integrated database tools).
|
||
|
||
|
||
|
||
control
|
||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
Allows changing per-page settings, and adds a easily accessible
|
||
"page control" action link below every page.
|
||
|
||
You can use this to immediately change per-page flags (_READONLY,
|
||
_HTML, _DISABLED and so on). Or you can delete a unwanted page as
|
||
soon as you discover it.
|
||
It also enables you to edit any entries in the {meta} field of
|
||
database entries (which sometimes contain HTTP headers, or page
|
||
"class" settings).
|
||
And the fourth possible action is to easily rename the page (with
|
||
letting ewiki adjust all links to it without further intervention).
|
||
|
||
|
||
|
||
SearchAndReplace
|
||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
Is a powerful text/content replacement tool. It features regular
|
||
expression matching, but can also be used as any other simple string
|
||
replace-all tool.
|
||
|
||
|
||
SearchCache
|
||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
This tool is intended to create 'shadow pages' (or 'ghost pages')
|
||
for ewiki internal/generated pages (the ["page"] plugins), which
|
||
usually weren't found by the PageSearch and PowerSearch. This
|
||
admin plugin just innovocates those page plugins and puts their
|
||
html output into the database (which then can is found by the
|
||
search functions, but is never displayed, because the page plugins
|
||
still have precedence over that faked database content).
|
||
|
||
|
||
|
||
other plugins
|
||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
These plugins actually implement some stuff, one usually should do inside
|
||
of the yoursite.php ewiki wrapper script.
|
||
|
||
|
||
|
||
plugins/debug/
|
||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
Eventually contains debug plugins.
|
||
|
||
|
||
|
||
plugins/auth/
|
||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
Contains various (example and ready to use) plugins for the
|
||
ewiki_auth() interfaces. This directory contains its own
|
||
README.auth, which describes the _PROTECTED_MODE, the _auth API and
|
||
available sample plugins in detail.
|
||
|
||
|
||
|
||
plugins/auth-liveuser/
|
||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
Contains the more advanced authentication and permission plugin
|
||
bundle for chaining ewiki with the PEAR LiveUser authentication
|
||
framework. There is detailed documentation within the README in
|
||
this subdirectory.
|
||
|
||
|
||
|
||
separate "extra" tarball
|
||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
There are a few plugins and extensions, which are not packaged into the
|
||
distributed ewiki tarball for size reasons. You can obtain it from your
|
||
favourite dealer, or from our downloads/ directory as "extra-CVS-*"
|
||
tarball.
|
||
http://erfurtwiki.sourceforge.net/downloads/
|
||
|
||
The package currently just contains a minimal spam filter (which after all
|
||
isn't very useful for a Wiki site), but in the future will also provide
|
||
additional example/ layouts and some image/graphics/icons for layout
|
||
beatification purposes.
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
-------------------------------------------------------------------- 7 --
|
||
|
||
|
||
|
||
|
||
|
||
More separate files
|
||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
Even if one of the project goals was to have everything in one script,
|
||
there are now some support scripts around it, but those are normally
|
||
only required for setup (init-pages for example). With some others you
|
||
need to take a lot of care before installing on a public WebServer
|
||
(the tools/ for example).
|
||
|
||
|
||
|
||
Pages in init-pages/
|
||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
This directory just contains text-files with the wiki_source of the
|
||
initial pages, which are inserted if you start ewiki.php for the
|
||
first time.
|
||
You can create these files with the tools/ewiki_backup.php script
|
||
or the 'ewikictl' commandline utility.
|
||
|
||
|
||
|
||
Additional tools/
|
||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
This directory holds some (external) add-ons, which are intended to
|
||
supply "admin functions" for the ewiki database.
|
||
It is strongly discouraged to integrate this with ewiki, as it could
|
||
be dangerous to have them always around and usually such stuff just
|
||
complicates things (wiki's should be easy to use).
|
||
|
||
Per default you will be presented a HTTP Basic AUTH login dialog box
|
||
by your browser if you try to use one of the www tools. This is made
|
||
to prevent other people from doing any harm to the setup.
|
||
In the "tools/t_config.php" script you'll see a link (include) to
|
||
"fragments/funcs/auth.php", which is responsible for this integrated
|
||
security feature. Just insert a username and a password here to start
|
||
using one of the tools/.
|
||
Please keep in mind, that the $passwords array of that ".../auth.php"
|
||
script has nothing to do with the _auth API or EWIKI_PROTECTED_MODE.
|
||
|
||
Because the www tools (all stuff named "t_*.php") use the "ewiki.php"
|
||
script and the sample "config.php", you eventually need to configure
|
||
these tools separately (they don't need any ewiki plugins, but the
|
||
database ones, if necessary). So if there are problems (for example
|
||
if your ewiki setup is configured with ewiki_auth, which then could
|
||
overlap with the ".../auth.php" script), you may need to edit the www
|
||
tools own "t_config.php" accordingly. (Note: This is not required for
|
||
the default setup.)
|
||
|
||
If you'd like to integrate the tools/ as virtual pages into ewiki, then
|
||
the StaticPages plugin will help. You then needed to remove the line
|
||
that tries to re-include() your config.php and ewiki.php from the tools/
|
||
"t_config.php" script (else you'll break ewiki).
|
||
To load your tools/ as static pages into the wiki, you then just needed
|
||
a call to ewiki_init_spages() with the "./tools/" directory as parameter.
|
||
|
||
|
||
|
||
tools/t_flags
|
||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
WikiPages usually have the page flag TEXT assigned. Other possible
|
||
flags are DISABLED, SYSTEM, BINARY or HTML, READONLY, WRITEABLE.
|
||
Usually page flags are copied from one page version to the next.
|
||
|
||
|
||
|
||
tools/t_backup
|
||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
Use this to make backup files from the WikiPages. This www script
|
||
is a wrapper around the ewikictl commandline utility and library,
|
||
and therefore supports almost the same options.
|
||
|
||
|
||
|
||
tools/t_restore
|
||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
Allows to reinsert the files generated with the backup utility into
|
||
the database. It is also a www wrapper around ewikictl and thus
|
||
also supports the "plain", "flat" and "fast" file formats.
|
||
|
||
|
||
|
||
tools/t_remove
|
||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
Use this to delete a page from the database (including all saved
|
||
versions).
|
||
You should always prefer to set a page DISABLED with the ewiki_flags
|
||
tool to hide unwanted content. -- make love() not unlink()
|
||
|
||
|
||
|
||
tools/t_holes
|
||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
If pages are edited often / regularly you will soon get hundreds of
|
||
saved page versions. As this slows down (particularly the
|
||
db_flat_file ones) and enlarges the database content size, you may
|
||
want to strip old versions.
|
||
|
||
This tool suggests you to remove a few page versions. You should
|
||
however NOT DELETE the page VERSION ONE and the very last (newest)
|
||
page version (of course).
|
||
The page version 1 often contains control data, not found in newer
|
||
versions, when db_flat_files or db_dba is used, so please keep
|
||
aware of this.
|
||
|
||
There were some changes necessary in db_flat_files to support
|
||
those "version holes", but it currently seems to work stable.
|
||
|
||
|
||
tools/t_textinsert
|
||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
Can insert plain text files into the database. This is much the
|
||
same, what usually happens to the files inside init-pages/
|
||
|
||
|
||
|
||
tools/t_transfer
|
||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
Allows to download all pages in one big "binary" file, and to
|
||
reinsert it on the same way. This allows for quick moving of
|
||
the whole database content.
|
||
|
||
|
||
|
||
tools/t_revert
|
||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
Can undo mass changes caused by a script attack (specifically
|
||
designed to spam or corrupt a Wiki) or someone who put enourmous
|
||
energy into garbaging multiple pages. The {auther} field always
|
||
contains at least an IP address to allow easy tracking of such
|
||
activity, and this plugin just enables you to remove page versions
|
||
whose {author} field matches a certain string (the attackers IP
|
||
address).
|
||
|
||
|
||
|
||
tools/ewikictl
|
||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
ewikictl is a commandline based utility - as opposed to the
|
||
www/http based scripts mentioned above.
|
||
UNIX people will find it very useful and handy, while it is
|
||
believed to work on Win32 systems too.
|
||
|
||
It integrates a lot functionality of the web based tools/, some
|
||
of them less flexible and others more powerful than in the
|
||
other tools. It, for example, allows to generate database backups
|
||
automatically and is often easier to use. On the other hand it
|
||
will be of little use if you don't have a shell account on the
|
||
WebServer running your wiki (because most times one cannot make
|
||
remote mysql server connections).
|
||
|
||
The most important feature is to make backups using the
|
||
--backup switch:
|
||
|
||
All pages from the database will be saved into backup files
|
||
in the directory given by --dest (or if not given into
|
||
'./backup-<currentdate>').
|
||
|
||
The --format of the backup files can be: plain, fast, flat
|
||
or xml, meta, xmlmeta, sql, mysql. But remember that only
|
||
the first three mentioned formats can be reinserted using the
|
||
ewikictl utility.
|
||
|
||
You really should give the --all parameter too, whenever you
|
||
make a backup, because else only the very last version of each
|
||
page will get saved (and think of a garbaged last version, this
|
||
would be a bad idea). So USE --all ALLWAYS!
|
||
|
||
Backups can be reread into the database using the
|
||
--insert switch:
|
||
|
||
The --dest or --source parameter says where to search for the
|
||
save page files, and the --format option again tells the
|
||
correct backup format (you will get a garbaged database if you
|
||
get it wrong).
|
||
|
||
The --all option is of course necessary again if you gave it
|
||
when doing the --backup, and ewikictl will complain if it
|
||
believes the --all option was required.
|
||
|
||
You can also use --insert to initially fill a database, or to
|
||
add just a few new pages, as pages inside the database will
|
||
never be overwritten by the ones added with --insert.
|
||
|
||
The --insert switch also allows to be used to load just one
|
||
file into the database. --insert <WikiPageFileName>
|
||
|
||
Another function is to speed up the database, by creating version
|
||
--holes:
|
||
|
||
If you utilize the db_flat_files and you have hundreds of
|
||
versions for one page, things may get slow at some point of
|
||
time, so you may wish to remove some of the unneeded versions.
|
||
That is what the --holes is for, it strips some of the page
|
||
versions from the database. Please keep in mind, that the
|
||
very first version of each page may contain special control
|
||
data, which is not available in the following ones (this is
|
||
especially true for db_flat_files).
|
||
|
||
Per default the 2nd version of a page until the 10th before
|
||
the last page version will be removed. You can however specify
|
||
this range yourself:
|
||
--holes 2..-10 (default)
|
||
--holes 5..-5 (5th until 5th before last version)
|
||
|
||
Please also keep some versions at the end, as the very last
|
||
one may contain mangled text (if someone backspaced around).
|
||
|
||
The --all option is implied for --holes, but you can and you
|
||
should combine --holes also with --backup. This special
|
||
feature will save a backup into the --dest directory ('./holes'
|
||
per default) before the page version is removed from the
|
||
database.
|
||
|
||
--format
|
||
The default backup/insert format is the 'plain' one - which
|
||
means just a pages content will be saved into the files.
|
||
|
||
It is however recommended to use the "--format flat" or
|
||
"--format fast" instead, as both can contain the complete meta
|
||
data of a page.
|
||
|
||
--ls
|
||
Will print a directory-listing like list of all pages from
|
||
the database.
|
||
You can add a pagename as parameter, so only that one will
|
||
get shown.
|
||
|
||
--reset <pagename>
|
||
--disable <pagename>
|
||
--enable <pagename>
|
||
--html <pagename>
|
||
--readonly <pagename>
|
||
--writeable <pagename>
|
||
Will set the according page flags for the given page. You can
|
||
give the page name also by using the --page or --file or --id
|
||
switch.
|
||
|
||
--chmod <flags>
|
||
Will set the page flags to the given decimal value. The
|
||
pagename must be given using --page, --file or --id. This
|
||
option of course requires knowledge of the flag/option values
|
||
and their numeric/decimal representations.
|
||
|
||
--unlink <filepattern>
|
||
Can be used to delete a page. You can use the asterisk to
|
||
remove more than one page, just an '*' would for example delete
|
||
all pages.
|
||
|
||
|
||
NOTE that you can also use this utility without a shell account on
|
||
your WebServer, if you create temporary .php wrapper scripts, that
|
||
contain nothing more than:
|
||
<pre><?php echo `./tools/ewikictl -ll`; ?></pre>
|
||
|
||
Please search google or freshmeat.net for one of those shell faking
|
||
CGI scripts, to ease this, so can get the most out of ewikictl.
|
||
|
||
|
||
|
||
tools/wiki2html
|
||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
Renders the WikiPages and saves the resulting <HTML> bodies into
|
||
files. It currently cannot deal with images and binary content
|
||
correctly.
|
||
|
||
|
||
|
||
tools/mkhuge
|
||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
For lazy people - if for some reason your text editor does not
|
||
allow to enter the correct include() commands for the files from
|
||
the plugins/ directory you may find this shell script useful to
|
||
create a monster version of ewiki (plugins and core script merged
|
||
together into one file).
|
||
See the paragraph about "monsterwiki.php" for more detailed infos.
|
||
|
||
|
||
|
||
tools/mkpluginmap
|
||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
Is the companion tool for the new ewiki pluginloader extension. It
|
||
traverses the plugins/ directories and generates a list which
|
||
allows automatical loading of ["page"] and ["action"] plugins.
|
||
|
||
Use the output of this script to replace the list of available
|
||
plugins inside of the "pluginloader.php" script. But don't forget
|
||
to disable that extensions, that you wouldn't like to be available.
|
||
|
||
|
||
|
||
tools/mkpageplugin
|
||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
Can convert any StaticPage file (from the spages/ directory) into
|
||
a standard ewiki page plugin (to get included() like all the others
|
||
then). It detects automatically the type of the given StaticPage
|
||
input files - Wiki source (.txt), ready HTML content, or even PHP
|
||
code.
|
||
It's intended as help for the unexperienced PHP user, or if you
|
||
needed to mass convert StaticPage files into plugins. But please
|
||
note, that including() hundreds of page plugins slows down the PHP
|
||
interpreter and eats a large amount of memory (and this was the
|
||
reason for extracting some page plugins into StaticPages).
|
||
|
||
|
||
|
||
examples/
|
||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
The file "examples-1.php" is the default layout, which you will see, when
|
||
you first run ewiki. The examples/ subdirectories now holds further example
|
||
'ewiki wrappers' or 'layout scripts' (commonly referred to as "yoursite.php"
|
||
scripts in the README).
|
||
|
||
There is not much further interesting stuff in here. If you can make a
|
||
contribution, just do (however, in the ewiki core tarball, we don't want
|
||
an image or graphics directory).
|
||
|
||
|
||
|
||
examples/homepage.php
|
||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
This is an example on how to use ewiki.php with an authentication
|
||
frontend. Note that this is not the recommended way to use a wiki
|
||
(adding authentication can be considered "crippling" a wiki).
|
||
|
||
"Authentication" means just a JavaScript based password query
|
||
dialogue (the password is however checked server-side inside the
|
||
homepage.src script).
|
||
|
||
You should install it preferably as index.php as described on top
|
||
of the file, the ewiki.php script must be there too. Edit the source
|
||
and colours to suit your needs. Guess, it needs some images as well.
|
||
|
||
|
||
|
||
Nice things in fragments/
|
||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
This directory holds some files to integrate ewiki.php within some
|
||
other web projects (for example PhpNuke) or some helper and extension
|
||
code, or just other example layouts.
|
||
|
||
Please have a look at the fragments/README - and as usual into the
|
||
files itself!!
|
||
|
||
|
||
|
||
strip_wonderful_slashes.php
|
||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
If you have a PHP 4.1 or a provider using the annoying factory-default
|
||
settings of such a version, you may find this tiny script helpful.
|
||
It removes the just-for-security-reasons-added-backslashes from the
|
||
$_REQUEST variables. I wasn't very interested in adding hundreds of
|
||
stripslashes() calls inside ewiki.php, so this is the workaround for
|
||
__your__ providers broken php.ini
|
||
|
||
|
||
|
||
fragments/funcs/wiki_format.inc
|
||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
This php include() file contains just the reduced wiki_format() function,
|
||
the code to generate internal WikiLinks and the binary data stuff has
|
||
been removed.
|
||
It is best suited to allow rendering of WikiSource with other php projects.
|
||
|
||
The script was contributed by Frank Luithle.
|
||
|
||
|
||
|
||
404finder.php
|
||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
Simple example on how to use "ErrorDocumet 404" rediriction to
|
||
activate the ewiki page search function automatically, which is the
|
||
poor mans mod_rewrite.
|
||
|
||
|
||
|
||
htaccess
|
||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
To make a Wiki installation look more profession you should try to
|
||
use your Webservers mod_rewrite module to get nicer looking URLs.
|
||
This file is an example to be installed as ".htaccess" (Web server
|
||
per-directory configuration file), which allows to call your ewiki
|
||
wrapper using URLs like:
|
||
|
||
http://www.example.de/wiki/SomePage
|
||
http://www.example.de/wiki/edit/OneOfThePages
|
||
|
||
(For this example, you needed to set EWIKI_SCRIPT to "/wiki/").
|
||
This example '.htaccess' script shows how to instruct mod_rewrite
|
||
to catch above URLs and to transform them into ".../index.php?id=Page"
|
||
again before calling the script.
|
||
|
||
|
||
|
||
binary.php
|
||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
If your ewiki wrapper script is not binary safe (that is, eventually
|
||
printing some <html> or text output to stdout before you include()
|
||
the core ewiki script and called the ewiki_page() function) - then
|
||
you may need to place a secondary ewiki wrapper besides the one
|
||
dedicated to pages.
|
||
The "fragments/binary.php" gives an example and further instructions
|
||
on this issue.
|
||
|
||
|
||
|
||
fragments/funcs/auth.php
|
||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
Include this script wherever you need authentication. It uses the HTTP
|
||
Basic Authentication scheme, but the passwords are inside the script
|
||
in the $passwords array (so no need for .htpasswd setup).
|
||
|
||
Note that this script needs to be called before any body output is made
|
||
(else it would be too late for http header() output).
|
||
|
||
|
||
|
||
fragments/css/*
|
||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
Please understand the *.css as examples that illustrate which style classes
|
||
are defined inside ewiki.php and its companion plugins.
|
||
|
||
Remember, you could insert those files with PHPs` include(), too - if
|
||
desired (and if a <style> area is currently to be written to stdout).
|
||
|
||
|
||
|
||
fragments/blocks/*
|
||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
Contains small include() scripts to be loaded into "yoursite.php"
|
||
as "sidebars" and the like for beatification purposes.
|
||
Oftens these are reduced but useful ["page"] or ["action"] plugins,
|
||
performing common tasks, like printing the list of newest pages or
|
||
some sort of menu, or even random page links.
|
||
|
||
|
||
|
||
Other patches/
|
||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
In the patches/ directory some code tweaking tips are collected that are
|
||
either not worth a new plugin or to uncommon and unsafe and unsupported to
|
||
get into fragments/ or plugins/. Please see the README and the files therein
|
||
for more informations.
|
||
|
||
I often like to refer to that subdir as the "recoding FAQ".
|
||
|
||
|
||
|
||
Updates + How to deal with tweaked code
|
||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
If you ever happen to recode parts of a plugin, WHICH WE STRONGLY ENCOURAGE
|
||
TO DO (to match it better to your needs) - then there is always the risk of
|
||
losing your changes as soon as you upgrade and overwrite everything inside
|
||
of plugins/
|
||
Therefore it is recommended to create a subdirectory like "local/" where
|
||
you copy changed plugins into, then include() them from there instead of
|
||
the distributed default from plugins/. So you won't lose your changes and
|
||
enhancements if you upgrade to a newer version. You of course should then
|
||
check (after updates) if the newer version of a plugin contained
|
||
enhancements you'd like to merge with your cutomized version of the earlier
|
||
plugin incarnation.
|
||
|
||
For the main "ewiki.php" script, things are of course more difficult, as
|
||
you will probably always overwrite it when you update your installation.
|
||
Best approach is to keep a NOTES file, where you store your patches for
|
||
later reinclusion with newer releases, or even to keep always a second
|
||
copy of your tweaked "ewiki.php". Much better was of course to send your
|
||
changes to the ewiki -dev people so they could merge them into the CVS,
|
||
so everybody could enjoy your ideas.
|
||
|
||
|
||
|
||
|
||
|
||
|
||
-------------------------------------------------------------------- 8 --
|
||
|
||
|
||
|
||
|
||
|
||
|
||
Extension HowTo
|
||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
Best way to extend it is to read the man page on vi or emacs ;-> However
|
||
the tool that made this all possible was joe.
|
||
|
||
|
||
|
||
the PlugInterface
|
||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
The $ewiki_plugins array holds an array of "task names" connected to
|
||
function names (that of course should do something senseful). As an
|
||
example:
|
||
|
||
$ewiki_plugins["image_resize"][0] = "ewiki_binary_image_resize_gd";
|
||
|
||
connects the task name "image_resize" to function already inside ewiki.php,
|
||
and the task "image_resize" will be called for every uploaded or to be
|
||
cached image. The function name here does not say anything about the
|
||
parameters the function will be called with later. You have to look up
|
||
the original function implementation in ewiki.php to see which parameters
|
||
will be passed; so you could write your own task plugin.
|
||
|
||
The [0] in the example above shows that this is the very first registered
|
||
function for the task "image_resize", there could be others as well. So
|
||
if you write a plugin you should take care to add your function name using
|
||
$ewiki_plugins["task"][] = "my_func" so you won't overwrite a previous
|
||
function name ''registration''.
|
||
There are of course tasks like ["database"] where only one of the plugin
|
||
functions will be called, in this case you should of course overwrite [0].
|
||
|
||
Two special case "tasks" are ["page"] and ["action"], because they aren't
|
||
counted with numerical indices, but instead carry WikiPageNames or
|
||
other idf strings as array/hash index.
|
||
|
||
|
||
|
||
plugin tasks
|
||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
Here's a short summary of current PlugInterface "tasks" and (recommended)
|
||
function interface definitions (the "= function (..." lines). A plugin hook
|
||
with [] means there can be multiple, and each one would be tried.
|
||
|
||
basic
|
||
-----
|
||
|
||
["page"][$PageName] - called for requests to page "$PageName"
|
||
(like "SearchPage", "NewestPages")
|
||
= function ( $id, $data, $action )
|
||
|
||
["action"][$ACTION] - called for requests with url "?id=$ACTION/pagename"
|
||
(core actions are "edit", "links", "info", "view")
|
||
= function ( $id, &$data, $action )
|
||
|
||
["handler"][] - called from ewiki_page() on start-up, if it returns
|
||
a string the page was handled and no further
|
||
processing takes place, the plugins output is used
|
||
= function ( $id, &$data, $action )
|
||
|
||
rendering
|
||
---------
|
||
|
||
["render"][0] - alias for ewiki_format() - our "WikiKernel"
|
||
|
||
["format_source"][] - called inside the format function for the wiki
|
||
source, implement this or the following ones to
|
||
use complex wiki markup
|
||
= function ( &$wiki_source )
|
||
|
||
["format_line"][] - generic call from inside wiki format engine
|
||
for every line, you may need to use static
|
||
vars inside your plugin function
|
||
= function ( &$o, &$line, &$post )
|
||
|
||
["format_tbl"][0] - called to handle "wiki|table|markup"
|
||
(the first and last | are already stripped)
|
||
= function ( &$o, &$line, &$post, $tbl_open=0 )
|
||
|
||
["format_final"][] - call after wiki source was transformed into html
|
||
(WikiPageLinks were already interpolated too)
|
||
= function ( &$html )
|
||
|
||
["format_block"][] - called, with the page fragment extracted using
|
||
the string patterns of the according
|
||
$ewiki_config["format_block"] entry
|
||
= function (&$currbuf, &$in, &$iii, &$s, $btype);
|
||
|
||
["format_para"][] - called, if the $para (text enclosed in <p></p>)
|
||
is to be written into the output stream $ooo[$in][0]
|
||
= function (&$para, &$ooo, &$s);
|
||
|
||
["link_url"][] - called to transform wiki source references
|
||
= function ( $href, $title )
|
||
|
||
["link_final"][] - called from ewiki_link_regex_callback to transform
|
||
the final <a href>
|
||
= function ( &$str,, $type, $href, $title )
|
||
|
||
special tasks
|
||
-------------
|
||
|
||
["database"][0] - only [0] will be called in favour of the ewiki.php
|
||
internal ewiki_database_mysql()
|
||
= function ( $action, $args=array() )
|
||
|
||
["image_resize"][] - all [] registered functions will be invoked
|
||
= function ( &$content, &$mime, $return=0 )
|
||
|
||
["mime_magic"][0] - hooks before save_binary/image to fetch the
|
||
correct mime type for non-image files; nowadays
|
||
just an always-available get_content_type()
|
||
= function ( &$content )
|
||
|
||
["binary_get"][0] - the binary_repository handles large/binary content
|
||
(to separate it out of the standard sql-database),
|
||
usually just sending it to stdout
|
||
= function ( $id, $meta )
|
||
|
||
page lists
|
||
----------
|
||
|
||
["list_pages"][0] - <li>st generating callback function
|
||
= function ( $lines )
|
||
|
||
["list_dict"][0] - special variant of the above one (called just for /
|
||
from within PageIndex and WordIndex listings)
|
||
= ???
|
||
|
||
["list_transform"][] - works on the given list of links (text transformations)
|
||
= function ( &$lines )
|
||
|
||
["make_title"][0] - allows to chain a replacement function for
|
||
ewiki_make_title()
|
||
= function ($title, $class, $action, $go_action, $may_split)
|
||
|
||
["title_transform"] - changing the currently linked title (called from
|
||
within _make_title)
|
||
= function ($id, &$title, &$go_action)
|
||
|
||
page transform / additions
|
||
--------------------------
|
||
|
||
["view_append"][] - output will be printed below a rendered page
|
||
= function ( $id, $data, $action )
|
||
|
||
["view_final"][] - can rework the full html of the rendered page
|
||
= function ( &$html, $id, $data, $action )
|
||
|
||
["view_append"][] - add <html> code at the end of the currently
|
||
viewed page
|
||
= function ($id, $data, $action)
|
||
|
||
["view_final"][] - filter hook for final processing of "view/"ed pages
|
||
= function ($o, $id, $data, $action)
|
||
|
||
["page_final"][] - filter hook for final processing of any
|
||
shown page (any action: edit/, view/, info/, ...)
|
||
= function ($o, $id, $data, $action)
|
||
|
||
edit/ hooks
|
||
-----------
|
||
|
||
["edit_preview"][] - called if edit pages [preview] button pressed
|
||
= function ( $data )
|
||
|
||
["edit_form_final"][] - add <html>/<form>s to the edit/ page
|
||
= function (&$o, $id, &$data, $action)
|
||
|
||
["edit_form_append"][] - insert other <input> fields between <textarea>
|
||
and <submit> button on the edit/ page
|
||
= function ($id, &$data, $action)
|
||
|
||
["edit_hook"][] - chains into before the edit box is printed
|
||
(to allow security checks, pre-edit-tweaking, ...)
|
||
any output terminates the current edit/ attemp
|
||
= function (&$id, &$data, &$hidden_postdata)
|
||
|
||
["edit_save"][] - immediately called before saving the currently
|
||
"edit/"ed page into the database, allows last
|
||
transformations or rejection (unsetting $data)
|
||
= function (&$data, &$old_data)
|
||
|
||
["edit_patch"][0] - special hook for the patchsaving plugin
|
||
= function ($id, &$data)
|
||
|
||
bloat extensions
|
||
----------------
|
||
|
||
["auth_*"][] - plugin tasks used with ewiki_auth()
|
||
= see the plugins/auth/README.auth
|
||
|
||
["mpi"][...] - markup plugins, see next paragraph
|
||
|
||
["init"][] - run once, when the main script is included()
|
||
|
||
["page_init"][...] - init functions, called when ewiki_page()
|
||
is called the very first time
|
||
|
||
aliases and variants
|
||
--------------------
|
||
|
||
["action_always"][$ACTION] - are called with precedence over ["page"]
|
||
plugins (for example "links" which also
|
||
works for registered page plugins)
|
||
|
||
["action_binary"][$ACTION] - action/admin plugins which do not care, if
|
||
the current page actually is binary data
|
||
|
||
|
||
Some other entries have been re-extracted into $ewiki_config, because they
|
||
were falsely in $ewiki_plugins. See the paragraph at the start of the README
|
||
on the $ewiki_config array.
|
||
|
||
This list will probably not stay up-to-date, so please grep the ewiki.php
|
||
script for all occurrences of 'ewiki_plugins["', and you can of course
|
||
invent some new and tell the author how it helped you to implement something
|
||
very different.
|
||
|
||
|
||
|
||
mpi plugins
|
||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
Plugins of the class "mpi" extend the wiki markup with html like
|
||
calls to dynamic content generating functions. They were taken from
|
||
the ewiki adaption of Hans B Pufal and are very similar to the
|
||
plugins found in PhpWiki.
|
||
|
||
In order to use them you must first load their generic PlugInterface
|
||
file using include("plugins/mpi.php");
|
||
|
||
Afterwards you could include all the wanted mpi extension modules,
|
||
using include() again:
|
||
include("plugins/mpi_calendar.php")
|
||
|
||
You can then call those plugins from the wiki markup like:
|
||
<plugin: calendar>
|
||
<ewiki: calendar>
|
||
<mpi: calendar>
|
||
<?plugin calendar?>
|
||
|
||
There are many different plugins available (not all included with
|
||
this ewiki distribution), and the allowed arguments differ widely
|
||
(must all be noted inside the < > and are written in arg=value style
|
||
separated by semicolon):
|
||
|
||
<plugin: plugins>
|
||
|
||
<plugin: calendar year=2005; month=7;>
|
||
month_offset=0; start_wday=0;
|
||
wday_color=#999999; today_color=#ffcccc;
|
||
wend_color=#bbbbbb;
|
||
|
||
<plugin: environment>
|
||
info=45
|
||
|
||
<plugin: insert !WikiPageName>
|
||
# this includes the referenced WikiPage in a box
|
||
# into the current one, Note the ! to prevent that
|
||
# WikiWord from getting rendered (before mpi sees
|
||
# it)
|
||
|
||
<plugin: page_flags>
|
||
# I strongly discourage this mpi plugin to be
|
||
# loaded as it allows such easily to spy page
|
||
# security settings
|
||
|
||
|
||
|
||
|
||
|
||
|
||
authentication/permission plugins
|
||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
The paragraph and descriptions about the _auth interfaces have gone
|
||
into plugins/auth/README.auth
|
||
|
||
|
||
|
||
writing your own plugin
|
||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
Using the list of current plugin tasks, you could (hopefully) write your own
|
||
extension with ease. It is probably most simple to write a dynamic ["page"]
|
||
plugin, so we start with this as example. All you need is a function
|
||
definition like:
|
||
|
||
function my_page_plugin($id, $data, $action) {
|
||
return("This is the returned page <b>content</b>.");
|
||
}
|
||
|
||
And then just register it as ["page"] plugin, using your defined function
|
||
name (yes, this does NOT need to start with the usual "ewiki_" prefix!). You
|
||
also need to tell ewiki about the WikiPageName under which your plugin
|
||
should be made available:
|
||
|
||
$ewiki_plugins["page"]["MyPagePlugin"] = "my_page_plugin";
|
||
|
||
That's it. But of course your function should do something more useful, than
|
||
just returning a hardcoded html string - even if this all, what's necessary
|
||
here. The parameters to your ["page"] plugin function you'll often just want
|
||
to ignore, and implement your plugin functionality (hard disk formation e.g.)
|
||
independently from such things.
|
||
|
||
It is likewise easy to write an ["action"] plugin; but this type of plugin
|
||
should then process some parts of the $data entry and work for nearly any
|
||
page (extracting contents or presenting the current page differently). So
|
||
this kind of plugin could be used to initialize a download for the current
|
||
page or to allow to email it to someone else (beware of the spammers!).
|
||
|
||
|
||
|
||
format_* / rendering plugins
|
||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
It is rather simple to add WikiMarkup using the $ewiki_config["wm_..."]
|
||
settings, but for some tasks you need stronger weapons like rendering
|
||
and markup plugins.
|
||
|
||
The ewiki_format() function (often blatantly referred to as "rendering
|
||
kernel") recently got rather complicated to add support for the 'block'
|
||
plugins. Therefore we'll first need to discuss the variables structures
|
||
and names used inside of it:
|
||
|
||
|
||
|
||
ewiki_format() internals
|
||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
When the function receives the input string (WikiSource), it first
|
||
escapes all html tags using & < > to replace the & < >
|
||
chars (because HTML is not allowed within Wiki, initially).
|
||
|
||
Then it runs optional ["format_source"] plugins on the whole wiki
|
||
page (still one source string).
|
||
Afterwards ewiki_format() starts to split that wikisource into
|
||
fragments meant to get handled by ["format_block"] plugins AND/OR
|
||
the Wiki -> HTML transformation code inside of it. It creates an
|
||
array called $iii[] from it - each fragment being an array on its
|
||
own:
|
||
$iii[0] = array(
|
||
0 => "WikiSource ...",
|
||
1 => 0x0FFF,
|
||
2 => "core",
|
||
);
|
||
Initially we here just have one fragment [0] - and often this
|
||
remains the only one (if no block plugin activates for the current
|
||
WikiPage). The 0=> entry contains the body (wiki source) of a
|
||
fragment, while at the 1=> index you'll find the block flags and 2=>
|
||
is just the name of the block plugin to handle that fragment.
|
||
|
||
If there is some block code, like <htm>...</htm> or <pre>...</pre>
|
||
in the WikiPage, you'll end up with a larger $iii[] input array:
|
||
$iii[0] = array("WikiSource...",0xFFFF,"core"),
|
||
$iii[1] = array("<b>....",0x0002,"html"),
|
||
$iii[2] = array("text",0x0FFF,""),
|
||
|
||
Besides the $iii[] input array, we'll also have an array containing
|
||
rendering status variables called $s[]. The most important entry
|
||
there is $s["in"], which is the index into the currently accessed
|
||
$iii[] wiki page source or block fragment.
|
||
And ewiki_format() then uses various alias variable names for
|
||
entries of the status var $s[] array - for example $in and $s["in"]
|
||
are the same index number.
|
||
|
||
After ewiki_format() separated the input source into the block
|
||
fragments of $iii[], it will then run the actual ["fragment_block"]
|
||
plugins on it. These can then apply regexs on them, or strip the
|
||
fragments completely out of $iii[] or transform then into regular
|
||
wiki source.
|
||
|
||
Then the large wiki transform loop comes into action, but only
|
||
for $iii[] fragments, whose flags (in the $iii[...][1] number)
|
||
have the bit 0x0001 set. Other blocks/fragments of $iii[] remain
|
||
untouched.
|
||
While transforming the $iii[] arrays WikiSource a new fragments
|
||
array will be created, called $ooo[] - the output array, which has
|
||
exactly the same layout. And every $iii[$in] directly maps to the
|
||
$ooo[$in] - same index number! But the later then already contains
|
||
<html> instead of wiki source.
|
||
|
||
Inside of the transformation loop, two other plugin types are
|
||
activated (besides applying the $ewiki_config["wm_..."] ruleset):
|
||
the ["format_line"] and ["format_para"] plugin groups.
|
||
|
||
After all $iii[] blocks have been transformed into $ooo[], a second
|
||
loop will check the flags (this time $ooo[...][1]) for the bit 0x0002
|
||
which tells, if WikiWords should be transformed into html <a href=>
|
||
links.
|
||
|
||
After link conversion (on the selected fragments), all blocks (the
|
||
content entries $ooo[...][0] of course) of $ooo[] are merged together
|
||
into one <html> string. After the ["format_final"] plugins run over
|
||
this, ewiki_format() returns the resulting <html> page.
|
||
|
||
|
||
|
||
the format_ plugin hooks
|
||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
As denoted above, the ["format_source"] and ["format_final"] plugin
|
||
hooks are the simplest to work with, as both only get one parameter
|
||
(passed by reference) containing either the full WikiPage source
|
||
text or the already fully rendered <html> output.
|
||
|
||
The ["format_line"] and ["format_tbl"] hooks are also rather simple,
|
||
lookup their interface to know which variables you could modify.
|
||
|
||
The ["format_para"] and ["format_block"] plugins both recieve
|
||
either the $iii[] or $ooo[] and status $s[] array variables (plus
|
||
a few aliases and shortcomings). This makes these hooks look a
|
||
bit more complicated, but allows great flexibility - a "_block"
|
||
plugin could for example merge its $iii[] fragment with another
|
||
one, or replace itself with nothing.
|
||
|
||
To write a markup plugin, you should lookup the actual interface in
|
||
the 'ewiki.php' script or in this README. And don't forget that most
|
||
parameters are meant to be passed by reference to be useful!
|
||
|
||
|
||
|
||
$iii[] and $ooo[] block flags
|
||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
The $iii[...][1] and $ooo[...][1] hold the flags (as defined by
|
||
$ewiki_config["format_block"][...][2]) for each fragment of the
|
||
WikiPage. The "core" blocks (plain WikiSource) always have the
|
||
default 0x0FFF assigned.
|
||
|
||
Currently used bit values are:
|
||
0x0001 - render WikiMarkup
|
||
0x0002 - render WikiLinks
|
||
0x0004 - international character &#htmlentities; allowed
|
||
0x0100 - fragment further (other block plugins can split it)
|
||
|
||
pseudo-values (OR checks):
|
||
0x0011 - consider to be inline block between WikiSourceBlocks
|
||
(prevents paragraph breaks between plugin and wiki block)
|
||
0x0022 - scan for WikiWords in this paragraph
|
||
|
||
|