From 151b2f7d102a5988b63255d27c9ad78202c16355 Mon Sep 17 00:00:00 2001 From: Fabio Bas Date: Mon, 9 Nov 2015 00:33:08 +0100 Subject: Added (partial) website + misc updates for release * recreated the prado website in demos/ * updated some docs to reflect the usage of jquery; removed guide to prototype * updated composer * added task for apigen4 (theme still missing) --- .../protected/pages/Advanced/id/Scripts1.page | 86 --------- .../protected/pages/Advanced/id/Scripts2.page | 214 --------------------- 2 files changed, 300 deletions(-) delete mode 100755 demos/quickstart/protected/pages/Advanced/id/Scripts1.page delete mode 100755 demos/quickstart/protected/pages/Advanced/id/Scripts2.page (limited to 'demos/quickstart/protected/pages/Advanced/id') diff --git a/demos/quickstart/protected/pages/Advanced/id/Scripts1.page b/demos/quickstart/protected/pages/Advanced/id/Scripts1.page deleted file mode 100755 index 51535de1..00000000 --- a/demos/quickstart/protected/pages/Advanced/id/Scripts1.page +++ /dev/null @@ -1,86 +0,0 @@ - - -

Catatan Pengembang untuk prototype.js

-Bimbingan ini didasarkan pada -Catatan Pengembang untuk prototype.js oleh Sergio Pereira. - -

Apa itu?

-

-Dalam hal Anda tidak pernah menggunakannya, prototype.js adalah librari - JavaScript yang ditulis oleh Sam Stephenson. - Pemikiran yang hebat ini dan kode sesuai-standar yang ditulis dengan baik mengambil banyak beban terkait dengan pembuatan halaman web sangat interaktif dan kaya yang mengkarakterkan Web 2.0 di belakang Anda. -

- -

- Jika Anda baru saja mencoba menggunakan librari ini, Anda mungkin mencatat bahwa dokumentasi bukanlah salah satu titik yang terkuat. Seperti banyak pengembang lain sebelum saya, saya mempelajari prototype.js dengan membaca kode sumber dan melakukan percobaan denganya. Saya pikir akan baik jika mengambil catatan selama saya mempelajari dan berbagi dengan orang lain. -

-

- Setelah Anda membaca contoh dan referensi, para pengembang yang terbiasa dengan bahasa pemrograman Ruby akan mencatat kesamaan maksud antara kelas built-in Ruby dan banyak ekstensi diimplementasikan oleh librari ini. -

- - -

Menggunakan fungsi $()

-

- Fungsi $() adalah jalan pintas yang siap digunakan untuk fungsi yang semua-terlalu-sering document.getElementById() terhadap DOM. Seperti fungsi DOM, fungsi ini mengembalikan elemen yang id-nya dikirimkan sebagai sebuah argumen. -

- -

- Tidak seperti fungsi DOM, bagaimanapun juga, yang satu ini melampauinya. Anda dapat mengirimkan lebih dari satu id dan - $() akan mengembalikan obyek Array dengan semua elemen yang diminta. Contoh di bawah seharunya menggambarkan ini. -

- -<com:TClientScript UsingClientScripts="prado" /> -
-

This is a paragraph

-
- -
-

This is another paragraph

-
- - - - - -
-

- Hal baik lainnya dari fungsi ini adalah bahwa Anda bisa mengirimkan baik string id ataupun elemen obyek itu sendiri, yang menjadikan fungsi ini sangat berguna ketika membuat fungsi lain yang juga mengambil bentuk argumen. -

- -

Menggunakan fungsi $F()

- -

- Fungsi $F() adalah jalan pintas penyambutan lainnya. Ia mengembalikan nilai dari setiap kontrol input field, seperti kotak teks atau daftar drop-down. Fungsi bisa diambil sebagai argumen baik elemen id ataupun elemen obyek itu sendiri. -

- - - - - - - -
diff --git a/demos/quickstart/protected/pages/Advanced/id/Scripts2.page b/demos/quickstart/protected/pages/Advanced/id/Scripts2.page deleted file mode 100755 index 80277628..00000000 --- a/demos/quickstart/protected/pages/Advanced/id/Scripts2.page +++ /dev/null @@ -1,214 +0,0 @@ - -

Event DOM dan Javascript

- -

Penanganan event dasar

- -

Sintaks untuk bekerja dengan event terlihat seperti kode di bawah.

- - -Event.observe(element, name, observer, [useCapture]); - - -

Menganggap untuk saat ini kita ingin mengamati sebuah link yang diklik, kita dapat melakukan yang berikut:

