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