Örökölt mód eltávolítása 3. rész

A JoomlaWiki wikiből

Elérkeztünk annak a sorozatnak a 3. részéhez, amelyben bemutatjuk, hogyan kell egy meglévő komponenst átírni natív Joomla! 1.5-ös módra az örökölt mód engedélyezése nélkül. Legutóbbi alkalommal megnéztük a konfigurációs beállításokat, a JRequest osztályt és még pár egyéb dolgot. Ezúttal az adminisztrációs felületet vizsgáljuk meg.

Az eszköztár

A hibaüzenetben azt olvashatjuk, hogy a 'mosMenuBar' osztály nem található a toolbar.letterman.html.php fájlban. Ez könnyen javítható, ugyanis csak egy névváltoztatás JToolBarHelper-re. Törölhetjük a régi mosMenuBar::startTable() és mosMenuBar::endTable() metódusokat, nincs többé szükség ezekre.

Újdonság, hogy az oldalnak címet adhatunk a JToolBarHelper::title metódussal. Most az összes eszköztárnak ugyanazt a címet adjuk a következő kód használatával:

  1. JToolBarHelper::title( 'LetterMan', 'logo' );

Az alapértelmezett eszköztár most így néz ki:

  1. function DEFAULT_MENU()
  2. {
  3.   JToolBarHelper::title( 'LetterMan', 'logo' );
  4.   JtoolBarHelper::publishList();
  5.   JtoolBarHelper::unpublishList();
  6.   JToolBarHelper::addNew( 'new', 'New' );
  7.   JToolBarHelper::addNew( 'compose', 'Compose Newsletter');
  8.   JToolBarHelper::editList( 'edit', 'Edit' );
  9.   JToolBarHelper::deleteList( '', 'remove', 'Delete');
  10. }

Elválasztókat már nem használunk többé az új stílus miatt. Ezeket eltávolíthatjuk az eszköztár metódusából. Frissítés... és... végre működik az adminisztrációs felület, ugyan sok hiányzó konstanssal, de ilyen a kezdet.

Többé nem tehetjük meg, hogy kézzel szúrunk be tábla cellákat. Sok fejlesztő ehhez hasonló kódot készített az egyedi eszköztár gombhoz:

  1. <td>
  2.   <a class="toolbar" href="/<?php echo $href;?>"
  3.     onmouseout="MM_swapImgRestore();"
  4.     onmouseover="MM_swapImage('users','','<?php echo $mosConfig_live_site."/components/com_letterman/images/user_f2.png" ?>',1);">
  5.   <img name="users" src="/<?php echo $mosConfig_live_site."/components/com_letterman/images/user.png" ?>" 
  6.     alt="assignUsers" border="0" align="middle" />
  7.   <?php echo LM_ASSIGN_USERS; ?></a>
  8. </td>

A LetterMan tartalmaz ilyeneket, és ezeket le kell cserélni a következő kódra:

  1. JToolBarHelper::custom( 'assignUsers', 'user.png', 'user.png', JText::_( 'Assign Users' ), false );

A user.png-n alapuló egyedi gomb beillesztéséhez a komponensben néhány új könyvtárat kell létrehozni:

/com_letterman
 /media
   /css
     default.css
   /images
     logo.png
     user.png</code>

A default.cssfájl a következő stílusinformációt tartalmazza:

  1. .icon-48-logo {
  2.     background: url('/../images/logo.png') no-repeat left;
  3. }
  4. .icon-32-user {
  5.     background: url('/../images/user.png') no-repeat left;
  6. }
  7. .icon-32-validate {
  8.     background: url('/../images/validate.gif') no-repeat left;
  9. }

Az icon-48-logo stílust a az eszköztár címsorában használjuk. A két icon-32 stílus az eszköztárban alkalmazódik. A stílus beépítéséhez egy helper metódust használunk, a JTHML osztály stylesheet metódusát. Ezt helyezzük az admin.letterman.php fájlba, egészen a tetejére:

  1. JHTML::stylesheet( 'default.css', '/administrator/components/com_letterman/media/css/' );

Fordítások

A fordítások már nem PHP konstansokként történnek és ezért látunk sok nem definiált konstant hibát. Létezik egy JText nevű helper osztály számos statikus metódussal a fordításokhoz, mint a _ (aláhúzás) és sprintf. A JText sokkal természetesebb karaktereket is megenged, mint például a szóköz, amely különösen hasznos rövid mondatok esetén. Hosszabb szövegekhez viszont még mindig a rövidítések használata ajánlott, amely megadja a teljes leírást.

A JText használata a következőképpen néz ki:

  1. <?php echo JText::_( 'Compose a newsletter from content items' ); ?>

Ennek a metódusnak az előnye, hogy a globális beállításoknál van egy hibakereső mód. Amikor engedélyezzük a "Hibakeresés a nyelvben" opciót, a rendszer egy különleges karakter közé helyezi a szavakat és mondatokat, amelyek segítenek meghatározni, hogy egy szöveghez tartozik-e fordítás vagy nem.

Ugyan eltart egy ideig, de a következő lépés, hogy megkeressük és lecseréljük az összes konstansot a JText osztály használatával, beleértve a természetesebb kifejezések használatát (hacsak nem egy hosszú leírás).

Például az eszköztárban cseréljük le az _E_SAVE-ot 'Save'-re, az _E_CANCEL-t 'Cancel-re és így tovább. Az admin.letterman.html.php-ben cseréljük le a <?php echo _SEARCH_TITLE; ?> kódot a <?php echo JText::_('Search'); ?> kódra és így tovább.

Ahogy korábban említésre került, néhány kifejezés valóban nagyon hosszú. Néhány ilyen található a LetterMan-ban is:

define( 'LM_ADD_CONTENT_TOOLTIP', 'If you select a content item from the list, a tag will be inserted into the textarea. This tag will be rendered to the full article (Into Text only with images) when clicking on Save.' );

Ebben az esetben azt tehetjük, hogy azt a jelet használjuk, mint a szerző, csak elhelyezzük egy JText hívásba:

  1. <?php echo JText::_( 'LM_ADD_CONTENT_TOOLTIP' ); ?>

Az utolsó lépés a nyelvi konstansokat tartalmazó fájlok eltávolítása, és lecserélése az új formátummal. A következő fájlt kell létrehoznunk:

/administator/language/eb-GB/en-GB.com_letterman.ini

Észrevehetjük, hogy ez egy ini fáj, ami azt jelenti, hogy PHP konstansok helyett az "azonosító" egyenlőségjel "leírás" formát használjuk, mint például:

  1. COMPOSE A NEWSLETTER FROM CONTENT ITEMS=Compose a newsletter from content items
  2. LM_ADD_CONTENT_TOOLTIP=If you select a content item from the list,
  3. a tag will be inserted into the textarea. This tag will be rendered to the full article
  4. (Into Text only with images) when clicking on Save.

Bizonyosodjunk meg, hogy az azonosítók csupa nagybetűből állnak, és hogy egyik oldal sem tartalmaz sortörést. Ezzel be is fejeződött ez a rész. Következő alkalommal az adminisztrációs felület megjelenési hibáinak javításáról lesz szó.

A cikk forrása: The Art of Joomla!