- - -// <a id="clicker" href="http://foo.com">Click me</a> -Event.observe('clicker', 'click', function(event) -{ - alert('clicked!'); -}); - - -

Jika kita menginginkan untuk mendapatkan elemen yang memicu event, kita melakukan ini:

- - -Event.observe('clicker', 'click', function(event) -{ - alert(Event.element(event)); -}); - - -

Mengamati tekanan tombol

- -

Jika kita ingin mengamati tekanan tombol untuk seluruh dokumen, kita dapat melakukan yang berikut:

- - -Event.observe(document, 'keypress', function(event) -{ - if(Event.keyCode(event) == Event.KEY_TAB) - alert('Tab Pressed'); -}); - - -

Dan katakanlah kita ingin melacak apa yang telak diketikan:

- - -Event.observe('search', 'keypress', function(event) -{ - Element.update('search-results', $F(Event.element(event))); -}); - - -

Prototipe mendefinisikan properti di dalam obyek event untuk beberapa dari tombol yang lebih umum, maka jangan ragu-ragu untuk mencari di sekitar Prototype guna melihat yang mana saja itu.

- -

Catatan terakhir pada event tekanan tombol; Jika Anda ingin mendeteksi klik kiri, Anda bisa menggunakan Event.isLeftClick(event).

- -

Mendapatkan koordinat dari penunjuk mouse

- -

Tarik dan jatuhkan, pengukuran ulang elemen dinamis, permainan, dan lebih banyak lagi, semuanya memerlukan kemampuan untuk melacak lokasi X dan Y dari mouse. Prototipe menjadikan hal ini cukup sederhana. Kode di bawah melacak posisi X dan Y dari mouse dan memindahkan nilainya ke dalam kotak input bernama mouse.

- - -Event.observe(document, 'mousemove', function(event) -{ - $('mouse').value = "X: " + Event.pointerX(event) + - "px Y: " + Event.pointerY(event) + "px"; -}); - - -

Jika kita ingin mengamati lokasi mouse saat ia melewati elemen tertentu, cukup ubah argumen dokumen ke id atau elemen yang relevan.

- -

Menghentikan Propagasi

- -

Event.stop(event) akan menghentikan propagasi sebuah event .

- -

Event, Penyatuan, dan Obyek

- -

Sejauh ini semuanya sudah jelas, tapi sesuatu mulai menjadi sedikit lebih rumit ketika Anda perlu bekerja dengan event dalam lingkungan obyek-terorientasi. Anda harus berhadapan dengan penyatuan dan sintaks yang terlihat aneh yang memerlukan beberapa waktu bagi Anda untuk mengetahuinya.

- -

Mari kita lihat pada beberapa kode agar Anda bisa mendapatkan pengertian yang lebih baik atas apa yang sedang saya bicarakan.

