# HG changeset patch # User HIROSE Yuuji # Date 1438653775 -32400 # Node ID 3bad3f525dfcda5a6033b0a3c58fa0fae76e1df9 # Parent cec40085a1d43b38ecfdc4b8f55b53f7dec79750 Multiple text fields handled correctly diff -r cec40085a1d4 -r 3bad3f525dfc s4-funcs.sh --- a/s4-funcs.sh Tue Aug 04 07:11:25 2015 +0900 +++ b/s4-funcs.sh Tue Aug 04 11:02:55 2015 +0900 @@ -39,7 +39,7 @@ レポート提出管理 ひとつのarticleをheadingにして新規ツリーを作成、あるといいかも。 -8/2 s4.cgi生成系 +8/2 ○s4.cgi生成系 → index.cgi生成 Web 締切設定 ○自分の提出物リスト @@ -550,7 +550,7 @@ slice="order by rowid limit 1 offset $i" i=$((i+1)) fn=$c.$i -##err td=$td, fn=$fn, type=$type, val="[$val]" +err td=$td, fn=$fn, type=$type, val="[$val]" case $type in file:*) #file=$td/$val @@ -589,7 +589,7 @@ .output $td/$fn select val from $cond $slice; EOF - val=$val"`echo $fn`" # should be delimited by newline + val=$val${val:+$nl}"`echo $fn`" # should be delimited by newline ;; esac done @@ -1193,24 +1193,49 @@ $layout/login.m4.html return } -groupman() { +newgrpchk() { + # Check if $1 is existing and +} +groupupdate() { gname=`getpar gname` + qgname=`sqlquote $gname` + err Enter:groupupdate if [ -n "$gname" ]; then # See ALSO same job in showgroup() newgname=`echo "$gname"|tr -d '\"'"'"` - ###newgname=$gname + err newgname=$newgname if [ x"$newgname" != x"$gname" ]; then err NewGNAME: gname=$newgname gname=$newgname echo "使用禁止文字を除去し $gname としました。" | html p replpar gname string "$gname" fi + # Name confliction check + parow=`getpar rowid` +err parow=$parow + qgname=`sqlquote $gname` # Set again in case gname modified + query "BEGIN EXCLUSIVE;" + err "select count(gname) from grp where rowid != ${parow:-0} and gname = $qgname;" + count=$(query "select count(gname) from grp where rowid != ${parow:-0} and gname = $qgname;") + if [ $count -gt 0 ]; then + echo "そのグループ名は既にあります。" | html p + query "END;" + return + fi par2table $formdir/grp.def - joingrp "$gname" "$user" yes "$user" as-admin + query "END TRANSACTION;" + [ -z "$parow" ] && joingrp "$gname" "$user" yes "$user" as-admin fi - GF_STAGE=groupman + sql="select rowid from grp where gname=$qgname;" + grid=$(query $sql) + err grpupdate:new-grid=$grid, sql=$sql + grp $grid +} +groupman() { note="

グループ名に使用できない文字は自動的に削除されます。

" + GF_STAGE="grpconf" + GF_STAGE=groupupdate DT_VIEW=grp dumptable html grp 'gname gecos:DESC mtime:TIME' 'order by b.TIME desc' \ |m4 -D_TITLE_="グループ作成" \ -D_FORM_="$note`genform $formdir/grp.def`" \ @@ -1229,7 +1254,8 @@ #rowid=`query "select rowid from grp where gname='$1';"` rowid=${1%%[!A-Z0-9a-z_]*} err gcon \$1=$1 rowid=$rowid - GF_ACTION="?grp+$1" edittable "$formdir/grp.def" "grp" "$rowid" + # GF_ACTION="?grp+$1" edittable "$formdir/grp.def" "grp" "$rowid" #2015-0804 + GF_STAGE="groupupdate" edittable "$formdir/grp.def" "grp" "$rowid" } mems() { m4 -D_TITLE_="参加者一覧" -D_BODYCLASS_=listmember $layout/html.m4.html @@ -1346,7 +1372,14 @@ err ListGrp: tag=$tag tn=${tagline%%=${tag}*} tn=${tn##*[ :]} - 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);" + 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);" err PersonalGroupList= `echo $sql` echo "

$tn

" echo '' @@ -1485,21 +1518,21 @@ listentry group "$@" } showgroup() { # $1=group-rowid - gname=`getpar gname` - if [ -n "$gname" ]; then - err UPdating/Removing of group::::::: - # See ALSO same job in groupman() - newgname=`echo "$gname"|tr -d '\"'"'"` - ###newgname=$gname -err gname=$gname newgname=$newgname - if [ x"$newgname" != x"$gname" ]; then - err NewGNAME: gname=$newgname - gname=$newgname - echo "使用禁止文字を除去し $gname としました。" | html p - replpar gname string "$gname" - fi - par2table $formdir/grp.def - fi +# gname=`getpar gname` +# if [ -n "$gname" ]; then +# err UPdating/Removing of group::::::: +# # See ALSO same job in groupman() +# newgname=`echo "$gname"|tr -d '\"'"'"` +# ###newgname=$gname +# err gname=$gname newgname=$newgname +# if [ x"$newgname" != x"$gname" ]; then +# err NewGNAME: gname=$newgname +# gname=$newgname +# echo "使用禁止文字を除去し $gname としました。" | html p +# replpar gname string "$gname" +# fi +# par2table $formdir/grp.def +# fi grp=`getgroupbyid $1` err showgroup2: grp=$grp qgrp="[$(sqlquote $grp)]" if isgroup "$grp"; then @@ -1977,13 +2010,13 @@ fi fi # XX: Subshelling here is unnecessary 2015-07-05 - (ts=${tbl}_s tm=${tbl}_m val="" pval="" formaster="" getrow="" + (ts=${tbl}_s tm=${tbl}_m val="" pval="" formaster="" if [ -n "$rowid" ]; then # Update of existing record for col in `gettblcols $tbl`; do val=`getparquote $col` [ -z "$val" ] && continue - err sq $db "update $tbl set $col=$val where rowid=$rowid" + err query "update $tbl set $col=$val where rowid=$rowid" query "update $tbl set $col=$val where rowid=$rowid;" done # Then, set up $pval for further insertion of tbl_s and tbl_m @@ -2014,7 +2047,7 @@ return 1 fi err "replace into $tbl values($formaster);" - echo "replace into $tbl values($formaster); $getrow" | sq $db + query "replace into $tbl values($formaster);" ## Insertion to master table, done fi @@ -2071,8 +2104,8 @@ # err newsql=$newsql sql=$sql$nl"$newsql where rowid=$st_rowid;" done - echo "$sql -delete from $tb2 where type='string' and val='';" | sq $db + query "$sql +delete from $tb2 where type='string' and val='';" # Rest of kt==m: set multiple mode nr=`getparcount $col` else @@ -2127,8 +2160,7 @@ ;; esac ## err p2t: "replace into $tb2 values($pval, \"$col\", $type, $val, $bin);" - echo "replace into $tb2 values($pval, \"$col\", $type, $val, $bin);" \ - | sq $db + query "replace into $tb2 values($pval, \"$col\", $type, $val, $bin);" done done done