diff options
Diffstat (limited to 'demos/quickstart/protected')
17 files changed, 368 insertions, 0 deletions
diff --git a/demos/quickstart/protected/pages/Fundamentals/id/Applications.page b/demos/quickstart/protected/pages/Fundamentals/id/Applications.page new file mode 100644 index 00000000..45ab2359 --- /dev/null +++ b/demos/quickstart/protected/pages/Fundamentals/id/Applications.page @@ -0,0 +1,55 @@ +<com:TContent ID="body" >
+
+<h1 id="1201">Aplikasi</h1>
+<p id="160157" class="block-content">
+Aplikasi adalah turunan dari <tt>TApplication</tt> atau asal kelasnya. Ia mengatur modul yang menyediakan fungsionalitas berbeda dan diambil bila diperlukan. Ia menyediakan layanan bagi pengguna-akhir. Ia adalah tempat utama untuk menyimpan berbagai parameter dalam sebuah aplikasi. Dalam aplikasi PRADO, turunan aplikasi adalah satu-satunya obyek yang secara global dapat diakses melalui panggilan fungsi <tt>Prado::getApplication()</tt>.
+</p>
+<p id="160158" class="block-content">
+Aplikasi dikonfigurasi melalui <a href="?page=Configurations.AppConfig">konfigurasi aplikasi</a>. Biasanya dibuat dalam naskah entri seperti berikut,
+<com:TTextHighlighter CssClass="source block-content" id="code_160071">
+require_once('/path/to/prado.php');
+$application = new TApplication;
+$application->run();
+</com:TTextHighlighter>
+Di mana metode <tt>run()</tt> memulai aplikasi untuk menangani permintaan pengguna.
+</p>
+
+<h2 id="1202">Organisasi Direktori</h2>
+<p id="160159" class="block-content">
+Aplikasi PRADO minimal berisi dua file: file entri dan file template halaman. Ini harus diatur sebagai berikut,
+<img src="<%~directory.gif%>" class="figure"/>
+</p>
+<ul id="u2" class="block-content">
+<li><tt>wwwroot</tt> - Akar dokumen Web atau sub-direktori.</li>
+<li><tt>index.php</tt> - naskah entri dari aplikasi PRADO.</li>
+<li><tt>assets</tt> - direktori yang menyimpan file pribadi yang dipublikasikan. Lihat seksi <a href="?page=Advanced.Assets">assets</a>.</li>
+<li><tt>protected</tt> - path basis aplikasi yang menyimpan data aplikasi dan file naskah pribadi. Direktori ini harus dikonfigurasi tidak bisa diakses terhadap Web-inaccessible, atau ia dapat ditempatkan di luar direktori Web.</li>
+<li><tt>runtime</tt> - path penyimpan runtime aplikasi. Direktori ini dipakai oleh PRADO untuk menyimpan informasi runtime aplikasi, seperti kondisi aplikasi, data di-cache, dll.</li>
+<li><tt>pages</tt> - path basis yang menyimpan semua halaman PRADO. Lihat seksi <a href="?page=Fundamentals.Services">layanan</a>.</li>
+<li><tt>Home.page</tt> - Halaman standar yang diberikan saat pengguna tidak secara eksplisit menetapkan halaman yang diminta. Ini adalah file template halaman. Nama file tanpa akhiran adalah nama halaman. Kelas halaman adalah <tt>TPage</tt>. Jika di sana juga aga file kelas <tt>Home.php</tt>, kelas halaman menjadi <tt>Home</tt>.</li>
+</ul>
+
+<p id="160160" class="block-content">
+Produk aplikasi PRADO biasanya membutuhkan file lebih banyak. Ia dapat menyertakan file konfigurasi aplikasi bernama <tt>application.xml</tt> di bawah path basis aplikasi <tt>protected</tt>. Halaman bisa diatur dalam direktori, beberapa diantaranya dapat berisi file konfigurasi halaman bernama <tt>config.xml</tt>. Untuk lebih jelasnya, silahkan lihat seksi <a href="?page=Configurations.Overview">konfigurasi</a>.
+</p>
+
+<h2 id="1203">Penyebaran Aplikasi</h2>
+<p id="160161" class="block-content">
+Menyebarkan aplikasi PRADO sebagian besar terkait dengan meng-copy direktori. Sebagai contoh, untuk menyebarkan aplikasi minimal di atas ke server lain, ikuti langkah-langkah berikut,
+</p>
+<ol>
+<li>Copy konten di bawah <tt>wwwroot</tt> ke direktori yang dapat diakses=Web pada server baru.</li>
+<li>Ubah file naskah entri <tt>index.php</tt> agar ia menyertakan file <tt>prado.php</tt> secara benar.</li>
+<li>Hapus semua konten di bawah direktori <tt>assets</tt> dan <tt>runtime</tt> dan pastikan kedua direktori dapat ditulis oleh proses server Web.</li>
+</ol>
+
+<h2 id="1204">Masa Hidup Aplikasi</h2>
+<p id="160162" class="block-content">
+Seperti masa hidup halaman, aplikasi juga mempunyai masa hidup. Modul aplikasi dapat meregistrasi event masa hidup. Ketika aplikasi mencapai masa hidup tertentu dan memunculkan event terkait, metode modul teregistrasi akan di panggil secara otomatis. Modul yang disertakan dalam rilis PRADO, seperti <tt>TAuthManager</tt>, menggunakan cara ini untuk melasanakan tujuannya.
+</p>
+<p id="160163" class="block-content">
+Masa hidup aplikasi dapat digambarkan sebagai berikut,
+</p>
+<img src="<%~applifecycles.gif%>" />
+
+<div class="last-modified">$Id: Applications.page 1650 2007-01-24 06:55:32Z wei $</div></com:TContent>
\ No newline at end of file diff --git a/demos/quickstart/protected/pages/Fundamentals/id/Architecture.page b/demos/quickstart/protected/pages/Fundamentals/id/Architecture.page new file mode 100644 index 00000000..9c986cf9 --- /dev/null +++ b/demos/quickstart/protected/pages/Fundamentals/id/Architecture.page @@ -0,0 +1,13 @@ +<com:TContent ID="body" >
+<h1 id="601">Arsitektur</h1>
+
+<p id="100111" class="block-content">
+PRADO adalah kerangka kerja presentasi utama, meskipun tidak dibatasi demikian. Kerangka kerja terfokus pada pembuatan pemrograman Web, yang banyak berkaitan dengan interaksi pengguna, menjadi berbasis-komponen dan kendali-event agar pengembang itu bisa lebih produktif. Susunan kelas berikut menggambarkan beberapa kelas utama yang disediakan oleh PRADO,
+</p>
+<img src="<%~classtree.gif%>" />
+
+<p id="100112" class="block-content">
+Ketika aplikasi PRADO memproses permintaan halaman, diagram obyek statisnya dapat dilihat sebagai berikut,
+</p>
+<img src="<%~objectdiagram.gif%>" />
+<div class="last-modified">$Id: Architecture.page 1650 2007-01-24 06:55:32Z wei $</div></com:TContent>
\ No newline at end of file diff --git a/demos/quickstart/protected/pages/Fundamentals/id/Components.page b/demos/quickstart/protected/pages/Fundamentals/id/Components.page new file mode 100644 index 00000000..5bf1a3f2 --- /dev/null +++ b/demos/quickstart/protected/pages/Fundamentals/id/Components.page @@ -0,0 +1,128 @@ +<com:TContent ID="body" >
+<h1 id="701">Komponen</h1>
+<p id="110113" class="block-content">
+Komponen adalah turunan dari <tt>TComponent</tt> atau kelas anaknya. Basis kelas <tt>TComponent</tt> menerapkan mekanisme properti dan event komponen.
+</p>
+
+<h2 id="702">Properti Komponen</h2>
+<p id="110114" class="block-content">
+Properti komponen dapat dilihat sebagai variabel public yang menjelaskan aspek tertentu dari komponen seperti warna latar belakang, besar font, dll. Properti didefinisikan dengan keberadaan metode penentu dan/atau pengambil dalam kelas komponen. Sebagai contoh, dalam <tt>TControl</tt>, kami mendefinisikan properti <tt>ID</tt> menggunakan metode pengambil dan penentu berikut,
+<com:TTextHighlighter CssClass="source block-content" id="code_110056">
+class TControl extends TComponent {
+ public function getID() {
+ ...
+ }
+ public function setID($value) {
+ ...
+ }
+}
+</com:TTextHighlighter>
+</p>
+<p id="110115" class="block-content">
+Untuk mendapatkan atau menetapkan properti <tt>ID</tt>, lakukan seperti berikut, seperti bekerja dengan sebuah variabel,
+<com:TTextHighlighter CssClass="source block-content" id="code_110057">
+$id = $component->ID;
+$component->ID = $id;
+</com:TTextHighlighter>
+Ini sama dengan yang berikut,
+<com:TTextHighlighter CssClass="source block-content" id="code_110058">
+$id = $component->getID();
+$component->setID( $id );
+</com:TTextHighlighter>
+</p>
+<p id="110116" class="block-content">
+Properti hanya-baca jika metode pengambil tetapi tidak untuk metode penentu. Karena nama metode PHP adalah sensitif-huruf, nama properti juga sensitif-huruf. Kelas komponen mewariskan seluruh properti kelas leluhurnya.
+</p>
+
+<h3 id="706">Subproperti</h3>
+<p id="110117" class="block-content">
+Subproperti adalah properti dari beberapa properti tipe-obyek. Sebagai contoh, <tt>TWebControl</tt> mempunyai properti <tt>Font</tt> yang merupakan tipe <tt>TFont</tt>. Kemudian properti <tt>Name</tt> dari <tt>Font</tt> dirujuk sebagai subproperti (dengan memperhatikan <tt>TWebControl</tt>).
+</p>
+<p id="110118" class="block-content">
+Untuk mendapatkan atau menentukan subproperti <tt>Name</tt>, gunakan metode beriktu,
+<com:TTextHighlighter CssClass="source block-content" id="code_110059">
+$name = $component->getSubProperty('Font.Name');
+$component->setSubProperty('Font.Name', $name);
+</com:TTextHighlighter>
+Ini sama dengan yang berikut,
+<com:TTextHighlighter CssClass="source block-content" id="code_110060">
+$name = $component->getFont()->getName();
+$component->getFont()->setName( $name );
+</com:TTextHighlighter>
+
+
+</p>
+
+<h2 id="703">Event Komponen</h2>
+<p id="110119" class="block-content">
+Component events are special properties that take method names as their values. Attaching (setting) a method to an event will hook up the method to the places at which the event is raised. Therefore, the behavior of a component can be modified in a way that may not be foreseen during the development of the component.
+</p>
+<p id="110120" class="block-content">
+A component event is defined by the existence of a method whose name starts with the word <tt>on</tt>. The event name is the method name and is thus case-insensitve. For example, in <tt>TButton</tt>, we have
+<com:TTextHighlighter CssClass="source block-content" id="code_110061">
+class TButton extends TWebControl {
+ public function onClick( $param ) {
+ ...
+ }
+}
+</com:TTextHighlighter>
+This defines an event named <tt>OnClick</tt>, and a handler can be attached to the event using one of the following ways,
+<com:TTextHighlighter CssClass="source block-content" id="code_110062">
+$button->OnClick = $callback;
+$button->OnClick->add( $callback );
+$button->OnClick[] = $callback;
+$button->attachEventHandler( 'OnClick' , $callback );
+</com:TTextHighlighter>
+where <tt>$callback</tt> refers to a valid PHP callback (e.g. a function name, a class method <tt>array($object,'method')</tt>, etc.)
+</p>
+
+<h2 id="704">Namespace</h2>
+<p id="110121" class="block-content">
+Namespace merujuk ke pengelompokan logis dari beberapa nama kelas agar dapat dibedakan dari nama kelas lain meskipun jika namanya sama. Karena PHP pada hakekatnya tidak mendukung namespace, anda tidak bisa membuat turunan dari dua kelas yang mempunyai nama sama tapi dengan definisi berbeda. Untuk membedakan dari kelas didefinisikan pengguna, semua kelas PRADO diawali dengan huruf 'T' (berarti 'Type'). Para pengguna disarankan untuk tidak menamai kelasnya seperti ini. Sebaiknya mengawali nama kelasnya dengan huruf yang lainnya.
+</p>
+<p id="110122" class="block-content">
+Namespace dalam PRADO dianggap sebagai direktori yang berisi satu atau beberapa file kelas. Sebuah kelas dapat ditetapkan tanpa dwimakna menggunakan namespace demikian diikuti oleh nama kelas. Setiap namespace dalam PRADO ditetapkan dalam format berikut,
+<div class="source">
+PathAlias.Dir1.Dir2
+</div>
+di mana <tt>PathAlias</tt> adalah alias dari beberapa direktori, sementara <tt>Dir1</tt> dan <tt>Dir2</tt> adalah subdirektori di bawah direktori itu. Kelas yang benama <tt>MyClass</tt> didefinisikan di bawah <tt>Dir2</tt> sekarang berkualifikasi lengkap sebagai <tt>PathAlias.Dir1.Dir2.MyClass</tt>.
+</p>
+<p id="110123" class="block-content">
+Untuk menggunakan namespace dalam kode, lakukan seperti berikut,
+<com:TTextHighlighter CssClass="source block-content" id="code_110063">
+Prado::using('PathAlias.Dir1.Dir2.*');
+</com:TTextHighlighter>
+menambah direktori yang dirujuk oleh <tt>PathAlias.Dir1.Dir2</tt> ke dalam path include PHP agar kelas itu didefinisikan di bawah direktori itu dapat diturunkan tanpa prefiks namespace. Anda juga dapat menyertakan definisi kelas individual dengan
+<com:TTextHighlighter CssClass="source block-content" id="code_110064">
+Prado::using('PathAlias.Dir1.Dir2.MyClass');
+</com:TTextHighlighter>
+yang akan menyertakan file kelas jika <tt>MyClass</tt> tidak didefinisikan.
+</p>
+<p id="110124" class="block-content">
+Untuk lebih jelasnya mengenai mendefinisikan alias path, lihat seksi <a href="?page=Configurations.AppConfig">konfigurasi aplikasi</a>.
+</p>
+
+<h2 id="705">Penurunan Komponen</h2>
+<p id="110125" class="block-content">
+Penurunan komponen berarti membuat turunan dari kelas komponen. Ada dua tipe penurunan komponen: penurunan statis dan dinamis. Komponen yang dibuat masing-masing disebut komponen statis dan komponen dinamis.
+</p>
+
+<h3 id="707">Penurunan Komponen Dinamis</h3>
+<p id="110126" class="block-content">
+Penurunan komponen dinamis berarti membuat turunan komponen dalam kode PHP. Itu sama dengan apa yang umum dirujuk pembuatan obyek dalam PHP. Sebuah komponen dapat dibuat secara dinamis menggunakan salah satu dari dua metode berikut dalam PHP,
+<com:TTextHighlighter CssClass="source block-content" id="code_110065">
+$component = new ComponentClassName;
+$component = Prado::createComponent('ComponentType');
+</com:TTextHighlighter>
+di mana <tt>ComponentType</tt> merujuk ke nama kelas atau nama tipe dalam format namespace (contoh <tt>System.Web.UI.TControl</tt>). Pendekatan kedua diperkenalkan guna mengimbangi kekurangan dukungan namespace dalam PHP.
+</p>
+
+<h3 id="708">Penurunan Komponen Statis</h3>
+<p id="110127" class="block-content">
+Penurunan komponen statis adalah mengenai pembuatan komponen melalui <a href="?page=Configurations.Overview">konfigurasi</a>. Pekerjaan pembuatan sebenarnya dilakukan oleh kerangka kerja PRADO. Sebagai contoh, dalam <a href="?page=Configurations.AppConfig">konfigurasi aplikasi</a>, seseorang dapat mengkonfigurasi sebuah modul untuk diambil ketika aplikasi dijalankan. Selanjutnya modul adalah komponen statis yang dibuat oleh kerangka kerja. Penurunan komponen statis lebih umum digunakan dalam <a href="?page=Configurations.Templates1">template</a>. Setiap tag komponen dalam sebuah template menetapkan komponen yang akan dibuat secara otomatis oleh kerangka kerja ketika template diambil. Sebagai contoh, dalam sebuah template halaman, tag berikut akan membawa ke pembuatan komponen <tt>TButton</tt> pada halaman,
+<com:TTextHighlighter Language="prado" CssClass="source block-content" id="code_110066">
+<com:TButton Text="Register" />
+</com:TTextHighlighter>
+</p>
+
+<div class="last-modified">$Id: Components.page 1650 2007-01-24 06:55:32Z wei $</div></com:TContent>
\ No newline at end of file diff --git a/demos/quickstart/protected/pages/Fundamentals/id/Controls.page b/demos/quickstart/protected/pages/Fundamentals/id/Controls.page new file mode 100644 index 00000000..dba49936 --- /dev/null +++ b/demos/quickstart/protected/pages/Fundamentals/id/Controls.page @@ -0,0 +1,51 @@ +<com:TContent ID="body" >
+<h1 id="801">Kontrol</h1>
+<p id="120128" class="block-content">
+Kontrol adalah turunan dari kelas <tt>TControl</tt> atau asal sub kelasnya. Kontrol adalah komponen yang didefinisikan sebagai tambahan pada antarmuka pengguna. Kelas basis <tt>TControl</tt> mendefinisikan hubungan leluhur-anak diantara kontrol yang mencerminkan pengurungan hubungan diantara elemen antarmuka pengguna.
+</p>
+
+<h2 id="802">Susunan Kontrol</h2>
+<p id="120129" class="block-content">
+Kontrol dikaitkan satu sama lain melalui hubungan leluhur-anak. Setiap kontrol leluhur dapat memiliki beberapa kontrol anak. Kontrol leluhur bertugas terhadap transisi keadaan dari kontrol anaknya. Hasil dari kontrol anak biasanya dipakai untuk mengatur penampilan kontrol leluhur. Hubungan leluhur-anak membawa kontrol bersama ke dalam susunan kontrol. Halaman ada di akar dari susunan yang penampilannya di berikan kepada pengguna-akhir.
+</p>
+<p id="120130" class="block-content">
+Hubungan leluhur-anak biasanya dilakukan oleh kerangka kerja melalui <a href="?page=Configurations.Templates1">template</a>. Dalam kode, anda dapat menetapkan kontrol secara eksplisit sebagai anak dari yang lainnya menggunakan salah satu metode berikut,
+<com:TTextHighlighter CssClass="source block-content" id="code_120067">
+$parent->Controls->add($child);
+$parent->Controls[]=$child;
+</com:TTextHighlighter>
+di mana properti <tt>Controls</tt> merujuk ke koleksi kontrol anak dari leluhur.
+</p>
+
+<h2 id="803">Identifikasi Kontrol</h2>
+<p id="120131" class="block-content">
+Setiap kontrol mempunyai properti <tt>ID</tt> yang dapat secara unik dapat mengidentifikasi dirinya sendiri diantara kontrol keluarganya. Sebagai tambahan, setiap kontrol mempunyai <tt>UniqueID</tt> dan <tt>ClientID</tt> yang dapat dipakai untuk mengidentifikasi kontrol secara global dalam susunan di mana kontrol berada. <tt>UniqueID</tt> dan <tt>ClientID</tt> sangat mirip. Pembentuk dipakai oleh kerangka kerja guna menentukan lokasi dari kontrol terkait dalam susunan, sementara yang kedua sebagian besar dipakai pada sisi klien sebagai ID tag HTML. Secara umum, anda tidak boleh bergantung pada bentuk eksplisit <tt>UniqueID</tt> atau <tt>ClientID</tt>.
+</p>
+
+<h2 id="804">Wadah Penamaan</h2>
+<p id="120132" class="block-content">
+Setiap kontrol mempunyai wadah penamaan yang mana kontrol membuat ruang nama (namespace) unik untuk membedakan antara kontrol dengan <tt>ID</tt> yang sama. Sebagai contoh, kontrol <tt>TRepeater</tt> membuat multipel item masing-masing mempunyai kontrol anak dengan <tt>ID</tt> yang sama. Untuk membedakan kontrol anak ini, setiap item bertindak sebagai wadah penamaan. Oleh karena itu, kontrol anak dapat diidentifikasi secara unik menggunakan wadah penamaan <tt>ID</tt> bersama dengan <tt>ID</tt>-nya sendiri. Seperti yang mungkin sudah anda mengerti, <tt>UniqueID</tt> dan <tt>ClientID</tt> bergantung pada wadah penamaan.
+</p>
+<p id="120133" class="block-content">
+Kontrol dapat bertindak sebagai wadah penamaan jika ia menerapkan antarmuka <tt>INamingContainer</tt>.
+</p>
+
+<h2 id="805">ViewState dan ControlState</h2>
+<p id="120134" class="block-content">
+HTTP adalah protokol tidak berkondisi, berarti ia tidak menyediakan fungsionalitas untuk mendukung interaksi berlanjut antara pengguna dan server. Setiap permintaan dianggap sebagai diskrit dan berdiri sendiri dari yang lainnya. Aplikasi Web, sering perlu untuk mengetahui apa yang telah dilakukan pengguna dalam permintaan sebelumnya. Selanjutnya orang memperkenalkan sesi guna membantu mengingat informasi kondisi seperti itu.
+</p>
+<p id="120135" class="block-content">
+PRADO meminjam konsep viewstate dan controlstate dari Microsoft ASP.NET guna menyediakan tambahan mekanisme pemrograman berkondisi. Penyimpanan nilai dalam viewstate atau controlstate mungkin tersedia untuk permintaan berikutnya jika permintaan baru dari submisi (disebut postback) ke halamanyang sama oleh pengguna yang sama. Perbedaan antara viewstate dan controlstate adalah bahwa pembentuk dapat dimatikan saat yang kemudian tidak bisa.
+</p>
+<p id="120136" class="block-content">
+Viewstate dan controlstate diterapkan dalam <tt>TControl</tt>. Biasanya dipakai untuk mendefinisikan berbagai properti kontrol. Untuk menyimpan dan mengambil nilai dari viewstate atau controlstate, gunakan metode berikut,
+<com:TTextHighlighter CssClass="source block-content" id="code_120068">
+$this->getViewState('Name',$defaultValue);
+$this->setViewState('Name',$value,$defaultValue);
+$this->getControlState('Name',$defaultValue);
+$this->setControlState('Name',$value,$defaultValue);
+</com:TTextHighlighter>
+di mana <tt>$this</tt> merujuk ke turunan kontrol, <tt>Name</tt> merujuk ke kunci yang mengidentifikasi nilai pasti, <tt>$defaultValue</tt> adalah opsional. Ketika mengambil nilai dari viewstate atau controlstate, jika kunci terkait tidak ada, nilai standar akan diberikan.
+</p>
+
+<div class="last-modified">$Id: Controls.page 1650 2007-01-24 06:55:32Z wei $</div></com:TContent>
\ No newline at end of file diff --git a/demos/quickstart/protected/pages/Fundamentals/id/Hangman.page b/demos/quickstart/protected/pages/Fundamentals/id/Hangman.page new file mode 100644 index 00000000..7a66e328 --- /dev/null +++ b/demos/quickstart/protected/pages/Fundamentals/id/Hangman.page @@ -0,0 +1,14 @@ +<com:TContent ID="body" >
+
+<h1 id="1301">Contoh: Permainan Hangman</h1>
+<p id="60043" class="block-content">
+Setelah melihat aplikasi "Hello World", sekarang kita membuat aplikasi yang lebih rumit disebut "Permainan Hangman". Dalam permainan ini, pemain diminta untuk menebak kata, satu huruf setiap waktu. Jika dia menebak huruf dengan benar, huruf akan ditampilkan dalam kata. Pemain dapat melanjutkan untuk menebak selama angka kesalahannya dalam batas yang sudah ditetapkan. Pemain memenangkan permainan jika menemukan kata dalam batas kesalahan, atau dia kalah.
+</p>
+<p id="60044" class="block-content">
+Untuk memfasilitasi pembangunan permainan ini, kami perlihatkan diagram transisi keadaan dari proses permainan sebagai berikut,
+<br /><br />
+Untuk dilanjutkan...
+</p>
+<com:RunBar PagePath="Fundamentals.Samples.Hangman.Home" />
+
+<div class="last-modified">$Id: Hangman.page 1650 2007-01-24 06:55:32Z wei $</div></com:TContent>
\ No newline at end of file diff --git a/demos/quickstart/protected/pages/Fundamentals/id/Modules.page b/demos/quickstart/protected/pages/Fundamentals/id/Modules.page new file mode 100644 index 00000000..daa4ccd8 --- /dev/null +++ b/demos/quickstart/protected/pages/Fundamentals/id/Modules.page @@ -0,0 +1,50 @@ +<com:TContent ID="body" >
+
+<h1 id="1001">Modul</h1>
+<p id="140141" class="block-content">
+Modul adalah turunan dari kelas yang menerapkan antarmuka <tt>IModule</tt>. Umumnya sebuah modul didesain untuk fungsionalitas tertentu yang dapat disertakan ke dalam aplikasi PRADO dan berbagi dengan semua komponen dalam aplikasi.
+</p>
+<p id="140142" class="block-content">
+PRADO menggunakan konfigurasi untuk menetapkan apakah mengambil sebuah modul, mengambil modul jenis apa, dan bagaimana untuk menginisialisasi modul yang diambilnya. Para pengembang dapat mengganti modul inti dengan implementasinya sendiri melalui konfigurasi aplikasi, atau mereka dapat menulis modul baru guna menyediakan fungsionalitas tambahan. Sebagai contoh, modul dapat dikembangkan untuk menyediakan logika database umum pada satu atau beberapa halaman. Untuk lebih jelasnya, silahkan lihat <a href="?page=Configurations.Overview">konfigurasi</a>.
+</p>
+<p id="140143" class="block-content">
+Ada tiga modul inti yang diambil secara standar kapan saja aplikasi dijalankan. Ketiganya adalah <a href="#request">modul permintaan</a>, <a href="#response">modul respon</a>, dan <a href="#error">modul pengendali kesalahan</a>. Sebagai tambahan, <a href="#session">modul sesi</a> diambil saat ia digunakan dalam aplikasi. PRADO menyediakan implementasi standar untuk semua modul ini. <a href="#custom">Modul kustom</a> dapat dikonfigurasi atau dikembangkan guna mengganti atau menambah modul inti ini.
+</p>
+
+<a name="request"></a>
+<h2 id="1002">Modul Permintaan</h2>
+<p id="140144" class="block-content">
+Modul permintaan menyediakan penyimpanan dan skema akses untuk permintaan pengguna yang dikirim melalui HTTP. Permintaan pengguna datang dari beberapa sumber, termasuk URL, data post, data sesi, data cookie, dll. Data ini semuanya dapat diakses melalui modul permintaan. Standarnya PRADO menggunakan <tt>THttpRequest</tt> sebagai modul permintaan. Modul permintaan dapat diakses melalui properti <tt>Request</tt> dari aplikasi dan kontrol.
+</p>
+
+<a name="response"></a>
+<h2 id="1003">Modul Respon</h2>
+<p id="140145" class="block-content">
+Modul respon menerapkan mekanisme untuk mengirimkan output ke pengguna klien. Modul respon dapat dikonfigurasi guna mengontrol bagaimana output di-cache pada sisi klien. Standarnya PRADO menggunakan <tt>THttpResponse</tt> sebagai modul respon. Modul respon dapat diakses melalui properti <tt>Response</tt> dari aplikasi dan kontrol.
+</p>
+
+<a name="session"></a>
+<h2 id="1004">Modul Sesi</h2>
+<p id="140146" class="block-content">
+Modul sesi melapisi fungsionalitas terkait dengan penanganan sesi pengguna. Modul sesi secara otomatis diambil saat aplikasi menggunakan sesi. Standarnya PRADO menggunakan <tt>THttpSession</tt> sebagai modul sesi, yang merupakan pelapis sederhana dari fungsi sesi yang disediakan oleh PHP. Modul sesi dapat diakses melalui properti <tt>Session</tt> dari aplikasi dan kontrol.
+</p>
+
+<a name="error"></a>
+<h2 id="1005">Modul Pengendali Kesalahan</h2>
+<p id="140147" class="block-content">
+Modul pengendali kesalahan dipakai untuk menangkap dan memproses semua kondisi kesalahan dalam sebuah aplikasi. PRADO menggunakan <tt>TErrorHandler</tt> sebagai modul pengendali kesalahan. Ia menangkap semua peringatan PHP, perhatian dan kekecualian, dan ditampilkan dalam bentuk yang tepat bagi pengguna-akhir. Modul pengendali kesalahan dapat diakses melalui properti <tt>ErrorHandler</tt> dari turunan aplikasi.
+</p>
+
+<a name="custom"></a>
+<h2 id="1006">Modul Kustom</h2>
+<p id="140148" class="block-content">
+PRADO dirilis dengan beberapa modul lebih disamping yang inti. Ini termasuk modul cache (<tt>TSqliteCache</tt> dan <tt>TMemCache</tt>), modul manajemen pengguna (<tt>TUserManager</tt>), modul otentikasi dan otorisasi (<tt>TAuthManager</tt>), dll.
+</p>
+<p id="140149" class="block-content">
+Ketika <tt>TPageService</tt> diminta, ia juga mengambil modul tertentu untuk layanan halaman, termasuk manajer asset (<tt>TAssetManager</tt>), manajer template (<tt>TTemplateManager</tt>), manajer tema/skin (<tt>TThemeManager</tt>).
+</p>
+<p id="140150" class="block-content">
+Modul kustom dan modul inti semuanya dapat dikonfigurasi melalui <a href="?page=Configurations.Overview">konfigurasi</a>.
+</p>
+
+<div class="last-modified">$Id: Modules.page 1650 2007-01-24 06:55:32Z wei $</div></com:TContent>
\ No newline at end of file diff --git a/demos/quickstart/protected/pages/Fundamentals/id/Pages.page b/demos/quickstart/protected/pages/Fundamentals/id/Pages.page new file mode 100644 index 00000000..9ffb7c1c --- /dev/null +++ b/demos/quickstart/protected/pages/Fundamentals/id/Pages.page @@ -0,0 +1,23 @@ +<com:TContent ID="body" >
+
+<h1 id="901">Halaman</h1>
+<p id="130137" class="block-content">
+Halaman adalah kontrol teratas yang tidak mempunyai leluhur. Presentasi halaman ditampilkan secara langsung ke pengguna-akhir. Pengguna mengakses halaman dengan mengirimkan permintaan layanan halaman.
+</p>
+<p id="130138" class="block-content">
+Setiap halaman harus mempunyai file <a href="?page=Configurations.Templates1">template</a>. Akhiran nama file harus <tt>.page</tt>. Nama file (tanpa akhiran) adalah nama halaman. PRADO akan mencoba mencari file kelas halaman di bawah direktori yang berisi file template halaman. File kelas halaman tersebut harus mempunyai nama file yang sama (diakhiri dengan <tt>.php</tt>) seperti file template. Jika file kelas tidak ditemukan, halaman akan mengambil kelas <tt>TPage</tt>.
+</p>
+
+<h2 id="902">PostBack</h2>
+<p id="130139" class="block-content">
+Submisi formulir disebut <i>postback</i> jika submisi dibuat untuk halaman yang berisi formulir. Postback dapat dianggap sebagai kondisi di sisi klien, dimunculkan oleh pengguna. PRADO akan mencoba mengidentifikasi kontrol mana pada sisi server untuk postback kondisi. Jika seseorang menentukan misalnya, <tt>TButton</tt>, kami menyebutnya pengirim event postback yang akan menterjemahkan event postback ke dalam beberapa event sisi-server tertentu (contoh event <tt>OnClick</tt> dan <tt>OnCommand</tt> untuk <tt>TButton</tt>).
+
+</p>
+
+<h2 id="903">Masa Hidup Halaman</h2>
+<p id="130140" class="block-content">
+Mengerti masa hidup halaman adalah penting untuk menguasai pemrograman PRADO. Masa hidup halaman merujuk ke transisi kondisi dari sebuah halaman saat melayani halaman ini bagi pengguna-akhir. Ini dapat digambarkan dalam grafik kondisi berikut,
+<img src="<%~lifecycles.gif %>" />
+</p>
+
+<div class="last-modified">$Id: Pages.page 1650 2007-01-24 06:55:32Z wei $</div></com:TContent>
\ No newline at end of file diff --git a/demos/quickstart/protected/pages/Fundamentals/id/Services.page b/demos/quickstart/protected/pages/Fundamentals/id/Services.page new file mode 100644 index 00000000..2d89573d --- /dev/null +++ b/demos/quickstart/protected/pages/Fundamentals/id/Services.page @@ -0,0 +1,34 @@ +<com:TContent ID="body" >
+
+<h1 id="1101">Layanan</h1>
+<p id="150151" class="block-content">
+Layanan adalah turunan dari kelas yang menerapkan antarmuka <tt>IService</tt>. Setiap jenis layanan memproses tipe permintaan tertentu pengguna. Sebagai contoh, respon layanan halaman terhadap permintaan pengguna untuk halaman PRADO.
+</p>
+<p id="150152" class="block-content">
+Sebuah layanan diidentifikasi secara unik dengan properti <tt>ID</tt>-nya. Standarnya ketika <tt>THttpRequest</tt> dipakai sebagai <a href="?page=Fundamentals.Modules#request">modul permintaan</a>, nama variabel GET digunakan untuk mengidentifikasi layanan mana yang sedang diminta oleh pengguna. Jika nama variabel GET sama dengan beberapa <tt>ID</tt> layanan, permintaan dianggap untuk layanan itu, dan nilai dari variabel GET dikirimkan sebagai parameter layanan. Untuk layanan halaman, nama variabel GET harus <tt>page</tt>. Sebagai contoh, URKL berikut meminta halaman <tt>Fundamentals.Services</tt>,
+<com:TTextHighlighter Language="none" CssClass="source block-content" id="code_150069">
+http://hostname/index.php?page=Fundamentals.Services
+</com:TTextHighlighter>
+</p>
+<p id="150153" class="block-content">
+Para pengembang dapat menerapkan layanan tambahan untuk aplikasinya. Untuk menjadikan layanan agar tersedia, konfigurasi itu dalam <a href="?page=Configurations.AppConfig">konfigurasi aplikasi</a>.
+</p>
+
+<h2 id="1102">Layanan Halaman</h2>
+<p id="150154" class="block-content">
+PRADO menerapkan <tt>TPageService</tt> untuk melayani permintaan halaman pengguna. Halam disimpan di bawah direktori yang ditetapkan oleh properti <tt>BasePath</tt> dari layanan halaman. Properti standarnya ke direktori <tt>pages</tt> di bawah path basis aplikasi. Anda boleh mengubah standar ini dengan mengkonfigurasi layanan dalam konfigurasi aplikasi.
+</p>
+<p id="150155" class="block-content">
+Halaman disusun ke dalam direktori di bawah <tt>BasePath</tt>. Dalams setiap direktori, di sana ada file konfigurasi bernama <tt>config.xml</tt>, yang berisi konfigurasi yang hanya efektif ketika halaman di bawah direktori atau sub direktori itu diminta. Untuk lebih jelasnya, lihat seksi <a href="?page=Configurations.PageConfig">konfigurasi halaman</a>.
+</p>
+<p id="150156" class="block-content">
+Parameter layanan untuk layanan halaman merujuk pada halaman yang sedang diminta. Parameter seperti <tt>Fundamentals.Services</tt> merujuk pada halaman <tt>Services</tt> di bawah direktori <tt><BasePath>/Fundamentals</tt>. Jika parameter tersebut tidak ada dalam permintaan, dianggap sebagai halaman standar bernama <tt>Home</tt>. Menggunakan <tt>THttpRequest</tt> sebagai modul permintaan (default), URL berikut masing-masing akan meminta halaman <tt>Home</tt>, <tt>About</tt> dan <tt>Register</tt>,
+<com:TTextHighlighter Language="none" CssClass="source block-content" id="code_150070">
+http://hostname/index.php
+http://hostname/index.php?page=About
+http://hostname/index.php?page=Users.Register
+</com:TTextHighlighter>
+di mana contoh pertama mengambiil keuntungan bahwa layanan halaman adalah layanan standar dan <tt>Home</tt> adalah halaman default.
+</p>
+
+<div class="last-modified">$Id: Services.page 1650 2007-01-24 06:55:32Z wei $</div></com:TContent>
\ No newline at end of file diff --git a/demos/quickstart/protected/pages/Fundamentals/id/applifecycles.gif b/demos/quickstart/protected/pages/Fundamentals/id/applifecycles.gif Binary files differnew file mode 100644 index 00000000..d5300aa6 --- /dev/null +++ b/demos/quickstart/protected/pages/Fundamentals/id/applifecycles.gif diff --git a/demos/quickstart/protected/pages/Fundamentals/id/applifecycles.vsd b/demos/quickstart/protected/pages/Fundamentals/id/applifecycles.vsd Binary files differnew file mode 100644 index 00000000..56f6602d --- /dev/null +++ b/demos/quickstart/protected/pages/Fundamentals/id/applifecycles.vsd diff --git a/demos/quickstart/protected/pages/Fundamentals/id/classtree.gif b/demos/quickstart/protected/pages/Fundamentals/id/classtree.gif Binary files differnew file mode 100644 index 00000000..b1fbf0d6 --- /dev/null +++ b/demos/quickstart/protected/pages/Fundamentals/id/classtree.gif diff --git a/demos/quickstart/protected/pages/Fundamentals/id/classtree.vsd b/demos/quickstart/protected/pages/Fundamentals/id/classtree.vsd Binary files differnew file mode 100644 index 00000000..c000d32f --- /dev/null +++ b/demos/quickstart/protected/pages/Fundamentals/id/classtree.vsd diff --git a/demos/quickstart/protected/pages/Fundamentals/id/directory.gif b/demos/quickstart/protected/pages/Fundamentals/id/directory.gif Binary files differnew file mode 100644 index 00000000..c7d5086d --- /dev/null +++ b/demos/quickstart/protected/pages/Fundamentals/id/directory.gif diff --git a/demos/quickstart/protected/pages/Fundamentals/id/lifecycles.gif b/demos/quickstart/protected/pages/Fundamentals/id/lifecycles.gif Binary files differnew file mode 100644 index 00000000..5edaff5f --- /dev/null +++ b/demos/quickstart/protected/pages/Fundamentals/id/lifecycles.gif diff --git a/demos/quickstart/protected/pages/Fundamentals/id/lifecycles.vsd b/demos/quickstart/protected/pages/Fundamentals/id/lifecycles.vsd Binary files differnew file mode 100644 index 00000000..368d0ba7 --- /dev/null +++ b/demos/quickstart/protected/pages/Fundamentals/id/lifecycles.vsd diff --git a/demos/quickstart/protected/pages/Fundamentals/id/objectdiagram.gif b/demos/quickstart/protected/pages/Fundamentals/id/objectdiagram.gif Binary files differnew file mode 100644 index 00000000..7910469c --- /dev/null +++ b/demos/quickstart/protected/pages/Fundamentals/id/objectdiagram.gif diff --git a/demos/quickstart/protected/pages/Fundamentals/id/objectdiagram.vsd b/demos/quickstart/protected/pages/Fundamentals/id/objectdiagram.vsd Binary files differnew file mode 100644 index 00000000..b2457220 --- /dev/null +++ b/demos/quickstart/protected/pages/Fundamentals/id/objectdiagram.vsd |