s4
diff s4-blog.sh @ 397:e9e8b4d40220
Add feature of `frozen state' of the blog board
author | HIROSE Yuuji <yuuji@gentei.org> |
---|---|
date | Tue, 27 Dec 2016 08:41:10 +0859 |
parents | 606404fbb3d3 |
children | db25589d864c |
line diff
1.1 --- a/s4-blog.sh Mon Nov 28 12:07:18 2016 +0859 1.2 +++ b/s4-blog.sh Tue Dec 27 08:41:10 2016 +0859 1.3 @@ -1,6 +1,10 @@ 1.4 # 1.5 type cgiinit >/dev/null 2>&1 || . ./s4-funcs.sh 1.6 1.7 +# Global error flags 1.8 +BLOG_NOTMEM=1 1.9 +BLOG_FROZEN=2 1.10 + 1.11 blog_genform() { 1.12 # 1.13 t=$1 1.14 @@ -8,8 +12,15 @@ 1.15 1.16 blog_writable() ( 1.17 # $1=articleid $2=user 1.18 + # Return: $?=0 - Writable 1.19 + # =1 - NOT Writable because user is not a member 1.20 + # =2 - NOT Writable because blog is frozen 1.21 blogowner=`getvalbyid blog owner "$1"` 1.22 - [ x"$blogowner" = x"$2" ] || isuser "$blogowner" || ismember "$2" "$blogowner" 1.23 + state=`getvalbyid blog state "$1"` 1.24 + rc=0 1.25 + [ x"$blogowner" = x"$2" ] || isuser "$blogowner" || ismember "$2" "$blogowner" || rc=$((rc+$BLOG_NOTMEM)) 1.26 + [ "$state" = "frozen" ] && rc=$((rc+$BLOG_FROZEN)) 1.27 + return $rc 1.28 ) 1.29 blog_readable() { 1.30 # $1=articleid $2=user 1.31 @@ -74,7 +85,19 @@ 1.32 ts=${tbl}_s tm=${tbl}_m 1.33 at=article as=article_s am=article_m 1.34 serial=$(($(date +%s)-1420038000))s$$ 1.35 - blog_writable $rowid $user && iswritable=true || iswritable=false 1.36 + blog_writable $rowid $user 1.37 + rc=$? 1.38 + if [ $rc = 0 ]; then 1.39 + iswritable=true 1.40 + ismem=true 1.41 + else 1.42 + iswritable=false 1.43 + if [ $((rc & $BLOG_NOTMEM)) -gt 0 ]; then 1.44 + ismem=false 1.45 + else 1.46 + ismem=true 1.47 + fi 1.48 + fi 1.49 # This function grasps blog entry definiton directly. 1.50 # blog: id 1.51 # blog_s: title,ctime,heading 1.52 @@ -88,7 +111,8 @@ 1.53 regmode=`getgroupattr $blogowner regmode` 1.54 # err regmode=$regmode 1.55 if [ x"$regmode" = x"moderated" ]; then 1.56 - if ! ismember $user $blogowner; then 1.57 + # if ! ismember $user $blogowner; then 1.58 + if ! $ismem; then 1.59 echo "加入してからどうぞ" | html p 1.60 return 1.61 fi 1.62 @@ -113,7 +137,7 @@ 1.63 EOF 1.64 1.65 href="<a href=\"?editheading+$rowid\" accesskey=\"e\" title=\"E\"> 編集 </a>" 1.66 - if $iswritable; then 1.67 + if $ismem; then 1.68 case `getvalbyid blog mode $rowid` in 1.69 *report*) 1.70 href2="<a href=\"?lshandout+$rowid\" accesskey=\"l\" title=\"L\"> 提出状況 </a>" 1.71 @@ -139,7 +163,7 @@ 1.72 { IFS='|' read edit ctime hexhead blogtype 1.73 cat<<-EOF 1.74 <tr><td>${edit:+$href }$ctime $blogtype $href2$href3 $href4</td></tr> 1.75 - <tr class="preface"> 1.76 + <tr class="preface${frozen_class:+ }$frozen_class"> 1.77 <td>`echo "$hexhead"|unhexize|hreflink|minitbl`</td></tr> 1.78 </table> 1.79 1.80 @@ -772,6 +796,21 @@ 1.81 fi 1.82 title=`getvalbyid blog title $rowid` 1.83 owner=`getvalbyid blog owner $rowid` 1.84 + if [ -z "$title" ]; then 1.85 + echo "日記番号指定が無効です。" | html p 1.86 + return 1.87 + fi 1.88 + blog_writable $rowid $user; rc=$? 1.89 + if [ $rc = 0 ]; then 1.90 + iswritable=true 1.91 + else 1.92 + iswritable=false 1.93 + if [ $((rc & $BLOG_FROZEN)) -gt 0 ]; then 1.94 + isfrozen=true 1.95 + frozen_class='frozen"' 1.96 + frozen_flag="<span class=\"$frozen_class\">[凍結]</span>" 1.97 + fi 1.98 + fi 1.99 if isuser "$owner"; then 1.100 subtitle="`gecos $owner` さんの話題" 1.101 else 1.102 @@ -785,14 +824,10 @@ 1.103 \"|htmlescape`" 1.104 memclass=`grp_getbodyclass "$owner"` 1.105 fi 1.106 - if [ -z "$title" ]; then 1.107 - echo "日記番号指定が無効です。" | html p 1.108 - return 1.109 - fi 1.110 1.111 text=`getpar text` 1.112 if [ -n "$text" ]; then 1.113 - if blog_writable $rowid $user; then 1.114 + if $iswritable; then 1.115 par2table $formdir/article.def 1.116 st=$? 1.117 case $st in 1.118 @@ -806,12 +841,16 @@ 1.119 ;; 1.120 esac 1.121 else 1.122 - title="$title(加入してないので書き込み不可)" 1.123 + if $isfrozen; then 1.124 + title="$title(凍結板につき書き込み不可)" 1.125 + else 1.126 + title="$title(加入してないので書き込み不可)" 1.127 + fi 1.128 fi 1.129 fi 1.130 def=$formdir/article.def 1.131 echo "$title" > $tmpd/title.$$ 1.132 - echo "$subtitle" > $tmpd/subtitle.$$ 1.133 + echo "$subtitle$frozen_flag" > $tmpd/subtitle.$$ 1.134 ${BLOG_SHOW:-blog_showentry} blog $rowid \ 1.135 | _m4 -D_TITLE_="spaste(\`$tmpd/title.$$')" \ 1.136 -D_BODYCLASS_=general"${memclass:+ $memclass}" \