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();

yatex.org