| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630 | 
							- <?php
 
- // This file is part of Moodle - http://moodle.org/
 
- //
 
- // Moodle is free software: you can redistribute it and/or modify
 
- // it under the terms of the GNU General Public License as published by
 
- // the Free Software Foundation, either version 3 of the License, or
 
- // (at your option) any later version.
 
- //
 
- // Moodle is distributed in the hope that it will be useful,
 
- // but WITHOUT ANY WARRANTY; without even the implied warranty of
 
- // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
- // GNU General Public License for more details.
 
- //
 
- // You should have received a copy of the GNU General Public License
 
- // along with Moodle.  If not, see <http://www.gnu.org/licenses/>.
 
- /**
 
-  * Competence Graph
 
-  *
 
-  * Competence graph format allows the visualization of courses with competencies in a graph. 
 
-  * In the course structure, teacher associates activities to competencies. Each course module
 
-  * can have restrictions between them, so a module is opened only when the student accomplish 
 
-  * its requirements. In student visualization, the structure of the course is presented as a 
 
-  * graph. In such graph, each node is a resource available to the student that can be handled.
 
-  * Subgraphs in the main graph represent competences. As students can have different paths in 
 
-  * the course, the plugin registers all the steps that a student produces.
 
-  * 
 
-  * @package    course/format
 
-  * @subpackage competencegraph
 
-  * @version    0.1
 
-  * @author     Laboratório de Informática na Educação <http://www.usp.br/line>
 
-  * @link       http://www.usp.br/line/competencegraph
 
-  * @license    http://www.gnu.org/copyleft/gpl.html GNU Public License
 
-  */
 
- defined('MOODLE_INTERNAL') || die();
 
- use core_competency\course_competency;
 
- use core_competency\api;
 
- use core_competency\course_module_competency;
 
- require_once($CFG->dirroot . '/course/format/renderer.php');
 
- require_once($CFG->dirroot . '/course/format/competencegraph/lib.php');
 
