2008/08/05

Sidebar Icons

ウィキトラベルで使おうと思って1年前に作成したJavaScriptですが、残念ながらサイトの管理者(開発者)に興味を持ってもらえず、採用には至りませんでした。

先日、Blogger Slippy Mapウィジェットを作成した際にちらちらと見ていたので、こっちに貼っておこうと思います。

ウィキトラベルはMediaWikiを使っていますので、MediaWikiで動くように書いたつもりですが、動作確認はローカル (自分のPCのブラウザ) でしか行っておらず、サーバーに置いての確認はしていません。(サーバー持ってないし、ウィキトラベルではユーザーのCSSやJavaScriptを使うことできないので...)

JavaScript
 /* 
 
     User JavaScript
 
 */

 /** Icons for sidebar links ***************************************
  *
  *  Description: Mark sidebar links with icons (star, dotm, otbp) by changing the bullet 
  *                 into other list marker designated by Template:Sidebar-icons.
  *  Author: [[User:Tatata]]
  */
 
 function SidebarIcons()  {

     var markers, pLangLinks;

     // find marking template info
     markers = document.getElementsByTagName("span");
     for ( var i=0; i < markers.length; i++ ) {

          switch ( markers[i].className ) {
             case "sidebaricon-star":
             case "sidebaricon-dotm":
             case "sidebaricon-otbp":

                // links in p-lang ( "In other languages" box )
                if ( document.getElementById( "p-lang" ) ) {
                   pLangLinks = document.getElementById( "p-lang" ).getElementsByTagName( "li" );

                   // find language code and replace class name with if matched
                   for ( var j=0; j < pLangLinks.length; j++) {

                      var a, b;
                      a = markers[i].id;
                      b = markers[i].className + "-lang-" + pLangLinks[j].getElementsByTagName("a")[0].getAttribute("hreflang");

                      if ( a == b ) {
                         switch ( markers[i].className ) {
                            case "sidebaricon-star":
                               pLangLinks[j].className = markers[i].className;
                               pLangLinks[j].title = "This is a Star article in another language.";
                               break;
                            case "sidebaricon-dotm":
                               pLangLinks[j].className = markers[i].className;
                               pLangLinks[j].title = "This is a previous Destinations of the month article in another language.";
                               break;
                            case "sidebaricon-otbp":
                               pLangLinks[j].className = markers[i].className;
                               pLangLinks[j].title = "This is a previous Off the beaten path article in another language.";
                               break;
                            default:
                               break;
                         }
                      }
                   }
                }
                break;

             default:
                break;

          }

     }

 }
 
 addOnloadHook( SidebarIcons );



CSS
/* 
 
User CSS (Cascading Style Sheets)  
 
*/
 
/* Sidebar  Icons */

li.sidebaricon-star {
  list-style-image: url("http://wikitravel.org/upload/ja/0/07/Listmarker-star.png");
}
 
li.sidebaricon-dotm {
  list-style-image: url("http://wikitravel.org/upload/ja/0/08/Listmarker-dotm.png");
}

li.sidebaricon-otbp {
  list-style-image: url("http://wikitravel.org/upload/ja/e/e6/Listmarker-otbp.png");
}

Atom