Mercurial > hgrepos > hgweb.cgi > s4
changeset 754:5bab8644024a feature-world
Annex-test: sessdb = main-sessdb
author | HIROSE Yuuji <yuuji@gentei.org> |
---|---|
date | Thu, 04 Jun 2020 20:31:25 +0900 |
parents | de9e56845da3 |
children | 1a8291d7fa3d |
files | examples/common/default/default.css examples/common/default/html.m4.html s4-annex.sh s4-funcs.sh |
diffstat | 4 files changed, 63 insertions(+), 25 deletions(-) [+] |
line wrap: on
line diff
--- a/examples/common/default/default.css Wed Jun 03 21:33:25 2020 +0900 +++ b/examples/common/default/default.css Thu Jun 04 20:31:25 2020 +0900 @@ -331,6 +331,20 @@ input[type="reset"] {margin-left: 4em;} /* + * Annex + */ +li.casmenu div {display: none; position: relative; width: 10%; + min-width: 80%; margin-right: 0;} +li.casmenu div table { + background: white; position: absolute; top: 0em; border: 3px solid navy; +} +li.casmenu:hover div, li.casmenu:active div, +li.casmenu div:hover, li.casmenu div:active +{display: block;} + + + +/* * PR Web */ body.pr {font-size: 200%;}
--- a/examples/common/default/html.m4.html Wed Jun 03 21:33:25 2020 +0900 +++ b/examples/common/default/html.m4.html Thu Jun 04 20:31:25 2020 +0900 @@ -18,8 +18,8 @@ <body class="_BODYCLASS_"> <div class="topmenu"> <ul> - <li><a href="?home" accesskey="1" title="Shortcut: 1 -Home">ホーム</a></li> + <li class="casmenu"><a href="?home" accesskey="1" title="Shortcut: 1 +Home">ホーム</a>_S4ANNEXES_</li> <!-- <li><a href="?blog">話題作成</a></li> --> <li><a href="?mems" accesskey="2" title="Shortcut: 2 Members">参加者一覧</a></li>
--- a/s4-annex.sh Wed Jun 03 21:33:25 2020 +0900 +++ b/s4-annex.sh Thu Jun 04 20:31:25 2020 +0900 @@ -7,7 +7,12 @@ return # Points to the same file fi -skey="skey-`basename $mydir`" +# Now S4ANNEX mode is ACTIVE +S4ANNEXNAME=`dirname $mydir` +sessdb=`dirname $S4MASTERDB`/sess.sq3 +S4ANNEXES="<div><table><tr><th><a + href=\"$S4MASTERURL\">本館</a></th></tr></table><div>" +## skey="skey-`basename $mydir`" syncflag=$dbdir/usersynced userupdateflag=`dirname $S4MASTERDB`/`basename $userupdateflag` test ! -e "$userupdateflag" && return @@ -21,16 +26,10 @@ # then update # -judgeequal() { - read num - test $num -eq 0 && touch $syncflag - return $num -} - ## sqlite3 -cmd '.timer 1' -cmd '.echo 1' $db <<EOF err "Starting account synchronization" err "db=$db mas=$S4MASTERDB sess=$sessdb" -sqlite3 -bail -cmd 'PRAGMA FOREIGN_KEYS=on' $db <<EOF | judgeequal +num=$(sqlite3 -bail -cmd 'PRAGMA FOREIGN_KEYS=on' $db <<EOF ATTACH DATABASE "$S4MASTERDB" AS m; CREATE TABLE IF NOT EXISTS user(name, primary key(name)); BEGIN; @@ -68,4 +67,8 @@ -- SELECT rowid,* FROM user WHERE rowid NOT IN (SELECT rowid FROM m.user); DETACH DATABASE m; EOF -err Done +) +if [ $num -eq 0 ]; then + touch $syncflag +fi +return $num
--- a/s4-funcs.sh Wed Jun 03 21:33:25 2020 +0900 +++ b/s4-funcs.sh Thu Jun 04 20:31:25 2020 +0900 @@ -16,7 +16,6 @@ searchlog=${SEARCHLOG:-$tmpdir/search.log} db=${DB:-$dbdir/cgi.sq3} sessdb=$dbdir/sess.sq3 -skey='skey' # Changed in s4-annex, if ANNEX mode userupdateflag=$dbdir/userupdate sesstb=tmp.sess workdb=$dbdir/tmpdata.sq3 @@ -70,16 +69,30 @@ err() { echo "[`date +%F-%T%z`] $@" 1>&3 } -# If S4MASTERDB is set, behave as ANNEX s4 -if [ -n "$S4MASTERDB" -a -s "$S4MASTERDB" ]; then - . ./s4-annex.sh 2>> tmp/debug.out -fi - - case "$HTTP_USER_AGENT" in *i[Pp]hone*|*[Aa]ndroid*) touchpanel=1 ;; *) touchpanel="" ;; esac + +# If S4MASTERDB is set, behave as ANNEX s4 +if [ -n "$S4MASTERDB" -a -s "$S4MASTERDB" ]; then + # $S4ANNEX is set after s4-annex setup + . ./s4-annex.sh 2>> tmp/debug.out + err S4ANNEXES="$S4ANNEXES" S4ANNEXNAME=$S4ANNEXNAME +elif [ -n "$S4ANNEXES" ]; then + # Master Site mode, which has annexes + v="" + for i in $S4ANNEXES; do + _aname=${i%:*}; _apath=${i##*:} + v=${v}"<tr><td>⇒ <a href=\"$_apath\">$_aname</a></td></tr>$nl" + done + if [ -n "$v" ]; then + i="<tr><th title=\"Annex\">別館</a></th></tr>$nl" + S4ANNEXES="${touchpanel:+ : ▼}<div><table>$i$v</table></div>" + fi +fi + + [ -f ./s4-cgi.sh ] && . ./s4-cgi.sh : <<EOF @@ -434,7 +447,8 @@ } _m4() { #S4NAME=f,f,f - m4 ${S4NAME:+"-D_S4NAME_=${S4NAME}"} ${S4CSS:+-D_S4CSS_="$S4CSS"} "$@" + m4 ${S4NAME:+"-D_S4NAME_=${S4NAME}"} ${S4CSS:+-D_S4CSS_="$S4CSS"} \ + -D_S4ANNEXES_="${S4ANNEXES}" "$@" } ismember() { # $1=user, $2=group @@ -1210,9 +1224,10 @@ for kv in `echo $HTTP_COOKIE|sed 's/[;, ]/ /g'`; do k="${kv%%=*}" v="`echo ${kv#*=}|nkf -Ww -mQ|sed -e 's/\"/\"\"/g'`" +err "GetCookie: $k=[$v]" case "$k" in user) _user="$v" ;; - $skey) _skey="$v" ;; + skey) _skey="$v"; k=skey ;; esac query "replace into cookie values('$session', '$k', 'string', \"$v\");" done @@ -1337,7 +1352,7 @@ newpswd=`genrandom` # newsalt=`genrandom 5` #encpswd=`mycrypt "$newpswd" "$newsalt"` encpswd=`echo $newpswd|mypwhash` - dbsetbyid user $user pswd "$encpswd" + dbsetbyid user $user pswd "$encpswd" && touch $userupdateflag # Avoid $user substitution with m4, because $url comes from user input. _m4 -D_PSWD_="$newpswd" -D_URL_="$url" -D_ADMIN_="$admin" \ $msgdir/mail-newaccount.m4 \ @@ -1372,8 +1387,8 @@ newsession=`genrandom 34` if setskey "$user" "$newsession" && dbsetbyid user "$user" login "`date '+%F %T'`"; then - err gencookie "user=$user" "$skey=$newsession" - gencookie "user=$user" "$skey=$newsession" + # err gencookie "user=$user" "skey=$newsession" + gencookie "user=$user" "skey=$newsession" return 0 else return 4 # Heavy load?? @@ -2058,8 +2073,14 @@ cond="gname in (select gname from grp_mem where user='$uname')" search_form_args="" if [ x"$user" = x"$uname" ]; then - usermenu="<a href=\"?userconf\" accesskey=\"e\" - title=\"Shortcut: E${nl}Edit Profile\">プロフィールの編集</a> / + if [ -z "$S4ANNEXNAME" ]; then + usermenu="<a href=\"?userconf\" accesskey=\"e\" + title=\"Shortcut: E${nl}Edit Profile\">プロフィールの編集</a> / " + elif [ -n "$S4MASTERURL" ]; then + usermenu="<a href=\"$S4MASTERURL\" accesskey=\"e\" + title=\"Shortcut: E${nl}Main Site\">本館</a> / " + fi + usermenu="$usermenu <a href=\"?blog\" accesskey=\"n\" title=\"Shortcut: N${nl}New blog\">新規話題の作成</a>" # Display folders sql="select count(id) from article_m where id