Tuesday, May 7, 2013

Renungan PRU 13

Sebelum saya memulakan penulisan ini, saya terfikir samada nak tulis dalam bahasa Melayu atau bahasa english. Last-last, rasanya mungkin bahasa sama dengan nama blog ni, rojak je dua-dua.. tapi lebih kepada bahasa Melayu sebab itu golongan yang saya nak tujukan penulisan kali ini. Penulisan ini agak panjang kerana saya akan merumuskan hampir kesemua yang saya ingin luahkan berkenaan PRU 13 dan selepas ini insyaAllah saya tidak akan berkata apa-apa lagi dah mengenainya. Jadi sekiranya anda telah bosan membaca hal-hal politik dan PRU silalah berhenti sahaja di sini. Samada anda menyokong PR atau BN, we are still friends and I will not judge you for your choice.

Setelah sekian lama saya mengelakkan diri daripada memberi apa-apa komen terbuka berkenaan politik tanah air kerana saya dapati ramai orang yang sangat jumud dengan pola pemikiran mereka apabila berlaku perbincangan berkaitan dengan politik, agama, atau kaum. Dan bertambah-tambah lagi apabila ketiga-tiga perkara ini digaul-gaulkan bagaikan ramuan kek. Memang meletup-letup. Tidak perlu apa-apa fakta ataupun pertimbangan pun, ia akan terus merosot menjadi caci-mencaci dan hina-menghina. Sesuatu yang sangat tidak selesa bagi diri ini, jadi saya elakkan sejauh mungkin... namum begitu ada perkara-perkara yang terlalu besar dan terlalu kuat memberi kesan. Dan antara perkara tersebut adalah Pilihanraya Umum ke-13 yang baru je berlalu.

Bagi mereka yang masih belum jelas, saya menyokong Pakatan Rakyat. Saya tidak pernah percaya apa-apa fitnah berkenaan tingkah laku Anwar Ibrahim dan saya masih menganggap dialah sebenarnya calon terbaik sebagai perdana menteri Malaysia dalam masa terdekat ini.

Banyak perkara yang saya sayangkan tentang negara Malaysia ini, dan saya percaya bahawa kita sebagai sebuah negara sebenarnya mempunyai kebolehan dan kapasiti melebihi daripada kebanyakkan negara di dunia ini (termasuklah Singapura, Korea dan Jepun sekalipun). Saya percaya bahawa bumi bertuah Malaysia ini mempunyai rakyat-rakyat yang pandai dan kuat berusaha, dan hasil bumi yang cukup lumayan. Cukup untuk kita semua. Melebihi daripada cukup untuk kita semua. Namun, kebanyakkan daripada hasil yang lumayan ini dibolot oleh pihak-pihak tertentu sahaja dan tinggallah sedikit untuk rakyat jelata. Apabila rakyat jelata dibaling tulang dan rakus meratahnya, pihak-pihak ini perintahkan pula bahawa rakyat patut bersyukur dapat yang itu, kalau tak, tak dapat apa-apa pun. Mana-mana pihak yang cuba untuk menyatakan keadaan ini, membetulkan kezaliman ini, dilemparkan fitnah dan dipenjarakan.

Saya cukup kasihan dengan keluarga-keluarga di Malaysia, dimana kedua-dua suami dan isteri kena membanting tulang, mencari sesuap rezeki, anak terpaksa ditinggalkan di pusat jagaan kerana tidak mampu untuk menampung kos kehidupan yang terlalu tinggi sehingga tak cukup hasil daripada hanya si suami. Sedangkan negara kita kaya-raya. Saya cukup kasihan dengan pelajar-pelajar Malaysia yang belum mula bekerja lagi sudah terpaksa menanggung beban hutang. Sedangkan negara kita kaya-raya. Saya cukup kasihan dengan orang-orang asli di bumi Sarawak, yang sehingga kini masih dianggap menumpang tanah kerajaan dan langsung tertinggal dalam pembangunan negara. Sedangkan negara kita kaya-raya. Saya cukup kasihan dengan rakan-rakan yang mengadu tentang harga barang, harga tol, harga minyak, harga rumah, hutang yang kian bertambah. Sedangkan negara kita kaya-raya.
Sedangkan negara kita kaya-raya.
Sedangkan negara kita kaya-raya.

