* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *
***************************************************************************/
-require_once("xorg.inc.php");
+require_once 'xorg.inc.php';
+require_once 'wiki.inc.php';
-// this page is to create a smarty template page from a wiki file
-// the wiki engine used is pmwiki.
-// the templates created are stored in wiki.d/cache_wikiword.tpl
+require_once dirname(__FILE__).'/../classes/Platal.php';
+require_once dirname(__FILE__).'/../classes/PLModule.php';
-// some page can be seen by everybody (public), but to validate a password
-// if we arrive here before setting new access we need to try an auth
-new_skinned_page('wiki.tpl', Env::has('response') ? AUTH_MDP : AUTH_PUBLIC);
+$n = wiki_pagename();
+if (!$n) {
+ pl_redirect('');
+}
+
+new_skinned_page('wiki.tpl');
+$perms = wiki_get_perms($n);
+
+switch (Env::v('action')) {
+ case '':
+ wiki_apply_perms($perms[0]);
+ break;
+
+ case 'edit':
+ wiki_apply_perms($perms[1]);
+ break;
+
+ default:
+ wiki_apply_perms('admin');
+ break;
+}
+
+if ($p = Post::v('setrperms')) {
+ wiki_apply_perms('admin');
+ if (wiki_set_perms($n, $p, $perms[1])) {
+ $perms = wiki_get_perms($n);
+ $page->trig('Permissions mises à jour');
+ }
+}
+
+if ($p = Post::v('setwperms')) {
+ wiki_apply_perms('admin');
+ if (wiki_set_perms($n, $perms[0], $p)) {
+ $perms = wiki_get_perms($n);
+ $page->trig('Permissions mises à jour');
+ }
+}
+
+$wiki_cache = wiki_work_dir().'/cache_'.$n.'.tpl';
+$cache_exists = file_exists($wiki_cache);
+
+if (Env::v('action') || !$cache_exists) {
+ @unlink($wiki_cache);
-if ($globals->wiki->wikidir) {
- $wikisite = 'xorg';
- require_once("wiki.inc.php");
- new_skinned_page($wiki_template, AUTH_PUBLIC);
+ // we leave pmwiki do whatever it wants and store everything
+ ob_start();
+ require_once($globals->spoolroot.'/wiki/pmwiki.php');
+
+ $wikiAll = ob_get_clean();
+ // the pmwiki skin we are using (almost empty) has these keywords:
+ $i = strpos($wikiAll, "<!--/HeaderText-->");
+ $j = strpos($wikiAll, "<!--/PageLeftFmt-->", $i);
}
-$page->assign('xorg_extra_header', "<script type='text/JavaScript'>\n<!--\nNix={map:null,convert:function(a){Nix.init();var s='';for(i=0;i<a.length;i++){var b=a.charAt(i);s+=((b>='A'&&b<='Z')||(b>='a'&&b<='z')?Nix.map[b]:b);}return s;},init:function(){if(Nix.map!=null)return;var map=new Array();var s='abcdefghijklmnopqrstuvwxyz';for(i=0;i<s.length;i++)map[s.charAt(i)]=s.charAt((i+13)%26);for(i=0;i<s.length;i++)map[s.charAt(i).toUpperCase()]=s.charAt((i+13)%26).toUpperCase();Nix.map=map;},decode:function(a){document.write(Nix.convert(a));}}\n//-->\n</script>\n");
-wiki_assign_auth();
+if (Env::v('action')) {
+ $page->assign('xorg_extra_header', substr($wikiAll, 0, $i));
+ $wikiAll = substr($wikiAll, $j);
+} else {
+ if (!$cache_exists) {
+ $wikiAll = substr($wikiAll, $j);
+ wiki_putfile($wiki_cache, $wikiAll);
+ } else {
+ $wikiAll = file_get_contents($wiki_cache);
+ }
+}
+
+$page->assign('perms', $perms);
+$page->assign('perms_opts',
+ array('public' => 'Public', 'logged' => 'Connecté',
+ 'mdp' => 'Authentifié', 'admin' => 'Admin'));
+
+$page->assign('canedit', wiki_may_have_perms($perms[1]));
+$page->assign('has_perms', wiki_may_have_perms('admin'));
+
+$page->assign('wikipage', str_replace('.', '/', $n));
+$page->assign('pmwiki', $wikiAll);
+
$page->addCssLink('css/wiki.css');
+$page->addJsLink('javascript/wiki.js');
$page->run();
?>