From 149e5f262e67264b1612d6c62a67b30341186dd8 Mon Sep 17 00:00:00 2001
From: Dominik Eckelmann <eckelmann@cosmocode.de>
Date: Thu, 18 Feb 2010 11:59:28 +0100
Subject: [PATCH] extended mediamanager options

---
 inc/lang/en/lang.php      |  22 ++
 lib/scripts/media.js      | 572 +++++++++++++++++++++++++++++++++++++-
 lib/tpl/default/media.css |  93 +++++++
 3 files changed, 682 insertions(+), 5 deletions(-)

diff --git a/inc/lang/en/lang.php b/inc/lang/en/lang.php
index 98ded12ca..82e414cd3 100644
--- a/inc/lang/en/lang.php
+++ b/inc/lang/en/lang.php
@@ -129,6 +129,28 @@ $lang['mediaroot']   = 'root';
 $lang['mediaupload'] = 'Upload a file to the current namespace here. To create subnamespaces, prepend them to your "Upload as" filename separated by colons.';
 $lang['mediaextchange'] = 'Filextension changed from .%s to .%s!';
 
+$lang['js']['mediatitle']       = 'Link settings';
+$lang['js']['mediadisplay']     = 'Link type';
+$lang['js']['mediaalign']       = 'Alignment';
+$lang['js']['mediasize']        = 'Image size';
+$lang['js']['mediatarget']      = 'Link target';
+$lang['js']['mediaclose']       = 'Close';
+$lang['js']['mediainsert']      = 'Insert';
+$lang['js']['mediadisplayimg']  = 'Show the image.';
+$lang['js']['mediadisplaylnk']  = 'Show only the link.';
+$lang['js']['mediasmall']       = 'Small version';
+$lang['js']['mediamedium']      = 'Medium version';
+$lang['js']['medialarge']       = 'Large version';
+$lang['js']['mediaextralarge']       = 'Extra large version';
+$lang['js']['medialnk']         = 'Link to detail page';
+$lang['js']['mediadirect']      = 'Direct link to original';
+$lang['js']['medianolnk']       = 'No link';
+$lang['js']['medianolink']      = 'Do not link the image';
+$lang['js']['medialeft']        = 'Align the image on the left.';
+$lang['js']['mediaright']       = 'Align the image on the right.';
+$lang['js']['mediacenter']      = 'Align the image in the middle.';
+$lang['js']['medianoalign']     = 'Use no align.';
+
 $lang['reference']   = 'References for';
 $lang['ref_inuse']   = 'The file can\'t be deleted, because it\'s still used by the following pages:';
 $lang['ref_hidden']  = 'Some references  are on pages you don\'t have permission to read';
