changeset 79:f088d45dfdf2

Code cleaning: move substantial jobs from s4.cgi to s4-funcs.sh
author HIROSE Yuuji <yuuji@gentei.org>
date Sun, 02 Aug 2015 10:58:58 +0900
parents 0cbbb0874eb5
children 39e69daa2071
files s4-funcs.sh s4.cgi
diffstat 2 files changed, 116 insertions(+), 186 deletions(-) [+]
line wrap: on
line diff
--- a/s4-funcs.sh	Sat Aug 01 23:00:57 2015 +0900
+++ b/s4-funcs.sh	Sun Aug 02 10:58:58 2015 +0900
@@ -39,13 +39,15 @@
 
     資料配布、グループ管理・ML、ファイル交換、クリッカー、アンケート
     レポート提出管理
-○グループへの一斉送信機能は付いたが表に出てない(7/6)
 ひとつのarticleをheadingにして新規ツリーを作成、あるといいかも。
 
+8/2	s4.cgi生成系
+	Web
+	締切設定
+	自分の提出物リスト
+
 7/19	○設置
-	締切設定
 	○一斉送信
-	自分の提出物リスト
 	○getparfilename の tmpd の扱い
 	○やっぱりs4にしようかな
 7/18	○書込著者からホームへのリンク
@@ -1208,17 +1210,48 @@
      $layout/html.m4.html $layout/form+dump.m4.html
 }
 userconf() {
+  [ -n "`getpar rowid`" ] && par2table $formdir/user.def
   m4 -D_BODYCLASS_=userconf -D_TITLE_="ユーザ情報編集" $layout/html.m4.html
   GF_ACTION="?home" edittable "$formdir/user.def" "user" "$user"
 }
 groupconf() {
   # $1=rowid in grp (2015-07-21 changed from gname)
+  [ -n "`getpar rowid`" ] && par2table $formdir/grp.def
   m4 -D_BODYCLASS_=groupconf -D_TITLE_="グループ情報編集" $layout/html.m4.html
   #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"
 }
+mems() {
+  m4 -D_TITLE_="参加者一覧" -D_BODYCLASS_=listmember $layout/html.m4.html
+  kwd=`getpar kwd`
+  listmember $kwd
+}
+grps() {
+  m4 -D_TITLE_="グループ一覧" -D_BODYCLASS_=listgroup $layout/html.m4.html
+  kwd=`getpar kwd`
+  listgroup $kwd \
+      | m4 -D_DUMPTABLE_="syscmd(\`cat')" \
+	   -D_TITLE_="グループ関連操作" \
+	   -D_FORM_="<a href=\"?groupman\">新規グループ作成</a>" \
+	   $layout/form+dump.m4.html
+}
+grp() {	# $1=group-rowid
+  gpg=`getpar grp`
+  grid=${1:-$gpg}
+  grp=`getgroupbyid "$grid"`
+  err grp: getpar-grp"(gpg)=[$grp]"
+  ## . ./s4-blog.sh
+  jg=`getpar joingrp`
+  if [ -n "$jg" ]; then
+    err jg=$jg, grp=$grp
+    [ -n "$jg" -a -n "$grp" ] &&
+	joingrp "$grp" "$user" "$jg" "`getpar email`"
+  fi
+  m4 -D_TITLE_="グループ $grp" $layout/html.m4.html
+  showgroup "$grid"
+}
 showhome() {
   # $1=userRowIdToShow
 err showhome \$1=$1
@@ -1259,7 +1292,17 @@
   # Record access log
   [ -n "$1" ] && [ x"$1" != x"$user" ] && acclog user $1
 }
