changeset 259:85a001a9c7c5

Make it visible: the group is moderated; the user is a member of the group
author HIROSE Yuuji <yuuji@gentei.org>
date Tue, 19 Jul 2016 13:55:49 +0859
parents a967788f7ad8
children 1b9d45b823b8
files examples/common/default/default.css s4-blog.sh s4-funcs.sh
diffstat 3 files changed, 57 insertions(+), 11 deletions(-) [+]
line wrap: on
line diff
--- a/examples/common/default/default.css	Mon Jul 18 23:16:53 2016 +0859
+++ b/examples/common/default/default.css	Tue Jul 19 13:55:49 2016 +0859
@@ -1,7 +1,7 @@
 /*
  * Default CSS definitions
  */
-body {background: #eff;}
+body {background: #eff; margin: 2px; padding: 6px;}
 h2, h3, hr {clear: both;}
 *.warn {color: red;}
 div.topmenu {
@@ -150,6 +150,9 @@
 div.xy120x120 {min-width: 120px; min-height: 140px;}
 div.xy96x96 {min-width: 96px; min-height: 116px;}
 div.xy50x50 {min-width: 50px; min-height: 70px;}
+div.moderated {background: rgba(255, 215, 0, 0.3);}		/* gold */
+body.moderated {background: #fffec4;} /* #faed8a */
+body.ismember, div.ismember {border-top: 4px red solid; margin-top: 0;}
 div.right, div.search {clear: both; float: right;}
 *.clear {clear: both;}
 div.search input[type="text"] {
--- a/s4-blog.sh	Mon Jul 18 23:16:53 2016 +0859
+++ b/s4-blog.sh	Tue Jul 19 13:55:49 2016 +0859
@@ -583,6 +583,17 @@
 		 WHERE id=(SELECT id FROM blog WHERE rowid=$rowid)
 		       AND key='team';
 	 \"|htmlescape`"
+    qgrp=`sqlquote "$owner"`
+    sql="SELECT coalesce(
+	   (SELECT val FROM grp_s WHERE gname=$qgrp AND key='regmode'),
+	   'open')
+         ||
+	   CASE WHEN '$user'
+	     	      IN (SELECT user FROM grp_mem WHERE gname=$qgrp)
+	        THEN ' ismember'
+	        ELSE ''
+	   END"
+    memclass=`query "$sql;"`
   fi
   if [ -z "$title" ]; then
     echo "日記番号指定が無効です。" | html p
@@ -607,7 +618,8 @@
   echo "$title" > $tmpd/title.$$
   echo "$subtitle" > $tmpd/subtitle.$$
   ${BLOG_SHOW:-blog_showentry} blog $rowid \
-      | _m4 -D_TITLE_="spaste(\`$tmpd/title.$$')" -D_BODYCLASS_=general \
+      | _m4 -D_TITLE_="spaste(\`$tmpd/title.$$')" \
+	    -D_BODYCLASS_=general"${memclass:+ $memclass}" \
 	    -D_FORMHEAD_="spaste(\`$tmpd/subtitle.$$')" \
 	    -D_FORM_='' \
 	    -D_DUMPTABLE_="syscmd(cat)" -D_DUMPHEAD_="" \
--- a/s4-funcs.sh	Mon Jul 18 23:16:53 2016 +0859
+++ b/s4-funcs.sh	Tue Jul 19 13:55:49 2016 +0859
@@ -1383,7 +1383,7 @@
     [ -n "$jg" -a -n "$grp" ] &&
 	joingrp "$grp" "$user" "$jg" "`getpar email`"
   fi
-  echo "グループ $grp"|_m4 -D_TITLE_="syscmd(\`cat')" $layout/html.m4.html
+  htmlheader=$layout/html.m4.html
   showgroup "$grid"
 }
 listnewblogsql() { # $1=user
@@ -1691,7 +1691,20 @@
 	     when '$user' in (select user from grp_mem where gname=a.$nm)
 		then '(Member)'
 	     when '$iamowner' = '' then ''
-	     else ',not='||a.rowid end as ownerlink
+	     else ',not='||a.rowid end as ownerlink,
+	CASE '$entity'
+	  WHEN 'グループ'
+	  THEN coalesce(
+		(SELECT val FROM grp_s WHERE gname=a.$nm AND key='regmode'),
+		'open')
+	       ||
+	       CASE WHEN '$user'
+	     	      IN (SELECT user FROM grp_mem WHERE gname=a.$nm)
+		    THEN ' ismember'
+		    ELSE ''
+	       END
+	  ELSE 'user'
+	END regmode
 	from $tbl a left join
 		(select $nm as name,
 			max(case key when 'gecos' then val end) as gecos,
@@ -1741,13 +1754,14 @@
 
   err ListEntry: `echo "$sql"\;`
   query "$sql limit $limit ${offset:+offset $offset};" \
-      | while IFS='|' read id lnk name gecos tag ownerp; do
+      | while IFS='|' read id lnk name gecos tag ownerp type; do
 err name=$name owner=$ownerp lnk=$lnk
-err newlnk=$lnk
+err newlnk=$lnk regmode=$regmode
     icondir=$dir/$id
     files=`getvalbyid $tbl profimg $id $icondir`
     # Pick up only first icon
-    echo "<div class=\"iconlist xy$thumbxy\"><p class=\"tag _$tag\">$tag</p>" \
+    echo "<div class=\"iconlist xy$thumbxy $type\">
+	<p class=\"tag _$tag\">$tag</p>" \
 	| _m4 $tagconv
     if [ -n "$files" ]; then
       icon=`echo "$files"|head -1`
@@ -1795,21 +1809,34 @@
     grid=$1
   fi
   grp=`getgroupbyid $grid`
+  qgrp=`sqlquote $grp`
 err showgroup2: grp=$grp qgrp="[$(sqlquote $grp)]"
   if isgroup "$grp"; then
     tf=$tmpd/title.$$
+    bodyclass=`query "SELECT val FROM grp_s
+	       WHERE gname=$qgrp AND key='regmode';"`
+    if ismember "$user" "$grp"; then
+      ismember="ismember"
+      qgrp=`sqlquote $grp`
+      bodyclass="$bodyclass${bodyclass:+ }ismember"
+    else
+      ismember="" # bodyclass="group"
+    fi
     echo "グループ $grp" > $tf
     showgroupsub $formdir/grp.def "$grid" | \
 	_m4 -D_TITLE_="spaste(\`$tf')" \
 	    -D_FORM_="syscmd(\`cat')" \
+	    -D_BODYCLASS_="$bodyclass" \
 	    -D_DUMPTABLE_="" \
-	    $layout/form+dump.m4.html
+	    $htmlheader $layout/form+dump.m4.html
+    	# $htmlheader is defined in grp()
   else				# if $grp is removed at par2table
     listgroup
   fi
 }
 showgroupsub() {
   # $1=def-file $2=group-rowid
+  # Using $ismember
   rowid=$2
   grp=`getgroupbyid $2`
   qgrp=`sqlquote $grp`
@@ -1827,7 +1854,7 @@
     echo "<p><a href=\"?groupconf+$rowid\">グループ情報の編集</a>"
     iamowner=$rowid
   fi
-  if ismember "$user" "$grp"; then
+  if [ -n "$ismember" ]; then
     echo "${iamowner:+ / }<a href=\"?blog+$rowid\">グループの新規話題作成</a>"
     echo "/ <a href=\"?grpaction+$rowid\">メンバーを個別選択しての操作</a></p>"
 # div.fold input[type="checkbox"]:checked ~ div {display: block;}
@@ -1847,7 +1874,11 @@
   fi
   # 加入ボタン + 加入者リスト
 err ismember $user $grp
-  ismember "$user" "$grp" && ismem='checked' || nomem='checked'
+  if [ -n "$ismember" ]; then
+    ismem='checked' state="(参加中)"
+  else
+    nomem='checked' state="(現在非加入)"
+  fi
   # このグループでの加入アドレス
   eml=`query "select val from grp_mem_s where gname=$qgrp and user='$user' \
 	and key='email';"`
@@ -1857,7 +1888,7 @@
   cat <<EOF
 <div class="fold">
 `cgi_checkbox reg yes id="reg"`<label
- for="reg">自身の参加状態を操作する</label>
+ for="reg">自身の加入状態を操作する</label>$state
 <div>
 EOF
   cgi_form grp <<EOF

yatex.org