From 30795649ead5b7212cad32f9d5a9ca6152beba27 Mon Sep 17 00:00:00 2001 From: kabayan <> Date: Wed, 29 Aug 2007 11:55:06 +0000 Subject: Indonesian Blog tutorial day 3,4, and 5 3rd tries --- .../protected/pages/Day4/id/CreateNewPost.page | 136 +++++++++++++++++++++ 1 file changed, 136 insertions(+) create mode 100644 demos/blog-tutorial/protected/pages/Day4/id/CreateNewPost.page (limited to 'demos/blog-tutorial/protected/pages/Day4/id/CreateNewPost.page') diff --git a/demos/blog-tutorial/protected/pages/Day4/id/CreateNewPost.page b/demos/blog-tutorial/protected/pages/Day4/id/CreateNewPost.page new file mode 100644 index 00000000..68dcde44 --- /dev/null +++ b/demos/blog-tutorial/protected/pages/Day4/id/CreateNewPost.page @@ -0,0 +1,136 @@ + + +

Membuat Halaman NewPost

+ +

+Halaman NewPost disediakan untuk mengotentikasi pengguna untuk pembuatan tulisan blog baru. Ia perlu untuk menampilkan formulir yang mengumpulkan informasi mengenai tulisan baru, termasuk judul tulisan dan konten badan tulisan. +

+ +

+Karena NewPost hanya bisa diakses oleh pengguna terotentikasi, kita menambahkan file konfigurasi config.xml di bawah direktori protected/pages/posts. Konfigurasi menetapkan bahwa para pengguna tidak bisa mengakses NewPost dan EditPost yang akan diperkenalkan dalam bagian berikutnya. +

+ + + + + + + + + + +

+Karena jumlah halaman kita berkembang, kita ingin memodifikasi MainLayout agar dalam footer pada halaman blog kita ada link ke berbagai halaman, termasuk homepage, halaman NewUser (hanya terlihat oleh administrator), dan halaman NewPost mendatang (hanya terlihat oleh pengguna terotentikasi). +

+ + + + + +

+Sekarang kita membuat dua file protected/pages/posts/NewPost.page dan protected/pages/posts/NewPost.php masing-masing untuk menyimpan template halaman dan kelas halaman. +

+ +

Membuat Template Halaman

+

+Template halaman NewPost berisi TTextBox untuk mengumpulkan judul tulisan dan THtmlArea untuk mengumpulkan konten tulisan. Yang terakhir adalah editor HTML WYSIWYG. Guna memastikan bahwa input pengguna sudah benar, kita mengaitkan validator dengan kontrol input ini. +

+ + +<%@ Title="My Blog - New Post" %> + +<com:TContent ID="Main"> + +

Create New Post

+ +Title: +<com:TRequiredFieldValidator + ControlToValidate="TitleEdit" + ErrorMessage="Please provide a title." + Display="Dynamic" /> +
+<com:TTextBox ID="TitleEdit" Columns="50" /> + +
+Content: +<com:TRequiredFieldValidator + ControlToValidate="ContentEdit" + ErrorMessage="Please provide content." + Display="Dynamic" /> +
+<com:THtmlArea ID="ContentEdit" /> + +
+<com:TButton Text="Create" OnClick="createButtonClicked" /> + +</com:TContent> +
+ + +

Membuat Kelas Halaman

+ +

+Dari template halaman di atas, kita melihat bahwa sebagian besar kita perlu menulis sebuah kelas halaman yang mengimplementasikan pengendali event: createButtonClicked() (ditempelkan ke tombo Create dalam event OnClick). +

+ + +class NewPost extends TPage +{ + /** + * Membuat tulisan baru jika semua input benar. + * Metode ini merespon event OnClick pada tombol "create". + * @param mixed event sender + * @param mixed event parameter + */ + public function createButtonClicked($sender,$param) + { + if($this->IsValid) // bila semua validasi sukses + { + // populasikan obyek PostRecord dengan input pengguna + $postRecord=new PostRecord; + // menggunakan SafeText datipada Text guna menghindari serangan Penaskahan Situs Silang + $postRecord->title=$this->TitleEdit->SafeText; + $postRecord->content=$this->ContentEdit->SafeText; + $postRecord->author_id=$this->User->Name; + $postRecord->create_time=time(); + $postRecord->status=0; + + // simpan ke database lewat mekanisme Rekaman Aktif + $postRecord->save(); + + // alihkan browser ke halaman tulisan yang baru dibuat + $url=$this->Service->constructUrl('posts.ReadPost',array('id'=>$postRecord->post_id)); + $this->Response->redirect($url); + } + } +} + + +

Pengujian

+

+Untuk menguji halaman NewPost, masuk lebih dulu dan klik pada link tombol New Post dalam footer pada homepage. Browser kita akan menampilkan hasil berikut dengan URL http://hostname/blog/index.php?page=NewPost. +

+ + +Ketika anda mengunjungi halaman NewPost untuk pertama kali, anda bisa melihat bahwa ia memerlukan beberapa detik sebelum halaman ditampilkan. Ini dikarenakan PRADO perlu mengurai dan mempublikasikan kode javascript dan gambar untuk kontrol THtmlArea yang dipakai dalam halaman. Ini dikerjakan sekali dan untuk semuanya. + + + +Untuk menguji fitur lembaran yang kita kembangkan untuk halaman ListPost, kita dapat membuat lima atau lebih tulisan dan melihat apa yang terjadi pada homepage. Lembar dalam ListPost menampilkan lima tulisan setiap halamannya. + + + + +
\ No newline at end of file -- cgit v1.2.3