Alhamdullillah saya tidaklah tergolong dalam golongan yang miskin, saya bersyukur. Ada kawan-kawan yang pernah bertanya, "Apa yang kerajaan buat kepada kau yang kau marah sangat dengan kerajaan?". Alhamdullillah buat masa ini saya boleh katakan tidak ada apa-apa sangat yang directly kepada saya yang boleh menyebabkan saya marah sangat. Tapi suatu masa dahulu, even ayah kawan karib saya pernah ditangkap bawah ISA. Saya lihat penipuan dan penindasan di mana-mana. Penyalahgunaan kuasa dan harta rakyat yang tanpa segan silu, malah dengan penuh bongkak dan berbangga. Malah makin menjadi-jadi. Jadi datanglah PRU 13. Dan saya sangat-sangat mengharapkan semoga Allah selamatkan Malaysia daripada golongan ini dan meletakkan pemimpin-pemimpin yang dapat memberi khidmat yang sebenar kepada rakyat. Yang tidak meminta-minta untuk berterima kasih kerana dia sedari bahawa itu adalah tanggung jawabnya dan sekiranya dia leka dan buatkan kurang daripada yang terbaik, maka dia telah bersalah dan berdosa kepada rakyat.

Itulah harapan saya. Itulah doa saya. Dan bagi saya tidak cukup sekadar harap dan berdoa, perlu untuk bersama-sama berusaha membawa perubahan ini. Maka saya pun menawarkan diri sebagai PACA (Polling Agent, Counting Agent) bagi PAS di Puchong. Saya mahu menjadi sebahagian daripada perubahan ini. Ini kalilah....

Saya datang awal pukul 7 pagi lagi di pintu belakang Sek. Men. Sri Serdang di mana saya bertugas di saluran 2. Hanya dalam pukul 7.40 baru kami dibenarkan masuk. Berdebar-debar juga rasa menggalas tanggungjawab ini. Semasa kursus PACA kami diberitahu untuk memerhatikan segala ruang dan peluang dimana mungkin berlaku penyelewengan. Perhatikan muka-muka pengundi, agak-agak lebih kurang tak dengan umur mereka daripada nombor IC mereka. Perhatikan kertas-kertas undian, dimasukkan ke dalam kotak-kotak seperti sepatutnya, tidak dibawa keluar, tidak diberi lebih. Perhatikan tempat mengundi, pen disediakan, tiada alas yang mungkin menyebabkan kertas undi terkoyak. Kalau ada apa-apa syak atau ragu-ragu segera mengadu kepada Ketua Tempat Mengundi(KTM). Saya cuba laksanakan sebaik mungkin.

Alhamdullillah di tempat mengundi yang saya bertugas, semua petugas-petugas SPR (yang sebenarnya hanya cikgu-cikgu biasa di sekolah itu sahaja) tidak menimbulkan apa-apa masalah dan memberi kerjasama dengan baik. Segalanya berjalan lancar. Sampailah petang, tiba masa untuk mengira undi.

Satu persatu kertas undi ditunjukkan kepada kami (terdapat 3 PACA, saya wakil PAS, ada wakil daripada DAP dan BN). Seorang petugas membuka kertas undi, seorang yang mengumumkan siapa yang diundi dan tunjukkan kertas undian, seorang untuk masukkan ke dalam kotak BN dan seorang lagi untuk masukkan ke dalam kotak PAS (atau DAP waktu perkiraan parlimen). Perkara inipun kami lihat dengan penuh teliti kerana semasa kursus PACA diingatkan kadang-kadang secara sengaja atau tidak sengaja kertas undi dimasukkan ke dalam kotak yang salah. Dengan cara ini, cepat sahaja selesai mengira hasil undian saluran 2. Pukul 7.30 telah selesai kira kedua-dua undian dun dan parlimen. Borang 13 (jumlah kertas undi yang dikeluarkan) dan borang 14 (jumlah undian yang dimenangi calon) telah diisi dan ditandatangani oleh ketiga-tiga PACA dan KTM. Selesai sahaja perkiraan terus sahaja kami memberitahu kepada pusat kawalan masing-masing keputusan yang didapati. Dan di situ terus mereka dapat tahu berapa jumlah undian yang dimenangi. Di saluran saya terdapat lebih kurang 440 kertas undi yang dikeluarkan. Setahu saya maksimum undian di satu saluran adalah 700. So paling-paling lama pun sepatutnya by pukul 9.30 tu dah dapat tahu dah keputusannya.

