Changeset 23866
- Timestamp:
- 11/17/08 09:20:47 (5 years ago)
- Files:
-
- 1 modified
-
websites/twicli/twicli.html (modified) (25 diffs)
Legend:
- Unmodified
- Added
- Removed
-
websites/twicli/twicli.html
r23742 r23866 38 38 .lock { position: relative; top: 2px; left: 0; } 39 39 .close { color: red; } 40 # next { text-align: center; background-color: #999; color: #fec; cursor: pointer; }40 #get_old, #next { text-align: center; background-color: #999; color: #fec; cursor: pointer; } 41 41 #rep { display: none; background-color: #fee; position: absolute; width: 90%; left: 4%; top: 200px; border: 4px solid #666; z-index: 2; padding: 2px; font-size: small; } 42 42 #popup { display: none; background-color: #eee; position: absolute; left: 0; top: 200px; border: 2px solid #666; z-index: 6; font-size: small; } … … 229 229 230 230 <script type="text/javascript"> 231 var twitterURL = 'https://explore.twitter.com/'; 231 232 var cookieVer = readCookie('ver') || 0; 232 var update Freq = readCookie('update_freq') || 45;233 var updateInterval = readCookie('update_interval') || 45; 233 234 var pluginstr = (cookieVer>0) && readCookie('tw_plugins') || 'search.js\nfavotter.js'; 234 235 var nr_limit = readCookie('limit') || 500; // 表示する発言数の上限 … … 237 238 var plugins = new Array; 238 239 var nr_tw = 0; 240 var nr_page = 1; 239 241 var seq = (new Date).getTime(); 240 242 var since_id = null; … … 261 263 var selected_menu = $("TL"); 262 264 var failover_timeout = false; 265 var userinfo_timeout = false; 263 266 var get_next_func; 264 267 … … 311 314 $("loading").style.display = "block"; 312 315 rep_top = cumulativeOffset(ele)[1] + 20; 313 reply_ele = loadXDomainScript( 'http://twitter.com/statuses/show/'+id+'.json?callback=dispReply2', reply_ele);316 reply_ele = loadXDomainScript(twitterURL + 'statuses/show/'+id+'.json?callback=dispReply2', reply_ele); 314 317 return; 315 318 } … … 347 350 popup_id = id 348 351 callPlugins("popup", $('popup'), user, id); 349 $('popup_link_user').href = 'http://twitter.com/'+ user;350 $('popup_link_status').href = 'http://twitter.com/'+ user + '/statuses/' + id;352 $('popup_link_user').href = twitterURL + user; 353 $('popup_link_status').href = twitterURL + user + '/statuses/' + id; 351 354 $('popup_status_delete').style.display = (user == myname ? "block" : "none"); 352 355 $('popup').style.display = "block"; … … 369 372 $("loading").style.display = "display"; 370 373 if ($("text" + popup_id)) $("text" + popup_id).style.textDecoration = "line-through"; 371 enqueuePost( 'http://twitter.com/status/destroy/' + popup_id + '.xml',374 enqueuePost(twitterURL + 'status/destroy/' + popup_id + '.xml', 372 375 function(){$("loading").style.display = "none";}, function(){$("loading").style.display = "none";}); 373 376 return false; … … 376 379 update = function() { 377 380 callPlugins("update"); 378 update_ele = loadXDomainScript( 'http://twitter.com/statuses/friends_timeline?seq=' + (seq++) +381 update_ele = loadXDomainScript(twitterURL + 'statuses/friends_timeline?seq=' + (seq++) + 379 382 '&count=' + max_count + '&callback=twShow' + (since_id ? '&since_id='+since_id : ''), update_ele); 380 383 } … … 425 428 if (img.src.indexOf('throbber') >= 0) return; 426 429 var f = img.src.indexOf('empty') >= 0; 427 img.src = 'http://twitter.com/images/icon_throbber.gif';428 enqueuePost( 'http://twitter.com/favourings/' + (f ? 'create' : 'destroy') + '/' + id + '.xml',430 img.src = twitterURL + 'images/icon_throbber.gif'; 431 enqueuePost(twitterURL + 'favourings/' + (f ? 'create' : 'destroy') + '/' + id + '.xml', 429 432 function(){ img.src = 'http://assets3.twitter.com/images/icon_star_' + (f ? 'full' : 'empty') + '.gif'; }, 430 433 function(){ img.src = 'http://assets3.twitter.com/images/icon_star_' + (!f ? 'full' : 'empty') + '.gif'; }); … … 432 435 // followとremove 433 436 function follow(f) { 434 enqueuePost( 'http://twitter.com/friendships/' + (f ? 'create' : 'destroy') + '/' + last_user + '.xml', switchUser);437 enqueuePost(twitterURL + 'friendships/' + (f ? 'create' : 'destroy') + '/' + last_user + '.xml', switchUser); 435 438 $("loading").style.display = "block"; 439 } 440 // ユーザ情報を表示 441 function twUserInfo(user) { 442 elem = $('user_info'); 443 elem.innerHTML = makeUserInfoHTML(user); 444 callPlugins("newUserInfoElement", elem, user); 445 if (myname != user.screen_name) 446 update_ele2 = loadXDomainScript(twitterURL + 'friendships/exists.json?seq=' + (seq++) + 447 '&user_a=' + myname + '&user_b=' + user.screen_name + 448 '&callback=twFollow', update_ele2); 436 449 } 437 450 // 自分の最新の発言を受信 … … 485 498 for (var j in tw) callPlugins("gotNewMessage", tw[j]); 486 499 tw.reverse(); 500 if (nr_page == 1) { 501 $("tw").innerHTML += '<div onClick="getNext(this)" id="get_old">▽(2)</div>'; 502 nr_page = 2; 503 } 487 504 twShowToNode(tw, $("tw"), false, false, true, true); 488 505 } 489 function twShow2(tw) { 490 var user_info = $("user_info"); 506 function twOld(tw) { 491 507 var tmp = $("tmp"); 492 508 if (tmp && tmp.parentNode) tmp.parentNode.removeChild(tmp); 493 if (cur_page == 1 && !fav_mode && user_info && tw.length > 0) { 494 var user = tw[0].user; 495 user_info.innerHTML = makeUserInfoHTML(user); 496 callPlugins("newUserInfoElement", user_info, user); 497 if (myname != user.screen_name) 498 update_ele2 = loadXDomainScript('http://twitter.com/friendships/exists.json?seq=' + (seq++) + 499 '&user_a=' + myname + '&user_b=' + user.screen_name + 500 '&callback=twFollow', update_ele2); 501 } 509 var cnt = twShowToNode(tw, $("tw"), false, true); 510 if (cnt) $("tw").innerHTML += '<div onClick="getNext(this)" id="get_old">▽('+nr_page+')</div>'; 511 } 512 function twShow2(tw) { 513 if (userinfo_timeout) { 514 clearTimeout(userinfo_timeout); 515 userinfo_timeout = false; 516 } 517 var tmp = $("tmp"); 518 if (tmp && tmp.parentNode) tmp.parentNode.removeChild(tmp); 519 var user_info = $("user_info"); 520 if (cur_page == 1 && !fav_mode && user_info && tw.length > 0) 521 twUserInfo(tw[0].user, user_info, 1); 502 522 twShowToNode(tw, $("tw2c"), !!user_info && !fav_mode, cur_page > 1); 503 523 if (selected_menu.id == "reply" || selected_menu.id == "user" && last_user.indexOf(',') < 0) { … … 517 537 } 518 538 function twShowToNode(tw, twNode, no_name, after, animation, check_since) { 539 var cnt = 0; 519 540 $('loading').style.display = 'none'; 520 541 if (failover_timeout) { … … 541 562 pNode.insertBefore(s, pNode.childNodes[0]); 542 563 } 564 cnt++; 543 565 } 544 566 pNode.removeChild(dummy); … … 565 587 if (animation) { 566 588 nr_tw += len; 589 nr_recv += len; 567 590 while (nr_tw > nr_limit) { 568 591 var last_node = twNode.childNodes[twNode.childNodes.length-1]; … … 572 595 } 573 596 if (check_since) since_id = tw[0].id; 597 return cnt; 574 598 } 575 599 // 新規twitの出現アニメーション処理 … … 591 615 get_next_func(); 592 616 } 617 function getOldTL() { 618 update_ele2 = loadXDomainScript(twitterURL + 'statuses/friends_timeline.json?seq=' + (seq++) + 619 '&count=' + max_count + '&page=' + (nr_page++) + '&id=' + last_user + 620 '&callback=twOld', update_ele2); 621 } 593 622 function getNextFuncCommon() { 594 623 if (selected_menu.id == "user" && !fav_mode) 595 update_ele2 = loadXDomainScript( 'http://twitter.com/statuses/user_timeline.json?seq=' + (seq++) +624 update_ele2 = loadXDomainScript(twitterURL + 'statuses/user_timeline.json?seq=' + (seq++) + 596 625 '&count=' + max_count_u + '&page=' + (++cur_page) + '&id=' + last_user + 597 626 '&callback=twShow2', update_ele2); 598 627 else if (selected_menu.id == "user" && fav_mode) 599 update_ele2 = loadXDomainScript( 'http://twitter.com/favorites/' + last_user + '.json?seq=' + (seq++) +628 update_ele2 = loadXDomainScript(twitterURL + 'favorites/' + last_user + '.json?seq=' + (seq++) + 600 629 '&page=' + (++cur_page) + '&callback=twShow2', update_ele2); 601 630 else if (selected_menu.id == "reply") 602 update_ele2 = loadXDomainScript( 'http://twitter.com/statuses/replies.json?seq=' + (seq++) +631 update_ele2 = loadXDomainScript(twitterURL + 'statuses/replies.json?seq=' + (seq++) + 603 632 '&page=' + (++cur_page) + '&callback=twShow2', update_ele2); 604 633 } … … 618 647 } 619 648 function switchTL() { 649 get_next_func = getOldTL; 620 650 switchTo("TL"); 621 651 } … … 623 653 switchTo("reply"); 624 654 $("loading").style.display = "block"; 625 update_ele2 = loadXDomainScript( 'http://twitter.com/statuses/replies.json?seq=' + (seq++) +655 update_ele2 = loadXDomainScript(twitterURL + 'statuses/replies.json?seq=' + (seq++) + 626 656 '&callback=twShow2', update_ele2); 627 657 } … … 635 665 if (users.length == 1) { 636 666 $("tw2h").innerHTML = "<div id=\"user_info\"></div>"; 637 update_ele2 = loadXDomainScript('http://twitter.com/statuses/user_timeline.json?seq=' + (seq++) + 638 '&count=' + max_count_u + '&id=' + user + '&callback=twShow2', update_ele2); 667 update_ele2 = loadXDomainScript(twitterURL + 'statuses/user_timeline.json?seq=' + (seq++) + 668 '&count=' + max_count_u + '&id=' + user + '&callback=twShow2', update_ele2); 669 userinfo_timeout = setTimeout(function(){ 670 update_ele2 = loadXDomainScript(twitterURL + 'users/show/' + 671 user + '.json?callback=twUserInfo', update_ele2); }, 10000); 639 672 } else { 640 673 users_log = []; … … 642 675 xds.abort(users_xds[i]); 643 676 users_xds = users.map(function(u) { 644 xds.load( 'http://twitter.com/statuses/user_timeline.json?id=' + u +677 xds.load(twitterURL + 'statuses/user_timeline.json?id=' + u + 645 678 '&count=' + max_count_u, twShow3); 646 679 }); … … 652 685 fav_mode = 1; 653 686 $("tw2c").innerHTML = ""; 654 update_ele2 = loadXDomainScript( 'http://twitter.com/favorites/' + last_user + '.json?seq=' + (seq++) +687 update_ele2 = loadXDomainScript(twitterURL + 'favorites/' + last_user + '.json?seq=' + (seq++) + 655 688 '&callback=twShow2', update_ele2); 656 689 } … … 658 691 switchTo("direct"); 659 692 $("loading").style.display = "block"; 660 direct_ele1 = loadXDomainScript( 'http://twitter.com/direct_messages.json?seq=' + (seq++) +693 direct_ele1 = loadXDomainScript(twitterURL + 'direct_messages.json?seq=' + (seq++) + 661 694 '&callback=twDirect1', direct_ele1); 662 direct_ele2 = loadXDomainScript( 'http://twitter.com/direct_messages/sent.json?seq=' + (seq++) +695 direct_ele2 = loadXDomainScript(twitterURL + 'direct_messages/sent.json?seq=' + (seq++) + 663 696 '&callback=twDirect2', direct_ele2); 664 697 } … … 667 700 $("tw2h").innerHTML = '<p><a target="twitter" onClick="return clickLink(this)" href="index.html"><b>twicli</b></a> : browser-base Twitter client</p><hr>' + 668 701 '<p><form onSubmit="switchUser($(\'user_id\').value); return false;">show user info : @<input type="text" size="15" id="user_id" value="' + myname + '"><input type="image" src="go.png"></form></p><hr>' + 669 '<p><b>Preferences:</b><form onSubmit="setPreps(this.limit.value, this.maxc.value, this.maxu.value, this. freq.value, this.list.value, this.user_style.value); return false;">max #msgs in TL: <input name="limit" size="5" value="' + nr_limit + '"><br>#msgs in TL on update (max=200): <input name="maxc" size="3" value="' + max_count + '"><br>#msgs in user on update (max=200): <input name="maxu" size="3" value="' + max_count_u + '"><br>update frequency: <input name="freq" size="3" value="' + updateFreq+ '"> sec<br>Plugins:<br><textarea cols="30" rows="4" name="list">' + pluginstr + '</textarea><br>user stylesheet:<br><textarea cols="30" rows="4" name="user_style">' + user_style + '</textarea><br><input type="submit" value="Save"></form></p><hr>'702 '<p><b>Preferences:</b><form onSubmit="setPreps(this.limit.value, this.maxc.value, this.maxu.value, this.interval.value, this.list.value, this.user_style.value); return false;">max #msgs in TL: <input name="limit" size="5" value="' + nr_limit + '"><br>#msgs in TL on update (max=200): <input name="maxc" size="3" value="' + max_count + '"><br>#msgs in user on update (max=200): <input name="maxu" size="3" value="' + max_count_u + '"><br>update interval: <input name="interval" size="3" value="' + updateInterval + '"> sec<br>Plugins:<br><textarea cols="30" rows="4" name="list">' + pluginstr + '</textarea><br>user stylesheet:<br><textarea cols="30" rows="4" name="user_style">' + user_style + '</textarea><br><input type="submit" value="Save"></form></p><hr>' 670 703 callPlugins("miscTab", $("tw2h")); 671 704 $("loading").style.display = "block"; 672 update_ele2 = loadXDomainScript( 'http://twitter.com/account/rate_limit_status.json?seq=' + (seq++) +705 update_ele2 = loadXDomainScript(twitterURL + 'account/rate_limit_status.json?seq=' + (seq++) + 673 706 '&id=' + myname + '&callback=twLimit', update_ele2); 674 707 } 675 function setPreps(limit, maxc, maxu, freq, plugin_list, style) {708 function setPreps(limit, maxc, maxu, interval, plugin_list, style) { 676 709 writeCookie('ver', 0.1, 3652); 677 710 writeCookie('limit', limit, 3652); 678 711 writeCookie('max_count', maxc, 3652); 679 712 writeCookie('max_count_u', maxu, 3652); 680 writeCookie('update_ freq', freq, 3652);713 writeCookie('update_interval', interval, 3652); 681 714 writeCookie('tw_plugins', plugin_list, 3652); 682 715 writeCookie('user_style', style, 3652); … … 688 721 // 初回アップデート 689 722 setTimeout(update, 0); 690 setInterval(update, update Freq*1000);723 setInterval(update, updateInterval*1000); 691 724 // ログインしていなかったときなどに20秒でログインを試みる 692 725 failover_timeout = setTimeout(function(){ switchTo("misc"); $("tw2c").innerHTML = '<iframe style="display:block" src="http://twitter.com/home" width="100%" height="400"></iframe>' }, 20*1000); … … 728 761 729 762 // 自ユーザ名ロード 730 loadXDomainScript( 'http://twitter.com/statuses/user_timeline.json?count=1&callback=twUser');763 loadXDomainScript(twitterURL + 'statuses/user_timeline.json?count=1&callback=twUser'); 731 764 </script> 732 765 </body>
![(please configure the [header_logo] section in trac.ini)](/share/chrome/site/your_project_logo.png)