require_once 'xorg.inc.php';
-new_skinned_page('');
+new_skinned_page('wiki.tpl');
if (!S::identified()) {
XorgSession::doAuth();
}
if (Env::get('action')) {
// clean old tmp files
wiki_clean_tmp();
- $page->assign('xorg_extra_header', substr($wikiAll, 0, $i));
// create new tmp files with editing page from wiki engine
- $wiki_template = wiki_create_tmp(substr($wikiAll, $j));
+ $page->assign('xorg_extra_header', substr($wikiAll, 0, $i));
+ $wikiAll = substr($wikiAll, $j);
+ $wiki_template = wiki_create_tmp($wikiAll);
} else {
if (!$tmpfile_exists) {
$f = fopen($wiki_template, 'w');
- fputs($f, substr($wikiAll, $j));
+ $wikiAll = substr($wikiAll, $j);
+ fputs($f, $wikiAll);
fclose($f);
+ } else {
+ $wikiAll = file_get_contents($wiki_template);
}
}
+
+ $page->assign('wikipage', str_replace('.', '/', $n));
}
-$page->changeTpl($wiki_template);
+$page->assign('pmwiki', $wikiAll);
wiki_assign_auth();
$page->addCssLink('css/wiki.css');
$HandleAuth['diff'] = 'edit';
$HandleAuth['source'] = 'edit';
-$InputTags['e_textarea'][':html'] = "<textarea \$InputFormArgs
- onkeydown='if (event.keyCode==27) event.returnValue=false;'
- >{literal}\$EditText{/literal}</textarea>";
-
// impossible to see the diff without the source because of the smarty tags
$DiffShow['source'] = 'y';
$DiffSourceFmt = '';
-$DiffStartFmt = "{literal}<div class='diffbox'><div class='difftime'>\$DiffTime \$[by] <span class='diffauthor' title='\$DiffHost'>\$DiffAuthor</span></div>";
-$DiffEndFmt = "</div>{/literal}";
-
-// compute permissions based on the permission string (key)
-// if could is true, compute permission that could be enabled with a mdp
-// if smarty is true, return a string to insert in a smarty if tag
-// otherwise return true or false
-function authPerms($pagename, $key, $could=false, $smarty=false)
-{
- $words = explode(' ', $key);
- $auth = $smarty?"":false;
- $and = false;
- foreach ($words as $word) {
- if (strpos($word, '@') === 0) $word = substr($word,1);
- $iauth = false;
- if ($word == 'and:') {
- $and = true;
- continue;
- }
- $parts = explode(':', $word);
- $cond = $parts[0];
- $param = $parts[1];
- if ($cond == 'identified' && $could) {
- $cond = 'logged';
- }
- if ($smarty) {
- $iauth = '$'.$cond.($param?(' eq "'.$param.'"'):'');
- } else {
- if (strpos($cond, "smarty.") === 0) {
- $vars = explode('.', $cond);
- $iauth = false;
- switch ($vars[1])
- {
- case 'session':$iauth = S::v($vars[2]) == $param; break;
- case 'request':$iauth = Env::get($vars[2]) == $param; break;
- }
- }
- else $iauth = CondText($pagename, 'if '.$cond.' '.$param, true);
- }
-
- if ($and) {
- if ($smarty)
- $auth = ($auth?"($auth) and ":"").$iauth;
- else
- $auth &= $iauth;
- } else {
- if ($smarty)
- $auth = ($auth?"($auth) or ":"").$iauth;
- else
- $auth |= $iauth;
- }
- $and = false;
- }
- return $auth;
-}
-
-// try to find the best permission for a given page and a given level of auth
-// in order: page > site
-function TryAllAuths($pagename, $level, $page_read)
-{
- global $DefaultPasswords;
- if (isset($page_read['passwd'.$level]) && $page_read['passwd'.$level] != '*') {
- return array('page', $page_read['passwd'.$level]);
- }
- if (isset($DefaultPasswords[$level])) {
- return array('site', $DefaultPasswords[$level]);
- }
- return array('none', '');
-}
-
-function auth_pmwiki_to_smarty($text, $pass)
-{
- $ifc = authPerms("", $pass, false, true);
- if (!$ifc)
- return "";
- return "{if $ifc}\n".$text."\n{else}(:div class='erreur':Droits insuffisants.:){/if}";
-}
-
// for read pages: will come only once so we have to be careful
// and translate any auth from the wiki to smarty auth
function AuthPlatal($pagename, $level, $authprompt)
$levels = array('read', 'attr', 'edit', 'upload');
- foreach ($levels as $l) {
- list($from, $pass) = TryAllAuths($pagename, $l, $page_read);
- $passwds[$l] = $pass;
- $pwsources[$l] = $from;
- }
-
- $canedit = authPerms($pagename, $passwds['edit'], true, true);
- $canattr = authPerms($pagename, $passwds['attr'], true, true);
- $panel = "{if ($canedit) or ($canattr)}\n";
- $panel .= ">>frame<<\n";
- $panel .= "[[{\$FullName}|Voir la page]]";
- $panel .= "{if ($canedit)}\n";
- $panel .= "[[{\$FullName}?action=edit |Editer]]";
- $panel .= "[[{\$FullName}?action=diff |Historique]]";
- $panel .= "[[{\$FullName}?action=upload |Upload]]";
- $panel .= "{/if}{if ($canattr)}\n";
- $panel .= "[[{\$FullName}?action=attr |Droits]]";
- $panel .= "{/if}\n";
- $panel .= "\\\\\n\n";
- $panel .= ">><<\n";
- $panel .= "{/if}\n";
-
- if ((S::identified() && S::has_perms()) || authPerms($pagename, $passwds[$level]))
+ if (S::identified() && S::has_perms())
{
$page_read['=passwd'] = $passwds;
$page_read['=pwsource'] = $pwsources;
- // if try to read, add the permission limitation as a smarty if tag
- if ($level == 'read') {
- $page_read['text'] = auth_pmwiki_to_smarty($page_read['text'], $passwds['read']);
- $page_read['text'] = $panel.$page_read['text'];
- }
-
return $page_read;
}
--- /dev/null
+{**************************************************************************}
+{* *}
+{* Copyright (C) 2003-2006 Polytechnique.org *}
+{* http://opensource.polytechnique.org/ *}
+{* *}
+{* This program is free software; you can redistribute it and/or modify *}
+{* it under the terms of the GNU General Public License as published by *}
+{* the Free Software Foundation; either version 2 of the License, or *}
+{* (at your option) any later version. *}
+{* *}
+{* This program is distributed in the hope that it will be useful, *}
+{* but WITHOUT ANY WARRANTY; without even the implied warranty of *}
+{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *}
+{* GNU General Public License for more details. *}
+{* *}
+{* You should have received a copy of the GNU General Public License *}
+{* along with this program; if not, write to the Free Software *}
+{* Foundation, Inc., *}
+{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *}
+{* *}
+{**************************************************************************}
+
+<table class='wiki' cellspacing='0' cellpadding='0'>
+ <tr>
+ <td>
+ <a href='{$wikipage}'>Voir la page</a>
+ <select>
+ <option>Public</option>
+ <option>Public</option>
+ <option>Public</option>
+ <option>Public</option>
+ </select>
+ </td>
+ {if true}
+ <td>
+ <a href='{$wikipage}?action=edit'>Éditer</a>
+ <select>
+ <option>Public</option>
+ <option>Public</option>
+ <option>Public</option>
+ <option>Public</option>
+ </select>
+ </td>
+ {/if}
+ {if $has_perms}
+ <td>
+ <a href='{$wikipage}?action=diff'>Historique</a>
+ </td>
+ <td>
+ <a href='{$wikipage}?action=upload'>Upload</a>
+ </td>
+ {/if}
+ </tr>
+</table>
+
+{$pmwiki|smarty:nodefaults}