Content you want the user to see goes here.

Rabu, 22 Oktober 2014

Hallo semua, kali ini mpu-nya mau share lagi nih
kali ini tentang CSS dan JQuery untuk meng-handle screen orientasi untuk tampilan web menggunakan JQuery.

$(document).ready(function(){
   $('body').append('<div id="screencss"></div>');
   adjustCSS();
   $(window).resize(function(){ adjustCSS() });
})
function adjustCSS(){
   var pageWidth = $(window).width();
   var sizeSelected = "css/blue-800.css";
   if (pageWidth > 900) { sizeSelected = "css/blue-1024.css"; }
   if (pageWidth > 1010) { sizeSelected = "css/blue-1280.css"; }
   if (pageWidth > 1420) { sizeSelected = "css/blue-1600.css"; }
   $("#screencss").html('');
}


Referensinya dari sini
Silahkan dicoba ^_^

Senin, 20 Oktober 2014

Hallo semua, mpu-nya mau share file .htaccess yang biasa mpu-nya pake untuk Framework Codeigniter

DirectoryIndex index.php
RewriteEngine on
RewriteCond $1 !^(index\.php|images|css|js|robots\.txt|favicon\.ico)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ ./index.php/$1 [L,QSA]

Silahkan dicoba ^_^

Rabu, 08 Oktober 2014

Hallo semua, mpu-nya mau me-review android lokal lagi nih keluaran Evercoss seri A7E
berikut adalah review-nya



Spesifikasi

Prosesor : MTK MT8382 32bit Quad Core 1.3 GHz
Display : GPU Mali-400 MP, OpenGL ES 2.0, 240 dpi, 4.0", 480 x 800, TFT Capacitive Touchscreen, 16M Colors
Dimension : 126mm x 62.7mm x 9.1mm
Android : Android 4.4.2 Kitkat
RAM : 457MB aka 512Mb
Kamera : Rear 8.3 Mega Pixel (3840x2160), Front 2.0 Mega Pixel (1840x1104)
Video : Resolution max (1920x1088)
Storage : Internal ROM 4GB shared System Storage 1.52GB, Slot SD Card
Network : Dual Sim GSM-GSM, Slot 1(HSPA with Micro SimCard) and Slot 2(GPRS/Edge with Nano SimCard)
Featured : Bluetooth, GPS (Direction Sensor, Acceleration Sensor, Light Sensor, E-Compass, Proximity Sensor)
Battery : 1650 mAh

Hasil tes menggunakan Antutu Benchmark v5.1


Kelebihan
  • Dari segi kecepatan gadget ini bisa di bilang mantab lah, karena dukungan processor quad core untuk kelas Entry Level sih ^_^
  • Kualitas kamera dan video menurut mpu-nya ajib banget dah untuk gadget di bawah 1jt, kualitas kamera bening dan pencahayaan dari flashnya gak kalah kayak gadget merek ternama, untuk kualitas video recorder-nya ajib banget dan mulus gak rugi beli gadget ini ^_^

    Hasil Jepretan Kamera Belakang


    Hasil Jepretan Kamera Depan

Kekurangan
  • Untuk gadget spesifikasi quad core dibekali RAM 512Mb sangatlah kurang, karena gak bisa jalanin game-game HD dan untuk multitaskingnya juga kurang mantab
  • Dari segi daya, ini yang sangat tidak puas karena untuk sekelas prosessor quad core daya segitu membutuhkan power bank bila pergi jauh, untuk sosial media saja bisa 4x isi dan untuk maen game-game standar bisa berulang kali O_o

Sekian hasil review dari mpu-nya, jika review yang mpu-nya sajikan kurang akurat atau detail mpu-nya mohon maaf ^_^

Kamis, 11 September 2014

Assalamu'alaikum Wr Wb dan salam sejahtera

Long time mpu-nya blog gak nulis dan sekarang hati terketuk kembali ingin membuat coretan yang mungkin bisa bermanfaat bagi mpu-nya blog khususnya dan untuk anak-anak bangsa umumnya ^_^