Tengok-tengok by pukul 1.30 pagi pun belum ada lagi keputusan rasmi. Saya jadi sangat-sangat musykil. Saya tidak tahu apa yang berlaku selepas daripada di saluran apabila semua kertas undi dikumpulkan di pusat. Kalaupun ada pertambahan undi mungkin undi-undian yang dikirakan daripada undi-undi pos. Sebab di saluran-saluran undi dah pun isi borang 14. Dah ditandangani saksi-saksi dah. Cumanya apabila bercampur pula dari pelbagai saluran, kemudian keluar keputusan tak best bagi pihak BN, tiba masanya untuk masukkan pula undi-undi pos. Mungkin begitu kot yang berlaku. Saya tak tahu kerana saya tidak berada di situ. Setakat yang saya lihat, selain dari dakwat kekal yang tak kekal, tiada apa-apa penyelewangan yang dapat dikesan di saluran saya. Tiada nampak warga asing cuba mengundi dan sebagainya. But just because I didn't see it doesn't mean it didn't happen, it only means I didn't see it.

Pukul 1.30 pagi tu saya dah tak larat nak stay up. Tido jugak akhirnya. Bangun-bangun pagi tu, tengok-tengok BN dah dapat simple majority. Sangat sedih. Apa yang diharapkan, Malaysia yang lebih adil dan makmur untuk semua, tidak dapat melalui pilihanraya kali ini. Lain kalilah bak kata penyokong-penyokong BN. InsyaAllah lain kali.

Tetapi di sini saya ingin merumuskan beberapa perkara. Saya telah sebut secara peribadi beberapa kali kepada beberapa orang rakan-rakan saya, yang paling penting daripada pilihanraya kali ini bukanlah samada Pakatan Rakyat menang atau Anwar menjadi perdana menteri. Yang paling penting kali ini ialah rakyat mulai sedar dan lebih celik tentang politik tanah air. Rakyat perlu boleh membezakan antara kerajaan dan parti yang memerintah. Rakyat pelu sedar bahawa mereka tidaklah terikat untuk berterima kasih kepada parti yang memerintah kerana sebenarnya parti tersebut telah diberikan amanah oleh rakyat. Dan sekiranya amanah ini disalahgunakan, mereka perlu menjawab kepada rakyat dan rakyat berhak untuk mengubah parti yang memerintah. Dengan lebih 80% pemilih keluar mengundi, insyaAllah perkara ini sedikit sebanyak telah tercapai.

Semasa saya bertugas sebagai PACA, saya tidak melihat apa-apa penyelewengan yang ketara selain daripada dakwat tak kekal. Tetapi adakah ini pilihanraya yang adil? Bagi saya jauh sekali daripada adil. Even sebelum daripada diumumkan pembubaran parlimen pun, BN telah pun mengungkit-ungkit "jasa" mereka kepada rakyat yang bagi saya sebenarnya boleh dianggap sebagai berkempen dah sebenarnya. Kemudian, dibentang pula manifesto BN selama 3 jam lebih (mengikut apa yang saya dengarlah, tak larat dan tak ingin pun saya nak tengoknya) dan ditawarkan kepada Pakatan Rakyat untuk bentangkan manifesto selama 10 minit. 10 minit? Nak habis baca blog ni pun lebih 10 minit. Nak bentang dan jelaskan manifesto yang dapat meningkatkan taraf kehidupan rakyat secara menyeluruh dalam masa 10 mint? Tak mungkin. Dan lagi, ada pula saya nampak poster kempen, "Undilah Perdana Menteri" dengan ada muka Najib di situ. Mana adil buat begitu. Pertamanya adalah Najib bukannya bertanding sebagai "Perdana Menteri". Apabila parlimen telah dibubarkan, dia bukan lagi boleh dianggap sebagai "Perdana Menteri". Kedua adalah ini sekali lagi bermain dengan sentimen yang mengelirukan ramai rakyat, samada mengundi untuk parti atau mengundi untuk kerajaan. Kerajaan tak bertanding pun. Hanya parti sahaja yang bertanding. "Undilah Perdana Menteri".... Dan banyak lagi perkara-perkara yang memang jelas menyalahgunakan kedudukan sebagai kerajaan untuk berkempen untuk parti. So memang tidak adil. Saya harap kalau Pakatan Rakyat memerintah nanti, adalah orang-orang yang mencadangkan dan akhirnya meluluskan undang-undang supaya Pakatan Rakyat pun tidak boleh buat begini pula. Kalau tak rakyat saman...

