changeset 83:815840076efa

Directory structure refreshed
author HIROSE Yuuji <yuuji@gentei.org>
date Mon, 03 Aug 2015 12:16:06 +0900
parents db489961e461
children e16cb89bb0f2
files .htaccess examples/common/default/default.css examples/common/default/footer.m4.html examples/common/default/form+dump-whead.m4.html examples/common/default/form+dump.m4.html examples/common/default/home.m4.html examples/common/default/html.m4.html examples/common/default/invite.m4.html examples/common/default/login-fail.m4.html examples/common/default/login.m4.html examples/common/default/title-only.m4.html examples/common/default/welcome.m4.html examples/common/msg/login-fail-1.m4.html examples/common/msg/login-fail-2.m4.html examples/common/msg/login-fail-3.m4.html examples/common/msg/mail examples/common/msg/mail-header.m4 examples/common/msg/mail-invite.m4 examples/common/msg/mail-newaccount.m4 examples/form-text+img/default examples/form-text+img/msg examples/sns/default examples/sns/form/article.def examples/sns/form/blog.def examples/sns/form/diary.def examples/sns/form/form-groupman.def examples/sns/form/grp.def examples/sns/form/grp_adm.def examples/sns/form/grp_mem.def examples/sns/form/user.def examples/sns/msg s4-funcs.sh templ/default/default.css templ/default/footer.m4.html templ/default/form+dump-whead.m4.html templ/default/form+dump.m4.html templ/default/home.m4.html templ/default/html.m4.html templ/default/invite.m4.html templ/default/login-fail.m4.html templ/default/login.m4.html templ/default/welcome.m4.html templ/form/article.def templ/form/blog.def templ/form/diary.def templ/form/form-groupman.def templ/form/grp.def templ/form/grp_adm.def templ/form/grp_mem.def templ/form/user.def templ/msg/login-fail-1.m4.html templ/msg/login-fail-2.m4.html templ/msg/login-fail-3.m4.html templ/msg/mail templ/msg/mail-header.m4 templ/msg/mail-invite.m4 templ/msg/mail-newaccount.m4
diffstat 57 files changed, 311 insertions(+), 291 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/.htaccess	Mon Aug 03 12:16:06 2015 +0900
@@ -0,0 +1,7 @@
+Options	+ExecCGI +FollowSymLinks
+AddType "text/html; charset=utf-8" .cgi .html
+AddHandler cgi-script .cgi
+<FilesMatch "^(.*\.sh|scripts)">
+ Order Deny,Allow
+ Deny from all
+</FilesMatch>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/common/default/default.css	Mon Aug 03 12:16:06 2015 +0900
@@ -0,0 +1,108 @@
+/*
+ * Default CSS definitions
+ */
+body {background: #eff;}
+hr {clear: both;}
+div.topmenu {
+    margin: 0; padding: 0; width: 100%; height: 2em;
+}
+div.topmenu ul {width: 100%; position: fixed; margin: 0;
+		margin: 0 auto;}
+div.topmenu ul li {
+    float: left; width: 18%;
+    background: rgba(68,255,102,0.8); border: #3e5 2px groove; margin: 0;
+    text-align: center; font-size: 80%; list-style: none;
+    box-shadow: #242 2px 3px 5px;
+    text-shadow: #fff 0px 0px 10px;
+}
+div.topmenu ul li:hover {background: #8fa;}
+div.topmenu ul a {text-decoration: none;}
+
+ldiv.topmenu + h1 {clear: both; margin-top: 3em;}
+
+div.dumptable {max-height: 15em; overflow: auto;}
+
+td {padding-left: 0.5ex; padding-right: 0.5ex;}
+table.td2r td:nth-child(2) {text-align: right;}
+table.td3r td:nth-child(3) {text-align: right;}
+table.form, table.b, table.b tr, table.b td, table.b th {
+  border: 1px solid black; border-collapse: collapse;
+}
+td.warn {background: #fcc;}
+input[type="checkbox"][name="rm"]:checked ~ table {background: red;}
+input[type="checkbox"][name="rm"] ~ span {display: none;}
+input[type="checkbox"][name="rm"]:checked ~ span {display: inline;}
+
+input[type="radio"][value="replace"] + input.replace[type="file"] {
+    visibility: hidden;}
+input[type="radio"][value="replace"]:checked +  input.replace[type="file"] {
+    visibility: visible;
+}
+
+/* keep/edit/rm action selector */
+input.action ~ input:not(.action), input.action ~ textarea {
+    display: none;
+}
+input.action[value="edit"]:checked ~ input {display: inline;}
+input.action[value="edit"]:checked ~ textarea {display: block;}
+input.action[value="edit"]:checked ~ span {display: none;}
+input.action[value="rm"]:checked ~ span {background: red;}
+label.confirm {display: none;}
+input.action[value="rm"]:checked ~ label.confirm {
+    display: inline;
+}
+
+form.replyblog {margin-bottom: 40%;}
+div.blogcomment {
+    position: fixed; bottom: 0; left: 0;
+    z-index: 2; background-color: rgba(250,222,222,0.8);
+}
+div.blogcomment * {opacity: 1.0;}
+table.bloghead, .bloghead tr, .bloghead td {
+    border: 1px solid black; border-collapse: collapse;
+    min-width: 30em;
+}
+table.bloghead tr:nth-child(2) {
+    font-size: 150%; background: yellow; text-align: center;
+}
+table.bloghead {margin-bottom: 1em;}
+
+table.blog_replies, .blog_replies tr, .blog_replies td {
+    border: 1px solid black; border-collapse: collapse;
+    white-space: pre;
+}
+.blog_replies td:nth-child(2) {
+    vertical-align: top; min-width: 30em; height: 3em;
+}
+
+div.fold {margin-top: 1em; border-top: 1px solid black; padding-top: 1em;}
+div.fold > div {
+    xxdisplay: none; max-height: 80%; overflow: auto;
+    height: 0px; opacity: 0; padding: 0 1ex;
+}
+div.fold input[type="checkbox"]:checked ~ div,
+div.fold input[type="radio"]:checked ~ div {
+    display: block; background: #eef;
+    height: auto; opacity: 1.0; transition: 1s;
+}
+
+/********************* icon list *********************/
+div.iconlist {
+    text-align: center; float: left; margin: 1ex 1em;
+    border: dotted #dfd 2px; padding: 1ex;
+}
+div.iconlist p {margin: 0; padding: 0;}
+div.iconlist p.tag {background: #ffa; border-radius: 4em;}
+div.iconlist p._temp	{background: cyan;}
+div.iconlist p._lecture	{background: pink;}
+div.iconlist p._admin	{background: yellow;}
+div.iconlist p._friend	{background: fuchsia;}
+div.iconlist p._fellows	{background: #9f9;} /* light green */
+div.iconlist p._club	{background: #4bb;} /* light teal */
+div.iconlist p._event	{background: maroon; color: white;}
+div.iconlist p._misc	{background: purple; color: white;}
+div.iconlist p._record	{background: red; color: white;}
+div.xy120x120 {min-width: 120px; min-height: 140px;}
+div.xy96x96 {min-width: 96px; min-height: 116px;}
+div.xy50x50 {min-width: 50px; min-height: 70px;}
+div.right {clear: both; float: right;}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/common/default/footer.m4.html	Mon Aug 03 12:16:06 2015 +0900
@@ -0,0 +1,2 @@
+</body>
+</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/common/default/form+dump-whead.m4.html	Mon Aug 03 12:16:06 2015 +0900
@@ -0,0 +1,5 @@
+<h1>_TITLE_</h1>
+<h2>_FORMHEAD_</h2>
+_FORM_
+<h2>_DUMPHEAD_</h2>
+_DUMPTABLE_
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/common/default/form+dump.m4.html	Mon Aug 03 12:16:06 2015 +0900
@@ -0,0 +1,6 @@
+ <h1>_TITLE_</h1>
+<div class="groupman">
+_FORM_
+</div>
+<hr>
+_DUMPTABLE_
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/common/default/home.m4.html	Mon Aug 03 12:16:06 2015 +0900
@@ -0,0 +1,15 @@
+<h1>_TITLE_</h1>
+<div class="home">
+_PROFILE_
+</div>
+
+<div class="fold">
+<input type="checkbox" id="sd"><label for="sd">日記一覧を見る</label>
+<div><!-- in home.m4 -->_BLOGS_</div><!-- in home.m4 -->
+</div>
+
+<div class="fold"> <!-- in home.m4.html -->
+<input type="checkbox" id="grp"><label
+ for="grp">個人の参加グループ一覧を見る</label>
+_GROUPS_
+</div> <!-- end of fold (in home.m4.html) -->
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/common/default/html.m4.html	Mon Aug 03 12:16:06 2015 +0900
@@ -0,0 +1,16 @@
+<html>
+<head><title>_TITLE_</title>
+<link rel="stylesheet" type="text/css" href="templ/default/default.css">
+</head>
+<body class="_BODYCLASS_">
+<div class="topmenu">
+<ul>
+ <li><a href="?home">ホーム</a></li>
+ <!-- <li><a href="?blog">話題作成</a></li> -->
+ <li><a href="?mems">参加者一覧</a></li>
+ <li><a href="?grps">グループ一覧</a></li>
+ <li><a href="?invite">招待</a></li>
+ <li><a href="?login">再ログイン</a></li>
+ <!-- <li><a href="?userconf">userconf</a></li> -->
+</ul>
+</div>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/common/default/invite.m4.html	Mon Aug 03 12:16:06 2015 +0900
@@ -0,0 +1,15 @@
+<h1>招待メイル送信</h1>
+<p>_REPORT_</p>
+
+<form method="POST" action="_ACTION_">
+<table class="invite">
+ <tr><td>送信先</td>
+  <td><input name="email" size="40" maxlength="64"></td></tr>
+</table>
+<input name="submit" type="submit" value="送信">
+<input name="reset" type="reset" value="Reset">
+</form>
+_SUSPENDED_
+
+</body>
+</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/common/default/login-fail.m4.html	Mon Aug 03 12:16:06 2015 +0900
@@ -0,0 +1,2 @@
+<h2>ログイン失敗<h2>
+<p>パスワードが違っています。</p>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/common/default/login.m4.html	Mon Aug 03 12:16:06 2015 +0900
@@ -0,0 +1,10 @@
+<h1>_SYSNAME_</h1>
+<form action="_MYNAME_" method="POST">
+ <table class="form">
+  <tr><th>User</th><td><input name="user" size="30" maxlength="128"></td></tr>
+  <tr><th>Password</th><td><input name="pswd" type="password" size="30"
+			maxlength="128"></td></tr>
+ </table>
+ <input type="submit" name="sub" value="OK">
+ <input type="reset" name="res" value="Reset">
+</form>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/common/default/title-only.m4.html	Mon Aug 03 12:16:06 2015 +0900
@@ -0,0 +1,6 @@
+<html>
+<head><title>_TITLE_</title>
+<link rel="stylesheet" type="text/css" href="templ/default/default.css">
+</head>
+<body class="_BODYCLASS_">
+<h1>_TITLE_</h1>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/common/default/welcome.m4.html	Mon Aug 03 12:16:06 2015 +0900
@@ -0,0 +1,12 @@
+<h1>Welcome to _SITE_</h1>
+<ul>
+ <!-- <li><a href="./s.cgi?diary">diary</a></li> -->
+ <li><a href="./s.cgi?home">home</a></li>
+ <li><a href="./s.cgi?mems">member list</a></li>
+ <li><a href="./s.cgi?invite">invite a friend</a></li>
+ <li><a href="./s.cgi?groupman">group management</a></li>
+ <li><a href="./s.cgi?grps">group list</a></li>
+ <li><a href="./s.cgi?gallery">gallery</a></li>
+ <li><a href="./s.cgi?userconf">userconf</a></li>
+ <li><a href="./s.cgi?blog">write blog</a></li>
+</ul>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/common/msg/login-fail-1.m4.html	Mon Aug 03 12:16:06 2015 +0900
@@ -0,0 +1,3 @@
+<h2>パスワード再発行</h2>
+<p>登録アドレス(_USER_)に新パスワードを送付しておきました。</p>
+<p>_URL_</p>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/common/msg/login-fail-2.m4.html	Mon Aug 03 12:16:06 2015 +0900
@@ -0,0 +1,3 @@
+<h2>ログイン失敗</h2>
+<p>パスワードが違います。思い出せない場合はwasureta入れてください。</p>
+<p>_URL_</p>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/common/msg/login-fail-3.m4.html	Mon Aug 03 12:16:06 2015 +0900
@@ -0,0 +1,3 @@
+<h2>ログイン失敗</h2>
+<p>ユーザ登録が必要です。管理者までおしらせください。</p>
+<p>_ADMIN_</p>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/common/msg/mail	Mon Aug 03 12:16:06 2015 +0900
@@ -0,0 +1,8 @@
+To: _RCPT_
+Subject: _SUBJ_
+Date: _DATE_
+From: _FROM_
+MIME-Version: 1.0
+Content-type: text/plain; charset=iso-2022-jp
+
+_BODY_
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/common/msg/mail-header.m4	Mon Aug 03 12:16:06 2015 +0900
@@ -0,0 +1,6 @@
+To: _RCPT_
+Subject: _SUBJ_
+From: _FROM_
+MIME-Version: 1.0
+Content-type: text/plain; charset=iso-2022-jp
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/common/msg/mail-invite.m4	Mon Aug 03 12:16:06 2015 +0900
@@ -0,0 +1,13 @@
+
+=== _URL_
+=== メンバー加入のお誘い
+
+_USER_ さんから
+_EMAIL_ さん宛に
+招待状が送られました。
+
+下記URLにアクセスすることで、加入登録が進みます。
+_REGIST_
+
+もしこのURLに心当たりがない場合は以下の管理者宛に御連絡ください。
+_ADMIN_
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/common/msg/mail-newaccount.m4	Mon Aug 03 12:16:06 2015 +0900
@@ -0,0 +1,7 @@
+
+_USER_ さんのアカウントを作成しました。
+初期パスワードは _PSWD_ です。
+もし、このパスワードを忘れたときは
+wasureta
+を入力してください。
+_URL_
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/form-text+img/default	Mon Aug 03 12:16:06 2015 +0900
@@ -0,0 +1,1 @@
+../common/default
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/form-text+img/msg	Mon Aug 03 12:16:06 2015 +0900
@@ -0,0 +1,1 @@
+../common/msg
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/sns/default	Mon Aug 03 12:16:06 2015 +0900
@@ -0,0 +1,1 @@
+../common/default
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/sns/form/article.def	Mon Aug 03 12:16:06 2015 +0900
@@ -0,0 +1,9 @@
+シリアル:id:p:serial:
+blogID:blogid:f:blog(id):
+筆者:author:s:author:
+時刻:ctime:s:stamp:
+参照元:parent:s:parent: 
+パス:path:s:path:
+本文:text:s:textarea:cols="60" rows="8"
+画像:image:m:image:multiple
+stage:stage:x:hidden:value="replyblog"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/sns/form/blog.def	Mon Aug 03 12:16:06 2015 +0900
@@ -0,0 +1,10 @@
+シリアル:id:p:serial:
+用途:mode:s:select:普通の掲示板=normal レポート提出用(相互に参照可能)=report-open レポート提出用(管理者のみ参照可能)=report-closed
+タイトル:title:s:text:maxlength="200"
+コメント書込通知:notify:s:select:所有者全員に通知=all 管理者のみに通知(グループの場合のみ)=admin しない=no
+所有者:owner:s:owner:
+筆者:author:s:author:
+時刻:ctime:s:stamp:
+序文:heading:s:textarea:cols="60" rows="3"
+リプライ:reply:m:*article:
+stage:stage:x:hidden:value="blog"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/sns/form/diary.def	Mon Aug 03 12:16:06 2015 +0900
@@ -0,0 +1,4 @@
+タイトル:title:s:text:length="20" maxlength="40"
+曜日:wday:s:radio:日=sun 月=mon 火=tue 水=wed 木=thu 金=fri 土=sun
+本文:diary:s:textarea: rows="4" cols="30" maxlength="2048"
+stage:stage:s:hidden:value="diary"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/sns/form/form-groupman.def	Mon Aug 03 12:16:06 2015 +0900
@@ -0,0 +1,4 @@
+グループ名(英数字):name:p:text:length="20" maxlength="40"
+種別:tag:s:select:講義関連=lecture 個人的リスト=friend 管理用=admin 一時的=temp
+グループの説明:gecos:s:text:length="30" maxlength="60"
+stage:stage:s:hidden:value="groupman"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/sns/form/grp.def	Mon Aug 03 12:16:06 2015 +0900
@@ -0,0 +1,10 @@
+グループ名(他と区別がつく名前):gname:p:text:length="20" maxlength="40"
+一言説明:gecos:s:text:length="20" maxlength="40"
+#
+# 種別にタグを足したら default.css の div.iconlist p.* も足す
+種別:tag:s:select:講義関連=lecture 個人的リスト=friend 管理用=admin 一時的=temp 友好目的=fellows サークル等=club イベント用=event 記録目的=record 謎目的=misc
+所有者:owner:m:*grp_adm:
+# このグループの活用方法:usage:s:textarea:cols=40
+プロフィール画像:profimg:m:image:
+メンバー:member:m:*grp_mem:maxlength="4M"
+更新:mtime:s:stamp:
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/sns/form/grp_adm.def	Mon Aug 03 12:16:06 2015 +0900
@@ -0,0 +1,3 @@
+グループ:gname:pf:grp(gname):
+ユーザ:user:pf:user(name):
+このグループでのメイルアドレス:email:s:text:
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/sns/form/grp_mem.def	Mon Aug 03 12:16:06 2015 +0900
@@ -0,0 +1,3 @@
+グループ:gname:pf:grp(gname):
+ユーザ:user:pf:user(name):
+このグループでのメイルアドレス:email:s:text:
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/sns/form/user.def	Mon Aug 03 12:16:06 2015 +0900
@@ -0,0 +1,8 @@
+ユーザ名(英数字):name:p:user:length="20" maxlength="40"
+パスワード:pswd:s:password:length="20" maxlength="40"
+なまえ(日本語OK):gecos:s:text:length="20" maxlength="40"
+セッションキー:skey:s:session
+通知送信メイルアドレス(複数可):email:mh:text:length="20" maxlength="40"
+住所:address:m:textarea:maxlength="400"
+プロフィール画像:profimg:m:image:maxlength="400K"
+履歴書(4MBまで):profpdf:m:document:maxlength="4M"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/sns/msg	Mon Aug 03 12:16:06 2015 +0900
@@ -0,0 +1,1 @@
+../common/msg
\ No newline at end of file
--- a/s4-funcs.sh	Mon Aug 03 12:15:28 2015 +0900
+++ b/s4-funcs.sh	Mon Aug 03 12:16:06 2015 +0900
@@ -7,14 +7,12 @@
 myname=`basename ${SCRIPT_NAME:-$0}`
 mydir=`dirname ${SCRIPT_FILENAME:-$0}`
 myargs="$@"
-#bindir=`(cd $mydir/bin; pwd)`
-# :$bindir
 PATH=/usr/local/sqlite3/bin:/usr/local/vim7/bin:/usr/iekei/ImageMagick/bin:/usr/local/ImageMagick/bin:$PATH
 tmpdir=${TMPDIR:-tmp}
 dbdir=${DBDIR:-db}
 tmpfiles=""
 db=${DB:-$dbdir/cgi.sq3}
-admin=${ADMIN:-wwwadmin@gentei.org}
+admin=${ADMIN:-hostmaster@example.org}
 templ=${TEMPL:-templ}
 layout=${LAYOUT:-$templ/default}
 formdir=${FORMDIR:-$templ/form}
@@ -906,7 +904,9 @@
 checkdomain() (
   # Check the validity of domain by referring DNS
   item=$1
-  host ${item#@*} >/dev/null 2>&1
+err checkdomain $1
+host ${item#*@} 1>&3 2>&3
+  host ${item#*@} >/dev/null 2>&1
 )
 pwcheck() {
   # $1=passwd
@@ -920,8 +920,11 @@
 }
 wasureta() {
   user=$1
-  if checkdomain $user; then
-    echo "ユーザ名には正しいメイルアドレスが必要です。"
+  if ! checkdomain $user; then
+    contenttype; echo
+    m4 -D_TITLE_='Invalid email' $layout/title-only.html
+    echo "ユーザ名($user)には正しいメイルアドレスが必要です。" | html p
+    putfooter
     exit 0
   fi
   newpswd=`genrandom` # newsalt=`genrandom 5`
--- a/templ/default/default.css	Mon Aug 03 12:15:28 2015 +0900
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,108 +0,0 @@
-/*
- * Default CSS definitions
- */
-body {background: #eff;}
-hr {clear: both;}
-div.topmenu {
-    margin: 0; padding: 0; width: 100%; height: 2em;
-}
-div.topmenu ul {width: 100%; position: fixed; margin: 0;
-		margin: 0 auto;}
-div.topmenu ul li {
-    float: left; width: 18%;
-    background: rgba(68,255,102,0.8); border: #3e5 2px groove; margin: 0;
-    text-align: center; font-size: 80%; list-style: none;
-    box-shadow: #242 2px 3px 5px;
-    text-shadow: #fff 0px 0px 10px;
-}
-div.topmenu ul li:hover {background: #8fa;}
-div.topmenu ul a {text-decoration: none;}
-
-ldiv.topmenu + h1 {clear: both; margin-top: 3em;}
-
-div.dumptable {max-height: 15em; overflow: auto;}
-
-td {padding-left: 0.5ex; padding-right: 0.5ex;}
-table.td2r td:nth-child(2) {text-align: right;}
-table.td3r td:nth-child(3) {text-align: right;}
-table.form, table.b, table.b tr, table.b td, table.b th {
-  border: 1px solid black; border-collapse: collapse;
-}
-td.warn {background: #fcc;}
-input[type="checkbox"][name="rm"]:checked ~ table {background: red;}
-input[type="checkbox"][name="rm"] ~ span {display: none;}
-input[type="checkbox"][name="rm"]:checked ~ span {display: inline;}
-
-input[type="radio"][value="replace"] + input.replace[type="file"] {
-    visibility: hidden;}
-input[type="radio"][value="replace"]:checked +  input.replace[type="file"] {
-    visibility: visible;
-}
-
-/* keep/edit/rm action selector */
-input.action ~ input:not(.action), input.action ~ textarea {
-    display: none;
-}
-input.action[value="edit"]:checked ~ input {display: inline;}
-input.action[value="edit"]:checked ~ textarea {display: block;}
-input.action[value="edit"]:checked ~ span {display: none;}
-input.action[value="rm"]:checked ~ span {background: red;}
-label.confirm {display: none;}
-input.action[value="rm"]:checked ~ label.confirm {
-    display: inline;
-}
-
-form.replyblog {margin-bottom: 40%;}
-div.blogcomment {
-    position: fixed; bottom: 0; left: 0;
-    z-index: 2; background-color: rgba(250,222,222,0.8);
-}
-div.blogcomment * {opacity: 1.0;}
-table.bloghead, .bloghead tr, .bloghead td {
-    border: 1px solid black; border-collapse: collapse;
-    min-width: 30em;
-}
-table.bloghead tr:nth-child(2) {
-    font-size: 150%; background: yellow; text-align: center;
-}
-table.bloghead {margin-bottom: 1em;}
-
-table.blog_replies, .blog_replies tr, .blog_replies td {
-    border: 1px solid black; border-collapse: collapse;
-    white-space: pre;
-}
-.blog_replies td:nth-child(2) {
-    vertical-align: top; min-width: 30em; height: 3em;
-}
-
-div.fold {margin-top: 1em; border-top: 1px solid black; padding-top: 1em;}
-div.fold > div {
-    xxdisplay: none; max-height: 80%; overflow: auto;
-    height: 0px; opacity: 0; padding: 0 1ex;
-}
-div.fold input[type="checkbox"]:checked ~ div,
-div.fold input[type="radio"]:checked ~ div {
-    display: block; background: #eef;
-    height: auto; opacity: 1.0; transition: 1s;
-}
-
-/********************* icon list *********************/
-div.iconlist {
-    text-align: center; float: left; margin: 1ex 1em;
-    border: dotted #dfd 2px; padding: 1ex;
-}
-div.iconlist p {margin: 0; padding: 0;}
-div.iconlist p.tag {background: #ffa; border-radius: 4em;}
-div.iconlist p._temp	{background: cyan;}
-div.iconlist p._lecture	{background: pink;}
-div.iconlist p._admin	{background: yellow;}
-div.iconlist p._friend	{background: fuchsia;}
-div.iconlist p._fellows	{background: #9f9;} /* light green */
-div.iconlist p._club	{background: #4bb;} /* light teal */
-div.iconlist p._event	{background: maroon; color: white;}
-div.iconlist p._misc	{background: purple; color: white;}
-div.iconlist p._record	{background: red; color: white;}
-div.xy120x120 {min-width: 120px; min-height: 140px;}
-div.xy96x96 {min-width: 96px; min-height: 116px;}
-div.xy50x50 {min-width: 50px; min-height: 70px;}
-div.right {clear: both; float: right;}
--- a/templ/default/footer.m4.html	Mon Aug 03 12:15:28 2015 +0900
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,2 +0,0 @@
-</body>
-</html>
--- a/templ/default/form+dump-whead.m4.html	Mon Aug 03 12:15:28 2015 +0900
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,5 +0,0 @@
-<h1>_TITLE_</h1>
-<h2>_FORMHEAD_</h2>
-_FORM_
-<h2>_DUMPHEAD_</h2>
-_DUMPTABLE_
--- a/templ/default/form+dump.m4.html	Mon Aug 03 12:15:28 2015 +0900
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,6 +0,0 @@
- <h1>_TITLE_</h1>
-<div class="groupman">
-_FORM_
-</div>
-<hr>
-_DUMPTABLE_
--- a/templ/default/home.m4.html	Mon Aug 03 12:15:28 2015 +0900
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,15 +0,0 @@
-<h1>_TITLE_</h1>
-<div class="home">
-_PROFILE_
-</div>
-
-<div class="fold">
-<input type="checkbox" id="sd"><label for="sd">日記一覧を見る</label>
-<div><!-- in home.m4 -->_BLOGS_</div><!-- in home.m4 -->
-</div>
-
-<div class="fold"> <!-- in home.m4.html -->
-<input type="checkbox" id="grp"><label
- for="grp">個人の参加グループ一覧を見る</label>
-_GROUPS_
-</div> <!-- end of fold (in home.m4.html) -->
--- a/templ/default/html.m4.html	Mon Aug 03 12:15:28 2015 +0900
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,16 +0,0 @@
-<html>
-<head><title>_TITLE_</title>
-<link rel="stylesheet" type="text/css" href="templ/default/default.css">
-</head>
-<body class="_BODYCLASS_">
-<div class="topmenu">
-<ul>
- <li><a href="?home">ホーム</a></li>
- <!-- <li><a href="?blog">話題作成</a></li> -->
- <li><a href="?mems">参加者一覧</a></li>
- <li><a href="?grps">グループ一覧</a></li>
- <li><a href="?invite">招待</a></li>
- <li><a href="?login">再ログイン</a></li>
- <!-- <li><a href="?userconf">userconf</a></li> -->
-</ul>
-</div>
--- a/templ/default/invite.m4.html	Mon Aug 03 12:15:28 2015 +0900
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,15 +0,0 @@
-<h1>招待メイル送信</h1>
-<p>_REPORT_</p>
-
-<form method="POST" action="_ACTION_">
-<table class="invite">
- <tr><td>送信先</td>
-  <td><input name="email" size="40" maxlength="64"></td></tr>
-</table>
-<input name="submit" type="submit" value="送信">
-<input name="reset" type="reset" value="Reset">
-</form>
-_SUSPENDED_
-
-</body>
-</html>
--- a/templ/default/login-fail.m4.html	Mon Aug 03 12:15:28 2015 +0900
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,2 +0,0 @@
-<h2>ログイン失敗<h2>
-<p>パスワードが違っています。</p>
--- a/templ/default/login.m4.html	Mon Aug 03 12:15:28 2015 +0900
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,10 +0,0 @@
-<h1>_SYSNAME_</h1>
-<form action="_MYNAME_" method="POST">
- <table class="form">
-  <tr><th>User</th><td><input name="user" size="30" maxlength="128"></td></tr>
-  <tr><th>Password</th><td><input name="pswd" type="password" size="30"
-			maxlength="128"></td></tr>
- </table>
- <input type="submit" name="sub" value="OK">
- <input type="reset" name="res" value="Reset">
-</form>
--- a/templ/default/welcome.m4.html	Mon Aug 03 12:15:28 2015 +0900
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,12 +0,0 @@
-<h1>Welcome to _SITE_</h1>
-<ul>
- <!-- <li><a href="./s.cgi?diary">diary</a></li> -->
- <li><a href="./s.cgi?home">home</a></li>
- <li><a href="./s.cgi?mems">member list</a></li>
- <li><a href="./s.cgi?invite">invite a friend</a></li>
- <li><a href="./s.cgi?groupman">group management</a></li>
- <li><a href="./s.cgi?grps">group list</a></li>
- <li><a href="./s.cgi?gallery">gallery</a></li>
- <li><a href="./s.cgi?userconf">userconf</a></li>
- <li><a href="./s.cgi?blog">write blog</a></li>
-</ul>
--- a/templ/form/article.def	Mon Aug 03 12:15:28 2015 +0900
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,9 +0,0 @@
-シリアル:id:p:serial:
-blogID:blogid:f:blog(id):
-筆者:author:s:author:
-時刻:ctime:s:stamp:
-参照元:parent:s:parent: 
-パス:path:s:path:
-本文:text:s:textarea:cols="60" rows="8"
-画像:image:m:image:multiple
-stage:stage:x:hidden:value="replyblog"
--- a/templ/form/blog.def	Mon Aug 03 12:15:28 2015 +0900
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,10 +0,0 @@
-シリアル:id:p:serial:
-用途:mode:s:select:普通の掲示板=normal レポート提出用(相互に参照可能)=report-open レポート提出用(管理者のみ参照可能)=report-closed
-タイトル:title:s:text:maxlength="200"
-コメント書込通知:notify:s:select:所有者全員に通知=all 管理者のみに通知(グループの場合のみ)=admin しない=no
-所有者:owner:s:owner:
-筆者:author:s:author:
-時刻:ctime:s:stamp:
-序文:heading:s:textarea:cols="60" rows="3"
-リプライ:reply:m:*article:
-stage:stage:x:hidden:value="blog"
--- a/templ/form/diary.def	Mon Aug 03 12:15:28 2015 +0900
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,4 +0,0 @@
-タイトル:title:s:text:length="20" maxlength="40"
-曜日:wday:s:radio:日=sun 月=mon 火=tue 水=wed 木=thu 金=fri 土=sun
-本文:diary:s:textarea: rows="4" cols="30" maxlength="2048"
-stage:stage:s:hidden:value="diary"
--- a/templ/form/form-groupman.def	Mon Aug 03 12:15:28 2015 +0900
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,4 +0,0 @@
-グループ名(英数字):name:p:text:length="20" maxlength="40"
-種別:tag:s:select:講義関連=lecture 個人的リスト=friend 管理用=admin 一時的=temp
-グループの説明:gecos:s:text:length="30" maxlength="60"
-stage:stage:s:hidden:value="groupman"
--- a/templ/form/grp.def	Mon Aug 03 12:15:28 2015 +0900
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,10 +0,0 @@
-グループ名(他と区別がつく名前):gname:p:text:length="20" maxlength="40"
-一言説明:gecos:s:text:length="20" maxlength="40"
-#
-# 種別にタグを足したら default.css の div.iconlist p.* も足す
-種別:tag:s:select:講義関連=lecture 個人的リスト=friend 管理用=admin 一時的=temp 友好目的=fellows サークル等=club イベント用=event 記録目的=record 謎目的=misc
-所有者:owner:m:*grp_adm:
-# このグループの活用方法:usage:s:textarea:cols=40
-プロフィール画像:profimg:m:image:
-メンバー:member:m:*grp_mem:maxlength="4M"
-更新:mtime:s:stamp:
--- a/templ/form/grp_adm.def	Mon Aug 03 12:15:28 2015 +0900
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,3 +0,0 @@
-グループ:gname:pf:grp(gname):
-ユーザ:user:pf:user(name):
-このグループでのメイルアドレス:email:s:text:
--- a/templ/form/grp_mem.def	Mon Aug 03 12:15:28 2015 +0900
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,3 +0,0 @@
-グループ:gname:pf:grp(gname):
-ユーザ:user:pf:user(name):
-このグループでのメイルアドレス:email:s:text:
--- a/templ/form/user.def	Mon Aug 03 12:15:28 2015 +0900
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,8 +0,0 @@
-ユーザ名(英数字):name:p:user:length="20" maxlength="40"
-パスワード:pswd:s:password:length="20" maxlength="40"
-なまえ(日本語OK):gecos:s:text:length="20" maxlength="40"
-セッションキー:skey:s:session
-通知送信メイルアドレス(複数可):email:mh:text:length="20" maxlength="40"
-住所:address:m:textarea:maxlength="400"
-プロフィール画像:profimg:m:image:maxlength="400K"
-履歴書(4MBまで):profpdf:m:document:maxlength="4M"
--- a/templ/msg/login-fail-1.m4.html	Mon Aug 03 12:15:28 2015 +0900
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,3 +0,0 @@
-<h2>パスワード再発行</h2>
-<p>登録アドレス(_USER_)に新パスワードを送付しておきました。</p>
-<p>_URL_</p>
--- a/templ/msg/login-fail-2.m4.html	Mon Aug 03 12:15:28 2015 +0900
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,3 +0,0 @@
-<h2>ログイン失敗</h2>
-<p>パスワードが違います。思い出せない場合はwasureta入れてください。</p>
-<p>_URL_</p>
--- a/templ/msg/login-fail-3.m4.html	Mon Aug 03 12:15:28 2015 +0900
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,3 +0,0 @@
-<h2>ログイン失敗</h2>
-<p>ユーザ登録が必要です。管理者までおしらせください。</p>
-<p>_ADMIN_</p>
--- a/templ/msg/mail	Mon Aug 03 12:15:28 2015 +0900
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,8 +0,0 @@
-To: _RCPT_
-Subject: _SUBJ_
-Date: _DATE_
-From: _FROM_
-MIME-Version: 1.0
-Content-type: text/plain; charset=iso-2022-jp
-
-_BODY_
--- a/templ/msg/mail-header.m4	Mon Aug 03 12:15:28 2015 +0900
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,6 +0,0 @@
-To: _RCPT_
-Subject: _SUBJ_
-From: _FROM_
-MIME-Version: 1.0
-Content-type: text/plain; charset=iso-2022-jp
-
--- a/templ/msg/mail-invite.m4	Mon Aug 03 12:15:28 2015 +0900
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,13 +0,0 @@
-
-=== _URL_
-=== メンバー加入のお誘い
-
-_USER_ さんから
-_EMAIL_ さん宛に
-招待状が送られました。
-
-下記URLにアクセスすることで、加入登録が進みます。
-_REGIST_
-
-もしこのURLに心当たりがない場合は以下の管理者宛に御連絡ください。
-_ADMIN_
--- a/templ/msg/mail-newaccount.m4	Mon Aug 03 12:15:28 2015 +0900
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,7 +0,0 @@
-
-_USER_ さんのアカウントを作成しました。
-初期パスワードは _PSWD_ です。
-もし、このパスワードを忘れたときは
-wasureta
-を入力してください。
-_URL_

yatex.org