Changeset 18157

Show
Ignore:
Timestamp:
08/24/08 04:14:14 (5 years ago)
Author:
NeoCat
Message:

support direct messages

Location:
websites/twicli
Files:
2 modified

Legend:

Unmodified
Added
Removed
  • websites/twicli/index.html

    r18128 r18157  
    5353<li>タブ 
    5454<ul> 
    55 <li>TL: タイムライン、reply: 自分宛の返信を表示、ユーザ名: ユーザ情報、direct: ダイレクトメッセージ(未実装)を表示します。 
     55<li>TL: タイムライン、reply: 自分宛の返信を表示、ユーザ名: ユーザ情報、direct: ダイレクトメッセージを表示します。 
    5656<li>TL以外は自動でアップデートされません。更新するには再度タブをクリックしてください。 
    5757<li>他のタブに切り替えている間もTLは更新されていきます。 
  • websites/twicli/twicli.html

    r18153 r18157  
    7474var direct_ele1 = false; 
    7575var direct_ele2 = false; 
     76var direct1 = false; 
     77var direct2 = false; 
    7678var reply_ele = false; 
    7779var rep_top = 0; 
     
    175177        $('rep').style.display='none'; 
    176178} 
    177 // 最新twitを取得 
     179// 最新タイムラインを取得 
    178180function update() { 
    179181        update_ele = loadXDomainScript('http://twitter.com/statuses/friends_timeline?seq=' + (seq++) + 
     
    192194                        (tw.user.url ? '<a target="twitter" href="'+tw.user.url+'">' : '') + 
    193195                        '<img align="left" width="24" height="24" src="' + tw.user.profile_image_url + '">' + (tw.user.url ? '</a>' : '') + 
     196                        /*ダイレクトメッセージの方向*/ (tw.d_dir == 1 ? '<b>←</b> ' : tw.d_dir == 2 ? '<b>→</b> ' : '') + 
    194197                        //名前 
    195198                        "<a href=\"javascript:switchUser('" + tw.user.screen_name + "')\">" + tw.user.screen_name + 
     
    200203                " <span onClick=\"replyTo('" + tw.user.screen_name + "'," + tw.id + ")\" class=\"status\">" + 
    201204                //本文 (https〜をリンクに置換 + @をtwitter本家へのリンクに置換) 
    202                 tw.text.replace(/(https?:\/\/[^ ]*)/g, " <a onClick=\"event.stopPropagation();\" target=\"_blank\" href=\"$1\">$1</a>") 
     205                tw.text.replace(/(https?:\/\/[^ \n]+)/g, " <a onClick=\"event.stopPropagation();\" target=\"_blank\" href=\"$1\">$1</a>") 
    203206                                .replace(/@([0-9A-Za-z_\-]+)/g, "<a onClick=\"event.stopPropagation();\" " + 
    204                                                         "href=\"javascript:switchUser('$1')\">@$1</a>") + '</span>' + 
     207                                                        "href=\"javascript:switchUser('$1')\">@$1</a>").replace(/\n/g, "<br>") + '</span>' + 
    205208                //日付 
    206209                '<span class="date">' + dateFmt(new Date(tw.created_at)) + '</span>' + 
     
    228231        $("user").innerHTML = last_user; 
    229232} 
     233// ダイレクトメッセージ一覧の受信 
     234function twDirect1(tw) { 
     235        direct1 = tw; 
     236        if (direct2) 
     237                twDirectShow(); 
     238} 
     239function twDirect2(tw) { 
     240        direct2 = tw; 
     241        if (direct1) 
     242                twDirectShow(); 
     243} 
     244function twDirectShow() { 
     245        var direct = direct1.concat(direct2).sort(function(a,b){return b.id - a.id}); 
     246        direct = direct.map(function(d){ 
     247                if (d.recipient_screen_name == myname) { 
     248                        d.user = d.sender; 
     249                        d.d_dir = 1; 
     250                } else { 
     251                        d.user = d.recipient; 
     252                        d.d_dir = 2; 
     253                } 
     254                return d; 
     255        }); 
     256        twShow2(direct); 
     257        direct1 = direct2 = false; 
     258} 
    230259// API制限情報の受信 
    231260function twLimit(lim) { 
     261        $("loading").style.display = "none"; 
    232262        $("tw2c").innerHTML = "<b>Twitter API status:</b><br>" + 
    233263                                        "hourly limit : " + lim.remaining_hits + " / " + lim.hourly_limit + "<br>" + 
     
    275305                        s.id = twNode.id + "-" + tw[i].id; 
    276306                        s.innerHTML = makeHTML(tw[i], no_name); 
    277                         if (tw[i].text.match('@'+myname+' ')) 
     307                        if (tw[i].d_dir == 1 || tw[i].text.match('@'+myname+' ')) 
    278308                                s.className = "tome"; 
    279                         if (tw[i].user.screen_name == myname) 
     309                        if (tw[i].d_dir == 2 || tw[i].user.screen_name == myname) 
    280310                                s.className = "fromme"; 
    281311                        pNode.insertBefore(s, pNode.childNodes[0]); 
     
    327357function switchReply() { 
    328358        switchTo("reply"); 
     359        $("loading").style.display = "block"; 
    329360        update_ele2 = loadXDomainScript('http://twitter.com/statuses/replies.json?seq=' + (seq++) + 
    330361                                                                                '&callback=twShow2', update_ele2); 
     
    336367        switchTo("user"); 
    337368        $("tw2h").innerHTML = "<div id=\"user_info\">loading ...</div>"; 
     369        $("loading").style.display = "block"; 
    338370        update_ele2 = loadXDomainScript('http://twitter.com/statuses/user_timeline.json?seq=' + (seq++) + 
    339371                                                                                '&id=' + user + '&callback=twShow2', update_ele2); 
     
    341373function switchDirect() { 
    342374        switchTo("direct"); 
     375        $("loading").style.display = "block"; 
    343376        direct_ele1 = loadXDomainScript('http://twitter.com/direct_messages.json?seq=' + (seq++) + 
    344377                                                                                '&callback=twDirect1', direct_ele1); 
     
    350383        $("tw2h").innerHTML = '<p><a target="twitter" href="index.html"><b>twicli</b></a> : browser-base Twitter client</p><hr>' + 
    351384                                                                '<p><form onSubmit="switchUser($(\'user_id\').value); return false;">show user info : @<input type="text" size="15" id="user_id"></form></p><hr>'; 
     385        $("loading").style.display = "block"; 
    352386        update_ele2 = loadXDomainScript('http://twitter.com/account/rate_limit_status.json?seq=' + (seq++) + 
    353387                                                                                '&id=' + user + '&callback=twLimit', update_ele2);