Hallo, um aus meinem Modul auf den Adminbereich (ExtJs) zugreifen zu können, habe ich folgenden Ansatz. Ich erweitere die ExtJS-Klasse ‘Shopware.app.Application’, da es möglich ist an diese einen remote procedure call zu schicken - in diesem Fall um eine Funktion mit der ich die markierten Einträge der Bestell-Liste ermitteln kann. Es ist z.B. nicht möglich eine Funktion von ‘Shopware.apps.Order.view.list.MyList’ auszuführen. Dann erhalte ich den Fehler ‘Shopware.apps.Order is undefined’. Des weiteren erweitere ich die postmessage-api.js (in meinem Plugin-Verzeichnis), die dann den per RPC diese Funktion ausführt. Das Ergebnis erhalte ich über das ‘get-post-message’-Event des postMessageAPIs. Gibt es eine bessere oder einfachere Möglichkeit das zu erreichen? index.html (Plugin) [code] {block name=“content/javascript”}
var subscriptionApiInit = window.events.subscribe(‘initialized-api’, function(obj) {
postMessageApi.getSelectedOrderIds();
});
var subscriptionPostMessage = window.events.subscribe('get-post-message', function(obj) {
// alert(obj.toSource());
var selOrderIds = obj.result;
});
</script> {/block} [/code] [b]postmessage-api.js (Plugin)[/b] [code] getSelectedOrderIds: function() { var request = new RpcRequestObject('Shopware.app.Application', 'getSelectedOrderIds').send(); win.events.publish('get-selected-order-ids', request.getRequestOptions()); return request; } [/code] [b]shopware/themes/Backend/ExtJs/backend/index/header.tpl[/b] [code] Ext.define('Shopware.app.Application', { getSelectedOrderIds: function() { var itemIDs = new Array(); var grid = Ext.ComponentQuery.query('.order-list')[0]; var gridSelModel = grid.getSelectionModel(); if (! gridSelModel.hasSelection()) { return ''; } var records = gridSelModel.getSelection(); for (var i = 0; i \< records.length; i++) { element = records[i]; itemIDs.push(element.get('id')); } return itemIDs.join(','); }, [/code]