1 <patTemplate:tmpl name="_widget">
\r
2 <script type="text/javascript">
\r
5 var maxNo = {MAX_NO};
\r
6 var bufSize = {MESSAGE_COUNT};
\r
7 var buf = new Array();
\r
9 var currentPos = 1; // データ追加位置(1~)
\r
11 function getMessage()
\r
13 m3_ajax_request('{WIDGET_ID}', 'act=getmessage&count={MESSAGE_COUNT}&no=' + (maxNo + 1), chacha_ajax_success_func);
\r
15 function chacha_ajax_success_func(request, retcode, jsondata)
\r
18 if (jsondata.messages){
\r
19 for (i = 0; i < jsondata.messages.length; i++){
\r
21 var image = new Image();
\r
22 image.src = jsondata.messages[i].avatar; // 画像プリロード
\r
24 var obj = new Object();
\r
25 obj.no = parseInt(jsondata.messages[i].no);
\r
26 obj.avatar = jsondata.messages[i].avatar;
\r
27 obj.membername = jsondata.messages[i].membername;
\r
28 obj.message = jsondata.messages[i].message;
\r
29 obj.messageid = jsondata.messages[i].messageid;
\r
30 obj.messagecount = jsondata.messages[i].messagecount;
\r
31 obj.date = jsondata.messages[i].date;
\r
39 if (buf.length - bufSize > 0) buf = buf.slice(buf.length - bufSize);
\r
42 function chacha_itemLoad(carousel, state)
\r
44 if (state == 'init') return;
\r
46 function makeItem(index, itemObj){
\r
47 var html = '<input class="bufindex" type="hidden" value="' + index + '" />';
\r
48 html += '<div class="chacha_avatar"><img src="' + itemObj.avatar + '" width="64" height="64" /></div>';
\r
49 html += '<div class="chacha_message_right"><div class="chacha_message_main"><span class="chacha_message_membername">' + itemObj.membername + '</span>';
\r
50 html += '<span class="chacha_message_body">' + itemObj.message + '</span></div>';
\r
51 html += '<div class="chacha_message_info"><span class="chacha_message_date">' + itemObj.date + '</span>';
\r
52 html += '<span class="chacha_message_id">' + itemObj.messageid + '</span>';
\r
53 html += '<span class="chacha_message_count">' + itemObj.messagecount + '</span></div></div>';
\r
57 function chacha_init( carousel, state)
\r
63 startTime = new Date();
\r
65 // reset empties it out
\r
66 $('#reset').click( function( evt ) {
\r
70 function chacha_itemVisibleIn(carousel, li, index, state)
\r
73 if (state == 'init') return;
\r
75 function chacha_itemVisibleOut(carousel, li, index, state)
\r
78 if (state == 'init') return;
\r
81 if (document.hasFocus()){ // アクティブ時のみ処理
\r
83 var currentTime = new Date();
\r
84 if ((currentTime - startTime) / 1000 > 15){ // 15秒単位
\r
88 startTime = new Date();
\r
94 if (maxNo > newItemNo){ // 最新データ取得のとき
\r
96 no = parseInt($(li).children('.bufindex').attr('value')); // 項目順
\r
97 if (no == currentPos){ // データ追加位置のとき
\r
99 var nextItemNo = newItemNo;
\r
100 for (i = 0; i < buf.length; i++){
\r
101 if (nextItemNo < buf[i].no){
\r
102 nextItemNo = buf[i].no;
\r
106 if (nextItemNo > newItemNo){
\r
107 var itemObj = buf[i];
\r
108 $('#messageitem_' + currentPos).html(makeItem(no, itemObj));
\r
109 newItemNo = nextItemNo;
\r
113 if (currentPos > bufSize) currentPos = 1;
\r
119 $("#chacha_jcarousel").jcarousel({
\r
121 visible: {VISIBLE_MESSAGE_COUNT}, /* 表示項目数 */
\r
122 auto:5, /* 停止時間(秒) */
\r
124 start:{FIRST_MESSAGE_NO}, /* 先頭項目 */
\r
126 initCallback: chacha_init,
\r
127 itemLoadCallback: {onBeforeAnimation: chacha_itemLoad},
\r
128 itemVisibleInCallback: {onBeforeAnimation: chacha_itemVisibleIn},
\r
129 itemVisibleOutCallback: {onAfterAnimation: chacha_itemVisibleOut}
\r
131 startTime = new Date();
\r
135 <div id="{CSS_ID}" style="{BLOG_STYLE}" >
\r
136 <div align="center"><div style="{TOP_STYLE}">
\r
139 <patTemplate:tmpl name="top_link_area" visibility="hidden"><div style="{LINK_STYLE_TOP}"><a href="{REGIST_URL}"><b>{REGIST_NAME}</b></a></div></patTemplate:tmpl>
\r
140 <div align="center">
\r
141 <!-- m3:ErrorMessage -->
\r
142 <div style="{INNER_STYLE}">
\r
143 <ul id="chacha_jcarousel" class="jcarousel-skin-chacha">
\r
144 <patTemplate:tmpl name="message_list">
\r
145 <li style="list-style-type:none; background:none;" id="messageitem_{BUF_INDEX}">
\r
146 <input class="bufindex" type="hidden" value="{BUF_INDEX}" />
\r
147 <div class="chacha_avatar">{AVATAR}</div>
\r
148 <div class="chacha_message_right">
\r
149 <div class="chacha_message_main"><span class="chacha_message_membername">{NAME}</span><span class="chacha_message_body">{MESSAGE}</span></div>
\r
150 <div class="chacha_message_info"><span class="chacha_message_date">{DATE}</span><span class="chacha_message_id">{ID}</span><span class="chacha_message_count">{MESSAGE_COUNT}</span></div>
\r
152 <div style="clear: both;"></div>
\r
154 </patTemplate:tmpl>
\r
156 <div style="{LINK_STYLE_INNER_BOTTOM}"><a href="{READ_MORE_URL}"><b>もっと読む</b></a></div>
\r
159 <div style="{LINK_STYLE_BOTTOM}"><a href="{HOME_URL}"><b>ブログホーム</b></a></div>
\r
161 </patTemplate:tmpl>
\r