Upgrading to CodeIgniter 2.0 (升級 CI 到 2.0 版本)

2011.02.09 Update: 由於官方推出 2.0.0 的升級方式,請參考升級版本 1.7.3 到 2.0.0
CodeIgniter
在國外文章看到 Phil Sturgeon 已在今年三月發佈了一篇如何將目前 CodeIgniter 版本升級到 2.0 開發版本,轉移的經驗會在底下做介紹,PyroCMS 是該作者產品之一,也升級到 2.0 了,大家可以參考看看。 Continue reading “Upgrading to CodeIgniter 2.0 (升級 CI 到 2.0 版本)”

利用 jQuery 動態改變網站 CSS

繼前一篇所寫的『jQuery 偵測瀏覽器版本, 作業系統(OS detection)』,當我們遇到手機上網使用者,可以透過 javascript 來判斷目前使用者瀏覽器以及 OS,iPad user agent 如下:
Mozilla/5.0 (iPad; U; CPU OS 3_2 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Version/4.0.4 Mobile/7B334b Safari/531.21.10
我們必須分析上面字串來判斷是否用手機上網,手機網頁跟PC網頁大小一定有所不同,透過底下兩個方法來改變瀏覽器的畫面
  • 自動導向手機網頁
  • 動態改變 CSS
兩個方法都不錯,如果決定使用前者,建議在 Server side 那邊做判斷,底下先列出 javascript, PHP, .htaccess 判斷檢查

The JavaScript

var isiPad = navigator.userAgent.match(/iPad/i) != null;

The PHP

$isiPad = (bool) strpos($_SERVER['HTTP_USER_AGENT'],'iPad');

The .htaccess

RewriteCond %{HTTP_USER_AGENT} ^.*iPad.*$
RewriteRule ^(.*)$ http://ipad.yourdomain.com [R=301]
如果您在前端做判斷,那就使用 jQuery 方式:
if(jQuery){
    jQuery("body").addClass("jq");
}
CSS 檔案:
.someClass{
    display:block;
}
.jq .someClass{
    display:none;
}
如果不用 jQuery 就使用底下寫法:
document.getElementsByTagName("body")[0].setAttribute("class", "js");

jQuery 偵測瀏覽器版本, 作業系統(OS detection)

update: 簡易版的偵測 iphone/ipod time: 23:32 jQuery 真是一個相當方便的 javascript framework,最近在弄嵌入式系統時候需要去偵測瀏覽器 user agent,就類似下此訊息 “Mozilla/4.0 (compatible; MSIE 4.01; Windows 95)“,原本打算直接用 C 語言內建的 getenv(“HTTP_USER_AGENT”) 來做掉,不過後來想想,直接在 UI 那邊,利用 jQuery 來偵測瀏覽器版本、系統OS,這樣就解決了,上網找到有人寫了 jQuery browser and OS detection plugin,利用底下語法就可以知道一些 user agent 裡面的資料


    
Continue reading “jQuery 偵測瀏覽器版本, 作業系統(OS detection)”

CodeIgniter 2.0 的發展以及特性改變

CodeIgniter
在今年3月11日 EllisLab 發布了一則新訊息,信件內容大致上提到,他們將會改變程式的版本控制軟體,由原本的 Subversion 轉換到 Mercurial,CodeIgniter 也選擇了網路知名版本控制 BitBucket 網站來存放 CI 的程式碼,CI 團隊目前致力於 CodeIgniter 2.0 作開發,如果要取得程式碼,可以透過這裡,利用底下指令來取得:
hg clone http://bitbucket.org/ellislab/codeigniter
這次我們來看看 CodeIgniter 2.0 跟 1.7.2 的版本差異性,雖然說這些不是官方公告的,可是也是改變蠻多的,也許有哪些沒有列到的,之後再慢慢補: 1. PHP4 正式掰掰 我想使用 CI 最方便的地方,就是支援 PHP5 & PHP4,方便使用者轉換網站到 CI 上面,現在 CI 2.0 之後將完全不支援 PHP4,一些舊有的函式會在 2.1 之後也不支援 PHP4 了,我想這樣整個 CI 的架構會縮小許多,PHP4 也太多漏洞了,這樣跟 Kohana PHP Framwork(原本從 CI branch 出來的) 一樣只會支援 PHP5 了,效能應該可以增加不少 2. Scaffolding 正式移除 Scaffolding 對於沒有後台管理的網站,臨時可以修改新增或者是刪除資料庫,不過相當危險,所以 CI 正式移除它,可以看一下中文文件3. 重新命名核心資料夾system/codeigniter/ 名稱變成 system/core/,核心程式 Router, Loader, Output 等,都可以用 application/core 之中去替換(參考) 4. system/plugins/ 正式走入歷史 其實本來就沒有必要有這資料夾,這跟 library 有衝突性的,應該說很類似差不多,我真的不知道為什麼會有此資料夾 5. 正式支援 jQuery CI 開始支援 jQuery,檔案 (system/libraries/javascript/Jquery.php) 這跟 database library 差不多 ,之後陸續更多 javascript 支援(參考) 6. 新增 Drivers Library 功能 這功能在 Kohana 這套 Framework 已經實做出來,這對於 CI 是一個新的 Library,他能擁有一個父類(parent class),可以很多子類(child classes),最好的範例就是 JavaScript library,他是一個 parent class,而 jQuery Driver 是 child class,還有其他例子,例如 Cache class 它底下就會有 Memcache, APC 等諸如此類的 Driver。 7. 新增 /third_party/ 資料夾 在 application 裡面會多出 third_party 資料夾,它會提供最基本的一些資料夾,包含 libraries, models, helpers, 等,架構如下
/system/application/third_party/foo_bar
config/
helpers/
language/
libraries/
models/
8. Cookie helper 改變system/helpers/cookie_helper.php 拉出來整合到 Input Class。(參考) 目前大致上列出上面比較重要的,其他的可以參考底下連結: CodeIgniter 2.0 and Mercurial Transition CodeIgniter 2.0 In Progress – The Critical Changes, Implications, and What You Should Know CodeIgniter 2.0: Everything you need to know