-
+commission() {  # $1=grp-rowid $2=user-rowid
+  contenttype; echo
+  err commission: "$@"
+  gname=`getgroupbyid $1`
+  m4 -D_TITLE_="グループ $gname 管理者委任" $layout/html.m4.html
+  if [ -n "$2" ]; then
+    grp_reg_adm "$@"
+  else
+    echo "無効な指定です。普通のアクセスならここに来ないはず。"|html p
+  fi
+}
 listgroupbytable() {
   # $1=deffile $2...=condition
   tagline=`grep :tag: $1`; shift
@@ -1516,11 +1559,19 @@
       |sed -e "s|\(<br>\),not=\(.*\)|\1<a href=\"$cm+\2\">管理者委託</a>|"
 }
 grpaction() {			# $1=group-rowid
-  # $grid=Group-id $grp=gname (got in s4.cgi)
+  err GRP_ACTION:IN
+  grid=${1:-`getpar grp`}
+  grp=`getgroupbyid "$grid"`
+  if [ -z "$grp" ]; then
+    echo "無効な指定です。" | html p
+    return
+  fi
+  m4 -D_TITLE_="グループ $grp 個別選択操作" $layout/html.m4.html
+
   usel=`getpar usel`
   if [ -n "$usel" ]; then
     uids=$(echo `echo $usel`|tr ' ' ',')
-    #err grpaction-1: grp=$grp, `echo $sql`
+    err grpaction-1: grp=$grp, `echo $sql`
     text=`getpar text`
     
     rm=`getpar rm` cfm=`getpar confirm`
@@ -1625,7 +1676,45 @@
 </table>
 EOF
 }
-send2grpmember() {
+editheading() {	# $1=rowid-of-heading
+  rowid=${1%%[!A-Z0-9a-z_]*}
+  if [ -z "$rowid" ]; then
+    echo "話題番号が未指定です。" | html p
+    return
+  fi
+  owner=`getvalbyid blog owner $rowid`
+  title=`getvalbyid blog title $rowid`
+  m4 -D_TITLE_="修正" \
+     -D_SUBTITLE_="[$title]@$owner" -D_DIARY_="" \
+     -D_BLOGS_="" -D_DUMPTABLE_="" \
+     -D_FORM_="`GF_ACTION=\"?blog\" edittable $formdir/blog.def blog $rowid`" \
+     $layout/html.m4.html $layout/form+dump.m4.html
+}
+editart() {	# $1=article-rowid $2=blogrowid
+  rowid=${1%%[!A-Z0-9a-z_]*}
+  blogrowid=${2%%[!A-Z0-9a-z_]*}
+  if [ -z "$rowid" -o -z "$blogrowid" ]; then
+    echo "表示する記事番号が未指定です。" | html p
+    return
+  fi
+  owner=`getvalbyid blog owner $blogrowid`
+  title=`getvalbyid blog title $blogrowid`
+  author=`getvalbyid article author $rowid`
+  err EDITart: owner=$owner, author=$author
+  if isgrpowner $user $owner; then
+    : EDIT OK
+  elif [ x"$owner" != x"$user" -a x"$author" != x"$user" ]; then
+    echo "本人か所有者しか編集できません." | html p
+    return
+  fi
+  aid=`query "select id from article where rowid=$rowid;"`
+  m4 -D_TITLE_="コメントの修正" -D_DIARY_="" \
+     -D_FORM_="`GF_ACTION=\"?replyblog+$blogrowid#$aid\" edittable $formdir/article.def article $rowid`" \
+     -D_SUBTITLE_="`gecos $owner`の「$title」" \
+     -D_BLOGS_= -D_DUMPTABLE_= \
+     $layout/html.m4.html $layout/form+dump.m4.html
+}
+send2mem() {
   rowid=`getpar grp`
   if [ -z "$rowid" ]; then
     echo "グループが未指定です。" | html p
--- a/s4.cgi	Sat Aug 01 23:00:57 2015 +0900
+++ b/s4.cgi	Sun Aug 02 10:58:58 2015 +0900
@@ -20,122 +20,35 @@
     ;;
 esac
 
-## err 1=$1 2=$2 3=$3 4=$4
+err 1=$1 2=$2 3=$3 4=$4
 stage=`getpar stage`
 stage=${stage:-$1}
 case ${stage} in
-  # "")
-  #   contenttype; echo
-  #   m4 -D_SITE_="S System" $layout/welcome.m4.html
-  #   # echo "<pre>"; gencookie "user=$user" "skey=$skey"; echo "</pre>"
-  #   # echo "<pre>`env|sort -u`</pre>"
-  #   ;;
-  "home"|"")
+  home|"")
     contenttype; echo
-err HOME: just in rowid=`getpar rowid`
+    err HOME: just in rowid=`getpar rowid`
     [ -n "`getpar rowid`" ] && par2table $formdir/user.def
     showhome ${2:-$user}
     ;;
