Node modul kiegészítése

Laszlo1818 képe

Sziasztok,

Azért fordulok hozzátok, mert sajnos elakadtam egy kis érdekes problémába és remélem ti tudtok nyújtani kis segítséget a témában.
Sikerült lefejlesztenem a egy saját modult, amiben szinte mindent meg tudtam oldani, amire szükségem volt és működik is kiválóan:

  • Az Example Task modult egészítettem ki saját formokkal
  • Így az alap task lementésén felül lehet hozzá paramétert rendelni korlátlan típusban és számban
  • Ezeket a paramétertípusokat én elkészítem lementem és a felhasználó mikor választ milyen paraméter típust szeretne felvinni akkor a megfelelő formot legenerálom neki.
  • Példa: GPS típust akar felvinni akkor kap három mezőt és ha kitölti akkor letárolhatja a Long. Alt. Att. értékeket.

Ez eddig nagyon szép és jól ment, bár nem tudom mekkora hiba de csak úgy tudtam megoldani ezeket a típusonként legenerálódó formokat, hogy a function-ok egy szöveges változóval tértek vissza, amikben a összeállt a form vagy éppen a tartalom.
Itt jött el a fordulópont, ugyanis olyan kérés érkezett felém, hogy tudjam használni az Organic Groups Modult, és annak segítségével lehessen feltölteni tartalmat és csak a csoport tagjai láthassák.
Ezt sajnos én nem tudtam beleírni a modulomba szerintem felesleges is, így az jutott eszembe, hogy mi lenne ha a már meglévő Node Modult egészíteném ki az Example Task Modul helyett.
Azt szeretném, hogy az eddig megírt funkcióimat bele tudjam írni a node modulba.
Itt jött az első problémám, hogy nem tudok olyan menu-ket létrehozni, amivel meg tudnám oldani, hogy visszatérjek egy szöveges változóval, amiben például egy form van.
Abban kellene segíteni valakinek ha tud, hogy node view, edit kis menüsorához, hogyan tudnék hozzáadni egy plusz fület, mondjuk Parameters, ahol a függvényem visszatérési értéket én írhatom be például ezt: „Ezt akarom majd lecserélni.”
Elnézést ha hosszú lett de azt akartam lássátok a problémát, ezért képet is csatoltam, amit ha megnéztek szerintem összeáll a gondolatmenetem nektek is.

Előre is köszönöm mindenki segítségét.

Köszönettel,
László

Melyik modulhoz, modulokhoz kapcsolódik a téma?: 
Drupal verzió: 
aruna képe

...olyan kérés érkezett felém, hogy tudjam használni az Organic Groups Modult, és annak segítségével lehessen feltölteni tartalmat és csak a csoport tagjai láthassák.
Ezt sajnos én nem tudtam beleírni a modulomba szerintem felesleges is...

Az og (organic group) csoport azonosító belekerül a node-ba, ezt kódból tudod vizsgálni:

$node=node_load($nid);
$ogId=$node->og_group_ref['und'][0]['target_id'];

http://drupal.stackexchange.com/questions/23461/how-can-i-get-the-group-...

Ez alapján tudod tesztelni, hogy a user tagja-e ennek a csoportnak:

if (og_is_member($ogId)) {
  drupal_set_message('Current logged in user is member');
}

http://drupal.stackexchange.com/questions/58940/og-groups-how-to-check-i...

Szóval nem lehet annyira nehéz kódból szűrni, hogy az adott og csoportba tartozó user-nek van-e hozzáférése a node-hoz. Még nem használtam az organic group-ot, lehet hogy a fenti kód nem jó.

----------

Abban kellene segíteni valakinek ha tud, hogy node view, edit kis menüsorához, hogyan tudnék hozzáadni egy plusz fület, mondjuk Parameters...

http://stackoverflow.com/questions/2999589/add-a-tab-to-drupal-node

1
0
Laszlo1818 képe

Szia,

Köszönöm gyors válaszod az og metódusoknak nagyon örülök nem gondoltam eddig rá sajnos. A legfőbb baj az az én általam elkészítettel, hogy láthatósági szabályt nem kaphat csak egy node típusú dolog ezért akarok áttérni arra.

A képen, ahogy láthatod a fület sikerült pluszba odarakni, de ahogy a 'page callbecket' lecserélem erről:

