function get_content()
    {
        global $WS, $CFG;
        if ($this->content !== NULL) {
            return $this->content;
        }
        //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);
        $this->content = new stdClass();
        $this->content->items = array();
        $this->content->icons = array();
        //$this->content->footer = '<br />'.helpbutton ('index', get_string('block_index', 'wiki'), 'wiki', true, false, '', true).get_string('block_index', 'wiki');
        //If we are out of a dfwiki activity or in a different
        //dfwiki format course and we want to create a block:
        if (empty($WS->dfwiki)) {
            $this->content->text = get_string('block_warning', 'wiki');
            return $this->content;
        }
        $list = '<table border="0" cellspacing="0" cellpadding="0"><tr><td class="nwikileftnow">
			<ul class="wiki_listme">';
        $ead = wiki_manager_get_instance();
        if (isset($WS->pagedata->pagename)) {
            $this->levelsel = $ead->level($WS->pagedata->pagename);
        }
        //call recursive function
        $list .= $this->built_index($WS->dfwiki->pagename, 0);
        $list .= '</ul></td></tr></table>';
        $this->content->text = $list;
        $this->content->footer .= '<style>.wiki_listme { padding-right:5px; } .dir-rtl td.nwikileftnow  { text-align:right; } </style>';
        return $this->content;
    }
 function get_content()
 {
     global $CFG, $WS;
     $wiki = wiki_param('dfwiki');
     $groupmember = wiki_param('groupmember');
     if ($this->content !== NULL) {
         return $this->content;
     }
     //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);
     $this->content = new stdClass();
     $this->content->items = array();
     $this->content->icons = array();
     //$this->content->footer = '<br />'.helpbutton ('list_pages', get_string('block_list_pages', 'wiki'), 'wiki', true, false, '', true).get_string('block_list_pages', 'wiki');
     $this->content->items[] = '<a href="http://www.google.com">google</a>';
     $this->content->icons[] = '<img src="icon.gif" alt="">';
     //If we are out of a dfwiki activity or in a different
     //dfwiki format course and we want to create a block:
     if (empty($WS->dfwiki)) {
         $this->content->text = get_string('block_warning', 'wiki');
         return $this->content;
     }
     $ead = wiki_manager_get_instance();
     $pages = $ead->get_wiki_page_names_of_wiki($wiki, $groupmember->groupid);
     $this->orderpages($pages);
     $syns = $ead->get_wiki_synonyms();
     $this->orderpages($syns);
     $list = '<table border="0" cellspacing="0" cellpadding="0"><tr><td class="nwikileftnow">
 			<ul class="wiki_listme">';
     if (!isset($WS->pagedata->pagename)) {
         $WS->load_page_data();
     }
     if (count($pages) != 0) {
         foreach ($this->ordereds as $key => $ordered) {
             //chack if the letter is the curretn one.
             if ($key == $this->get_index($WS->pagedata->pagename)) {
                 $display = '';
                 $image_ico = $this->images['minus'];
             } else {
                 $display = 'display:none';
                 $image_ico = $this->images['plus'];
             }
             $list .= '<li class="wiki_listme">' . $image_ico . '<a href="#" class="wiki_folding">' . $key . '</a>
 					<ul class="wiki_listme" style="margin:auto auto auto 15px;' . $display . '">';
             // dfwiki-block || course-block
             $dir = "";
             if ($this->instance->pagetype == "mod-wiki-view") {
                 $dir = $CFG->wwwroot . '/mod/wiki/view.php?id=' . $WS->cm->id;
             } else {
                 $dir = $CFG->wwwroot . '/course/view.php?id=' . $WS->cm->course;
             }
             foreach ($ordered as $link) {
                 if (in_array($link, $syns)) {
                     $page_icon = $this->images['syn'];
                     $page = wiki_get_real_pagename($link);
                 } else {
                     $page_icon = $this->images['square'];
                     $page = $link;
                 }
                 $list .= '<li class="wiki_listme">' . $page_icon . '<a href="' . $dir . '&amp;page=' . urlencode($page) . '&amp;gid=' . $WS->groupmember->groupid . '&amp;uid=' . $WS->member->id . '" title="' . urlencode($link) . '">' . format_text($this->trim_string($link, 20), FORMAT_PLAIN) . '</a>' . '</li>';
             }
             $list .= '</ul></li>';
         }
     } else {
         $list .= '<li>' . get_string('nopages', 'wiki') . '</li>';
     }
     $list .= '</ul></td></tr></table>';
     $this->content->text = $list;
     $this->content->footer .= '<style>.wiki_listme { padding-right:5px; } .dir-rtl td.nwikileftnow  { text-align:right; } </style>';
     return $this->content;
 }
