Extjs menu contextowe


(northwest) #1

Cześć,

mam taki kod (exct 2.3):

var adminStore = new Ext.data.Store({

            proxy: new Ext.data.HttpProxy({

                url: './kategorieAjax.php',

                method: 'POST'

            }),

            baseParams: {

                task: "getList",

                start: 0,

                limit: 20

            },

            reader: new Ext.data.JsonReader({

                root: 'results',

                totalPorperty: 'total'

            }, [{

                name: 'id',

                mapping: 'id'

            }, {

                name: 'kategoria',

                mapping: 'kategoria'

            }]),

            sortInfo: {

                field: 'id',

                direction: "ASC"

            }

        });

        adminStore.load();


        var xg = Ext.grid;

        var sm2 = new xg.CheckboxSelectionModel();

        admin_grid = new xg.EditorGridPanel({

            store: adminStore,

            cm: new xg.ColumnModel([sm2, {

                header: 'Nazwa kategorii',

                dataIndex: 'kategoria',

                allowBlank: false,

                width: 100,

                editor: new Ext.form.TextField({

                    name: 'kategoria',

                    allowBlank: false,

						  maxLength: 25,						

					     minLength: 1,

                    listeners: {

                        'change': {

                            fn: updateDataAdmin,

                            delay: 100

                        }

                    }

                })

            }, {

                header: 'id',

                dataIndex: 'id',

                hidden: true

            }]),

            sm: sm2,

            viewConfig: {

                forceFit: true

            },

            buttons: [{

                text: 'Zamknij okno',

                handler: function(){

                    winKategory.destroy();

                }

            }],

            buttonAlign: 'center',

            tbar: ['Wyszukaj frazy: ', new Ext.app.SearchField({

                store: adminStore,

                params: {

                    start: 0,

                    limit: 20

                }

            }), '-', {

                text: 'Nowa kategoria',

                tooltip: 'Dodaje nowÄ kategoriÄ',

                iconCls: 'add',

                handler: addOneKategory

            }, '-', {

                text: 'UsuĹ kategoriÄ',

	                tooltip: 'Usuwa wybranÄ kategoriÄ',

                iconCls: 'remove',

                handler: function(){

                    var selections = sm2.getSelections();

                    if (selections.length > 0) {

                        Ext.Msg.show({

                            title: 'Uwaga',

                            msg: 'Czy napewno usunÄÄ ?',

                            buttons: Ext.Msg.YESNO,

                            fn: function(btn){

                                if (btn == 'yes') {

                                    var idStr = "(";

                                    for (var i = 0; i < selections.length; i++) {

                                        idStr += selections[i].data.id + ',';

                                    }

                                    idStr += "0)";                                    

                                    Ext.Ajax.request({

                                        waitMsg: 'zapisywanie danych...',

                                        url: 'kategorieAjax.php',                                

                                        params: {

                                            task: "delete",

                                            keys: idStr

                                        },

                                        failure: function(response, options){ Ext.MessageBox.alert('Uwaga', 'BĹad usuwania danych');

                                        },

                                        success: function(response, options){

                                            adminStore.load();

                                        }

                                    });

                                }

                            }

                        });

                    }    

                }

            }],

            bbar: new Ext.PagingToolbar({

                pageSize: 20,

                store: adminStore,

                displayInfo: true

            }),

            frame: true,

            iconCls: 'icon-grid'

        });

chciałbym do tego dodać: 1; menu kontekstowe (po kliknięciu prawym przyciskiem myszki na tą tabelkę) 2. jeśli kliknę w np. "pokaż szczegóły" z tego menu, to pokaże się nowe okienko z wyświetlonym plikiem plik.php... dla menu głównego mam taką funkcję:

function windowListgalerry(){

var windowNavia22 = Ext.WindowMgr.get('windowNavigall');

if (!windowNavia22) {

var simple = new Ext.Panel({

frame: true,

width: 740,

height: 530,

html: ''

});

windowNavia22 = new Ext.Window({

id: 'windowNavigall',

layout: 'fit',

title: 'Podgląd galerii',

closable: true,

width: 740,

height: 530,

resizable: true,

items: simple

});

windowNavia22.show();


}

windowNavia22.toFront(); 

}

[/code]

chciałbym to zintegrować z tym kontekstowym... wie ktoś może jak to zrobić?

Northwest


(mario@) #2

Własne menu kontekstowe można wywołać tak

odwolanie_do_obiektu.oncontextmenu= function () {

	jakies tam polecenia

	return false;

}

Nie zadziała w przeglądarce Opera.

Odwołanie się do odpowiedniego pliku, który wczyta zawartość podanego pliku *.php (+ js dla wywołania tego okienka).