kali ini mpu-nya blog mau corat coret query SQL dan yang mpu-nya blog lagi pegang sekarang adalah SQL Server 2012, ini query untuk catatan aja sih biar gak lupa sebab manusia sarangnya lupa ^_^

Langsung aja Query nya



Menampilkan Minggu dalam angka dari tanggal H-1
Select Datepart(Week, DATEADD(Month, -1, getdate()))

Menampilkan bulan dalam angka dari tanggal H-1
Select Datepart(Month, DATEADD(Month, -1, getdate()))

Menampilkan tanggal awal minggu di current date (di mulai hari senin)
Select CONVERT(varchar,dateadd(week,datediff(week,0,getdate()),0),112)

Menampilkan tanggal akhir minggu di current date (di mulai hari senin)
Select CONVERT(varchar,dateadd(week,datediff(week,0,getdate()),6),112)

Menampilkan tanggal awal bulan di current bulan (hanya tanggal)
Select CONVERT(varchar,dateadd(d,-(day(getdate()-1)),getdate()),112)

Menampilkan tanggal awal bulan di current bulan (tanggal dan waktu)
Select Dateadd(mm, Datediff(mm, 0, getdate()), 0)

Menampilkan tanggal akhir bulan di current bulan (hanya tanggal)
Select CONVERT(varchar,dateadd(d,-(day(dateadd(m,1,getdate()))),dateadd(m,1,getdate())),112)

Menampilkan tanggal akhir bulan di current bulan (tanggal dan waktu)
Select Dateadd(mm, Datediff(mm, -1, getdate()), -1)

Menampilkan tanggal awal bulan di current quarter
Select Dateadd(qq, Datediff(qq,0, getdate())-1, 0)

Menampilkan tanggal doang
Select Cast(convert(varchar(10),GETDATE(),112) as date)

Konfersi dari week ke date
Declare @wk int  set @wk = 2
Declare @yr int  set @yr = 2014
Select dateadd(week,@wk,dateadd(year, @yr-1900,0))-4 - Datepart(dw,dateadd(week,@wk,dateadd(year,@yr-1900,0))-4) + 1

Konfersi dari month ke string date
Declare @mt int set @mt = 6
Select DateName(month, DateAdd(month, @mt, 0)-1) as [Month String]

Cek jumlah data di tanggal itu berdasarkan jam
Select count(convert(date, [nama_kolom_tanggal])) as jum_date
from [nama_db].[schema].[nama_tabel]
where [nama_kolom_tanggal] >= @tanggal_awal and [nama_kolom_tanggal] <= @tanggal_akhir
group by convert(date, [nama_kolom_tanggal])
order by convert(date, [nama_kolom_tanggal])

Set Limit Data
Select * 
from [nama_db].[schema].[nama_tabel]
offset 0 rows fetch next 6 rows only

Update Query Berlanjut... ^_^
Hallo, kali mpu-nya mau me-review seakurat mungkin tentang android keluaran lokal, yaitu brand MITO, MITO Fantasy A77 Selfie dengan fitur kamera putar untuk penggila photo selfie ^_^

Mito_Fantasy_A77 photo mito_a77_image_zps87d3e438.jpg

Specification :

Processor : Mediatek MT6572 Dual-Core 1.3 Ghz Cortex A7
Display : Mali-400 MP Res.(480x854) OpenGL ES 2.0, 4.5 inchi, 240dpi, IPS (in plane switching), Multitouch
Dimension : 141 x 67.5 x 9.5 mm
Android : Jelly Bean (4.2.2)
RAM : 972 MB aka 1GB
Camera : Rear Camera 8 Mega Pixel (3264x2448), Autofocus, Led Flash
Video : Recorder Res. max (1280x720) 3gp Format
Support MP4, WMV, 3gp
Storage : Internal ROM 3.69GB shared System 1.27GB, External microSD upto 32Gb
Network : 2G Network Dual GSM 900/1800 MHz, 3G Network WCDMA 2100 MHz (Slot 1 - HSPA with Micro SimCard and Slot 2 - GPRS/Edge with Nano SimCard)
Featured : Bluetooth, USB Port, Wifi 802.11 b/g/n, GPS
Battery : 1500 mAh