- class format_competencegraph_renderer extends format_section_renderer_base {
 
-     public function __construct(moodle_page $page, $target) {
 
-         parent::__construct($page, $target);
 
-         global $PAGE;
 
-         //$this->courserenderer = $PAGE->get_renderer('core','course');
 
-         $this->togglelib = new \format_topcoll\togglelib;
 
-         $this->courseformat = course_get_format($page->course); // Needed for collapsed topics settings retrieval.
 
-         $page->set_other_editing_capability('moodle/course:setcurrentsection');
 
-         $this->userisediting = $page->user_is_editing();
 
-         
 
-         $this->rtl = right_to_left();
 
-         if (strcmp($page->theme->name, 'boost') === 0) {
 
-             $this->bsnewgrid = true;
 
-         } else if (!empty($page->theme->parents)) {
 
-             if (in_array('boost', $page->theme->parents) === true) {
 
-                 $this->bsnewgrid = true;
 
-             }
 
-         }
 
-     }
 
-     protected function start_section_list() {
 
-         if ($this->bsnewgrid) {
 
-             return html_writer::start_tag('ul', array('class' => 'ctopics bsnewgrid'));
 
-         } else {
 
-             return html_writer::start_tag('ul', array('class' => 'ctopics'));
 
-         }
 
-     }
 
-     protected function end_section_list() {
 
-         return html_writer::end_tag('ul');
 
-     }
 
-     protected function page_title() {
 
-         return get_string('sectionname', 'format_competencegrah');
 
-     }
 
-     public function set_portable($portable) {
 
-         switch ($portable) {
 
-             case 1:
 
-                 $this->mobiletheme = true;
 
-                 break;
 
-             case 2:
 
-                 $this->tablettheme = true;
 
-                 break;
 
-             default:
 
-                 $this->mobiletheme = false;
 
-                 $this->tablettheme = false;
 
-                 break;
 
-         }
 
-     }
 
-     public function print_graph_teacher_view($course, $sections, $mods, $modnames, $modnamesused) {
 
-         $context = context_course::instance($course->id);
 
-         if (has_capability('moodle/course:update', $context)) {
 
-             $maintabs = array(
 
-                 new tabobject( 'tab_list', '?id='.$course->id.'&format=list', get_string('listview', 'format_competencegraph'), get_string('listview', 'format_competencegraph') ),
 
-                 new tabobject( 'tab_graph', '?id='.$course->id.'&format=graph', get_string('graphview', 'format_competencegraph'), get_string('graphview', 'format_competencegraph') )
 
-             );
 
-             $active = 'tab_graph';
 
-             print_tabs( array($maintabs), $active );
 
-             echo $this->get_js_dependencies_sigma_graph();
 
-             $this->print_test_graph($course, $sections, $mods, $modnames, $modnamesused);
 
-         }
 
-     }
 
-     public function print_nodes_graph($course, $sections, $mods, $modnames, $modnamesused) {
 
-         $context = context_course::instance($course->id);
 
-         $colors = ['#617db4', '#668f3c', '#c6583e', '#b956af', '#fcba03', '#03fcf0', '#fc0339', '#a6ffc8', '#000000'];
 
-         if (has_capability('moodle/course:update', $context)) {
 
-             // Print the competencies as name section:
 
-             $list_competencies = course_competency::list_course_competencies($course->id);
 
-             $all_mod_info_printed = array();
 
-             $modinfo = get_fast_modinfo($course);
 
-             $count = 0;
 
-             foreach ($list_competencies as $competence) {
 
-                 $idcompetence = $competence->get('competencyid');
 
-                 api::read_competency($idcompetence)->get('shortname');
 
-                 $list_modules = course_module_competency::list_course_modules($idcompetence, $course->id);
 
-                 foreach ($list_modules as $item) {
 
-                     array_push($all_mod_info_printed, $item);
 
-                 }
 
-                 foreach ($list_modules as $modnumber) {
 
-             
 
-                     $mod = $modinfo->cms[$modnumber];
 
-                     echo "g.nodes.push({
 
-                         id: 'n".($mod->id . $count)."',
 
-                         label: '".$mod->name."',
 
-                         x: Math.random(),
 
-                         y: Math.random(),
 
-                         size: 1,
 
-                         color: '".$colors[$count]."'
 
-                       });\n";
 
-                 }
 
-                 $count++;
 
-             }
 
-             $list_mod_without_competences = array();
 
-             foreach ($modinfo->cms as $tempmod) {
 
-                 if (!in_array($tempmod->id, $all_mod_info_printed)) {
 
-                     array_push($list_mod_without_competences, $tempmod->id);
 
-                 }
 
-             }
 
-         }
 
-     }
 
