# HG changeset patch # User HIROSE Yuuji # Date 1073021480 -32378 # Node ID 354e09bb8ce177b6ed382e299d843181a87174fd # Parent 1110baebe9a9727e83e1d4953eb79a222b156268 RCS-revision 1.4 date: 2004/01/02 14:30:58; author: yuuji; state: Exp; lines: +64 -46 The amount of chedule text in monthly calendar is now selectable. diff -r 1110baebe9a9 -r 354e09bb8ce1 after5.rb --- a/after5.rb Thu Jan 01 09:15:50 2004 +0859 +++ b/after5.rb Fri Jan 02 14:30:58 2004 +0859 @@ -2,8 +2,8 @@ # # Associative Scheduling Table - after5 # (C)2003, 2004 by HIROSE Yuuji [yuuji@gentei.org] -# $Id: after5.rb,v 1.3 2004/01/01 09:15:50 yuuji Exp $ -# Last modified Thu Jan 1 18:11:47 2004 on firestorm +# $Id: after5.rb,v 1.4 2004/01/02 14:30:58 yuuji Exp $ +# Last modified Fri Jan 2 23:25:50 2004 on firestorm # See http://www.gentei.org/~yuuji/software/after5/ # このスクリプトはEUCで保存してください。 @@ -111,9 +111,11 @@ c=0 "\n" @@ -917,6 +919,7 @@ @schedulearea = {'rows'=>'4', 'cols'=>'60', 'name'=>'schedule'} @oldagent = (%r,Mozilla/4, =~ ENV['HTTP_USER_AGENT']) @lang = 0 + @savecookieregexp = /^(user$|passwd$|display(mode|days)$|nt|headline)/ @opt = { 'conf' => @mybase+".cf", 'css' => @mybase+".css", @@ -950,6 +953,7 @@ ['nt30d', "30"+msg('days', 'before')], ] ##@job = "today" + @wnames = %w[sun mon tue wed thu fri sat] @job = "login" @sc = ScheduleDir.new @O = StringIO.new @@ -962,26 +966,27 @@ def doit() @params = getarg() @cookie = getcookie() + importcookie() @lang = (/^j/i =~ @opt['lang'] ? 0 : 1) p @cookie if $DEBUG p @params if $DEBUG - @params['displaymode'] = @params['displaymode'] || @cookie['displaymode'] + ### @params['displaymode'] = @params['displaymode'] || @cookie['displaymode'] personal = /personal/i =~ @params['displaymode'] bodyclass = if personal then {'class'=>'personal'} end - ######### @O.puts @H.p(@cookie.inspect) #cookie check! - ## x = {"align"=>'center'} ## @H.element("p", x, "hoge", nil) ## @H.element("p", nil, "buha", nil) + if nil if !@params['passwd'] && @cookie['passwd'] @params['passwd'] = @cookie['passwd'] end if !@params['user'] && @cookie['user'] @params['user'] = @cookie['user'] end + end @params['user'] = safecopy(@params['user']) eval @job @@ -998,7 +1003,7 @@ def msg(*keyword) unless defined?(@msg) @msg = { - 'title' => ['みんなの予定表 「アフター5」', 'Schedule table for us all After 5'], + 'title' => ['みんなの予定表 「アフター5」', 'Schedule table for us all After 5'], 'login' => ['ログイン', 'Login'], 'loginfirst' => ['最初にログインすべし', 'Login first'], 'autherror' => ['認証エラーがあったと管理者に伝えてくれっす', @@ -1099,6 +1104,11 @@ 'member' => ['メンバー', 'Member'], 'personalmode' => ['自分のだけ表示モード', 'Display Personal Only'], 'normalmode' => ['全員分表示モード', "Display Everyone's"], + 'display' => ['予定表示行: ', 'Display schedule of: '], + 'nameonly' => ['名前のみ', 'Name Only'], + 'head5char' => ['先頭5文字', 'Head 5 chars'], + 'headline' => ['先頭1行', 'Headline only'], + 'whole' => ['長くても全部', 'Whole text'], 'addedtogroup' => ['をグループに追加 →', 'added to the group:'], 'removedfromgp' => ['をグループから削除:', 'removed from the group:'], 'soleadmin' => ['%s は %s の唯一の管理者なのでやめられないのだ', @@ -1141,9 +1151,14 @@ }.join(['', ' '][@lang]) end + def importcookie() + @cookie.keys.grep(@savecookieregexp){|v| + @params[v] = @params[v] || @cookie[v] + } + end def setcookie() p = {} - @params.keys.grep(/^(user$|passwd$|display(mode|days)$|nt)/){|v| + @params.keys.grep(@savecookieregexp){|v| p[v] = @params[v].to_s.strip } c = gencookie(p, 3600*6*1) @@ -1441,17 +1456,19 @@ last = daysofmonth(day.year, day.month) wday1 = first.wday start = 1-wday1 - wname = %w[sun mon tue wed thu fri sat] + wname = @wnames today = Time.now todaym = today.month todayd = today.day tdclass = {} tdclass["width"] = "64px" if @oldagent # workaround for NN4 personal = /personal/ =~ @params['displaymode'] - + headline = @params['headline'] + monthstr = sprintf "%d/%d", day.year, day.month + holiday = Holiday.new # create dayofweek header - @O.print @H.elementln("h1", nil){sprintf "%d/%d", day.year, day.month} + @O.print @H.elementln("h1", nil){monthstr} # which mode? @O.print @H.p(msg(personal ? 'personalmode' : 'normalmode')) # @@ -1490,15 +1507,23 @@ if !s.empty? s.keys.sort.collect{|time| s[time].keys.sort.collect{|who| - sprintf "%04s:%s", - time == @opt['alldaydir'] ? msg('allday') : time, + text = s[time][who]['sched'].gsub(/\n/, '') + sprintf "%s%s", + time == @opt['alldaydir'] ? '' : time+":", if personal - s[time][who]['sched'].split("\n")[0] + text.split("\n") ##[0] else - nickname(who) + nickname(who) + '=' + \ + if headline == 'whole' + text + elsif headline == 'head5char' + text.sub(/(.{5}).*/, '\1') + elsif headline == 'headline' + text.split("\n")[0] + end.to_s end - }.join - }.join("
") + }.join("
") + }.join("
\n") else @opt['tdskip'] end @@ -1509,30 +1534,6 @@ } }.join } - # ここ活かしてない - @H.elementln("tr", nil){ - (column..column+6).collect{|d| - wd=d%7 - @H.element("td", {'class'=>wname[wd]}){ - @H.element("div", {'class'=>'scline'}){ - if d>0 && d <= last - s = @sc.day_all("%d/%d/%d"%[day.year, day.month, d]) - unless s.empty? - s.keys.sort.collect{|time| - s[time].keys.sort.collect{|who| - sprintf "%4s:%s", time, who.sub(/@.*/, '') - } - }.join("
") - else - @opt['tdskip'] - end - else - @opt['tdskip'] - end - } - } - }.join - } column += 7 end @@ -1558,6 +1559,16 @@ @O.print "\n"+@H.endelement(nil, true) @O.print "showtable" if @params['user'] == @author + @O.print @H.elementln("form", {'action'=>@myname+"?-month+#{monthstr}", 'method'=>'POST'}){ + choice = [ + [msg('nameonly'), 'name'], + [msg('head5char'), 'head5char'], + [msg('headline'), 'headline'], + [msg('whole'), 'whole']] + msg('display') + \ + @H.select('headline', choice, headline) + \ + @H.submit("GO", "GO") + } @O.print footer ##schedule.day_all("2003/12/22") # @O.print @H.endelement() @@ -1592,12 +1603,15 @@ while (i+=1) < range d = Time.at(day+i*3600*24) date = sprintf("%04d/%02d/%02d", d.year, d.month, d.day) + datewn = @H.element("span", {'class'=>@wnames[d.wday]}){ + sprintf("%s(%s)", date, @msg['wnames'][@lang][d.wday]) + } s = @sc.day_all(date, user, personal) next if s.empty? r << @H.element("tr", nil){ @H.element("th", {'class'=>'time'}){'TIME'} + \ - @H.element("th", nil){date+' - Schedule'} + @H.element("th", nil){'Who - '+datewn+' - What'} } for time in s.keys tstr = case time @@ -1794,7 +1808,8 @@ user = safecopy(@params['user']) personal = (/personal/i =~ @params['displaymode']) @params['displaydays'] = @params['displaydays'] || @cookie['displaydays'] - days = (@params['displaydays'] || 1).to_i + days = @params['displaydays'].to_i + days = (days > 0 ? days : 1) # str = @sc.day_all(date, user, personal) outstr = dayTableString(user, date, days, personal) @@ -1915,7 +1930,9 @@ user = registerer = @params['user'] as = @params['registas'] if as && as > '' && /^no$/ !~ as && @sc.ismember(user, as) - registerer = as + if (gr=grepgroup(as)) + registerer = gr + end end now = Time.now #y, m, d, h, min = now.year, now.month, now.day, now.hour, now.min @@ -2979,6 +2996,7 @@ end end +$KCODE='e' After5.new.doit if __FILE__ == $0