diff --git a/lib/scripts/media.js b/lib/scripts/media.js
index 3e4213f19..3f0a8fb65 100644
--- a/lib/scripts/media.js
+++ b/lib/scripts/media.js
@@ -6,6 +6,13 @@
 var media_manager = {
     keepopen: false,
     hide: false,
+    align: false,
+    popup: false,
+    id: false,
+    display: false,
+    link: false,
+    size: false,
+    ext: false,
 
     /**
      * Attach event handlers to all "folders" below the given element
@@ -218,24 +225,466 @@ var media_manager = {
     },
 
     /**
-     * Insert the clicked image into the opener's textarea
-     *
-     * @author Andreas Gohr <andi@splitbrain.org>
+     * shows the popup for a image link
      */
     select: function(event,link){
         var id = link.name.substr(2);
 
+        media_manager.id = id;
         if(!opener){
             // if we don't run in popup display example
             var ex = $('ex_'+id.replace(/:/g,'_'));
             if(ex.style.display == ''){
                 ex.style.display = 'none';
-            }else{
+            } else {
                 ex.style.display = '';
             }
             return false;
         }
-        opener.insertTags('wiki__text','{{'+id+'|','}}','');
+
+        media_manager.ext = false;
+        var dot = id.lastIndexOf(".");
+        if (dot != -1) {
+            var ext = id.substr(dot,id.length);
+
+            if (ext != '.jpg' && ext != '.jpeg' && ext != '.png' && ext != '.gif' && ext != '.swf') {
+                media_manager.insert(null);
+                return false;
+            }
+        } else {
+            media_manager.insert(null);
+            return false;
+        }
+
+        media_manager.popup.style.display = 'inline';
+        media_manager.popup.style.left = event.pageX + 'px';
+        media_manager.popup.style.top = event.pageY + 'px';
+ 
+        // set all buttons to outset
+        media_manager.outSet('media__linkbtn1');
+        media_manager.outSet('media__linkbtn2');
+        media_manager.outSet('media__linkbtn3');
+        media_manager.outSet('media__linkbtn4');
+
+        media_manager.outSet('media__alignbtn0');
+        media_manager.outSet('media__alignbtn1');
+        media_manager.outSet('media__alignbtn2');
+        media_manager.outSet('media__alignbtn3');
+        
+        media_manager.outSet('media__sizebtn1');
+        media_manager.outSet('media__sizebtn2');
+        media_manager.outSet('media__sizebtn3');
+        media_manager.outSet('media__sizebtn4');
+
+
+        if (ext == '.swf') {
+            media_manager.ext = 'swf';
+
+            // disable display buttons for detail and linked image
+            $('media__linkbtn1').style.display = 'none';
+            $('media__linkbtn2').style.display = 'none';
+
+            // set the link button to default
+            if (media_manager.link != false) {
+                if ( media_manager.link == '2' || media_manager.link == '1')  {
+                    media_manager.inSet('media__linkbtn3');
+                    media_manager.link = '3';
+                    DokuCookie.setValue('link','3');
+                } else {
+                    media_manager.inSet('media__linkbtn'+media_manager.link);
+                }
+            } else if (DokuCookie.getValue('link')) {
+                if ( DokuCookie.getValue('link') == '2' ||  DokuCookie.getValue('link') == '1')  {
+                    // this options are not availible
+                    media_manager.inSet('media__linkbtn3');
+                    media_manager.link = '3';
+                    DokuCookie.setValue('link','3');
+                } else {
+                    media_manager.inSet('media__linkbtn'+DokuCookie.getValue('link'));
+                    media_manager.link = DokuCookie.getValue('link');
+                }
+            } else {
+                // default case
+                media_manager.link = '3';
+                media_manager.inSet('media__linkbtn3');
+                DokuCookie.setValue('link','3');
+            }
+
+        } else {
+            media_manager.ext = 'img';
+
+            // ensure that the display buttens are there
+            $('media__linkbtn1').style.display = 'inline';
+            $('media__linkbtn2').style.display = 'inline';
+
+            // set the link button to default
+            if (media_manager.link != false) {
+                media_manager.inSet('media__linkbtn'+media_manager.link);
+            } else if (DokuCookie.getValue('link')) {
+                media_manager.inSet('media__linkbtn'+DokuCookie.getValue('link'));
+                media_manager.link = DokuCookie.getValue('link');
+            } else {
+                // default case
+                media_manager.link = '1';
+                media_manager.inSet('media__linkbtn1');
+                DokuCookie.setValue('link','1');
+            }
+        }
+
+        if (media_manager.link == '4') {
+            media_manager.align = false;
+            media_manager.size = false;
+            $('media__align').style.display = 'none';
+            $('media__size').style.display = 'none';
+        } else {
+            $('media__align').style.display = 'block';
+            $('media__size').style.display = 'block';
+
+            // set the align button to default
+            if (media_manager.align != false) {
+                media_manager.inSet('media__alignbtn'+media_manager.align);
+            } else if (DokuCookie.getValue('align')) {
+                media_manager.inSet('media__alignbtn'+DokuCookie.getValue('align'));
+                media_manager.align = DokuCookie.getValue('align');
+            } else {
+                // default case
+                media_manager.align = '0';
+                media_manager.inSet('media__alignbtn0');
+                DokuCookie.setValue('align','0');
+            }
+
+            // set the size button to default
+            if (media_manager.size != false) {
+                media_manager.inSet('media__sizebtn'+media_manager.size);
+            } else if (DokuCookie.getValue('size')) {
+                media_manager.inSet('media__sizebtn'+DokuCookie.getValue('size'));
+                media_manager.size = DokuCookie.getValue('size');
+            } else {
+                // default case
+                media_manager.size = '2';
+                media_manager.inSet('media__sizebtn2');
+                DokuCookie.setValue('size','2');
+            }
+
+
+            $('media__sendbtn').focus();
+        }
+
+       return false;
+    },
+
+    /**
+     * build the popup window
+     *
+     * @author Dominik Eckelmann <eckelmann@cosmocode.de>
+     */
+    initpopup: function() {
+
+        media_manager.popup = document.createElement('div');
+        media_manager.popup.setAttribute('id','media__popup');
+
+        var root = document.getElementById('media__manager');
+        if (root == null) return;
+        root.appendChild(media_manager.popup);
+
+        var headline    = document.createElement('h1');
+        var headlineimg = document.createElement('img');
+        var headtext    = document.createElement('span');
+        headlineimg.src = '/lib/images/close.png';
+        headlineimg.id  = 'media__closeimg';
+        addEvent(headlineimg,'click',function(event){ return media_manager.closePopup(event,this); });
+        headline.appendChild(headlineimg);
+        headtext.textContent = LANG['mediatitle'];
+        headline.appendChild(headtext);
+        media_manager.popup.appendChild(headline);
+        drag.attach(media_manager.popup,headline);
+
+        // link
+
+        var linkp    = document.createElement('p');
+        var linkl    = document.createElement('label');
+        var linkbtn1 = document.createElement('button');
+        var linkbtn2 = document.createElement('button');
+        var linkbtn3 = document.createElement('button');
+        var linkbtn4 = document.createElement('button');
+        var linkimg1 = document.createElement('img');
+        var linkimg2 = document.createElement('img');
+        var linkimg3 = document.createElement('img');
+        var linkimg4 = document.createElement('img');
+
+        linkp.id = "media__linkstyle";
+        if (media_manager.display == "2") {
+            linkp.style.display = "none";
+        }
+
+        linkp.appendChild(linkl);
+        linkp.appendChild(linkbtn1);
+        linkp.appendChild(linkbtn2);
+        linkp.appendChild(linkbtn3);
+        linkp.appendChild(linkbtn4);
+
+        linkl.innerHTML = LANG['mediatarget'];
+
+        linkimg1.src = '/lib/images/image_info.png';
+        linkimg2.src = '/lib/images/image_link.png';
+        linkimg3.src = '/lib/images/image.png';
+        linkimg4.src = '/lib/images/link.png';
+
+        linkbtn1.setAttribute('class','button');
+        linkbtn1.appendChild(linkimg1);
+        linkbtn1.value = '1';
+        linkbtn1.id    = "media__linkbtn1";
+        linkbtn1.title = LANG['medialnk'];
+        linkbtn1.style.borderStyle = 'outset';
+        addEvent(linkbtn1,'click',function(event){ return media_manager.setlink(event,this); });
+
+        linkbtn2.setAttribute('class','button');
+        linkbtn2.appendChild(linkimg2);
+        linkbtn2.value = '2';
+        linkbtn2.id = "media__linkbtn2";
+        linkbtn2.title = LANG['mediadirect'];
+        linkbtn2.style.borderStyle = 'outset';
+        addEvent(linkbtn2,'click',function(event){ return media_manager.setlink(event,this); });
+
+        linkbtn3.setAttribute('class','button');
+        linkbtn3.appendChild(linkimg3);
+        linkbtn3.value = '3';
+        linkbtn3.id = "media__linkbtn3";
+        linkbtn3.title = LANG['medianolnk'];
+        linkbtn3.style.borderStyle = 'outset';
+        addEvent(linkbtn3,'click',function(event){ return media_manager.setlink(event,this); });
+
+        linkbtn4.setAttribute('class','button');
+        linkbtn4.appendChild(linkimg4);
+        linkbtn4.value = '4';
+        linkbtn4.id = "media__linkbtn4";
+        linkbtn4.title = LANG['mediadisplaylnk'];
+        linkbtn4.style.borderStyle = 'outset';
+        addEvent(linkbtn4,'click',function(event){ return media_manager.setlink(event,this); });
+
+        media_manager.popup.appendChild(linkp);
+
+        // align
+
+        var alignp    = document.createElement('p');
+        var alignl    = document.createElement('label');
+        var alignbtn0 = document.createElement('button');
+        var alignbtn1 = document.createElement('button');
+        var alignbtn2 = document.createElement('button');
+        var alignbtn3 = document.createElement('button');
+        var alignimg0 = document.createElement('img');
+        var alignimg1 = document.createElement('img');
+        var alignimg2 = document.createElement('img');
+        var alignimg3 = document.createElement('img');
+        alignp.appendChild(alignl);
+        alignp.id = 'media__align';
+        if (media_manager.display == "2") {
+            alignp.style.display = "none";
+        }
+
+        alignp.appendChild(alignbtn0);
+        alignp.appendChild(alignbtn1);
+        alignp.appendChild(alignbtn2);
+        alignp.appendChild(alignbtn3);
+
+        alignl.innerHTML = LANG['mediaalign'];
+
+        alignimg0.src = '/lib/images/text_align_left.png';
+        alignimg1.src = '/lib/images/text_align_left.png';
+        alignimg2.src = '/lib/images/text_align_center.png';
+        alignimg3.src = '/lib/images/text_align_right.png';
+
+        alignbtn0.id    = "media__alignbtn0";
+        alignbtn0.value = '0';
+        alignbtn0.title = LANG['medianoalign'];
+        alignbtn0.setAttribute('class','button');
+        alignbtn0.appendChild(alignimg0);
+        alignbtn0.style.borderStyle = 'outset';
+        addEvent(alignbtn0,'click',function(event){ return media_manager.setalign(event,this); });
+
+        alignbtn1.id    = "media__alignbtn1";
+        alignbtn1.value = '1';
+        alignbtn1.title = LANG['medialeft'];
+        alignbtn1.setAttribute('class','button');
+        alignbtn1.appendChild(alignimg1);
+        alignbtn1.style.borderStyle = 'outset';
+        addEvent(alignbtn1,'click',function(event){ return media_manager.setalign(event,this); });
+
+        alignbtn2.value = '2';
+        alignbtn2.id    = "media__alignbtn2";
+        alignbtn2.title = LANG['mediacenter'];
+        alignbtn2.setAttribute('class','button');
+        alignbtn2.appendChild(alignimg2);
+        alignbtn2.style.borderStyle = 'outset';
+        addEvent(alignbtn2,'click',function(event){ return media_manager.setalign(event,this); });
+
+        alignbtn3.value = '3';
+        alignbtn3.id    = "media__alignbtn3";
+        alignbtn3.title = LANG['mediaright'];
+        alignbtn3.setAttribute('class','button');
+        alignbtn3.appendChild(alignimg3);
+        alignbtn3.style.borderStyle = 'outset';
+        addEvent(alignbtn3,'click',function(event){ return media_manager.setalign(event,this); });
+
+        media_manager.popup.appendChild(alignp);
+
+        // size
+
+        var sizep    = document.createElement('p');
+        var sizel    = document.createElement('label');
+        var sizebtn1 = document.createElement('button');
+        var sizebtn2 = document.createElement('button');
+        var sizebtn3 = document.createElement('button');
+        var sizebtn4 = document.createElement('button');
+        var sizeimg1 = document.createElement('img');
+        var sizeimg2 = document.createElement('img');
+        var sizeimg3 = document.createElement('img');
+        var sizeimg4 = document.createElement('img');
+        sizep.id = 'media__size';
+        if (media_manager.display == "2") {
+            sizep.style.display = "none";
+        }
+
+        sizep.appendChild(sizel);
+        sizep.appendChild(sizebtn1);
+        sizep.appendChild(sizebtn2);
+        sizep.appendChild(sizebtn3);
+        sizep.appendChild(sizebtn4);
+
+        sizel.innerHTML = LANG['mediasize'];
+
+        sizeimg1.src = '/lib/images/magifier_zoom_out.png';
+        sizeimg2.src = '/lib/images/magnifier.png';
+        sizeimg3.src = '/lib/images/magnifier_zoom_in.png';
+        sizeimg4.src = '/lib/images/magnifier_zoom_in.png';
+
+        sizebtn1.setAttribute('class','button');
+        sizebtn1.appendChild(sizeimg1);
+        sizebtn1.value = '1';
+        sizebtn1.id    = 'media__sizebtn1';
+        sizebtn1.title = LANG['mediasmall'];
+        sizebtn1.style.borderStyle = 'outset';
+        addEvent(sizebtn1,'click',function(event){ return media_manager.setsize(event,this); });
+
+        sizebtn2.setAttribute('class','button');
+        sizebtn2.appendChild(sizeimg2);
+        sizebtn2.value = '2';
+        sizebtn2.id    = 'media__sizebtn2';
+        sizebtn2.title = LANG['mediamedium'];
+        sizebtn2.style.borderStyle = 'outset';
+        addEvent(sizebtn2,'click',function(event){ return media_manager.setsize(event,this); });
+
+        sizebtn3.setAttribute('class','button');
+        sizebtn3.appendChild(sizeimg3);
+        sizebtn3.value = '3';
+        sizebtn3.id    = 'media__sizebtn3';
+        sizebtn3.title = LANG['medialarge'];
+        sizebtn3.style.borderStyle = 'outset';
+        addEvent(sizebtn3,'click',function(event){ return media_manager.setsize(event,this); });
+
+        sizebtn4.setAttribute('class','button');
+        sizebtn4.appendChild(sizeimg4);
+        sizebtn4.value = '4';
+        sizebtn4.id    = 'media__sizebtn4';
+        sizebtn4.title = LANG['mediaextralarge'];
+        sizebtn4.style.borderStyle = 'outset';
+        addEvent(sizebtn4,'click',function(event){ return media_manager.setsize(event,this); });
+
+        media_manager.popup.appendChild(sizep);
+
+        // send and close button
+
+        var btnp = document.createElement('p');
+        media_manager.popup.appendChild(btnp);
+        btnp.setAttribute('class','btnlbl');
+
+        var cls = document.createElement('input');
+        cls.type  = 'button';
+        cls.setAttribute('class','button');
+        cls.value = LANG['mediaclose'];
+        btnp.appendChild(cls);
+        addEvent(cls,'click',function(event){ return media_manager.closePopup(event,this); });
+
+        var btn  = document.createElement('input');
+        btn.type = 'button';
+        btn.id   = 'media__sendbtn';
+        btn.setAttribute('class','button');
+        btn.value = LANG['mediainsert'];
+        btnp.appendChild(btn);
+        addEvent(btn,'click',function(event){ return media_manager.insert(event); });
+    },
+
+    /**
+     * Insert the clicked image into the opener's textarea
+     *
+     * @author Andreas Gohr <andi@splitbrain.org>
+     * @author Dominik Eckelmann <eckelmann@cosmocode.de>
+     */
+    insert: function(event){
+        var id = media_manager.id;
+        // set syntax options
+        $('media__popup').style.display = 'none';
+
+        var opts       = '';
+        var optsstart  = '';
+        var alignleft  = '';
+        var alignright = '';
+
+        if (media_manager.ext == 'img' || media_manager.ext == 'swf') {
+
+            if (media_manager.link == '4') {
+                    opts = '?linkonly';
+            } else {
+
+                if (media_manager.link == "3" && media_manager.ext == 'img') {
+                    opts = '?nolink';
+                    optsstart = true;
+                } else if (media_manager.link == "2" && media_manager.ext == 'img') {
+                    opts = '?direct';
+                    optsstart = true;
+                }
+
+                var s = parseInt(media_manager.size);
+
+                if (s && s >= 1) {
+                    opts += (optsstart)?'&':'?';
+                    if (s=="1") {
+                        opts += '100';
+                        if (media_manager.ext == 'swf') {
+                            opts += 'x62';
+                        }
+                    } else if (s=="2") {
+                        opts += '200';
+                        if (media_manager.ext == 'swf') {
+                            opts += 'x123';
+                        }
+                    } else if (s=="3"){
+                        opts += '300';
+                        if (media_manager.ext == 'swf') {
+                            opts += 'x185';
+                        }
+                    } else if (s=="4") {
+                        opts += '400';
+                        if (media_manager.ext == 'swf') {
+                            opts += 'x247';
+                        }
+                    }
+                }
+                if (media_manager.align == '1') {
+                    alignleft = '';
+                    alignright = ' ';
+                }
+                if (media_manager.align == '2') {
+                    alignleft = ' ';
+                    alignright = ' ';
+                }
+                if (media_manager.align == '3') {
+                    alignleft = ' ';
+                    alignright = '';
+                }
+            }
+        }
+        opener.insertTags('wiki__text','{{'+alignleft+id+opts+alignright+'|','}}','');
 
         if(!media_manager.keepopen) window.close();
         opener.focus();
@@ -340,6 +789,116 @@ var media_manager = {
                             oflash.style.display = '';
                          };
         oform.appendChild(clicky);
+    },
+
+    /**
+     * closes the link type popup
+     */
+    closePopup: function(event) {
+        $('media__popup').style.display = 'none';
+    },
+
+    /**
+     * set the align
+     *
+     * @author Dominik Eckelmann <eckelmann@cosmocode.de>
+     */
+    setalign: function(event,cb){
+        if(cb.value){
+            DokuCookie.setValue('align',cb.value);
+            media_manager.align = cb.value;
+            media_manager.outSet("media__alignbtn0");
+            media_manager.outSet("media__alignbtn1");
+            media_manager.outSet("media__alignbtn2");
+            media_manager.outSet("media__alignbtn3");
+            media_manager.inSet("media__alignbtn"+cb.value);
+        }else{
+            DokuCookie.setValue('align','');
+            media_manager.align = false;
+        }
+    },
+    /**
+     * set the link type
+     *
+     * @author Dominik Eckelmann <eckelmann@cosmocode.de>
+     */
+    setlink: function(event,cb){
+        if(cb.value){
+            DokuCookie.setValue('link',cb.value);
+            media_manager.link = cb.value;
+            media_manager.outSet("media__linkbtn1");
+            media_manager.outSet("media__linkbtn2");
+            media_manager.outSet("media__linkbtn3");
+            media_manager.outSet("media__linkbtn4");
+            media_manager.inSet("media__linkbtn"+cb.value);
+            var size = document.getElementById("media__size");
+            var align = document.getElementById("media__align");
+            if (cb.value != '4') {
+                size.style.display  = "block";
+                align.style.display = "block";
+            } else {
+                size.style.display  = "none";
+                align.style.display = "none";
+            }
+        }else{
+            DokuCookie.setValue('link','');
+            media_manager.link = false;
+        }
+    },
+
+    /**
+     * set the display type
+     *
+     * @author Dominik Eckelmann <eckelmann@cosmocode.de>
+     */
+    setdisplay: function(event,cb){
+        if(cb.value){
+            DokuCookie.setValue('display',cb.value);
+            media_manager.display = cb.value;
+            media_manager.outSet("media__displaybtn1");
+            media_manager.outSet("media__displaybtn2");
+            media_manager.inSet("media__displaybtn"+cb.value);
+
+        }else{
+            DokuCookie.setValue('display','');
+            media_manager.align = false;
+        }
+    },
+
+    /**
+     * sets the border to outset
+     */
+    outSet: function(id) {
+        var ele = document.getElementById(id);
+        if (ele == null) return;
+        ele.style.borderStyle = "outset";
+    },
+    /**
+     * sets the border to inset
+     */
+    inSet: function(id) {
+        var ele = document.getElementById(id);
+        if (ele == null) return;
+        ele.style.borderStyle = "inset";
+    },
+
+    /**
+     * set the image size
+     *
+     * @author Dominik Eckelmann <eckelmann@cosmocode.de>
+     */
+    setsize: function(event,cb){
+        if (cb.value) {
+            DokuCookie.setValue('size',cb.value);
+            media_manager.size = cb.value;
+            media_manager.outSet("media__sizebtn1");
+            media_manager.outSet("media__sizebtn2");
+            media_manager.outSet("media__sizebtn3");
+            media_manager.inSet("media__sizebtn"+cb.value);
+        } else {
+            DokuCookie.setValue('size','');
+            media_manager.width = false;
+        }
     }
 };
 