-  # "diary")
-  #   contenttype; echo
-  #   title=`getpar title` #diary=`getpar diary` wday=`getpar wday`
-  #   [ -n "$title" ] && par2table $formdir/diary.def
-  #   m4 -D_TITLE_="$title" -D_DIARY_="$diary" \
-  #      -D_FORM_="`genform templ/form/diary.def`" \
-  #      -D_FORM2_="syscmd(\`genform templ/form/diary.def')" \
-  #      -D_DUMPTABLE_="`dumptable html diary title,wday,diary`" \
-  #      $layout/html.m4.html $layout/diary.m4.html
-  #   ;;
-  "login")
+  login)
     contenttype; echo
     myargs=""
     showlogin
     ;;
-  "invite")
-    contenttype; echo
-    invite
-    ;;
-  "groupman")
-    contenttype; echo
-    groupman
-    ;;
-  "edittable")
-    contenttype; echo
-    m4 -D_TITLE_="グループ編集/削除" $layout/html.m4.html
-    edittable "$formdir/$2.def" "$2" "$3"
-    ;;
-  "userconf")
-    contenttype; echo
-    [ -n "`getpar rowid`" ] && par2table $formdir/user.def
-    userconf
+  # "edittable")
+  #   contenttype; echo
+  #   m4 -D_TITLE_="グループ編集/削除" $layout/html.m4.html
+  #   edittable "$formdir/$2.def" "$2" "$3"
+  #   ;;
+  "showattc")
+    shift
+    showattc "$@"
+    exit 0			# Do not output further chunks
     ;;
-  "groupconf")
-    contenttype; echo
-    [ -n "`getpar rowid`" ] && par2table $formdir/grp.def
-    groupconf "$2"
-    ;;
-  "mems")
-    contenttype; echo
-    m4 -D_TITLE_="参加者一覧" -D_BODYCLASS_=listmember $layout/html.m4.html
-    kwd=`getpar kwd`
-    listmember $kwd
-    ;;
-  "grps")
-    contenttype; echo
-    m4 -D_TITLE_="グループ一覧" -D_BODYCLASS_=listgroup $layout/html.m4.html
-    kwd=`getpar kwd`
-    listgroup $kwd \
-	| m4 -D_DUMPTABLE_="syscmd(\`cat')" \
-	     -D_TITLE_="グループ関連操作" \
-	     -D_FORM_="<a href=\"?groupman\">新規グループ作成</a>" \
-	     $layout/form+dump.m4.html
-    ;;
-  "grps2")
+  invite|groupman|userconf|groupconf|mems|grps|grp|grpaction|commission|editheading|editart|showattc|send2mem)
     contenttype; echo
-    m4 -D_TITLE_="グループ一覧" \
-       -D_FORM_="`listgroup2 $formdir/grp.def`" -D_DUMPTABLE_= \
-       $layout/html.m4.html \
-       $layout/form+dump-whead.m4.html
-    ;;
-  "grp") # $2=group-rowid
-    contenttype; echo
-    gpg=`getpar grp`
-    grid=${2:-$gpg}
-    grp=`getgroupbyid "$grid"`
-err grp: getpar-grp"(gpg)=[$grp]"
-    ## . ./s4-blog.sh
-    jg=`getpar joingrp`
-    if [ -n "$jg" ]; then
-      err jg=$jg, grp=$grp
-      [ -n "$jg" -a -n "$grp" ] &&
-	  joingrp "$grp" "$user" "$jg" "`getpar email`"
-    fi
-    m4 -D_TITLE_="グループ $grp" \
-       $layout/html.m4.html
-    showgroup "$grid"
-    ;;
-  "grpaction")			# $2=group-rowid
-    contenttype; echo
-    grid=${2:-`getpar grp`}
-    grp=`getgroupbyid "$grid"`
-    if [ -z "$grp" ]; then
-      echo "<p>無効な指定です。</p>"
-      return
-    fi
-    m4 -D_TITLE_="グループ $grp 個別選択操作" $layout/html.m4.html
-    grpaction "$grid"
-    ;;
-  "commission")
-    # $2=grp-rowid $3=user-rowid
-    contenttype; echo
-err commission: "$@"
-    m4 -D_TITLE_="グループ $2 管理者委任" $layout/html.m4.html
-    shift			# $1=grp-rowid $2=user-rowid
-    if [ -n "$2" ]; then
-      grp_reg_adm "$@"
-    else
-      echo "無効な指定です。普通のアクセスならここに来ないはず。"|html p
-    fi
+    [ -n "$1" ] && shift
+    $stage "$@"
     ;;
   "blog")	# $2=grpID
     contenttype; echo
