2013年6月22日 星期六

AmyPHP 微框架修改安裝程式列表

今天發現 AmyPHP 管理頁面的應用程式列表向右撐破了 jQuery UI tabs 的框框, 非常的不協調, 這在一般表格也會有此現象, 例如使用 Javascript 的 join() 方法將陣列 tabs 組合成陣列時, 預設是用逗號 "," 串接各元素 :

var table_names=tabs.join(); //預設以 "," 串接
alert table_names;

這樣會得到類似下列這樣毫無空隙的字串 (沒有空格) :

snowball,z0000,z0050,international,inventory,tracking,report,compound_annuity,cron,stock_settings

這個字串如果放在表格中, 就會向右撐破表格的寬度, 破壞整個頁面的規劃. 如果這字串的逗號後面有一個空格, 那就不一樣了 :

snowball, z0000, z0050, international, inventory, tracking, report, compound_annuity, cron, stock_settings

這個字串會被表格的 td 寬度限制, 到右邊界時會折到下一行顯示, 因此不會破壞頁面. 所以 join 時要用 ", " :

var table_names=tabs.join(", ");  //逗號後面加一個空格

同樣的, 在 PHP 用 join() 串接陣列元素時, 也要用這樣的方式為宜 :

$table_name=join(", ", $tabs); //逗號後面加一個空格

而 AmyPHP 需要修改的地方有兩個, 一是 apps/app_install.php 結尾處, 把 tab_names 與 table_names 之串接多加一個空格 :

/*--- 以下是系統作業, 不可修改刪除 ---*/
//更新系統 apps 資料表的 app_name='app' 欄位
$data_array["installed"]="Y";                            //已安裝 "Y"/"N"
$data_array["show_tabs"]="Y";                        //顯示頁籤 "Y"/"N"
$data_array["tab_names"]=join(", ",$tabs);      //空格是為了避免撐破表格
$data_array["table_names"]=join(", ",$tables); //空格是為了避免撐破表格
$data_array["remark"]="OK";                           //安裝結果

二是 sys.php 的 case "remove_app" 模組, 要刪除應用程式 (解除安裝) 時, 須將該應用程式所安裝的 tab 移除, 也要將相關資料表移除, 這時就要從 apps 資料表中讀出這些資料表與頁籤名稱字串, 用 explode 分拆時也要配合以逗號與空格為界 :

//分隔字元為 ", ", 其中空格是為了避免顯示時撐破表格
$tab_names=explode(", ",$RS[0]["tab_names"]); //空格
$table_names=explode(", ",$RS[0]["table_names"]);

沒有留言 :