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