s4
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, 117 insertions(+), 187 deletions(-) [+] |
line diff
1.1 --- a/s4-funcs.sh Sat Aug 01 23:00:57 2015 +0900 1.2 +++ b/s4-funcs.sh Sun Aug 02 10:58:58 2015 +0900 1.3 @@ -39,13 +39,15 @@ 1.4 1.5 資料配布、グループ管理・ML、ファイル交換、クリッカー、アンケート 1.6 レポート提出管理 1.7 -○グループへの一斉送信機能は付いたが表に出てない(7/6) 1.8 ひとつのarticleをheadingにして新規ツリーを作成、あるといいかも。 1.9 1.10 +8/2 s4.cgi生成系 1.11 + Web 1.12 + 締切設定 1.13 + 自分の提出物リスト 1.14 + 1.15 7/19 ○設置 1.16 - 締切設定 1.17 ○一斉送信 1.18 - 自分の提出物リスト 1.19 ○getparfilename の tmpd の扱い 1.20 ○やっぱりs4にしようかな 1.21 7/18 ○書込著者からホームへのリンク 1.22 @@ -1208,17 +1210,48 @@ 1.23 $layout/html.m4.html $layout/form+dump.m4.html 1.24 } 1.25 userconf() { 1.26 + [ -n "`getpar rowid`" ] && par2table $formdir/user.def 1.27 m4 -D_BODYCLASS_=userconf -D_TITLE_="ユーザ情報編集" $layout/html.m4.html 1.28 GF_ACTION="?home" edittable "$formdir/user.def" "user" "$user" 1.29 } 1.30 groupconf() { 1.31 # $1=rowid in grp (2015-07-21 changed from gname) 1.32 + [ -n "`getpar rowid`" ] && par2table $formdir/grp.def 1.33 m4 -D_BODYCLASS_=groupconf -D_TITLE_="グループ情報編集" $layout/html.m4.html 1.34 #rowid=`query "select rowid from grp where gname='$1';"` 1.35 rowid=${1%%[!A-Z0-9a-z_]*} 1.36 err gcon \$1=$1 rowid=$rowid 1.37 GF_ACTION="?grp+$1" edittable "$formdir/grp.def" "grp" "$rowid" 1.38 } 1.39 +mems() { 1.40 + m4 -D_TITLE_="参加者一覧" -D_BODYCLASS_=listmember $layout/html.m4.html 1.41 + kwd=`getpar kwd` 1.42 + listmember $kwd 1.43 +} 1.44 +grps() { 1.45 + m4 -D_TITLE_="グループ一覧" -D_BODYCLASS_=listgroup $layout/html.m4.html 1.46 + kwd=`getpar kwd` 1.47 + listgroup $kwd \ 1.48 + | m4 -D_DUMPTABLE_="syscmd(\`cat')" \ 1.49 + -D_TITLE_="グループ関連操作" \ 1.50 + -D_FORM_="<a href=\"?groupman\">新規グループ作成</a>" \ 1.51 + $layout/form+dump.m4.html 1.52 +} 1.53 +grp() { # $1=group-rowid 1.54 + gpg=`getpar grp` 1.55 + grid=${1:-$gpg} 1.56 + grp=`getgroupbyid "$grid"` 1.57 + err grp: getpar-grp"(gpg)=[$grp]" 1.58 + ## . ./s4-blog.sh 1.59 + jg=`getpar joingrp` 1.60 + if [ -n "$jg" ]; then 1.61 + err jg=$jg, grp=$grp 1.62 + [ -n "$jg" -a -n "$grp" ] && 1.63 + joingrp "$grp" "$user" "$jg" "`getpar email`" 1.64 + fi 1.65 + m4 -D_TITLE_="グループ $grp" $layout/html.m4.html 1.66 + showgroup "$grid" 1.67 +} 1.68 showhome() { 1.69 # $1=userRowIdToShow 1.70 err showhome \$1=$1 1.71 @@ -1259,7 +1292,17 @@ 1.72 # Record access log 1.73 [ -n "$1" ] && [ x"$1" != x"$user" ] && acclog user $1 1.74 } 1.75 - 1.76 +commission() { # $1=grp-rowid $2=user-rowid 1.77 + contenttype; echo 1.78 + err commission: "$@" 1.79 + gname=`getgroupbyid $1` 1.80 + m4 -D_TITLE_="グループ $gname 管理者委任" $layout/html.m4.html 1.81 + if [ -n "$2" ]; then 1.82 + grp_reg_adm "$@" 1.83 + else 1.84 + echo "無効な指定です。普通のアクセスならここに来ないはず。"|html p 1.85 + fi 1.86 +} 1.87 listgroupbytable() { 1.88 # $1=deffile $2...=condition 1.89 tagline=`grep :tag: $1`; shift 1.90 @@ -1516,11 +1559,19 @@ 1.91 |sed -e "s|\(<br>\),not=\(.*\)|\1<a href=\"$cm+\2\">管理者委託</a>|" 1.92 } 1.93 grpaction() { # $1=group-rowid 1.94 - # $grid=Group-id $grp=gname (got in s4.cgi) 1.95 + err GRP_ACTION:IN 1.96 + grid=${1:-`getpar grp`} 1.97 + grp=`getgroupbyid "$grid"` 1.98 + if [ -z "$grp" ]; then 1.99 + echo "無効な指定です。" | html p 1.100 + return 1.101 + fi 1.102 + m4 -D_TITLE_="グループ $grp 個別選択操作" $layout/html.m4.html 1.103 + 1.104 usel=`getpar usel` 1.105 if [ -n "$usel" ]; then 1.106 uids=$(echo `echo $usel`|tr ' ' ',') 1.107 - #err grpaction-1: grp=$grp, `echo $sql` 1.108 + err grpaction-1: grp=$grp, `echo $sql` 1.109 text=`getpar text` 1.110 1.111 rm=`getpar rm` cfm=`getpar confirm` 1.112 @@ -1625,7 +1676,45 @@ 1.113 </table> 1.114 EOF 1.115 } 1.116 -send2grpmember() { 1.117 +editheading() { # $1=rowid-of-heading 1.118 + rowid=${1%%[!A-Z0-9a-z_]*} 1.119 + if [ -z "$rowid" ]; then 1.120 + echo "話題番号が未指定です。" | html p 1.121 + return 1.122 + fi 1.123 + owner=`getvalbyid blog owner $rowid` 1.124 + title=`getvalbyid blog title $rowid` 1.125 + m4 -D_TITLE_="修正" \ 1.126 + -D_SUBTITLE_="[$title]@$owner" -D_DIARY_="" \ 1.127 + -D_BLOGS_="" -D_DUMPTABLE_="" \ 1.128 + -D_FORM_="`GF_ACTION=\"?blog\" edittable $formdir/blog.def blog $rowid`" \ 1.129 + $layout/html.m4.html $layout/form+dump.m4.html 1.130 +} 1.131 +editart() { # $1=article-rowid $2=blogrowid 1.132 + rowid=${1%%[!A-Z0-9a-z_]*} 1.133 + blogrowid=${2%%[!A-Z0-9a-z_]*} 1.134 + if [ -z "$rowid" -o -z "$blogrowid" ]; then 1.135 + echo "表示する記事番号が未指定です。" | html p 1.136 + return 1.137 + fi 1.138 + owner=`getvalbyid blog owner $blogrowid` 1.139 + title=`getvalbyid blog title $blogrowid` 1.140 + author=`getvalbyid article author $rowid` 1.141 + err EDITart: owner=$owner, author=$author 1.142 + if isgrpowner $user $owner; then 1.143 + : EDIT OK 1.144 + elif [ x"$owner" != x"$user" -a x"$author" != x"$user" ]; then 1.145 + echo "本人か所有者しか編集できません." | html p 1.146 + return 1.147 + fi 1.148 + aid=`query "select id from article where rowid=$rowid;"` 1.149 + m4 -D_TITLE_="コメントの修正" -D_DIARY_="" \ 1.150 + -D_FORM_="`GF_ACTION=\"?replyblog+$blogrowid#$aid\" edittable $formdir/article.def article $rowid`" \ 1.151 + -D_SUBTITLE_="`gecos $owner`の「$title」" \ 1.152 + -D_BLOGS_= -D_DUMPTABLE_= \ 1.153 + $layout/html.m4.html $layout/form+dump.m4.html 1.154 +} 1.155 +send2mem() { 1.156 rowid=`getpar grp` 1.157 if [ -z "$rowid" ]; then 1.158 echo "グループが未指定です。" | html p
2.1 --- a/s4.cgi Sat Aug 01 23:00:57 2015 +0900 2.2 +++ b/s4.cgi Sun Aug 02 10:58:58 2015 +0900 2.3 @@ -20,122 +20,35 @@ 2.4 ;; 2.5 esac 2.6 2.7 -## err 1=$1 2=$2 3=$3 4=$4 2.8 +err 1=$1 2=$2 3=$3 4=$4 2.9 stage=`getpar stage` 2.10 stage=${stage:-$1} 2.11 case ${stage} in 2.12 - # "") 2.13 - # contenttype; echo 2.14 - # m4 -D_SITE_="S System" $layout/welcome.m4.html 2.15 - # # echo "<pre>"; gencookie "user=$user" "skey=$skey"; echo "</pre>" 2.16 - # # echo "<pre>`env|sort -u`</pre>" 2.17 - # ;; 2.18 - "home"|"") 2.19 + home|"") 2.20 contenttype; echo 2.21 -err HOME: just in rowid=`getpar rowid` 2.22 + err HOME: just in rowid=`getpar rowid` 2.23 [ -n "`getpar rowid`" ] && par2table $formdir/user.def 2.24 showhome ${2:-$user} 2.25 ;; 2.26 - # "diary") 2.27 - # contenttype; echo 2.28 - # title=`getpar title` #diary=`getpar diary` wday=`getpar wday` 2.29 - # [ -n "$title" ] && par2table $formdir/diary.def 2.30 - # m4 -D_TITLE_="$title" -D_DIARY_="$diary" \ 2.31 - # -D_FORM_="`genform templ/form/diary.def`" \ 2.32 - # -D_FORM2_="syscmd(\`genform templ/form/diary.def')" \ 2.33 - # -D_DUMPTABLE_="`dumptable html diary title,wday,diary`" \ 2.34 - # $layout/html.m4.html $layout/diary.m4.html 2.35 - # ;; 2.36 - "login") 2.37 + login) 2.38 contenttype; echo 2.39 myargs="" 2.40 showlogin 2.41 ;; 2.42 - "invite") 2.43 + # "edittable") 2.44 + # contenttype; echo 2.45 + # m4 -D_TITLE_="グループ編集/削除" $layout/html.m4.html 2.46 + # edittable "$formdir/$2.def" "$2" "$3" 2.47 + # ;; 2.48 + "showattc") 2.49 + shift 2.50 + showattc "$@" 2.51 + exit 0 # Do not output further chunks 2.52 + ;; 2.53 + invite|groupman|userconf|groupconf|mems|grps|grp|grpaction|commission|editheading|editart|showattc|send2mem) 2.54 contenttype; echo 2.55 - invite 2.56 - ;; 2.57 - "groupman") 2.58 - contenttype; echo 2.59 - groupman 2.60 - ;; 2.61 - "edittable") 2.62 - contenttype; echo 2.63 - m4 -D_TITLE_="グループ編集/削除" $layout/html.m4.html 2.64 - edittable "$formdir/$2.def" "$2" "$3" 2.65 - ;; 2.66 - "userconf") 2.67 - contenttype; echo 2.68 - [ -n "`getpar rowid`" ] && par2table $formdir/user.def 2.69 - userconf 2.70 - ;; 2.71 - "groupconf") 2.72 - contenttype; echo 2.73 - [ -n "`getpar rowid`" ] && par2table $formdir/grp.def 2.74 - groupconf "$2" 2.75 - ;; 2.76 - "mems") 2.77 - contenttype; echo 2.78 - m4 -D_TITLE_="参加者一覧" -D_BODYCLASS_=listmember $layout/html.m4.html 2.79 - kwd=`getpar kwd` 2.80 - listmember $kwd 2.81 - ;; 2.82 - "grps") 2.83 - contenttype; echo 2.84 - m4 -D_TITLE_="グループ一覧" -D_BODYCLASS_=listgroup $layout/html.m4.html 2.85 - kwd=`getpar kwd` 2.86 - listgroup $kwd \ 2.87 - | m4 -D_DUMPTABLE_="syscmd(\`cat')" \ 2.88 - -D_TITLE_="グループ関連操作" \ 2.89 - -D_FORM_="<a href=\"?groupman\">新規グループ作成</a>" \ 2.90 - $layout/form+dump.m4.html 2.91 - ;; 2.92 - "grps2") 2.93 - contenttype; echo 2.94 - m4 -D_TITLE_="グループ一覧" \ 2.95 - -D_FORM_="`listgroup2 $formdir/grp.def`" -D_DUMPTABLE_= \ 2.96 - $layout/html.m4.html \ 2.97 - $layout/form+dump-whead.m4.html 2.98 - ;; 2.99 - "grp") # $2=group-rowid 2.100 - contenttype; echo 2.101 - gpg=`getpar grp` 2.102 - grid=${2:-$gpg} 2.103 - grp=`getgroupbyid "$grid"` 2.104 -err grp: getpar-grp"(gpg)=[$grp]" 2.105 - ## . ./s4-blog.sh 2.106 - jg=`getpar joingrp` 2.107 - if [ -n "$jg" ]; then 2.108 - err jg=$jg, grp=$grp 2.109 - [ -n "$jg" -a -n "$grp" ] && 2.110 - joingrp "$grp" "$user" "$jg" "`getpar email`" 2.111 - fi 2.112 - m4 -D_TITLE_="グループ $grp" \ 2.113 - $layout/html.m4.html 2.114 - showgroup "$grid" 2.115 - ;; 2.116 - "grpaction") # $2=group-rowid 2.117 - contenttype; echo 2.118 - grid=${2:-`getpar grp`} 2.119 - grp=`getgroupbyid "$grid"` 2.120 - if [ -z "$grp" ]; then 2.121 - echo "<p>無効な指定です。</p>" 2.122 - return 2.123 - fi 2.124 - m4 -D_TITLE_="グループ $grp 個別選択操作" $layout/html.m4.html 2.125 - grpaction "$grid" 2.126 - ;; 2.127 - "commission") 2.128 - # $2=grp-rowid $3=user-rowid 2.129 - contenttype; echo 2.130 -err commission: "$@" 2.131 - m4 -D_TITLE_="グループ $2 管理者委任" $layout/html.m4.html 2.132 - shift # $1=grp-rowid $2=user-rowid 2.133 - if [ -n "$2" ]; then 2.134 - grp_reg_adm "$@" 2.135 - else 2.136 - echo "無効な指定です。普通のアクセスならここに来ないはず。"|html p 2.137 - fi 2.138 + [ -n "$1" ] && shift 2.139 + $stage "$@" 2.140 ;; 2.141 "blog") # $2=grpID 2.142 contenttype; echo 2.143 @@ -150,49 +63,7 @@ 2.144 err blog_reply $rowid 2.145 blog_reply $rowid 2.146 ;; 2.147 - "editheading") 2.148 - contenttype; echo 2.149 - rowid=${2%%[!A-Z0-9a-z_]*} 2.150 - # blogrowid=${3%%[!A-Z0-9a-z_]*} 2.151 - if [ -z "$rowid" ]; then 2.152 - echo "話題番号が未指定です。" | html p 2.153 - return 2.154 - fi 2.155 - owner=`getvalbyid blog owner $2` 2.156 - title=`getvalbyid blog title $2` 2.157 - m4 -D_TITLE_="修正" \ 2.158 - -D_SUBTITLE_="[$title]@$owner" -D_DIARY_="" \ 2.159 - -D_BLOGS_="" -D_DUMPTABLE_="" \ 2.160 - -D_FORM_="`GF_ACTION=\"?blog\" edittable $formdir/blog.def blog $rowid`" \ 2.161 - $layout/html.m4.html $layout/form+dump.m4.html 2.162 - ;; 2.163 - "editart") 2.164 - contenttype; echo 2.165 - rowid=${2%%[!A-Z0-9a-z_]*} 2.166 - blogrowid=${3%%[!A-Z0-9a-z_]*} 2.167 - if [ -z "$rowid" -o -z "$blogrowid" ]; then 2.168 - echo "表示する記事番号が未指定です。" | html p 2.169 - return 2.170 - fi 2.171 - owner=`getvalbyid blog owner $blogrowid` 2.172 - title=`getvalbyid blog title $blogrowid` 2.173 - author=`getvalbyid article author $rowid` 2.174 - err EDITart: owner=$owner, author=$author 2.175 - if isgrpowner $user $owner; then 2.176 - : EDIT OK 2.177 - elif [ x"$owner" != x"$user" -a x"$author" != x"$user" ]; then 2.178 - echo "本人か所有者しか編集できません." | html p 2.179 - return 2.180 - fi 2.181 - aid=`query "select id from article where rowid=$rowid;"` 2.182 - # title=`getvalbyid blog title $2` 2.183 - m4 -D_TITLE_="コメントの修正" -D_DIARY_="" \ 2.184 - -D_FORM_="`GF_ACTION=\"?replyblog+$blogrowid#$aid\" edittable $formdir/article.def article $rowid`" \ 2.185 - -D_SUBTITLE_="`gecos $owner`の「$title」" \ 2.186 - -D_BLOGS_= -D_DUMPTABLE_= \ 2.187 - $layout/html.m4.html $layout/form+dump.m4.html 2.188 - ;; 2.189 - "lshandout") 2.190 + lshandout|gethandout) 2.191 contenttype; echo 2.192 rowid=${2%%[!A-Z0-9a-z_]*} 2.193 if [ -z "$rowid" ]; then 2.194 @@ -200,16 +71,7 @@ 2.195 return 2.196 fi 2.197 . ./s4-blog.sh 2.198 - lshandout $rowid 2.199 - ;; 2.200 - "gethandout") 2.201 - rowid=${2%%[!A-Z0-9a-z_]*} 2.202 - if [ -z "$rowid" ]; then 2.203 - echo "話題番号が未指定です。" | html p 2.204 - return 2.205 - fi 2.206 - . ./s4-blog.sh 2.207 - gethandout $rowid 2.208 + $stage $rowid 2.209 ;; 2.210 "searchart") # $2=blogowner 2.211 contenttype; echo 2.212 @@ -217,29 +79,8 @@ 2.213 . ./s4-blog.sh 2.214 searchart $2 2.215 ;; 2.216 - "send2mem") 2.217 - contenttype; echo 2.218 - send2grpmember 2.219 - ;; 2.220 - "showattc") 2.221 - # $2=table_m $3=rowid $4=val 2.222 - shift 2.223 - showattc "$@" 2.224 - exit 0 2.225 - ;; 2.226 - "gallery") 2.227 - ## contenttype "Image/jpeg" 2.228 - sql="select quote(b) from te where a='${2:-mikan.jpg}'" 2.229 - idir=`umask 002; mktempd` || exit 1 2.230 - # tmpfiles=$tmpfiles"${tmpfiles+ }$idir" 2.231 - img=$idir/$myname-$$.bin 2.232 - db=b.sq3 2.233 - sqlite3 $db "$sql" | xxd -r -p > $img 2.234 - len=`cat $img | wc -c` 2.235 - echo "Content-Length: $len" 2.236 - type=`file --mime-type $img | cut -d' ' -f2` 2.237 - echo 'Content-type: $type'; echo 2.238 - cat $img 2.239 + *) 2.240 + exec $0 login 2.241 ;; 2.242 esac 2.243