LiteSite/signup
出自六年制學程
用於調查、報名、連署
目錄
- 1 ○、版本
- 2 一、檔案清單
- 3 二、signupCommon.php
- 4 三、signup.php
- 5 四、signupE.php
○、版本
- 2020.4:「學前教育公共化」研討會(signupDoings)
- 2020.6:「不錯學群」招生說明會(signupDoings)
- 2020.7:「不錯學群」新生面談預約(signupDoings2)
- 2020.10:海星共識營(signupDoings)
- 2021.1:跨校選修學習需求調查(/AL/signupDoings)
- 2021.3:「自主學習輔導平台建構」選主題分享(signupDoings)
- 2021.8:「海星的回顧與修改」(/EM/signupDoings/thisDoing.php)
- 2021.10:自帶培籌備活動3報名(/EMEP/ALPartner/signupDoings/thisDoing.php)
- 2022.1:自帶培自荐(/EMEP/ALPartner/selfRecommend/signupDoings)
- 2022.1:「自主學習三日譚」註冊(/EMEP/20220124/signupDoings/thisDoing.php)
- 2022.2:「動手學科學」招募實習生(/s4e/signupDoings/thisDoing.php)
- 2022.3:均優2022議程人員自填資料(/2022/signupDoings/thisDoing.php)
- 2022.4:振鐸40週年籌備茶會(/jendo/40years/signupDoings/thisDoing.php)
- 2022.8:輔導平台(/jendo/counseling2/signupDoings/ 未完成)
- 2022.11:「開門辦教育落花生」報名(/EMEP/peanut/signupDoings/thisDoing.php)
- 2023.1:「光譜平台」(720+/spectrum/signupDoings)
- 2023.5:「教育再公共化聯盟」成立紀者會報名(/ggp/signupDoings)
- 2023.11:「發展教育社群」報名(/ggp/OSJA/signupDoings)
- 2024.3:「三社群四組課」報名(/ggp/course)
- 2024.6:「三社群四組課」報名(/AL/signup),引入 signupBase.php,thisDoing.php
- 2024.8:「自主學習公共化推動連線」報名(/ALPS/signup),傳承自「/AL/signup」改了 signupPerson.php
一、檔案清單
(一)程式列表
signupCommon.php 各活動通用設定檔,各系統不同點主要是前置字和郵寄伺服器 signupBase.php 指定資料表 thisDoing.php 當前活動設定檔 signup.php 首次報名 signupE.php 修改報名資料,即依帳號選擇並維護個人資料 signupE.php?buttonWord=按鈕字樣&name=誰&thisDoing=活動設定檔&thisBase=指定資料表 signupPerson.php 管理者看報名者一覽表 signupPersonR.php 公眾看報名者一覽表 signupComment.php 報名者意見留言,依不同的 siteGrp ,調整常數prefix,Doings,變數$ET->formType['commentCategory'] participantNotice.php 寄行前通知 showIntroduction.php 秀簡介 活動管理.php 問卷結果.php 廣宣清單.php
(二)近期使用
- 海星共識營報名:/EM/signupDoings
- 跨校選修學習需求調查:/NL/signupDoings
- 不錯學群報名及面談登記:/NL/signupDoings、signupDoings2
- 學前教育公共化研討會報名
- 部分班級實驗教育客廳會報名
二、signupCommon.php
(○)1~4表,兩配置檔
連結資料庫:
- 靠 theme.php 連結資料庫
- 如果要使用預設資料庫之外的資料庫,才下「DB::connect("mysql://…");
四資料表:
- $tbl:人員資料表
- $tbll:關係資料表
- $tbll."KeyValue":相依於 $lKeyValue 陣列(在 thisDoing.php 中設定),為每活動每報名者的問巻題目答案
- $tblo:關係資料表所連的另一主體資料表
兩配置檔
- 基本配置檔:預設名 signupBase.php ,可由 $_REQUEST['thisBase'] 指定
- 活動配置檔:預設名 thisDoing.php ,可由 $_REQUEST['thisDoing'] 指定
(一)主程式
- 載入常數、布景直到連上資料庫
- 載入資料表名稱、不使用欄、欄代名
- 有設 $_REQUEST['thisBase'] ,載入指定檔;否則載入 signupBase.php
- 設定表名:$tbl=$prefix.'Signup'.$suffix;
- 不使用欄:$dropField=array(…);
- 欄代名:$alias=array('欄名'=>'提示',…);
- 安排欄屬性:
- 須查欄:$fields=array('欄名'=>'提示',…);由資料表衍生
- 必填欄:$mustField=array('欄名',…);
- mail欄:$emailField=array('欄名');
- 預設值欄:$defaultField=array('欄名'=>'預設值',…);
- 設定欄的 formType
- 是否欄:$radioyn=array('欄名',…);
- 核取欄:$checkbox=array('欄名',…);
- 隱藏欄:$hidden=array('欄名'=>'後送值',…);
- 多值欄:$bitCheckbox=array('欄名'=>array(值=>提示,…));
- 多值欄:$spanCheckbox=array('欄名'=>array(值=>提示,…));
- 認證欄與認證條件:
- $idField
- $psdField
- $郵址
- $姓名
- $idKey:辨識欄=輸入值
- $idKeyE:辨識欄=輸入值 且 密碼欄=輸入值
- 剖析三資料表
- 剖析關係資料表($tbll)諸欄
- 剖析另一主體資料表($tblo)諸欄
- 載入本次報名的手動參數,判斷有無設定 $_REQUEST['thisDoing'] ,若有載入指定檔案,沒有就載入預設的thisDoing.php
- 剖析人員資料表($tbl)諸欄
- 設定管制欄位
- 必填欄位
- 使用 Email 格式的欄位
- 使用預設值而不使用調查表問欄值的欄位
- …
- 可套用選項:$options
- $options['職業屬性']
- $options['city']
- $options['device']
- $options['OS']
- $options['學校職務']
- $options['rule']
- phpmailer 路徑
- 設定提示字:
- $surveyTitle:整個調查、報名、連署的總名稱,如:跨校選修/「留下小孩唸書的錢,台灣才有翻身的希望」
- $FromName:通知的寄信人,如:丁志仁
- $mailHead:各項用\n間隔開,最後一項末尾也要加\n
- Content-Type: text/html; charset=UTF-8
- Content-Transfer-Encoding: 8bit
- From: 丁志仁 <admin@science4everyone.net>
- $surveyExplain:表單之上文字,如:/為求連署有效,請以真實姓名,真實 Email 連署。
- $surveyShortTitle:signup的性質,如:選課/報名/調查/連署
- $surveyQueryTitle:各問題之上的抬頭,如:可選課程一覽表:/我要連署
- $surveySubmit:後送按鈕,如:選課/連署
- $surveyContact:聯絡人,如:'系統聯絡人:
林青高:0910100693 E-mail:inorganicom@gmail.com'; - $signupPeriod:報名截止時間,如:mktime(13,55,59,10,29,2019)
- $expiredMsg:報名截止後提示,如:報名時間已過
- $surveyR0Msg:報名成功頁面秀出文字,說明聯絡事宜。
- $surveyR1Msg:已報名過頁面秀出之提示字
- $surveyR2Msg:報名成功頁面秀出文字,說明 signup 已成功。
- $surveyR3Msg:寄通知之主旨
- $surveyR4Msg:寄通知之信文
- $surveyR5Msg:寄通知之寄件者
- $surveyE1Msg:驗證未通過之提示
- $surveyER0Msg:說明聯絡事宜
- $surveyER1Msg:修改成功頁面秀出文字
- $surveyER2Msg:寄修改通知之主旨
- $surveyER3Msg:寄修改通知之信文
- $surveyER4Msg:驗證未過之提示
- $n:通知計數上限,只能由此行改動,不准由 URL 輸入值
- $surveyN1Msg:行前通知互動提示,如:沒有需要發通知的人。
- $surveyN2Msg:行前通知主旨
- $surveyN3Msg:行前通知信文
- 調製調查問題 $surveyQuery=array()
- $str
- javascript
- 調查或報名相關說明
- 表單前半
- 函式 basicInformation
- 函式 surveyQuery
(二)$str
①javascript
- chkForm():
- 從必填欄中,檢查 email 及必填
- 檢查核取必填欄
- isEmail(待檢字串):檢查
- showHide(核取物件,顯隱物件ID):顯隱切換
②$surveyExplain
③form
- 導向自己的程式名
- name=調查表
④表前半部
- 跨三欄
- $surveyShortTitle
⑤表後半部
(三)basicInformation($fields,$dropField,$mustField,$fieldValue=array(),$取消報名=0)
諸引數:
- $fields
- $dropField
- $mustField
- $fieldValue=array()
- $取消報名=0
全域變數
- $str
- $radioyn
- $checkbox
- $hidden
- $options
- $checkField
- $alias
每一個$fields元素做一次,但排除用餐、住宿、交通、ip:
- 非隱藏欄須做提示,提示空字串不加「:」,必填欄加「*」
- $checkField做顯隱
- $checkbox後送1
- $bitCheckbox:1byte後送多值
- 提示為「性別」做男女 radio
- $radioyn做是否 radio
- 提示為「職業屬性、學校職務、行動裝置、作業系統、學生戶籍」套用選項,做 select
- 欄值為「city、role」套用選項,做 select
- 欄值為「idOfSchool」:即時追踪使用者輸入的字串,蒐索校名縮小範圍,選定之後送 sid
- $hidden後送設定值
- 其他做 input/text
(四)surveyQuery($surveySubmit='修改',$fieldValue=array())
諸引數:
- $surveySubmit='修改'
- $fieldValue=array():各問題項的值,索引為問題項的 ID
全域變數
- $str
- $surveyQueryTitle:問題項的總抬頭,可以是空字串
- $surveyShortTitle
- $surveyQuery:問題項陣列
- $surveyQueryVchar
- $surveyQueryCheckbox
- $surveyDimensions:調查維度,0維沒有問題項;一維就一排問題項;二維問題項,問題有分類
- $categoryItem
- $lField:關係資料表每一筆的待問設定
- 簡答:$lField['varchar']=array('欄名'=>'提示','欄名'=>'提示',…);
- 核取:$lField['checkbox']=array('欄名'=>'提示','欄名'=>'提示',…);
- $lKeyValue
每一個可以被選的問題項(如一門課)做一次:
- 選取問題項的核取方塊
- 造出所有的 $lField['checkbox']
- 造出所有的 $lField['varchar'],每一欄一行
- 之後處理 $lKeyValue
- 須要以下全域變數:$tbl,$tblKey,$idKey,$tbll,$tblKey,$tbloKey
- 目前 'formType' 有:
- text:填字
- textarea:多行填字
- checkbox:複選
(五)dispWeb($str,$html1,$html2)
如果非 ajax 加頁首頁尾,否則只回傳 $str
(六)fields2sql($fields)
欄名指示轉為sql賦值子句
(七)可設定欄位型態
- -----人員-----
- 預設: text
- $radioyn=array('欄名1','欄名2'):其能選是、否的按鈕,分別後送 0,1
- $checkbox=array('欄名1','欄名2'):只有一個核取方塊,只能打勾或不打勾,分別後送 0,1
- $hidden=array('欄名'=>'值',…);對指定欄後送固定值
- $radio['欄名']=array(1=>'提示',2=>'提示',4=>'提示',8=>'提示',16=>'提示');:只能選一個的按鈕
- $bitCheckbox['欄名']=array(1=>'提示',2=>'提示',4=>'提示',8=>'提示',16=>'提示');
- $spanCheckbox['欄名']=array(1=>'議題1',2=>'議題2',3=>'議題3',4=>'議題4',5=>'議題5',6=>'議題6',7=>'議題7');
- $textarea['欄名']=true;
- $options['選項陣列']
- $checkField:必填欄位
-----關係資料表----- - $lField
- checkbox: 核取方塊
- varchar: 文字填入
-----可設定的 KeyValue 欄位型態-----
- $lKeyValue
- text :文字填入
- textarea :文字區塊填入
- checkbox :核取方塊
三、signup.php
四、signupE.php
(一)共同前置處理
- 將 $_REQUEST['buttonWord'] 轉成常數「surveyQuerySubmit」,預設為「修改」。
- 將傳入值全部化為變數。必須先於載入 signupCommon.php ,因 signupCommon.php 中的 $idKey 會用到這些變數。
- 載入 signupCommon.php 。
- 檢查是否已過了修改期限。
(二)若後送捕捉 keyin 值,還它一個相應選單
(三)如果是後送認證表單,檢查認證資料表,通過後,送出問卷表單
(四)如果是後送問卷表單,執行資料表更新操作
- 調用 fields2sql($fields) 去形成 sql 命令
(五)else,送出認證表單
- 如果 $idNotEmail 就取「姓名」
- 若 $_REQUEST['thisDoing'] 就傳遞 thisDoing 檔名
- 若 $_REQUEST['thisBase'] 就傳遞 thisBase 檔名