Az mostani művem kapcsán vettem észre az érdekességet, hogy amikor ugyanazzal a címkével van ellátva egy mező, hát ha még sok is van belőle, a manage display oldal, ahol a mezők megjelenítési sorrendje állítható, kvázi használhatatlan. Szóval szeretnénk at, hogy a címke mellett a mező gépi neve is látszódjék a táblázatban
Ez bizony a core field_ui része, így lecsaptam a lehetőségre, hogy talán nekem is sikerül felkerülni azok listájára, akiknek a keze nyomát dícséri a drupal core.
Így van most:

És így szeretnénk:

Itt egy kis kitérő: A drupal ugye a 7.8-as főverziónál jár. Lesz ám drupal 8 is, előbb-utóbb, de talán kevesen tudják, hogy a drupal 8 fejlesztése nem sokkal a drupal 7.0 kiadása után meg is kezdődött.
Ez miért érdekes ebből a szempontból?
Mert ugyan nekem a drupal 7-tel van bajom. Viszont ha drupal 7-ben megcsinálom a javítást, akkor mi garantálja, hogy a drupal 8-ban ugyanaz nem lesz hiba? Szóval bármilyen hibajavítást, még ha drupal 7-ben van is, először a 8-as, még most készülő verzióra kell elvégezni.
Ha a közösség, illetve a project vezető fejlesztői úgy döntenek, hogy ennek a 7-esben is helye van, akkor azt az issueban jelzik, és én (vagy valaki más) megírjuk ugyanezt drupal 7-re is.
Node miről is szól ez a patch?
Először megnéztem, hogy a drupalban van-e már valami kész eset, ahol ezt a bizonyos machine_name érték megjelenik. Bezony ám, a content types oldalon (admin/structure/types):

Igazából már csak meg kellett néznem, hogy ide hogyan kerül bele az a bizonyos machine name. Ez azért fontos, mert a core-ba nem kerülhet be "pistike kódja", ott mindennek rendesen dokumentálva, teljesen "drupalosan" kell lennie megírva.
Itt láttam, hogy egy sminkfüggvényt vezettek be ehhez a mezőhöz, hát én is azt tettem, és természetesen az elején alaposan dokumentáltam, hogy mit csinál ez a sminkfüggvény:
/** * Returns HTML for a field name and machine name for the field overview and field display overview page. * * @param $variables * An associative array containing: * - human_name: The human-readable name of the field * - machine_name: The machine-name of the field * * @ingroup themeable */ function theme_field_ui_field_name($variables) { $output = check_plain($variables['human_name']); $output .= ' <small>' . t('(Machine name: @machine-name)', array('@machine-name' => $variables['machine_name'])) . '</small>'; return $output; }
Az új függvényemet a hook_theme hurokban is regisztrálnom kellett (a field_ui_theme már korábban benne volt):
/** * Implements hook_theme(). */ function field_ui_theme() { return array( 'field_ui_table' => array( 'render element' => 'elements', ), 'field_ui_field_name' => array( 'variables' => array('human_name' => NULL, 'machine_name' => NULL), ), ); }
Majd lecseréltem a szükséges helyeken a
'label' => array( '#markup' => check_plain($instance['label']), ),
sorokat az újonnan bevezetett sminkfüggvényemre:
'label' => array( '#theme' => 'field_ui_field_name', '#human_name' => $instance['label'], '#machine_name' => $instance['field_name'], ),
És kész is. Elkészült a patch, amit párszor még boobaa segítségével reszeltem kicsit, és íme az issue, ami szeretettel várja, hogy valaki kipróbálja, letesztelje, és belekerüljön a coreba a módosítás: http://drupal.org/node/1270732
Update:
Amíg ezt a bejegyzést írtam, a drupal.org tesztrendszere szépen visszadobta a patchemet.
Na ez ugyan mi lehet?
Drupal 7-től a core része a Testing modul, leánykori nevén Simpletest. Mivel a drupal egy iszonyat összetett rendszer, ezért a fejlesztése során igencsak oda kell figyelni, ha egy hibát kijavítunk, az másik x helyen ne okozzon újabb hibákat.
Na erre találták ki a unit testeket. Amikor egy módosítás történik, a drupal robotja lefuttatja a patchet ezen a teszt rendszeren. A test unitok is a core részei, .test kiterjesztéssel szerepelnek azok a fileok, amik ezeket az előre megírt eseteket tartalmazzák.
Itt kell megjegyeznem, hogy ezelőtt még életemben nem használtam unit testet, hogyha valami zöldséget írok, nyugodtan lehet javítani.
Nálam konkrétan ott hasalt el a dolog, hogy ez a teszt program létrehozott egy mezőt, elmentette, és legenerálta a Manage Display, és a Manage Field oldalakat. Igenám, de mivel én átírtam ezekben az oldalakban a mezőt, ezért reklamált, hogy figyu, itt nem az az érték jelenik meg, ami nekem kell.
Mivel az én általam generált érték jó, ezért magába a test esetbe kellett belenyúlni, és megértetni vele, hogy mostantól ez a helyes érték:
A field_ui.test file-ban ez a sor végezte a mező vizsgálatát:
$this->assertFieldByXPath('//table[@id="field-overview"]//td[1]', $label, t('Field was created and appears in the overview page.'));
Márpedig itt a $label változó az eredetileg használt címke volt, nem az, amire én módosítottam.
Mivel a $label változót máshol is használja ez a test case, ezért bevezettem egy $rendered_label változót, ami már az újonnan létrehozott sminkfüggvényünket használja:
$rendered_label = theme('field_ui_field_name' ,$label, $field_name); $this->assertFieldByXPath('//table[@id="field-overview"]//td[1]', $rendered_label, t('Field was created and appears in the overview page.'));
Innen már átment a teszten, legalábbis localhoston, és várom, hogy a drupal.org testrobotja is bólintson rá.
Ehh, ugye, hogy nem is olyan egyszerű a core fejlesztése?

Hozzászólások
Icwfh3 Cheap Nike Air Rift
Icwfh3 Cheap Nike Air Rift Trainers Men Grey-Yellow
It delivers a quick, moderate punch and energy that lasts up to about two hours, and it does not have the downfall of the crash from regular energy drinks. ou can easily buy bigger items by shopping online compared to having to find a way to get them home from the store. Nike Air Max. You'll definitely make a great impression.. Icwfh3 Cheap Nike Air Rift Trainers Men Grey-Yellow. nap Back Cases can be opened by simply snapping it off. Casing is a must-have accessory always. Icwfh3 Cheap Nike Air Rift Trainers Men Grey-Yellow. I would have liked to saw a few more. Nike Air Max 2013 Sale. Nike Air Rift. Icwfh3 Cheap Nike Air Rift Trainers Men Grey-Yellow. Many vendors who had full time jobs were unable to participate only on Mondays, so the event is now held Saturday, Sunday, and Monday. like the complete gift sets from http://www. inally, when you get your new barbecue get a good bbq cookbook at the same time and really learn the best way to cook with the design of your choice. he access method for the K4L to the camera compartment is relatively straightforward: it is a zippered section with a heavy duty buckle to reduce strain on the heavy duty zippers.
Hozzászólás