[gelöst ]SW4.1 RC2 - Eigener Tab

Moin, ich experimentiere gerade mit eurem Beispiel bzgl. SW41 RC2 und eigener Tab rum. Der Tab wird angezeigt und soweit klappt es, aber er bleibt inaktiv. Was muss ich machen um diesen zu aktivieren? Woran kann das liegen? P.S. Ihr hat die Vererbung im Beispiel vergessen: //{namespace name="backend/my\_plugin/article/view/main"} //{block name="backend/article/view/detail/window" append} ... //{/block}

Lösung: tabConfig: { disabled: false, layout: { type: 'vbox', align: 'stretch' } },

Okay, ich bin ein Schritt weiter. Aber das Beispiel im Wiki geht einfach nicht. Wenn ich es 1-zu-1 einbinde, und noch den namespace und block hinzufüge, und das disabled: false, so wird der eigenen Reiter angezeigt. Beim Laden bekomme ich aber eine ExtJS Fehler “c.modal” und der Tabinhalt ist leer. Ideen? :shopware: Danke

Hallo @ottscho, ich habe hier ein ausführlicheres Beispiel, was aufzeigt, wie man anhand der Artikel ID den Tab aktivieren oder deaktivieren kann. Ggf. hilft dir dieses Beispiel weiter: http://jsfiddle.net/klarstil/aLdtX/ Viele Grüße, Stephan Pohl :shopware:

Hi Stephan, danke für die AW. Soweit klappt es :slight_smile: Hatte ich gestern Nacht noch hinbekommen. Im Moment scheitere ich am Inhalt des Tabs. Früher habe ich hier immer etwas getrickst, so dass ich per Iframe anzeigen kann was ich will und nicht an das extJS gebunden bin. Das würde ich gerne auch wieder machen: /\*\* \* Creates the Ottscho tab \* @return Ext.container.Container \*/ createAreaCalcTab: function() { var me = this; var store = Ext.create('Ext.data.TreeStore', { root: { expanded: true, children: [{ id: 1, text: "Point1", template: 'Point1.php',leaf: true }, { id: 2, text: "Point2", template: 'Point2.php',leaf: true }] } }); var treePanel= Ext.create('Ext.tree.Panel', { title: 'Simple Tree', region: 'west', width: 200, height: 150, store: store, listeners: { itemclick: function(treePanel, record){ //console.log(treePanel); console.log(record); var containerItemID = record.data.id; boxAreaCalc.getLayout().setActiveItem(containerItemID-1); } }, rootVisible: false }); var boxOttscho = Ext.create('Ext.container.Container', { layout: 'card', region:'center', activeItem: 0, items: [{ html: '<ifr id="iframe-' + Ext.id() + '" border="0" src="'+%20'/Ottscho/point1?getArticleID='%20+%20me.article.data.id%20+'"></ifr>' }, { html: '<ifr id="iframe-' + Ext.id() + '" border="0" src="'+%20'/Ottscho/point2?getArticleID='%20+%20me.article.data.id%20+'"></ifr>' }] }); return Ext.create('Ext.container.Container', { layout: 'border', name: 'Ottscho\_Tab', title: 'Ottscho Tab', items: [treePanel, boxOttscho] }); }, Leider kann ich den alten Code nicht mit dem neuen Verbinden. Wäre hier für einen Tipp sehr dankbar…

sorry, war falsch eingeloggt zum Antworten :wink:

Ich komme hier einfach nicht weiter. Tab habe ich und er ist auch aktiv, aber ich bekomme keinen Inhalt rein. createMyPluginTabContent: function(article, stores, createdTab) { var me = this; me.createdTab = createdTab; console.log(me.createdTab); me.createdTab.tab.setDisabled((me.article.get('id') === null)); me.pluginDataView = Ext.create('Ext.view.View', { store: Ext.create('Ext.data.Store'), tpl: '**[title]**' }); me.createdTab.add(me.pluginDataView); } Dies verursacht c.model Fehler. Wenn ich mich bei Sencha rumtreibe sieht dort der Code zur Erstellung immer anders raus. Diese kann ich nicht portieren. Bitte noch einen Tipp :wink: :shopware: Danke

Hallo @ottscho, der Fehler kommt von der DataView, die du verwendest. Hier definierst du einen Store, der keinerlei Angabe für die Datenfelder hat - entweder innerhalb des Stores mit dem „fields“-Array oder im Modal über die Property „model“: Ext.create('Ext.data.Store', { fields: ['firstName', 'lastName'], data : [{ firstName: 'Ed', lastName: 'Spencer' }, { firstName: 'Tommy', lastName: 'Maintz' }, { firstName: 'Aaron', lastName: 'Conran' }, { firstName: 'Jamie', lastName: 'Avins' }] }); … oder // Set up a model to use in our Store Ext.define('User', { extend: 'Ext.data.Model', fields: [{ name: 'firstName', type: 'string' }, { name: 'lastName', type: 'string' }] }); var myStore = Ext.create('Ext.data.Store', { model: 'User', data : [{ firstName: 'Ed', lastName: 'Spencer' }, { firstName: 'Tommy', lastName: 'Maintz' }, { firstName: 'Aaron', lastName: 'Conran' }, { firstName: 'Jamie', lastName: 'Avins' }] }); Verwende deshalb innerhalb der „createMyPluginTabContent“ einfach mal einen einfachen Container mit ein wenig HTML: createMyPluginTabContent: function(article, stores, createdTab) { var me = this; me.createdTab = createdTab; console.log(me.createdTab); me.createdTab.tab.setDisabled((me.article.get('id') === null)); me.container = Ext.create('Ext.container.Container', { html: 'Yes, there you go' }); me.createdTab.add(me.container); } Viele Grüße, Stephan Pohl :shopware:

Hallo Stephan, ich stelle mich wohl besonders doof an. Anber dein unterstes Beispiel gibt folgenden Fehler aus: TypeError: me.createdTab.add is not a function me.createdTab.add(me.container); Dies ist der Code: /\*\* \* Wird zur Erstellung des Tab-Contents aufgerufen, hier die Basis \* Initialisierung vornehmen. \* \* @param article \* @param stores \* @param createdTab \*/ createMyPluginTabContent: function(article, stores, createdTab) { var me = this; me.createdTab = createdTab; console.log(me.createdTab); me.createdTab.tab.setDisabled((me.article.get('id') === null)); me.container = Ext.create('Ext.container.Container', { html: 'Yes, there you go' }); me.createdTab.add(me.container); }

Evtl. kann mir ja am Montag noch jemand einen Tipp geben. Aber egal welches Beispiel ich versuche, es klappt nicht. Neuester versuch: createMyPluginTabContent: function() { var me = this; me.pluginPnl = Ext.create('Ext.panel.Panel', { title: 'My Plugin' }); me.container = Ext.create('Ext.container.Container', { html: 'Yes, there you go' }); me.pluginPnl.add(me.container); return me.pluginPnl; }

niemand eine Idee? :shopware: :thumbup:

me.createdTab.tab.add(me.container); So gehts…