-     public function print_multiple_section_page($course, $sections, $mods, $modnames, $modnamesused) {
 
-         $context = context_course::instance($course->id);
 
-         global $OUTPUT;
 
-         
 
-         if (has_capability('moodle/course:update', $context)) {
 
-             echo $this->get_css_list_teacher();
 
-             //$this->print_modules_page_teacher_list($course, $sections, $mods, $modnames, $modnamesused);
 
-             $modinfo = get_fast_modinfo($course);
 
-             $course = $this->courseformat->get_course();
 
-             $context = context_course::instance($course->id);
 
-             $sections = $modinfo->get_section_info_all();
 
-             // General section if non-empty.
 
-             $thissection = $sections[0];
 
-             
 
-             if ($thissection->summary or ! empty($modinfo->sections[0]) or $this->userisediting) {
 
-                 print('<div class="tohidden firstitem">');
 
-                 echo $this->section_header($thissection, $course, false, 0);
 
-                 print('</div>');
 
-                 echo $this->courserenderer->course_section_add_cm_control($course, $thissection->section, 0);
 
-             }
 
-             $maintabs = array(
 
-                 new tabobject( 'tab_list', '?id='.$course->id.'&format=list', get_string('listview', 'format_competencegraph'), get_string('listview', 'format_competencegraph') ),
 
-                 new tabobject( 'tab_graph', '?id='.$course->id.'&format=graph', get_string('graphview', 'format_competencegraph'), get_string('graphview', 'format_competencegraph') )
 
-             );
 
-             $active = 'tab_list';
 
-             print_tabs( array($maintabs), $active );
 
-             // Print the competencies as name section:
 
-             $list_competencies = course_competency::list_course_competencies($course->id);
 
-             if (count($list_competencies) < 1) {
 
-                 echo  '<div class="coursewithoutcompetence"> <i class="fa fa-exclamation-triangle" aria-hidden="true"></i>' . get_string('coursewithoutcompetence', 'format_competencegraph') . '</div>';
 
-             }
 
-             
 
-             $all_mod_info_printed = array();
 
-             foreach ($list_competencies as $competence) {
 
-                 $idcompetence = $competence->get('competencyid');
 
-                 echo '<h4 class="sectionname"><span><a href="#">' . api::read_competency($idcompetence)->get('shortname') . '</a></span></h4>';
 
-                 $list_modules = course_module_competency::list_course_modules($idcompetence, $course->id);
 
-                 if (!$list_modules || count($list_modules) < 1) {
 
-                     echo '<div class="emptycompetence"><i class="fa fa-info-circle" aria-hidden="true"></i>' . get_string('emptycompetence', 'format_competencegraph') . "</div>";
 
-                 }
 
-                 echo $this->course_section_cm_list($course, null, 0, array(), $list_modules);
 
-                 foreach ($list_modules as $item) {
 
-                     array_push($all_mod_info_printed, $item);
 
-                 }
 
-             }
 
-             $list_mod_without_competences = array();
 
-             foreach ($modinfo->cms as $tempmod) {
 
-                 if (!in_array($tempmod->id, $all_mod_info_printed)) {
 
-                     array_push($list_mod_without_competences, $tempmod->id);
 
-                 }
 
-             }
 
-             if (count($list_mod_without_competences) > 0) {
 
-                 echo '<h4 class="withoutcompetence"><span><a href="#">' . get_string('itemswithoutcompetence', 'format_competencegraph') . '</a></span></h4>';
 
-                 echo $this->course_section_cm_list($course, null, 0, array(), $list_mod_without_competences);
 
-             }
 
-             $sections = $modinfo->get_section_info_all();
 
-             // General section if non-empty.
 
-             $thissection = $sections[0];
 
-             
 
-             if ($thissection->summary or ! empty($modinfo->sections[0]) or $this->userisediting) {
 
-                 print('<div class="tohidden">');
 
-                 echo $this->section_header($thissection, $course, false, 0);
 
-                 print('</div>');
 
-                 echo $this->courserenderer->course_section_add_cm_control($course, $thissection->section, 0);
 
-             }
 
-         }
 
-     }
 
-     
 
-     public function course_section_cm_list($course, $section, $sectionreturn = null, $displayoptions = array(), $includeditems = array()) {
 
-         global $USER;
 
-         $output = '';
 
-         $modinfo = get_fast_modinfo($course);
 
-         
 
-         $completioninfo = new completion_info($course);
 
-         // check if we are currently in the process of moving a module with JavaScript disabled
 
-         $ismoving = $this->page->user_is_editing() && ismoving($course->id);
 
-         if ($ismoving) {
 
-             $movingpix = new pix_icon('movehere', get_string('movehere'), 'moodle', array('class' => 'movetarget'));
 
-             $strmovefull = strip_tags(get_string("movefull", "", "'$USER->activitycopyname'"));
 
-         }
 
-         // Get the list of modules visible to user (excluding the module being moved if there is one)
 
-         $moduleshtml = array();
 
-         foreach ($includeditems as $modnumber) {
 
-             
 
-             $mod = $modinfo->cms[$modnumber];
 
-             if ($mod->availability)
 
-             echo $modnumber . ':: ';
 
-             print_r($mod->availability);
 
-             if ($ismoving and $mod->id == $USER->activitycopy) {
 
-                 // do not display moving mod
 
-                 continue;
 
-             }
 
-             if ($modulehtml = $this->courserenderer->course_section_cm_list_item($course,
 
-                     $completioninfo, $mod, $sectionreturn, $displayoptions)) {
 
-                 $moduleshtml[$modnumber] = $modulehtml;
 
-             }
 
-         }
 
-         
 
-         
 
-         $sectionoutput = '';
 
-         if (!empty($moduleshtml) || $ismoving) {
 
-             foreach ($moduleshtml as $modnumber => $modulehtml) {
 
-                 if ($ismoving) {
 
-                     $movingurl = new moodle_url('/course/mod.php', array('moveto' => $modnumber, 'sesskey' => sesskey()));
 
-                     $sectionoutput .= html_writer::tag('li',
 
-                             html_writer::link($movingurl, $this->output->render($movingpix), array('title' => $strmovefull)),
 
-                             array('class' => 'movehere'));
 
-                 }
 
-                 $sectionoutput .= $modulehtml;
 
-             }
 
-             if ($ismoving) {
 
-                 $movingurl = new moodle_url('/course/mod.php', array('movetosection' => $section->id, 'sesskey' => sesskey()));
 
-                 $sectionoutput .= html_writer::tag('li',
 
-                         html_writer::link($movingurl, $this->output->render($movingpix), array('title' => $strmovefull)),
 
-                         array('class' => 'movehere'));
 
-             }
 
-         }
 
-         // Always output the section module list.
 
-         $output .= html_writer::tag('ul', $sectionoutput, array('class' => 'section img-text'));
 
-         return $output;
 
-     }
 