@@ -150,49 +63,7 @@
 err blog_reply $rowid
     blog_reply $rowid
     ;;
-  "editheading")
-    contenttype; echo
-    rowid=${2%%[!A-Z0-9a-z_]*}
-    # blogrowid=${3%%[!A-Z0-9a-z_]*}
-    if [ -z "$rowid" ]; then
-      echo "話題番号が未指定です。" | html p
-      return
-    fi
-    owner=`getvalbyid blog owner $2`
-    title=`getvalbyid blog title $2`
-    m4 -D_TITLE_="修正" \
-       -D_SUBTITLE_="[$title]@$owner" -D_DIARY_="" \
-       -D_BLOGS_="" -D_DUMPTABLE_="" \
-       -D_FORM_="`GF_ACTION=\"?blog\" edittable $formdir/blog.def blog $rowid`" \
-       $layout/html.m4.html $layout/form+dump.m4.html
-    ;;
-  "editart")
-    contenttype; echo
-    rowid=${2%%[!A-Z0-9a-z_]*}
-    blogrowid=${3%%[!A-Z0-9a-z_]*}
-    if [ -z "$rowid" -o -z "$blogrowid" ]; then
-      echo "表示する記事番号が未指定です。" | html p
-      return
-    fi
-    owner=`getvalbyid blog owner $blogrowid`
-    title=`getvalbyid blog title $blogrowid`
-    author=`getvalbyid article author $rowid`
-    err EDITart: owner=$owner, author=$author
-    if isgrpowner $user $owner; then
-	: EDIT OK
-    elif [ x"$owner" != x"$user" -a x"$author" != x"$user" ]; then
-      echo "本人か所有者しか編集できません." | html p
-      return
-    fi
-    aid=`query "select id from article where rowid=$rowid;"`
-    # title=`getvalbyid blog title $2`
-    m4 -D_TITLE_="コメントの修正" -D_DIARY_="" \
-       -D_FORM_="`GF_ACTION=\"?replyblog+$blogrowid#$aid\" edittable $formdir/article.def article $rowid`" \
-       -D_SUBTITLE_="`gecos $owner`の「$title」" \
-       -D_BLOGS_= -D_DUMPTABLE_= \
-       $layout/html.m4.html $layout/form+dump.m4.html
-    ;;
-  "lshandout")
+  lshandout|gethandout)
     contenttype; echo
     rowid=${2%%[!A-Z0-9a-z_]*}
     if [ -z "$rowid" ]; then
@@ -200,16 +71,7 @@
       return
     fi
     . ./s4-blog.sh
-    lshandout $rowid
-    ;;
-  "gethandout")
-    rowid=${2%%[!A-Z0-9a-z_]*}
-    if [ -z "$rowid" ]; then
-      echo "話題番号が未指定です。" | html p
-      return
-    fi
-    . ./s4-blog.sh
-    gethandout $rowid
+    $stage $rowid
     ;;
   "searchart")			# $2=blogowner
     contenttype; echo
@@ -217,29 +79,8 @@
     . ./s4-blog.sh
     searchart $2
     ;;
-  "send2mem")
-    contenttype; echo
-    send2grpmember
-    ;;
-  "showattc")
-    # $2=table_m $3=rowid $4=val
-    shift
-    showattc "$@"
-    exit 0
-   ;;
-  "gallery")
-    ## contenttype "Image/jpeg"
-    sql="select quote(b) from te where a='${2:-mikan.jpg}'"
-    idir=`umask 002; mktempd` || exit 1
-    # tmpfiles=$tmpfiles"${tmpfiles+ }$idir"
-    img=$idir/$myname-$$.bin
-    db=b.sq3
-    sqlite3 $db "$sql" | xxd -r -p > $img
-    len=`cat $img | wc -c`
-    echo "Content-Length: $len"
-    type=`file --mime-type $img | cut -d' ' -f2`
-    echo 'Content-type: $type'; echo
-    cat $img
+  *)
+    exec $0 login
     ;;
 esac
 

yatex.org