Sentimen kaum? Membuak-buak. It makes me sick. Saya membesar dengan kawan-kawan dari pelbagai kaum. Saya bergaul dengan mereka to the point saya boleh makan di rumah mereka dengan yakin bahawa mereka akan paling kurang pun memberi warning sekiranya apa yang saya nak makan atau minum tu tak halal. So saya tiada ragu-ragu. Tiada rasa terasing dan sangsi bahawa mereka mempunyai agenda sendiri untuk menumpaskan Melayu atau nak buat saya tinggalkan agama saya. Never. Tengok-tengok dalam banyak bahan kempen, terutamanya online, "DAP mempunya agenda kristianisasi","DAP mahu menjatuhkan institusi Raja","PAS adalah kuda tunggangan DAP","Melayu akan terpinggir sekiranya DAP memerintah". Bagi saya jelaskan pendapat saya lebih kurang.

Pertama, adakah PAS telah meninggalkan perjuangan Islam mereka kerana "bersekongkol" dengan DAP?
Jawapan saya: Mengapa kerjasama PAS dengan DAP dilihat dengan pandangan serong sedangkan "kerjasama" UMNO dengan MIC, MCA, Gerakan dan banyak lagi tidak mengapa? Banyak kali ditimbulkan bahawa DAP menentang pelaksanaan Hudud, jadi tidak mungkin dapat bersama PAS yang mahu menegakkan Islam (jadi perlu melaksanakan Hudud). Bagi saya, jangankan DAP, ramai juga Melayu Islam sendiri yang akan menentang pelaksaan Hudud sekiranya ditanya dengan jujur. Kerana apa? Kerana mereka takutkan Hudud. Kenapa takutkan Hudud? Kerana tidak faham. Yang tahu potong tangan sahaja. Yang tahu kena rejam sahaja. So apa kena buat? Kenalah jelaskan sehingga faham. Saya yakin bahawa kebanyakkan orang non-muslim pun akan bersetuju dengan kelebihan dan kebaikan pelaksanaan Hudud sekiranya mereka faham. Jadi adakah menjadi masalah DAP menentang Hudud? Tidak menjadi masalah kerana mereka belum lagi faham. Apabila semua telah bersedia, insyaAllah pelaksanaan agama Allah yang selari dengan fitrah manusia ini tidak menjadi apa-apa masalah.

Satu lagi perkara yang sentiasa ditimbulkan adalah "mana mungkin untuk bekerjasama dengan orang kafir". Siapa pemimpin Islam yang paling agung? Rasullullah s.a.w. Apakah peristiwa yang paling penting yang akhirnya membawa kepada pembukaan Mekah dan kemenangan Islam di tanah Arab? Hijrah. Siapa yang menjadi pemandu arah Rasullullah s.a.w. ketika itu? Seorang kafir Quraish. Boleh tak bekerjasama dengan orang kafir? Boleh. So please, jangan mudah tertipu.

