\n"; if ($loadlib == $CFG->wwwroot.'/lib/yui/logger/logger-min.js') { // Special case, we need the CSS too. $output .= 'wwwroot}/lib/yui/logger/assets/logger.css\" />\n"; } } return $output; } } /** * Get the path to a JavaScript library. * @param $libname - the name of the library whose path we need. * @return string */ function ajax_get_lib($libname) { global $CFG; $libpath = ''; $translatelist = array( 'yui_yahoo' => '/lib/yui/yahoo/yahoo-min.js', 'yui_animation' => '/lib/yui/animation/animation-min.js', 'yui_autocomplete' => '/lib/yui/autocomplete/autocomplete-min.js', 'yui_calendar' => '/lib/yui/calendar/calendar-min.js', 'yui_connection' => '/lib/yui/connection/connection-min.js', 'yui_container' => '/lib/yui/container/container-min.js', 'yui_dom' => '/lib/yui/dom/dom-min.js', 'yui_dom-event' => '/lib/yui/yahoo-dom-event/yahoo-dom-event.js', 'yui_dragdrop' => '/lib/yui/dragdrop/dragdrop-min.js', 'yui_event' => '/lib/yui/event/event-min.js', 'yui_logger' => '/lib/yui/logger/logger-min.js', 'yui_menu' => '/lib/yui/menu/menu-min.js', 'yui_tabview' => '/lib/yui/tabview/tabview-min.js', 'yui_treeview' => '/lib/yui/treeview/treeview-min.js', 'yui_slider' => '/lib/yui/slider/slider-min.js', 'yui_utilities' => '/lib/yui/utilities/utilities.js', 'ajaxcourse_blocks' => '/lib/ajax/block_classes.js', 'ajaxcourse_sections' => '/lib/ajax/section_classes.js', 'ajaxcourse' => '/lib/ajax/ajaxcourse.js' ); if (array_key_exists($libname, $translatelist)) { $libpath = $CFG->wwwroot . $translatelist[$libname]; } else { $libpath = $libname; } $testpath = str_replace($CFG->wwwroot, $CFG->dirroot, $libpath); if (!file_exists($testpath)) { error('require_js: '.$libpath.' - file not found.'); } return $libpath; } /** * Returns whether ajax is enabled/allowed or not. */ function ajaxenabled($browsers = array()) { global $CFG, $USER; if (!empty($browsers)) { $valid = false; foreach ($browsers as $brand => $version) { if (check_browser_version($brand, $version)) { $valid = true; } } if (!$valid) { return false; } } $ie = check_browser_version('MSIE', 6.0); $ff = check_browser_version('Gecko', 20051106); $op = check_browser_version('Opera', 9.0); $sa = check_browser_version('Safari', 412); if (!$ie && !$ff && !$op && !$sa) { /** @see http://en.wikipedia.org/wiki/User_agent */ // Gecko build 20051107 is what is in Firefox 1.5. // We still have issues with AJAX in other browsers. return false; } if (!empty($CFG->enableajax) && (!empty($USER->ajax) || !isloggedin())) { return true; } else { return false; } } /** * Used to create view of document to be passed to JavaScript on pageload. * We use this class to pass data from PHP to JavaScript. */ class jsportal { var $currentblocksection = null; var $blocks = array(); /** * Takes id of block and adds it */ function block_add($id, $hidden=false){ $hidden_binary = 0; if ($hidden) { $hidden_binary = 1; } $this->blocks[count($this->blocks)] = array($this->currentblocksection, $id, $hidden_binary); } /** * Prints the JavaScript code needed to set up AJAX for the course. */ function print_javascript($courseid, $return=false) { global $CFG, $USER; $blocksoutput = $output = ''; for ($i=0; $iblocks); $i++) { $blocksoutput .= "['".$this->blocks[$i][0]."', '".$this->blocks[$i][1]."', '".$this->blocks[$i][2]."']"; if ($i != (count($this->blocks) - 1)) { $blocksoutput .= ','; } } $output .= ""; if ($return) { return $output; } else { echo $output; } } } ?>