0

他の人の extjs コードを変更しようとしていますが、本当に助けが必要です。

基本的に、ユーザー名/パスワードが検証されると、index.php に含まれる dashboard.js が呼び出されます。今私がする必要があるのは、ユーザー名/パスワードが検証された後、確認番号を求めるポップアップする別のフォームが必要です. これを検証する必要はありません (空の文字列を確認するだけです)。フォームに入力するだけで、セッションに保存する必要があります。

 //index.php
    <script>
            Ext.onReady( function() {

                Web.ip = '<?php print $_SERVER["REMOTE_ADDR"]; ?>';

                var sessionInfo = Web.getCookieInfo();
                if( sessionInfo ) {
                    Web.Dashboard.init();
                    Web.user = sessionInfo;

                    Web.Dashboard.loadDefault();
                } else {
                    Web.Login.init();
                    Web.Dashboard.init();
                }
            });
        </script>

//dashboard.js
Web.Dashboard = function() {

    var contentPanel = new Ext.Panel({
        region: 'center',
        layout: 'fit',
        margins: '0 5 5 0',
        border: true,
        html: ''
    });

    return {

        init: function() {
        ........
        }
    }
}();

onsubmit 関数内で呼び出される成功関数は次のとおりです。

success: function( result, request ) {

    try {
        var obj = Ext.decode( result.responseText );
        if( obj.success ) {
            var permissions = obj.USER[0].VALUES;
            var p = {};
            for( var i=0 ; i<permissions.length ; i++ ) {
                p[permissions[i].PERMISSION] = true;
            }


            Web.Dashboard.loadDefault();
        } else {
        //alert ('got here');
            if (obj.ErrorCode == 20410 ) {
                th.changePasswordWindow.show();
                return;
            }
            th.loginPanel.form.reset();
            th.loginWindow.displayInfo( 'Invalid username/password' );
        }
    } catch( ex ) {
        th.loginWindow.el.unmask();
        th.loginPanel.focusUsername();
        th.loginPanel.form.reset();
        th.loginWindow.displayInfo( 'Error: ' + ex );

}

}、

4

1 に答える 1

1

OK、別のフォームを含む単純な ActionSheet で編集します。これは、単一の入力フィールドを持つ別のフォームになります。変更textfield.nameformpanel.urlて、サーバー側と一致するようにします。

ログイン後に成功したら、シート (または別のモーダル パネル ポップアップ) を作成します。レンダリングして表示し、別のリクエストをサーバーに送信すると、準備完了formpanel.getForm().submit()です。

ボタンハンドラーを持つこのサンプルアクションシートは、その機能をニーズに合わせて調整します(成功後のリダイレクトなど)

function loginDone() {
...
 if(success) {
 var pincodeSheet = Ext.create("Ext.ActionSheet", {
    items: [{
        xtype: 'toolbar',
        cls: 'actionSheetToolbar',
        itemId: 'id_title',
        docked: 'top',
        title: ''
    }, {
        xtype: 'spacer',
        height: 10
    }, {
        xtype: 'formpanel',
        padding: 10,
        url: 'set_session_variable_serverside.asp', // adapt this
        items: [{
            title: 'Please enter PIN',
            cls: 'loginTbarTop',
            xtype: 'toolbar',
            docked: 'top'
        }, {
            xtype: 'toolbar',
            docked: 'bottom',
            cls: 'loginTbarBottom',
            items: [{
                xtype: 'spacer'
            }, {
                xtype: 'button',
                text: 'OK',
                ui: 'action',
                handler: function(btn,evt) {
                    // perform any validation here
                    pincodeSheet.down('formpanel').getForm().submit();
                }
            }]
        }, {   /* end docked */
            cls: 'loginFormFieldset',
            xtype: 'fieldset',
            defaults: {
                labelAlign: 'left',
                labelWidth: '35%',
                clearIcon: false
            },
            /* form field declarations */
            items: [{
                tabIndex: 1,
                xtype: 'textfield',
                name: 'session_variable', /// name of input field
                label: 'PIN CODE'
            }] /* end form fields */
        }] /* end form panel items */
    }] /* end sheet items */
 });
 pincodeSheet.render(document.body);


 }

...
}
于 2012-07-17T16:32:29.543 に答える