1/** 2 * JavaScript functionalitiy for the media management popup 3 * 4 * @author Andreas Gohr <andi@splitbrain.org> 5 */ 6var media_manager = { 7 keepopen: false, 8 hide: false, 9 align: false, 10 popup: false, 11 id: false, 12 display: false, 13 link: false, 14 size: false, 15 ext: false, 16 17 /** 18 * Attach event handlers to all "folders" below the given element 19 * 20 * @author Andreas Gohr <andi@splitbrain.org> 21 */ 22 treeattach: function(obj){ 23 if(!obj) return; 24 25 var items = obj.getElementsByTagName('li'); 26 for(var i=0; i<items.length; i++){ 27 var elem = items[i]; 28 29 // attach action to make the +/- clickable 30 var clicky = elem.getElementsByTagName('img')[0]; 31 clicky.style.cursor = 'pointer'; 32 addEvent(clicky,'click',function(event){ return media_manager.toggle(event,this); }); 33 34 // attach action load folder list via AJAX 35 var link = elem.getElementsByTagName('a')[0]; 36 link.style.cursor = 'pointer'; 37 addEvent(link,'click',function(event){ return media_manager.list(event,this); }); 38 } 39 }, 40 41 /** 42 * Attach the image selector action to all links below the given element 43 * also add the action to autofill the "upload as" field 44 * 45 * @author Andreas Gohr <andi@splitbrain.org> 46 */ 47 selectorattach: function(obj){ 48 if(!obj) return; 49 50 var items = getElementsByClass('select',obj,'a'); 51 for(var i=0; i<items.length; i++){ 52 var elem = items[i]; 53 elem.style.cursor = 'pointer'; 54 addEvent(elem,'click',function(event){ return media_manager.select(event,this); }); 55 } 56 57 // hide syntax example 58 items = getElementsByClass('example',obj,'div'); 59 for(var i=0; i<items.length; i++){ 60 elem = items[i]; 61 elem.style.display = 'none'; 62 } 63 64 var file = $('upload__file'); 65 if(!file) return; 66 addEvent(file,'change',media_manager.suggest); 67 }, 68 69 /** 70 * Attach deletion confirmation dialog to the delete buttons. 71 * 72 * Michael Klier <chi@chimeric.de> 73 */ 74 confirmattach: function(obj){ 75 if(!obj) return; 76 77 items = getElementsByClass('btn_media_delete',obj,'a'); 78 for(var i=0; i<items.length; i++){ 79 var elem = items[i]; 80 addEvent(elem,'click',function(e){ 81 if(e.target.tagName == 'IMG'){ 82 var name = e.target.parentNode.title; 83 }else{ 84 var name = e.target.title; 85 } 86 if(!confirm(LANG['del_confirm'] + "\n" + name)) { 87 e.preventDefault(); 88 return false; 89 } else { 90 return true; 91 } 92 }); 93 } 94 }, 95 96 /** 97 * Creates checkboxes for additional options 98 * 99 * @author Andreas Gohr <andi@splitbrain.org> 100 */ 101 attachoptions: function(obj){ 102 if(!obj) return; 103 104 // keep open 105 if(opener){ 106 var kobox = document.createElement('input'); 107 kobox.type = 'checkbox'; 108 kobox.id = 'media__keepopen'; 109 if(DokuCookie.getValue('keepopen')){ 110 kobox.checked = true; 111 kobox.defaultChecked = true; //IE wants this 112 media_manager.keepopen = true; 113 } 114 addEvent(kobox,'click',function(event){ return media_manager.togglekeepopen(event,this); }); 115 116 var kolbl = document.createElement('label'); 117 kolbl.htmlFor = 'media__keepopen'; 118 kolbl.innerHTML = LANG['keepopen']; 119 120 var kobr = document.createElement('br'); 121 122 obj.appendChild(kobox); 123 obj.appendChild(kolbl); 124 obj.appendChild(kobr); 125 } 126 127 // hide details 128 var hdbox = document.createElement('input'); 129 hdbox.type = 'checkbox'; 130 hdbox.id = 'media__hide'; 131 if(DokuCookie.getValue('hide')){ 132 hdbox.checked = true; 133 hdbox.defaultChecked = true; //IE wants this 134 media_manager.hide = true; 135 } 136 addEvent(hdbox,'click',function(event){ return media_manager.togglehide(event,this); }); 137 138 var hdlbl = document.createElement('label'); 139 hdlbl.htmlFor = 'media__hide'; 140 hdlbl.innerHTML = LANG['hidedetails']; 141 142 var hdbr = document.createElement('br'); 143 144 obj.appendChild(hdbox); 145 obj.appendChild(hdlbl); 146 obj.appendChild(hdbr); 147 media_manager.updatehide(); 148 }, 149 150 /** 151 * Opens the searchfield 152 * 153 * @author Tobias Sarnowski <sarnowski@cosmocode.de> 154 */ 155 showsearchfield: function(event,link){ 156 // prepare an AJAX call to fetch the search 157 var ajax = new sack(DOKU_BASE + 'lib/exe/ajax.php'); 158 ajax.AjaxFailedAlert = ''; 159 ajax.encodeURIString = false; 160 if(ajax.failed) return true; 161 162 cleanMsgArea(); 163 164 var content = $('media__content'); 165 content.innerHTML = '<img src="'+DOKU_BASE+'lib/images/loading.gif" alt="..." class="load" />'; 166 167 ajax.elementObj = content; 168 ajax.afterCompletion = function(){ 169 media_manager.selectorattach(content); 170 media_manager.confirmattach(content); 171 media_manager.updatehide(); 172 }; 173 ajax.runAJAX(link.search.substr(1)+'&call=mediasearchlist'); 174 return false; 175 }, 176 177 /** 178 * Toggles the keep open state 179 * 180 * @author Andreas Gohr <andi@splitbrain.org> 181 */ 182 togglekeepopen: function(event,cb){ 183 if(cb.checked){ 184 DokuCookie.setValue('keepopen',1); 185 media_manager.keepopen = true; 186 }else{ 187 DokuCookie.setValue('keepopen',''); 188 media_manager.keepopen = false; 189 } 190 }, 191 192 /** 193 * Toggles the hide details state 194 * 195 * @author Andreas Gohr <andi@splitbrain.org> 196 */ 197 togglehide: function(event,cb){ 198 if(cb.checked){ 199 DokuCookie.setValue('hide',1); 200 media_manager.hide = true; 201 }else{ 202 DokuCookie.setValue('hide',''); 203 media_manager.hide = false; 204 } 205 media_manager.updatehide(); 206 }, 207 208 /** 209 * Sets the visibility of the image details accordingly to the 210 * chosen hide state 211 * 212 * @author Andreas Gohr <andi@splitbrain.org> 213 */ 214 updatehide: function(){ 215 var obj = $('media__content'); 216 if(!obj) return; 217 var details = getElementsByClass('detail',obj,'div'); 218 for(var i=0; i<details.length; i++){ 219 if(media_manager.hide){ 220 details[i].style.display = 'none'; 221 }else{ 222 details[i].style.display = ''; 223 } 224 } 225 }, 226 227 /** 228 * shows the popup for a image link 229 */ 230 select: function(event,link){ 231 var id = link.name.substr(2); 232 233 media_manager.id = id; 234 if(!opener){ 235 // if we don't run in popup display example 236 var ex = $('ex_'+id.replace(/:/g,'_')); 237 if(ex.style.display == ''){ 238 ex.style.display = 'none'; 239 } else { 240 ex.style.display = ''; 241 } 242 return false; 243 } 244 245 media_manager.ext = false; 246 var dot = id.lastIndexOf("."); 247 if (dot != -1) { 248 var ext = id.substr(dot,id.length); 249 250 if (ext != '.jpg' && ext != '.jpeg' && ext != '.png' && ext != '.gif' && ext != '.swf') { 251 media_manager.insert(null); 252 return false; 253 } 254 } else { 255 media_manager.insert(null); 256 return false; 257 } 258 259 media_manager.popup.style.display = 'inline'; 260 media_manager.popup.style.left = event.pageX + 'px'; 261 media_manager.popup.style.top = event.pageY + 'px'; 262 263 // set all buttons to outset 264 media_manager.outSet('media__linkbtn1'); 265 media_manager.outSet('media__linkbtn2'); 266 media_manager.outSet('media__linkbtn3'); 267 media_manager.outSet('media__linkbtn4'); 268 269 media_manager.outSet('media__alignbtn0'); 270 media_manager.outSet('media__alignbtn1'); 271 media_manager.outSet('media__alignbtn2'); 272 media_manager.outSet('media__alignbtn3'); 273 274 media_manager.outSet('media__sizebtn1'); 275 media_manager.outSet('media__sizebtn2'); 276 media_manager.outSet('media__sizebtn3'); 277 media_manager.outSet('media__sizebtn4'); 278 279 280 if (ext == '.swf') { 281 media_manager.ext = 'swf'; 282 283 // disable display buttons for detail and linked image 284 $('media__linkbtn1').style.display = 'none'; 285 $('media__linkbtn2').style.display = 'none'; 286 287 // set the link button to default 288 if (media_manager.link != false) { 289 if ( media_manager.link == '2' || media_manager.link == '1') { 290 media_manager.inSet('media__linkbtn3'); 291 media_manager.link = '3'; 292 DokuCookie.setValue('link','3'); 293 } else { 294 media_manager.inSet('media__linkbtn'+media_manager.link); 295 } 296 } else if (DokuCookie.getValue('link')) { 297 if ( DokuCookie.getValue('link') == '2' || DokuCookie.getValue('link') == '1') { 298 // this options are not availible 299 media_manager.inSet('media__linkbtn3'); 300 media_manager.link = '3'; 301 DokuCookie.setValue('link','3'); 302 } else { 303 media_manager.inSet('media__linkbtn'+DokuCookie.getValue('link')); 304 media_manager.link = DokuCookie.getValue('link'); 305 } 306 } else { 307 // default case 308 media_manager.link = '3'; 309 media_manager.inSet('media__linkbtn3'); 310 DokuCookie.setValue('link','3'); 311 } 312 313 } else { 314 media_manager.ext = 'img'; 315 316 // ensure that the display buttens are there 317 $('media__linkbtn1').style.display = 'inline'; 318 $('media__linkbtn2').style.display = 'inline'; 319 320 // set the link button to default 321 if (media_manager.link != false) { 322 media_manager.inSet('media__linkbtn'+media_manager.link); 323 } else if (DokuCookie.getValue('link')) { 324 media_manager.inSet('media__linkbtn'+DokuCookie.getValue('link')); 325 media_manager.link = DokuCookie.getValue('link'); 326 } else { 327 // default case 328 media_manager.link = '1'; 329 media_manager.inSet('media__linkbtn1'); 330 DokuCookie.setValue('link','1'); 331 } 332 } 333 334 if (media_manager.link == '4') { 335 media_manager.align = false; 336 media_manager.size = false; 337 $('media__align').style.display = 'none'; 338 $('media__size').style.display = 'none'; 339 } else { 340 $('media__align').style.display = 'block'; 341 $('media__size').style.display = 'block'; 342 343 // set the align button to default 344 if (media_manager.align != false) { 345 media_manager.inSet('media__alignbtn'+media_manager.align); 346 } else if (DokuCookie.getValue('align')) { 347 media_manager.inSet('media__alignbtn'+DokuCookie.getValue('align')); 348 media_manager.align = DokuCookie.getValue('align'); 349 } else { 350 // default case 351 media_manager.align = '0'; 352 media_manager.inSet('media__alignbtn0'); 353 DokuCookie.setValue('align','0'); 354 } 355 356 // set the size button to default 357 if (media_manager.size != false) { 358 media_manager.inSet('media__sizebtn'+media_manager.size); 359 } else if (DokuCookie.getValue('size')) { 360 media_manager.inSet('media__sizebtn'+DokuCookie.getValue('size')); 361 media_manager.size = DokuCookie.getValue('size'); 362 } else { 363 // default case 364 media_manager.size = '2'; 365 media_manager.inSet('media__sizebtn2'); 366 DokuCookie.setValue('size','2'); 367 } 368 369 370 $('media__sendbtn').focus(); 371 } 372 373 return false; 374 }, 375 376 /** 377 * build the popup window 378 * 379 * @author Dominik Eckelmann <eckelmann@cosmocode.de> 380 */ 381 initpopup: function() { 382 383 media_manager.popup = document.createElement('div'); 384 media_manager.popup.setAttribute('id','media__popup'); 385 386 var root = document.getElementById('media__manager'); 387 if (root == null) return; 388 root.appendChild(media_manager.popup); 389 390 var headline = document.createElement('h1'); 391 var headlineimg = document.createElement('img'); 392 var headtext = document.createElement('span'); 393 headlineimg.src = '/lib/images/close.png'; 394 headlineimg.id = 'media__closeimg'; 395 addEvent(headlineimg,'click',function(event){ return media_manager.closePopup(event,this); }); 396 headline.appendChild(headlineimg); 397 headtext.textContent = LANG['mediatitle']; 398 headline.appendChild(headtext); 399 media_manager.popup.appendChild(headline); 400 drag.attach(media_manager.popup,headline); 401 402 // link 403 404 var linkp = document.createElement('p'); 405 var linkl = document.createElement('label'); 406 var linkbtn1 = document.createElement('button'); 407 var linkbtn2 = document.createElement('button'); 408 var linkbtn3 = document.createElement('button'); 409 var linkbtn4 = document.createElement('button'); 410 var linkimg1 = document.createElement('img'); 411 var linkimg2 = document.createElement('img'); 412 var linkimg3 = document.createElement('img'); 413 var linkimg4 = document.createElement('img'); 414 415 linkp.id = "media__linkstyle"; 416 if (media_manager.display == "2") { 417 linkp.style.display = "none"; 418 } 419 420 linkp.appendChild(linkl); 421 linkp.appendChild(linkbtn1); 422 linkp.appendChild(linkbtn2); 423 linkp.appendChild(linkbtn3); 424 linkp.appendChild(linkbtn4); 425 426 linkl.innerHTML = LANG['mediatarget']; 427 428 linkimg1.src = '/lib/images/image_info.png'; 429 linkimg2.src = '/lib/images/image_link.png'; 430 linkimg3.src = '/lib/images/image.png'; 431 linkimg4.src = '/lib/images/link.png'; 432 433 linkbtn1.setAttribute('class','button'); 434 linkbtn1.appendChild(linkimg1); 435 linkbtn1.value = '1'; 436 linkbtn1.id = "media__linkbtn1"; 437 linkbtn1.title = LANG['medialnk']; 438 linkbtn1.style.borderStyle = 'outset'; 439 addEvent(linkbtn1,'click',function(event){ return media_manager.setlink(event,this); }); 440 441 linkbtn2.setAttribute('class','button'); 442 linkbtn2.appendChild(linkimg2); 443 linkbtn2.value = '2'; 444 linkbtn2.id = "media__linkbtn2"; 445 linkbtn2.title = LANG['mediadirect']; 446 linkbtn2.style.borderStyle = 'outset'; 447 addEvent(linkbtn2,'click',function(event){ return media_manager.setlink(event,this); }); 448 449 linkbtn3.setAttribute('class','button'); 450 linkbtn3.appendChild(linkimg3); 451 linkbtn3.value = '3'; 452 linkbtn3.id = "media__linkbtn3"; 453 linkbtn3.title = LANG['medianolnk']; 454 linkbtn3.style.borderStyle = 'outset'; 455 addEvent(linkbtn3,'click',function(event){ return media_manager.setlink(event,this); }); 456 457 linkbtn4.setAttribute('class','button'); 458 linkbtn4.appendChild(linkimg4); 459 linkbtn4.value = '4'; 460 linkbtn4.id = "media__linkbtn4"; 461 linkbtn4.title = LANG['mediadisplaylnk']; 462 linkbtn4.style.borderStyle = 'outset'; 463 addEvent(linkbtn4,'click',function(event){ return media_manager.setlink(event,this); }); 464 465 media_manager.popup.appendChild(linkp); 466 467 // align 468 469 var alignp = document.createElement('p'); 470 var alignl = document.createElement('label'); 471 var alignbtn0 = document.createElement('button'); 472 var alignbtn1 = document.createElement('button'); 473 var alignbtn2 = document.createElement('button'); 474 var alignbtn3 = document.createElement('button'); 475 var alignimg0 = document.createElement('img'); 476 var alignimg1 = document.createElement('img'); 477 var alignimg2 = document.createElement('img'); 478 var alignimg3 = document.createElement('img'); 479 alignp.appendChild(alignl); 480 alignp.id = 'media__align'; 481 if (media_manager.display == "2") { 482 alignp.style.display = "none"; 483 } 484 485 alignp.appendChild(alignbtn0); 486 alignp.appendChild(alignbtn1); 487 alignp.appendChild(alignbtn2); 488 alignp.appendChild(alignbtn3); 489 490 alignl.innerHTML = LANG['mediaalign']; 491 492 alignimg0.src = '/lib/images/text_align_left.png'; 493 alignimg1.src = '/lib/images/text_align_left.png'; 494 alignimg2.src = '/lib/images/text_align_center.png'; 495 alignimg3.src = '/lib/images/text_align_right.png'; 496 497 alignbtn0.id = "media__alignbtn0"; 498 alignbtn0.value = '0'; 499 alignbtn0.title = LANG['medianoalign']; 500 alignbtn0.setAttribute('class','button'); 501 alignbtn0.appendChild(alignimg0); 502 alignbtn0.style.borderStyle = 'outset'; 503 addEvent(alignbtn0,'click',function(event){ return media_manager.setalign(event,this); }); 504 505 alignbtn1.id = "media__alignbtn1"; 506 alignbtn1.value = '1'; 507 alignbtn1.title = LANG['medialeft']; 508 alignbtn1.setAttribute('class','button'); 509 alignbtn1.appendChild(alignimg1); 510 alignbtn1.style.borderStyle = 'outset'; 511 addEvent(alignbtn1,'click',function(event){ return media_manager.setalign(event,this); }); 512 513 alignbtn2.value = '2'; 514 alignbtn2.id = "media__alignbtn2"; 515 alignbtn2.title = LANG['mediacenter']; 516 alignbtn2.setAttribute('class','button'); 517 alignbtn2.appendChild(alignimg2); 518 alignbtn2.style.borderStyle = 'outset'; 519 addEvent(alignbtn2,'click',function(event){ return media_manager.setalign(event,this); }); 520 521 alignbtn3.value = '3'; 522 alignbtn3.id = "media__alignbtn3"; 523 alignbtn3.title = LANG['mediaright']; 524 alignbtn3.setAttribute('class','button'); 525 alignbtn3.appendChild(alignimg3); 526 alignbtn3.style.borderStyle = 'outset'; 527 addEvent(alignbtn3,'click',function(event){ return media_manager.setalign(event,this); }); 528 529 media_manager.popup.appendChild(alignp); 530 531 // size 532 533 var sizep = document.createElement('p'); 534 var sizel = document.createElement('label'); 535 var sizebtn1 = document.createElement('button'); 536 var sizebtn2 = document.createElement('button'); 537 var sizebtn3 = document.createElement('button'); 538 var sizebtn4 = document.createElement('button'); 539 var sizeimg1 = document.createElement('img'); 540 var sizeimg2 = document.createElement('img'); 541 var sizeimg3 = document.createElement('img'); 542 var sizeimg4 = document.createElement('img'); 543 sizep.id = 'media__size'; 544 if (media_manager.display == "2") { 545 sizep.style.display = "none"; 546 } 547 548 sizep.appendChild(sizel); 549 sizep.appendChild(sizebtn1); 550 sizep.appendChild(sizebtn2); 551 sizep.appendChild(sizebtn3); 552 sizep.appendChild(sizebtn4); 553 554 sizel.innerHTML = LANG['mediasize']; 555 556 sizeimg1.src = '/lib/images/magifier_zoom_out.png'; 557 sizeimg2.src = '/lib/images/magnifier.png'; 558 sizeimg3.src = '/lib/images/magnifier_zoom_in.png'; 559 sizeimg4.src = '/lib/images/magnifier_zoom_in.png'; 560 561 sizebtn1.setAttribute('class','button'); 562 sizebtn1.appendChild(sizeimg1); 563 sizebtn1.value = '1'; 564 sizebtn1.id = 'media__sizebtn1'; 565 sizebtn1.title = LANG['mediasmall']; 566 sizebtn1.style.borderStyle = 'outset'; 567 addEvent(sizebtn1,'click',function(event){ return media_manager.setsize(event,this); }); 568 569 sizebtn2.setAttribute('class','button'); 570 sizebtn2.appendChild(sizeimg2); 571 sizebtn2.value = '2'; 572 sizebtn2.id = 'media__sizebtn2'; 573 sizebtn2.title = LANG['mediamedium']; 574 sizebtn2.style.borderStyle = 'outset'; 575 addEvent(sizebtn2,'click',function(event){ return media_manager.setsize(event,this); }); 576 577 sizebtn3.setAttribute('class','button'); 578 sizebtn3.appendChild(sizeimg3); 579 sizebtn3.value = '3'; 580 sizebtn3.id = 'media__sizebtn3'; 581 sizebtn3.title = LANG['medialarge']; 582 sizebtn3.style.borderStyle = 'outset'; 583 addEvent(sizebtn3,'click',function(event){ return media_manager.setsize(event,this); }); 584 585 sizebtn4.setAttribute('class','button'); 586 sizebtn4.appendChild(sizeimg4); 587 sizebtn4.value = '4'; 588 sizebtn4.id = 'media__sizebtn4'; 589 sizebtn4.title = LANG['mediaextralarge']; 590 sizebtn4.style.borderStyle = 'outset'; 591 addEvent(sizebtn4,'click',function(event){ return media_manager.setsize(event,this); }); 592 593 media_manager.popup.appendChild(sizep); 594 595 // send and close button 596 597 var btnp = document.createElement('p'); 598 media_manager.popup.appendChild(btnp); 599 btnp.setAttribute('class','btnlbl'); 600 601 var cls = document.createElement('input'); 602 cls.type = 'button'; 603 cls.setAttribute('class','button'); 604 cls.value = LANG['mediaclose']; 605 btnp.appendChild(cls); 606 addEvent(cls,'click',function(event){ return media_manager.closePopup(event,this); }); 607 608 var btn = document.createElement('input'); 609 btn.type = 'button'; 610 btn.id = 'media__sendbtn'; 611 btn.setAttribute('class','button'); 612 btn.value = LANG['mediainsert']; 613 btnp.appendChild(btn); 614 addEvent(btn,'click',function(event){ return media_manager.insert(event); }); 615 }, 616 617 /** 618 * Insert the clicked image into the opener's textarea 619 * 620 * @author Andreas Gohr <andi@splitbrain.org> 621 * @author Dominik Eckelmann <eckelmann@cosmocode.de> 622 */ 623 insert: function(event){ 624 var id = media_manager.id; 625 // set syntax options 626 $('media__popup').style.display = 'none'; 627 628 var opts = ''; 629 var optsstart = ''; 630 var alignleft = ''; 631 var alignright = ''; 632 633 if (media_manager.ext == 'img' || media_manager.ext == 'swf') { 634 635 if (media_manager.link == '4') { 636 opts = '?linkonly'; 637 } else { 638 639 if (media_manager.link == "3" && media_manager.ext == 'img') { 640 opts = '?nolink'; 641 optsstart = true; 642 } else if (media_manager.link == "2" && media_manager.ext == 'img') { 643 opts = '?direct'; 644 optsstart = true; 645 } 646 647 var s = parseInt(media_manager.size); 648 649 if (s && s >= 1) { 650 opts += (optsstart)?'&':'?'; 651 if (s=="1") { 652 opts += '100'; 653 if (media_manager.ext == 'swf') { 654 opts += 'x62'; 655 } 656 } else if (s=="2") { 657 opts += '200'; 658 if (media_manager.ext == 'swf') { 659 opts += 'x123'; 660 } 661 } else if (s=="3"){ 662 opts += '300'; 663 if (media_manager.ext == 'swf') { 664 opts += 'x185'; 665 } 666 } else if (s=="4") { 667 opts += '400'; 668 if (media_manager.ext == 'swf') { 669 opts += 'x247'; 670 } 671 } 672 } 673 if (media_manager.align == '1') { 674 alignleft = ''; 675 alignright = ' '; 676 } 677 if (media_manager.align == '2') { 678 alignleft = ' '; 679 alignright = ' '; 680 } 681 if (media_manager.align == '3') { 682 alignleft = ' '; 683 alignright = ''; 684 } 685 } 686 } 687 opener.insertTags('wiki__text','{{'+alignleft+id+opts+alignright+'|','}}',''); 688 689 if(!media_manager.keepopen) window.close(); 690 opener.focus(); 691 return false; 692 }, 693 694 /** 695 * list the content of a namespace using AJAX 696 * 697 * @author Andreas Gohr <andi@splitbrain.org> 698 */ 699 list: function(event,link){ 700 // prepare an AJAX call to fetch the subtree 701 var ajax = new sack(DOKU_BASE + 'lib/exe/ajax.php'); 702 ajax.AjaxFailedAlert = ''; 703 ajax.encodeURIString = false; 704 if(ajax.failed) return true; 705 706 cleanMsgArea(); 707 708 var content = $('media__content'); 709 content.innerHTML = '<img src="'+DOKU_BASE+'lib/images/loading.gif" alt="..." class="load" />'; 710 711 ajax.elementObj = content; 712 ajax.afterCompletion = function(){ 713 media_manager.selectorattach(content); 714 media_manager.confirmattach(content); 715 media_manager.updatehide(); 716 media_manager.initFlashUpload(); 717 }; 718 ajax.runAJAX(link.search.substr(1)+'&call=medialist'); 719 return false; 720 }, 721 722 723 /** 724 * Open or close a subtree using AJAX 725 * 726 * @author Andreas Gohr <andi@splitbrain.org> 727 */ 728 toggle: function(event,clicky){ 729 var listitem = clicky.parentNode; 730 731 // if already open, close by removing the sublist 732 var sublists = listitem.getElementsByTagName('ul'); 733 if(sublists.length){ 734 listitem.removeChild(sublists[0]); 735 clicky.src = DOKU_BASE+'lib/images/plus.gif'; 736 return false; 737 } 738 739 // get the enclosed link (is always the first one) 740 var link = listitem.getElementsByTagName('a')[0]; 741 742 // prepare an AJAX call to fetch the subtree 743 var ajax = new sack(DOKU_BASE + 'lib/exe/ajax.php'); 744 ajax.AjaxFailedAlert = ''; 745 ajax.encodeURIString = false; 746 if(ajax.failed) return true; 747 748 //prepare the new ul 749 var ul = document.createElement('ul'); 750 //fixme add classname here 751 listitem.appendChild(ul); 752 ajax.elementObj = ul; 753 ajax.afterCompletion = function(){ media_manager.treeattach(ul); }; 754 ajax.runAJAX(link.search.substr(1)+'&call=medians'); 755 clicky.src = DOKU_BASE+'lib/images/minus.gif'; 756 return false; 757 }, 758 759 /** 760 * Prefills the wikiname. 761 * 762 * @author Andreas Gohr <andi@splitbrain.org> 763 */ 764 suggest: function(){ 765 var file = $('upload__file'); 766 var name = $('upload__name'); 767 if(!file || !name) return; 768 769 var text = file.value; 770 text = text.substr(text.lastIndexOf('/')+1); 771 text = text.substr(text.lastIndexOf('\\')+1); 772 name.value = text; 773 }, 774 775 776 initFlashUpload: function(){ 777 if(!hasFlash(8)) return; 778 var oform = $('dw__upload'); 779 var oflash = $('dw__flashupload'); 780 if(!oform || !oflash) return; 781 782 var clicky = document.createElement('img'); 783 clicky.src = DOKU_BASE+'lib/images/multiupload.png'; 784 clicky.title = LANG['mu_btn']; 785 clicky.alt = LANG['mu_btn']; 786 clicky.style.cursor = 'pointer'; 787 clicky.onclick = function(){ 788 oform.style.display = 'none'; 789 oflash.style.display = ''; 790 }; 791 oform.appendChild(clicky); 792 }, 793 794 /** 795 * closes the link type popup 796 */ 797 closePopup: function(event) { 798 $('media__popup').style.display = 'none'; 799 }, 800 801 /** 802 * set the align 803 * 804 * @author Dominik Eckelmann <eckelmann@cosmocode.de> 805 */ 806 setalign: function(event,cb){ 807 if(cb.value){ 808 DokuCookie.setValue('align',cb.value); 809 media_manager.align = cb.value; 810 media_manager.outSet("media__alignbtn0"); 811 media_manager.outSet("media__alignbtn1"); 812 media_manager.outSet("media__alignbtn2"); 813 media_manager.outSet("media__alignbtn3"); 814 media_manager.inSet("media__alignbtn"+cb.value); 815 }else{ 816 DokuCookie.setValue('align',''); 817 media_manager.align = false; 818 } 819 }, 820 /** 821 * set the link type 822 * 823 * @author Dominik Eckelmann <eckelmann@cosmocode.de> 824 */ 825 setlink: function(event,cb){ 826 if(cb.value){ 827 DokuCookie.setValue('link',cb.value); 828 media_manager.link = cb.value; 829 media_manager.outSet("media__linkbtn1"); 830 media_manager.outSet("media__linkbtn2"); 831 media_manager.outSet("media__linkbtn3"); 832 media_manager.outSet("media__linkbtn4"); 833 media_manager.inSet("media__linkbtn"+cb.value); 834 var size = document.getElementById("media__size"); 835 var align = document.getElementById("media__align"); 836 if (cb.value != '4') { 837 size.style.display = "block"; 838 align.style.display = "block"; 839 } else { 840 size.style.display = "none"; 841 align.style.display = "none"; 842 } 843 }else{ 844 DokuCookie.setValue('link',''); 845 media_manager.link = false; 846 } 847 }, 848 849 /** 850 * set the display type 851 * 852 * @author Dominik Eckelmann <eckelmann@cosmocode.de> 853 */ 854 setdisplay: function(event,cb){ 855 if(cb.value){ 856 DokuCookie.setValue('display',cb.value); 857 media_manager.display = cb.value; 858 media_manager.outSet("media__displaybtn1"); 859 media_manager.outSet("media__displaybtn2"); 860 media_manager.inSet("media__displaybtn"+cb.value); 861 862 }else{ 863 DokuCookie.setValue('display',''); 864 media_manager.align = false; 865 } 866 }, 867 868 /** 869 * sets the border to outset 870 */ 871 outSet: function(id) { 872 var ele = document.getElementById(id); 873 if (ele == null) return; 874 ele.style.borderStyle = "outset"; 875 }, 876 /** 877 * sets the border to inset 878 */ 879 inSet: function(id) { 880 var ele = document.getElementById(id); 881 if (ele == null) return; 882 ele.style.borderStyle = "inset"; 883 }, 884 885 /** 886 * set the image size 887 * 888 * @author Dominik Eckelmann <eckelmann@cosmocode.de> 889 */ 890 setsize: function(event,cb){ 891 if (cb.value) { 892 DokuCookie.setValue('size',cb.value); 893 media_manager.size = cb.value; 894 media_manager.outSet("media__sizebtn1"); 895 media_manager.outSet("media__sizebtn2"); 896 media_manager.outSet("media__sizebtn3"); 897 media_manager.inSet("media__sizebtn"+cb.value); 898 } else { 899 DokuCookie.setValue('size',''); 900 media_manager.width = false; 901 } 902 } 903}; 904 905addInitEvent(function(){ 906 media_manager.treeattach($('media__tree')); 907 media_manager.selectorattach($('media__content')); 908 media_manager.confirmattach($('media__content')); 909 media_manager.attachoptions($('media__opts')); 910 media_manager.initpopup(); 911 media_manager.initFlashUpload(); 912}); 913 914// style nach linkwiz 915