Tuesday, 11 November 2014

Login dan Manajemen User YII Framework Siap Pakai

Standard
http://creationgears.com
Berikut ini lima extension terbaik mengenai autentifikasi dan manajemen user di yii framework. Extension ini bisa anda gunakan cuma-cuma alias gratis dengan lisensi dan aturan yang tersedia.
1. YII User (Demo | Download)
Extension ini dibuat oleh mishamx pada 12 Februari 2010 mendapatkan like 262 voters, diunduh sebanyak 61.927 kali dan sudah 7 kali revisi. YII User memiliki fitur diantaranya: Login from User, Name or Email, Registration, Activation accounts (verification email, administrator or not), Recovery password (send recovery key to user email), User profile page, Manage Users, Manage Profile Fields, Profile field widget for view, edit and save data, Date widget (jQueryUI datepicker), File upload widget, Profile Relation Widget, API.

2. YII Rights (DemoDownload)
Chris83 merupakan pembuat dari yii rights ini, orang yang sudah tidak asing lagi dalam dunia pemrograman. Orang ini terkenal sebagai pembuat bootstrap. Extension ini mendapatkan like 229 voters, diunduh sebanyak 47,756 kali dan sudah mengalami 2 kali revisi. Untuk revisi selanjutnya chris mengubah nama extensionnya menjadi yii auth. Diterbitkan pada 22 Juli 2010. Memiliki fitur: User interface optimized for usability, Role, task and operation management, View displaying each role's assigned tasks and operations, Assigning authorization items to users, Sorting of authorization items by dragging and dropping, Installer for easy and quick set up, Authorization item generation, Controller filter for checking access, Support for business rules (and data), Runtime caching to increase performance, Internationalization (I18N), Cross-browser and cross-database compatibility, Easy to extend.