Hasil tes menggunakan Antutu Benchmark v5.1


Kelebihan
Dengan kemampuan processor yang sudah Dual Core dan Ram yang berkapasitas 1GB, maka Mito A77 sudah mampu menjalankan multitasking dengan baik hanya sekala selain menjalankan game

Kekurangan

  • Kualitas photo yang kurang jernih untuk ukuran Kamera 8 Mega pixel dibanding Brand ternama lainnya. (Ya iyalah harga kisaran 1juta mau kualitas bagus ^_^)
  • Menjalankan game2 berat masih kurang smooth. (Plisss deh masih dual core itu ^_^)
  • Lifetime-nya kurang memuaskan, sehari bisa 2x sampe 3x isi ulang battery padahal cuma buat sosial media sama browsing

Sekian Review-nya semoga bermanfaat dan kalo ada salah penulisan Mohon Maaf yah! ^_^v

Rabu, 30 Januari 2013

Pemanggilan Stored Procedure di MySQL menggunakan PHP


Hallo... lama gak nulis jadi kangen nih... mumpung ada materi buat di tulis dan semangat akhir bulan, jadi mpu-nya blog nulis lagi ah... hehehe

Ok! sekarang yang akan di bahas dalam tulisan kali ini mengenai Stored Procedure(SP) dalam MySQL dan Pemanggilan dengan PHP. Berhubung dari beberapa sumber-sumber yang mpu-nya blog sudah cari, tapi masih sedikit ada beberapa yang error pas mpu-nya blog coba jalankan, jadi ini oprekan sendiri dari mpu-nya blog, jikalau sudah ada atau sama konsepnya tolong jangan di TuskBol yah??? (Tusuk Pake Bola) hehehe

Stored Procedure merupakan merupakan kumpulan perintah dari suatu database program(Seperti MySQL, Oracle, SQL Server dll) atau Transact-SQL yang di tujukan untuk memudahkan programmer database dalam melakukan suatu aksi tanpa harus melihat kembali susunan data yang ada atau bisa juga membantu programmer aplikasi untuk memanggil isi data yang di butuhkan tanpa harus di ketahui programmer aplikasi jika data tersebut bersifat penting. Dan mpu-nya blog kali ini akan membahas Stored Procedure mengunakan MySQL. Berikut penulisan Stored Procedure :

--------------------------------------------------------------------------------------
DELIMITER //
 

DROP PROCEDURE IF EXISTS nama_prosedure//

CREATE PROCEDURE
nama_prosedure(OUT var_sp varchar(100), IN id int)
BEGIN
      SELECT nama_kolom INTO
var_sp FROM nama_tabel WHERE id_tabel= id;
END//

DELIMITER ;
--------------------------------------------------------------------------------------

dan untuk pemanggilan fungsinya :
CALL nama_prosedure(@new_var,111);

lalu untuk menampilkan data dari prosedure yang di panggil menggunakan :
SELECT @desy;

Dari contoh diatas mpu-nya blog akan jelaskan beberapa diantaranya, pada sp DELIMITER merupakan pembatas sebelum programmer membuat procedure, tandanya bisa berupa // atau $$.

