LiteSite/signup

出自六年制學程
跳轉到: 導覽搜尋

用於調查、報名、連署

○、版本

  1. 2020.4:「學前教育公共化」研討會(signupDoings)
  2. 2020.6:「不錯學群」招生說明會(signupDoings)
  3. 2020.7:「不錯學群」新生面談預約(signupDoings2)
  4. 2020.10:海星共識營(signupDoings)
  5. 2021.1:跨校選修學習需求調查(/AL/signupDoings)
  6. 2021.3:「自主學習輔導平台建構」選主題分享(signupDoings)
  7. 2021.8:「海星的回顧與修改」(/EM/signupDoings/thisDoing.php)
  8. 2021.10:自帶培籌備活動3報名(/EMEP/ALPartner/signupDoings/thisDoing.php)
  9. 2022.1:自帶培自荐(/EMEP/ALPartner/selfRecommend/signupDoings)
  10. 2022.1:「自主學習三日譚」註冊(/EMEP/20220124/signupDoings/thisDoing.php)
  11. 2022.2:「動手學科學」招募實習生(/s4e/signupDoings/thisDoing.php)
  12. 2022.3:均優2022議程人員自填資料(/2022/signupDoings/thisDoing.php)
  13. 2022.4:振鐸40週年籌備茶會(/jendo/40years/signupDoings/thisDoing.php)
  14. 2022.8:輔導平台(/jendo/counseling2/signupDoings/ 未完成)
  15. 2022.11:「開門辦教育落花生」報名(/EMEP/peanut/signupDoings/thisDoing.php)
  16. 2023.1:「光譜平台」(720+/spectrum/signupDoings)
  17. 2023.5:「教育再公共化聯盟」成立紀者會報名(/ggp/signupDoings)
  18. 2023.11:「發展教育社群」報名(/ggp/OSJA/signupDoings)
  19. 2024.3:「三社群四組課」報名(/ggp/course)

一、檔案清單

(一)程式列表

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

(二)近期使用

  1. 海星共識營報名:/EM/signupDoings
  2. 跨校選修學習需求調查:/NL/signupDoings
  3. 不錯學群報名及面談登記:/NL/signupDoings、signupDoings2
  4. 學前教育公共化研討會報名
  5. 部分班級實驗教育客廳會報名

二、signupCommon.php

(○)1~4表,兩配置檔

連結資料庫:

  1. 靠 theme.php 連結資料庫
  2. 如果要使用預設資料庫之外的資料庫,才下「DB::connect("mysql://…");

四資料表:

  1. $tbl:人員資料表
  2. $tbll:關係資料表
  3. $tbll."KeyValue":相依於 $lKeyValue 陣列(在 thisDoing.php 中設定),為每活動每報名者的問巻題目答案
  4. $tblo:關係資料表所連的另一主體資料表

兩配置檔

  1. 基本配置檔:預設名 signupBase.php ,可由 $_REQUEST['thisBase'] 指定
  2. 活動配置檔:預設名 thisDoing.php ,可由 $_REQUEST['thisDoing'] 指定

(一)主程式

  1. 載入常數、布景直到連上資料庫
  2. 載入資料表名稱、不使用欄、欄代名
    • 有設 $_REQUEST['thisBase'] ,載入指定檔;否則載入 signupBase.php
    • 設定表名:$tbl=$prefix.'Signup'.$suffix;
    • 不使用欄:$dropField=array(…);
    • 欄代名:$alias=array('欄名'=>'提示',…);
  3. 安排欄屬性:
    • 須查欄:$fields=array('欄名'=>'提示',…);由資料表衍生
    • 必填欄:$mustField=array('欄名',…);
    • mail欄:$emailField=array('欄名');
    • 預設值欄:$defaultField=array('欄名'=>'預設值',…);
  4. 設定欄的 formType
    • 是否欄:$radioyn=array('欄名',…);
    • 核取欄:$checkbox=array('欄名',…);
    • 隱藏欄:$hidden=array('欄名'=>'後送值',…);
    • 多值欄:$bitCheckbox=array('欄名'=>array(值=>提示,…));
    • 多值欄:$spanCheckbox=array('欄名'=>array(值=>提示,…));
  5. 認證欄與認證條件:
    • $idField
    • $psdField
    • $郵址
    • $姓名
    • $idKey:辨識欄=輸入值
    • $idKeyE:辨識欄=輸入值 且 密碼欄=輸入值
  6. 剖析三資料表
    • 剖析關係資料表($tbll)諸欄
    • 剖析另一主體資料表($tblo)諸欄
    • 載入本次報名的手動參數,判斷有無設定 $_REQUEST['thisDoing'] ,若有載入指定檔案,沒有就載入預設的thisDoing.php
    • 剖析人員資料表($tbl)諸欄
  7. 設定管制欄位
    • 必填欄位
    • 使用 Email 格式的欄位
    • 使用預設值而不使用調查表問欄值的欄位
  8. 可套用選項:$options
    • $options['職業屬性']
    • $options['city']
    • $options['device']
    • $options['OS']
    • $options['學校職務']
    • $options['rule']
  9. phpmailer 路徑
  10. 設定提示字:
    • $surveyTitle:整個調查、報名、連署的總名稱,如:跨校選修/「留下小孩唸書的錢,台灣才有翻身的希望」
    • $FromName:通知的寄信人,如:丁志仁
    • $mailHead:各項用\n間隔開,最後一項末尾也要加\n
      1. Content-Type: text/html; charset=UTF-8
      2. Content-Transfer-Encoding: 8bit
      3. 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:行前通知信文
  11. 調製調查問題 $surveyQuery=array()
  12. $str
    • javascript
    • 調查或報名相關說明
    • 表單前半
  13. 函式 basicInformation
  14. 函式 surveyQuery

