コンテンツにスキップ

利用者:Jkr2255/util.js

お知らせ: 保存した後、ブラウザのキャッシュをクリアしてページを再読み込みする必要があります。

多くの WindowsLinux のブラウザ

  • Ctrl を押しながら F5 を押す。

Mac における Safari

  • Shift を押しながら、更新ボタン をクリックする。

Mac における ChromeFirefox

  • Cmd Shift を押しながら R を押す。

詳細についてはWikipedia:キャッシュを消すをご覧ください。

(function(undefined){
 
var __btnspan='<span class="vh-button" $2>$1<span class="vh-popup"></span></span>'
 
var __newbtn=function(text,id){
  var span=__btnspan.replace("$1",text);
  if(id==undefined||id=="")span=span.replace("$2","");
  else span=span.replace("$2",'id="' + id + '"');
  this.$item=$(span);
}
 
__newbtn.prototype={
  _timer:null,
  get$:function(){return this.$item;},
  addMenu:function(text,action,option){
    var $link=$('<a>' + text + '</a>');
    if(typeof(action)=="string"){
      $link.attr("href",action);
      if(option)$link.attr("target","_new");
    }else if($.isFunction(action)){
      $link.attr("href","javascript:void(0)");
      $link.click(action);
    }
    this.$item.find('.vh-popup').append($link);
  },
  click:function(e){
    $(e.currentTarget).children('.vh-popup').slideDown('fast');
  },
  mouseleave:function(e){
    e.vfdBtn._timer=setTimeout(function(){e.vfdBtn.timeout(e);},200);
  },
  timeout:function(e){
    $(e.currentTarget).children('.vh-popup').hide();
  },
  mouseenter:function(e){
    if(e.vfdBtn._timer){
      clearTimeout(e.vfdBtn._timer);
      e.vfdBtn._timer=null;
    }
  }
}
 
window.jkr2255=$.extend({
 
  post:function(url,params,newwin){
    var uniqId=Math.random()+"";
    uniqId=uniqId.replace(".","");
    var s='<div style="display:none"><form method="post" enctype="multipart/form-data" id="' +uniqId +'" ';
    var $form,$hidden;
    if(newwin){s+='target="_blank" '}
    s+='action="' + url +'"></form></div>';
    $form=$(s);
    $form.appendTo('body');
    $.each(params,function(key,value){
      $hidden=$('<input type="hidden" name="' + key +'" value="" />');
      $hidden.appendTo($form.find('#'+uniqId));
      $hidden.val(value);
    });
    $form.find('#'+uniqId).submit();
    $form.remove();
  },
 
  diffEdit:function(title,callback,newwin){
    function currentTimestamp () {
      var now = new Date();
      var ts  = "" + now.getUTCFullYear();
      function two (s) { return s.substr (s.length - 2); }
      ts = ts
        + two ('0' + (now.getUTCMonth() + 1))
        + two ('0' + now.getUTCDate())
        + two ('00' + now.getUTCHours())
        + two ('00' + now.getUTCMinutes())
        + two ('00' + now.getUTCSeconds());
      return ts;
    }
    var start=currentTimestamp();
    $.getJSON(
      "/w/api.php?format=json",
      {"action":"query","prop":"revisions","titles": title ,"rvprop":"timestamp|content"},
      function(data,status){
        var exists;
        var text,params,lastrev,ret;
        if(!data.query || !data.query.pages)return;
        $.each(data.query.pages,function(i,item){
          if(item.missing===""){
            exists=false;
            text="";
            return false;
          }
          exists=true;
          text=item.revisions[0]["*"];
          lastrev = item.revisions[0].timestamp.replace (/\D/g, "");
          return false; // not more than one loop
        });
        ret=callback(text,exists);
        if(!ret.text||ret.text==text)return false;
        params={wpTextbox1:ret.text,wpSummary:ret.summary,wpStarttime:start};
        if(exists){
          params.wpEdittime=lastrev;
          params.wpDiff="";
        }else{
          params.wpEdittime=params.wpPreview="";
        }
        jkr2255.post("/w/index.php?title=" 
                  +encodeURIComponent(title) +'&action=edit',params,newwin);
        return true;
    });
  },
 
  getToken:function(title,type,callback){
    $.getJSON(
      "/w/api.php?format=json",
      {"action":"query","titles":title,"prop":"info", "intoken":type},
      function(data,status){
        var token="";
        if(!data.query || !data.query.pages)return;
        $.each(data.query.pages,function(i,item){
          if(item[type+"token"]){
            token=item[type+"token"];
            return false; // not more than one loop
          }
        });
        if(token=="")return;
        callback(title,token);
    });
  },
  addPalette:function(id, str, bef ){
    var s;
    s='<div id="'+ id + '" class="portal collapsed"><h5>' +
      str + '</h5><div class="body"><ul></ul></div></div>';
    if(bef && $(bef).length!=0 ){
      $(bef).before(s);
    }else{
      $('#mw-panel').append(s);
    }
    if($.cookie('vector-nav-'+id)=="true") {
      $('#'+id).toggleClass("collapsed");
      $('#'+id).toggleClass("expanded");
      $('#'+id + ' .body').css("display","block");
    }
  },
  conditionalLoadJS:function(callback,url,inProject){
    if(!callback())return;
    if(inProject)url="//ja-two.iwiki.icu/w/index.php?title=" + url + "&action=raw&ctype=text/javascript";
    mw.loader.load(url,"text/javascript");
  },
  isLoaded:true,
 
  createButton:function(text,id){
    var b=new __newbtn(text,id);
    $.each(["click","mouseenter","mouseleave"],function(i,str){
      b.get$().bind(str + ".vfdbtn",function(e){
        e.vfdBtn=b;
        b[str](e);
      });
    });
    return b;
  },

  botAPIJSON:function(data,callback){
    var params=$.extend({maxlag:5},data);
    params.format="json"; //forced
    function loop(){
      $.get(mw.util.wikiScript('api'),params,function(data,status,xhr){
        var retrySec=xhr.getResponseHeader("Retry-After");
        if(retrySec){
          setTimeOut(loop,retrySec*1000);
        }else{
          callback(data,status,xhr);
        }
      },"json");
    }
    loop();
  }

},window.jkr2255);
})();
 
// backward compatibility
function jk_addPalette( id, str, bef ){
  jkr2255.addPalette(id, str, bef)
}
 
if(jkr2255.onLoad)jkr2255.onLoad();