changeset 3:354e09bb8ce1 draft

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.
author HIROSE Yuuji <yuuji@gentei.org>
date Fri, 02 Jan 2004 14:30:58 +0859
parents 1110baebe9a9
children b7e65c9caa23
files after5.rb
diffstat 1 files changed, 64 insertions(+), 46 deletions(-) [+]
line wrap: on
line diff
--- 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
     "<select name=\"#{name}\">\n" + \
     range.collect{|i|
-      sprintf "<option%s>%s%s",
-	(selected.to_s==i.to_s) ? " selected" : "", 
-	i.to_s,
+      value = (i.is_a?(Array) ? i[1] : i).to_s
+      sprintf "<option%s%s>%s%s</option>",
+	(selected.to_s==value.to_s) ? " selected" : "", 
+	i.is_a?(Array) ? " value=\"%s\"" % value : '',
+	i.is_a?(Array) ? i[0] : i.to_s,
 	(c+=1)%6==0 ? "\n" : ''
     }.join + \
     "\n</select>\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'		=> ['みんなの予定表 <img src="after5.png" alt="「アフター5」" width="107" height="53">', 'Schedule table for us all <img src="after5.png" alt="After 5" width="107" height="53">'],
+	'title'		=> ['みんなの予定表 <img src="after5.png" alt="「アフター5」">', 'Schedule table for us all <img src="after5.png" alt="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("<br>")
+		    }.join("<br>")
+		  }.join("<br>\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("<br>")
-		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

yatex.org