3 * Ajax Chat for TRPG ver.1.1.1
4 * (c)2007 Cake All righ1ts reserved.
5 * Mail : cake_67@users.sourceforge.jp
6 * Home : http://trpgtools-onweb.sourceforge.jp/
9 * 本チャットスクリプトの使用および配布は、BSDライセンスに基づきます。
10 * BSDライセンスの詳細につきましては、添付のライセンス.txtを参照してください。
13 * 1. このスクリプトはフリーソフトです。以下の条件を満たす限りにおいて、使用・改造・再配布(オリジナルおよび改造版の両方とも)は自由です。
14 * 再配布する場合、上記著作権表示、本条件書きおよび第2項・第3項の責任限定規定を必ず含めてください。
15 * 2. 同梱のアイコンはPetite Prier様(http://snow.if.tv/)の素材です。
16 本スクリプトの使用および再配布時にアイコンをそのまま用いる場合は、配布元の規定も遵守してください。
17 * 3. 本スクリプトは無保証です。自己責任で使用してください。このスクリプトを使用したいかなる損害に対しても、作者は一切の責任を負いません。
18 * 4. 設置および使用方法に関する質問は、配布サイトの掲示板にお願いします。ただし、必ず回答できるとは限りません。
23 require_once 'trpgchat-ini.php';
26 print html_header('main', $title.' ログ表示画面', true, true);
30 <script type="text/javascript">
34 var getdata_on = <?php print $getdata_on;?>*1000;
35 var getdata_off = <?php print $getdata_off;?>*1000;
36 var logfile= '<?php print $recent_log;?>';
37 var now_member = '<?php print $now_member;?>';
38 var color_system = '#<?php print $color_system;?>';
39 var status_color = '#<?php print $status_color; ?>';
47 Timer = setInterval('getLog()', getdata_off);
56 success: function(data){
58 if (!isNaN(document.getElementById('id'))) {
61 last_id = document.getElementById('id').firstChild.nodeValue;
65 var recent = data.split('\n');
67 var text = new Array();
68 for(var i=0;i<recent.length; i++){
70 var unit = recent[i].split('<>');
74 if(unit[0] && last_id < unit[0]){
75 text[i] = setData(unit);
81 var text_rev = text.reverse();
83 for(var i=0;i<text_rev.length; i++){
85 $("#online").after(text_rev[i]);
94 function showMember() {
99 success: function(data2){
101 var member = data2.split('\n');
103 var unit2 = new Array();
104 for(var i=0;i<member.length; i++){
105 var unit2 = member[i].split('<>');
110 var text2 = text2+'<span id="'+unit2[0]+'" class="member" onclick="inputWhisper(\''+unit2[0]+'\',\''+unit2[1]+'\')">'+unit2[0]+'</span>'+'<>';
112 if (!$(window.parent.document.getElementById("my_hash")).attr("value") && $(window.parent.document.getElementById("pwd_on")).attr("value") && $(window.parent.document.getElementById("name_on")).attr("value")==unit2[0]) {
113 window.parent.document.getElementById("my_hash").value = unit2[1];
118 $("#indi").html(text2);
126 clearInterval(Timer);
127 Timer = setInterval('getLog()', getdata_on);
133 clearInterval(Timer);
134 Timer = setInterval('getLog()', getdata_off);
135 window.parent.document.getElementById("whisper_mark").src="<?php print $whisper_on; ?>"
136 window.location.reload();
139 // 遅延関数(http://zombiebook.seesaa.net/article/26143018.html)
140 function wait(fn, tm){
142 var slf = this, arg = arguments;
143 setTimeout(function (){fn.apply(slf, arg);}, tm);
153 success: function(data){
154 var recent = data.split('\n');
155 var text = new Array();
156 $(".com_row").remove();
157 for(var i=0;i<recent.length; i++){
158 var unit = recent[i].split('<>');
160 text[i] = setData(unit);
163 var text_rev = text.reverse();
164 for(var i=0;i<text_rev.length; i++){
167 $("#online").after(text_rev[i]);
175 function inputWhisper(name, whisperTo) {
176 var flag = whisperTo ? true : false;
178 alert(name+"さんは入室パスワード未入力のため、「ささやき」はできません。");
179 } else if (!window.parent.document.getElementById("pwd_on").value){
180 alert("パスワードを入力しないと「ささやき」はできません。");
181 } else if (name=='全員'){
182 alert("「全員」という名前の方に「ささやき」はできません(笑)");
184 window.parent.document.getElementById("whisper_to").value = name;
185 window.parent.document.getElementById("whisper_to_hash").value = whisperTo;
186 window.parent.document.getElementById("whisper_mark").src="<?php print $whisper_on; ?>"
191 function setData(unit) {
196 var last_id_tag = '<span id="id" style="display:none;">'+unit[0]+'</span>';
203 d.setTime(unit[5]*1000);
204 var year = d.getYear();
205 if (year < 2000) { year += 1900;}
206 var month = d.getMonth()+1;
207 if (month < 10) { month = "0" + month;}
208 var day = d.getDate();
209 if (day < 10) { day = "0" + day;}
210 var hour = d.getHours();
211 if (hour < 10) { hour = "0" + hour;}
212 var min = d.getMinutes();
213 if (min < 10) { min = "0" + min;}
214 var sec = d.getSeconds();
215 if (sec < 10) { sec = "0" + sec;}
216 var datetime = year+'/'+month+'/'+day+' '+hour+':'+min+':'+sec;
218 if(unit[9] || unit[10]) {
220 if ($(window.parent.document.getElementById("my_hash")).attr("value") == unit[8]) whisper = 'to';
221 if ($(window.parent.document.getElementById("my_hash")).attr("value") == unit[10]) var whisper = 'from'
223 if(unit[11] == '1' && unit[12]) {
224 var status = unit[12];
228 if (unit[0]!='0' && whisper!='y') {
230 '<div class="com_row" id="com_row_'+unit[0]+'">'+last_id_tag+'<span style="font-weight:bold; color:'+color+';" id="'+unit[0]+'" title="'+name+'">【'+pc+'】</span>:'+
231 '<span class="body" title="'+datetime+'">';
232 if (whisper=='to' || whisper=='from') {
233 row = row+'<span style="color:'+color_system+';">(';
234 if (whisper=='to') row = row+unit[9]+'さんへ';
235 if (whisper=='from') row = row+unit[2]+'さんから';
236 row = row+'のささやき) </span>';
239 row = row+com+'</span>';
241 row = row+' <span style="color:'+status_color+';">('+status+')</span>';
253 <div id="help" class="help" style="display:inline;">
254 <?php print nl2br($help);?>
257 <div id="online" class="online" style="display:none;">参加者: <span id="indi"></span></div>
259 <div align="right" id="pastlog" class="pastlog">
260 <a href="./pastlog_index.php" target="pastlog">もっと前のログを見る</a></div>
263 <p><img src="image/blog_jscript.gif" alt="Javascript" width="80" height="15">本チャットは、JavaScript が有効な環境でのみ使用可能です。</p>
268 print html_footer('');