s4

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 diff
     1.1 --- a/s4-funcs.sh	Tue May 05 20:08:09 2020 +0900
     1.2 +++ b/s4-funcs.sh	Thu May 07 20:47:08 2020 +0900
     1.3 @@ -2208,9 +2208,24 @@
     1.4      convert -geometry $thumbxy $imgdir/$deficon $dir/$deficon
     1.5    fi
     1.6    if [ -n "$2" ]; then
     1.7 -    cond="where nick like '%$2%' or b.name like '%$2%'"
     1.8 +    cond1="(nick like '%$2%' or b.name like '%$2%')"
     1.9      kwd=$2
    1.10    fi
    1.11 +  tag=`getpar tag` tag2=`getpar tag2`
    1.12 +  if [ x"$tag" = x"NULL" ]; then
    1.13 +    tag="" tag2=""
    1.14 +  fi
    1.15 +  if [ -n "$tag$tag2" ]; then
    1.16 +    tag=${tag:-$tag2}
    1.17 +    qtag=`sqlquote "$tag"`
    1.18 +    cond2="tag=$qtag"
    1.19 +  fi
    1.20 +  if [ -n "$cond1$cond2$3" ]; then
    1.21 +    cond="$cond1${cond2:+ AND $cond2}${3:+ AND ($3)}"
    1.22 +    cond=${cond# AND }
    1.23 +    cond=${cond% AND }
    1.24 +    cond=${cond:+WHERE $cond}
    1.25 +  fi
    1.26  
    1.27    # XX: これ複雑すぎるかな。もっとシンプルにしたい。$3条件も。2015-07-08
    1.28    # grpは呼出し元の動的スコープ変数でよくないな...
    1.29 @@ -2258,7 +2273,7 @@
    1.30  			max(case key when 'wtime' then val end) as wtime,
    1.31  			max(case key when 'login' then val end) as login
    1.32  			from ${tbl}_s group by $nm)
    1.33 -		b on a.$nm=b.name $cond $3
    1.34 +		b on a.$nm=b.name $cond /* $3 */
    1.35  	order by b.wtime desc, b.login desc,
    1.36  	         b.mtime desc, b.tag desc, a.rowid asc"
    1.37    # Give precedence to newer maintained groups (2016-09-24)
    1.38 @@ -2268,25 +2283,48 @@
    1.39    echo "${entity} 一覧" | html h2
    1.40    echo '<div class="listentry">'		# List-entry div
    1.41    # Show owner/member filter button
    1.42 -  [ x"$tbl" = x"grp" ] && cat<<-EOF
    1.43 +  METHOD=GET
    1.44 +  hiddens="$hiddens
    1.45 +	`cgi_hidden kwd \"$kwd\"`
    1.46 +	`cgi_hidden stage \"$stage\"`"
    1.47 +  if [ x"$tbl" = x"grp" ]; then
    1.48 +    args=`grep "^種別:"  $formdir/grp.def | cut -d: -f5`
    1.49 +    fh="<select name=\"tag\">$nl"
    1.50 +    fh="$fh<option value=\"NULL\"${tag:+ selected}>グループ種別...</option>"
    1.51 +    for l in $args; do
    1.52 +      val=${l#*=} tname=${l%=*}
    1.53 +      if [ x"$val" = x"$tag" ]; then
    1.54 +	s=" selected"
    1.55 +	selectedtags="(種別[${tname}]のみ)"
    1.56 +      else
    1.57 +	s=""
    1.58 +      fi
    1.59 +      form=$nl$form"<option value=\"$val\"$s>$tname</option>"
    1.60 +    done
    1.61 +    form="$fh$form</select><input type=\"submit\" value=\"で絞る\">"
    1.62 +    cat<<-EOF
    1.63 +	<form action="$myname" method="$METHOD">
    1.64 +	</form>
    1.65  	`cgi_checkbox onlymem no 'id="ismembtn"'`<label
    1.66  	for="ismembtn">参加中以外隠す</label>
    1.67  	`cgi_checkbox onlyadm no 'id="isadmbtn"'`<label
    1.68  	for="isadmbtn">管理者参加以外隠す</label>
    1.69  	EOF
    1.70 -  METHOD=GET
    1.71 +    # limit=3
    1.72 +    hiddens=$hiddens" "`cgi_hidden tag2 "$tag"`
    1.73 +  fi
    1.74    if [ $total -gt $limit ]; then
    1.75 -    echo '<div class="right">'
    1.76 +    echo '<div>'
    1.77      METHOD=GET cgi_form $stage <<EOF
    1.78 +$form
    1.79  <label>次の語を含む${entity}で検索:
    1.80  `cgi_text kwd "$kwd"`</label>
    1.81  $hiddens
    1.82  EOF
    1.83      echo '</div>'
    1.84 +  else
    1.85 +    echo $selectedtags | html p
    1.86    fi
    1.87 -  hiddens="$hiddens
    1.88 -	`cgi_hidden kwd \"$kwd\"`
    1.89 -	`cgi_hidden stage \"$stage\"`"
    1.90    cat<<EOF
    1.91    <form action="$myname" method="$METHOD">
    1.92    <p>${total}件中の<input class="hidesub" type="text" name="start"