diff --git a/mod/wiki/comments.php b/mod/wiki/comments.php
index 8885b9d2ee7..a2699044e88 100644
--- a/mod/wiki/comments.php
+++ b/mod/wiki/comments.php
@@ -57,7 +57,7 @@ if (!$cm = get_coursemodule_from_instance('wiki', $wiki->id)) {
$course = $DB->get_record('course', array('id' => $cm->course), '*', MUST_EXIST);
-require_course_login($course->id, true, $cm);
+require_login($course->id, true, $cm);
add_to_log($course->id, 'wiki', 'comments', 'comments.php?id=' . $cm->id, $wiki->id);
diff --git a/mod/wiki/db/access.php b/mod/wiki/db/access.php
index a69d8c32777..ead3849d9c0 100644
--- a/mod/wiki/db/access.php
+++ b/mod/wiki/db/access.php
@@ -38,7 +38,7 @@ $capabilities = array(
)
),
- 'mod/wiki:createpage' => array(
+ 'mod/wiki:createpage' => array(
'riskbitmask' => RISK_SPAM,
@@ -89,6 +89,17 @@ $capabilities = array(
)
),
+ 'mod/wiki:managefiles' => array(
+
+ 'captype' => 'write',
+ 'contextlevel' => CONTEXT_MODULE,
+ 'archetypes' => array(
+ 'teacher' => CAP_ALLOW,
+ 'editingteacher' => CAP_ALLOW,
+ 'manager' => CAP_ALLOW
+ )
+ ),
+
'mod/wiki:overridelock' => array(
'captype' => 'write',
diff --git a/mod/wiki/diff.php b/mod/wiki/diff.php
index 85c105e454f..cf620960c65 100644
--- a/mod/wiki/diff.php
+++ b/mod/wiki/diff.php
@@ -66,7 +66,7 @@ if ($compare >= $comparewith) {
print_error("A page version can only be compared with an older version.");
}
-require_course_login($course->id, true, $cm);
+require_login($course->id, true, $cm);
add_to_log($course->id, "wiki", "diff", "diff.php?id=$cm->id", "$wiki->id");
$wikipage = new page_wiki_diff($wiki, $subwiki, $cm);
diff --git a/mod/wiki/edit_form.php b/mod/wiki/edit_form.php
index 17f6d14e3d5..8a73529fa0c 100644
--- a/mod/wiki/edit_form.php
+++ b/mod/wiki/edit_form.php
@@ -31,8 +31,7 @@ if (!defined('MOODLE_INTERNAL')) {
die('Direct access to this script is forbidden.'); /// It must be included from a Moodle page
}
-require_once($CFG->dirroot . "/mod/wiki/editors/wikieditor.php");
-require_once($CFG->dirroot . "/mod/wiki/editors/wikifiletable.php");
+require_once($CFG->dirroot . '/mod/wiki/editors/wikieditor.php');
class mod_wiki_edit_form extends moodleform {
@@ -42,13 +41,12 @@ class mod_wiki_edit_form extends moodleform {
$mform =& $this->_form;
$version = $this->_customdata['version'];
- $format = $this->_customdata['format'];
- $tags = !isset($this->_customdata['tags'])?"":$this->_customdata['tags'];
-
+ $format = $this->_customdata['format'];
+ $tags = !isset($this->_customdata['tags'])?"":$this->_customdata['tags'];
if ($format != 'html') {
- $contextid = $this->_customdata['contextid'];
- $filearea = $this->_customdata['filearea'];
+ $contextid = $this->_customdata['contextid'];
+ $filearea = $this->_customdata['filearea'];
$fileitemid = $this->_customdata['fileitemid'];
}
@@ -63,12 +61,25 @@ class mod_wiki_edit_form extends moodleform {
$fieldname = get_string('format' . $format, 'wiki');
if ($format != 'html') {
- $mform->addElement('wikieditor', 'newcontent', $fieldname, array('cols' => 50, 'rows' => 20, 'wiki_format' => $format));
+ // Use wiki editor
+ $ft = new filetype_parser;
+ $extensions = $ft->get_extensions('image');
+ $fs = get_file_storage();
+ $tree = $fs->get_area_tree($contextid, 'mod_wiki', 'attachments', $fileitemid);
+ $files = array();
+ foreach ($tree['files'] as $file) {
+ $filename = $file->get_filename();
+ foreach ($extensions as $ext) {
+ if (preg_match('#'.$ext.'$#', $filename)) {
+ $files[] = $filename;
+ }
+ }
+ }
+ $mform->addElement('wikieditor', 'newcontent', $fieldname, array('cols' => 100, 'rows' => 20, 'wiki_format' => $format, 'files'=>$files));
$mform->addHelpButton('newcontent', 'format'.$format, 'wiki');
} else {
$mform->addElement('editor', 'newcontent_editor', $fieldname, null, page_wiki_edit::$attachmentoptions);
$mform->addHelpButton('newcontent_editor', 'formathtml', 'wiki');
-
}
//hiddens
@@ -80,21 +91,6 @@ class mod_wiki_edit_form extends moodleform {
$mform->addElement('hidden', 'contentformat');
$mform->setDefault('contentformat', $format);
-// if ($format != 'html') {
-// //uploads
-// $mform->addElement('header', 'attachments_tags', get_string('attachments', 'wiki'));
-// $mform->addElement('filemanager', 'attachments', get_string('attachments', 'wiki'), null, page_wiki_edit::$attachmentoptions);
-// $fileinfo = array(
-// 'contextid'=>$contextid,
-// 'component'=>'mod_wiki',
-// 'filearea'=>$filearea,
-// 'itemid'=>$fileitemid,
-// );
-//
-// $mform->addElement('wikifiletable', 'deleteuploads', get_string('wikifiletable', 'wiki'), null, $fileinfo, $format);
-// $mform->addElement('submit', 'editoption', get_string('upload', 'wiki'), array('id' => 'tags'));
-// }
-
if (!empty($CFG->usetags)) {
$mform->addElement('header', 'tagshdr', get_string('tags', 'tag'));
$mform->addElement('tags', 'tags', get_string('tags'));
diff --git a/mod/wiki/editors/wiki/buttons.js b/mod/wiki/editors/wiki/buttons.js
index 233aa707a57..52cd0008de8 100644
--- a/mod/wiki/editors/wiki/buttons.js
+++ b/mod/wiki/editors/wiki/buttons.js
@@ -17,8 +17,8 @@ if (clientPC.indexOf('opera')!=-1) {
// copied and adapted from phpBB
function insertTags(tagOpen, tagClose, sampleText) {
- tagOpen = unescape(tagOpen);
- tagClose = unescape(tagClose);
+ tagOpen = unescape(tagOpen);
+ tagClose = unescape(tagClose);
var txtarea = document.forms['mform1'].newcontent;
@@ -79,4 +79,4 @@ function insertTags(tagOpen, tagClose, sampleText) {
}
// reposition cursor if possible
if (txtarea.createTextRange) txtarea.caretPos = document.selection.createRange().duplicate();
-}
\ No newline at end of file
+}
diff --git a/mod/wiki/editors/wikieditor.php b/mod/wiki/editors/wikieditor.php
index f8389cc9c9d..e8804936079 100644
--- a/mod/wiki/editors/wikieditor.php
+++ b/mod/wiki/editors/wikieditor.php
@@ -31,11 +31,17 @@ require_once($CFG->dirroot.'/lib/form/textarea.php');
class MoodleQuickForm_wikieditor extends MoodleQuickForm_textarea {
+ private $files;
+
function MoodleQuickForm_wikieditor($elementName = null, $elementLabel = null, $attributes = null) {
if (isset($attributes['wiki_format'])) {
$this->wikiformat = $attributes['wiki_format'];
unset($attributes['wiki_format']);
}
+ if (isset($attributes['files'])) {
+ $this->files = $attributes['files'];
+ unset($attributes['files']);
+ }
parent::MoodleQuickForm_textarea($elementName, $elementLabel, $attributes);
}
@@ -71,7 +77,7 @@ class MoodleQuickForm_wikieditor extends MoodleQuickForm_textarea {
}
private function getButtons() {
- global $PAGE, $CFG;
+ global $PAGE, $OUTPUT, $CFG;
$editor = $this->wikiformat;
@@ -81,6 +87,9 @@ class MoodleQuickForm_wikieditor extends MoodleQuickForm_textarea {
$tag = $this->getTokens($editor, 'italic');
$wiki_editor['italic'] = array('ed_italic.gif', get_string('wikiitalictext', 'wiki'), $tag[0], $tag[1], get_string('wikiitalictext', 'wiki'));
+ $imagetag = $this->getTokens($editor, 'image');
+ $wiki_editor['image'] = array('ed_img.gif', get_string('wikiimage', 'wiki'), $imagetag[0], $imagetag[1], get_string('wikiimage', 'wiki'));
+
$tag = $this->getTokens($editor, 'link');
$wiki_editor['internal'] = array('ed_internal.gif', get_string('wikiinternalurl', 'wiki'), $tag[0], $tag[1], get_string('wikiinternalurl', 'wiki'));
@@ -91,9 +100,6 @@ class MoodleQuickForm_wikieditor extends MoodleQuickForm_textarea {
$wiki_editor['u_list'] = array('ed_ul.gif', get_string('wikiunorderedlist', 'wiki'), '\\n'.$tag[0], '', '');
$wiki_editor['o_list'] = array('ed_ol.gif', get_string('wikiorderedlist', 'wiki'), '\\n'.$tag[1], '', '');
- $tag = $this->getTokens($editor, 'image');
- $wiki_editor['image'] = array('ed_img.gif', get_string('wikiimage', 'wiki'), $tag[0], $tag[1], get_string('wikiimage', 'wiki'));
-
$tag = $this->getTokens($editor, 'header');
$wiki_editor['h1'] = array('ed_h1.gif', get_string('wikiheader', 'wiki', 1), '\\n'.$tag.' ', ' '.$tag.'\\n', get_string('wikiheader', 'wiki', 1));
$wiki_editor['h2'] = array('ed_h2.gif', get_string('wikiheader', 'wiki', 2), '\\n'.$tag.$tag.' ', ' '.$tag.$tag.'\\n', get_string('wikiheader', 'wiki', 2));
@@ -107,13 +113,23 @@ class MoodleQuickForm_wikieditor extends MoodleQuickForm_textarea {
$PAGE->requires->js('/mod/wiki/editors/wiki/buttons.js');
- $html = "";
+ $html = '
';
return $html;
}
diff --git a/mod/wiki/files.php b/mod/wiki/files.php
new file mode 100644
index 00000000000..377ed741afb
--- /dev/null
+++ b/mod/wiki/files.php
@@ -0,0 +1,107 @@
+.
+
+/**
+ * Wiki files management
+ *
+ * @package mod-wiki-2.0
+ * @copyrigth 2011 Dongsheng Cai
+ *
+ * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+
+require_once('../../config.php');
+require_once($CFG->dirroot . '/mod/wiki/lib.php');
+require_once($CFG->dirroot . '/mod/wiki/locallib.php');
+
+$pageid = required_param('pageid', PARAM_INT); // Page ID
+$wid = optional_param('wid', 0, PARAM_INT); // Wiki ID
+$currentgroup = optional_param('group', 0, PARAM_INT); // Group ID
+$userid = optional_param('uid', 0, PARAM_INT); // User ID
+$groupanduser = optional_param('groupanduser', null, PARAM_TEXT);
+
+if (!$page = wiki_get_page($pageid)) {
+ print_error('incorrectpageid', 'wiki');
+}
+
+if ($groupanduser) {
+ list($currentgroup, $userid) = explode('-', $groupanduser);
+ $currentgroup = clean_param($currentgroup, PARAM_INT);
+ $userid = clean_param($userid, PARAM_INT);
+}
+
+if ($wid) {
+ // in group mode
+ if (!$wiki = wiki_get_wiki($wid)) {
+ print_error('incorrectwikiid', 'wiki');
+ }
+ if (!$subwiki = wiki_get_subwiki_by_group($wiki->id, $currentgroup, $userid)) {
+ // create subwiki if doesn't exist
+ $subwikiid = wiki_add_subwiki($wiki->id, $currentgroup, $userid);
+ $subwiki = wiki_get_subwiki($subwikiid);
+ }
+} else {
+ // no group
+ if (!$subwiki = wiki_get_subwiki($page->subwikiid)) {
+ print_error('incorrectsubwikiid', 'wiki');
+ }
+
+ // Checking wiki instance of that subwiki
+ if (!$wiki = wiki_get_wiki($subwiki->wikiid)) {
+ print_error('incorrectwikiid', 'wiki');
+ }
+}
+
+// Checking course module instance
+if (!$cm = get_coursemodule_from_instance("wiki", $subwiki->wikiid)) {
+ print_error('invalidcoursemodule');
+}
+
+// Checking course instance
+$course = $DB->get_record('course', array('id' => $cm->course), '*', MUST_EXIST);
+
+$context = get_context_instance(CONTEXT_MODULE, $cm->id);
+
+
+$PAGE->set_url('/mod/wiki/files.php', array('pageid'=>$pageid));
+require_login($course, true, $cm);
+$PAGE->set_context($context);
+$PAGE->set_title(get_string('wikifiles', 'wiki'));
+$PAGE->set_heading(get_string('wikifiles', 'wiki'));
+$PAGE->navbar->add(format_string(get_string('wikifiles', 'wiki')));
+echo $OUTPUT->header();
+
+$renderer = $PAGE->get_renderer('mod_wiki');
+
+$tabitems = array('view' => 'view', 'edit' => 'edit', 'comments' => 'comments', 'history' => 'history', 'map' => 'map', 'files' => 'files');
+
+$options = array('activetab'=>'files');
+echo $renderer->tabs($page, $tabitems, $options);
+
+
+echo $OUTPUT->box_start('generalbox');
+if (has_capability('mod/wiki:viewpage', $context)) {
+ echo $renderer->wiki_print_subwiki_selector($PAGE->activityrecord, $subwiki, $page, 'files');
+ echo $renderer->wiki_files_tree($context, $subwiki);
+} else {
+ echo $OUTPUT->notification(get_string('cannotviewfiles', 'wiki'));
+}
+echo $OUTPUT->box_end();
+
+if (has_capability('mod/wiki:managefiles', $context)) {
+ echo $OUTPUT->single_button(new moodle_url('/mod/wiki/filesedit.php', array('subwiki'=>$subwiki->id, 'pageid'=>$pageid)), get_string('editfiles', 'wiki'), 'get');
+}
+echo $OUTPUT->footer();
diff --git a/mod/wiki/filesedit.php b/mod/wiki/filesedit.php
new file mode 100644
index 00000000000..0982095e5ea
--- /dev/null
+++ b/mod/wiki/filesedit.php
@@ -0,0 +1,97 @@
+.
+
+/**
+ * Manage files in wiki
+ *
+ * @package mod-wiki-2.0
+ * @copyright 2011 Dongsheng Cai
+ * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+
+require_once(dirname(dirname(dirname(__FILE__))) . '/config.php');
+require_once('lib.php');
+require_once('locallib.php');
+require_once("$CFG->dirroot/mod/wiki/filesedit_form.php");
+require_once("$CFG->dirroot/repository/lib.php");
+
+$subwikiid = required_param('subwiki', PARAM_INT);
+// not being used for file management, we use it to generate navbar link
+$pageid = optional_param('pageid', 0, PARAM_INT);
+$returnurl = optional_param('returnurl', '', PARAM_URL);
+
+if (!$subwiki = wiki_get_subwiki($subwikiid)) {
+ print_error('incorrectsubwikiid', 'wiki');
+}
+
+// Checking wiki instance of that subwiki
+if (!$wiki = wiki_get_wiki($subwiki->wikiid)) {
+ print_error('incorrectwikiid', 'wiki');
+}
+
+// Checking course module instance
+if (!$cm = get_coursemodule_from_instance("wiki", $subwiki->wikiid)) {
+ print_error('invalidcoursemodule');
+}
+
+// Checking course instance
+$course = $DB->get_record('course', array('id' => $cm->course), '*', MUST_EXIST);
+
+$context = get_context_instance(CONTEXT_MODULE, $cm->id);
+
+require_login($course, true, $cm);
+require_capability('mod/wiki:managefiles', $context);
+
+if (empty($returnurl)) {
+ if (!empty($_SERVER["HTTP_REFERER"])) {
+ $returnurl = $_SERVER["HTTP_REFERER"];
+ } else {
+ $returnurl = new moodle_url('/mod/wiki/files.php', array('subwiki'=>$subwiki->id));
+ }
+}
+
+$title = get_string('editfiles', 'wiki');
+
+$struser = get_string('user');
+$url = new moodle_url('/mod/wiki/filesedit.php', array('subwiki'=>$subwiki->id, 'pageid'=>$pageid));
+$PAGE->set_url($url);
+$PAGE->set_context($context);
+$PAGE->set_title($title);
+$PAGE->set_heading($title);
+$PAGE->navbar->add(format_string(get_string('wikifiles', 'wiki')), $CFG->wwwroot . '/mod/wiki/files.php?pageid=' . $pageid);
+$PAGE->navbar->add(format_string($title));
+
+$data = new stdClass();
+$data->returnurl = $returnurl;
+$data->subwikiid = $subwiki->id;
+$maxbytes = get_max_upload_file_size($CFG->maxbytes, $COURSE->maxbytes);
+$options = array('subdirs'=>0, 'maxbytes'=>$maxbytes, 'maxfiles'=>-1, 'accepted_types'=>'*', 'return_types'=>FILE_INTERNAL);
+file_prepare_standard_filemanager($data, 'files', $options, $context, 'mod_wiki', 'attachments', $subwiki->id);
+
+$mform = new mod_wiki_filesedit_form(null, array('data'=>$data, 'options'=>$options));
+
+if ($mform->is_cancelled()) {
+ redirect($returnurl);
+} else if ($formdata = $mform->get_data()) {
+ $formdata = file_postupdate_standard_filemanager($formdata, 'files', $options, $context, 'mod_wiki', 'attachments', $subwiki->id);
+ redirect($returnurl);
+}
+
+echo $OUTPUT->header();
+echo $OUTPUT->box_start('generalbox');
+$mform->display();
+echo $OUTPUT->box_end();
+echo $OUTPUT->footer();
diff --git a/mod/wiki/filesedit_form.php b/mod/wiki/filesedit_form.php
new file mode 100644
index 00000000000..f086611a7e7
--- /dev/null
+++ b/mod/wiki/filesedit_form.php
@@ -0,0 +1,44 @@
+.
+
+/**
+ * Edit wiki files form
+ *
+ * @package mod-wiki-2.0
+ * @copyright 2011 Dongsheng Cai
+ * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+
+defined('MOODLE_INTERNAL') || die();
+
+require_once("$CFG->libdir/formslib.php");
+
+class mod_wiki_filesedit_form extends moodleform {
+ function definition() {
+ $mform = $this->_form;
+
+ $data = $this->_customdata['data'];
+ $options = $this->_customdata['options'];
+
+ $mform->addElement('filemanager', 'files_filemanager', get_string('files'), null, $options);
+ $mform->addElement('hidden', 'returnurl', $data->returnurl);
+ $mform->addElement('hidden', 'subwiki', $data->subwikiid);
+
+ $this->add_action_buttons(true, get_string('savechanges'));
+
+ $this->set_data($data);
+ }
+}
diff --git a/mod/wiki/history.php b/mod/wiki/history.php
index 94dde94cf27..3b8a344c396 100644
--- a/mod/wiki/history.php
+++ b/mod/wiki/history.php
@@ -58,7 +58,9 @@ if (!$cm = get_coursemodule_from_instance('wiki', $wiki->id)) {
$course = $DB->get_record('course', array('id' => $cm->course), '*', MUST_EXIST);
-require_course_login($course->id, true, $cm);
+require_login($course->id, true, $cm);
+$context = get_context_instance(CONTEXT_MODULE, $cm->id);
+require_capability('mod/wiki:viewpage', $context);
add_to_log($course->id, 'wiki', 'history', 'history.php?id=' . $cm->id, $wiki->id);
/// Print the page header
diff --git a/mod/wiki/index.php b/mod/wiki/index.php
index e872883d737..d1db74a22d9 100644
--- a/mod/wiki/index.php
+++ b/mod/wiki/index.php
@@ -41,7 +41,7 @@ if (!$course = $DB->get_record('course', array('id' => $id))) {
print_error('invalidcourseid');
}
-require_course_login($course->id, true);
+require_login($course->id, true);
$PAGE->set_pagelayout('incourse');
$context = get_context_instance(CONTEXT_COURSE, $course->id);
diff --git a/mod/wiki/lang/en/wiki.php b/mod/wiki/lang/en/wiki.php
index 5a2069cae2b..f6bba6fd3b7 100644
--- a/mod/wiki/lang/en/wiki.php
+++ b/mod/wiki/lang/en/wiki.php
@@ -19,7 +19,11 @@ $string['backhistory'] = 'Back to history';
$string['backoldversion'] = 'Back to old version';
$string['backpage'] = 'Back to page';
$string['backtomapmenu'] = 'Back to map menu';
-$string['changerate']='Do you wish to change it?';
+$string['changerate'] = 'Do you wish to change it?';
+$string['insertimage'] = 'Insert an image...';
+$string['insertimage_help'] = 'This drop-down list will insert an image to the wiki editor. If you need to add more images to the wiki, please use "Files" tab.';
+$string['cannotmanagefiles'] = 'You don\'t have permission to manage the wiki files.';
+$string['cannotviewfiles'] = 'You don\'t have permission to view the wiki files.';
$string['comparesel'] = 'Compare selected';
$string['comments'] = 'Comments';
$string['commentscount'] = 'Comments ({$a})';
@@ -48,9 +52,11 @@ $string['diff_help'] = 'Selected versions of the page may be compared in order t
$string['edit'] = 'Edit';
$string['editcomment'] = 'Edit comment';
$string['editblocks'] = 'Turn edit blocks on';
+$string['editfiles'] = 'Edit wiki files';
$string['editing'] = 'Editing wiki page';
$string['editingcomment'] = 'Editing comment';
$string['editingpage'] = 'Editing this page \'{$a}\'';
+$string['files'] = 'Files';
$string['filenotuploadederror'] = 'File \'{$a}\' could not be uploaded correctly.';
$string['filtername'] = 'Wiki auto-linking';
$string['firstpagetitle'] = 'First page name';
@@ -187,6 +193,7 @@ $string['wikiattachments'] = 'Wiki attachments';
$string['wikiboldtext'] = 'Bold text';
$string['wikiexternalurl'] = 'External URL';
$string['wikifiletable'] = 'Uploaded file list';
+$string['wikifiles'] = 'Wiki files';
$string['wikiheader'] = 'Level {$a} Header';
$string['wikihr'] = 'Horizontal rule';
$string['wikiimage'] = 'Image';
@@ -208,6 +215,7 @@ $string['wiki:editcomment'] = 'Add comments to pages';
$string['wiki:editpage'] = 'Save wiki pages';
$string['wiki:managecomment'] = 'Manage wiki comments';
$string['wiki:managewiki'] = 'Manage wiki settings';
+$string['wiki:managefiles'] = 'Manage wiki files';
$string['wiki:overridelock'] = 'Override wiki locks';
$string['wiki:viewcomment'] = 'View page comments';
$string['wiki:viewpage'] = 'View wiki pages';
diff --git a/mod/wiki/lib.php b/mod/wiki/lib.php
index 230e7bd7299..2141261e927 100644
--- a/mod/wiki/lib.php
+++ b/mod/wiki/lib.php
@@ -445,7 +445,7 @@ function wiki_pluginfile($course, $cm, $context, $filearea, $args, $forcedownloa
return false;
}
- require_course_login($course, true, $cm);
+ require_login($course, true, $cm);
require_once($CFG->dirroot . "/mod/wiki/locallib.php");
@@ -495,6 +495,7 @@ function wiki_extend_navigation(navigation_node $navref, $course, $module, $cm)
require_once($CFG->dirroot . '/mod/wiki/locallib.php');
+ $context = get_context_instance(CONTEXT_MODULE, $cm->id);
$url = $PAGE->url;
$userid = 0;
if ($module->wikimode == 'individual') {
@@ -521,25 +522,43 @@ function wiki_extend_navigation(navigation_node $navref, $course, $module, $cm)
$page = wiki_get_page_by_title($swid, $wiki->firstpagetitle);
$pageid = $page->id;
}
- $link = new moodle_url('/mod/wiki/create.php', array('action' => 'new', 'swid' => $swid));
- $node = $navref->add(get_string('newpage', 'wiki'), $link, navigation_node::TYPE_SETTING);
+
+ if (has_capability('mod/wiki:createpage', $context)) {
+ $link = new moodle_url('/mod/wiki/create.php', array('action' => 'new', 'swid' => $swid));
+ $node = $navref->add(get_string('newpage', 'wiki'), $link, navigation_node::TYPE_SETTING);
+ }
if (is_numeric($pageid)) {
- $link = new moodle_url('/mod/wiki/view.php', array('pageid' => $pageid));
- $node = $navref->add(get_string('view', 'wiki'), $link, navigation_node::TYPE_SETTING);
+ if (has_capability('mod/wiki:viewpage', $context)) {
+ $link = new moodle_url('/mod/wiki/view.php', array('pageid' => $pageid));
+ $node = $navref->add(get_string('view', 'wiki'), $link, navigation_node::TYPE_SETTING);
+ }
- $link = new moodle_url('/mod/wiki/edit.php', array('pageid' => $pageid));
- $node = $navref->add(get_string('edit', 'wiki'), $link, navigation_node::TYPE_SETTING);
+ if (has_capability('mod/wiki:editpage', $context)) {
+ $link = new moodle_url('/mod/wiki/edit.php', array('pageid' => $pageid));
+ $node = $navref->add(get_string('edit', 'wiki'), $link, navigation_node::TYPE_SETTING);
+ }
- $link = new moodle_url('/mod/wiki/comments.php', array('pageid' => $pageid));
- $node = $navref->add(get_string('comments', 'wiki'), $link, navigation_node::TYPE_SETTING);
+ if (has_capability('mod/wiki:viewcomment', $context)) {
+ $link = new moodle_url('/mod/wiki/comments.php', array('pageid' => $pageid));
+ $node = $navref->add(get_string('comments', 'wiki'), $link, navigation_node::TYPE_SETTING);
+ }
- $link = new moodle_url('/mod/wiki/history.php', array('pageid' => $pageid));
- $node = $navref->add(get_string('history', 'wiki'), $link, navigation_node::TYPE_SETTING);
+ if (has_capability('mod/wiki:viewpage', $context)) {
+ $link = new moodle_url('/mod/wiki/history.php', array('pageid' => $pageid));
+ $node = $navref->add(get_string('history', 'wiki'), $link, navigation_node::TYPE_SETTING);
+ }
- $link = new moodle_url('/mod/wiki/map.php', array('pageid' => $pageid));
- $node = $navref->add(get_string('map', 'wiki'), $link, navigation_node::TYPE_SETTING);
+ if (has_capability('mod/wiki:viewpage', $context)) {
+ $link = new moodle_url('/mod/wiki/map.php', array('pageid' => $pageid));
+ $node = $navref->add(get_string('map', 'wiki'), $link, navigation_node::TYPE_SETTING);
+ }
+
+ if (has_capability('mod/wiki:viewpage', $context)) {
+ $link = new moodle_url('/mod/wiki/files.php', array('pageid' => $pageid));
+ $node = $navref->add(get_string('files', 'wiki'), $link, navigation_node::TYPE_SETTING);
+ }
}
}
/**
diff --git a/mod/wiki/locallib.php b/mod/wiki/locallib.php
index 91feed29b3a..762a76afc1d 100644
--- a/mod/wiki/locallib.php
+++ b/mod/wiki/locallib.php
@@ -578,7 +578,21 @@ function wiki_parse_content($markup, $pagecontent, $options = array()) {
$cm = get_coursemodule_from_instance("wiki", $subwiki->wikiid);
$context = get_context_instance(CONTEXT_MODULE, $cm->id);
- $parser_options = array('link_callback' => '/mod/wiki/locallib.php:wiki_parser_link', 'link_callback_args' => array('swid' => $options['swid']), 'table_callback' => '/mod/wiki/locallib.php:wiki_parser_table', 'real_path_callback' => '/mod/wiki/locallib.php:wiki_parser_real_path', 'real_path_callback_args' => array('context' => $context, 'component' => 'mod_wiki', 'filearea' => 'attachments', 'pageid' => $options['pageid']), 'pageid' => $options['pageid'], 'pretty_print' => (isset($options['pretty_print']) && $options['pretty_print']), 'printable' => (isset($options['printable']) && $options['printable']));
+ $parser_options = array('link_callback' => '/mod/wiki/locallib.php:wiki_parser_link',
+ 'link_callback_args' => array('swid' => $options['swid']),
+ 'table_callback' => '/mod/wiki/locallib.php:wiki_parser_table',
+ 'real_path_callback' => '/mod/wiki/locallib.php:wiki_parser_real_path',
+ 'real_path_callback_args' => array(
+ 'context' => $context,
+ 'component' => 'mod_wiki',
+ 'filearea' => 'attachments',
+ 'subwikiid'=> $subwiki->id,
+ 'pageid' => $options['pageid']
+ ),
+ 'pageid' => $options['pageid'],
+ 'pretty_print' => (isset($options['pretty_print']) && $options['pretty_print']),
+ 'printable' => (isset($options['printable']) && $options['printable'])
+ );
return wiki_parser_proxy::parse($pagecontent, $markup, $parser_options);
}
@@ -661,7 +675,7 @@ function wiki_parser_table($table) {
/**
* Returns an absolute path link, unless there is no such link.
*
- * @param string url Link's URL
+ * @param string url Link's URL or filename
* @param stdClass context filearea params
* @param string filearea
* @param int fileareaid
@@ -669,13 +683,20 @@ function wiki_parser_table($table) {
* @return File full path
*/
-function wiki_parser_real_path($url, $context, $filearea, $fileareaid) {
+function wiki_parser_real_path($url, $context, $component, $filearea, $swid) {
global $CFG;
if (preg_match("/^(?:http|ftp)s?\:\/\//", $url)) {
return $url;
} else {
- return "{$CFG->wwwroot}/pluginfile.php/{$context->id}/$filearea/$fileareaid/$url";
+
+ $file = 'pluginfile.php';
+ if (!$CFG->slasharguments) {
+ $file = $file . '?file=';
+ }
+ $baseurl = "$CFG->wwwroot/$file/{$context->id}/$component/$filearea/$swid/";
+ // it is a file in current file area
+ return $baseurl . $url;
}
}
@@ -995,85 +1016,6 @@ function wiki_delete_old_locks() {
$DB->delete_records_select('wiki_locks', "lockedat < ?", array(time() - 3600));
}
-/**
- * File processing
- */
-
-/**
- * Uploads files to permanent disk space.
- *
- * @param int draftitemid Draft space ID
- * @param int contextid
- *
- * @return array of files that have not been inserted.
- */
-
-function wiki_process_attachments($draftitemid, $deleteuploads, $contextid, $filearea, $itemid, $options = null) {
- global $CFG, $USER;
-
- if (empty($options)) {
- $options = page_wiki_edit::$attachmentoptions;
- }
-
- $errors = array();
-
- $usercontext = get_context_instance(CONTEXT_USER, $USER->id);
- $fs = get_file_storage();
-
- $oldfiles = $fs->get_area_files($contextid, 'mod_wiki', 'attachments', $itemid, 'id');
-
- foreach ($oldfiles as $file) {
- if (in_array($file->get_pathnamehash(), $deleteuploads)) {
- $file->delete();
- }
- }
-
- $draftfiles = $fs->get_area_files($usercontext->id, 'user', 'draft', $draftitemid, 'id');
- $oldfiles = $fs->get_area_files($contextid, 'mod_wiki', 'attachments', $itemid, 'id');
-
- $file_record = array('contextid' => $contextid, 'component' => 'mod_wiki', 'filearea' => 'attachments', 'itemid' => $itemid);
- //more or less a merge...
- $newhashes = array();
- foreach ($draftfiles as $file) {
- $newhash = sha1("/$contextid/mod_wiki/attachments/$itemid" . $file->get_filepath() . $file->get_filename());
- $newhashes[$newhash] = $file;
- }
-
- $filecount = 0;
- foreach ($oldfiles as $file) {
- $oldhash = $file->get_pathnamehash();
- if (!$file->is_directory() && isset($newhashes[$oldhash])) {
- //repeated file: ERROR!!!
- unset($newhashes[$oldhash]);
- $errors[] = $file;
- }
-
- if (!$file->is_directory()) {
- $filecount++;
- }
- }
-
- foreach ($newhashes as $file) {
- if ($file->get_filepath() !== '/' or $file->is_directory()) {
- continue;
- }
-
- if ($options['maxfiles'] and $options['maxfiles'] <= $filecount) {
- break;
- }
-
- if (!$file->is_directory()) {
- $filecount++;
- $fs->create_file_from_storedfile($file_record, $file);
- }
- }
-
- //delete all draft files
- $fs->delete_area_files($usercontext->id, 'user', 'draft', $draftitemid);
-
- return $errors;
-}
-
function wiki_get_comment($commentid){
global $DB;
return $DB->get_record('comments', array('id' => $commentid));
diff --git a/mod/wiki/lock.php b/mod/wiki/lock.php
index fd2d99bc455..562aabfcf01 100644
--- a/mod/wiki/lock.php
+++ b/mod/wiki/lock.php
@@ -66,7 +66,7 @@ if (!empty($section) && !$sectioncontent = wiki_get_section_page($page, $section
print_error('invalidsection', 'wiki');
}
-require_course_login($course->id, false, $cm);
+require_login($course->id, false, $cm);
$context = get_context_instance(CONTEXT_MODULE, $cm->id);
require_capability('mod/wiki:editpage', $context);
diff --git a/mod/wiki/map.php b/mod/wiki/map.php
index ca2a7e7de18..341667bfcf6 100644
--- a/mod/wiki/map.php
+++ b/mod/wiki/map.php
@@ -53,8 +53,9 @@ if (!$wiki = wiki_get_wiki($subwiki->wikiid)) {
print_error('incorrectwikiid', 'wiki');
}
-require_course_login($course->id, true, $cm);
-
+require_login($course->id, true, $cm);
+$context = get_context_instance(CONTEXT_MODULE, $cm->id);
+require_capability('mod/wiki:viewpage', $context);
add_to_log($course->id, "wiki", "map", "map.php?id=$cm->id", "$wiki->id");
/// Print page header
diff --git a/mod/wiki/module.js b/mod/wiki/module.js
index 3e597c3f2f7..963f3b5f2aa 100644
--- a/mod/wiki/module.js
+++ b/mod/wiki/module.js
@@ -76,3 +76,20 @@ M.mod_wiki.history = function(Y, args) {
}
}
}
+
+M.mod_wiki.init_tree = function(Y, expand_all, htmlid) {
+ Y.use('yui2-treeview', function(Y) {
+ var tree = new YAHOO.widget.TreeView(htmlid);
+
+ tree.subscribe("clickEvent", function(node, event) {
+ // we want normal clicking which redirects to url
+ return false;
+ });
+
+ if (expand_all) {
+ tree.expandAll();
+ }
+
+ tree.render();
+ });
+};
diff --git a/mod/wiki/pagelib.php b/mod/wiki/pagelib.php
index 2d1597c05a9..8e9e9012bab 100644
--- a/mod/wiki/pagelib.php
+++ b/mod/wiki/pagelib.php
@@ -39,7 +39,6 @@ require_once($CFG->dirroot . '/tag/lib.php');
/**
* Class page_wiki contains the common code between all pages
*
- * @package mod-wiki
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
abstract class page_wiki {
@@ -77,7 +76,7 @@ abstract class page_wiki {
* @var array The tabs set used in wiki module
*/
protected $tabs = array('view' => 'view', 'edit' => 'edit', 'comments' => 'comments',
- 'history' => 'history', 'map' => 'map');
+ 'history' => 'history', 'map' => 'map', 'files' => 'files');
/**
* @var array tabs options
*/
@@ -269,7 +268,6 @@ abstract class page_wiki {
/**
* View a wiki page
*
- * @package mod-wiki
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
class page_wiki_view extends page_wiki {
@@ -283,7 +281,7 @@ class page_wiki_view extends page_wiki {
parent::print_header();
- $this->wikioutput->wiki_print_subwiki_selector($PAGE->activityrecord, $this->subwiki, $this->page);
+ $this->wikioutput->wiki_print_subwiki_selector($PAGE->activityrecord, $this->subwiki, $this->page, 'view');
if (!empty($this->page)) {
echo $this->wikioutput->prettyview_link($this->page);
@@ -352,7 +350,6 @@ class page_wiki_view extends page_wiki {
/**
* Wiki page editing page
*
- * @package mod-wiki
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
class page_wiki_edit extends page_wiki {
@@ -541,16 +538,14 @@ class page_wiki_edit extends page_wiki {
$data = file_prepare_standard_editor($data, 'newcontent', page_wiki_edit::$attachmentoptions, $this->modcontext, 'mod_wiki', 'attachments', $this->subwiki->id);
break;
default:
- //$draftitemid = file_get_submitted_draft_itemid('attachments');
- //file_prepare_draft_area($draftitemid, $this->modcontext->id, 'mod_wiki', 'attachments', $this->subwiki->id);
- //$data->attachments = $draftitemid;
+ break;
}
if ($version->contentformat != 'html') {
- $params['contextid'] = $this->modcontext->id;
- $params['component'] = 'mod_wiki';
- $params['filearea'] = 'attachments';
$params['fileitemid'] = $this->subwiki->id;
+ $params['contextid'] = $this->modcontext->id;
+ $params['component'] = 'mod_wiki';
+ $params['filearea'] = 'attachments';
}
if (!empty($CFG->usetags)) {
@@ -560,16 +555,6 @@ class page_wiki_edit extends page_wiki {
$form = new mod_wiki_edit_form($url, $params);
if ($formdata = $form->get_data()) {
- if ($format != 'html') {
- $errors = $this->process_uploads($this->modcontext);
- if (!empty($errors)) {
- $contenterror = "";
- foreach ($errors as $e) {
- $contenterror .= "" . get_string('filenotuploadederror', 'wiki', $e->get_filename()) . "
";
- }
- print $OUTPUT->box($contenterror, 'errorbox');
- }
- }
if (!empty($CFG->usetags)) {
$data->tags = $formdata->tags;
}
@@ -583,21 +568,11 @@ class page_wiki_edit extends page_wiki {
$form->display();
}
- protected function process_uploads($context) {
- global $PAGE, $OUTPUT;
-
- if ($this->upload) {
- file_save_draft_area_files($this->attachments, $context->id, 'mod_wiki', 'attachments', $this->subwiki->id);
- return null;
- //return wiki_process_attachments($this->attachments, $this->deleteuploads, $context->id, 'mod_wiki', 'attachments', $this->subwiki->id);
- }
- }
}
/**
* Class that models the behavior of wiki's view comments page
*
- * @package mod-wiki
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
class page_wiki_comments extends page_wiki {
@@ -715,7 +690,6 @@ class page_wiki_comments extends page_wiki {
/**
* Class that models the behavior of wiki's edit comment
*
- * @package mod-wiki
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
class page_wiki_editcomment extends page_wiki {
@@ -817,7 +791,6 @@ class page_wiki_editcomment extends page_wiki {
/**
* Wiki page search page
*
- * @package mod-wiki
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
class page_wiki_search extends page_wiki {
@@ -1939,10 +1912,10 @@ class page_wiki_save extends page_wiki_edit {
$params = array('attachmentoptions' => page_wiki_edit::$attachmentoptions, 'format' => $this->format, 'version' => $this->versionnumber);
if ($this->format != 'html') {
- $params['contextid'] = $this->modcontext->id;
- $params['component'] = 'mod_wiki';
- $params['filearea'] = 'attachments';
$params['fileitemid'] = $this->page->id;
+ $params['contextid'] = $context->id;
+ $params['component'] = 'mod_wiki';
+ $params['filearea'] = 'attachments';
}
$form = new mod_wiki_edit_form($url, $params);
@@ -1962,9 +1935,6 @@ class page_wiki_save extends page_wiki_edit {
}
if ($save && $data) {
- if ($this->format != 'html') {
- $errors = $this->process_uploads($this->modcontext);
- }
if (!empty($CFG->usetags)) {
tag_set('wiki_pages', $this->page->id, $data->tags);
}
diff --git a/mod/wiki/prettyview.php b/mod/wiki/prettyview.php
index fdc0a812272..30a19ea1a3b 100644
--- a/mod/wiki/prettyview.php
+++ b/mod/wiki/prettyview.php
@@ -51,7 +51,7 @@ if (!$wiki = wiki_get_wiki($subwiki->wikiid)) {
print_error('incorrectwikiid', 'wiki');
}
-require_course_login($course->id, true, $cm);
+require_login($course->id, true, $cm);
$context = get_context_instance(CONTEXT_MODULE, $cm->id);
require_capability('mod/wiki:viewpage', $context);
diff --git a/mod/wiki/renderer.php b/mod/wiki/renderer.php
index 515860b7936..7bfca6fee64 100644
--- a/mod/wiki/renderer.php
+++ b/mod/wiki/renderer.php
@@ -134,7 +134,7 @@ class mod_wiki_renderer extends plugin_renderer_base {
$newheading .= $this->output->container_end();
$oldheading = html_writer::tag('div', $oldheading, array('class'=>'wiki-diff-heading header clearfix'));
- $newheading = html_writer::tag('div', $newheading, array('class'=>'wiki-diff-heading header clearfix'));
+ $newheading = html_writer::tag('div', $newheading, array('class'=>'wiki-diff-heading header clearfix'));
$output = '';
$output .= html_writer::start_tag('div', array('class'=>'wiki-diff-container clearfix'));
@@ -238,16 +238,15 @@ class mod_wiki_renderer extends plugin_renderer_base {
global $PAGE;
return $this->output->box(format_module_intro('wiki', $this->page->activityrecord, $PAGE->cm->id), 'generalbox', 'intro');
}
+
public function tabs($page, $tabitems, $options) {
global $CFG;
- if (empty($page)) {
- return null;
- }
$tabs = array();
$baseurl = $CFG->wwwroot . '/mod/wiki/';
+ $context = get_context_instance(CONTEXT_MODULE, $this->page->cm->id);
$pageid = null;
- if (isset($page)) {
+ if (!empty($page)) {
$pageid = $page->id;
}
@@ -267,6 +266,18 @@ class mod_wiki_renderer extends plugin_renderer_base {
}
foreach ($tabitems as $tab) {
+ if ($tab == 'edit' && !has_capability('mod/wiki:editpage', $context)) {
+ continue;
+ }
+ if ($tab == 'comments' && !has_capability('mod/wiki:viewcomment', $context)) {
+ continue;
+ }
+ if ($tab == 'files' && !has_capability('mod/wiki:viewpage', $context)) {
+ continue;
+ }
+ if (($tab == 'view' || $tab == 'map' || $tab == 'history') && !has_capability('mod/wiki:viewpage', $context)) {
+ continue;
+ }
$link = $baseurl . $tab . '.php?pageid=' . $pageid;
if ($linked == $tab) {
$tabs[] = new tabobject($tab, $link, get_string($tab, 'wiki'), '', true);
@@ -287,9 +298,19 @@ class mod_wiki_renderer extends plugin_renderer_base {
return $html;
}
- public function wiki_print_subwiki_selector($wiki, $subwiki, $page) {
+ public function wiki_print_subwiki_selector($wiki, $subwiki, $page, $pagetype) {
global $CFG, $USER;
require_once($CFG->dirroot . '/user/lib.php');
+ switch ($pagetype) {
+ case 'view':
+ $baseurl = new moodle_url('/mod/wiki/view.php');
+ break;
+ case 'files':
+ $baseurl = new moodle_url('/mod/wiki/files.php');
+ break;
+ default:
+ $baseurl = null;
+ }
$cm = get_coursemodule_from_instance('wiki', $wiki->id);
$context = get_context_instance(CONTEXT_MODULE, $cm->id);
@@ -317,10 +338,13 @@ class mod_wiki_renderer extends plugin_renderer_base {
echo $this->output->container_start('wiki_right');
$params = array('wid' => $wiki->id, 'title' => $page->title);
- $url = new moodle_url('/mod/wiki/view.php', $params);
+ if ($pagetype == 'files') {
+ $params['pageid'] = $page->id;
+ }
+ $baseurl->params($params);
$name = 'uid';
$selected = $subwiki->userid;
- echo $this->output->single_select($url, $name, $options, $selected);
+ echo $this->output->single_select($baseurl, $name, $options, $selected);
echo $this->output->container_end();
}
return;
@@ -332,10 +356,14 @@ class mod_wiki_renderer extends plugin_renderer_base {
if ($wiki->wikimode == 'collaborative') {
// We need to print a select to choose a course group
- $params = 'wid=' . $wiki->id . '&title=' . urlencode($page->title);
+ $params = array('wid'=>$wiki->id, 'title'=>$page->title);
+ if ($pagetype == 'files') {
+ $params['pageid'] = $page->id;
+ }
+ $baseurl->params($params);
echo $this->output->container_start('wiki_right');
- groups_print_activity_menu($cm, $CFG->wwwroot . '/mod/wiki/view.php?' . $params);
+ groups_print_activity_menu($cm, $baseurl->out());
echo $this->output->container_end();
return;
} else if ($wiki->wikimode == 'individual') {
@@ -367,10 +395,13 @@ class mod_wiki_renderer extends plugin_renderer_base {
}
echo $this->output->container_start('wiki_right');
$params = array('wid' => $wiki->id, 'title' => $page->title);
- $url = new moodle_url('/mod/wiki/view.php', $params);
+ if ($pagetype == 'files') {
+ $params['pageid'] = $page->id;
+ }
+ $baseurl->params($params);
$name = 'groupanduser';
$selected = $subwiki->groupid . '-' . $subwiki->userid;
- echo $this->output->single_select($url, $name, $options, $selected);
+ echo $this->output->single_select($baseurl, $name, $options, $selected);
echo $this->output->container_end();
return;
@@ -382,10 +413,14 @@ class mod_wiki_renderer extends plugin_renderer_base {
CASE VISIBLEGROUPS:
if ($wiki->wikimode == 'collaborative') {
// We need to print a select to choose a course group
- $params = 'wid=' . $wiki->id . '&title=' . urlencode($page->title);
+ $params = array('wid'=>$wiki->id, 'title'=>urlencode($page->title));
+ if ($pagetype == 'files') {
+ $params['pageid'] = $page->id;
+ }
+ $baseurl->params($params);
echo $this->output->container_start('wiki_right');
- groups_print_activity_menu($cm, $CFG->wwwroot . '/mod/wiki/view.php?' . $params);
+ groups_print_activity_menu($cm, $baseurl->out());
echo $this->output->container_end();
return;
@@ -406,10 +441,13 @@ class mod_wiki_renderer extends plugin_renderer_base {
echo $this->output->container_start('wiki_right');
$params = array('wid' => $wiki->id, 'title' => $page->title);
- $url = new moodle_url('/mod/wiki/view.php', $params);
+ if ($pagetype == 'files') {
+ $params['pageid'] = $page->id;
+ }
+ $baseurl->params($params);
$name = 'groupanduser';
$selected = $subwiki->groupid . '-' . $subwiki->userid;
- echo $this->output->single_select($url, $name, $options, $selected);
+ echo $this->output->single_select($baseurl, $name, $options, $selected);
echo $this->output->container_end();
return;
@@ -440,4 +478,60 @@ class mod_wiki_renderer extends plugin_renderer_base {
$select->label = get_string('mapmenu', 'wiki') . ': ';
return $this->output->container($this->output->render($select), 'midpad');
}
+ function wiki_files_tree($context, $subwiki) {
+ return $this->render(new wiki_files_tree($context, $subwiki));
+ }
+ public function render_wiki_files_tree(wiki_files_tree $tree) {
+ if (empty($tree->dir['subdirs']) && empty($tree->dir['files'])) {
+ $html = $this->output->box(get_string('nofilesavailable', 'repository'));
+ } else {
+ $htmlid = 'wiki_files_tree_'.uniqid();
+ $module = array('name'=>'mod_wiki', 'fullpath'=>'/mod/wiki/module.js');
+ $this->page->requires->js_init_call('M.mod_wiki.init_tree', array(false, $htmlid), false, $module);
+ $html = '';
+ $html .= $this->htmllize_tree($tree, $tree->dir);
+ $html .= '
';
+ }
+ return $html;
+ }
+
+ /**
+ * Internal function - creates htmls structure suitable for YUI tree.
+ */
+ protected function htmllize_tree($tree, $dir) {
+ global $CFG;
+ $yuiconfig = array();
+ $yuiconfig['type'] = 'html';
+
+ if (empty($dir['subdirs']) and empty($dir['files'])) {
+ return '';
+ }
+ $result = '';
+
+ return $result;
+ }
+}
+
+class wiki_files_tree implements renderable {
+ public $context;
+ public $dir;
+ public $subwiki;
+ public function __construct($context, $subwiki) {
+ $fs = get_file_storage();
+ $this->context = $context;
+ $this->subwiki = $subwiki;
+ $this->dir = $fs->get_area_tree($context->id, 'mod_wiki', 'attachments', $subwiki->id);
+ }
}
diff --git a/mod/wiki/search.php b/mod/wiki/search.php
index 90c944ab1d4..518195f920d 100644
--- a/mod/wiki/search.php
+++ b/mod/wiki/search.php
@@ -38,7 +38,7 @@ if (!$cm = get_coursemodule_from_id('wiki', $cmid)) {
print_error('invalidcoursemodule');
}
-require_course_login($course, true, $cm);
+require_login($course, true, $cm);
// @TODO: Fix call to wiki_get_subwiki_by_group
if (!$gid = groups_get_activity_group($cm)) {
diff --git a/mod/wiki/styles.css b/mod/wiki/styles.css
index badfdb37933..b76bb8f9e72 100644
--- a/mod/wiki/styles.css
+++ b/mod/wiki/styles.css
@@ -352,4 +352,10 @@ a.wiki_edit_section {
.wiki-diff-container .wiki-diff-rightside {margin-left:1%;}
.wiki-diff-container .wiki-diff-heading,
.wiki-diff-container .no-overflow {padding:10px;border:1px solid #DDD;}
-.wiki-diff-container .wiki-diff-rightside .wiki_diffversion {text-align:right;}
\ No newline at end of file
+.wiki-diff-container .wiki-diff-rightside .wiki_diffversion {text-align:right;}
+
+.wikieditor-toolbar img{
+ width: 22px;
+ height: 22px;
+ vertical-align: middle;
+}
diff --git a/mod/wiki/version.php b/mod/wiki/version.php
index c7f3582c50a..8d7b259d1dc 100644
--- a/mod/wiki/version.php
+++ b/mod/wiki/version.php
@@ -19,8 +19,7 @@
* Code fragment to define the version of wiki
* This fragment is called by moodle_needs_upgrading() and /admin/index.php
*
- * @package mod
- * @subpackage wiki
+ * @package mod-wiki-2.0
* @copyrigth 2009 Marc Alier, Jordi Piguillem marc.alier@upc.edu
* @copyrigth 2009 Universitat Politecnica de Catalunya http://www.upc.edu
*
@@ -33,6 +32,6 @@
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
-$module->version = 2011011000; // The current module version (Date: YYYYMMDDXX)
+$module->version = 2011011001; // The current module version (Date: YYYYMMDDXX)
$module->requires = 2010080300;
$module->cron = 0; // Period for cron to check this module (secs)
diff --git a/mod/wiki/view.php b/mod/wiki/view.php
index c4adf1c4679..6b6a40b4639 100644
--- a/mod/wiki/view.php
+++ b/mod/wiki/view.php
@@ -251,7 +251,7 @@ if ($id) {
} else {
print_error('incorrectparameters');
}
-require_course_login($course, true, $cm);
+require_login($course, true, $cm);
$context = get_context_instance(CONTEXT_MODULE, $cm->id);
require_capability('mod/wiki:viewpage', $context);
diff --git a/mod/wiki/viewversion.php b/mod/wiki/viewversion.php
index 52029a26769..ca420d24f5b 100644
--- a/mod/wiki/viewversion.php
+++ b/mod/wiki/viewversion.php
@@ -58,7 +58,7 @@ if (!$cm = get_coursemodule_from_instance('wiki', $wiki->id)) {
$course = $DB->get_record('course', array('id' => $cm->course), '*', MUST_EXIST);
-require_course_login($course->id, true, $cm);
+require_login($course->id, true, $cm);
add_to_log($course->id, "wiki", "history", "history.php?id=$cm->id", "$wiki->id");
/// Print the page header