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>&rArr; <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

yatex.org