Kemudian mpu-nya nulis DROP sp itu gunanya untuk menghapus terlebih dahulu jika ada nama prosedure yang akan di buat, kalo gak mau di hapus ilangin aja satu baris kodenya.
Kemudian ada OUT dan IN, itu gunanya untuk nentuin mana nilai yang di keluarkan dan mana nilai yang akan di inputkan ke dalam baris program MySQL. var_sp itu nama variabel keluaran dan id itu nama variabel input, disini kasusnya mpu-nya blog ingin mencari data berdasarkan id yang ada.
Pada baris penulisan nama_kolom INTO var_sp itu fungsinya dari kolom yang akan di tampilkan akan di masukkan ke dalam variabel keluaran pada OUT var_sp. Setelah itu, panggil prosedur yang sudah di buat, kemudian ada penulisan @new_var yang mana bisa di namain terserah programmer asal nanti pas perintah select sama dengan variabel @new_var, oya penulisannya harus diawali tanda @ karena sudah aturan MySQL.

Note : untuk menjalankan script diatas itu terserah programmer ingin menggunakan tools MySQL atau langsung dari Command Prompt, secara garis besar seperti itu penulisannya hehehe

Barusan adalah cara pembuatan Stored Procedure didalam MySQL, sekarang kita panggil Stored Procedure menggunakan PHP.

-----------------------------------------------------------------------------------
$con = mysql_connect("host","user","pass",false,65536);
if (!$con){
die('Could not connect: ' . mysql_error());
}
$db = mysql_select_db("database", $con);
            

$res = mysql_query('call GetNews(@new_var,111)');
$res = mysql_query('select @new_var');
while($row = mysql_fetch_row($res)){     
     echo "Isi Kolom : ".$row[0];
}
-----------------------------------------------------------------------------------

tambahkan false,65536 pada koneksi mysql, dan pada baris echo ada $row[0] array itu bisa di lihat dengan perintah print_r($row).

Simpelkan! kalo kodingan mpu-nya blog terkesan meniru atau jeplak tolong di maafkan, tapi itu 100% usaha mpu-nya blogger yah meski ada acuan situsnya sih...

http://blogs.yarsi.ac.id/2012/08/25/store-procedure-pada-mysql-1/
http://www.joeyrivera.com/2009/using-mysql-stored-procedures-with-php-mysqlmysqlipdo/

Good Work

 

Selasa, 02 Oktober 2012

CSS Membuat Tampilan Menjadi Sejajar atau Sebaris

Sore hari enakan minum kupi cappucino sembari bagi-bagi ilmu ah...
kali ini mpu-nya blog mau berbagi sedikit ilmu tentang CSS hehehe...

simple sih cuma bagi yang belum tau, pasti nyarinya kemana-mana, ini berdasarkan oprekan mpu-nya blog lho... bukan kodingan hasil jiplak dan terbukti fix 100% di css 3 keatas tapi menggunakan <DIV> hehehe...

Langsung ke Kodingannya...

1. buat file css atau css dalam html
-----------------------------------------------------
<style>
.kolom-sejajar{
     float: right;  //sesuaikan kondisi urutan kiri atau kanan terlebih dahulu
}

#kolom-kiri{
     float: left;
}
#kolom-kanan{
     float: right;
}
</style>

2. buat file html
-----------------------------------------------------
<html>
<head></head>
<body>
<div class="kolom-sejajar">
      <div id="kolom-kiri">
           TES <br> TES <br> Kiri
      </div>
      <div id="kolom-kanan">
           TES <br> TES <br> Kanan
      </div>
</div>
</body>
</html>

3. Testing

Silahkan di coba... hehehe...

Selasa, 25 September 2012

Assalamu'alaikum wr wb dan salam sejahtera bagi kita semua ^_^
kali ini mpu-nya blog akan berbagi lagi masih dengan pemrograman Java tapi kini mulai berbelok ke arah pemutaran video (video player)

mungkin kalian sering berkunjung ke situs pemutar video ternama yaitu youtube, di youtube ada banyak playlist video yang tertera di sebelah kanan ampe ke bawah-bawah dan juga playlist yang di taruh di player video-nya, nah kali ini mpu-nya blog mau berbagi ilmu bagaimana cara membuat playlist video di dalam player-nya.

mungkin berbeda dengan yang ada di youtube tapi semoga bisa bermanfaat :D