-     public function print_modules_page_teacher_list($course, $sections, $mods, $modnames, $modnamesused) {
 
-         $modinfo = get_fast_modinfo($course);
 
-         $course = $this->courseformat->get_course();
 
-         $context = context_course::instance($course->id);
 
-         //echo $this->start_section_list();
 
-         $sections = $modinfo->get_section_info_all();
 
-         // General section if non-empty.
 
-         $thissection = $sections[0];
 
-         
 
-         if ($thissection->summary or ! empty($modinfo->sections[0]) or $this->userisediting) {
 
-             echo $this->section_header($thissection, $course, false, 0);
 
-             //echo $this->course_section_cm_list($course, $thissection, 0);
 
-             echo $this->courserenderer->course_section_add_cm_control($course, $thissection->section, 0);
 
-         }
 
-         $coursenumsections = $this->courseformat->get_last_section_number();
 
-         if ($coursenumsections > 0) {
 
-             $sectiondisplayarray = array();
 
-             $currentsectionfirst = false;
 
-             if ((!$this->userisediting)) {
 
-                 $currentsectionfirst = true;
 
-             }
 
-             if (($this->userisediting)) {
 
-                 $section = 1;
 
-             } else {
 
-                 $timenow = time();
 
-                 $weekofseconds = 604800;
 
-                 $course->enddate = $course->startdate + ($weekofseconds * $coursenumsections);
 
-                 $section = $coursenumsections;
 
-                 $weekdate = $course->enddate;      // This should be 0:00 Monday of that week.
 
-                 $weekdate -= 7200;                 // Subtract two hours to avoid possible DST problems.
 
-             }
 
-             $numsections = $coursenumsections; // Because we want to manipulate this for column breakpoints.
 
-             if (($this->userisediting == false)) {
 
-                 $loopsection = 1;
 
-                 $numsections = 0;
 
-                 while ($loopsection <= $coursenumsections) {
 
-                     $nextweekdate = $weekdate - ($weekofseconds);
 
-                     if ((($thissection->uservisible ||
 
-                             ($thissection->visible && !$thissection->available && !empty($thissection->availableinfo))) &&
 
-                             ($nextweekdate <= $timenow)) == true) {
 
-                         $numsections++; // Section not shown so do not count in columns calculation.
 
-                     }
 
-                     $weekdate = $nextweekdate;
 
-                     $section--;
 
-                     $loopsection++;
 
-                 }
 
-                 // Reset.
 
-                 $section = $coursenumsections;
 
-                 $weekdate = $course->enddate;      // This should be 0:00 Monday of that week.
 
-                 $weekdate -= 7200;                 // Subtract two hours to avoid possible DST problems.
 
-             }
 
-             echo $this->end_section_list();
 
-             
 
-             $loopsection = 1;
 
-             $breaking = false; // Once the first section is shown we can decide if we break on another column.
 
-             while ($loopsection <= $coursenumsections) {
 
-                 
 
-                 $thissection = $modinfo->get_section_info($section);
 
-                 /* Show the section if the user is permitted to access it, OR if it's not available
 
-                   but there is some available info text which explains the reason & should display. */
 
-                 if (($this->userisediting)) {
 
-                     $showsection = $thissection->uservisible ||
 
-                         ($thissection->visible && !$thissection->available && !empty($thissection->availableinfo));
 
-                 } else {
 
-                     $showsection = ($thissection->uservisible ||
 
-                         ($thissection->visible && !$thissection->available && !empty($thissection->availableinfo))) &&
 
-                         ($nextweekdate <= $timenow);
 
-                 }
 
-                 if (($currentsectionfirst == true) && ($showsection == true)) {
 
-                     // Show the section if we were meant to and it is the current section:....
 
-                     $showsection = ($course->marker == $section);
 
-                 } 
 
-                 if (!$showsection) {
 
-                     // Hidden section message is overridden by 'unavailable' control.
 
-                     $testhidden = false;
 
-                     if ($testhidden) {
 
-                         if (!$course->hiddensections && $thissection->available) {
 
-                             $thissection->ishidden = true;
 
-                             $sectiondisplayarray[] = $thissection;
 
-                         }
 
-                     }
 
-                 } else {
 
-                     $thissection->isshown = true;
 
-                     $sectiondisplayarray[] = $thissection;
 
-                 }
 
-                 if (($this->userisediting)) {
 
-                     $section++;
 
-                 } else {
 
-                     $section--;
 
-                     if (($this->userisediting == false)) {
 
-                         $weekdate = $nextweekdate;
 
-                     }
 
-                 }
 
-                 $loopsection++;
 
-                 if (($currentsectionfirst == true) && ($loopsection > $coursenumsections)) {
 
-                     // Now show the rest.
 
-                     $currentsectionfirst = false;
 
-                     $loopsection = 1;
 
-                     $section = 1;
 
-                 }
 
-                 if ($section > $coursenumsections) {
 
-                     // Activities inside this section are 'orphaned', this section will be printed as 'stealth' below.
 
-                     break;
 
-                 }
 
-             }
 
-             if ((!$this->userisediting) && (!empty($this->currentsection))) {
 
-                 $shownonetoggle = $this->currentsection; // One toggle open only, so as we have a current section it will be it.
 
-             }
 
-             foreach ($sectiondisplayarray as $thissection) {
 
-                 if (!empty($thissection->ishidden)) {
 
-                     echo $this->section_hidden($thissection);
 
-                 } else if (!empty($thissection->issummary)) {
 
-                     echo $this->section_summary($thissection, $course, null);
 
-                 } else if (!empty($thissection->isshown)) {
 
-                     //echo $this->section_header($thissection, $course, false, 0);
 
-                     if ($thissection->uservisible) {
 
-                         //echo $this->course_section_cm_list($course, $thissection, 0);
 
-                         //echo $this->courserenderer->course_section_add_cm_control($course, $thissection->section, 0);
 
-                     }
 
-                     
 
-                     echo html_writer::end_tag('div');
 
-                 }
 
-                 unset($sections[$thissection->section]);
 
-             }
 
-         }
 
-         
 
-     }
 
