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