| [ Index ] |
PHP Cross Reference of Moodle 1.9.3 [Build 15-Oct-2008] |
[Summary view] [Print] [Text view]
1 <?php 2 /** 3 * Library functions for using AJAX with Moodle. 4 */ 5 6 /** 7 * Get the path to a JavaScript library. 8 * @param $libname - the name of the library whose path we need. 9 * @return string 10 */ 11 function ajax_get_lib($libname) { 12 13 global $CFG, $HTTPSPAGEREQUIRED; 14 $libpath = ''; 15 16 $translatelist = array( 17 'yui_yahoo' => '/lib/yui/yahoo/yahoo-min.js', 18 'yui_animation' => '/lib/yui/animation/animation-min.js', 19 'yui_autocomplete' => '/lib/yui/autocomplete/autocomplete-min.js', 20 'yui_button' => '/lib/yui/button/button-min.js', 21 'yui_calendar' => '/lib/yui/calendar/calendar-min.js', 22 'yui_charts' => '/lib/yui/charts/charts-experimental-min.js', 23 'yui_colorpicker' => '/lib/yui/colorpicker/colorpicker-min.js', 24 'yui_connection' => '/lib/yui/connection/connection-min.js', 25 'yui_container' => '/lib/yui/container/container-min.js', 26 'yui_cookie' => '/lib/yui/cookie/cookie-min.js', 27 'yui_datasource' => '/lib/yui/datasource/datasource-min.js', 28 'yui_datatable' => '/lib/yui/datatable/datatable-min.js', 29 'yui_dom' => '/lib/yui/dom/dom-min.js', 30 'yui_dom-event' => '/lib/yui/yahoo-dom-event/yahoo-dom-event.js', 31 'yui_dragdrop' => '/lib/yui/dragdrop/dragdrop-min.js', 32 'yui_editor' => '/lib/yui/editor/editor-min.js', 33 'yui_element' => '/lib/yui/element/element-beta-min.js', 34 'yui_event' => '/lib/yui/event/event-min.js', 35 'yui_get' => '/lib/yui/get/get-min.js', 36 'yui_history' => '/lib/yui/history/history-min.js', 37 'yui_imagecropper' => '/lib/yui/imagecropper/imagecropper-beta-min.js', 38 'yui_imageloader' => '/lib/yui/imageloader/imageloader-min.js', 39 'yui_json' => '/lib/yui/json/json-min.js', 40 'yui_layout' => '/lib/yui/layout/layout-min.js', 41 'yui_logger' => '/lib/yui/logger/logger-min.js', 42 'yui_menu' => '/lib/yui/menu/menu-min.js', 43 'yui_profiler' => '/lib/yui/profiler/profiler-min.js', 44 'yui_profilerviewer' => '/lib/yui/profilerviewer/profilerviewer-beta-min.js', 45 'yui_resize' => '/lib/yui/resize/resize-min.js', 46 'yui_selector' => '/lib/yui/selector/selector-beta-min.js', 47 'yui_simpleeditor' => '/lib/yui/editor/simpleeditor-min.js', 48 'yui_slider' => '/lib/yui/slider/slider-min.js', 49 'yui_tabview' => '/lib/yui/tabview/tabview-min.js', 50 'yui_treeview' => '/lib/yui/treeview/treeview-min.js', 51 'yui_uploader' => '/lib/yui/uploader/uploader-experimental-min.js', 52 'yui_utilities' => '/lib/yui/utilities/utilities.js', 53 'yui_yuiloader' => '/lib/yui/yuiloader/yuiloader-min.js', 54 'yui_yuitest' => '/lib/yui/yuitest/yuitest-min.js', 55 'ajaxcourse_blocks' => '/lib/ajax/block_classes.js', 56 'ajaxcourse_sections' => '/lib/ajax/section_classes.js', 57 'ajaxcourse' => '/lib/ajax/ajaxcourse.js' 58 ); 59 60 if (!empty($HTTPSPAGEREQUIRED)) { 61 $wwwroot = $CFG->httpswwwroot; 62 } else { 63 $wwwroot = $CFG->wwwroot; 64 } 65 66 if (array_key_exists($libname, $translatelist)) { 67 $libpath = $wwwroot . $translatelist[$libname]; 68 } else { 69 $libpath = $libname; 70 } 71 72 $testpath = str_replace($wwwroot, $CFG->dirroot, $libpath); 73 if (!file_exists($testpath)) { 74 error('require_js: '.$libpath.' - file not found.'); 75 } 76 77 return $libpath; 78 } 79 80 81 /** 82 * Returns whether ajax is enabled/allowed or not. 83 */ 84 function ajaxenabled($browsers = array()) { 85 86 global $CFG, $USER; 87 88 if (!empty($browsers)) { 89 $valid = false; 90 foreach ($browsers as $brand => $version) { 91 if (check_browser_version($brand, $version)) { 92 $valid = true; 93 } 94 } 95 96 if (!$valid) { 97 return false; 98 } 99 } 100 101 $ie = check_browser_version('MSIE', 6.0); 102 $ff = check_browser_version('Gecko', 20051106); 103 $op = check_browser_version('Opera', 9.0); 104 $sa = check_browser_version('Safari', 412); 105 106 if (!$ie && !$ff && !$op && !$sa) { 107 /** @see http://en.wikipedia.org/wiki/User_agent */ 108 // Gecko build 20051107 is what is in Firefox 1.5. 109 // We still have issues with AJAX in other browsers. 110 return false; 111 } 112 113 if (!empty($CFG->enableajax) && (!empty($USER->ajax) || !isloggedin())) { 114 return true; 115 } else { 116 return false; 117 } 118 } 119 120 121 /** 122 * Used to create view of document to be passed to JavaScript on pageload. 123 * We use this class to pass data from PHP to JavaScript. 124 */ 125 class jsportal { 126 127 var $currentblocksection = null; 128 var $blocks = array(); 129 130 131 /** 132 * Takes id of block and adds it 133 */ 134 function block_add($id, $hidden=false){ 135 $hidden_binary = 0; 136 137 if ($hidden) { 138 $hidden_binary = 1; 139 } 140 $this->blocks[count($this->blocks)] = array($this->currentblocksection, $id, $hidden_binary); 141 } 142 143 144 /** 145 * Prints the JavaScript code needed to set up AJAX for the course. 146 */ 147 function print_javascript($courseid, $return=false) { 148 global $CFG, $USER; 149 150 $blocksoutput = $output = ''; 151 for ($i=0; $i<count($this->blocks); $i++) { 152 $blocksoutput .= "['".$this->blocks[$i][0]."', 153 '".$this->blocks[$i][1]."', 154 '".$this->blocks[$i][2]."']"; 155 156 if ($i != (count($this->blocks) - 1)) { 157 $blocksoutput .= ','; 158 } 159 } 160 $output .= "<script type=\"text/javascript\">\n"; 161 $output .= " main.portal.id = ".$courseid.";\n"; 162 $output .= " main.portal.blocks = new Array(".$blocksoutput.");\n"; 163 $output .= " main.portal.strings['wwwroot']='".$CFG->wwwroot."';\n"; 164 $output .= " main.portal.strings['pixpath']='".$CFG->pixpath."';\n"; 165 $output .= " main.portal.strings['marker']='".get_string('markthistopic', '', '_var_')."';\n"; 166 $output .= " main.portal.strings['marked']='".get_string('markedthistopic', '', '_var_')."';\n"; 167 $output .= " main.portal.strings['hide']='".get_string('hide')."';\n"; 168 $output .= " main.portal.strings['hidesection']='".get_string('hidesection', '', '_var_')."';\n"; 169 $output .= " main.portal.strings['show']='".get_string('show')."';\n"; 170 $output .= " main.portal.strings['delete']='".get_string('delete')."';\n"; 171 $output .= " main.portal.strings['move']='".get_string('move')."';\n"; 172 $output .= " main.portal.strings['movesection']='".get_string('movesection', '', '_var_')."';\n"; 173 $output .= " main.portal.strings['moveleft']='".get_string('moveleft')."';\n"; 174 $output .= " main.portal.strings['moveright']='".get_string('moveright')."';\n"; 175 $output .= " main.portal.strings['update']='".get_string('update')."';\n"; 176 $output .= " main.portal.strings['groupsnone']='".get_string('groupsnone')."';\n"; 177 $output .= " main.portal.strings['groupsseparate']='".get_string('groupsseparate')."';\n"; 178 $output .= " main.portal.strings['groupsvisible']='".get_string('groupsvisible')."';\n"; 179 $output .= " main.portal.strings['clicktochange']='".get_string('clicktochange')."';\n"; 180 $output .= " main.portal.strings['deletecheck']='".get_string('deletecheck','','_var_')."';\n"; 181 $output .= " main.portal.strings['resource']='".get_string('resource')."';\n"; 182 $output .= " main.portal.strings['activity']='".get_string('activity')."';\n"; 183 $output .= " main.portal.strings['sesskey']='".$USER->sesskey."';\n"; 184 $output .= " onloadobj.load();\n"; 185 $output .= " main.process_blocks();\n"; 186 $output .= "</script>"; 187 if ($return) { 188 return $output; 189 } else { 190 echo $output; 191 } 192 } 193 194 } 195 196 ?>
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
| Generated: Wed Jan 14 11:33:29 2009 | Cross-referenced by PHPXref 0.7 |