-     private function get_css_list_teacher() {
 
-         $style = "<style>";
 
-         $style .= ".sectionname, .withoutcompetence {
 
-             border-top: 1px solid #cfdacf;
 
-             margin-top: 1em;
 
-             padding-top: .3em;
 
-         }
 
-         .emptycompetence {
 
-             margin-left: 1.5em;
 
-             opacity: .8;
 
-         }
 
-         .emptycompetence i {
 
-             margin-right: .5em;
 
-         }
 
-         .tohidden .right.side {
 
-             display: none;
 
-         }
 
-         .tohidden li {
 
-             list-style-type: none;
 
-         }
 
-         .coursewithoutcompetence {
 
-             border: 1px solid gray;
 
-             padding: 1em;
 
-             border-radius: .5em;
 
-             margin: 1em;
 
-             color: #c63100;
 
-         }
 
-         .coursewithoutcompetence i {
 
-             opacity: .8;
 
-             margin-right: .5em;
 
-         }
 
-         .firstitem .section-modchooser-link {
 
-             float: right;
 
-         }";
 
-         return $style . "</style>";
 
-     }
 
-     private function print_test_graph($course, $sections, $mods, $modnames, $modnamesused) {
 
-         echo '<div id="container">
 
-         <style>
 
-           #graph-container {
 
-             top: 0;
 
-             bottom: 0;
 
-             left: 0;
 
-             right: 0;
 
-             position: absolute;
 
-           }
 
