\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;
}
}
}
?>