[ Index ] |
|
Code source de phpMyVisites 2.3 |
1 var cleFldSrc = "src"; 2 var cleFldDst = "dst"; 3 var classSelected = "pdfTrSelected"; 4 var classNotSelected = ""; 5 6 var selSrcPos = -1; // Selected line in src tab 7 var selDstPos = -1; // Selected line in dst tab 8 var tabOpenPage = new Array(); 9 tabOpenPage[cleFldSrc] = new Array(); 10 tabOpenPage[cleFldDst] = new Array(); 11 12 function toStringChapter() { 13 return this.keyParent + "#" + this.key + "#" + this.all + "#" + this.interest; 14 } 15 16 function ChoixChapter(keyParent, key, lib, all, interest, isPage, param) { 17 this.key = key; 18 this.lib = lib; 19 this.all = all; 20 this.interest = interest; 21 this.keyParent = keyParent; 22 this.isPage = isPage; 23 if (param) { 24 this.param = param; 25 } 26 else { 27 this.param = ""; 28 } 29 30 this.toString = toStringChapter; 31 } 32 33 function openClosePage(p_obj, p_cleFld) { 34 if (p_cleFld == cleFldSrc) { 35 p_tab = tabSrc; 36 p_selPos = selSrcPos; //p_obj.parentNode.parentNode.parentNode.parentNode.id.substr(p_cleFld.length); 37 } 38 else { 39 p_tab = tabDst; 40 p_selPos = selDstPos; //p_obj.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.id.substr(p_cleFld.length); 41 } 42 if (p_selPos >= 0) { 43 if (p_tab[p_selPos].isPage) { 44 if (tabOpenPage[p_cleFld][p_tab[p_selPos].keyParent]) { 45 txt = "none"; 46 //p_obj.value = "+"; 47 } 48 else { 49 txt = ""; 50 //p_obj.value = "-"; 51 } 52 tabOpenPage[p_cleFld][p_tab[p_selPos].keyParent] = (! tabOpenPage[p_cleFld][p_tab[p_selPos].keyParent]); 53 showHidePageElem (p_tab, p_cleFld, p_tab[p_selPos].keyParent, txt); 54 // Recuperation de la balise TD 55 rewriteTD (p_obj, p_cleFld, p_selPos); 56 } 57 } 58 } 59 60 function srcSelect(p_obj) { 61 var p_num = -1; 62 /* 63 if (p_obj) { 64 p_num = p_obj.id.substr(cleFldSrc.length); 65 } 66 else { 67 */ 68 p_num = this.id.substr(cleFldSrc.length); 69 //} 70 71 if (selSrcPos >= 0) { 72 elem = document.getElementById(cleFldSrc+selSrcPos); 73 elem.className = classNotSelected; 74 } 75 76 selSrcPos = p_num; 77 elem = document.getElementById(cleFldSrc+selSrcPos); 78 elem.className = classSelected; 79 80 if (p_obj) { // For FF 81 if (typeof(p_obj.target.type) != "string") { 82 openClosePage(elem, cleFldSrc) 83 } 84 } 85 else if (event) { // For IE 86 if (typeof(event.srcElement.type) != "string") { 87 openClosePage(elem, cleFldSrc) 88 } 89 } 90 else { 91 openClosePage(elem, cleFldSrc) 92 } 93 94 } 95 96 function showHidePageElem (p_tab, p_cleFld, p_keyPage, p_val) { 97 for (i=0; i < p_tab.length; i ++) { 98 elem = document.getElementById(p_cleFld+i); 99 if ((! p_tab[i].isPage) && (p_tab[i].keyParent == p_keyPage)) { 100 elem.style.display = p_val; 101 } 102 } 103 } 104 105 function dstSelect(p_obj) { 106 var p_num = -1; 107 /* 108 if (p_obj) { 109 p_num = p_obj.id.substr(cleFldDst.length); 110 } 111 else { 112 */ 113 p_num = this.id.substr(cleFldDst.length); 114 //} 115 if (selDstPos >= 0) { 116 elem = document.getElementById(cleFldDst+selDstPos); 117 elem.className = classNotSelected; 118 } 119 120 selDstPos = p_num; 121 elem = document.getElementById(cleFldDst+selDstPos); 122 elem.className = classSelected; 123 124 if (p_obj) { // For FF 125 if (typeof(p_obj.target.type) != "string") { 126 openClosePage(elem, cleFldDst) 127 } 128 } 129 else if (event) { // For IE 130 if (typeof(event.srcElement.type) != "string") { 131 openClosePage(elem, cleFldDst) 132 } 133 } 134 else { 135 openClosePage(elem, cleFldDst) 136 } 137 138 } 139 140 function writeTab (p_tabBody, p_tab, p_cleFld) { 141 var ch = ""; 142 // tbody 143 var tb = document.getElementById(p_tabBody); 144 145 for (i=0; i < p_tab.length; i ++) { 146 147 myTR = document.createElement("TR"); 148 myTR.id = p_cleFld + i; 149 //setDisplay(myTR, 'none'); 150 myTD = document.createElement("TD"); 151 myTD.className = "align"; 152 //myTD.colSpan = 4; 153 //myTD.className = 'tc'; 154 155 if (p_tab[i].isPage) { 156 tabOpenPage[p_cleFld][p_tab[i].keyParent] = true; 157 } 158 159 // Set content and event if it is a page 160 if (p_cleFld == cleFldSrc) { 161 myTD.innerHTML = writeSrcLine(i); 162 myTR.onclick = srcSelect; 163 } 164 else { 165 if (p_tab[i].isPage) { 166 nbPageSelected ++; 167 } 168 myTD.innerHTML = writeDstLine (i); 169 myTR.onclick = dstSelect; 170 } 171 // add td 172 myTR.appendChild(myTD); 173 174 tb.appendChild(myTR); 175 } 176 } 177 178 function searchLastPage () { 179 var ret = -1; 180 for (i=0; i < tabDst.length; i++) { 181 if (tabDst[i].isPage) { 182 elem = document.getElementById(cleFldDst+i); 183 if (elem.style.display == "") { // Show 184 ret = tabDst[i].keyParent; 185 } 186 } 187 } 188 return ret; 189 } 190 191 function addOneElement (p_elem) { 192 tabDst[tabDst.length] = p_elem; 193 194 myTR = document.createElement("TR"); 195 //setDisplay(myTR, 'none'); 196 myTD = document.createElement("TD"); 197 //myTD.colSpan = 4; 198 //myTD.className = 'tc'; 199 myTD.innerHTML = writeDstLine (tabDst.length-1); 200 myTD.className = "align"; 201 // add td 202 myTR.appendChild(myTD); 203 // tbody 204 myCurrent = document.getElementById("dstTabBody"); 205 206 //tb = myCurrent.parentNode; 207 // add tr 208 //myNewTR = tb.insertBefore(myTR, myCurrent.nextSibling); 209 myCurrent.appendChild(myTR); 210 211 myTR.id = cleFldDst + (tabDst.length -1); 212 myTR.onclick = dstSelect; 213 214 } 215 216 function addLine (p_obj, p_allSection) { 217 if (typeof p_obj != "undefined") { 218 p_selPos = p_obj.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.id.substr(cleFldSrc.length); 219 } 220 else { 221 p_selPos = selSrcPos; 222 } 223 if (p_selPos >= 0) { 224 var srcElem = tabSrc[p_selPos]; 225 if ((nbPageSelected < 0) && (! srcElem.isPage)) { 226 alert(LIB_NEED_AT_LEAST_ONE_PAGE); 227 } 228 else { 229 var allSection = false; 230 if (srcElem.isPage) { 231 var allSection = false; 232 if (typeof p_allSection == 'undefined') { 233 allSection = confirm("Do you want to select this pages and its content ?"); 234 } 235 else { 236 allSection = p_allSection; 237 } 238 nbPageSelected ++; 239 nbPageDstKey ++; 240 clePage = cleDstPage+nbPageDstKey; 241 tabOpenPage[cleFldDst][clePage] = true; 242 } 243 else { 244 clePage = searchLastPage (); 245 } 246 var newElem = new ChoixChapter( clePage, srcElem.key, srcElem.lib, "false", "false", srcElem.isPage); 247 addOneElement (newElem); 248 if (allSection) { 249 // Copy all elem of the page 250 var i = (p_selPos*1)+1; 251 while ((i < tabSrc.length) && (tabSrc[i].keyParent == srcElem.key)) { 252 tmpElem = tabSrc[i]; 253 newElem = new ChoixChapter( clePage, tmpElem.key, tmpElem.lib, "false", "false", tmpElem.isPage); 254 addOneElement (newElem); 255 i++; 256 } 257 } 258 } 259 } 260 } 261 262 function removeLine (p_obj) { 263 if (typeof p_obj != "undefined") { 264 p_selPos = p_obj.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.id.substr(cleFldDst.length); 265 } 266 else { 267 p_selPos = selDstPos; 268 } 269 if (p_selPos >= 0) { 270 tb = document.getElementById("dstTabBody"); 271 var dstElem = tabDst[p_selPos]; 272 var allRemove = true; 273 if (dstElem.isPage) { 274 if (confirm("Do you confirm to unselect page and all its content ?")) { 275 var i = (p_selPos*1); 276 var clePage = dstElem.keyParent; 277 tabOpenPage[cleFldDst][clePage] = false; 278 nbPageSelected --; 279 var nbRemove = 0; 280 while ((i < tabDst.length) && (tabDst[i].keyParent == clePage)) { 281 //Remove graphical elem 282 elem = document.getElementById(cleFldDst+(i+ nbRemove)); 283 tb.removeChild(elem); 284 //Remove data elem 285 tabDst.splice(i, 1); 286 nbRemove++; 287 } 288 289 } 290 } 291 else { 292 //Remove graphical elem 293 elem = document.getElementById(cleFldDst+p_selPos); 294 tb.removeChild(elem); 295 tabDst.splice(p_selPos, 1); 296 } 297 //Reset all 298 selDstPos = -1; 299 resetTRId (); 300 } 301 } 302 303 function resetTRId () { 304 tb = document.getElementById("dstTabBody"); 305 i = 0; 306 elem = tb.firstChild; 307 while (elem != null) { 308 if (elem.nodeName == "TR") { 309 elem.id = cleFldDst + i; 310 if (i < tabDst.length) { 311 if (tabDst[i].isPage) { 312 elem.onclick = dstSelect; 313 } 314 } 315 else { 316 // Debug message 317 alert("object en dehors du tableau : "+i); 318 } 319 i ++; 320 } 321 elem = elem.nextSibling; 322 } 323 } 324 325 function writeSrcLine (p_num) { 326 var newElem = tabSrc[p_num]; 327 328 var ret = "<table class='pdfTableLine' cellpadding=0 cellspacing=0 width='100%'>" 329 +"<tr><td class='align' width='100%'>"; 330 var libTitle = "Add this chapter"; 331 if (newElem.isPage) { 332 var libTitle = "Add only this page"; 333 if (tabOpenPage[cleFldSrc][newElem.keyParent]) { 334 txt = "-"; 335 } 336 else { 337 txt = "+"; 338 } 339 //ret += (" <input class=\"pdfPlusMoins\" type=\"button\" value=\""+txt+"\" onclick=\"openClosePage(this,'"+cleFldSrc+"')\"> "); 340 //ret += ("<a href=\"javascript:openClosePage(this,'"+cleFldSrc+"')\"><b> "+txt+" "+tabSrc[i].lib+"</b></a>"); 341 ret += ("<b> "+txt+" "+newElem.lib+"</b>"); 342 ret += "</td><td class='align' nowrap> <input title='Add this page and its content' type='button' value='>>>' onclick='addLine (this, true)'> " 343 } 344 else { 345 ret += (" "+newElem.lib); 346 } 347 ret += "</td><td class='align' nowrap> <input title='"+libTitle+"' class='pdfBtAddRemove' type='button' value='>>' onclick='addLine (this, false)'> " 348 ret += "</td></tr></table>"; 349 return ret; 350 } 351 352 function writeDstLine (p_num) { 353 var newElem = tabDst[p_num]; 354 var refElem = tabSrcByKey[newElem.key]; 355 356 var ret = "<table class='pdfTableLine' cellpadding=0 cellspacing=0 width='100%'><tr>"; 357 var libTitle = "Remove this chapter"; 358 if (newElem.isPage) { 359 libTitle = "Remove this page and its content"; 360 } 361 ret += "</td><td valign='top' nowrap> <input title='"+libTitle+"' type='button' value='<<' onclick='removeLine (this)'> </td>" 362 363 if ((refElem.param == "txt") && (newElem.param != "")) { 364 lib = newElem.param; 365 } 366 else if (refElem.param == "cont") { 367 lib = newElem.lib +" <a class=\"pdfAction\" href=\"javascript:changeContinent(this)\">("+langContinent[newElem.param]+")</a>"; 368 } 369 else { 370 lib = newElem.lib; 371 } 372 if (newElem.isPage) { 373 if (tabOpenPage[cleFldDst][newElem.keyParent]) { 374 txt = "-"; 375 } 376 else { 377 txt = "+"; 378 } 379 ret += "<td class='align' width='100%'> "; 380 ret += "<br />"; 381 ret += ("<b> "+txt+" "+lib+"</b>"); 382 } 383 else { 384 //ret += "<td> </td>"; 385 ret += "<td class='align' width='100%'> "; 386 ret += lib; 387 ret += "<br />"; 388 } 389 if (refElem.param == "txt") { 390 ret += " <a class=\"pdfAction\" href=\"javascript:changeTxt(this)\">("+LIB_EDIT_TEXT+")</a>"; 391 ret += "<br />"; 392 } 393 if (refElem.all == "true") { 394 if (newElem.all == "true") { 395 ret += " <a class=\"pdfAction\" href=\"javascript:changeAll(this, 'false')\">("+LIB_SHOW_ALL+")</a>"; 396 } 397 else { 398 ret += " <a class=\"pdfAction\" href=\"javascript:changeAll(this, 'true')\">("+LIB_HIDE_ALL+")</a>"; 399 } 400 ret += "<br />"; 401 } 402 if (refElem.interest == "true") { 403 if (newElem.interest == "true") { 404 ret += " <a class=\"pdfAction\" href=\"javascript:changeInterest(this, 'false')\">("+LIB_SHOW_INTEREST+")</a>"; 405 } 406 else { 407 ret += " <a class=\"pdfAction\" href=\"javascript:changeInterest(this, 'true')\">("+LIB_HIDE_INTEREST+")</a>"; 408 } 409 ret += " "; 410 } 411 ret += "</td></tr></table>"; 412 return ret; 413 } 414 415 function changeAll (p_obj, p_val) { 416 //p_num = p_obj.id.substr(cleFldSrc.length); 417 p_num = selDstPos; 418 elem = document.getElementById(cleFldDst+p_num); // TR 419 elem = elem.firstChild; // TD 420 tabDst[p_num].all = p_val; 421 elem.innerHTML = writeDstLine (p_num); 422 } 423 424 function changeInterest (p_obj, p_val) { 425 //p_num = p_obj.id.substr(cleFldSrc.length); 426 p_num = selDstPos; 427 elem = document.getElementById(cleFldDst+p_num); // TR 428 elem = elem.firstChild; // TD 429 tabDst[p_num].interest = p_val; 430 elem.innerHTML = writeDstLine (p_num); 431 } 432 433 function changeTxt (p_obj) { 434 //p_num = p_obj.id.substr(cleFldSrc.length); 435 p_num = selDstPos; 436 elem = document.getElementById(cleFldDst+p_num); // TR 437 elem = elem.firstChild; // TD 438 if (tabDst[p_num].param == "") { 439 defTxt = tabDst[p_num].lib; 440 } 441 else { 442 defTxt = tabDst[p_num].param; 443 } 444 txt = prompt("Text to display in PDF :", defTxt); 445 if ((txt) && (txt != "")) { 446 tabDst[p_num].param = txt; 447 } 448 elem.innerHTML = writeDstLine (p_num); 449 } 450 451 function changeContinent (p_obj) { 452 //p_num = p_obj.id.substr(cleFldSrc.length); 453 p_num = selDstPos; 454 elem = document.getElementById(cleFldDst+p_num); // TR 455 elem = elem.firstChild; // TD 456 do { 457 txt = prompt("Input continent key : "+msgContinent, tabDst[p_num].param); 458 } while ((txt != null) && (! langContinent[txt])); 459 if (txt != null) { 460 tabDst[p_num].param = txt; 461 } 462 elem.innerHTML = writeDstLine (p_num); 463 } 464 465 function moveUpPage (p_keyParent, p_idTopElem, p_idBottomElem) { 466 prevElem = document.getElementById(cleFldDst+p_idTopElem); 467 tb = prevElem.parentNode; 468 // Move data elem 469 k = (p_idBottomElem*1); 470 nbmove = 0; 471 while ((k < tabDst.length) && (p_keyParent == tabDst[k].keyParent)) { 472 tmpElem = tabDst[k]; 473 for (j=k; j > (p_idTopElem + nbmove); j--) { 474 tabDst[j] = tabDst[j-1]; 475 } 476 tabDst[p_idTopElem+nbmove] = tmpElem; 477 // Move UI 478 elem = document.getElementById(cleFldDst+k); 479 myNewTR = tb.insertBefore(elem, prevElem); 480 k++; 481 nbmove++; 482 } 483 return nbmove; 484 } 485 486 function upLine() { 487 if (selDstPos > 0) { 488 dstElem = tabDst[selDstPos]; 489 if (dstElem.isPage) { 490 // update all page and is content 491 // Search previous page 492 i = selDstPos - 1; 493 while ((i >= 0) && (! tabDst[i].isPage)) { 494 i--; 495 } 496 if (i >= 0) { 497 // Reset selected color 498 elem = document.getElementById(cleFldDst+selDstPos); 499 elem.className = classNotSelected; 500 // Move page 501 moveUpPage (dstElem.keyParent, i, selDstPos); 502 selDstPos = i; 503 resetTRId (); 504 // Set selected color 505 elem = document.getElementById(cleFldDst+selDstPos); 506 elem.className = classSelected; 507 } 508 } 509 else { 510 // Update only one chapter 511 512 // Verify if there is page 513 if (selDstPos <= 1) { 514 alert(LIB_CAN_NOT_ADD_CHAPTER); 515 } 516 else { 517 // Previous elem 518 futurPrevDstElem = tabDst[selDstPos-2]; 519 if (futurPrevDstElem.keyParent != dstElem.keyParent) { 520 dstElem.keyParent = futurPrevDstElem.keyParent; 521 } 522 // Move data elem 523 tmpElem = tabDst[selDstPos-1]; 524 tabDst[selDstPos-1] = dstElem; 525 tabDst[selDstPos] = tmpElem; 526 // Move UI 527 elem = document.getElementById(cleFldDst+selDstPos); 528 tb = elem.parentNode; 529 myNewTR = tb.insertBefore(elem, elem.previousSibling); 530 selDstPos--; 531 resetTRId (); 532 } 533 } 534 } 535 } 536 537 function downLine() { 538 if (selDstPos < (tabDst.length -1)) { 539 dstElem = tabDst[selDstPos]; 540 if (dstElem.isPage) { 541 // update all page and is content 542 // Search next page 543 i = (selDstPos*1) + 1; 544 while ((i < tabDst.length) && (! tabDst[i].isPage)) { 545 i++; 546 } 547 if (i < tabDst.length) { 548 // Reset selected color 549 elem = document.getElementById(cleFldDst+selDstPos); 550 elem.className = classNotSelected; 551 // Move page 552 nbmove = moveUpPage (tabDst[i].keyParent, (selDstPos*1), i); 553 selDstPos = (selDstPos*1) + nbmove; 554 resetTRId (); 555 // Set selected color 556 elem = document.getElementById(cleFldDst+selDstPos); 557 elem.className = classSelected; 558 } 559 } 560 else { 561 // Update only one chapter 562 563 // Next elem 564 futurNextDstElem = tabDst[(selDstPos*1)+1]; 565 if (futurNextDstElem.keyParent != dstElem.keyParent) { 566 dstElem.keyParent = futurNextDstElem.keyParent; 567 } 568 // Deplace data elem 569 tmpElem = tabDst[(selDstPos*1)+1]; 570 tabDst[(selDstPos*1)+1] = dstElem; 571 tabDst[selDstPos] = tmpElem; 572 // Deplace UI 573 elem = document.getElementById(cleFldDst+selDstPos); 574 tb = elem.parentNode; 575 myNewTR = tb.insertBefore(elem, elem.nextSibling.nextSibling); 576 selDstPos++; 577 resetTRId (); 578 } 579 } 580 } 581 582 function unselectSrc () { 583 if (selSrcPos >= 0) { 584 elem = document.getElementById(cleFldSrc+selSrcPos); 585 elem.className = classNotSelected; 586 selSrcPos = -1; 587 } 588 } 589 590 function rewriteTD (p_elemTR, p_cleFld, p_num) { 591 var elem = p_elemTR.firstChild; 592 var elemTD = null; 593 while ((elem != null) && (elemTD == null)) { 594 if (elem.nodeName == "TD") { 595 elemTD = elem; 596 } 597 elem = elem.nextSibling; 598 } 599 if (elemTD != null) { 600 if (p_cleFld == cleFldSrc) { 601 elemTD.innerHTML = writeSrcLine (p_num); 602 } 603 else { 604 elemTD.innerHTML = writeDstLine (p_num); 605 } 606 } 607 } 608 609 function closeAll(p_tab, p_cleFld) { 610 for (i=0; i < p_tab.length; i ++) { 611 elem = document.getElementById(p_cleFld+i); 612 if (p_tab[i].isPage) { 613 elem.style.display=""; 614 tabOpenPage[p_cleFld][p_tab[i].keyParent] = false; 615 // Recuperation de la balise TD 616 rewriteTD (elem, p_cleFld, i); 617 } 618 else { 619 elem.style.display="none"; 620 } 621 } 622 } 623 624 function openAll(p_tab, p_cleFld) { 625 for (i=0; i < p_tab.length; i ++) { 626 elem = document.getElementById(p_cleFld+i); 627 if (p_tab[i].isPage) { 628 elem.style.display=""; 629 tabOpenPage[p_cleFld][p_tab[i].keyParent] = true; 630 // Recuperation de la balise TD 631 rewriteTD (elem, p_cleFld, i); 632 } 633 else { 634 elem.style.display=""; 635 } 636 } 637 } 638 639 function writeResult() { 640 var elem = document.getElementById("param_pdf_result"); 641 var writeLibel = false; 642 var sepLine = "@@"; 643 var sepInfo = "#"; 644 var ch = ""; 645 for (i=0; i < tabDst.length; i ++) { 646 if (i > 0) { 647 ch += (writeLibel ? "\n": sepLine); 648 } 649 ch += (writeLibel ? i+"#"+tabDst[i].keyParent : ""); 650 ch += (writeLibel ? "#key:" : "") + tabDst[i].key ; 651 ch += (writeLibel ? "#lib:"+ tabDst[i].lib : "") ; 652 ch += (writeLibel ? "#all:" : sepInfo) + tabDst[i].all; 653 ch += (writeLibel ? "#interest:" : sepInfo) + tabDst[i].interest; 654 ch += (writeLibel ? "#isPage:" + tabDst[i].isPage : ""); 655 if (tabDst[i].param != "") { 656 ch += (writeLibel ? "#param:" : sepInfo)+tabDst[i].param; 657 } 658 } 659 elem.value = ch; 660 } 661 662 function submitPdfConfig() { 663 if (document.form_phpmv.form_name.value == "") { 664 document.form_phpmv.form_name.focus(); 665 alert(LIB_PDF_NAME_MANDATORY); 666 } 667 else { 668 writeResult(); 669 document.form_phpmv.submit(); 670 } 671 }
titre
Description
Corps
titre
Description
Corps
titre
Description
Corps
titre
Corps
Généré le : Mon Nov 26 14:10:01 2007 | par Balluche grâce à PHPXref 0.7 |
![]() |