Kedua, masalah kristianisasi.
Jawapan saya: Masalah ini tidak bermula dengan DAP. Malah DAP menonjolkan diri sebagai sebuah parti yang sekular (ie terasing daripada agama). So apa cerita nak bawa kristianisasi pulak? Tapi anyhow, sekiranya betul pun, masalah ini tidak bermula dengan DAP. Masalah orang Islam meninggalkan agama Islam adalah masalah orang Islam sendiri. Bukan sahaja orang Islam tak akan tinggalkan Islam, malah orang non-muslim pun akan memeluk agama Islam sekiranya mereka betul-betul faham Islam. Islam is not about being part of a group of people, Islam is about submission to God. To Allah. To submit you have to understand who you are submitting to, and what it means to submit. Penyelesaiannya? Sama seperti Hudu, da'wah dan perjelaskan lagi. Beri kefahaman yang sebenarnya. InsyaAllah, bukan sahaja orang tak akan tinggalkan Islam, malah orang-orang non-muslim pun akan memeluk agama Islam.

Panjang yang amat dah blog ini. Yang pastinya perjuangan belum berakhir. Malah sekiranya hari tu Pakatan Rakyat menang pun, perjuangan ini belum berakhir. Kita sebagai Rakyat kena sentiasa memastikan bahawa mereka yang diberi tanggungjawab sebagai pemimpin dan wakil kita, akan sentiasa melaksanakan yang terbaik untuk Rakyat, tanpa meminta-minta untuk berterima kasih dan dikenang jasa. Bukan sahaja mengutamakan rakyat. Malah tiada keutamaan lain selain Rakyat.

Semoga Allah memberkati bumi bertuah Malaysia ini dan teruslah Malaysia di atas landasan sebagai negara yang adil dan makmur untuk semua rakyatnya (termasuk rakyat-rakyat yang baru dapat IC?)...

Last sekali, majulah sukan untuk negara.. :P back to normal...

Monday, April 1, 2013

Latest read "Song of Ice And Fire"

As I have not written anything for a long time, let me begin by stating the obvious. I have not written any entry for this blog for a very long time. Then some things happen which is worthwhile to blog about but I don't get round to doing it. Then suddenly here we are.... Anyhow, recently I have finished reading all 5 volumes currently available in the "Song of Ice And Fire" saga written by George R.R. Martin. For those not in the know, those are the books which the HBO hit series "Game of Thrones" is based on. And I just love the "Game of Thrones" series. It is currently just starting the third season. So here's my take on what I think of the books. First thing is, I've always hated comparing books with their movie or tv spin offs. Usually I find that the visual medium used is inadequate to really bring the whole spirit of the book to the viewer. Sometimes some important detail is missing or modified to the point of ruining the whole thing for someone who has read the book. It could just be that I've seen the "Game of Thrones" series first before I read the books, but one thing is for certain, I loved it. Both the books and the series. When I first started watching the "Game of Thrones" series, I loved it. I remember very well how clever the whole plot was and how much I supported the good guys and loathe the bad guys. I remember the surprise, delight and disgust I've felt as the story twist and turn. And when I read the books, even though I know more the less the outline of the story, I felt it all over again. It was great. Second, the first book followed very closely the plot of the first season. But by the second book, there was a lot of details changed from the book to the series. The major plot lines are still there, but getting there was a little bit more different. I haven't seen the third season yet, so I have no idea how it'll fare. But I'm betting I'm probably going to be in for a bit of surprise still. Third, the books presentation is something I have never seen yet (maybe because I don't read enough). It is mostly in a Point of View format of the major characters of the story. And the story is big enough that sometimes some character make appearances in other characters story so you get to see both sides of the story. And not only that, by book 3 and 4, there were so many main characters, that book 3 and 4 is actually in the same timeline but experienced by all the different characters. Sometimes it's confusing as heck because you've forgotten some details before, but met up with it again in the next book. I just basically bulldoze through it and towards the end I finally get to piece it all together. There's still 2 more books in the saga waiting to be released. I can't wait for it to see how it finally ends. So if you're into fantasy novels, I can't recommend this book enough. You'll be hooked for weeks.

Monday, December 10, 2012

How to time windows services using "Scheduled Tasks"

