OO.o 3 beta cannot display Thai text properly when …
Open Office.org 3 beta cannot display Thai text properly when it was zoomed in.
Open Office.org 3 beta cannot display Thai text properly when it was zoomed in.
$.fn.tinymce = function(options){
return this.each(function(){ tinyMCE.execCommand("mceAddControl", false, this.id); });
}
function initMCE()
{
tinyMCE.init({mode : "none",
theme : "advanced",
theme_advanced_toolbar_location : "top",
theme_advanced_toolbar_align : "left",
theme_advanced_statusbar_location : "bottom",
theme_advanced_resizing : true});
}
initMCE();
Reference:
เวลา save แล้วอยากให้ CakePHP ใส่ timestamp ให้ด้วยเวลาที่ row ที่ add เข้าไปถูก create เป็นครั้งแรก. ประมาณว่าต้องการเก็บว่า row นั้นสร้างมาแต่เมื่อไหร่. ผมใช้ callback function ใน model เอา เขียนสั้นๆ ก็เป็นอันใช้ได้.
class Corpus extends AppModel {
function afterSave($created) {
if($this->id && $created) {
$data = $this->read();
$data[$this->name]["created"] = date("Y-m-d H:i:s");
$this->save($data);
}
}
}
เวลาสั่ง save จาก controller, afterSave ก็จะถูกเรียกแล้วก็ไปแก้ column: created ให้เป็นเวลาปัจจุบัน. ถ้า row นั้นถูกสร้างขึ้นใหม่ (ตรวจสอบได้จาก $created).
update #1: แต่จะให้ดีใช้ beforeSave ดีกว่า. จะได้ save ครั้งเดียวไปเลย (ตาม comment ของ พี่ป๊อก) แล้วก็ดูเป็นธรรมชาติดีด้วย :-).
class Corpus extends AppModel {
function beforeSave() {
$data[$this->name]["created"] = date("Y-m-d H:i:s");
return true;
}
}
แต่ถ้า edit แต่ไม่ได้ create corpus ก็คงต้องวิธีมาตรวจสอบเอา.
update #2: ลองดูอีกนิด จริงๆ แล้วไม่ต้องใช้ before/after save เลย. CakePHP ทำ timestamp ให้เองแบบที่ต้องการเลย โดยที่ไม่ต้องทำอะไร … แป่ว
default encoding ของ MySQL เท่าที่ผมใช้ไม่ได้เป็น UTF-8. เวลาใช้ CakePHP ก็เลยต้องแก้ configuration นิดหน่อยเพื่อทำให้ ใช้ UTF-8 และ MySQL ได้เนียนๆ. ใน CakePHP รุ่นก่อนๆ หน้านี้บางทีก็ต้องไปแก้ AppModel ที่ไม่ค่อยเท่เท่าไหร่ เพราะน่าจะต้องมาแก้อีกเวลา port ไปใช้ database ตัวอื่นที่ไม่ใช่ MySQL.
ใน Cake 1.2.x สามารถตั้งค่า encoding/charset แบบรวมศูนย์ได้ใน app/config/database.php เลย. ตามตัวอย่างแบบด้านล่าง
class DATABASE_CONFIG {
var $default = array(
'driver' => 'mysql',
'persistent' => false,
'host' => 'localhost',
'login' => 'your_username',
'password' => 'your_password',
'database' => 'my2',
'prefix' => '',
'encoding' => 'UTF8' #ดูบรรทัดนี้เป็นสำคัญ
);
var $test = array(
'driver' => 'mysql',
'persistent' => false,
'host' => 'localhost',
'login' => 'user',
'password' => 'password',
'database' => 'test_database_name',
'prefix' => '',
);
}
?>
เพื่อม ‘encoding’ => ‘UTF8′ เข้าไปก็ทำให้ใช้ภาษาไทยและ UTF-8 ได้เนียนๆ แล้ว.
พอมาเปิดใน phpmyadmin ที่ตั้งค่าให้ใช้ UTF-8 และภาษาไทย
ก็แสดงผลออกมาได้ถูกต้อง.
สรุปว่าถ้าอยากใช้ UTF-8 กับ MySQL ใน CakePHP 1.2.x ก็เข้าไปตั้งค่าได้ใน app/config/database.php
อ้างอิง
ก่อนที่จะใช้ CakePHP และ Ruby on Rails ก็คิดว่าโปรแกรมพวกนี้เจ๋งจริงๆ ทำ Pluralization ให้ได้เลย ไม่ใช่แค่เติม s ให้เฉยๆ ด้วย. แต่แล้วพอเอามาทำโปรแกรมก็เจอ corpus -> corpora เข้าไป CakePHP ก็ทำ pluralization ให้ไม่ได้ซะงั้น. แต่ก็ไม่ใช่เรื่องใหญ่แต่อะไร สามารถปรับได้จากไฟล์ app/config/inflections.php
ในกรณีของผม ผมก็เพิม case นี้เข้าไปเลย
$irregularPlural = array("corpus" => "corpora");
ก็เป็นอันว่าใช้ได้ :-).
ทีแรกผมลองเอา code จาก svn trunk (svn co https://svn.cakephp.org/repo/trunk/cake/1.2.x.x cake12) ของ CakePHP มาใช้ ก็ยังไม่ได้แก้อะไร. แต่ถามไปอ่านใน trac เขาก็บอกว่าแก้แล้ว. https://trac.cakephp.org/ticket/3793 ถามต่อไปใน changeset อีก https://trac.cakephp.org/changeset/6312 ทีนี้ก็เห็นแล้วว่า code ส่วนที่แก้อยู่ใน branch … svn co https://svn.cakephp.org/repo/branches/1.2.x.x cake12. ก็เป็นอันว่าแก้ไปแล้ว.
เวลาไม่มีที่ใน harddisk ใช้แล้ว ไม่รู้ว่าจะลบหรือย้ายอะไรไปเก็บดี. บน Ubuntu 7.10 (GNOME) มีเครื่องช่วยอย่างน่ารักทีเดียว.
แสดงออกมาให้เห็นเลยว่าอะไรใช้พื้นที่เท่าไหร่ คลิกขวาแล้วย้ายลงถังขยะ หรือเปิดดูได้เลยชอบมากๆ. โปรแกรมแบบนี้บน platform อื่นก็มีเหมือนกันกระมัง แต่ชอบ Ubuntu ที่ว่าไม่ต้องตามหามาลงยาก. แบบนี้เรียก out of the box ใช่เปล่า?