-         </style>
 
-         <div id="graph-container"></div>
 
-       </div>';
 
-       echo "<script>
 
-       // generate a random graph
 
-       var i,
 
-           s,
 
-           img,
 
-           N = 10,
 
-           E = 50,
 
-           g = {
 
-             nodes: [],
 
-             edges: []
 
-           },
 
-           colors = [
 
-             '#617db4',
 
-             '#668f3c',
 
-             '#c6583e',
 
-             '#b956af'
 
-         ];";
 
-       
 
-         $this->print_nodes_graph($course, $sections, $mods, $modnames, $modnamesused);
 
-       echo "
 
-       
 
-       /*for (i = 0; i < E; i++) {
 
-         g.edges.push({
 
-           id: 'e' + i,
 
-           source: 'n' + (Math.random() * N | 0),
 
-           target: 'n' + (Math.random() * N | 0),
 
-           type: ['arrow'][0],
 
-           size: 1,
 
-           color: '#bdbdbd'
 
-         });
 
-       }*/
 
-       
 
-       s = new sigma({
 
-         graph: g,
 
-         renderer: {
 
-           // IMPORTANT:
 
-           // This works only with the canvas renderer, so the
 
-           // renderer type set as canvas is necessary here.
 
-           container: document.getElementById('graph-container'),
 
-           type: 'canvas'
 
-         },
 
-         settings: {
 
-           minNodeSize: 1,
 
-           maxNodeSize: 10,
 
-           minEdgeSize: 0.1,
 
-           maxEdgeSize: 2,
 
-           enableEdgeHovering: true,
 
-           edgeHoverSizeRatio: 2
 
-         }
 
-       });
 
-       </script>
 
-       ";
 
-     }
 
