summaryrefslogtreecommitdiff
path: root/demos/blog-tutorial/protected/pages/Day3/id/CreateAdminUser.page
diff options
context:
space:
mode:
authorkabayan <>2007-08-29 11:55:06 +0000
committerkabayan <>2007-08-29 11:55:06 +0000
commit30795649ead5b7212cad32f9d5a9ca6152beba27 (patch)
treed2cb2e60736d967d55bb7b8ef23de1149f31ae3f /demos/blog-tutorial/protected/pages/Day3/id/CreateAdminUser.page
parent91536b68a8eee2e2849949f605d3e5428f71cd9c (diff)
Indonesian Blog tutorial day 3,4, and 5 3rd tries
Diffstat (limited to 'demos/blog-tutorial/protected/pages/Day3/id/CreateAdminUser.page')
-rw-r--r--demos/blog-tutorial/protected/pages/Day3/id/CreateAdminUser.page151
1 files changed, 151 insertions, 0 deletions
diff --git a/demos/blog-tutorial/protected/pages/Day3/id/CreateAdminUser.page b/demos/blog-tutorial/protected/pages/Day3/id/CreateAdminUser.page
new file mode 100644
index 00000000..c9ee7c5a
--- /dev/null
+++ b/demos/blog-tutorial/protected/pages/Day3/id/CreateAdminUser.page
@@ -0,0 +1,151 @@
+<com:TContent ID="Main">
+
+<h1>Membuat Halaman <tt>AdminUser</tt></h1>
+
+<p>
+Halaman <tt>AdminUser</tt> menampilkan semua akun pengguna dalam sebuah daftar agar administrator dapat melakukan beberapa pekerjaan administratif. Demi kemudahan, pekerjaan administratif sistem blog kita mendukung termasuk mengedit dan menghapus akun pengguna.
+</p>
+
+<p>
+Kita akan menampilkan daftar pengguna dalam sebuah tabel. Setiap baris tabel mewakili satu akun pengguna, dan kolom berikut ditampilkan:
+</p>
+<ul>
+<li>Username - menampilkan nama pengguna. Dalam setiap sel sebuah hiperlink ditampilkan membawa ke halaman <a href="?page=Day3.CreateEditUser">EditUser</a> terkait.</li>
+<li>Email - menampilkan email.</li>
+<li>Administrator - menampilkan apakah akun pengguna adalah aturan administrator.</li>
+<li>Command - menampilkan kolom dengan tombol "Delete". Mengklik pada setiap tombol akan mengakibatkan penghapusan akun pengguna terkait.</li>
+</ul>
+
+<p>
+Kita membuat dua file <tt>protected/pages/users/AdminUser.page</tt> dan <tt>protected/pages/users/AdminUser.php</tt> masing-masing untuk menyimpan template halaman dan kelas halaman.
+</p>
+
+<h2>Membuat Template Halaman</h2>
+<p>
+Kita menggunakan <a href="http://www.pradosoft.com/demos/quickstart/?page=Controls.DataGrid">TDataGrid</a> untuk menampilkan akun pengguna. Berdasarkan pada analisis di atas, kita mengkonfigurasi empat kolom berikut:
+</p>
+<ul>
+<li><a href="http://www.pradosoft.com/docs/classdoc/THyperLinkColumn">THyperLinkColumn</a> menampilkan kolom nama pengguna. URL dibentuk berdasarkan pada ekstensi PHP yang ditetapkan dalam properti <tt>DataNavigateUrlFormatString</tt>.</li>
+<li><a href="http://www.pradosoft.com/docs/classdoc/TBoundColumn">TBoundColumn</a> menampilkan kolom email.</li>
+<li><a href="http://www.pradosoft.com/docs/classdoc/TCheckBoxColumn">TCheckBoxColumn</a> menggunakan kotak centang untuk menunjukan apakah akun pengguna adalah aturan administrator.</li>
+<li><a href="http://www.pradosoft.com/docs/classdoc/TButtonColumn">TButtonColumn</a> menampilkan kolom dengan tombol "Delete".</li>
+</ul>
+
+<p>Template halaman lengkap ditampilkan seperti berikut:</p>
+
+<com:TTextHighlighter CssClass="source" Language="prado">
+&lt;%@ Title="My Blog - Manage User Accounts" %>
+
+&lt;com:TContent ID="Main">
+
+<h1>Manage User Accounts</h1>
+
+<a href="&lt;%= $this->Service->constructUrl('users.NewUser')%>">Create New User</a>
+<br/>
+
+&lt;com:TDataGrid ID="UserGrid"
+ DataKeyField="username"
+ AutoGenerateColumns="false"
+ OnDeleteCommand="deleteButtonClicked">
+
+ &lt;com:THyperLinkColumn
+ HeaderText="Username"
+ DataTextField="username"
+ DataNavigateUrlField="username">
+ &lt;prop:DataNavigateUrlFormatString>#
+ $this->Service->constructUrl('users.EditUser',array('username'=>{0}))
+ &lt;/prop:DataNavigateUrlFormatString>
+ &lt;/com:THyperLinkColumn>
+
+ &lt;com:TBoundColumn
+ HeaderText="Email"
+ DataField="email" />
+
+ &lt;com:TCheckBoxColumn
+ HeaderText="Administrator"
+ DataField="role" />
+
+ &lt;com:TButtonColumn
+ HeaderText="Command"
+ Text="Delete"
+ ButtonType="PushButton"
+ CommandName="delete" />
+
+&lt;/com:TDataGrid>
+
+&lt;/com:TContent>
+</com:TTextHighlighter>
+
+
+<h2>Membuat Kelas Halaman</h2>
+
+<p>
+Dalam template halaman di atas, event <tt>OnDeleteCommand</tt> datagrid dengan metode <tt>deleteButtonClicked()</tt> akan kita implementasikan dalam kelas halaman. Sebagai tambahan, datagrid perlu dipopulasi dengan data akun pengguna saat halaman diinisialisasi. Oleh karena itu, kita menulis kelas halaman seperti berikut:
+</p>
+
+<com:TTextHighlighter CssClass="source" Language="php">
+class AdminUser extends TPage
+{
+ /**
+ * Mempopulai datagrid dengan daftar pengguna.
+ * Metode ini dipanggil oleh kerangka kerja saat inisialisasi halaman
+ * @param mixed event parameter
+ */
+ public function onInit($param)
+ {
+ parent::onInit($param);
+ // ambil semua informasi data akun
+ $this->UserGrid->DataSource=UserRecord::finder()->findAll();
+ // mengikat data ke komponen antarmua
+ $this->UserGrid->dataBind();
+ }
+
+ /**
+ * Menghapus rekaman pengguna yang ditetapkan.
+ * Metode ini merespon ke event OnDeleteCommand pada datagrid.
+ * @param TDataGrid pengirim event
+ * @param TDataGridCommandEventParameter parameter event
+ */
+ public function deleteButtonClicked($sender,$param)
+ {
+ // dapatkan item datagrid yang berisi tombol hapus yang diklik
+ $item=$param->Item;
+ // dapatkan kunci primer terkait ke item datagrid
+ $username=$this->UserGrid->DataKeys[$item->ItemIndex];
+ // menghapus rekaman pengguna dengan kunci primer nama pengguna
+ UserRecord::finder()->deleteByPk($username);
+ }
+}
+</com:TTextHighlighter>
+
+<p>
+Dalam kode di atas, metode <tt>deleteButtonClicked()</tt> dipanggil kapan saja tombol "Delete" diklik. untuk menentukan baris mana pada tombol yang diklik, kita memeriksa properti <tt>Item.ItemIndex</tt> pada parameter event. Untuk selanjutnya mengidentifikasi akun pengguna mana yang akan dihapus, kita mengambil nilai kunci primer (username) melalui properti <tt>DataKeys</tt> pada DataGrid.
+</p>
+
+<com:TipBox>
+Semua kontrol <a href="http://www.pradosoft.com/docs/classdoc/TDataBoundControl">data-bound</a> mempunyai pola penggunaan yang sama. Yaitu, Setel properti <tt>DataSource</tt> dengan data dan panggil metode <tt>dataBind()</tt> untuk mengikat data ke struktur internal kontrol.
+</com:TipBox>
+
+
+<h2>Menambahkan Pemeriksaan Perijinan</h2>
+<p>
+Karena <tt>AdminUser</tt> hanya bisa diakses oleh administrator, maka kita perlu menyesuaikan file konfigurasi halaman <tt>protected/pages/users/config.xml</tt>.
+</p>
+<com:TTextHighlighter CssClass="source" Language="xml">
+<?xml version="1.0" encoding="utf-8"?>
+<configuration>
+ <authorization>
+ <allow pages="NewUser,AdminUser" roles="admin" />
+ <deny users="?" />
+ </authorization>
+</configuration>
+</com:TTextHighlighter>
+
+<h2>Pengujian</h2>
+<p>
+Untuk menguji halaman <tt>AdminUser</tt>, kunjungi URL <tt>http://hostname/blog/index.php?page=users.AdminUser</tt>. Anda mungkin perlu masuk sebagai administrator lebih dahulu jika anda belum melakukannya. Kita akan melihat hasil seperti berikut.
+</p>
+
+<img src="<%~ output3.gif %>" class="output" />
+
+</com:TContent> \ No newline at end of file