ok langsung saja...

1. buat file menggunakan html atau pemrograman berbasis server, terserah codinger :D
    mpu-nya blog membuatnya menggunakan PHP, cuma extensinya aja >.<

2. buat file index.php
    -----------------------------------------------------------------------
    <html>
    <head>
    <title>:: Video Test ::</title>
    <script type="text/javascript" src="mediaplayer/jwplayer.js"></script>
    </head>
    <body>
    ......
    </body>
    </html>
    ------------------------------------------------------------------------

3. download file jwplayer.js di www.longtailvideo.com 

4. kemudian inputkan file antara <body>...</body>
    ------------------------------------------------------------------------

   <html>
   <head>
   <title>:: Video Test ::</title>
   <script type="text/javascript" src="mediaplayer/jwplayer.js"></script>
   </head>
   <body bgcolor="green">
   <div id="container">Loading the player...</div>
   <script type="text/javascript">
      jwplayer("container").setup({
modes: [
 { type: "html5" },
 { type: "flash", src: "mediaplayer/player.swf" }
],
playlist: [
{
levels: [{file: "File/miss.mp4"}],
image: "Pic/miss.jpg",
title: "Miss Hit"
},
{
levels: [{file: "File/rejoice.mp4"}],
image: "Pic/rejoice.jpg",
title: "Rejoice Shampoo"
},
{
levels: [{file: "File/incident_in_the_plane.mp4"}],
image: "Pic/tragedy.jpg",
title: "Narsis Di Pesawat"
}
],
        'flashplayer': 'mediaplayer/player.swf',
'id': 'playerID',
controlbar: 'bottom',
stretching: 'fill',
        volume: 60,
        width: 480,
height: 310,
plugins: {
'flow': { coverwidth:180, onpaused:'show' }
},
      });
  </script> 
  </body>
  </html>
-----------------------------------------------------------------------

5. Testing... Simple untuk buatnya tapi karena mpu-nya masih kekurangan beberapa faktor dalam menulis dan memberikan demo-nya di blog jadi terlihat agak membingunkan, Muuv nyak ^_^

untuk memudahkan para codinger, mpu-nya blog nempelin contoh yang udah jadi dan untuk filenya berukuran 7Mb dikarenakan ada file video-nya :D

download file

Sekian dan Terima Kasih
Wassalamu'alaikum Wr Wb

 

Kamis, 19 Juli 2012

Memuat/Me-Load File Javascript Secara Terpisah

Assalamu'alaikum Wr Wb dan salam sejahtera
kali ini mpu-nya blog mau bagi2 pengetahuan lagi mengenai ExtJS...
yang kali ini akan di share kepada kodinger yaitu bagaimana caranya kita membangun sebuah aplikasi dengan ExtJS secara terorganisir file-nya...

Jika para kodinger sudah pernah membuat program dengan menggunakan framework ExtJS, maka kodinger pun tahu seperti apa kendala yang di hadapi dalam menggunakan framework ini???

......

Yes!!! Mungkin ada beberapa kodinger yang masih bingung dalam mengorganisasikan file-nya. Kebanyakan masih menempatkannya dalam satu file ^_^

Ok! disini mpu-nya blog akan men-share caranya untuk me-load/memuat file javascript biar lebih terorganisir, untuk yang sudah tahu silahkan untuk share pengerahuannya ^_^

Chek This Code :

First of all, yaelah lagak loe tong... tong...
buat script berikut...

