changeset 645:21522dcada92

Experimental implement of group tag selection
author HIROSE Yuuji <yuuji@gentei.org>
date Thu, 07 May 2020 20:47:08 +0900
parents 50b3ceca8bf7
children d9bce34a863b
files s4-funcs.sh
diffstat 1 files changed, 46 insertions(+), 8 deletions(-) [+]
line wrap: on
line diff
--- a/s4-funcs.sh	Tue May 05 20:08:09 2020 +0900
+++ b/s4-funcs.sh	Thu May 07 20:47:08 2020 +0900
@@ -2208,9 +2208,24 @@
     convert -geometry $thumbxy $imgdir/$deficon $dir/$deficon
   fi
   if [ -n "$2" ]; then
-    cond="where nick like '%$2%' or b.name like '%$2%'"
+    cond1="(nick like '%$2%' or b.name like '%$2%')"
     kwd=$2
   fi
+  tag=`getpar tag` tag2=`getpar tag2`
+  if [ x"$tag" = x"NULL" ]; then
+    tag="" tag2=""
+  fi
+  if [ -n "$tag$tag2" ]; then
+    tag=${tag:-$tag2}
+    qtag=`sqlquote "$tag"`
+    cond2="tag=$qtag"
+  fi
+  if [ -n "$cond1$cond2$3" ]; then
+    cond="$cond1${cond2:+ AND $cond2}${3:+ AND ($3)}"
+    cond=${cond# AND }
+    cond=${cond% AND }
+    cond=${cond:+WHERE $cond}
+  fi
 
   # XX: これ複雑すぎるかな。もっとシンプルにしたい。$3条件も。2015-07-08
   # grpは呼出し元の動的スコープ変数でよくないな...
@@ -2258,7 +2273,7 @@
 			max(case key when 'wtime' then val end) as wtime,
 			max(case key when 'login' then val end) as login
 			from ${tbl}_s group by $nm)
-		b on a.$nm=b.name $cond $3
+		b on a.$nm=b.name $cond /* $3 */
 	order by b.wtime desc, b.login desc,
 	         b.mtime desc, b.tag desc, a.rowid asc"
   # Give precedence to newer maintained groups (2016-09-24)
@@ -2268,25 +2283,48 @@
   echo "${entity} 一覧" | html h2
   echo '<div class="listentry">'		# List-entry div
   # Show owner/member filter button
-  [ x"$tbl" = x"grp" ] && cat<<-EOF
+  METHOD=GET
+  hiddens="$hiddens
+	`cgi_hidden kwd \"$kwd\"`
+	`cgi_hidden stage \"$stage\"`"
+  if [ x"$tbl" = x"grp" ]; then
+    args=`grep "^種別:"  $formdir/grp.def | cut -d: -f5`
+    fh="<select name=\"tag\">$nl"
+    fh="$fh<option value=\"NULL\"${tag:+ selected}>グループ種別...</option>"
+    for l in $args; do
+      val=${l#*=} tname=${l%=*}
+      if [ x"$val" = x"$tag" ]; then
+	s=" selected"
+	selectedtags="(種別[${tname}]のみ)"
+      else
+	s=""
+      fi
+      form=$nl$form"<option value=\"$val\"$s>$tname</option>"
+    done
+    form="$fh$form</select><input type=\"submit\" value=\"で絞る\">"
+    cat<<-EOF
+	<form action="$myname" method="$METHOD">
+	</form>
 	`cgi_checkbox onlymem no 'id="ismembtn"'`<label
 	for="ismembtn">参加中以外隠す</label>
 	`cgi_checkbox onlyadm no 'id="isadmbtn"'`<label
 	for="isadmbtn">管理者参加以外隠す</label>
 	EOF
-  METHOD=GET
+    # limit=3
+    hiddens=$hiddens" "`cgi_hidden tag2 "$tag"`
+  fi
   if [ $total -gt $limit ]; then
-    echo '<div class="right">'
+    echo '<div>'
     METHOD=GET cgi_form $stage <<EOF
+$form
 <label>次の語を含む${entity}で検索:
 `cgi_text kwd "$kwd"`</label>
 $hiddens
 EOF
     echo '</div>'
+  else
+    echo $selectedtags | html p
   fi
-  hiddens="$hiddens
-	`cgi_hidden kwd \"$kwd\"`
-	`cgi_hidden stage \"$stage\"`"
   cat<<EOF
   <form action="$myname" method="$METHOD">
   <p>${total}件中の<input class="hidesub" type="text" name="start"

yatex.org