筍子工作雜記

七月 20, 2006

Xoops 分類啟用

Filed under: xoops — shinnlu @ 3:26 下午

這幾個月接到一個使用 Xoops 為核心的網頁開發專案,才開始瞭解 Xoops 的方便與易用,但也瞭解到Xoops 的缺點,以及開發時所遇到的問題。
從大分類來說,Xoops 核心包含了下述功能
XoopsSecurity:安全性檢查,比如HTTP REFERER、security token、檢查Global變數、阻擋 badip
XoopsErrorHandler:錯誤管理,程式中若發生錯誤,可交由 ErrorHandler產生相關訊息,避免洩漏系統設定
XoopsLogger:訊息記錄,可以將 PHP、Smarty、Mysql 執行過程(結果)即時顯示,方便偵錯
Criteria:資料相容基準,為了讓Xoops支援 LDAP、Mysql 的一個虛擬類別
MyTextSanitizer:文字管理,換助處理變數中字元的轉換(包含SQL Injection),預覽畫面,取代"字元過濾選項"設定裡的不當字元,[Code]區塊輸出
XoopsDatabaseFactory:資料庫基本類別,只負責取得資料庫種類(並載入相對的資料庫類別)及連線部份
XoopsDatabase:資料庫虛擬類別,只負責記錄SQL指令及設定(取得)Xoops Prefix.
XoopsMySQLDatabaseSafe:繼承自XoopsMySQLDatabase,此類別可以執行Select,Insert,Delete,Drop…所有的SQL語法
XoopsMySQLDatabaseProxy:繼承自XoopsMySQLDatabase,此類別只允許 Select 語法
XoopsMySQLDatabase:繼承自XoopsDatabase,所有 Mysql 功能都在此類別裡實作
XoopsTpl:繼承自Smarty,樣版引擎
XoopsTree:樹狀選單類別,簡單好用的樹狀選單產生,管理類別
XoopsModule:模組基本類別,透過這個類別對模組安全(更新)、初始化、讀取模組資料、權限核對(管理)、載入相對的語系、樣版(區塊)管理
XoopsMemberHandler、XoopsUser、XoopsGroup:會員管理,群組,使用者,Guest 權限管理
XoopsSessionHandler:Session 管理
XoopsTplsetHandler:樣版"組"管理
XoopsTplfileHandler:樣版"檔案"管理
上述只是一個大概的分析,並沒有把所有的模組都列出來,比如很重要的 XoopsForm 以及其衍生類別XoopsSimpleForm、XoopsTableForm、XoopsThemeForm。而部份說明也不是非常詳細,這些部份還要慢慢整理出來
=====
接下來直接切入主題,這邊先跳過模組基本架構、設定,先來討論管理介面的產生方式

$result = $xoopsDB->query(“SELECT cid, title FROM “.$xoopsDB->prefix(“myconference_main")." ORDER BY title ASC") or $eh->show(“0013″);
$conference_select = new XoopsFormSelect(_MD_TITLE, “cid",$cid);
$conference_select->setExtra(‘onchange="this.form.submit();"‘);
$conference_select->addOption(0, “–請選擇會議年度–");
while (list($cid_v, $title) = $xoopsDB->fetchRow($result) ) {
$conference_select->addOption($cid_v, $title);
}

$editform = new XoopsThemeForm(_MD_EDITSPEECH, “choicespeechform", “speeches.php");
$editform->addElement($conference_select);
$editform->display();
這樣就完成了一個表單的輸出
form1.PNG
1-7行,產生一個 XoopsFormSelect 物件,並把資料庫中查詢到的會議年度,新增到下拉選單中
9 行,產生一個 editform(XoopsThemeForm) 物件,並把 post 結果指到 speeches.php
10 行,將 conference_select 新增到 editform 中
11 行,呼叫 $editform->display() 產生畫面

Xoops 介面輸出使用上相當的簡潔,也提供了從基本到進階的表單元件,例如,Input、TextArea(DhtmlTextArea)、Button、checkbox、file、hidden、label、password、radio(radioYN)、select(國家,群組,語言,列表,時區,主題,用戶)、datetime、editor(WYSIWYG)、elementtray、tree…等等
開發人員不用再自行產生 HTML 樣版才能開發,也不用等美工的管理介面樣版。但相對的缺點是介面單調,特殊需求不易做到。這些特殊需求的管理介面,捨棄了 Xoops 本身提供的表單元件,而選擇自行組合 HTML 來達到,但是這樣做的缺點是維護不易。

Powered by WordPress