コード例 #1
0
function wiki_edit_content(&$WS)
{
    global $CFG;
    $context = get_context_instance(CONTEXT_MODULE, $WS->cm->id);
    require_capability('mod/wiki:caneditawiki', $context);
    $cont = false;
    $txt = '';
    $titlebox = '';
    $oldcontentbox = '';
    $viewtitle = '0';
    if ($WS->pageaction == 'adddiscussion' or isset($WS->dfform['addtitle']) and $WS->pageaction == 'edit') {
        $viewtitle = '1';
        if (isset($WS->dfform['addtitle'])) {
            $titlebox = $WS->dfform['addtitle'];
            $oldcontentbox = $WS->dfform['oldcontent'];
            $contentbox = $WS->dfform['content'];
        } else {
            $titlebox = '';
            $oldcontentbox = $WS->dfform['content'];
            $contentbox = '';
        }
    } else {
        if (isset($WS->dfform['content'])) {
            $contentbox = $WS->dfform['content'];
        } else {
            $contentbox = '';
        }
    }
    //need to check if  we have preview mode
    $preview = optional_param('dfformpreview', NULL, PARAM_ALPHA);
    if (isset($preview)) {
        //we're in preview mode
        print_simple_box_start('center', '100%', '', '20');
        wiki_size_text("Preview", 2);
        // discussions
        if ($titlebox == '') {
            $txt = $oldcontentbox . $contentbox;
        } else {
            switch ($WS->dfwiki->editor) {
                case 'ewiki':
                    $txt = $oldcontentbox . chr(13) . chr(10) . '!!! ' . $titlebox . ' ' . chr(13) . chr(10) . $contentbox . chr(10);
                    break;
                case 'htmleditor':
                    $txt = $oldcontentbox . chr(13) . chr(10) . '<h1> ' . $titlebox . ' </h1>' . chr(13) . chr(10) . $contentbox . chr(10);
                    break;
                default:
                    $txt = $oldcontentbox . chr(13) . chr(10) . '= ' . $titlebox . ' =' . chr(13) . chr(10) . $contentbox . chr(10);
                    break;
            }
        }
        wiki_print_page_content(stripslashes_safe($txt), $WS);
        print_simple_box_end();
    } else {
        //we're not in preview mode
        //check if there's content
        //echo 'wiki_forceeditorchange='.$CFG->wiki_forceeditorchange;
        if (!isset($WS->pagedata->content) || $CFG->wiki_forceeditorchange) {
            if (!isset($WS->pagedata->content)) {
                $WS->pagedata->content = '';
            }
            //  si no hem decidit encara l'editor per aquesta pagina i no hem adjuntat cap arxiu demanem l'editor
            if (!isset($WS->dfform['selectedit']) && (!isset($WS->pagedata->editor) || $WS->pagedata->editor == '') || $CFG->wiki_forceeditorchange) {
                $cont = true;
                //$pagename=stripslashes($pagename);
                $prop = null;
                $prop->border = "0";
                $prop->class = "nwikileftnow";
                wiki_table_start($prop);
                /// removed "choose different wiki syntax on new page listbox" so teachers will not get confused (nadavkav 25.10.09)
                /*
                				print_string('anothereditor','wiki');
                				//Converts reserved chars for html to prevent chars misreading
                				$pagetemp = stripslashes_safe($WS->page);
                
                                wiki_change_column();
                				$prop = null;
                				$prop->id = "sel_edit";
                				$prop->method = "post";
                				$prop->action = 'view.php?id='.$WS->linkid.'&amp;page=edit/'.urlencode($pagetemp).'&amp;gid='.$WS->groupmember->groupid.'&amp;uid='.$WS->member->id;
                				wiki_form_start($prop);
                				wiki_div_start();
                				$opt = "";
                                if ($WS->dfwiki->editor != 'dfwiki'){
                                	$prop = null;
                                	$prop->value = "0";
                                	$opt = wiki_option(get_string('dfwiki','wiki'), $prop, true);
                                }
                                if ($WS->dfwiki->editor != 'nwiki'){
                                	$prop = null;
                                	$prop->value = "3";
                                	$opt .= wiki_option(get_string('nwiki','wiki'), $prop, true);
                                }
                                if ($WS->dfwiki->editor != 'ewiki'){
                                	$prop = null;
                                	$prop->value = "1";
                                	$opt .= wiki_option(get_string('ewiki','wiki'), $prop, true);
                				}
                                if ($WS->dfwiki->editor != 'htmleditor'){
                                	$prop = null;
                                	$prop->value = "2";
                                	$opt .= wiki_option(get_string('htmleditor','wiki'), $prop, true);
                                	}
                                $prop = null;
                                $prop->name = "dfformselectedit";
                                wiki_select($opt,$prop);
                                $prop = null;
                                $prop->value = get_string("continue");
                                wiki_input_submit($prop);
                                wiki_div_end();
                                wiki_form_end();
                */
                $prop = null;
                $prop->class = "nwikileftnow";
                wiki_change_row($prop);
                echo "&nbsp;";
                wiki_table_end();
                if (isset($WS->dfform['content'])) {
                    $content_text =& $WS->dfform['content'];
                } else {
                    $content_text =& $WS->pagedata->content;
                }
                if (isset($WS->dfform['selectedit'])) {
                    switch ($WS->dfform['selectedit']) {
                        case '0':
                            $WS->pagedata->editor = $WS->dfwiki->editor = 'dfwiki';
                            break;
                        case '1':
                            $WS->pagedata->editor = $WS->dfwiki->editor = 'ewiki';
                            break;
                        case '2':
                            $WS->pagedata->editor = $WS->dfwiki->editor = 'htmleditor';
                            break;
                        case '3':
                            $WS->pagedata->editor = $WS->dfwiki->editor = 'nwiki';
                            break;
                        default:
                            error('No editor was selected');
                            break;
                    }
                } else {
                    $WS->pagedata->editor = $WS->dfwiki->editor;
                }
                wiki_print_editor($content_text, $viewtitle, $titlebox, '', $WS);
            }
        }
    }
    if (isset($WS->dfform['content'])) {
        $content_text = stripslashes_safe($WS->dfform['content']);
    } else {
        $content_text = stripslashes_safe($WS->pagedata->content);
    }
    // partial editing of a section available only with nwiki editor
    $section = optional_param('section', '', PARAM_TEXT);
    $sectionnum = optional_param('sectionnum', 0, PARAM_INTEGER);
    if (!isset($preview) && $WS->pagedata->editor == 'nwiki' && !($section == '' && $sectionnum == 0) && !wiki_is_uploading_modified()) {
        $section = stripslashes($section);
        $sectionnum = wiki_get_real_section_position($WS->page, $section, $sectionnum);
        $res = wiki_split_sections($content_text, $section, $sectionnum);
        if ($res->error != '') {
            $sectionhash = optional_param('sectionhash', '', PARAM_TEXT);
            wiki_release_lock($WS, $WS->dfwiki->id, $WS->pagedata->pagename . '#' . $sectionhash);
            error($res->error);
        } else {
            $content_text = $res->current_part;
        }
    }
    //print the editor
    if ($cont == false) {
        if (!isset($WS->dfform['selectedit'])) {
            $editor = optional_param('editor', '', PARAM_ALPHA);
            if (!empty($WS->dfform['editor'])) {
                $WS->pagedata->editor = $WS->dfform['editor'];
            } else {
                if (!empty($editor)) {
                    $WS->pagedata->editor = $editor;
                }
            }
            if ($WS->pageaction == 'adddiscussion' or isset($WS->dfform['addtitle'])) {
                if (!isset($oldcontentbox)) {
                    wiki_print_editor($contentbox, $viewtitle, $titlebox, $content_text, $WS);
                } else {
                    wiki_print_editor($contentbox, $viewtitle, $titlebox, $oldcontentbox, $WS);
                }
            } else {
                wiki_print_editor($content_text, $viewtitle, $titlebox, '', $WS);
            }
        } else {
            //comming from the above form
            switch ($WS->dfform['selectedit']) {
                case '0':
                    $WS->pagedata->editor = 'dfwiki';
                    wiki_print_editor($contentbox, $viewtitle, $titlebox, $oldcontentbox, $WS);
                    break;
                case '1':
                    $WS->pagedata->editor = 'ewiki';
                    wiki_print_editor($contentbox, $viewtitle, $titlebox, $oldcontentbox, $WS);
                    break;
                case '2':
                    $WS->pagedata->editor = 'htmleditor';
                    wiki_print_editor($contentbox, $viewtitle, $titlebox, $oldcontentbox, $WS);
                    break;
                case '3':
                    $WS->pagedata->editor = 'nwiki';
                    wiki_print_editor($contentbox, $viewtitle, $titlebox, $oldcontentbox, $WS);
                    break;
                default:
                    error('No editor was selected');
                    break;
            }
        }
    }
}
コード例 #2
0
function wiki_print_editor(&$content_text, $adddiscussion = '0', $addtitle = '', $oldcontent = '', &$WS)
{
    global $CFG, $USER;
    //show upload error @@@@@@@@
    //try to delete a file
    wiki_print_editor_setup($WS);
    require_once $CFG->dirroot . "/mod/wiki/weblib.php";
    require_once $CFG->dirroot . "/mod/wiki/locallib.php";
    //Scritp WIKI_TREE
    $prop = null;
    $prop->type = 'text/javascript';
    if (isset($WS->dfcourse)) {
        $prop->src = '../mod/wiki/editor/wiki_tree.js';
    } else {
        $prop->src = 'editor/wiki_tree.js';
    }
    wiki_script('', $prop);
    if (isset($WS->dfdir->error)) {
        foreach ($WS->dfdir->error as $err) {
            $prop = null;
            $prop->class = 'except';
            wiki_size_text($err, 3, $prop);
        }
    }
    if (substr($WS->pagedata->pagename, 0, strlen('discussion:')) != 'discussion:') {
        $event = 'view';
    } else {
        $event = 'discussion';
    }
    //mount editing form
    //Converts reserved chars for html to prevent chars misreading
    $pagetemp = stripslashes_safe($WS->pagedata->pagename);
    $pagetemp = wiki_clean_name($pagetemp);
    $prop = null;
    $prop->action = 'view.php?id=' . $WS->linkid . '&amp;page=' . $event . '/' . urlencode($pagetemp) . '&amp;gid=' . $WS->groupmember->groupid . '&amp;uid=' . $WS->member->id;
    $prop->method = 'post';
    $prop->enctype = 'multipart/form-data';
    $prop->id = 'prim';
    wiki_form_start($prop);
    wiki_table_start();
    $prop = null;
    $prop->name = 'dfformversion';
    $prop->value = $WS->pagedata->version ? $WS->pagedata->version : '0';
    wiki_input_hidden($prop);
    $prop = null;
    $prop->name = 'dfformcreated';
    $prop->value = $WS->pagedata->created;
    wiki_input_hidden($prop);
    $prop = null;
    $prop->name = 'dfformeditable';
    $prop->value = $WS->pagedata->editable;
    wiki_input_hidden($prop);
    $prop = null;
    if ($adddiscussion == '1') {
        $prop->value = 'adddiscussion';
    } else {
        $prop->value = 'edit';
    }
    $prop->name = 'dfformaction';
    wiki_input_hidden($prop);
    $prop = null;
    $prop->name = 'dfformeditor';
    $prop->value = $WS->pagedata->editor;
    wiki_input_hidden($prop);
    /* necessary for joining the section with the rest of the page */
    // section name
    $section = optional_param('section', '', PARAM_TEXT);
    $prop = null;
    $prop->name = 'section';
    $preview = optional_param('dfformpreview', '', PARAM_TEXT);
    if ($preview != '' || wiki_is_uploading_modified()) {
        // if come from a preview, upload file or delete file
        // the string is already unslashed and encoded
        $prop->value = $section;
    } else {
        // gotta strip the slashes and encode it
        $prop->value = urlencode(stripslashes($section));
    }
    wiki_input_hidden($prop);
    // section number
    $prop = null;
    $prop->name = 'sectionnum';
    $prop->value = optional_param('sectionnum', '', PARAM_INTEGER);
    wiki_input_hidden($prop);
    $prop = null;
    $prop->name = 'sectionhash';
    $prop->value = optional_param('sectionhash', '', PARAM_TEXT);
    wiki_input_hidden($prop);
    // discussion
    if ($adddiscussion == '1') {
        wiki_size_text(get_string('adddiscussionitem', 'wiki'), 2);
        print_string('title', 'wiki');
        wiki_br();
        $prop = null;
        $prop->name = 'dfformaddtitle';
        $prop->value = $addtitle;
        $prop->size = '80';
        wiki_input_text($prop);
        wiki_br(2);
        $prop = null;
        $prop->name = 'dfformoldcontent';
        $prop->value = $oldcontent;
        wiki_input_hidden($prop);
        wiki_hr();
        wiki_change_row();
        date_default_timezone_set('UTC');
        // add editing username and date to the end of each discussion (nadavkav patch)
        $txt = $content_text . '<br/><br/>  <i>(' . get_string('discussioneditby', 'wiki') . ': ' . $USER->firstname . " " . $USER->lastname . " " . get_string('discussionediton', 'wiki') . ": " . date(DATE_RFC822) . ")</i>";
    } else {
        $txt = $content_text;
    }
    // wikibook
    $prop = null;
    $prop->name = 'wikibook';
    $prop->value = optional_param('wikibook', '', PARAM_TEXT);
    wiki_input_hidden($prop);
    wiki_print_edit_area($txt, $WS);
    wiki_tags_print_editbox($WS);
    $prop = null;
    $prop->class = 'nwikileftnow';
    wiki_change_row($prop);
    if ($WS->upload_bar) {
        wiki_print_edit_uploaded($WS);
    }
    wiki_change_row();
    $prop = null;
    $prop->name = 'dfformsave';
    $prop->value = get_string('save', 'wiki');
    wiki_input_submit($prop);
    $prop = null;
    $prop->name = 'dfformpreview';
    $prop->value = get_string('preview');
    wiki_input_submit($prop);
    $prop = null;
    $prop->name = 'dfformcancel';
    $prop->value = get_string('cancel');
    wiki_input_submit($prop);
    $prop = null;
    $prop->name = 'dfformdefinitive';
    $prop->value = '1';
    $prop->id = 'checkbox';
    wiki_input_checkbox($prop);
    print_string('highlight', 'wiki');
    wiki_table_end();
    wiki_form_end();
}