function wiki_print_menu_groups_and_students($listgroups, $listgroupsmembers, &$WS)
{
    //this function prints the groupmode menu with the students
    global $CFG, $COURSE, $USER;
    if (empty($listgroupsmembers)) {
        return;
    }
    $wikimanager = wiki_manager_get_instance();
    $wikipersistor = new wiki_persistor();
    //if we are in visible groups with separate students
    //and the user is not a teacher or admin
    //then we don't take his group in the menu list
    $context = get_context_instance(CONTEXT_MODULE, $WS->cm->id);
    //if((($WS->dfwiki->groupmode == 1) && ($WS->cm->studentmode == 2))
    if (isset($WS->cm->groupmode) && $WS->cm->groupmode == 1 && $WS->dfwiki->studentmode > 0 && !has_capability('mod/wiki:editanywiki', $context)) {
        $usergroupids = $wikipersistor->get_groupid_by_userid_and_courseid($USER->id, $COURSE->id);
        $userid = array();
        foreach ($usergroupids as $usergroup) {
            $userid[] = $usergroup->groupid;
        }
        foreach ($listgroups as $key => $group) {
            if (!in_array($group->id, $userid)) {
                unset($listgroups[$key]);
            }
        }
    }
    if (isset($WS->cm->groupmode) && $WS->cm->groupmode == 1 && $WS->dfwiki->studentmode == 1 && !has_capability('mod/wiki:editanywiki', $context)) {
        foreach ($listgroupsmembers as $key => $member) {
            foreach ($usergroupids as $usergroup) {
                if ($member->groupid == $usergroup->groupid && $member->id != $USER->id) {
                    unset($listgroupsmembers[$key]);
                }
            }
        }
    }
    //if((($WS->dfwiki->groupmode == 2) && ($WS->cm->studentmode == 1))
    if (isset($WS->cm->groupmode) && $WS->cm->groupmode == 2 && $WS->dfwiki->studentmode == 1 && !has_capability('mod/wiki:editanywiki', $context)) {
        //the user group
        $usergroupids = $wikipersistor->get_groupid_by_userid_and_courseid($USER->id, $COURSE->id);
        $listgroups = $wikimanager->get_course_groups($COURSE->id);
        //Course students list without the user group
        //We take the groups, and id, firstname and lastname of the students
        //$listgroupmembers = $wikimanager->get_course_members($COURSE->id);
        foreach ($listgroupsmembers as $key => $member) {
            foreach ($usergroupids as $usergroup) {
                if ($member->groupid == $usergroup->groupid && $member->id != $USER->id) {
                    unset($listgroupsmembers[$key]);
                    //break;
                }
            }
        }
    }
    $cm->id = isset($WS->dfcourse) ? $COURSE->id : $WS->cm->id;
    $prop = null;
    $prop->type = "text/javascript";
    $info = '  //<![CDATA[

    function wiki_select_group(groups, groupstudent){
            var i=0;
            var j=0;
            var k=0;
            var numstudents=0 ;
            var numgroups=0;

            numgroups = groups.length;
            for(i=0; i<numgroups; i++){
                numstudents = groupstudent[i].length;
                for(j=0; j<numstudents; j++){
                    if((document.forms[\'form_sel_group\'].selectstudent.options[k].selected)&&(document.forms[\'form_sel_group\'].selectstudent.options[k].value == groupstudent[i][j])){
                            document.forms[\'form_sel_group\'].selectgroup.value = groups[i];
                    }
                k++;
            }
        }
    }

    var groups = new Array();';
    $ind = 0;
    foreach ($listgroups as $lgroup) {
        $info .= "\n            groups[{$ind}] = '{$lgroup->id}';";
        $ind++;
    }
    if (has_capability('mod/wiki:editawiki', get_context_instance(CONTEXT_MODULE, $cm->id))) {
        $info .= "\n\t\t\tgroups[{$ind}] = '0';";
    } else {
        if (isset($usergroupids)) {
            foreach ($usergroupids as $usergroup) {
                $info .= "\n\t\t\t\t   groups[{$ind}] = '{$usergroup->groupid}';";
            }
        }
    }
    $info .= '
    var groupstudent = new Array();

	//]]>';
    wiki_script($info, $prop);
    $prop = null;
    $prop->border = "0";
    $prop->class = "boxalignright";
    $prop->classtd = "nwikileftnow";
    wiki_table_start($prop);
    $group = get_field('groups_members', 'id', 'groupid', $WS->groupmember->groupid, 'userid', $WS->member->id);
    if (!empty($group) and isset($listgroupsmembers[$group])) {
        echo get_string('viewpagestudent', 'wiki') . $listgroupsmembers[$group]->lastname . ', ' . $listgroupsmembers[$group]->firstname;
        wiki_table_end();
        $prop = null;
        $prop->border = "0";
        $prop->class = "boxalignright";
        $prop->classtd = "nwikileftnow";
        wiki_table_start($prop);
    }
    print_string('anotherstudent', 'wiki');
    wiki_change_column();
    $prop = null;
    $prop->id = "form_sel_group";
    $prop->method = "post";
    $prop->action = 'view.php?id=' . $cm->id;
    wiki_form_start($prop);
    wiki_div_start();
    $i = 0;
    $opt = null;
    $opt2 = null;
    foreach ($listgroups as $lgroup) {
        $liststudentsingroup[$i] = wiki_students_in_a_group($lgroup->id, $listgroupsmembers);
        $j = 0;
        $prop = null;
        $prop->type = "text/javascript";
        $info = "groupstudent[{$i}] = new Array();";
        wiki_script($info, $prop);
        foreach ($liststudentsingroup[$i] as $lstudentsingroup) {
            $prop = null;
            $prop->value = $lstudentsingroup->id;
            $opt .= wiki_option($lstudentsingroup->lastname . ', ' . $lstudentsingroup->firstname, $prop, true);
            $prop = null;
            $prop->type = "text/javascript";
            $info = "groupstudent[{$i}][{$j}]= '{$lstudentsingroup->id}';";
            wiki_script($info, $prop);
            $j++;
        }
        if ($WS->cm->groupmode != 0) {
            $prop = null;
            $prop->label = $lgroup->name;
            $opt2 .= wiki_optgroup($opt, $prop, true);
            $opt = null;
        }
        $i++;
    }
    if (has_capability('mod/wiki:editawiki', get_context_instance(CONTEXT_MODULE, $cm->id))) {
        $prop = null;
        $prop->value = $USER->id;
        $opt .= wiki_option($USER->lastname . ', ' . $USER->firstname, $prop, true);
        $prop = null;
        $prop->type = "text/javascript";
        $info = "groupstudent[{$i}] = new Array(); groupstudent[{$i}][0] = {$USER->id};";
        wiki_script($info, $prop);
        $prop = null;
        $prop->label = "teacher";
        $opt2 .= wiki_optgroup($opt, $prop, true);
        $opt = null;
    } else {
        if (isset($usergroupid)) {
            $prop = null;
            $prop->value = $USER->id;
            $opt .= wiki_option($USER->lastname . ', ' . $USER->firstname, $prop, true);
            $prop = null;
            $prop->type = "text/javascript";
            $info = "groupstudent[{$i}] = new Array(); groupstudent[{$i}][0] = {$USER->id};";
            wiki_script($info, $prop);
            $prop = null;
            $prop->label = "user";
            $opt2 .= wiki_optgroup($opt, $prop, true);
            $opt = null;
        }
    }
    $prop = null;
    $prop->id = "selectstudent";
    $prop->name = "dfformselectstudent";
    $prop->events = 'onchange="javascript:wiki_select_group(groups, groupstudent)"';
    wiki_select($opt2, $prop);
    $prop = null;
    $prop->id = "selectgroup";
    $prop->name = "dfformselectgroup";
    wiki_input_hidden($prop);
    $prop = null;
    $prop->type = "text/javascript";
    $info = "this.wiki_select_group(groups, groupstudent)";
    wiki_script($info, $prop);
    $prop = null;
    $prop->value = get_string("continue");
    wiki_input_submit($prop);
    wiki_div_end();
    wiki_form_end();
    wiki_table_end();
}
function wiki_print_edit_area(&$content_text, &$WS)
{
    global $USER, $dfwiki_editor;
    //select editor:
    switch ($WS->pagedata->editor) {
        case 'htmleditor':
            //moodle html editor
            $prop = null;
            $prop->border = 0;
            $prop->width = '100%';
            $prop->aligntd = 'right';
            wiki_table_start($prop);
            helpbutton('howtowiki_htmleditor', get_string('helpeditor', 'wiki'), 'wiki');
            wiki_change_row();
            print_textarea(true, 20, 70, 0, 0, 'dfformcontent', $content_text);
            use_html_editor('dfformcontent');
            wiki_table_end();
            break;
        default:
            //default and dfwiki editor
            //print buttons
            wiki_table_start();
            $prop = null;
            $prop->width = '100%';
            $prop->valigntd = 'top';
            $prop->classtd = 'nwikitambuttons';
            wiki_table_start($prop);
            $prop = null;
            $prop->type = 'text/javascript';
            $prop->src = 'editor/buttons.js';
            wiki_script('', $prop);
            $prop = null;
            $prop->type = 'text/javascript';
            $prop->src = '../mod/wiki/editor/buttons.js';
            wiki_script('', $prop);
            $info = "";
            if (isset($dfwiki_editor)) {
                foreach ($dfwiki_editor as $button) {
                    $text = $button[4] != '' ? get_string($button[4], 'wiki') : '';
                    if (isset($WS->dfcourse)) {
                        $info .= 'addButton(\'../mod/wiki/editor/images/' . $button[0] . '\',\'' . get_string($button[1], 'wiki') . '\',\'' . $button[2] . '\',\'' . $button[3] . '\',\'' . $text . "');\n";
                    } else {
                        $info .= 'addButton(\'editor/images/' . $button[0] . '\',\'' . get_string($button[1], 'wiki') . '\',\'' . $button[2] . '\',\'' . $button[3] . '\',\'' . $text . "');\n";
                    }
                }
            }
            $prop = null;
            $prop->type = 'text/javascript';
            wiki_script($info, $prop);
            $prop = null;
            $prop->valign = 'top';
            wiki_change_column($prop);
            wiki_print_edit_smileis($WS);
            $prop = null;
            $prop->align = 'right';
            $prop->valign = 'top';
            wiki_change_column($prop);
            helpbutton('howtowiki_' . $WS->pagedata->editor, get_string('helpeditor', 'wiki'), 'wiki');
            wiki_table_end();
            wiki_change_row();
            $info = '
					var cont=0;
					function onKeyPress(e)
					{
						cont++;
						if(cont==200){
							<!-- 	No es pot accedir al checkbox a traves de document.form.dfform[definitive] -->
							document.getElementById("checkbox").click()
						}
					}';
            $prop = null;
            $prop->type = 'text/javascript';
            wiki_script($info, $prop);
            $prop = null;
            $prop->cols = $WS->editor_size->editorcols;
            $prop->rows = $WS->editor_size->editorrows;
            $prop->name = 'dfformcontent';
            $prop->events = 'onkeypress="return onKeyPress(event);"';
            wiki_textarea(s($content_text), $prop);
            wiki_table_end();
            break;
    }
}