s4
changeset 667:9ee0e242c25a
Grp-Message customized for Report-handout
author | HIROSE Yuuji <yuuji@gentei.org> |
---|---|
date | Tue, 12 May 2020 10:28:44 +0900 |
parents | 453f8a114af9 |
children | 84b26e6e4d79 |
files | examples/common/default/default.css s4-funcs.sh s4-main.js |
diffstat | 3 files changed, 71 insertions(+), 41 deletions(-) [+] |
line diff
1.1 --- a/examples/common/default/default.css Tue May 12 08:08:04 2020 +0900 1.2 +++ b/examples/common/default/default.css Tue May 12 10:28:44 2020 +0900 1.3 @@ -178,10 +178,13 @@ 1.4 display: block; background: #fadede; 1.5 height: auto; opacity: 1.0; transition: 1s; 1.6 } 1.7 -input.fold ~ *.folded {opacity: 0;} 1.8 -input[type="checkbox"].fold:checked ~ *.folded { 1.9 +input.fold + label + *.folded {opacity: 0; display: none; hight: 0;} 1.10 +input[type="checkbox"].fold:checked + label + *.folded { 1.11 opacity: 1.0; transition: 2s; 1.12 } 1.13 +input[type="checkbox"].fold:checked + label + div.folded { 1.14 + display: block; hight: auto; transition: 2s; 1.15 +} 1.16 1.17 /* fold2!! */ 1.18 div.foldtabs {
2.1 --- a/s4-funcs.sh Tue May 12 08:08:04 2020 +0900 2.2 +++ b/s4-funcs.sh Tue May 12 10:28:44 2020 +0900 2.3 @@ -40,6 +40,7 @@ 2.4 filesize_max=$((5*1024*1024)) 2.5 filesize_max_MB="$((filesize_max/1024/1024))MB" 2.6 file_accept='accept="image/*,text/*,audio/*,application/vnd.oasis.*,application/pdf,application/x-*"' 2.7 +file_accept='accept=".jpg,.jpeg,.gif,.png,.tiff,.pdf,.odt,.ods,.odp,.odg,.mp3,.mp4,.avi,.ogg,.mov,.webm,.gpx,.json,.geojson,.kml,.html,.css,.rb,.c,.txt,.zip,.xcf,.bz2,.gz,.xz,.7z,.csv,.dat"' 2.8 file_accept_egrep='^(text/|message/|image/|audio/|video/|application/(vnd.oasis|pdf|epub|xml|zip|[xz]-))' 2.9 file_accept_help=" 2.10 添付可能ファイル: テキスト、画像、音声、動画、ODF、PDF、 2.11 @@ -1426,6 +1427,10 @@ 2.12 sql="SELECT DISTINCT name FROM user WHERE rowid IN ($uids);" 2.13 email4group "$g" `query "$sql"` 2.14 } 2.15 +myemail4group() { 2.16 + # Get my email address for $1-specified group 2.17 + email4group "$1" "$user" | sed -e 1q -e 's/[ ,].*//' 2.18 +} 2.19 collectmembersbyid() { 2.20 # Collect user names of group specified by grid 2.21 rid=${1%%[!0-9]*} # Cleaning 2.22 @@ -2586,6 +2591,7 @@ 2.23 err GRP_ACTION:IN 2.24 grid=${1:-`getpar grp`} 2.25 grp=`getgroupbyid "$grid"` 2.26 + myuid=`query "SELECT rowid FROM user WHERE name='$user';"` 2.27 if [ -z "$grp" ]; then 2.28 echo "無効な指定です。" | html p; return 2.29 fi 2.30 @@ -2646,24 +2652,21 @@ 2.31 return 0 2.32 fi 2.33 gecos=`gecos $user` 2.34 - mkfrom=`getpar mkfrom` 2.35 - if [ x"$mkfrom" = x"yes" ]; then 2.36 - safegc=`echo "$gecos" | tr -d '<>@'` 2.37 - myuid=`query "SELECT rowid FROM user WHERE name='$user';"` 2.38 - fromad=`email4groupbyuid "$grp" "$myuid" | sed -e 1q -e 's/[ ,].*//'` 2.39 - mail_from="$safegc <$fromad>" 2.40 - replyto=$fromad 2.41 - else 2.42 - mail_from="$noreply_from" 2.43 - fi 2.44 - ar=`getpar supprcpt` 2.45 - if [ -n "$ar" -a -n `getpar suppck` ]; then 2.46 - for a in $ar; do 2.47 - checkdomain "$a" && supprcpt="$supprcpt $a" 2.48 - done 2.49 - fi 2.50 + safegc=`echo "$gecos" | tr -d '<>@'` 2.51 + #fromad=`email4groupbyuid "$grp" "$myuid" | sed -e 1q -e 's/[ ,].*//'` 2.52 + fromad=`myemail4group "$grp"` 2.53 + mail_from="$safegc <$fromad>" 2.54 + replyto=$fromad 2.55 + 2.56 ## Start parse of attachment files 2.57 - if [ -n `getpar attach` ]; then 2.58 + if [ -n "`getpar email`" ]; then 2.59 + ar=`getpar supprcpt` 2.60 + if [ -n "$ar" -a -n "`getpar suppck`" ]; then 2.61 + for a in $ar; do 2.62 + checkdomain "$a" && supprcpt="$supprcpt $a" 2.63 + done 2.64 + fi 2.65 + subj=`getpar subject` 2.66 afiles="" 2.67 for fn in `query "SELECT DISTINCT val FROM par WHERE var='files';"` 2.68 do 2.69 @@ -2672,10 +2675,18 @@ 2.70 afiles=$afiles"${afiles:+ }$f" 2.71 fi 2.72 done 2.73 + else 2.74 + preface=$(cat <<-EOF 2.75 + $url 2.76 + のグループ「$grp」のメンバーである $gecos さんから、 2.77 + あなた宛のメッセージです。 2.78 + ---------------------------------------------------------- 2.79 + EOF 2.80 + ) 2.81 fi 2.82 ## SENDER=$noreply \ # Should not SENDER be set to $noreply?? 2.83 rcpts="`email4groupbyuid "$grp" $usel` $user$supprcpt" 2.84 - subj="$gecos さんからのメッセージ" 2.85 + subj="${subj:-$gecos さんからのメッセージ}" 2.86 REPLYTO=$replyto 2.87 MAIL_FROM=$mail_from 2.88 if [ -n "$afiles" ];then 2.89 @@ -2683,11 +2694,7 @@ 2.90 else 2.91 smail "$rcpts" "$subj" 2.92 fi <<EOF 2.93 -$url 2.94 -のグループ「$grp」のメンバーである $gecos さんから、 2.95 -あなた宛へのメッセージです。 2.96 ----------------------------------------------------------- 2.97 -$text 2.98 +${preface:+$preface$nl}$text 2.99 EOF 2.100 if [ $? = 0 ]; then 2.101 echo "Note: 以下のメンバーにメッセージを送信しました。" | html p 2.102 @@ -2834,25 +2841,30 @@ 2.103 `cgi_radio rm send id="sendmsg"`<label 2.104 for="sendmsg" title="Direct Message">DM送信</label> 2.105 <div> 2.106 -`cgi_checkbox mkfrom yes 'id="mkfrom" checked'`<label for="mkfrom" 2.107 ->差出人を自分に(チェックを外すと相手が返事できない)</label><br> 2.108 -<input type="checkbox" name="suppck" id="supp" class="fold"><label for="supp" 2.109 ->宛先追加(通常空欄)</label> 2.110 -<span class="folded">`cgi_text supprcpt`[実験中](下記一覧の1人以上選択しないと無効)</span> 2.111 -<div>`cgi_textarea text "" cols=72`</div> 2.112 -<div> 2.113 -<input type="checkbox" name="attach" id="atta" class="fold"><label for="atta" 2.114 ->ファイル添付</label> 2.115 -<span class="folded">`cgi_file files "" multiple`[実験中]</span></div> 2.116 +`cgi_checkbox email yes 'id="email" class="fold"'`<label for="email" 2.117 +>email書式を使う</label> 2.118 +<div class="folded"> 2.119 +<table> 2.120 +<tr><td>From: </td><td>`myemail4group "$grp"`</td></tr> 2.121 +<tr><td>Subject: </td><td>`cgi_text subject`</td></tr> 2.122 +<tr><td>追加宛先(通常空欄): </td><td>`cgi_text supprcpt ""`</td></tr> 2.123 +<tr><td>ファイル添付: </td> 2.124 + <td>`cgi_file files "" "multiple $file_accept title=\"$file_accept_help\""`<br><small>文書ファイルはPDFに変換してから</small></td></tr> 2.125 +</table> 2.126 +<p>(下記一覧から1人以上選択していない場合は送れません`cgi_submit 確認後送信`)</p> 2.127 +</div> 2.128 +<div>本文:`cgi_textarea text "" cols=72` 2.129 +</div> 2.130 </div> 2.131 ${isowner:+$cmmsg$excmsg} 2.132 -`cgi_radio rm close id="x"`<label for="x">×</label> 2.133 +`cgi_radio rm close id="x"`<label for="x" accesskey="x">×</label> 2.134 </div> 2.135 <h4>$grp 参加者一覧</h4>$fromtonote 2.136 <table class="td2r thl"> 2.137 `sq $db -header -html "$sql"` 2.138 </table> 2.139 `cgi_hidden grp $grid` 2.140 +`cgi_hidden myuid $myuid id="myuid"` 2.141 EOF 2.142 } 2.143 crview4article() { # $1=rowid of blog, $2(optional)=extra SQL
3.1 --- a/s4-main.js Tue May 12 08:08:04 2020 +0900 3.2 +++ b/s4-main.js Tue May 12 10:28:44 2020 +0900 3.3 @@ -1,10 +1,10 @@ 3.4 (function (){ 3.5 - function collectElementsByNameAttr(elm, name) { 3.6 + function collectElementsByAttr(elm, attr, val) { 3.7 var e = document.getElementsByTagName(elm); 3.8 if (!e) return null; 3.9 var list = []; 3.10 for (var i of e) { 3.11 - if (i.getAttribute("name") == name) 3.12 + if (i.getAttribute(attr) == val) 3.13 list.push(i) 3.14 } 3.15 return list; 3.16 @@ -55,13 +55,13 @@ 3.17 } 3.18 } 3.19 function reverseChecks() { 3.20 - var names = collectElementsByNameAttr("input", "usel"); 3.21 + var names = collectElementsByAttr("input", "name", "usel"); 3.22 for (let u of names) { 3.23 u.checked = !u.checked; 3.24 } 3.25 } 3.26 function initBlogs() { 3.27 - var el, check = collectElementsByNameAttr("input", "notifyto"); 3.28 + var el, check = collectElementsByAttr("input", "name", "notifyto"); 3.29 if (check) 3.30 for (let i of check) { 3.31 i.addEventListener("click", insertRedirect, null); 3.32 @@ -73,10 +73,25 @@ 3.33 } 3.34 function initGrpAction() { 3.35 var rev = document.getElementById("reverse"); 3.36 - if (rev && rev.tagName.match(/span/i)) { 3.37 + if (!rev) return; // Is not grpAction page 3.38 + if (rev.tagName.match(/span/i)) { 3.39 rev.textContent = " 反転 "; 3.40 rev.addEventListener("click", reverseChecks, null); 3.41 } 3.42 + var emailbtn = document.getElementById("email"); 3.43 + emailbtn.addEventListener("click", function(ev){ 3.44 + if (!ev.target.checked) return; 3.45 + let myuid = document.getElementById("myuid"); 3.46 + if (myuid) { 3.47 + let usel = collectElementsByAttr("input", "name", "usel"); 3.48 + if (usel) { 3.49 + for (u of usel) { 3.50 + if (u.value == myuid.value) 3.51 + u.checked = true; 3.52 + } 3.53 + } 3.54 + } 3.55 + }, null); 3.56 } 3.57 function init() { 3.58 initGrpAction();