----------------------------------------------------------
//Script untuk memanggil kelas manager
Ext.ux.ScriptManager = Ext.extend(Ext.util.Observable, {
    // The timeout in seconds to be used for requests
    timeout : 30,
 
   //array yang fungsinya private, dijalankan jika ada yang memanggilnya ^_^???
    scripts : [],
    disableCaching : false,
 
    /**
     * @constructor
     * Component constructor
     */
    constructor: function(config){
        Ext.apply(this, config);
        Ext.ux.ScriptManager.superclass.constructor.call(this, config)
    },
    loadJs : function(o){
        if (!o) { return;  }
        if (o.debug) {
            this.addAsScript(o);
            return;
        }
        if (!Ext.isArray(o.scripts)) {  o.scripts = [o.scripts]; }
        o.url = o.scripts.shift();
        if (o.scripts.length == 0) {  this._loadUrl(o);  }

        else {
            o.scope = this;
            this._loadUrl(o, function(){  this.loadJs(o); });
        }
    },
    loadCss : function(o) {
        var id = o.id || '';
        var file;
 
        if (!Ext.isArray(o.scripts)) { o.scripts = [o.scripts];  }
 
        for (var i = 0; i < o.scripts.length; i++) {
            file = o.scripts[i];
            id = '' + Math.floor(Math.random() * 100);
            Ext.util.CSS.createStyleSheet('', id);
            Ext.util.CSS.swapStyleSheet(id, file);
        }
 
        if(o.callback && Ext.isFunction(o.callback)){
            o.callback.createDelegate(o.scope || window).call();
        }
    },
    addAsScript : function(o) {
        var count = 0;
        var script;
        var files = o.scripts;
        if (!Ext.isArray(files)) {  files = [files]; }
        var head = document.getElementsByTagName('head')[0];
        Ext.each(files, function(file) {
            script = document.createElement('script');
            script.type = 'text/javascript';
            if (Ext.isFunction(o.callback)) {
                script.onload = script.onreadystatechange = function() {
                    count++;
                    if (count == files.length) {
                        o.callback.call();
                    }
                }
            }
            script.src = file;
            head.appendChild(script);
        });
    },
    _loadUrl : function(url, callback) {
        var cfg, callerScope;
        if (typeof url == 'object') { // must be config object
            cfg = url;
            url = cfg.url;
            callback = callback || cfg.callback;
            callerScope = cfg.scope;
            if (typeof cfg.timeout != 'undefined') {
                this.timeout = cfg.timeout;
            }
            if (typeof cfg.disableCaching != 'undefined') {
                this.disableCaching = cfg.disableCaching;
            }
        }

 
        if (this.scripts[url]) {
            if(callback && Ext.isFunction(callback)){
                callback.createDelegate(callerScope || window).call();
            }
            return null;
        }


        Ext.Ajax.request({
            url : url,
            success : this.processSuccess,
            failure : this.processFailure,
            scope : this,
            timeout : (this.timeout * 1000),
            disableCaching : this.disableCaching,
            argument : {
                'url' : url,
                'scope' : callerScope || window,
                'callback' : callback,
                'options' : cfg
            }
        });
        return null;
    },
    processSuccess : function(response) {
        this.scripts[response.argument.url] = true;
        window.execScript ? window.execScript(response.responseText) : window
        .eval(response.responseText);
        if (response.argument.options.scripts.length == 0) {
        }
        if (typeof response.argument.callback == 'function') {
            response.argument.callback.call(response.argument.scope);
        }
    },
    processFailure : function(response) {
        Ext.MessageBox.show({
            title : 'Application Error',
            msg : 'Script library could not be loaded.',
            closable : false,
            icon : Ext.MessageBox.ERROR,
            minWidth : 200,
            buttons: Ext.Msg.OK
        });
        /*setTimeout(function() {
            Ext.MessageBox.hide();
        }, 2000);*/ //yang ini saya komentar, kalo mau tahu fungsinya kodinger buka aja komennya ^_^
    }
});

---------------------------------------------------------- 
mpu-nya blog mendapatkannya dari si master Swarnendu @_@


