Remove "info"-toolbar. This used to be shown for browsers which don't
[lhc/web/wiklou.git] / skins / common / wikibits.js
index 39ea802..b19bfc3 100644 (file)
@@ -1,7 +1,5 @@
 // Wikipedia JavaScript support functions
-// if this is true, the toolbar will no longer overwrite the infobox when you move the mouse over individual items
-var noOverwrite=false;
-var alertText;
+
 var clientPC = navigator.userAgent.toLowerCase(); // Get client info
 var is_gecko = ((clientPC.indexOf('gecko')!=-1) && (clientPC.indexOf('spoofer')==-1)
                 && (clientPC.indexOf('khtml') == -1) && (clientPC.indexOf('netscape/7.0')==-1));
@@ -261,62 +259,42 @@ function toggleToc() {
 // we use it to avoid creating the toolbar where javascript is not enabled
 function addButton(imageFile, speedTip, tagOpen, tagClose, sampleText) {
 
-       speedTip=escapeQuotes(speedTip);
+       // Don't generate buttons for browsers which don't fully
+       // support it.
+       if(!document.selection && !is_gecko) {
+               return false;
+       }
+       imageFile=escapeQuotesHTML(imageFile);
+       speedTip=escapeQuotesHTML(speedTip);
        tagOpen=escapeQuotes(tagOpen);
        tagClose=escapeQuotes(tagClose);
        sampleText=escapeQuotes(sampleText);
        var mouseOver="";
 
-       // we can't change the selection, so we show example texts
-       // when moving the mouse instead, until the first button is clicked
-       if(!document.selection && !is_gecko) {
-               // filter backslashes so it can be shown in the infobox
-               var re=new RegExp("\\\\n","g");
-               tagOpen=tagOpen.replace(re,"");
-               tagClose=tagClose.replace(re,"");
-               mouseOver = "onMouseover=\"if(!noOverwrite){document.infoform.infobox.value='"+tagOpen+sampleText+tagClose+"'};\"";
-       }
-
        document.write("<a href=\"javascript:insertTags");
        document.write("('"+tagOpen+"','"+tagClose+"','"+sampleText+"');\">");
-
-        document.write("<img width=\"23\" height=\"22\" src=\""+imageFile+"\" border=\"0\" alt=\""+speedTip+"\" title=\""+speedTip+"\""+mouseOver+">");
+       document.write("<img width=\"23\" height=\"22\" src=\""+imageFile+"\" border=\"0\" alt=\""+speedTip+"\" title=\""+speedTip+"\""+mouseOver+">");
        document.write("</a>");
        return;
 }
 
-function addInfobox(infoText,text_alert) {
-       alertText=text_alert;
-       var clientPC = navigator.userAgent.toLowerCase(); // Get client info
-
-       var re=new RegExp("\\\\n","g");
-       alertText=alertText.replace(re,"\n");
-
-       // if no support for changing selection, add a small copy & paste field
-       // document.selection is an IE-only property. The full toolbar works in IE and
-       // Gecko-based browsers.
-       if(!document.selection && !is_gecko) {
-               infoText=escapeQuotesHTML(infoText);
-               document.write("<form name='infoform' id='infoform'>"+
-                       "<input size=80 id='infobox' name='infobox' value=\""+
-                       infoText+"\" readonly='readonly'></form>");
-       }
-
-}
-
 function escapeQuotes(text) {
        var re=new RegExp("'","g");
        text=text.replace(re,"\\'");
-       re=new RegExp('"',"g");
-       text=text.replace(re,'&quot;');
        re=new RegExp("\\n","g");
        text=text.replace(re,"\\n");
-       return text;
+       return escapeQuotesHTML(text);
 }
 
 function escapeQuotesHTML(text) {
+       var re=new RegExp('&',"g");
+       text=text.replace(re,"&amp;");
        var re=new RegExp('"',"g");
        text=text.replace(re,"&quot;");
+       var re=new RegExp('<',"g");
+       text=text.replace(re,"&lt;");
+       var re=new RegExp('>',"g");
+       text=text.replace(re,"&gt;");
        return text;
 }
 
@@ -359,27 +337,9 @@ function insertTags(tagOpen, tagClose, sampleText) {
                txtarea.selectionEnd=cPos;
                txtarea.scrollTop=scrollTop;
 
-       // All others
-       } else {
-               var copy_alertText=alertText;
-               var re1=new RegExp("\\$1","g");
-               var re2=new RegExp("\\$2","g");
-               copy_alertText=copy_alertText.replace(re1,sampleText);
-               copy_alertText=copy_alertText.replace(re2,tagOpen+sampleText+tagClose);
-               var text;
-               if (sampleText) {
-                       text=prompt(copy_alertText);
-               } else {
-                       text="";
-               }
-               if(!text) { text=sampleText;}
-               text=tagOpen+text+tagClose;
-               document.infoform.infobox.value=text;
-               // in Safari this causes scrolling
-               if(!is_safari) {
-                       txtarea.focus();
-               }
-               noOverwrite=true;
+       // All other browsers get no toolbar.
+       // There was previously support for a crippled "help"
+       // bar, but that caused more problems than it solved.
        }
        // reposition cursor if possible
        if (txtarea.createTextRange) txtarea.caretPos = document.selection.createRange().duplicate();
@@ -388,29 +348,112 @@ function insertTags(tagOpen, tagClose, sampleText) {
 function akeytt() {
     if(typeof ta == "undefined" || !ta) return;
     pref = 'alt-';
-    if(is_safari || navigator.userAgent.toLowerCase().indexOf( 'mac' ) + 1 ) pref = 'control-';
+       if(is_safari || navigator.userAgent.toLowerCase().indexOf( 'mac' ) + 1
+           || navigator.userAgent.toLowerCase().indexOf( 'konqueror' ) + 1 ) pref = 'control-';
     if(is_opera) pref = 'shift-esc-';
+
     for(id in ta) {
         n = document.getElementById(id);
         if(n){
+                       // Are we putting accesskey in it
+                       if(ta[id][0].length > 0) {
+                               // Is this object a object? If not assume it's the next child.
+
+                               if ( n.nodeName.toLowerCase() == "a" ) {
+                                       a = n;
+                               } else {
             a = n.childNodes[0];
+                               }
+
             if(a){
-                if(ta[id][0].length > 0) {
                     a.accessKey = ta[id][0];
                     ak = ' ['+pref+ta[id][0]+']';
-                } else {
-                    ak = '';
                 }
-                a.title = ta[id][1]+ak;
-            } else {
-                if(ta[id][0].length > 0) {
-                    n.accessKey = ta[id][0];
-                    ak = ' ['+pref+ta[id][0]+']';
                 } else {
+                               // We don't care what type the object is when assigning tooltip
+                               a = n;
                     ak = '';
                 }
-                n.title = ta[id][1]+ak;
+
+                       if (a) {
+                               a.title = ta[id][1]+ak;
             }
         }
     }
 }
+
+function setupRightClickEdit() {
+       if( document.getElementsByTagName ) {
+               var divs = document.getElementsByTagName( 'div' );
+               for( var i = 0; i < divs.length; i++ ) {
+                       var el = divs[i];
+                       if( el.className == 'editsection' ) {
+                               addRightClickEditHandler( el );
+                       }
+               }
+       }
+}
+
+function addRightClickEditHandler( el ) {
+       for( var i = 0; i < el.childNodes.length; i++ ) {
+               var link = el.childNodes[i];
+               if( link.nodeType == 1 && link.nodeName.toLowerCase() == 'a' ) {
+                       var editHref = link.getAttribute( 'href' );
+                       
+                       // find the following a
+                       var next = el.nextSibling;
+                       while( next.nodeType != 1 )
+                               next = next.nextSibling;
+                       
+                       // find the following header
+                       next = next.nextSibling;
+                       while( next.nodeType != 1 )
+                               next = next.nextSibling;
+                       
+                       if( next && next.nodeType == 1 &&
+                               next.nodeName.match( /^[Hh][1-6]$/ ) ) {
+                               next.oncontextmenu = function() {
+                                       document.location = editHref;
+                                       return false;
+                               }
+                       }
+               }
+       }
+}
+
+function fillDestFilename() {
+       if (!document.getElementById) return;
+       var path = document.getElementById('wpUploadFile').value;
+       // Find trailing part
+       var slash = path.lastIndexOf( '/' );
+       var backslash = path.lastIndexOf( '\\' );
+       var fname;
+       if ( slash == -1 && backslash == -1 ) {
+               fname = path;
+       } else if ( slash > backslash ) {
+               fname = path.substring( slash+1, 10000 );
+       } else {
+               fname = path.substring( backslash+1, 10000 );
+       }
+
+       // Capitalise first letter and replace spaces by underscores
+       fname = fname.charAt(0).toUpperCase().concat(fname.substring(1,10000)).replace( / /g, '_' );
+
+       // Output result
+       var destFile = document.getElementById('wpDestFile');
+       if (destFile) destFile.value = fname;
+}
+       
+
+function considerChangingExpiryFocus() {
+       if (!document.getElementById) return;
+       var drop = document.getElementById('wpBlockExpiry');
+       if (!drop) return;
+       var field = document.getElementById('wpBlockOther');
+       if (!field) return;
+       var opt = drop.value;
+       if (opt == 'other')
+               field.style.display = '';
+       else
+               field.style.display = 'none';
+}