# HG changeset patch # User HIROSE Yuuji # Date 1468904150 -32399 # Node ID 85a001a9c7c5f49f515b0565e927257a5850c9ca # Parent a967788f7ad89d296d0559b207693f3ca26c802e Make it visible: the group is moderated; the user is a member of the group diff -r a967788f7ad8 -r 85a001a9c7c5 examples/common/default/default.css --- 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"] { diff -r a967788f7ad8 -r 85a001a9c7c5 s4-blog.sh --- 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_="" \ diff -r a967788f7ad8 -r 85a001a9c7c5 s4-funcs.sh --- 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 "

$tag

" \ + echo "
+

$tag

" \ | _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 "

グループ情報の編集" iamowner=$rowid fi - if ismember "$user" "$grp"; then + if [ -n "$ismember" ]; then echo "${iamowner:+ / }グループの新規話題作成" echo "/ メンバーを個別選択しての操作

" # 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 < `cgi_checkbox reg yes id="reg"` + for="reg">自身の加入状態を操作する$state
EOF cgi_form grp <