Selanjutnya masukkan script berikut kedalam fungsi Ext.onReady()
--------------------------------------------------------------------
ScriptMgr = new Ext.ux.ScriptManager();
    ScriptMgr.loadJs({
        scripts : ['file yang mau di load ke-1','
file yang mau di load ke-2'],
        debug : true,
        callback : function(){ console.log('Berhasil Memuat File...'); }
});

--------------------------------------------------------------------
disini kodinger bisa memuat lebih dari satu file, tapi ingat!!! tempatkan skrip diatas sesuai dengan kebutuhannya, yang sudah mpu-nya coba untuk skrip diatas hanya bisa memuat untuk file yang windownya berbeda, bila ingi memuat beda file tapi fungsi yang terkait harus ada didalam satu file maka tidak bisa. Si ExtJS tidak akan mengenali fungsi yang ada di beda file tersebut.... ^_^v


jika kodinger hanya ingin memuat satu file saja, maka tinggal tuliskan seperti ini :
----------------------------------------
scripts : ['file yang mau di load'],
----------------------------------------
Mudah kok! kalo udah paham sih... ^_^


Hokeh!!! Sekian tutor yang bisa mpu-nya blog kasih, kalo ada kekurangan dan kesalahan mohon di maafkan, tapi kalo ada kelebihan tolong masukkin ke kotak amal aja ^_^

Wassalamu'alaikum Wr Wb dan sampai jumpa.


Sumber : Swarnendu De

Jumat, 13 Juli 2012

Assalamu'alaikum wr wb bagi yang muslim dan salam sejahtera untuk semuanya...
kali ini mpu-nya blog mau men-share ilmu lagi nih bagi yang membutuhkan, yang akan di share khususnya bagi para programmer adict yaitu bagaimana cara membuat login sederhana dengan bahasa Java->Javascript yang strict-nya lagi ExtJS.

Langsung kita mulai... ;-)

Pertama buat terlebih dahulu file login.html
-------------------------------------------------------------------------
<html>
<head>
    <!--Header File ini cari path tempatnya ExtJS itu nyimpen-->

    <link href="ext-all.css" type="text/css" rel="stylesheet">
    <script type="text/javascript" src="bootstrap.js"></script>
    <script type="text/javascript" src="ext-all.js"></script>
    <script type="text/javascript" src="login.js"></script>
</head>
<body></body>
</html>
-------------------------------------------------------------------------

Kemudian buat file login.js
didalam file login.js buat dulu script untuk menjalankan semua fungsi yang utamanya
-------------------------------------------------------------------------
Ext.onReady(function(){

});
-------------------------------------------------------------------------

setelah itu, masih didalam file login.js buat kelas Ext window-nya dan masukkan didalam skrip yang diatas, jadinya seperti ini...
-------------------------------------------------------------------------
Ext.onReady(function(){
    var win = new Ext.Window({
        layout:'fit',
        style:'text-align:left;',
        title: 'Admin Login',
        width:340,
        height:230,
        closable: false,
        resizable: false,
        movable: false,
        draggable : false,
        margin: false,
        plain: true,
        border: false,
        items: [login]
    });
    win.show();
});
-------------------------------------------------------------------------

buat lagi skrip untuk panel dimana komponen akan di taruh
-------------------------------------------------------------------------
Ext.onReady(function(){
    var login = new Ext.FormPanel({

    });

    var win = new Ext.Window({
        layout   : 'fit',
        style    : 'text-align:left;',
        title    : 'Admin Login',
        width    : 340,
        height   : 230,
        closable : false,
        resizable: false,
        movable  : false,
        draggable: false,
        margin   : false,
        plain    : true,
        border   : false,
        items    : [login]
    });
    win.show();
}); 
-------------------------------------------------------------------------

setelah itu buat komponen didalam panel
-------------------------------------------------------------------------

