Mercurial > hgrepos > hgweb.cgi > 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 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"