-     private function get_js_dependencies_sigma_graph() {
 
-         global $CFG;
 
-         $dirjs = $CFG->wwwroot . '/course/format/competencegraph/js/sigma';
 
-         $o = '<script src="'.$dirjs.'/src/sigma.core.js"></script>
 
-         <script src="'.$dirjs.'/src/conrad.js"></script>
 
-         <script src="'.$dirjs.'/src/utils/sigma.utils.js"></script>
 
-         <script src="'.$dirjs.'/src/utils/sigma.polyfills.js"></script>
 
-         <script src="'.$dirjs.'/src/sigma.settings.js"></script>
 
-         <script src="'.$dirjs.'/src/classes/sigma.classes.dispatcher.js"></script>
 
-         <script src="'.$dirjs.'/src/classes/sigma.classes.configurable.js"></script>
 
-         <script src="'.$dirjs.'/src/classes/sigma.classes.graph.js"></script>
 
-         <script src="'.$dirjs.'/src/classes/sigma.classes.camera.js"></script>
 
-         <script src="'.$dirjs.'/src/classes/sigma.classes.quad.js"></script>
 
-         <script src="'.$dirjs.'/src/classes/sigma.classes.edgequad.js"></script>
 
-         <script src="'.$dirjs.'/src/captors/sigma.captors.mouse.js"></script>
 
-         <script src="'.$dirjs.'/src/captors/sigma.captors.touch.js"></script>
 
-         <script src="'.$dirjs.'/src/renderers/sigma.renderers.canvas.js"></script>
 
-         <script src="'.$dirjs.'/src/renderers/sigma.renderers.webgl.js"></script>
 
-         <script src="'.$dirjs.'/src/renderers/sigma.renderers.svg.js"></script>
 
-         <script src="'.$dirjs.'/src/renderers/sigma.renderers.def.js"></script>
 
-         <script src="'.$dirjs.'/src/renderers/webgl/sigma.webgl.nodes.def.js"></script>
 
-         <script src="'.$dirjs.'/src/renderers/webgl/sigma.webgl.nodes.fast.js"></script>
 
-         <script src="'.$dirjs.'/src/renderers/webgl/sigma.webgl.edges.def.js"></script>
 
-         <script src="'.$dirjs.'/src/renderers/webgl/sigma.webgl.edges.fast.js"></script>
 
-         <script src="'.$dirjs.'/src/renderers/webgl/sigma.webgl.edges.arrow.js"></script>
 
-         <script src="'.$dirjs.'/src/renderers/canvas/sigma.canvas.labels.def.js"></script>
 
-         <script src="'.$dirjs.'/src/renderers/canvas/sigma.canvas.hovers.def.js"></script>
 
-         <script src="'.$dirjs.'/src/renderers/canvas/sigma.canvas.nodes.def.js"></script>
 
-         <script src="'.$dirjs.'/src/renderers/canvas/sigma.canvas.edges.def.js"></script>
 
-         <script src="'.$dirjs.'/src/renderers/canvas/sigma.canvas.edges.curve.js"></script>
 
-         <script src="'.$dirjs.'/src/renderers/canvas/sigma.canvas.edges.arrow.js"></script>
 
-         <script src="'.$dirjs.'/src/renderers/canvas/sigma.canvas.edges.curvedArrow.js"></script>
 
-         <script src="'.$dirjs.'/src/renderers/canvas/sigma.canvas.edgehovers.def.js"></script>
 
-         <script src="'.$dirjs.'/src/renderers/canvas/sigma.canvas.edgehovers.curve.js"></script>
 
-         <script src="'.$dirjs.'/src/renderers/canvas/sigma.canvas.edgehovers.arrow.js"></script>
 
-         <script src="'.$dirjs.'/src/renderers/canvas/sigma.canvas.edgehovers.curvedArrow.js"></script>
 
-         <script src="'.$dirjs.'/src/renderers/canvas/sigma.canvas.extremities.def.js"></script>
 
-         <script src="'.$dirjs.'/src/renderers/svg/sigma.svg.utils.js"></script>
 
-         <script src="'.$dirjs.'/src/renderers/svg/sigma.svg.nodes.def.js"></script>
 
-         <script src="'.$dirjs.'/src/renderers/svg/sigma.svg.edges.def.js"></script>
 
-         <script src="'.$dirjs.'/src/renderers/svg/sigma.svg.edges.curve.js"></script>
 
-         <script src="'.$dirjs.'/src/renderers/svg/sigma.svg.labels.def.js"></script>
 
-         <script src="'.$dirjs.'/src/renderers/svg/sigma.svg.hovers.def.js"></script>
 
-         <script src="'.$dirjs.'/src/middlewares/sigma.middlewares.rescale.js"></script>
 
-         <script src="'.$dirjs.'/src/middlewares/sigma.middlewares.copy.js"></script>
 
-         <script src="'.$dirjs.'/src/misc/sigma.misc.animation.js"></script>
 
-         <script src="'.$dirjs.'/src/misc/sigma.misc.bindEvents.js"></script>
 
-         <script src="'.$dirjs.'/src/misc/sigma.misc.bindDOMEvents.js"></script>
 
-         <script src="'.$dirjs.'/src/misc/sigma.misc.drawHovers.js"></script>
 
-         <!-- END SIGMA IMPORTS -->
 
-         <script src="'.$dirjs.'/sigma.renderers.customEdgeShapes/sigma.canvas.edges.dashed.js"></script>
 
-         <script src="'.$dirjs.'/sigma.renderers.customEdgeShapes/sigma.canvas.edges.dotted.js"></script>
 
-         <script src="'.$dirjs.'/sigma.renderers.customEdgeShapes/sigma.canvas.edges.parallel.js"></script>
 
-         <script src="'.$dirjs.'/sigma.renderers.customEdgeShapes/sigma.canvas.edges.tapered.js"></script>
 
-         <script src="'.$dirjs.'/sigma.renderers.customEdgeShapes/sigma.canvas.edgehovers.dashed.js"></script>
 
-         <script src="'.$dirjs.'/sigma.renderers.customEdgeShapes/sigma.canvas.edgehovers.dotted.js"></script>
 
-         <script src="'.$dirjs.'/sigma.renderers.customEdgeShapes/sigma.canvas.edgehovers.parallel.js"></script>
 
-         <script src="'.$dirjs.'/sigma.renderers.customEdgeShapes/sigma.canvas.edgehovers.tapered.js"></script>';
 
-         return $o;
 
-     }
 
- }
 
 
  |