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 = '
'; foreach ($wiki_editor as $button) { $html .= ""; - $html .= "wwwroot/mod/wiki/editors/wiki/images/$button[0]\" alt=\"".$button[1]."\" title=\"".$button[1]."\" />"; + $html .= html_writer::empty_tag('img', array('alt' => $button[1], 'src' => $CFG->wwwroot . '/mod/wiki/editors/wiki/images/' . $button[0])); $html .= ""; } + $html .= "'; + $html .= $OUTPUT->help_icon('insertimage', 'wiki'); + $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 = '
    '; + foreach ($dir['subdirs'] as $subdir) { + $image = $this->output->pix_icon("f/folder", $subdir['dirname'], 'moodle', array('class'=>'icon')); + $result .= '
  • '.$image.' '.s($subdir['dirname']).'
    '.$this->htmllize_tree($tree, $subdir).'
  • '; + } + foreach ($dir['files'] as $file) { + $url = file_encode_url("$CFG->wwwroot/pluginfile.php", '/'.$tree->context->id.'/mod_wiki/attachments/' . $tree->subwiki->id . '/'. $file->get_filepath() . $file->get_filename(), true); + $filename = $file->get_filename(); + $icon = mimeinfo("icon", $filename); + $image = $this->output->pix_icon("f/$icon", $filename, 'moodle', array('class'=>'icon')); + $result .= '
  • '.$image.' '.html_writer::link($url, $filename).'
  • '; + } + $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