In short, you need to use the program "sc" to communicate with the services. So in a "Scheduled Task" you would put the run command as:
C:\WINDOWS\system32\cmd.exe /c sc start tomcat7
To start tomcat and of course:
C:\WINDOWS\system32\cmd.exe /c sc stop tomcat7
To stop tomcat. Fin.

Tuesday, November 27, 2012

Consumer and producer

One of the great advantage of living in the digital age is that it is much more cheaper and easier to become a producer. And by producer I mean producing any kind of content at all. Not just films but also photos, writing and others.

Almost any tom, dick and harry can pick up a computer, register himself on the internet and now he's a published writer read by hundreds or even millions or maybe nobody. Point being is that it is that much easier to put your ideas out there and effectively become a producer.

But then there's another side of the coin. All these contents have to be viewed by someone, liked by someone,  shared by someone. So now it becomes a choice for every single person,  do I want to be a consumer or producer. And most of the time the easy choice is to just be a consumer. Just spend your eyeballs time. Just browsing around, reading around, sharing around. Sometimes even when you have this great idea you think would be good to publish and share with the world,  you tend to put it off. Until finally it doesn't matter anymore, and there's an opportunity lost.

Maybe it's time for me to change.

Wednesday, November 14, 2012

Writing down my thoughts in public

Haven't written anything for a long time already. So just punctuating the silence with a burst of wacha...

Saturday, November 3, 2012

Update to "Solat Malaysia"

Alhamdullillah finally I have done it. I have finally took enough time to upgrade the "Solat Malaysia" app to save the solat schedule for a whole month from e-solat.gov.my. So now it would update to the current day schedule even though the site is currently down (which it comes down a lot, and people start blaming the app for not updating). To be fair, it could be that the app was "part" of the reason the website kept on going down considering that there was thousands of "Solat Malaysia" users at least updating their app every single day (and every single solat schedule app that uses the same update model). It kept on going down so many times that I even though about proposing to JAKIM to let me have a go at properly setting up their server to cache, balance and handle such traffic for free. But never got round to that and finally just upgraded my own software to play nice instead.

Apart from the all important downloading the whole month schedule update, the azan works properly now too. At least properly on my experia active. Before this it relied on a running service to check when it was time to sound the azan, which usually the service gets killed and never start again, causing the azan to not happen. I've finally fixed it to properly set and use an alarm manager and thus there is no background service which might be killed to rely on. Truth be told I have no idea what I was thinking early on when I used the service approach. It is quite silly.

Other things which have improved a bit (but just a bit though) is I spent a little time on streamlining the process to change area and a bit of cosmetic touch up. Finally I've actually aligned the text in the widget.

And as always, the most important part for me from "Solat Malaysia" is learning how to program for the android and it's all still available for the public at https://github.com/abdza/solatmalaysia. Some of it like I said is a little bit embarrassing (like why on earth did I use a service for the azan) but it's also encouraging that I am actually improving my android coding and understanding. Finally I can put this to rest for a while and concentrate on my other projects. Thank you all for the support you gave even when the software really sucked and even I couldn't recommend it to my friends. But now I finally can recommend it to my friends, so Shazman, if you're reading this, install it NOW... :P

Saturday, September 1, 2012

Using CTreeView with NestedSetBehavior in Yii

Getting this whole thing to work took me a few days of experimenting. Finally I've got it working. Posting it here hoping that it would save others some time and if I need it back in the future.

The Yii nested set behavior extension can be found at http://www.yiiframework.com/extension/nestedsetbehavior/.

Download the zip file and then extract it into the "app root"/protected/extensions/NestedSetBehavior folder. Make sure that the NestedSetBehavior.php can be found at "app root"/protected/extensions/NestedSetBehavior/NestedSetBehavior.php.

Then modify the model file which you want to use the behavior with. For example, I have a model Areas and the file "app root"/protected/models/Areas.php. Add to the mentioned file the following lines:
 public function behaviors()
 {
  return array(
   'nestedSetBehavior'=>array(
    'class'=>'application.extensions.NestedSetBehavior.NestedSetBehavior',
    'leftAttribute'=>'lft',
    'rightAttribute'=>'rgt',
    'levelAttribute'=>'level',
    'hasManyRoots'=>true,
    'rootAttribute'=>'root_area',
   ),
  );
 }