//node.module
$items['node/%node/params'] = array(
'title' => 'Parameters',
'page callback' => 'node_page_edit',
'page arguments' => array(1),
'access callback' => 'node_access',
'access arguments' => array('update', 1),
'weight' => 0,
'type' => MENU_LOCAL_TASK,
'context' => MENU_CONTEXT_PAGE | MENU_CONTEXT_INLINE,
'file' => 'node.pages.inc',
);

Ilyenre:

//node.module
$items['node/%node/params'] = array(
'title' => 'Parameters',
'page callback' => 'sajat_function',
'page arguments' => array(1),
'access callback' => 'node_access',
'access arguments' => array('update', 1),
'weight' => 0,
'type' => MENU_LOCAL_TASK,
'context' => MENU_CONTEXT_PAGE | MENU_CONTEXT_INLINE,
'file' => 'node.pages.inc',
);

Ezt pedig belerakom az admin.inc fájlba

//node.amin.inc
function sajat_function(){
$output="Jelenj meg.";
return $output;
}

Ilyenkor az oldal meghívásakor nem jelenik meg az output tartalma hanem sajnos csak fehér oldal, mintha a function nem is létezne.
Olyanra gondolok most éppen, hogy sajnos mint az edit is az én metódusom is belefut még egy function-ba, ide:

//node.amin.inc
function node_admin_nodes() {
...
if (node_access('update', $node)) {
$operations['edit'] = array(
'title' => t('edit'),
'href' => 'node/' . $node->nid . '/edit',
'query' => $destination,
);
}
...
}

Szerintem itt bukik meg a dolog, de sajnos nem tudom, hogy lehetne úgy megírni ezt a két dolgot, hogy működjön.

Köszönettel,
László

0
0
aruna képe

Ilyenkor az oldal meghívásakor nem jelenik meg az output tartalma hanem sajnos csak fehér oldal, mintha a function nem is létezne.

Az error.log fájlba nem kerül valami?

https://drupal.org/node/1056468

0
0
Laszlo1818 képe

Warning: call_user_func_array() [function.call-user-func-array]: First argument is expected to be a valid callback, 'node_managed_params' was given in menu_execute_active_handler() (line 517 of /var/www/vhosts/bmfnik.hu/www/iar/szakdolgozatok/meszaros.laszlo/drupal7/includes/menu.inc).

Az error.log-ot pedig holnapra kiderítem.

Köszi,
László

0
0
aruna képe

function node_page_edit($node) {
  $type_name = node_type_get_name($node);
  drupal_set_title(t('<em>Edit @type</em> @title', array('@type' => $type_name, '@title' => $node->title)), PASS_THROUGH);
  return drupal_get_form($node->type . '_node_form', $node);
}

Ennek mintájára a saját függvényed:

function sajat_function($node) { // Eddig nem volt paraméter itt!
  $output="Jelenj meg.";
  return $output;
}

A másik fontos dolog.

Ha azt írod a menü definícióban:

'file' => 'node.pages.inc',

Akkor ide rakd a saját függvényedet (és ne ide: //node.amin.inc)

1
0
Laszlo1818 képe

Szia,

Köszönöm szépen segítséged, amatőr hibám volt
'file' => 'node.pages.inc', ezt elnéztem és rossz fájlban katattam másik fájlba beleírtam a metódust és működik is.
Azt szeretném még kérdezni, hogy az OG metódusokat mint az első hozzászólásodba írtál honnan nézted illetve, honnan tudom kederíteni milyen egyéb hasznos metódust írtak egy modulhoz?

Üdv,
László

0
0
aruna képe

Azt szeretném még kérdezni, hogy az OG metódusokat mint az első hozzászólásodba írtál honnan nézted

Valamilyen kulcsszavakra kerestem a google-ben, már nem emlékszem, a találat linkjeit beraktam a hozzászólásba.

honnan tudom kederíteni milyen egyéb hasznos metódust írtak egy modulhoz?

google-be: module_neve + api

pl. a drupalcontrib.org-on, google: rules api

http://drupalcontrib.org/api/drupal/contributions!rules!rules.api.php/7

2
0
hron84 képe

Igen, sajnos a drupalcontrib-on az og-nek csak a 6.x verzioja van fenn: http://drupalcontrib.org/api/drupal/contributions%21og%21og.module/6

A teljes modul lista itt (a verzioszamra kell kattintani az API doksiert, ha nem kattinthato, nincs fenn): http://drupalcontrib.org/api_helper/tracked_branches

1
0

--

()=() Ki oda vagyik,
('Y') hol szall a galamb
C . C elszalasztja a
()_() kincset itt alant.