Mercurial > hgrepos > hgweb.cgi > 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 wrap: on
line diff
--- a/examples/common/default/default.css Tue May 12 08:08:04 2020 +0900 +++ b/examples/common/default/default.css Tue May 12 10:28:44 2020 +0900 @@ -178,10 +178,13 @@ display: block; background: #fadede; height: auto; opacity: 1.0; transition: 1s; } -input.fold ~ *.folded {opacity: 0;} -input[type="checkbox"].fold:checked ~ *.folded { +input.fold + label + *.folded {opacity: 0; display: none; hight: 0;} +input[type="checkbox"].fold:checked + label + *.folded { opacity: 1.0; transition: 2s; } +input[type="checkbox"].fold:checked + label + div.folded { + display: block; hight: auto; transition: 2s; +} /* fold2!! */ div.foldtabs {
--- a/s4-funcs.sh Tue May 12 08:08:04 2020 +0900 +++ b/s4-funcs.sh Tue May 12 10:28:44 2020 +0900 @@ -40,6 +40,7 @@ filesize_max=$((5*1024*1024)) filesize_max_MB="$((filesize_max/1024/1024))MB" file_accept='accept="image/*,text/*,audio/*,application/vnd.oasis.*,application/pdf,application/x-*"' +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"' file_accept_egrep='^(text/|message/|image/|audio/|video/|application/(vnd.oasis|pdf|epub|xml|zip|[xz]-))' file_accept_help=" 添付可能ファイル: テキスト、画像、音声、動画、ODF、PDF、 @@ -1426,6 +1427,10 @@ sql="SELECT DISTINCT name FROM user WHERE rowid IN ($uids);" email4group "$g" `query "$sql"` } +myemail4group() { + # Get my email address for $1-specified group + email4group "$1" "$user" | sed -e 1q -e 's/[ ,].*//' +} collectmembersbyid() { # Collect user names of group specified by grid rid=${1%%[!0-9]*} # Cleaning @@ -2586,6 +2591,7 @@ err GRP_ACTION:IN grid=${1:-`getpar grp`} grp=`getgroupbyid "$grid"` + myuid=`query "SELECT rowid FROM user WHERE name='$user';"` if [ -z "$grp" ]; then echo "無効な指定です。" | html p; return fi @@ -2646,24 +2652,21 @@ return 0 fi gecos=`gecos $user` - mkfrom=`getpar mkfrom` - if [ x"$mkfrom" = x"yes" ]; then - safegc=`echo "$gecos" | tr -d '<>@'` - myuid=`query "SELECT rowid FROM user WHERE name='$user';"` - fromad=`email4groupbyuid "$grp" "$myuid" | sed -e 1q -e 's/[ ,].*//'` - mail_from="$safegc <$fromad>" - replyto=$fromad - else - mail_from="$noreply_from" - fi - ar=`getpar supprcpt` - if [ -n "$ar" -a -n `getpar suppck` ]; then - for a in $ar; do - checkdomain "$a" && supprcpt="$supprcpt $a" - done - fi + safegc=`echo "$gecos" | tr -d '<>@'` + #fromad=`email4groupbyuid "$grp" "$myuid" | sed -e 1q -e 's/[ ,].*//'` + fromad=`myemail4group "$grp"` + mail_from="$safegc <$fromad>" + replyto=$fromad + ## Start parse of attachment files - if [ -n `getpar attach` ]; then + if [ -n "`getpar email`" ]; then + ar=`getpar supprcpt` + if [ -n "$ar" -a -n "`getpar suppck`" ]; then + for a in $ar; do + checkdomain "$a" && supprcpt="$supprcpt $a" + done + fi + subj=`getpar subject` afiles="" for fn in `query "SELECT DISTINCT val FROM par WHERE var='files';"` do @@ -2672,10 +2675,18 @@ afiles=$afiles"${afiles:+ }$f" fi done + else + preface=$(cat <<-EOF + $url + のグループ「$grp」のメンバーである $gecos さんから、 + あなた宛のメッセージです。 + ---------------------------------------------------------- + EOF + ) fi ## SENDER=$noreply \ # Should not SENDER be set to $noreply?? rcpts="`email4groupbyuid "$grp" $usel` $user$supprcpt" - subj="$gecos さんからのメッセージ" + subj="${subj:-$gecos さんからのメッセージ}" REPLYTO=$replyto MAIL_FROM=$mail_from if [ -n "$afiles" ];then @@ -2683,11 +2694,7 @@ else smail "$rcpts" "$subj" fi <<EOF -$url -のグループ「$grp」のメンバーである $gecos さんから、 -あなた宛へのメッセージです。 ----------------------------------------------------------- -$text +${preface:+$preface$nl}$text EOF if [ $? = 0 ]; then echo "Note: 以下のメンバーにメッセージを送信しました。" | html p @@ -2834,25 +2841,30 @@ `cgi_radio rm send id="sendmsg"`<label for="sendmsg" title="Direct Message">DM送信</label> <div> -`cgi_checkbox mkfrom yes 'id="mkfrom" checked'`<label for="mkfrom" ->差出人を自分に(チェックを外すと相手が返事できない)</label><br> -<input type="checkbox" name="suppck" id="supp" class="fold"><label for="supp" ->宛先追加(通常空欄)</label> -<span class="folded">`cgi_text supprcpt`[実験中](下記一覧の1人以上選択しないと無効)</span> -<div>`cgi_textarea text "" cols=72`</div> -<div> -<input type="checkbox" name="attach" id="atta" class="fold"><label for="atta" ->ファイル添付</label> -<span class="folded">`cgi_file files "" multiple`[実験中]</span></div> +`cgi_checkbox email yes 'id="email" class="fold"'`<label for="email" +>email書式を使う</label> +<div class="folded"> +<table> +<tr><td>From: </td><td>`myemail4group "$grp"`</td></tr> +<tr><td>Subject: </td><td>`cgi_text subject`</td></tr> +<tr><td>追加宛先(通常空欄): </td><td>`cgi_text supprcpt ""`</td></tr> +<tr><td>ファイル添付: </td> + <td>`cgi_file files "" "multiple $file_accept title=\"$file_accept_help\""`<br><small>文書ファイルはPDFに変換してから</small></td></tr> +</table> +<p>(下記一覧から1人以上選択していない場合は送れません`cgi_submit 確認後送信`)</p> +</div> +<div>本文:`cgi_textarea text "" cols=72` +</div> </div> ${isowner:+$cmmsg$excmsg} -`cgi_radio rm close id="x"`<label for="x">×</label> +`cgi_radio rm close id="x"`<label for="x" accesskey="x">×</label> </div> <h4>$grp 参加者一覧</h4>$fromtonote <table class="td2r thl"> `sq $db -header -html "$sql"` </table> `cgi_hidden grp $grid` +`cgi_hidden myuid $myuid id="myuid"` EOF } crview4article() { # $1=rowid of blog, $2(optional)=extra SQL
--- a/s4-main.js Tue May 12 08:08:04 2020 +0900 +++ b/s4-main.js Tue May 12 10:28:44 2020 +0900 @@ -1,10 +1,10 @@ (function (){ - function collectElementsByNameAttr(elm, name) { + function collectElementsByAttr(elm, attr, val) { var e = document.getElementsByTagName(elm); if (!e) return null; var list = []; for (var i of e) { - if (i.getAttribute("name") == name) + if (i.getAttribute(attr) == val) list.push(i) } return list; @@ -55,13 +55,13 @@ } } function reverseChecks() { - var names = collectElementsByNameAttr("input", "usel"); + var names = collectElementsByAttr("input", "name", "usel"); for (let u of names) { u.checked = !u.checked; } } function initBlogs() { - var el, check = collectElementsByNameAttr("input", "notifyto"); + var el, check = collectElementsByAttr("input", "name", "notifyto"); if (check) for (let i of check) { i.addEventListener("click", insertRedirect, null); @@ -73,10 +73,25 @@ } function initGrpAction() { var rev = document.getElementById("reverse"); - if (rev && rev.tagName.match(/span/i)) { + if (!rev) return; // Is not grpAction page + if (rev.tagName.match(/span/i)) { rev.textContent = " 反転 "; rev.addEventListener("click", reverseChecks, null); } + var emailbtn = document.getElementById("email"); + emailbtn.addEventListener("click", function(ev){ + if (!ev.target.checked) return; + let myuid = document.getElementById("myuid"); + if (myuid) { + let usel = collectElementsByAttr("input", "name", "usel"); + if (usel) { + for (u of usel) { + if (u.value == myuid.value) + u.checked = true; + } + } + } + }, null); } function init() { initGrpAction();