joomla_roadmapLassan nyakunkon a Joomla! jelenlegi LTS verziójának cseréje, így neki kell kezdeni – ha morogva és zsörtölődve is – a régebbi modulok, komponensek áttekintésének, ki miképp támogatja az új verziót.

Nem látom értelmét elmélkedni a miért kell változtatni kérdésen, hisz a jelenlegi MVC architektúrát továbbra is támogatja a Joomla!, bár az új fejlesztéseket már érdemes a HMVC irányából megközelíteni, és abban elkészíteni (most még csak a szigorúan új fejlesztésekre gondolok). Igen ám, de mi lesz akkor az eddigi fejlesztéseinkkel? Miképp fogja azt a Joomla! 3.x támogatni?

Aki elég bátor eddig is kipróbálhatta, a régi modulokat az új verzióra telepíteni, és bár a megjelenítési réteg változása miatt a felületek nem szépen jelentek meg (visszlát MooTools, helló Bootstrap), mégis alapvetően minden alapszinten működőnek látszott. Mostanáig, amikor is megjelent a Joomla! 3.2 és vele előtérbe helyezték a Framework frissítését. Szerintem sokan jártak úgy – mint én is –, hogy miután a J! 3.2 lassan a következő LTS verzióval egyezővé válik, így elkezdték kisebb-nagyobb oldalaik teszt átállítását. Ennek kapcsán aztán volt ne mulass, hisz számos apró buktatóba lehet belekerülni (de erről majd egy másik cikk fog szólni).

Vettem tehát kedvenc nagy site-mat és elvégeztem a Joomla upgrade-t. Ez alapvetően nem egy túl nehéz dolog, némi telepítés, és egyéb mágiát követően a rendesen testreszabott oldal is megmozdult élni kezdett. Miután ezzel megvoltam, jött a következő lépés, nézzük meg az egyedi fejlesztéseket, miképpen muzsikálnak az új környezetben. Mint mondtam voltak már előzetes tesztjeim, így azt láttam, hogy mennek a dolgok, nem kell mindent előröl kezdeni. Viszont most néhány kattintás után szép üres fehér képernyő fogadott (ugyebár ilyenkor a PHP értelmező hajtott el kódostúl, a búsba…).

Rögtön beugrott, hogy a J! 3.2 megjelenését követően a legnagyobb fórummotor a Kunena is azonnal hasalt, és bő egy hét kellett hozzá, hogy kijavítsák, viszont mindennel együtt gyorsan megvolt, ergó nem lehet valami nagy hiba. Google a mi barátunk alapon kicsit körülnéztem és ráakadtam a megoldásban utat mutató cikkre: Developing a MVC Component/Introduction és ebben a számunkra fontos fejezetre a Migrating Joomla 2.5 to Joomla 3.0.

Ebben a lényeges bejegyzés a következő:

Ne feledjük, hogy

  • ahol közvetlenül végezzük a JModel, JView vagy a JController osztályokat, ott mindenhol mostantól a Legacy változatot kell alkalmaznunk, azaz JModel –> JModellLegacy, JView –> JViewLegacy és JController –> JControllerLegacy
  • a származtatott osztályokat (pl. JModellList) nem kell így kezelni, azokat már megoldották
  • számos régen elavult kódrész eltávolításra került (forráskód szinten vették ki a rendszerből), ezek ha nem törődtünk eddig vele, megnehezíthetik életünket (itt a JParameter a leginkább érdekes elem)
  • a DS állandó eltávolításra került a J! 3.0-ból, így ha alkalmazzuk, azt magunknak létre kell hozni

Mindezek a változások a következő kis kódrészletben foglalhatóak össze:

if(!defined('DS')){
define('DS',DIRECTORY_SEPARATOR);
}

 

//$controller = JController::getInstance('HelloWorld');
$controller = JControllerLegacy::getInstance('HelloWorld');

//class HelloWorldViewHelloWorlds extends JView
class HelloWorldViewHelloWorlds extends JViewLegacy

  class HelloWorldController extends JControllerLegacy

  class HelloWorldModelHelloWorld extends JModelItemLegacy

  class HelloWorldModelUpdHelloWorld extends JModelFormLegacy

  JRegistry::getValue() now is JRegistry::get()

  //Convert sample to JRegistry with LoadJSON - Sample from Joomla 3.0 sourcecode

// $params = new JRegistry;
// $params->loadJSON($this->item->params);
// $this->item->params = $params;

$params = new JRegistry;
$params->loadString($item->params);
$item->params = $params;

 

Frissített minta alkalmazás

Annak érdekében, hogy az új fejlesztési megközelítés könnyebben kezelhető, megérthető legyen a HelloJoomla minta projekt frissítésre került, amit a http://joomlacode.org/gf/project/hellojoomla3/frs/ címről lehet letölteni. E kódban már az új felépítésnek megfelelően a JApplicationWeb és JApplicationCLI kerül alkalmazásra.

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük

*