Ext.onReady(function(){
    var login = new Ext.FormPanel({
        url:'loginProcess.php',
        frame:true,
        monitorValid:true,
        items:[{
             xtype      : 'label',
             id         : 'label1',
             style      : 'text-align:left;',
             text       : 'Silahkan anda login dahulu untuk masuk kedalam Admin Tools.',
             margin     : '0 0 0 0'
          },{
             xtype      : 'textfield',
             margin     : '30 30 5 30',
             fieldLabel : 'Username',
             height     : '30',
             name       : 'Usr',
             allowBlank : false,
          },{
             xtype          : 'textfield',
             margin         : '0 30 0 30',
             fieldLabel     : 'Password',
             name           : 'Pass',
             inputType      : 'password',
             height         : '30',
             allowBlank     : false,
             enableKeyEvents: true,
             listeners: {
               'keypress': {
                  fn: function(tf, e){

                    //jika tombol enter yang ditekan
                    if(e.getKey()==13){
                       login.getForm().submit({
                         method:'POST',
                         waitTitle:'Connecting',
                         waitMsg:'Sending data...',
                           success:function(){                                                 var redirect = 'sukses.html';
                             window.location = redirect;
                           },
                           failure:function(form, action){
                             if(action.failureType == 'server'){
                                Ext.Msg.alert('WARNING','Username or Password Incorrect!');
                                        }else{
                                            Ext.Msg.alert('WARNING!', 'Authentication server is unreachable : ' + action.response.responseText);
                                        }
                                        login.getForm().reset();
                                    }
                                });
                            }
                        }
                    }, delay : 100
                }   
         }],

         buttons:[{
            iconCls: 'login',
            text:'Login',
            margin: '0 17 10 0',
            scale: 'medium',
            formBind: true,
            handler:function(){
              login.getForm().submit({
                 method:'POST',
                 waitTitle:'Connecting',
                 waitMsg:'Sending data...',
                 success:function(){
                    var redirect = 'sukses.html';
                    window.location = redirect;
                 },
                 failure:function(form, action){
                    if(action.failureType == 'server'){
                      Ext.Msg.alert('WARNING!','Username or Password Incorrect!');
                    }else{
                      Ext.Msg.alert('WARNING!', 'Authentication server is unreachable : ' + action.response.responseText);
                    }
                    login.getForm().reset();
                 }
              });
            }
        }]
    });

    var win = new Ext.Window({
        layout   : 'fit',
        style    : 'text-align:left;',
        iconCls  : 'icon-title',
        title    : 'Admin Login',
        width    : 340,
        height   : 230,
        closable : false,
        resizable: false,
        movable  : false,
        draggable: false,
        margin   : false,
        plain    : true,
        border   : false,
        items    : [login]
    });
    win.show();
});
catatan : tolong rapihin sendiri yah baris kodenya, blum handal nulis kode di blog :D
-------------------------------------------------------------------------

kemudian buat file loginProcess.php untuk mem-verifikasi login itu cocok atau tidak
kenapa dengan PHP? karena mpu-nya blogger lagi ngoding pake bahasa ini xixixixixixi....
-------------------------------------------------------------------------
 <?php
$loginUsername = isset($_POST["Usr"]) ? $_POST["Usr"] : "";
$loginPassword = isset($_POST["Pass"]) ? $_POST["Pass"] : "";
if($loginUsername == "admin" && $loginPassword == "admin"){
    $result["success"] = true;
}else{
    $result["success"] = false;
    $result["errors"]["reason"] = "Gagal Login! Ulangin Gih!!!.";
}
echo json_encode($result);
?>
json_encode disini fungsinya untuk men-encoding nilai string yang dikirimkan sesuai dengan format ExtJS
dari format PHP, contohnya : untuk array di php $arr = array('a' => 1'b' => 2'c' => 3); ketika di encode untuk ExtJS menjadi {"a":1,"b":2,"c":3}
-------------------------------------------------------------------------

Ok! untuk sentuhan terakhir tinggal buat file sukses.html untuk menampilkan bahwa login itu berhasil
-------------------------------------------------------------------------
<html>
<head></head>
<body>

Login Sukses!!!
</body>
</html>
-------------------------------------------------------------------------

Sekian dan Terima Kasih... Semoga tutorial diatas dapat bermanfaat bagi kita semua... ^_^v