- -EventDispenser = Class.create(); -EventDispenser.prototype = -{ - initialize: function(list) - { - this.list = list; - - // Amati klik pada item list kita - $$(this.list + " li").each(function(item) - { - Event.observe(item, 'click', this.showTagName.bindEvent(this)); - }.bind(this)); - - // Amati saat tombol pada keyboard ditekan. - // Dalam pengamat, kita memeriksa - // tombol tab dan memunculkan pesan jika ditekan. - Event.observe(document, 'keypress', this.onKeyPress.bindEvent(this)); - - // Amati kotak pencarian kita yang palsu. Ketika pengguna mengetik - // sesuatu ke dalam kotak, pengamat akan mengambil nilai (-1) itu - // dan memutakhirkan hasil pencarian div dengannya. - Event.observe('search', 'keypress', this.onSearch.bindEvent(this)); - - Event.observe(document, 'mousemove', this.onMouseMove.bindEvent(this)); - }, - - // Fungsi bebas untuk merespon event - showTagName: function(event) - { - alert(Event.element(event).tagName); - }, - - onKeyPress: function(event) - { - var code = event.keyCode; - if(code == Event.KEY_TAB) - alert('Tab key was pressed'); - }, - - onSearch: function(event) - { - Element.update('search-results', $F(Event.element(event))); - }, - - onMouseMove: function(event) - { - $('mouse').value = "X: " + Event.pointerX(event) + - "px Y: " + Event.pointerY(event) + "px"; - } -} - -

Wah! Apa yang terjadi di sini? Kita telah mendefinisikan kelas kustom kita EventDispenser. Kita akan menggunakan kelas ini untuk menyiapkan event untuk dokumenkita. Banyak dari kode ini ditulis ulang yang kita lihat di awal kecuali kali ini, kita bekerja dari dalam sebuah obyek.

- -

Melihat metode initialize, sebenarnya kita dapat melihat bagaimana sesuatu menjadi berbeda sekarang. Lihat kode di bawah ini:

- -// Observe clicks on our list items -$$(this.list + " li").each(function(item) -{ - Event.observe(item, 'click', this.showTagName.bindEvent(this)); -}.bind(this)); - - -

Kita mendapatkan iterator, penyatuan dan semua hal lainnya. Mari kita rinci apa yang dikerjakan kode ini.

- -

Pertama kita memburu koleksi elemen berdasarkan selektor CSS. Ini menggunakan fungsi selektor Prototipe $$(). -Setelah kita menemukan daftar item kita berhadapan dengan apa yang kita kirim ke dalam setiap iterasi di mana kita akan menambahkan pengamat kita.

- - -Event.observe(item, 'click', this.showTagName.bindEvent(this)); - - -

Sekarang, melihat kode di atas, Anda akan mencatat fungsi bindEvent. Ini mengambil metode sebelumnya showTagName dan memperlakukannya sebagai metode yang akan dipicu ketika seseorang mengklik salah satu dari item daftar kita.

- -

Anda juga akan mencatat bahwa kita mengirimkan ini sebagai argumen ke fungsi bindEvent. -Ini membolehkan kita untuk mereferensi obyek dalam konteks EventDispenser -di dalam fungsi showTagName(event) kita. Jika fungsi showTagName memerlukan parameter tambahan, Anda melampirkannya ke parameter terakhir dari bindEvent. Sebagai contoh

- -this.showTagName.bindEvent(this, param1, param2); - -//di mana fungsi showTagName didefinisikan seperti -showTime : function (event, param1, param2) { ... } - - -

Selanjutnya, Anda akan melihat bind(this) yang dilampirkan ke fungsi iterator. -Ini sama sekali tidak berkaitan dengan event, ia berada di sini untuk membolehkan saya menggunakan this di dalam iterator. Jika kita tidak menggunakan bind(this), saya tidak bisa mereferensi metode showTagName di dalam iterator.

- -

Ok, kita berlanjut untuk melihat metode kita yang sebenarnya dipanggil saat terjadi event. Karena kita sudah berhadapan dengan showTagName, mari kita lihat itu.

- - -showTagName: function(event) -{ - alert(Event.element(event).tagName); -} - - -

Seperti yang Anda lihat, fungsi ini menerima satu argumen--event. -Agar kita mendapatkan elemen yang memicu event kita perlu mengirimkan argumen ke Event.element. Sekarang kita dapat memanipulasinya kapan saja.

- -

Ini mencakup bagian yang paling membingungkan dari kode kita. Teks di atas juga relevan untuk bagian sisa dari kode kita. Jika ada sesuatu mengenai ini yang tidak Anda mengerti, jangan ragu-ragu untuk mengajukan pertanyaan dalam forum.

- -

Menghapus Pendengar Event

- -

Yang satu ini melontarkan saya dari lingkaran untuk pertama kali saya mencoba menggunakannya. -Saya mencoba sesuatu yang mirip dengan apa yang saya lakukan dalam pemanggilan Event.observe dengan kekecualian penggunaan stopObserving, tapi tidak ada yang berubah. Dengan kata lain, kode di bawah ini TIDAK bekerja.

- - -$$(this.list + " li").each(function(item) -{ - Event.stopObserving(item, 'click', this.showTagName); -}.bind(this)); - - -

Apa yang terjadi di sini? Alasan ini tidak bekerja karena tidak ada penunjuk ke pengamat. Ini berarti bahwa ketika kita mengirimkan this.showTagName dalam metode Event.observe sebelumnya, kita mengirimkannya sebagai fungsi anonim. Kita tidak bisa mereferensi fungsi anonim karena ia tidak mempunyai penunjuk.

- -

Lalu bagaimana kita yakin pekerjaan diselesaikan? Semua yang kita perlukan adalah memberikan fungsi mengamati penunjuk, atau kelompok versi bebas: Setel variabel yang mengarah ke this.showTagName. Ok, mari kita ubah kode kita sedikit.

- - -this.showTagObserver = this.showTagName.bindEvent(this); - -// Amati klik pada item list kita -$$(this.list + " li").each(function(item) -{ - Event.observe(item, 'click', this.showTagObserver); -}.bind(this)); - - -

Sekarang kita bisa menghapus pendengar event dari daftar kita seperti ini:

- -$$(this.list + " li").each(function(item) -{ - Event.stopObserving(item, 'click', this.showTagObserver); -}.bind(this)); - - -
-- cgit v1.2.3