diff -arcN kuttukibbs-1.0rc2-rss/kuttukibbs.cgi kuttukibbs-1.0rc2-jsmenu/kuttukibbs.cgi *** kuttukibbs-1.0rc2-rss/kuttukibbs.cgi Sun Nov 28 23:22:33 2004 --- kuttukibbs-1.0rc2-jsmenu/kuttukibbs.cgi Sun Nov 28 23:41:34 2004 *************** *** 106,111 **** --- 106,112 ---- set_comment_hash(\%com_hash, \$all); write_to_jsfile($fn_pref.".js"); # JavaScript Feed ファイル write_to_rssfile(); # RSS ファイル + write_to_jsmenufile(); # JavaScript Feed menu ファイル %com_hash = (); } else { print "wrong password!\n"; *************** *** 144,149 **** --- 145,151 ---- write_to_logfile(); # ログファイルへの書き込み write_to_jsfile($fn_pref.".js"); # JavaScript Feed ファイルへの書き込み write_to_rssfile(); # RSS ファイルへの書き込み + write_to_jsmenufile(); # JavaScript Feed menu ファイルへの書き込み write_to_adminlogfile(); # 管理者用ログファイルへの書き込み } } *************** *** 418,422 **** --- 420,480 ---- $rdf = Jcode->new($rdf, $charset)->utf8; save_file($rdf_file, \$rdf); + } + + sub write_to_jsmenufile { + my @lalist = get_latest(); + my $authors = ""; + my $ids = ""; + my $link = ""; + my $no = ""; + my $idx = 0; + my $str = ""; + + foreach my $i (@lalist) { + last if ($i eq "" || $$i{'i'} eq ""); + last if ($idx >= 5); # 最新の 5 件を表示 + my ($n, $t, $c) = ($$i{'n'}, $$i{'i'}, $i); + my $menu_cgi_url = "?id=$t"; + my $url = id2url($t); + + $t = id2abbrurl($t); # chalow の人はおそらく必要なし + # anchor to URL + $n =~ s/(.*)<\/a>/$1/ig; + + $link .= "\'$url\', "; + $authors .= "\'$n\', "; + $ids .= "\'$t\', "; + $no .= "\'/bbs/$menu_cgi_url\', "; # URL 決め打ち。各自修正すべし。 + $idx++; + } + $str .= << "JS"; + elem=document.getElementById('kuttukibbs_menu'); + var ah = new Array($authors 0); + var cm = new Array($ids 0); + var no = new Array($no 0); + var li = new Array($link 0); + ac=document.createElement('ul'); + elem.appendChild(ac); + for (i = 0; i < $idx; i++) { + ai=document.createElement('li'); + aa=document.createElement('a'); + aa.setAttribute('href', no[i]); + at=document.createTextNode(ah[i]); + on=document.createTextNode(' on '); + ia=document.createElement('a'); + ia.setAttribute('href', li[i]); + it=document.createTextNode(cm[i]); + aa.appendChild(at); + ai.appendChild(aa); + ai.appendChild(on); + ia.appendChild(it); + ai.appendChild(ia); + ac.appendChild(ai); + } + JS + + # XXX \# は id として許されないから大丈夫なはず + save_file("$log_dir/\#latest.js", \$str); } diff -arcN kuttukibbs-1.0rc2-rss/kuttukibbs.conf kuttukibbs-1.0rc2-jsmenu/kuttukibbs.conf *** kuttukibbs-1.0rc2-rss/kuttukibbs.conf Sun Nov 28 23:22:46 2004 --- kuttukibbs-1.0rc2-jsmenu/kuttukibbs.conf Sun Nov 28 23:36:48 2004 *************** *** 205,210 **** --- 205,217 ---- return "http://quasiquote.org/log/$ymd"; } + sub id2abbrurl { + my ($ID) = @_; # id の省略表記 + my ($abbr) = $ID; + $abbr =~ s%^bbs-\d\d\d\d-\d\d-\d\d-(.*)%$1%g; + return "$abbr"; + } + # sub id2url { # my ($ID) = @_; # Ex. 2004-01-01 -> 2004-01.html#2004-01-01 # my ($ym) = ($ID =~ /^(\d+-\d+)-/);