[ Index ]
 

Code source de Seagull 0.6.1

Accédez au Source d'autres logiciels libresSoutenez Angelica Josefina !

title

Body

[fermer]

/js/ -> mainAdmin.js (source)

   1  /**
   2      * REMINDER
   3      * Progressively change functions so they use document.getElementById() func
   4      * instead of document.<form name>
   5      * as forms must not have a "name" value according to xHTML STRICT DOCTYPE
   6      */
   7  
   8  /**
   9      * Errors checking
  10      * Searching for <span class="error">,
  11      *  Modifying parent node className
  12      *  Setting appropriate left margin to other fields
  13      */
  14  function formErrorCheck()
  15  {
  16      var labels = document.getElementsByTagName("label");
  17      if (labels) {
  18          var labelWidth = labels[0].offsetWidth;
  19          if (document.all && !window.sidebar) {
  20             //  this check should recognise only IE
  21             labelWidth += 3;
  22          }
  23      }
  24      for (i=0; i<document.getElementsByTagName("form").length; i++) {
  25          var errorSpans = document.forms[i].getElementsByTagName("span");
  26          if (errorSpans) {
  27              for (j=0; j<errorSpans.length; j++) {
  28                  if (errorSpans[j].className == "error") {
  29                      var parentObject = errorSpans[j].parentNode;
  30                      parentObject.className += " errorBlock";
  31                      for (k=0; k<parentObject.childNodes.length; k++) {
  32                          if (parentObject.childNodes[k].nodeName == "INPUT"
  33                              || parentObject.childNodes[k].nodeName == "SELECT") {
  34                              parentObject.childNodes[k].style.marginLeft = labelWidth +"px";
  35                          }
  36                      }
  37                      //  check if this node is in a tab
  38                      if (field = parentObject.parentNode) {
  39                          if (field.className == "options") {
  40                              var tabId = field.id;
  41                              var tabs = document.getElementById("optionsLinks");
  42                              var tabElements = tabs.getElementsByTagName("li");
  43                              for (l=0; l<tabElements.length; l++) {
  44                                  if (tabElements[l].className.match(new RegExp(tabId+"\\b"))) {
  45                                      var errorTab = tabElements[l].childNodes;
  46                                      errorTab[0].className = "error";
  47                                      var thisForm = document.forms[0].id;
  48                                      showSelectedOptions(thisForm,tabId);
  49                                  }
  50                              }
  51                          }
  52                      }
  53                  }
  54              }
  55          }
  56      }
  57  }
  58  /**
  59      * Allows to create/modify a field value within a form before submitting it.
  60      * Launches the above function depending on the status of a trigger checkbox
  61  
  62      * @param   string   formName Obviously the form name you want to submit
  63      * @param   string   fieldToUpdate The element name you want to modify
  64      * @param   string   fieldValue
  65      * @param   bool      doCreate If you want to create a hidden input element instead of modifying an existing one
  66      *
  67      * @return  void Submit the form
  68      */
  69  function formSubmit(formId, fieldName, fieldValue, doCreate)
  70  {
  71      var selectedForm = document.getElementById(formId);
  72      if (typeof doCreate != "undefined" && doCreate == 1) {
  73          newInput = document.createElement("input");
  74          newInput.setAttribute('name', fieldName);
  75          newInput.setAttribute('value', fieldValue);
  76          newInput.setAttribute('type', 'hidden');
  77          selectedForm.appendChild(newInput);
  78      } else {
  79          if (fieldName) {
  80              var elm = selectedForm.elements[fieldName];
  81              elm.value = fieldValue;
  82          }
  83      }
  84      selectedForm.submit();
  85  }
  86  
  87  //  Allows to reset a form
  88  function formReset(formId)
  89  {
  90      var selectedForm = document.getElementById(formId);
  91      if (!selectedForm) {
  92          return;
  93      }
  94      selectedForm.reset();
  95  }
  96  
  97  //  Allows to show/hide a block of options (defined within a fieldset) in any form
  98  function showSelectedOptions(formId, option)
  99  {
 100      var selectedForm = document.getElementById(formId);
 101      if (!selectedForm) return true;
 102      var elms = selectedForm.getElementsByTagName("fieldset");
 103      for (i=0; i<elms.length; i++) {
 104          if (elms[i].className.match(new RegExp("options\\b"))) {
 105              if (elms[i].id == option) {
 106                  elms[i].style.display = "block";
 107              } else {
 108                  elms[i].style.display = "none";
 109              }
 110          }
 111      }
 112  
 113      var items = document.getElementById("optionsLinks").getElementsByTagName("li");
 114      for (i=0; i<items.length; i++) {
 115          if (items[i].className.match(new RegExp(" current\\b"))) {
 116              items[i].className = items[i].className.replace(new RegExp(" current\\b"), "");
 117          }
 118          if (items[i].className.match(new RegExp(option +"\\b"))) {
 119              items[i].className +=" current";
 120          }
 121      }
 122  }
 123  
 124  //  Mandatory function when using showConfigOptions() above
 125  //  Dynamically creates links to display selected block of options
 126  function createAvailOptionsLinks(formId, titleTag)
 127  {
 128      var selectedForm = document.getElementById(formId);
 129      if (typeof titleTag == "undefined") var titleTag = 'h3';
 130      if (!selectedForm) return true;
 131      if (!document.getElementById("optionsLinks")) {
 132          alert('The Div container with id set to "optionsLinks" wasn\'t found' );
 133          return true;
 134      }
 135      var elms = selectedForm.getElementsByTagName("fieldset");
 136      var optionsLinks = '<ul>';
 137      for (i=0; i<elms.length; i++) {
 138          if (elms[i].className.match(new RegExp("options\\b"))) {
 139              optionsLinks += "<li class=\""+elms[i].id+"\"><a href='javascript:showSelectedOptions(\""+formId +"\",\""+elms[i].id +"\")'>"+elms[i].getElementsByTagName(titleTag)[0].innerHTML +"</a></li>";
 140          }
 141      }
 142      optionsLinks += "</ul>";
 143      document.getElementById("optionsLinks").innerHTML += optionsLinks;
 144  }
 145  
 146  function relocate_select(obj, value){
 147      if( obj ){
 148          for( i=0; i<obj.options.length; i++ ){
 149              if( obj.options[i].value==value )
 150                  obj.options[i].selected = true;
 151              else
 152                  obj.options[i].selected = false;
 153          }
 154      }
 155  
 156  }
 157  
 158  function orderItems(down)
 159  {
 160      sl = document.frmBlockMgr.item.selectedIndex;
 161      if (sl != -1) {
 162          oText = document.frmBlockMgr.item.options[sl].text;
 163          oValue = document.frmBlockMgr.item.options[sl].value;
 164          if (sl > 0 && down == 0) {
 165              document.frmBlockMgr.item.options[sl].text = document.frmBlockMgr.item.options[sl-1].text;
 166              document.frmBlockMgr.item.options[sl].value = document.frmBlockMgr.item.options[sl-1].value;
 167              document.frmBlockMgr.item.options[sl-1].text = oText;
 168              document.frmBlockMgr.item.options[sl-1].value = oValue;
 169              document.frmBlockMgr.item.selectedIndex--;
 170          } else if (sl < document.frmBlockMgr.item.length-1 && down == 1) {
 171              document.frmBlockMgr.item.options[sl].text = document.frmBlockMgr.item.options[sl+1].text;
 172              document.frmBlockMgr.item.options[sl].value = document.frmBlockMgr.item.options[sl+1].value;
 173              document.frmBlockMgr.item.options[sl+1].text = oText;
 174              document.frmBlockMgr.item.options[sl+1].value = oValue;
 175              document.frmBlockMgr.item.selectedIndex++;
 176          }
 177      } else {
 178          alert("you must select an item to move");
 179      }
 180  
 181      return false;
 182  }
 183  
 184  function doSubBlock()
 185  {
 186      blocksVal = "";
 187      for (i=0;i<document.frmBlockMgr.item.length;i++) {
 188          if (i!=0) { blocksVal += ","; }
 189          blocksVal += document.frmBlockMgr.item.options[i].value;
 190      }
 191      document.frmBlockMgr["_items"].value = blocksVal;
 192  
 193      return true;
 194  }
 195  
 196  //  same fns again for faq & section managers!
 197  function orderModule(down)
 198  {
 199      sl = document.fm.item.selectedIndex;
 200      if (sl != -1) {
 201       oText = document.fm.item.options[sl].text;
 202       oValue = document.fm.item.options[sl].value;
 203       if (sl > 0 && down == 0) {
 204        document.fm.item.options[sl].text = document.fm.item.options[sl-1].text;
 205        document.fm.item.options[sl].value = document.fm.item.options[sl-1].value;
 206        document.fm.item.options[sl-1].text = oText;
 207        document.fm.item.options[sl-1].value = oValue;
 208        document.fm.item.selectedIndex--;
 209       } else if (sl < document.fm.item.length-1 && down == 1) {
 210        document.fm.item.options[sl].text = document.fm.item.options[sl+1].text;
 211        document.fm.item.options[sl].value = document.fm.item.options[sl+1].value;
 212        document.fm.item.options[sl+1].text = oText;
 213        document.fm.item.options[sl+1].value = oValue;
 214        document.fm.item.selectedIndex++;
 215       }
 216      } else {
 217       alert("you must select an item to move");
 218      }
 219      return false;
 220  }
 221  
 222  function doSub()
 223  {
 224      val = '';
 225      for (i=0;i<document.fm.item.length;i++) {
 226          if (i!=0) {
 227              val += ",";
 228          }
 229          val += document.fm.item.options[i].value;
 230      }
 231      document.fm[".items"].value = val;
 232      return true;
 233  }
 234  
 235  var delimiter = ":";
 236  
 237  function MoveOption(MoveFrom, MoveTo, ToDo)
 238  {
 239    var SelectFrom = eval('document.main_form.'+MoveFrom);
 240    var SelectTo = eval('document.main_form.'+MoveTo);
 241    var SelectedIndex = SelectFrom.options.selectedIndex;
 242    var container;
 243    if (ToDo=='Add') {
 244      container=eval('document.main_form.' + ToDo + MoveTo);
 245    }
 246    if (ToDo=='Remove') {
 247      container=eval('document.main_form.' + ToDo + MoveFrom);
 248    }
 249    if (SelectedIndex == -1) {
 250      alert("Please select a permission(s) to move.");
 251    } else {
 252      for (i=0; i<SelectFrom.options.length; i ++) {
 253        if (SelectFrom.options[i].selected) {
 254          var name = SelectFrom.options[i].text;
 255          var ID = SelectFrom.options[i].value;
 256          SelectFrom.options[i] = null;
 257          SelectTo.options[SelectTo.options.length]= new Option (name,ID);
 258          i=i-1;
 259          if (ToDo=='Add'||ToDo=='Remove') {
 260            container.value=container.value+name+'^' + ID + delimiter;
 261          }
 262        }
 263      }
 264    }
 265  }
 266  
 267  function checkDuplicates(AddListContainer, RemoveListContainer)
 268  {
 269      var AddList = eval('document.main_form.'+AddListContainer);
 270      var RemoveList = eval('document.main_form.'+RemoveListContainer);
 271      var TempAddList = AddList.value;
 272      var TempRemoveList = RemoveList.value;
 273      if (TempAddList>''&&TempRemoveList>'') {
 274          TempAddList = TempAddList.substring(0,TempAddList.length-1);
 275          TempRemoveList = TempRemoveList.substring(0,TempRemoveList.length-1);
 276          var AddArray = TempAddList.split(delimiter);
 277          var RemoveArray = TempRemoveList.split(delimiter);
 278          for (i=0; i<AddArray.length; i++) {
 279            for (j=0; j<RemoveArray.length; j++) {
 280              if (AddArray[i]==RemoveArray[j]) {
 281                AddArray[i]='';
 282                RemoveArray[j]='';
 283                break;
 284              }
 285            }
 286          }
 287          AddList.value='';
 288          for (i=0; i<AddArray.length; i++) {
 289            if (AddArray[i]>'') {
 290              AddList.value = AddList.value + AddArray[i] + delimiter;
 291            }
 292          }
 293          RemoveList.value='';
 294          for (i=0; i<RemoveArray.length; i++) {
 295            if (RemoveArray[i]>'') {
 296              RemoveList.value = RemoveList.value + RemoveArray[i] + delimiter;
 297            }
 298          }
 299      }
 300  }
 301  
 302  function lockChanges()
 303  {
 304      checkDuplicates('AddfrmRolePerms','RemovefrmRolePerms');
 305  }
 306  
 307   // simple confirm box, incl list of any child node(s) of selected node(s)
 308  function confirmDelete(item, formName)
 309  {
 310   var evalFormName = eval('document.' + formName)
 311   var flag = false;
 312   var childrenPresent = false;
 313   var childNodes = new Array();
 314   var toDelete = '';
 315   var msg = '';
 316   var childrenString = '';
 317   for (var cont = 0; cont < evalFormName.elements.length; cont++) {
 318       var elType = evalFormName.elements[cont].type
 319       if (elType == 'checkbox' && evalFormName.elements[cont].checked == true && evalFormName.elements[cont].name != ''){
 320           flag = true;
 321           var elementString = evalFormName.elements[cont].name;
 322           var openBracket = elementString.indexOf("[") + 1;
 323           var closeBracket = elementString.lastIndexOf("]");
 324           nodeId = elementString.substring(openBracket,closeBracket);
 325           toDelete += nodeArray[nodeId][2] + ", ";
 326           if (!contains(nodeId,childNodes)){
 327            childNodes[childNodes.length] =  nodeId;
 328           }
 329  
 330           for(id in nodeArray)
 331           {
 332               if ( nodeArray[id][0] > nodeArray[nodeId][0] && nodeArray[id][1] < nodeArray[nodeId][1]  && nodeArray[id][4] == nodeArray[nodeId][4]){
 333                   if (!contains(id,childNodes)){
 334                       childNodes[childNodes.length] = id;
 335                       childrenPresent = true;
 336                   }
 337               }
 338           }
 339       }
 340   }
 341   toDelete = toDelete.substring(0,toDelete.lastIndexOf(","));
 342   msg = "Are you sure you wish to permanently delete the " + item + "(s): " + toDelete + "?\n(If you anticipate using a " + item + " later, simply mark it \"disabled\" instead; it will no longer be displayed but can easily be reactivated later.)\n";
 343  
 344   if (childrenPresent == true){
 345       for(b=0;b<childNodes.length;b++){
 346           var indent = '';
 347           for(g=1;g<nodeArray[childNodes[b]][3];g++){
 348               indent = indent + "\t";
 349           }
 350           childrenString = childrenString + indent + "-" + nodeArray[childNodes[b]][2] + "\n";
 351       }
 352       msg = msg + "\nCAUTION: One or more of the " + item + "s you selected contains subordinate " + item + "s. If you proceed, all of the following " + item + "s will be deleted:\n\n" + childrenString + "\nAre you sure you want to do this?";
 353   }
 354  
 355   if (flag == false) {
 356       alert('You must select an element to delete')
 357       return false
 358   }
 359   var agree = confirm(msg);
 360   if (agree)
 361       return true;
 362   else
 363       return false;
 364  }
 365  
 366  function confirmAction(msg)
 367  {
 368      var isConfirmed = confirm(msg);
 369      if (isConfirmed != '') {
 370          return true;
 371      } else {
 372          return false;
 373      }
 374  }
 375  
 376  // used by confirmDelete(); sees if array already contains a value
 377  function contains(tmpVal, tmpArray)
 378  {
 379      for (j=0; j < tmpArray.length; j++) {
 380          if (tmpArray[j] == tmpVal) {
 381              return true;
 382          }
 383      }
 384      return false;
 385  }


Généré le : Fri Mar 30 01:27:52 2007 par Balluche grâce à PHPXref 0.7