Changeset 20836

Show
Ignore:
Timestamp:
10/06/08 14:04:40 (18 months ago)
Author:
yuroyoro
Message:

http://svn.coderepos.org/share/lang/javascript/userscripts/post_this_page.user.js: * はてなハイクへの投稿機能を追加。

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • lang/javascript/userscripts/post_this_page.user.js

    r19434 r20836  
    1111   var use_twitter = true;    // twitterを利用するか 
    1212   var use_wassr = true;      // wassrを利用するか 
     13   var use_hatenahike = true; // はてなハイクを利用するか 
    1314   var display_main = false;  // 現在Mainを表示しているかの状態 
    1415   var init_url = false;      // すでにTinyURLしたか 
     
    276277      e('PostThisPage_check_wassr_label').style.display = 'none'; 
    277278    } 
     279     
     280    // はてなハイクを利用するかの設定を取得 
     281    var config_use_hatenahike = GM_getValue('PostThisPage_use_hatenahike'); 
     282    if( config_use_hatenahike != undefined) use_hatenahike = config_use_hatenahike; 
     283    if( !use_wassr ){ 
     284      e('PostThisPage_check_hatenahike').style.display = 'none'; 
     285      e('PostThisPage_check_hatenahike_label').style.display = 'none'; 
     286    } 
    278287 
    279288  } 
     
    394403    checks.appendChild( check_wassr_label ); 
    395404     
     405    var check_hatenahike = c('input'); 
     406    with(check_hatenahike){ 
     407      id   = 'PostThisPage_check_hatenahike'; 
     408      type = 'checkbox'; 
     409      checked = 'true'; 
     410    } 
     411    checks.appendChild( check_hatenahike ); 
     412    var check_hatenahike_label = c('label'); 
     413    with(check_hatenahike_label){ 
     414      id   = 'PostThisPage_check_hatenahike_label'; 
     415      innerHTML = 'はてなハイク'; 
     416    } 
     417    check_hatenahike_label.setAttribute('for','PostThisPage_check_hatenahike'); 
     418    checks.appendChild( check_hatenahike_label ); 
     419     
    396420    content.appendChild( checks ); 
    397421     
     
    479503    } 
    480504    GM_setValue('PostThisPage_use_wassr' , use_wassr); 
     505  } 
     506   
     507  // はてなハイク利用設定の切り替え 
     508  function setHatenaHikeSetting(){ 
     509    if( use_hatenahike ){ 
     510      use_hatenahike = false; 
     511    } 
     512    else{ 
     513      use_hatenahike = true; 
     514    } 
     515    GM_setValue('PostThisPage_use_hatenahike' , use_hatenahike); 
    481516  } 
    482517     
     
    544579 
    545580   var t_lable = e('PostThisPage_check_twitter_label'); 
    546    var w_lable = e('PostThisPage_check_wassr_label');    
     581   var w_lable = e('PostThisPage_check_wassr_label'); 
     582   var h_lable = e('PostThisPage_check_hatenahike_label');    
    547583   t_lable.innerHTML = 'Twitter (' + (140 - len) + ')'; 
    548584   w_lable.innerHTML = 'Wassr (' + (255 - len) + ')';  
     585   h_lable.innerHTML = 'はてなハイク (' + (255 - len) + ')';  
    549586    
    550587   if( len > 130 ){ 
     
    566603   else{ 
    567604     w_lable.style.color = '#666666'; 
     605   } 
     606    
     607   if( len > 255 ){ 
     608     h_lable.style.color = '#d40d12'; 
     609   } 
     610   else if( len > 240 ){ 
     611     h_lable.style.color = '#5c0002'; 
     612   } 
     613   else{ 
     614     h_lable.style.color = '#666666'; 
    568615   } 
    569616  } 
     
    592639    var t_chk = e('PostThisPage_check_twitter'); 
    593640    var w_chk = e('PostThisPage_check_wassr'); 
     641    var h_chk = e('PostThisPage_check_hatenahike'); 
    594642    var text = e('PostThisPage_textarea'); 
    595643    var value = text.value; 
     
    598646     
    599647    if( w_chk.checked) post_wassr( value ); 
     648     
     649    if( h_chk.checked) post_HatenaHike( value ); 
    600650  } 
    601651   
     
    644694        console.log(res); 
    645695        append_message('Wassrへの投稿に失敗しました。'); 
     696      }, 
     697    }); 
     698  } 
     699   
     700  // はてなハイクにPOST 
     701  function post_HatenaHike(status) { 
     702    if( !use_hatenahike ) return; 
     703    if( status.length > 255 ){ 
     704      append_message('発言が255文字を超えるため、はてなハイクには投稿しません。'); 
     705      return; 
     706    } 
     707 
     708    GM_xmlhttpRequest({ 
     709      method : 'post', 
     710      url    : 'http://h.hatena.ne.jp/api/statuses/update.json', 
     711      headers: { 
     712        'Content-type': 'application/x-www-form-urlencoded', 
     713      }, 
     714      data   : 'status=' + encodeURIComponent(status) + '&source=PostThisPage!', 
     715      onload : function(res) { 
     716        append_message('はてなハイクに投稿しました。'); 
     717      }, 
     718      onerror: function(res) { 
     719        console.log(res); 
     720        append_message('はてなハイクへの投稿に失敗しました。'); 
    646721      }, 
    647722    }); 
     
    717792  GM_registerMenuCommand('Post this page! - Twitter', setTwitterSetting); 
    718793  GM_registerMenuCommand('Post this page! - Wassr', setWassrSetting); 
     794  GM_registerMenuCommand('Post this page! - はてなハイク', setHatenaHikeSetting); 
    719795})();