s4

changeset 113:3bad3f525dfc

Multiple text fields handled correctly
author HIROSE Yuuji <yuuji@gentei.org>
date Tue, 04 Aug 2015 11:02:55 +0900
parents cec40085a1d4
children 81d9b2476f07
files s4-funcs.sh
diffstat 1 files changed, 63 insertions(+), 31 deletions(-) [+]
line diff
     1.1 --- a/s4-funcs.sh	Tue Aug 04 07:11:25 2015 +0900
     1.2 +++ b/s4-funcs.sh	Tue Aug 04 11:02:55 2015 +0900
     1.3 @@ -39,7 +39,7 @@
     1.4      レポート提出管理
     1.5  ひとつのarticleをheadingにして新規ツリーを作成、あるといいかも。
     1.6  
     1.7 -8/2	s4.cgi生成系
     1.8 +8/2	○s4.cgi生成系 → index.cgi生成
     1.9  	Web
    1.10  	締切設定
    1.11  	○自分の提出物リスト
    1.12 @@ -550,7 +550,7 @@
    1.13  	     slice="order by rowid limit 1 offset $i"
    1.14  	     i=$((i+1))
    1.15  	     fn=$c.$i
    1.16 -##err td=$td, fn=$fn, type=$type, val="[$val]"
    1.17 +err td=$td, fn=$fn, type=$type, val="[$val]"
    1.18  	     case $type in
    1.19  	       file:*)
    1.20  		 #file=$td/$val
    1.21 @@ -589,7 +589,7 @@
    1.22  .output $td/$fn
    1.23  select val from $cond $slice; 
    1.24  EOF
    1.25 -		 val=$val"`echo $fn`" # should be delimited by newline
    1.26 +		 val=$val${val:+$nl}"`echo $fn`" # should be delimited by newline
    1.27  		 ;;
    1.28  	     esac
    1.29  	   done
    1.30 @@ -1193,24 +1193,49 @@
    1.31       $layout/login.m4.html
    1.32    return
    1.33  }
    1.34 -groupman() {
    1.35 +newgrpchk() {
    1.36 +  # Check if $1 is existing and 
    1.37 +}
    1.38 +groupupdate() {
    1.39    gname=`getpar gname`
    1.40 +  qgname=`sqlquote $gname`
    1.41 +  err Enter:groupupdate
    1.42    if [ -n "$gname" ]; then
    1.43      # See ALSO same job in showgroup()
    1.44      newgname=`echo "$gname"|tr -d '\"'"'"`
    1.45 -    ###newgname=$gname
    1.46 +    err newgname=$newgname
    1.47      if [ x"$newgname" != x"$gname" ]; then
    1.48        err NewGNAME: gname=$newgname
    1.49        gname=$newgname
    1.50        echo "使用禁止文字を除去し $gname としました。" | html p
    1.51        replpar gname string "$gname"
    1.52      fi
    1.53 +    # Name confliction check
    1.54 +    parow=`getpar rowid`
    1.55 +err parow=$parow
    1.56 +    qgname=`sqlquote $gname`	# Set again in case gname modified
    1.57 +    query "BEGIN EXCLUSIVE;"
    1.58 +    err "select count(gname) from grp where rowid != ${parow:-0} and gname = $qgname;"
    1.59 +    count=$(query "select count(gname) from grp where rowid != ${parow:-0} and gname = $qgname;")
    1.60 +    if [ $count -gt 0 ]; then
    1.61 +      echo "そのグループ名は既にあります。" | html p
    1.62 +      query "END;"
    1.63 +      return
    1.64 +    fi
    1.65      par2table $formdir/grp.def
    1.66 -    joingrp "$gname" "$user" yes "$user" as-admin
    1.67 +    query "END TRANSACTION;"
    1.68 +    [ -z "$parow" ] && joingrp "$gname" "$user" yes "$user" as-admin
    1.69    fi
    1.70 -  GF_STAGE=groupman
    1.71 +  sql="select rowid from grp where gname=$qgname;"
    1.72 +  grid=$(query $sql)
    1.73 +  err grpupdate:new-grid=$grid, sql=$sql
    1.74 +  grp $grid
    1.75 +}
    1.76 +groupman() {
    1.77    note="<p>グループ名に使用できない文字は自動的に削除されます。</p>"
    1.78    
    1.79 +  GF_STAGE="grpconf"
    1.80 +  GF_STAGE=groupupdate
    1.81    DT_VIEW=grp dumptable html grp 'gname gecos:DESC mtime:TIME' 'order by b.TIME desc' \
    1.82    |m4 -D_TITLE_="グループ作成" \
    1.83       -D_FORM_="$note`genform $formdir/grp.def`" \
    1.84 @@ -1229,7 +1254,8 @@
    1.85    #rowid=`query "select rowid from grp where gname='$1';"`
    1.86    rowid=${1%%[!A-Z0-9a-z_]*}
    1.87  err gcon \$1=$1 rowid=$rowid
    1.88 -  GF_ACTION="?grp+$1" edittable "$formdir/grp.def" "grp" "$rowid"
    1.89 +  # GF_ACTION="?grp+$1" edittable "$formdir/grp.def" "grp" "$rowid" #2015-0804
    1.90 +  GF_STAGE="groupupdate" edittable "$formdir/grp.def" "grp" "$rowid"
    1.91  }
    1.92  mems() {
    1.93    m4 -D_TITLE_="参加者一覧" -D_BODYCLASS_=listmember $layout/html.m4.html
    1.94 @@ -1346,7 +1372,14 @@
    1.95  err ListGrp: tag=$tag
    1.96      tn=${tagline%%=${tag}*}
    1.97      tn=${tn##*[ :]}
    1.98 -    sql="select rowid||':'||gname as 'グループ名',説明 from (select (select rowid from grp g where g.gname=grp_s.gname) as rowid,gname,max(case key when 'gecos' then val end) as '説明',max(case key when 'tag' then val end) as 'tag',max(case key when 'mtime' then val end) as mtime from grp_s $where$* group by gname having tag='$tag' order by mtime desc);"
    1.99 +    sql="select rowid||':'||gname as 'グループ名',説明 from
   1.100 +	 (select (select rowid from grp g where g.gname=grp_s.gname)
   1.101 +		 as rowid,
   1.102 +	 gname,
   1.103 +	 max(case key when 'gecos' then val end) as '説明',
   1.104 +	 max(case key when 'tag' then val end) as 'tag',
   1.105 +	 max(case key when 'mtime' then val end) as mtime from grp_s
   1.106 +	 $where$* group by gname having tag='$tag' order by mtime desc);"
   1.107   err PersonalGroupList= `echo $sql`
   1.108      echo "<h2>$tn</h2>"
   1.109      echo '<table class="b listgroup">'
   1.110 @@ -1485,21 +1518,21 @@
   1.111    listentry group "$@"
   1.112  }
   1.113  showgroup() { # $1=group-rowid
   1.114 -  gname=`getpar gname`
   1.115 -  if [ -n "$gname" ]; then
   1.116 -    err UPdating/Removing of group:::::::
   1.117 -    # See ALSO same job in groupman()
   1.118 -    newgname=`echo "$gname"|tr -d '\"'"'"`
   1.119 -    ###newgname=$gname
   1.120 -err gname=$gname newgname=$newgname
   1.121 -    if [ x"$newgname" != x"$gname" ]; then
   1.122 -      err NewGNAME: gname=$newgname
   1.123 -      gname=$newgname
   1.124 -      echo "使用禁止文字を除去し $gname としました。" | html p
   1.125 -      replpar gname string "$gname"
   1.126 -    fi
   1.127 -    par2table $formdir/grp.def
   1.128 -  fi
   1.129 +#   gname=`getpar gname`
   1.130 +#   if [ -n "$gname" ]; then
   1.131 +#     err UPdating/Removing of group:::::::
   1.132 +#     # See ALSO same job in groupman()
   1.133 +#     newgname=`echo "$gname"|tr -d '\"'"'"`
   1.134 +#     ###newgname=$gname
   1.135 +# err gname=$gname newgname=$newgname
   1.136 +#     if [ x"$newgname" != x"$gname" ]; then
   1.137 +#       err NewGNAME: gname=$newgname
   1.138 +#       gname=$newgname
   1.139 +#       echo "使用禁止文字を除去し $gname としました。" | html p
   1.140 +#       replpar gname string "$gname"
   1.141 +#     fi
   1.142 +#     par2table $formdir/grp.def
   1.143 +#   fi
   1.144    grp=`getgroupbyid $1`
   1.145  err showgroup2: grp=$grp qgrp="[$(sqlquote $grp)]"
   1.146    if isgroup "$grp"; then
   1.147 @@ -1977,13 +2010,13 @@
   1.148      fi
   1.149    fi
   1.150    # XX: Subshelling here is unnecessary 2015-07-05
   1.151 -  (ts=${tbl}_s tm=${tbl}_m val="" pval="" formaster="" getrow=""
   1.152 +  (ts=${tbl}_s tm=${tbl}_m val="" pval="" formaster=""
   1.153     if [ -n "$rowid" ]; then
   1.154       # Update of existing record
   1.155       for col in `gettblcols $tbl`; do
   1.156         val=`getparquote $col`
   1.157         [ -z "$val" ] && continue
   1.158 -       err  sq $db "update $tbl set $col=$val where rowid=$rowid"
   1.159 +       err  query "update $tbl set $col=$val where rowid=$rowid"
   1.160         query "update $tbl set $col=$val where rowid=$rowid;"
   1.161       done
   1.162       # Then, set up $pval for further insertion of tbl_s and tbl_m
   1.163 @@ -2014,7 +2047,7 @@
   1.164         return 1
   1.165       fi
   1.166       err "replace into $tbl values($formaster);"
   1.167 -     echo "replace into $tbl values($formaster); $getrow" | sq $db
   1.168 +     query "replace into $tbl values($formaster);"
   1.169       ## Insertion to master table, done
   1.170     fi
   1.171       
   1.172 @@ -2071,8 +2104,8 @@
   1.173  # err newsql=$newsql
   1.174  	   sql=$sql$nl"$newsql where rowid=$st_rowid;"
   1.175  	 done
   1.176 -	 echo "$sql
   1.177 -delete from $tb2 where type='string' and val='';" | sq $db
   1.178 +	 query "$sql
   1.179 +delete from $tb2 where type='string' and val='';"
   1.180  	 # Rest of kt==m: set multiple mode
   1.181  	 nr=`getparcount $col`
   1.182         else
   1.183 @@ -2127,8 +2160,7 @@
   1.184  	     ;;
   1.185  	 esac
   1.186  ## err p2t: "replace into $tb2 values($pval, \"$col\", $type, $val, $bin);"
   1.187 -	 echo "replace into $tb2 values($pval, \"$col\", $type, $val, $bin);" \
   1.188 -	     | sq $db
   1.189 +	 query "replace into $tb2 values($pval, \"$col\", $type, $val, $bin);"
   1.190         done
   1.191       done
   1.192     done