s4
changeset 213:ca7e27d9224e
Add feature of moving article from personal diary to group board.
author | HIROSE Yuuji <yuuji@gentei.org> |
---|---|
date | Fri, 29 Apr 2016 18:15:45 +0859 |
parents | 0001236d6a0c |
children | e4dd3cf443b0 |
files | s4-funcs.sh s4.cgi |
diffstat | 2 files changed, 90 insertions(+), 1 deletions(-) [+] |
line diff
1.1 --- a/s4-funcs.sh Fri Apr 29 09:45:07 2016 +0859 1.2 +++ b/s4-funcs.sh Fri Apr 29 18:15:45 2016 +0859 1.3 @@ -1954,6 +1954,25 @@ 1.4 `cgi_hidden grp $grid` 1.5 EOF 1.6 } 1.7 +crview4article() { # $1=rowid of blog, $2(optional)=extra SQL 1.8 + query<<EOF 1.9 +CREATE TEMPORARY VIEW writeusers AS 1.10 + SELECT DISTINCT author FROM article 1.11 + WHERE id in ( 1.12 + select id from article where blogid=(select id from blog where rowid=$1) 1.13 + ); 1.14 +CREATE TEMPORARY VIEW movablegroups AS 1.15 +SELECT g.rowid growid , g.gname 1.16 + FROM (SELECT grp.rowid, grp.gname FROM grp JOIN grp_mem gm 1.17 + ON grp.gname=gm.gname -- そのユーザが属している 1.18 + AND user='$user') g -- グループに絞る 1.19 + WHERE (SELECT author FROM writeusers 1.20 + EXCEPT 1.21 + SELECT user FROM grp_mem gm WHERE gm.gname = g.gname) 1.22 + IS NULL; 1.23 +$2 1.24 +EOF 1.25 +} 1.26 editheading() { # $1=rowid-of-heading 1.27 rowid=${1%%[!A-Z0-9a-z_]*} 1.28 if [ -z "$rowid" ]; then 1.29 @@ -1968,6 +1987,76 @@ 1.30 -D_BLOGS_="" -D_DUMPTABLE_="" \ 1.31 -D_FORM_="syscmd(\`cat')" \ 1.32 $layout/html.m4.html $layout/form+dump.m4.html 1.33 + # Move to group 1.34 + if isuser "$owner"; then 1.35 + crview4article $rowid 1.36 + n=`query "SELECT count(*) FROM writeusers;"` 1.37 + err N=$n 1.38 + if [ $((n)) -gt 0 ]; then 1.39 + err ROWID=$rowid 1.40 + sql="SELECT growid || ':' || gname FROM movablegroups;" 1.41 + cat<<-EOF 1.42 + <div class="fold"> 1.43 + `cgi_checkbox mv send id="mv"`<label 1.44 + for="mv">この話題をグループ所有に移動する</label> 1.45 + <div> 1.46 + <form action="?mvart" method="POST" enctype="multipart/form-data"> 1.47 + 移動先グループ: 1.48 + <select name="mv2grp"> 1.49 + EOF 1.50 + query ".mode html" 1.51 + query<<-EOF | 1.52 + $sql 1.53 + .mode list 1.54 + EOF 1.55 + sed -e '/<\/TR>/d' -e 's,<TR>,,' -e 's,TD>,option>,g' \ 1.56 + -e 's,n>\([0-9]*\):\(.*\)<,n value="\1">\2<,' 1.57 + cat<<-EOF 1.58 + </select> 1.59 + <p>`cgi_checkbox cfm yes`<label>確認 1.60 + (この操作は元に戻すことができません)</label></p> 1.61 + `cgi_hidden blogrowid $rowid` 1.62 + `cgi_submit 移動` 1.63 + `cgi_reset Reset` 1.64 + </form> 1.65 + </div> 1.66 + </div> 1.67 + EOF 1.68 + fi 1.69 + fi 1.70 +} 1.71 +mvart() { 1.72 + blogrowid=`getpar blogrowid` 1.73 + mv2grp=`getpar mv2grp` 1.74 + cfm=`getpar cfm` 1.75 + ##### echo move blog:$blogrowid to $mv2grp | html p 1.76 + blogrowid=${blogrowid%%[!A-Z0-9a-z_]*} # Purify 1.77 + mv2grp=${mv2grp%%[!A-Z0-9a-z_]*} # Purify 1.78 + . ./s4-blog.sh 1.79 + if [ -z "$blogrowid" -o -z "$mv2grp" ]; then 1.80 + echo "無効な指定です(mvart)。" | html p 1.81 + return 1.82 + elif [ x"$cfm" != x"yes" ]; then 1.83 + echo "記事移動の確認にチェックがないので通常表示に戻ります。" | html p 1.84 + else # OK to go 1.85 + crview4article $blogrowid 1.86 + ########## TRANSACTION BEGIN 1.87 + query "BEGIN;" 1.88 + n=`query "SELECT count(*) FROM writeusers;"` 1.89 + err Nwriteuser=$n 1.90 + if [ $((n)) -gt 0 ]; then 1.91 + query<<-EOF 1.92 + UPDATE blog_s SET val=(SELECT gname FROM grp WHERE rowid=$mv2grp) 1.93 + WHERE key='owner' 1.94 + AND id=(SELECT id FROM blog WHERE rowid=$blogrowid) 1.95 + AND $mv2grp IN (SELECT growid FROM movablegroups); 1.96 + EOF 1.97 + fi 1.98 + query "END;" 1.99 + ########## TRANSACTION END 1.100 + fi 1.101 + blog_reply $blogrowid 1.102 + echo yes | html p 1.103 } 1.104 editart() { # $1=article-rowid $2=blogrowid 1.105 rowid=${1%%[!A-Z0-9a-z_]*}
2.1 --- a/s4.cgi Fri Apr 29 09:45:07 2016 +0859 2.2 +++ b/s4.cgi Fri Apr 29 18:15:45 2016 +0859 2.3 @@ -47,7 +47,7 @@ 2.4 showattc "$@" 2.5 exit 0 # Do not output further chunks 2.6 ;; 2.7 - invite|groupman|userconf|groupconf|mems|grps|grp|groupupdate|grpaction|joingrpadmit|commission|editheading|editart|showattc|send2mem) 2.8 + invite|groupman|userconf|groupconf|mems|grps|grp|groupupdate|grpaction|joingrpadmit|commission|editheading|editart|showattc|send2mem|mvart) 2.9 contenttype; echo 2.10 [ -n "$1" ] && shift 2.11 $stage "$@"