(二)$str

①javascript
  1. chkForm():
    • 從必填欄中,檢查 email 及必填
    • 檢查核取必填欄
  2. isEmail(待檢字串):檢查
  3. showHide(核取物件,顯隱物件ID):顯隱切換
②$surveyExplain
③form
  1. 導向自己的程式名
  2. name=調查表
④表前半部
  1. 跨三欄
  2. $surveyShortTitle
⑤表後半部

(三)basicInformation($fields,$dropField,$mustField,$fieldValue=array(),$取消報名=0)

諸引數:

  1. $fields
  2. $dropField
  3. $mustField
  4. $fieldValue=array()
  5. $取消報名=0

全域變數

  1. $str
  2. $radioyn
  3. $checkbox
  4. $hidden
  5. $options
  6. $checkField
  7. $alias

每一個$fields元素做一次,但排除用餐、住宿、交通、ip:

  1. 非隱藏欄須做提示,提示空字串不加「:」,必填欄加「*」
  2. $checkField做顯隱
  3. $checkbox後送1
  4. $bitCheckbox:1byte後送多值
  5. 提示為「性別」做男女 radio
  6. $radioyn做是否 radio
  7. 提示為「職業屬性、學校職務、行動裝置、作業系統、學生戶籍」套用選項,做 select
  8. 欄值為「city、role」套用選項,做 select
  9. 欄值為「idOfSchool」:即時追踪使用者輸入的字串,蒐索校名縮小範圍,選定之後送 sid
  10. $hidden後送設定值
  11. 其他做 input/text

(四)surveyQuery($surveySubmit='修改',$fieldValue=array())

諸引數:

  1. $surveySubmit='修改'
  2. $fieldValue=array():各問題項的值,索引為問題項的 ID

全域變數

  1. $str
  2. $surveyQueryTitle:問題項的總抬頭,可以是空字串
  3. $surveyShortTitle
  4. $surveyQuery:問題項陣列
  5. $surveyQueryVchar
  6. $surveyQueryCheckbox
  7. $surveyDimensions:調查維度,0維沒有問題項;一維就一排問題項;二維問題項,問題有分類
  8. $categoryItem
  9. $lField:關係資料表每一筆的待問設定
    • 簡答:$lField['varchar']=array('欄名'=>'提示','欄名'=>'提示',…);
    • 核取:$lField['checkbox']=array('欄名'=>'提示','欄名'=>'提示',…);
  10. $lKeyValue

每一個可以被選的問題項(如一門課)做一次:

  1. 選取問題項的核取方塊
  2. 造出所有的 $lField['checkbox']
  3. 造出所有的 $lField['varchar'],每一欄一行
  4. 之後處理 $lKeyValue
    • 須要以下全域變數:$tbl,$tblKey,$idKey,$tbll,$tblKey,$tbloKey
    • 目前 'formType' 有:
      1. text:填字
      2. textarea:多行填字
      3. checkbox:複選

(五)dispWeb($str,$html1,$html2)

如果非 ajax 加頁首頁尾,否則只回傳 $str

(六)fields2sql($fields)

欄名指示轉為sql賦值子句

(五)可設定欄位型態

-----人員-----
  1. 預設: text
  2. $radioyn=array('欄名1','欄名2'):其能選是、否的按鈕,分別後送 0,1
  3. $checkbox=array('欄名1','欄名2'):只有一個核取方塊,只能打勾或不打勾,分別後送 0,1
  4. $hidden=array('欄名'=>'值',…);對指定欄後送固定值
  5. $radio['欄名']=array(1=>'提示',2=>'提示',4=>'提示',8=>'提示',16=>'提示');:只能選一個的按鈕
  6. $bitCheckbox['欄名']=array(1=>'提示',2=>'提示',4=>'提示',8=>'提示',16=>'提示');
  7. $spanCheckbox['欄名']=array(1=>'議題1',2=>'議題2',3=>'議題3',4=>'議題4',5=>'議題5',6=>'議題6',7=>'議題7');
  8. $textarea['欄名']=true;
  9. $options['選項陣列']
  10. $checkField:必填欄位

三、signup.php

四、signupE.php

(一)共同前置處理

  1. 將 $_REQUEST['buttonWord'] 轉成常數「surveyQuerySubmit」,預設為「修改」。
  2. 將傳入值全部化為變數。必須先於載入 signupCommon.php ,因 signupCommon.php 中的 $idKey 會用到這些變數。
  3. 載入 signupCommon.php 。
  4. 檢查是否已過了修改期限。

(二)若後送捕捉 keyin 值,還它一個相應選單

(三)如果是後送認證表單,檢查認證資料表,通過後,送出問卷表單

(四)如果是後送問卷表單,執行資料表更新操作

調用 fields2sql($fields) 去形成 sql 命令

(五)else,送出認證表單

  1. 如果 $idNotEmail 就取「姓名」
  2. 若 $_REQUEST['thisDoing'] 就傳遞 thisDoing 檔名
  3. 若 $_REQUEST['thisBase'] 就傳遞 thisBase 檔名