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 wrap: on
line diff
--- 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="<p>グループ名に使用できない文字は自動的に削除されます。</p>"
   
+  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 "<h2>$tn</h2>"
     echo '<table class="b listgroup">'
@@ -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

yatex.org