The table for the model has to have the lft, rgt, level, and root_area field. All the field of type integer. The hasManyRoots determine whether the behavior should support more than 1 root per table, and so if it is true, the root_area will contain the root node id.

Then you need to modify the actionCreate and the actionUpdate method of the controller to use $model->saveNode(); rather than $model->save();

And that should be it to get nested behavior working. But.... how would you display it using the CTreeView widget? And how would you update it using that?

To display the tree, in the view, it is as simple as:
$this->widget('CTreeView', array(
 'id'=>'treelink',
 'data'=>$treedata,
)); 

But to get the $treedata? I've added the following 2 function into the model file.
 
public function treechild($id)
 {
  $curnode = Areas::model()->findByPk($id);
  if($curnode){
   $childrens = $curnode->children()->findAll();
   if(sizeOf($childrens)>0){
    $out = array();
    foreach($childrens as $children){
     $currow=['id'=>$children->id,'text'=>$children->name,'children'=>$this->treechild($children->id)];
     $out[]=$currow;
    }
    return $out;
   }
   else{
    return null;
   }
  }
  return null;
 }

 public function treedata()
 {
  $roots = Areas::model()->roots()->findAll();
  $out = array();
  foreach($roots as $root){
   $currow=['id'=>$root->id,'text'=>$root->name,'children'=>$this->treechild($root->id)];
   $out[]=$currow;
  }
  return $out;
 }


The treedata function would iterate over all the root nodes in the table and the treechild function would iterate over all the child nodes so that the data would be put into a properly formatted data structure. The CTreeView require an array with at least the id field for id, and text field to be displayed in the tree.

And so the controller is as simple as:
  $this->render('tree',array(
   'dataProvider'=>$dataProvider,
   'treedata'=>Areas::model()->treedata(),
  ));


But that's only good for displaying the tree, to fully modify the tree (add new nodes and updating existing nodes), I need to add the following javascript to the view:
Yii::app()->clientScript->registerScript('clickscript',"
$('#treelink li').on('click', function(event) {
 event.stopPropagation();
 $('#create').attr('href',$.param.querystring($('#create').attr('href'),'parent_id='+$(this).attr('id')));
 $('#edit').attr('href',$.param.querystring($('#edit').attr('href'),'id='+$(this).attr('id')));
});
",CClientScript::POS_READY);


And the following menu (do note that I'm currently using the default layout which displays the menu widget):
$this->menu=array(
 array('linkOptions'=>array('id'=>'create'),'label'=>'Create Areas', 'url'=>array('create')),
 array('linkOptions'=>array('id'=>'edit'),'label'=>'Edit Area', 'url'=>array('update')),
 array('label'=>'Manage Areas', 'url'=>array('admin')),
);


And in the create view:
if(isset($parent_id)){
echo $this->renderPartial('_form', array('model'=>$model,'parent_id'=>$parent_id)); 
}

And in the _form view:
if(isset($parent_id)){
 echo CHtml::hiddenField('parent_id',$parent_id);
}


And in the actionCreate method in the controller, added after the "$model->attributes=$_POST['Areas'];" line:
   if(isset($_POST['parent_id'])){
    $parent = Areas::model()->findByPk($_POST['parent_id']);
    if($parent){
     $model->appendTo($parent);
    }
   }


And the render line would be changed to:
  $this->render('create',array(
   'model'=>$model,
   'parent_id'=>$_GET['parent_id'],
  ));


So what the whole thing actually did, was to bind the li items in the node tree to change the create and edit link when clicked. The create link will be changed so that the currently selected node id set as parent_id and the edit link is changed so that id is the currently selected node id. Once the create method received the parent_id variable, it would be passed on all the way into the form. And once saved, if the parent_id actually exists and points to a real node, the new node would be set to append to the aforementioned node. There isn't much change for the update method.

And that folks, is how you would use the CTreeView with the NestedSetBehavior.

Is Blogging No Longer a Thing?

As I embark on my new journey to learn the Rust programming language, I find myself pondering—where have all the blogs gone? In search of pr...