[ Index ]

PHP Cross Reference of Moodle 1.9.3 [Build 15-Oct-2008]

title

Body

[close]

/lib/ajax/ -> ajaxlib.php (source)

   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  ?>


Generated: Wed Jan 14 11:33:29 2009 Cross-referenced by PHPXref 0.7