Mercurial > hgrepos > hgweb.cgi > 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, 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