[ Index ]

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

title

Body

[close]

/group/ -> clientlib.js (source)

   1  /**
   2   * Client-side JavaScript for group management interface.
   3   * @author vy-shane AT moodle.com 
   4   * @license http://www.gnu.org/copyleft/gpl.html GNU Public License
   5   * @package groups
   6   */
   7  
   8  
   9  /**
  10   * Class UpdatableGroupsCombo
  11   */
  12  function UpdatableGroupsCombo(wwwRoot, courseId) {
  13      this.wwwRoot = wwwRoot;
  14      this.courseId = courseId;
  15  
  16      this.connectCallback = {
  17  
  18          success: function(o) {
  19              if (o.responseText !== undefined) {
  20                  var groupsComboEl = document.getElementById("groups");
  21                  var membersComboEl = document.getElementById("members");
  22  
  23                  if (membersComboEl) {
  24                      // Clear the members list box.
  25                      while (membersComboEl.firstChild) {
  26                          membersComboEl.removeChild(membersComboEl.firstChild);
  27                      }
  28                  }
  29  
  30                  if (groupsComboEl && o.responseText) {
  31                      var groups = eval("("+o.responseText+")");
  32  
  33                      // Populate the groups list box.
  34                      for (var i=0; i<groups.length; i++) {
  35                          var optionEl = document.createElement("option");
  36                          optionEl.setAttribute("value", groups[i].id);
  37                          optionEl.title = groups[i].name;
  38                          optionEl.innerHTML = groups[i].name;
  39                          groupsComboEl.appendChild(optionEl);
  40                      }
  41                  }
  42              }
  43              // Remove the loader gif image.
  44              removeLoaderImgs("groupsloader", "groupslabel");
  45          },
  46  
  47          failure: function(o) {
  48              removeLoaderImgs("membersloader", "memberslabel");
  49              this.currentTransId = null;
  50          }
  51  
  52      };
  53  
  54      // Add onchange event to groups list box.
  55      // Okay, this is not working in IE. The onchange is never fired...
  56      // I'm hard coding the onchange in ../index.php. Not ideal, but it works
  57      // then. vyshane AT moodle DOT com.
  58      /*
  59      groupsComboEl = document.getElementById("groups");
  60      if (groupsComboEl) {
  61          groupsComboEl.setAttribute("onchange", "membersCombo.refreshMembers(this.options[this.selectedIndex].value);");
  62      }
  63      */
  64  
  65      // Hide the updategroups input since AJAX will take care of this.
  66      YAHOO.util.Dom.setStyle("updategroups", "display", "none");
  67  }
  68  
  69  
  70  /**
  71   * Class UpdatableMembersCombo
  72   */
  73  function UpdatableMembersCombo(wwwRoot, courseId) {
  74      this.wwwRoot = wwwRoot;
  75      this.courseId = courseId;
  76  
  77      this.connectCallback = {
  78          success: function(o) {
  79  
  80              if (o.responseText !== undefined) {
  81                  var selectEl = document.getElementById("members");
  82                  if (selectEl && o.responseText) {
  83                      var roles = eval("("+o.responseText+")");
  84  
  85                      // Clear the members list box.
  86                      if (selectEl) {
  87                          while (selectEl.firstChild) {
  88                              selectEl.removeChild(selectEl.firstChild);
  89                          }
  90                      }
  91                      // Populate the members list box.
  92                      for (var i=0; i<roles.length; i++) {
  93                          var optgroupEl = document.createElement("optgroup");
  94                          optgroupEl.setAttribute("label",roles[i].name);
  95  
  96                          for(var j=0; j<roles[i].users.length; j++) {
  97                              var optionEl = document.createElement("option");
  98                              optionEl.setAttribute("value", roles[i].users[j].id);
  99                              optionEl.title = roles[i].users[j].name;
 100                              optionEl.innerHTML = roles[i].users[j].name;
 101                              optgroupEl.appendChild(optionEl);
 102                          }
 103                          selectEl.appendChild(optgroupEl);
 104                      }
 105                  }
 106              }
 107              // Remove the loader gif image.
 108              removeLoaderImgs("membersloader", "memberslabel");
 109          },
 110  
 111          failure: function(o) {
 112              removeLoaderImgs("membersloader", "memberslabel");
 113          }
 114  
 115      };
 116  
 117      // Hide the updatemembers input since AJAX will take care of this.
 118      YAHOO.util.Dom.setStyle("updatemembers", "display", "none");
 119  }
 120  
 121  /**
 122   * When a group is selected, we need to update the members.
 123   * The Add/Remove Users button also needs to be disabled/enabled
 124   * depending on whether or not a group is selected
 125   */
 126  UpdatableMembersCombo.prototype.refreshMembers = function (groupId) {
 127      // Add the loader gif image.
 128      createLoaderImg("membersloader", "memberslabel", this.wwwRoot);
 129   
 130      // Update the label.
 131      var selectEl = document.getElementById("groups");
 132      var spanEl = document.getElementById("thegroup");
 133      if (selectEl && selectEl.selectedIndex >= 0) {
 134          spanEl.innerHTML = selectEl.options[selectEl.selectedIndex].title;
 135      }
 136  
 137      // Clear the members list box.
 138      selectEl = document.getElementById("members");
 139      if (selectEl) {
 140          while (selectEl.firstChild) {
 141              selectEl.removeChild(selectEl.firstChild);
 142          }
 143      }
 144      
 145      document.getElementById("showaddmembersform").disabled = false;
 146      document.getElementById("showeditgroupsettingsform").disabled = false;
 147      document.getElementById("deletegroup").disabled = false;
 148      var sUrl = this.wwwRoot+"/group/index.php?id="+this.courseId+"&group="+groupId+"&act_ajax_getmembersingroup";
 149      YAHOO.util.Connect.asyncRequest("GET", sUrl, this.connectCallback, null); 
 150  };
 151  
 152  
 153  
 154  var createLoaderImg = function (elClass, parentId, wwwRoot) {
 155      var parentEl = document.getElementById(parentId);
 156      if (!parentEl) {
 157          return false;
 158      }
 159      if (document.getElementById("loaderImg")) {
 160          // A loader image already exists.
 161          return false;
 162      }
 163      var loadingImg = document.createElement("img");
 164  
 165      loadingImg.setAttribute("src", wwwRoot+"/pix/i/ajaxloader.gif");
 166      loadingImg.setAttribute("class", elClass);
 167      loadingImg.setAttribute("alt", "Loading");
 168      loadingImg.setAttribute("id", "loaderImg");
 169      parentEl.appendChild(loadingImg);
 170  
 171      return true;
 172  };
 173  
 174  
 175  var removeLoaderImgs = function (elClass, parentId) {
 176      var parentEl = document.getElementById(parentId);
 177      if (parentEl) {
 178          var loader = document.getElementById("loaderImg");
 179          parentEl.removeChild(loader);
 180      }
 181  };


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