mirror of
https://github.com/moodle/moodle.git
synced 2025-02-14 04:45:29 +01:00
If pages have been created using camel case, and this option is activated, those pages remain, but may not be linkable. If the option is disabled, they will be linked again.
337 lines
13 KiB
PHP
337 lines
13 KiB
PHP
<?PHP // $Id$
|
|
/// Extended by Michael Schneider
|
|
/// This page prints a particular instance of wiki
|
|
|
|
global $CFG;
|
|
|
|
require_once("../../config.php");
|
|
require_once("lib.php");
|
|
# require_once("$CFG->dirroot/course/lib.php"); // For side-blocks
|
|
|
|
optional_variable($ewiki_action,""); // Action on Wiki-Page
|
|
optional_variable($id); // Course Module ID, or
|
|
optional_variable($wid); // Wiki ID
|
|
optional_variable($wikipage, false); // Wiki Page Name
|
|
optional_variable($q,""); // Search Context
|
|
optional_variable($userid); // User wiki.
|
|
optional_variable($groupid); // Group wiki.
|
|
optional_variable($canceledit,""); // Editing has been cancelled
|
|
if($canceledit) {
|
|
$wikipage=$ewiki_id;
|
|
}
|
|
|
|
if ($id) {
|
|
if (! $cm = get_record("course_modules", "id", $id)) {
|
|
error("Course Module ID was incorrect");
|
|
}
|
|
|
|
if (! $course = get_record("course", "id", $cm->course)) {
|
|
error("Course is misconfigured");
|
|
}
|
|
|
|
if (! $wiki = get_record("wiki", "id", $cm->instance)) {
|
|
error("Course module is incorrect");
|
|
}
|
|
|
|
} else {
|
|
if (! $wiki = get_record("wiki", "id", $wid)) {
|
|
error("Course module is incorrect");
|
|
}
|
|
if (! $course = get_record("course", "id", $wiki->course)) {
|
|
error("Course is misconfigured");
|
|
}
|
|
if (! $cm = get_coursemodule_from_instance("wiki", $wiki->id, $course->id)) {
|
|
error("Course Module ID was incorrect");
|
|
}
|
|
$id = $cm->id;
|
|
$_REQUEST["id"] = $id;
|
|
}
|
|
|
|
if ($course->category or !empty($CFG->forcelogin)) {
|
|
require_login($course->id);
|
|
}
|
|
|
|
/// Add the course module 'groupmode' to the wiki object, for easy access.
|
|
$wiki->groupmode = $cm->groupmode;
|
|
|
|
/// Default format:
|
|
$moodle_format=FORMAT_MOODLE;
|
|
|
|
### SAVE ID from Moodle
|
|
$moodleID=@$_REQUEST["id"];
|
|
|
|
/// Globally disable CamelCase, if the option is selected for this wiki.
|
|
$moodle_disable_camel_case = ($wiki->disablecamelcase == 1);
|
|
|
|
if (($wiki_entry = wiki_get_default_entry($wiki, $course, $userid, $groupid))) {
|
|
|
|
/// ################# EWIKI Part ###########################
|
|
/// The wiki_entry->pagename is set to the specified value of the wiki,
|
|
/// or the default value in the 'lang' file if the specified value was empty.
|
|
define("EWIKI_PAGE_INDEX",$wiki_entry->pagename);
|
|
|
|
$wikipage = ($wikipage === false) ? EWIKI_PAGE_INDEX: $wikipage;
|
|
|
|
/// ### Prevent ewiki getting id as PageID...
|
|
unset($_REQUEST["id"]);
|
|
unset($_GET["id"]);
|
|
unset($_POST["id"]);
|
|
unset($_POST["id"]);
|
|
unset($_SERVER["QUERY_STRING"]);
|
|
unset($HTTP_GET_VARS["id"]);
|
|
unset($HTTP_POST_VARS["id"]);
|
|
global $ewiki_title;
|
|
|
|
/// #-- predefine some of the configuration constants
|
|
|
|
|
|
/// EWIKI_NAME is defined in ewikimoodlelibs, so that also admin.php can use this
|
|
#define("EWIKI_NAME", $wiki_entry->pagename);
|
|
|
|
/// Search Hilighting
|
|
if($ewiki_title=="SearchPages") {
|
|
$qArgument="&q=".urlencode($q);
|
|
}
|
|
|
|
/// Build the ewsiki script constant
|
|
/// ewbase will also be needed by EWIKI_SCRIPT_BINARY
|
|
$ewbase = $ME.'?id='.$moodleID;
|
|
if (isset($userid)) $ewbase .= '&userid='.$userid;
|
|
if (isset($groupid)) $ewbase .= '&groupid='.$groupid;
|
|
$ewscript = $ewbase.'&wikipage=';
|
|
define("EWIKI_SCRIPT", $ewscript);
|
|
define("EWIKI_SCRIPT_URL", $ewscript);
|
|
|
|
/// # Settings for this specific Wiki
|
|
define("EWIKI_PRINT_TITLE", $wiki->ewikiprinttitle);
|
|
|
|
define("EWIKI_INIT_PAGES", wiki_content_dir($wiki));
|
|
|
|
/// # fix broken PHP setup
|
|
if (!function_exists("get_magic_quotes_gpc") || get_magic_quotes_gpc()) {
|
|
include($CFG->dirroot."/mod/wiki/ewiki/fragments/strip_wonderful_slashes.php");
|
|
}
|
|
if (ini_get("register_globals")) {
|
|
# include($CFG->dirroot."/mod/wiki/ewiki/fragments/strike_register_globals.php");
|
|
}
|
|
|
|
# Database Handler
|
|
include_once($CFG->dirroot."/mod/wiki/ewikimoodlelib.php");
|
|
# Plugins
|
|
include_once($CFG->dirroot."/mod/wiki/ewiki/plugins/email_protect.php");
|
|
include_once($CFG->dirroot."/mod/wiki/ewiki/plugins/patchsaving.php");
|
|
include_once($CFG->dirroot."/mod/wiki/ewiki/plugins/notify.php");
|
|
include_once($CFG->dirroot."/mod/wiki/ewiki/plugins/feature/imgresize_gd.php");
|
|
include_once($CFG->dirroot."/mod/wiki/ewiki/plugins/moodle/moodle_highlight.php");
|
|
include_once($CFG->dirroot."/mod/wiki/ewiki/plugins/moodle/f_fixhtml.php");
|
|
include_once($CFG->dirroot."/mod/wiki/ewiki/plugins/moodle/sitemap.php");
|
|
include_once($CFG->dirroot."/mod/wiki/ewiki/plugins/moodle/moodle_wikidump.php");
|
|
include_once($CFG->dirroot."/mod/wiki/ewiki/plugins/aview/backlinks.php");
|
|
#include_once($CFG->dirroot."/mod/wiki/ewiki/plugins/markup/css.php");
|
|
include_once($CFG->dirroot."/mod/wiki/ewiki/plugins/markup/footnotes.php");
|
|
include_once($CFG->dirroot."/mod/wiki/ewiki/plugins/moodle/diff.php");
|
|
include_once($CFG->dirroot."/mod/wiki/ewiki/plugins/page/pageindex.php");
|
|
include_once($CFG->dirroot."/mod/wiki/ewiki/plugins/page/orphanedpages.php");
|
|
include_once($CFG->dirroot."/mod/wiki/ewiki/plugins/moodle/wantedpages.php");
|
|
|
|
# Binary Handling
|
|
if($wiki->ewikiacceptbinary) {
|
|
define("EWIKI_UPLOAD_MAXSIZE", get_max_upload_file_size());
|
|
define("EWIKI_SCRIPT_BINARY", $ewbase."&binary=");
|
|
define("EWIKI_ALLOW_BINARY",1);
|
|
define("EWIKI_IMAGE_CACHING",1);
|
|
#define("EWIKI_AUTOVIEW",1);
|
|
include_once($CFG->dirroot."/mod/wiki/ewiki/plugins/lib/mime_magic.php");
|
|
include_once($CFG->dirroot."/mod/wiki/ewiki/plugins/aview/downloads.php");
|
|
include_once($CFG->dirroot."/mod/wiki/ewiki/plugins/moodle/downloads.php");
|
|
#include_once($CFG->dirroot."/mod/wiki/ewiki/plugins/db/binary_store.php");
|
|
include_once($CFG->dirroot."/mod/wiki/ewiki/plugins/moodle/moodle_binary_store.php");
|
|
} else {
|
|
define("EWIKI_SCRIPT_BINARY", 0);
|
|
define("EWIKI_ALLOW_BINARY",0);
|
|
}
|
|
|
|
# The mighty Wiki itself
|
|
include_once($CFG->dirroot."/mod/wiki/ewiki/ewiki.php");
|
|
|
|
# Language-stuff: eWiki gets language from Browser. Lets correct it. Empty arrayelements do no harm
|
|
$ewiki_t["languages"]=array(current_language(), $course->lang, $CFG->lang,"en","c");
|
|
|
|
# Check Access Rights
|
|
$canedit = wiki_can_edit_entry($wiki_entry, $wiki, $USER, $course);
|
|
if (!$canedit) {
|
|
# Protected Mode
|
|
unset($ewiki_plugins["action"]["edit"]);
|
|
unset($ewiki_plugins["action"]["info"]);
|
|
}
|
|
|
|
# HTML Handling
|
|
$ewiki_use_editor=0;
|
|
if($wiki->htmlmode == 0) {
|
|
# No HTML
|
|
$ewiki_config["htmlentities"]=array(); // HTML is managed by moodle
|
|
$moodle_format=FORMAT_TEXT;
|
|
}
|
|
if($wiki->htmlmode == 1) {
|
|
# Safe HTML
|
|
include_once($CFG->dirroot."/mod/wiki/ewiki/plugins/moodle/moodle_rescue_html.php");
|
|
$moodle_format=FORMAT_HTML;
|
|
}
|
|
if($wiki->htmlmode == 2) {
|
|
# HTML Only
|
|
$moodle_format=FORMAT_HTML;
|
|
$ewiki_use_editor=1;
|
|
$ewiki_config["htmlentities"]=array(); // HTML is allowed
|
|
$ewiki_config["wiki_link_regex"] = "\007 [!~]?(
|
|
\#?\[[^<>\[\]\n]+\] |
|
|
\^[-".EWIKI_CHARS_U.EWIKI_CHARS_L."]{3,} |
|
|
\b([\w]{3,}:)*([".EWIKI_CHARS_U."]+[".EWIKI_CHARS_L."]+){2,}\#?[\w\d]* |
|
|
\w[-_.+\w]+@(\w[-_\w]+[.])+\w{2,} ) \007x";
|
|
}
|
|
|
|
global $ewiki_author, $USER;
|
|
$ewiki_author=fullname($USER);
|
|
$content=ewiki_page($wikipage);
|
|
|
|
### RESTORE ID from Moodle
|
|
$_REQUEST["id"]=$moodleID;
|
|
$id=$moodleID;
|
|
/// ################# EWIKI Part ###########################
|
|
}
|
|
else {
|
|
$content = '<div align="center">'.get_string('nowikicreated', 'wiki').'</div>';
|
|
}
|
|
|
|
|
|
# Group wiki, ...: No wikipage and no ewiki_title
|
|
if(!isset($ewiki_title)) {
|
|
$ewiki_title="";
|
|
}
|
|
|
|
/// Moodle Log
|
|
add_to_log($course->id, "wiki", $ewiki_action, "view.php?id=$cm->id&groupid=$groupid&userid=$userid&wikipage=$wikipage", $wiki->name." ".$ewiki_title);
|
|
|
|
|
|
/// Print the page header
|
|
if ($course->category) {
|
|
$navigation = "<A HREF=\"../../course/view.php?id=$course->id\">$course->shortname</A> ->";
|
|
}
|
|
|
|
$strwikis = get_string("modulenameplural", "wiki");
|
|
$strwiki = get_string("modulename", "wiki");
|
|
|
|
print_header("$course->shortname: ".($ewiki_title?$ewiki_title:$wiki->name), "$course->fullname",
|
|
"$navigation <A HREF=\"index.php?id=$course->id\">$strwikis</A> -> <A HREF=\"view.php?id=$moodleID\">$wiki->name</a>".($ewiki_title?" -> $ewiki_title":""),
|
|
"", "", true, update_module_button($cm->id, $course->id, $strwiki),
|
|
navmenu($course, $cm));
|
|
|
|
|
|
/// Print Page
|
|
|
|
/// The top row contains links to other wikis, if applicable.
|
|
if ($wiki_list = wiki_get_other_wikis($wiki, $USER, $course, $wiki_entry->id)) {
|
|
$selected="";
|
|
if (isset($wiki_list['selected'])) {
|
|
$selected = $wiki_list['selected'];
|
|
unset($wiki_list['selected']);
|
|
}
|
|
echo '<tr><td colspan="2">';
|
|
|
|
echo '<form name="otherwikis" action="'.$CFG->wwwroot.'/mod/wiki/view.php">';
|
|
echo '<table border="0" cellpadding="0" cellspacing="0" width="100%"><tr>';
|
|
echo '<td class="sideblockheading" bgcolor="'.$THEME->cellheading.'"> '
|
|
.$WIKI_TYPES[$wiki->wtype].' '
|
|
.get_string('modulename', 'wiki')." ".get_string('for',"wiki")." "
|
|
.wiki_get_owner($wiki_entry).':</td>';
|
|
|
|
echo '<td class="sideblockheading" bgcolor="'.$THEME->cellheading.'" align="right">'
|
|
.get_string('otherwikis', 'wiki').': ';
|
|
$script = 'self.location=document.otherwikis.wikiselect.options[document.otherwikis.wikiselect.selectedIndex].value';
|
|
choose_from_menu($wiki_list, "wikiselect", $selected, "choose", $script);
|
|
echo '</td>';
|
|
echo '</tr></table>';
|
|
echo '</form>';
|
|
|
|
echo '</td>';
|
|
echo '</tr>';
|
|
}
|
|
|
|
if ($wiki_entry) {
|
|
$specialpages=array("WikiExport", "SiteMap", "SearchPages", "PageIndex","NewestPages","MostVisitedPages","MostOftenChangedPages","UpdatedPages","FileDownload","FileUpload","OrphanedPages","WantedPages");
|
|
/// Page Actions
|
|
echo '<table border="0" width="100%">';
|
|
echo '<tr>';
|
|
|
|
echo '<td>';
|
|
if ($canedit) {
|
|
$iconstr="";
|
|
$editicon= '<img hspace=1 alt="'.get_string("editthispage","wiki").'" height=16 width=16 border=0 src="'.$CFG->pixpath.'/t/edit.gif">';
|
|
$infoicon= '<img hspace=1 alt="'.get_string("pageinfo","wiki").'" height=16 width=16 border=0 src="'.$CFG->pixpath.'/i/info.gif">';
|
|
|
|
if($ewiki_action!="edit" && !in_array($wikipage, $specialpages)) {
|
|
$iconstr.='<a title="'.get_string("editthispage","wiki").'" href="'.$ewbase.'&wikipage=edit/'.$ewiki_id.'">'.$editicon."</a>";
|
|
}
|
|
else {
|
|
$iconstr.=$editicon;
|
|
}
|
|
|
|
if($ewiki_action!="info" && !in_array($wikipage, $specialpages)) {
|
|
$iconstr.='<a title="'.get_string("pageinfo","wiki").'" href="'.$ewbase.'&wikipage=info/'.$ewiki_id.'">'.$infoicon."</a>";
|
|
}
|
|
else {
|
|
$iconstr.=$infoicon;
|
|
}
|
|
echo $iconstr;
|
|
}
|
|
echo '</td>';
|
|
echo '<td>';
|
|
wiki_print_page_actions($cm->id, $specialpages, $ewiki_id, $ewiki_action, $wiki->ewikiacceptbinary, $canedit);
|
|
echo '</td>';
|
|
|
|
/// Searchform
|
|
echo '<td align="center">';
|
|
wiki_print_search_form($cm->id, $q, $userid, $groupid, false);
|
|
echo '</td>';
|
|
|
|
/// Internal Wikilinks
|
|
echo '<td align="center">';
|
|
wiki_print_wikilinks_block($cm->id, $wiki->ewikiacceptbinary);
|
|
echo '</td>';
|
|
|
|
/// Administrative Links
|
|
if($canedit) {
|
|
echo '<td align="center">';
|
|
wiki_print_administration_actions($wiki, $cm->id, $userid, $groupid, $ewiki_title, $wiki->htmlmode!=2, $course);
|
|
echo '</td>';
|
|
}
|
|
|
|
/// Formatting Rules
|
|
echo '<td align="center">';
|
|
helpbutton('howtowiki', get_string('howtowiki', 'wiki'), 'wiki');
|
|
echo get_string('howtowiki','wiki');
|
|
echo '</td>';
|
|
|
|
echo '</tr></table>';
|
|
}
|
|
|
|
if($ewiki_title==$wiki_entry->pagename && !empty($wiki->summary)) {
|
|
print "<br>";
|
|
print_simple_box(format_text($wiki->summary, FORMAT_MOODLE), "center");
|
|
print "<br>";
|
|
}
|
|
|
|
|
|
// The wiki Contents
|
|
print_simple_box_start( "center", "100%", "$THEME->cellcontent", "20");
|
|
if($ewiki_action=="edit") {
|
|
# When editing, the filters shall not interfere the wiki-source
|
|
print $content;
|
|
} else {
|
|
print(format_text($content, $moodle_format));
|
|
}
|
|
print_simple_box_end();
|
|
|
|
/// Finish the page
|
|
print_footer($course);
|
|
?>
|