3. SRBAC (Demo | Download)
Extension yang dibuat oleh Spyros ini terbit pada 5 Juli 2009 mendapatkan 71 like, diunduh sebanyak 33,865 kali dan mengalami perbaikan sebanyak 3 kali. Extension SRBAC memiliki fitur diantaranya: You can select if demo data will be created in install, All assignments calls are made in ajax, You can set the name of the Authorizer authItem, You can update the names of the auth Items, Delete authItems, Ajax based web interface for administrating auth items at index.php?r=srbac/authItem/manage, View Roles / Tasks / Operations assigned to users at index.php?r=srbac/authItem/assignments, Srbac can be installed as a child module too, Custom cssFile support, Custom layout for srbac (layout must be in default application's layout folder), Add ajax indicators, Spanish translation (Ricardo Obregon), Russian translation (idle sign), Added autocomplete textbox for searching in users assignments.

4. Auth (Demo | Download)
Extension lanjutan dari yii Rights dengan pembuat yang sama yaitu Chris83 rilis pada 29 Desember 2012 mendapatkan 67 like dan diunduh sebanyak 7814 kali sudah mengalami revisi sebanyak 10 kali. Fitur utama yang terlihat dari extension ini adalah penggabungan rights dengan bootstrap terlihat sangat responsive pada tampilannya.

5. Usergroups (Demo | Download)
Extension ini dibuat oleh Nickcv pada 24 Maret 2012 mendapatkan 52 like dan telah diunduh sebanyak 12775 kali. Fitur diantaranya: groups: let's you decide what group the user has to belong to perform an action, levels: you can decide what level the user needs to perform an action, permissions: you can decide that just users with a certain permission on that controller or another can perform a certain action

Monday, 10 November 2014

Membuat User Online di YII Framework

Standard
Pada posting ini akan saya paparkan bagaimana cara membuat user online pada yii framework. Fungsi dari user online adalah untuk mengetahui berapa user yang sedang aktif pada sistem informasi yang kita buat.
Berikut langkah membuat user online di yii framework:
1. Membuat user login
Anda bisa membuat user login sendiri atau menggunakan beberapa extension yang disediakan pada laman yii framework (rights, RBAC, yii user) atau bisa langsung klik LINK.
2. Extension DbHttpSession (UNDUH)
Silahkan mengunduh extension DbHttpSession kemudian ekstrak kedalam path: protected/components pada aplikasi anda.
3. Tambahkan code berikut ini pada component dalam file config/main.php

'session' => array (
  'class' => 'application.components.DbHttpSession',
  'connectionID' => 'db',
  'sessionTableName' => 'session',
  'userTableName' => 'user'
),
4. Tambahkan query berikut kedalam database anda. Query ini akan menambahkan field user_id, last_ip, last_activity pada tabel user anda. 

ALTER TABLE user ADD user_id INT(11) NOT NULL, ADD last_ip VARCHAR(100) NOT NULL, ADD last_activity DATETIME NOT NULL
5. Tambahkan method getOnlineUsers pada model user aplikasi protected/model/user.php

public static function getOnlineUsers()
    {
        $sql = "SELECT session.user_id, user.username FROM session LEFT JOIN user ON user.id=session.user_id";
        $command = Yii::app()->db->createCommand($sql);
 
        return $command->queryAll();
    }
6. Pada protected/view/site/index.php tambahkan kode berikut

foreach (User::getOnlineUsers() as $user) {
        echo $user["username"];
    }

Monday, 14 July 2014

Set Value dari Pilihan Dialog Pada YII Framework

Standard
Pernahkan anda menjumpai permasalahan saat menginputkan data pada suatu text dengan ketentuan data itu harus benar berasal dari tabel tertentu? Kemudian dengan cara apa anda menyikapi permasalahan seperti ini? Menggunakan dropdownlist atau autocomplete? Benar, itu merupakan salah satu jalan keluar yang baik tetapi pernahkan anda berfikir apabila data dalam tabel tersebut ada ribuan? Tentu saja akan memusingkan apabila harus memilih data yang ribuan tersebut dalam suatu inputan dropdownlist.
Beberapa tutorial dalam wiki Yii Framework membuat panduan berupa select data dari kotak dialog yang didalamnya itu nanti muncul data dari tabel lain dan terdapat suatu inputan pencarian. Pada contoh berikut ini saya akan membuat tutorial dengan studi kasus aplikasi jurnal dengan data tabel master Dosen sebagai pelaku yang mengisikan data pada aplikasi jurnal tersebut. Berikut ini langkah pembuatannya:
Buatlah form yang terdiri dari textfield NIDN, Nama dan Program Studi seperti pada gambar berikut:

Kemudian buatlah tombol "ubah" untuk memunculkan data tabel dosen dalam dialog seperti pada gambar diatas.
Apabila data Dosen berasal dari tabel yang lain yaitu tabel dosen maka renderlah model tersebut. Contoh disini saya akan merender model dosen dalam action create sebagai berikut:
<?php public function actionCreate()
 {
  $model=new Jurnal;
  $model2=new Dosen('search');
  $model2->unsetAttributes();
  if(isset($_GET['Dosen']))
   $model2->attributes=$_GET['Dosen'];
  if(isset($_POST['Jurnal']))
  {
   $model->attributes=$_POST['Jurnal'];
   $model->save();
  }

  $this->render('create',array(
   'model'=>$model,
   'model2'=>$model2,
  ));
 }
?>
Kemudian pada file protected/view/jurnal/_form.php buatlah form dialog yang berasal dari model dosen sebagai berikut:
<?php 
    $this->beginWidget('zii.widgets.jui.CJuiDialog',array(
 //Nama selector/id
    'id'=>'mydialog',
    // additional javascript options for the dialog plugin
    'options'=>array(
        'title'=>'Klik tanda <code>+</code> untuk memilih NIDN!',
        'autoOpen'=>false,
  //Fokus atau modal diaktifkan
  'modal' => true,
     'show'=>array(
       'effect'=>'blind',
       'duration'=>1000,
       ),
     'hide'=>array(
       'effect'=>'explode',
       'duration'=>500,
     ),
  'width' => 640, 
  'height' => 480
    ),
));?>
<?php $this->widget('bootstrap.widgets.TbGridView',array(
 'id'=>'dosen-grid',
 'dataProvider'=>$model2->search(),
 'type'=>'striped bordered condensed',
 'filter'=>$model2,
 'columns'=>array(
  array(
   'name'=>'nidn',
   'filter'=> CHtml::activeTextField($model2, 'nidn', array('placeholder'=>'Cari NIDN dosen')),
  ),
  array(
   'name'=>'nama',
   'filter'=> CHtml::activeTextField($model2, 'nama', array('placeholder'=>'Cari nama dosen')),
  ),
  array(
          'name'=>'program_studi',
          'type'=>'raw',
    'filter'=>CHtml::listData(Dosen::model()->findAll(array(
    'distinct' => true,
    'order' => 'program_studi ASC'
   )), 'program_studi', 'program_studi'),
        ),
  array(
    'header'=>'PILIH',
    'type'=>'raw',
    'value'=>'CHtml::Button(
          "+"
          , array(
    "class" => "btn submit"
          , "id" => "get_link"
          , "onClick" => "$(\"#mydialog\").dialog(\"close\");$(\"#Jurnal_nidn \").val(\"". $data->nidn."\");
    $(\"#Dosen_nama \").val(\"". $data->nama."\");
    $(\"#Dosen_program_studi \").val(\"". $data->program_studi."\");
    "))',
  ),
 ),
)); ?>
<?php $this->endWidget('zii.widgets.jui.CJuiDialog'); ?>
Pada source code diatas merupakan code untuk membuat pilihan dialog data dari dosen kemudian apabila user sudah memilih salah satu data maka otomatis langsung mengset textfield NIDN, Nama dan Program Studi seperti pada gambar berikut ini:
Setelah button [+] di pilih maka akan menset textfield sebagai berikut ini:
Pada textfield NIDN terdapat button "ubah" source codenya sebagai berikut:
<?php echo $form->textFieldRow($model, 'nidn', array('disabled'=>true, 'class'=>'span2', 'hint' => '<i class="text-info" id="nidn">Klik <a href="#" onclick=$("#mydialog").dialog("open"); return false;><code>ubah</code></a> untuk memilih NIDN.</i>')); ?>
Pada textfield NIDN dipasang action onclick bernama #mydialog untuk menampilkan dialog tersebut.

Apabila muncul pesan error "Undefined variable: model2" maka definisikan model2 dalam file create.php di folder protected/view/jurnal/create.php

Pada contoh ini menggunakan struktur tabel sebagai berikut:

Live Demo

Pastikan anda menggunakan extension bootstrap atau booster.

Copyright © AIMAGU. Jasa Pembuatan Website. All Rights Reserved
Design by Automattic | Blogger Theme by NewBloggerThemes | Official: www.aimagu.com