[ Index ] |
|
Code source de Seagull 0.6.1 |
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 }
titre
Description
Corps
titre
Description
Corps
titre
Description
Corps
titre
Corps
Généré le : Fri Mar 30 01:27:52 2007 | par Balluche grâce à PHPXref 0.7 |