@@ -348,5 +907,8 @@ addInitEvent(function(){
     media_manager.selectorattach($('media__content'));
     media_manager.confirmattach($('media__content'));
     media_manager.attachoptions($('media__opts'));
+    media_manager.initpopup();
     media_manager.initFlashUpload();
 });
+
+// style nach linkwiz
diff --git a/lib/tpl/default/media.css b/lib/tpl/default/media.css
index 2831c984f..0bd70db3c 100644
--- a/lib/tpl/default/media.css
+++ b/lib/tpl/default/media.css
@@ -89,6 +89,99 @@ it's dirty, so any "real" fixes are welcome */
     clear: left;
 }
 
+/* --- popup --- */
+
+#media__popup {
+    background-color:__background__;
+    display:none;
+    border: 1px solid __border__;
+    position: absolute;
+    width:270px;
+}
+
+#media__popup h1 {
+    text-align:center;
+    font-weight:normal;
+    background-color: __background_alt__;
+    height: 16px;
+    margin-bottom: 5px;
+    font-size:12px;
+    border-bottom: 0;
+}
+
+#media__popup p {
+    display:block;
+    line-height:14pt;
+    margin:0.5em;
+}
+
+#media_nolink {
+    padding:4px 0;
+}
+
+#media__popup label {
+    float:left;
+    width:9em;
+}
+
+#media__popup .button {
+    margin-left:auto;
+    margin-right:auto;
+}
+
+#media__popup .btnlbl {
+    text-align:center;
+}
+
+#media__popup .btnlbl input {
+    margin:0 1em;
+}
+
+#media__closeimg {
+    float:right;
+}
+
+/* --- display options --- */
+
+#media__linkopts label,
+#media__nolnk {
+	width: 80px;
+	float: left;
+	margin-left: 10px;
+}
+
+#media__linkopts label{
+	line-height: 20px;
+}
+
+#media__nolnk,
+#media__linkopts label.long{
+	margin-bottom: 8px;
+	line-height: 12px;
+}
+
+#media__linkopts label.long{
+	width: 150px;
+	float: none;
+}
+
+#media__linkopts br {
+	clear: both;
+}
+
+#media__linkopts select {
+	width: 60px;
+	margin-left: 10px;
+}
+
+#media__linkopts input.edit {
+    width:50px;
+    margin-left:10px;
+}
+#media__linkopts #media__title {
+    width:150px;
+}
+
 /* --- file list --- */
 
 #media__content img.load {
-- 
GitLab