Magento Massaction mit Observer

Wie kann ohne einen Rewrite des Mage_Adminhtml_Block_Sales_Order_Grid eine Massenaktion hinzufügen?

In der config.xml

<events>
	<core_block_abstract_prepare_layout_before>
		<observers>
			<advancedpicklist_prepare_layout_before>
				<type>singleton</type>
				<class>meinmodul/observer</class>
				<method>addPicklistMassaction</method>
			</advancedpicklist_prepare_layout_before>
		</observers>
	</core_block_abstract_prepare_layout_before>
</events>

In im Observer.php

function addPicklistMassaction(Varien_Event_Observer $observer) {
	$block = $observer->getEvent ()->getBlock ();
	$grid = $block->getLayout ()->getBlock ( 'sales_order.grid' );
	
	if ($block instanceof Mage_Adminhtml_Block_Widget_Grid_Massaction && $grid != null && $grid instanceof Mage_Adminhtml_Block_Sales_Order_Grid) {
		$block->addItem ( 'sendPicklist', array (
				'label' => Mage::helper ( 'advancedpicklist' )->__ ( 'Send Picklists' ),
				'url' => Mage::app ()->getStore ()->getUrl ( 'advancedpicklist/index/massSendPicklist' ) 
		) );
	}
	return $this;
}

Leider hat der Mage_Adminhtml_Block_Widget_Grid_Massaction noch keinen Parent, wenn die vorhandenen Events ausgeführt werden. Daher schauen wir mit Hilfe des Layouts nach ob wir das “sales_order.grid” erstellen.

Warum es dafür keinen einfacheren Weg gibt, zum Beispiel indem direkt ein Event dafür angeboten wird, vermag ich nicht sagen.

Magento Image URLs in Modules

Ever wondered how image urls are build?

http://somehost/media/catalog/product/cache/0/small_image/225x/9df78eab33525d08d6e5fb8d27136e95/c/o/coalesce.jpg

The highlighted parts are:

  • Base media path (media/catalog/product)
  • ‘cache’
  • Store ID
  • Type of  image (see attribute)
  • Size of image as WIDTHxHEIGHT. In above case WIDTHx uses the aspect ratio to calculate the second (smaller) side
  • MD5 of image parameters (see Mage_Catalog_Model_Product_Image::setBaseFile for details).
  • First char of filename
  • Second char of filename
  • Filename

The last three parts are the filename of the original image relative to media/catalog/product.

Things to remember:

  • The hash code is generated using image parameters => The same parameters will generate the same hash code.
  • The hash code does not contain any random data
  • The hash code does not contain the filename

Windows 8 ohne Win32?

Wie man bei den beiden verlinkten Artikeln lesen kann soll Windows 8 mit einer neuen Oberfläche kommen. Ich denke Microsoft hat folgendes vor: Windows 8 wird mit einer neuen UI und API auf Basis von .NET veröffentlicht. Die Win32-API wird nur noch über Emulation angeboten, so dass alte Software weiter funktioniert. Aber warum sollte Microsoft so etwas machen?

Windows 8 soll sowohl auf X86 als auch auf ARM erscheinen. Wie beim Register genannt gibt es 8 binär inkompatible SoCs die unterstützt werden sollen. Erstellt ein Entwickler pro Architektur eine Übersetzung des Sourcecodes, sind das 10 zu produzierende Softwarepakete (x86, x64 und 8 * ARM). Das ist sowohl für Anwender als auch für Entwickler nicht handhabbar. Des weiteren ist die Win32-API aus den Uhrzeiten von Windows NT und Windows 95 durch die zahlreichen neuen Anforderungen und Versionen nicht mehr zeitgemäß. Die Win32 API war und ist bei Entwicklern (und wie man durch .NET sieht auch bei Microsoft) nicht sonderlich beliebt, sie gilt als schwer erlernbar, ist fehleranfällig und lässt einen roten Faden vermissen. Mit Windows 8 könnte Microsoft nun mit einigen Problemen aufräumen. Durch die konsequente Verwendung von .NET als Laufzeitumgebung und API sind Anwendungen automatisch auf allen Windows 8 Versionen lauffähig. Die Architektur spielt nur für Microsofts Betriebssystem Entwickler eine Rolle, da sie die entsprechenden .NET Laufzeitumgebungen mit dem Betriebssystem zur Verfügung stellen müssen. Für Anwender reicht es dann also ein “Certified for Windows 8″-Produkt zu kaufen und es läuft überall, egal ob PC oder ARM. Alte Anwendungen, die er bereits besitzt, laufen zumindest auf x86/x64 in der Windows 7 Emulation weiter. Apple hat einen solchen Umstieg von Mac OS Classic auf Mac OS X bereits erfolgreich durchgeführt. Auch Microsoft hat erst kürzlich mit Windows Phone 7 alten Ballast über Bord geworfen.

200px-DIN_4844-2_Warnung_vor_gef_el_Spannung_D-W008.svg

Apple unter Strom

Apple hat heute die neue iMac-Generation veröffentlicht. Neu ist unter anderem Thunderbolt, ein neuer Highspeed-Bus, den man als Nachfolger von Firewire und Alternative zu USB3.0 sehen kann. Mal abgesehen davon was Thunderbolt und LightPeak nun unterscheiden soll, halte ich das Logo für Thunderbolt für bedenklich. Es ähnelt doch sehr dem internationalen Warnsymbol für elektrischen Strom. Bekommt man jetzt einen Stromschlag wenn man einen iMac anfasst?

Semantik Desktop unter Kubuntu nun mit Nepomuk und Virtuoso

Nepomuk unter KDE hatte schon einige Probleme mit seinen Storage-Backends. Daher sind sie auf Virtuoso umgestiegen. Leider gab es noch kein Ubuntu Paket… Daher hat Jonathan Riddell nun ein Paket gebaut das bereits im Universe-Repository ist. Des weiteren hat er einen Antrag gestellt, damit es in Main aufgenommen wird. Um nun Virutuoso als Backend zu verwenden müssen zu einem aktuellen KDE4 nur die beiden Pakete virtuoso-server und virtuoso-drivers installiert werden. Beim nächsten Neustart von Nepomuk wird Virtuoso verwendet und werden die alten Daten migriert.
Viel Spaß mit Nepomuk und Virtuoso