Több típusú oldal (űrlapok, kezelőfelületek...) létrehozása egyetlen Drupal modulban

kkwx képe

Hellósztok
Nekem olyan problémám lenne, hogy két különféle űrlapot szeretnék (egyet a bejelentkezett és egyet a be nem jelentkezettek részére), és a felhasználók felületét ahol a saját beküldéseiket kezelhetik és egy admin felületet, ahol az összeset lehet kezelni. Az ilyesmit hogyan lehet megvalósítani egyetlen modulon belül? Hogy működik az ilyesmi a Drupal modulokban? Egyenlőre ott tartok, hogy egy űrlapot sikerült csinálnom :).
Előre is kösz a válaszokat

Nagy Gusztáv képe

Inkább azt írd le először, hogy mi ez a szolgáltatás, mi a célja, mit akarsz vele elérni. Utána tudunk konkrétabb javaslatokat tenni, akár az eddigi kísérletezéstől jelentősen eltérő, és akár egyszerűbb megoldásokat is.

0
0

Nagy Gusztáv

kkwx képe

összességében két foglalási űrlap kéne, az egyikben sok adattal a be nem jelentkezett felhasználóknak, a másikban pedig kevesebb adattal, mivel a bejelentkezett felhasználók az adatokat már megadták a regisztrációnál. próbálnék más névvel új űrlapot csinálni a modul fájlban, de szerintem úgy nem érné el, vagy nem tudom, és a hozzáférések beállítását sem teljesen értem hogy lehetne több mindenre tenni... utána pedig két kezelőfelület kéne, amiben a felhasználók a saját rendeléseiket kezelhetik és láthatják, a másikban pedig az adminok az összeset kezelhetik le (ezekben csak egy rövid lista kéne és a lista elemeinek részletes leírása esetleg és egy gomb néhány rádiógombbal amivel az állapotot lehetne kezelni...)... nekem úgy is tökéletes lenne ha a többit is hasonlóan lehetne elérni, ahogy most az első űrlapomat érem el,egy oldalba beágyazva ezt a kódot:

$output = drupal_get_form('reserve_myform');
return $output;

röviden ennyi :)

0
0
Nagy Gusztáv képe

bennem tovább erősödött az, hogy neked vagy webform kell, vagy 2 tartalomtípus, és programozás nélkül megoldható lenne.

Ezért még egyszer megkérdezem: mi ennek az űrlaposdinak a célja? (Nem technikailag, hanem funkcionálisan.)

0
0

Nagy Gusztáv

kkwx képe

sajnos nem használhatok kész modult, mert az a feladat, hogy modult írjak :(, pedig eredetileg én is Webform-al dolgoztam.
Funkcionálisan egy szobafoglalást kell megcsinálnom úgy hogy a bejelentkezett felhasználóknak csak a foglalás adatait kelljen megadni, a nem bejelentkezetteknek pedig saját adatokat is, emellett kéne olyan menü amiben a bejelentkezett felhasználók láthatják a foglalásaikat egy listában és a még nem ellenőrzött foglalásokat törölhetik (esetleg a már ellenőrzötteket lemondathatja, de ez már csak részlet kérdés), végül pedig egy olyan oldal kell amihez csak az admin és a moderátorok férhetnek hozzá és ott átállíthatják a rendelések állapotát (elfogadott, elutasított, fizetett, lemondott...)
röviden ennyi kéne 3-4 különböző oldal egyetlen modulból

0
0
Syrius XIX képe

Mit akarok!

A két emlitett oldalt egybe!

Azoknak legyen elérhető, akikkel én megosztom, tudjak feltenni a csapattal kapcsolatos videókat és az eredményekkel kapcsolatos képeket, .RAR file-okat, szavazást írhassak ki tagfelvétellel és az FP-Team életével kapcsolatos dolgokról, anélkül hogy bárki belenyomna, aki nem is tag, stb. Ennyit akarok.

De ezzel megint az lesz a bajotok, hogy nincs benne kérdés, de ahogy írtad, leírtam, mit akarok!

És pont ezért linkeltem be a két oldal címét, hogy tisztában legyetek az igénnyel és feleslegesen ne raboljuk egymás idejét. THX!

0
0
nevergone képe

Légyszíves!
De most komolyan. Ez a téma sem a te kérdésedről szól, mert az továbbra is itt van, az összes válasz, amit itt látsz, valami másról szól. Valami teljesen másról. Ha mindenhova odairogatsz csak úgy, akkor csúnyán összehúzom a szemöldököm és lemegyek hídba, az pedig nem lesz jó senkinek sem.
Szóval: Itt indítottál egy fórumtémát, ide tedd a kérdésedet, bár egyelőre ne tegyél most semmit sehova, mert itt és itt javasoltam két dolgot, előbb azokat próbáld ki, olvasd el, nézd meg, segít.

Sajnos ezentúl minden rossz helyre tett hozzászólásodat el fogom rejteni, mert ez így azért nem szép, ezen fórum írott és íratatlan szabályai rád is vonatkoznak.

0
-1
LaciApu képe

A hook_perm függvénnyel tudod a hozzáférési jogokat definiálni, amire a menünél lehet hivatkozni. Pl.:

function modulomneve_perm(){
  return array('első jog', 'második jog', 'harmadik jog');
}
 
 
function modulomneve_menu(){
  $items = array();
 
  $items['elso/form/utvonala'] = array(
    'title'            => 'Első form menüje',
    'page callback'    => 'elso_form_fuggvenye',
    'access arguments' => array('első jog'),
  );
  $items['masodik/form/utvonala'] = array(
    'title'            => 'Második form menüje',
    'page callback'    => 'masodik_form_fuggvenye',
    'access arguments' => array('második jog', 'harmadik jog'),
  );
  return $items;
} 
0
0
Bálint képe

Nem fog működni, amit írtál a második hook_menu bejegyzésedben.
Ha nincs megadva access callback, akkor alapértelmezetten a user_access() függvény hívódik meg, ami csak egy paramétert vár, te pedig az access arguments tömbben többet is át akarsz neki adni. Warningot nem fogsz látni, de csak az lesz így vizsgálva, hogy a user rendelkezik-e a 'második jog' elnevezésű jogosultsággal.

0
0
chx képe

function user_access($string, $account = NULL, $reset = FALSE) {
  if ($account->uid == 1) {

ha ennek egy stringet dobsz masodik argumentnek akkor abbol eleg meretes warning lesz ( nem emlekszem hogy fatal vagy warning a jutalma annak aki objectkent kezel egy stringet ).
0
0
Bálint képe

Tényleg, 4 db warning lesz a jutalom.

0
0
kkwx képe

sikerült megoldanom néhány problémát: több formot csináltam, adatbázis fel/letöltés, validálás, submit... de a hozzáférés-kezelés valahogy nem akar működni :S

ez a kódom:

function room_reserver_perm() {
  return array('access reservation form', 'administrate own reservastions', 'administration');
}
 
function room_reserver_menu() {
  $items = array();
 
  $items['reservation'] = array(
    'title' => 'Foglalás',
    'page callback' => 'drupal_get_form',
    'page arguments' => array('room_reserver_myform'),
    'type' => MENU_NORMAL_ITEM,
    'access arguments' => array('access reservation form'), 
  );
  $items['reservations'] = array(
    'title' => 'Foglalás',
    'page callback' => 'drupal_get_form',
    'page arguments' => array('room_reserver_reserve'),
    'type' => MENU_NORMAL_ITEM,
    'access arguments' => array('administrate own reservastions'), 
  );
 
  return $items;
}
 
 
function room_reserver_myform() {
 
  $form = array();
  $form['#submit'] = array('room_reserver_myform_submit');
 
$form['nev'] = array(
    '#type'=> 'textfield',
    '#title' => t('Név'),
    '#required' => TRUE,
    '#description' => t('Adja meg a nevét!'),
  );
 
$form['submit'] = array(
    '#type' => 'submit',
    '#value' => t('Foglalás elküldése'),
  );
  return $form;
}

Meg is jelennek a beállított pontok ('access reservation form', 'administrate own reservastions', 'administration') a Jogosultságoknál, de nincs jelentősége, hogy be vannak-e kapcsolva, mert alapból ki van kapcsolva mind és mégis megjelenik az űrlap mindenkinek :(. Tudna valaki segíteni, hogy mi lehet a gond?

0
0
kkwx képe

elvileg van egy elképzelésem: csak simán az adatbázisban beállítom, hogy ki mit érhet el. Ez elvileg már működik is, csak olyan gondom van, hogy adatbázist, hogyan érhetek el a modulból?

Így próbálkozok éppen:

$kapcsolat = mysql_connect("localhost", "admin", "admin");
if (!$kapcsolat) die("Nem sikerült kapcsolódni az adatbázishoz!");
mysql_select_db("dbase", $kapcsolat) or die("Nem sikerült kiválasztani az adatbázist!");

de a válasz: "Nem sikerült kapcsolódni az adatbázishoz!", mi lehet a gond?

És így megoldódna a problémám fele, de még mindig fenn áll, a másik fele: hogyan csinálom meg a másik ablakokat amikben lekezelhetem a beküldött rendeléseket.

Előre is kösz a további segítségeket :)

0
0
chx képe

De mi köze van ennek Drupalhoz? Az eredeti kérdésednek még csak-csak lenne értelme, bár http://www.catb.org/esr/faqs/smart-questions.html#homework illik ide. A thread-ben már elkezdtek az urak tanítgatni de ha fogalmad sincs semmilyen Drupal API-ról akkor azt várod hogy majd megírjuk neked?

Tehát. Mit próbáltál, hol akadtál el? Mi a konkrét kérdés? Az nem kérdés hogy oldjátok meg a házifeladatomat.

0
-1
kkwx képe

Egyáltalán nem azt kértem, hogy "oldjátok meg a házifeladatomat.", mivel ezen a témán belül már többször is leírtam a lehető legrészletesebben, hogy mit kell csinálnom és mi a problémám. Ennél jobban nem teljesen értem, hogy lehetne leírni a problémát. Igaz, lehet több mindent kérdeztem egyszerre, de ezek eléggé összeillő dolgok...

0
0
nevergone képe

Ennek semmi köze a Drupalhoz, sajnos még mindig nem tetted rendbe a PHP és Drupal ismereteidet.
El kellene döntened, hogy csak PHP-t használva, vagy a Drupalra építve szeretnéd megoldani a feladatot, a jelenlegi helyzetedet elnézve inkább add vissza a feladatot és olyant kérj, amit tényleg meg tudsz oldani.

0
0
kkwx képe

Alapból nem pont így csináltam. A Drupalból kikértem a felhasználó adatait így:

require_once './includes/bootstrap.inc';
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);
global $user;

és így kezeltem le, hogy csak a bejelentkezettek láthassanak bizonyos részeket:

if ($az != ""){ }

tudtommal ez egy Drupalos megoldás és ahol csak a bejelentkezést kell nézni ott sokkal egyszerűbb megoldás mint a perm-es (aminek ha csak a bejelentkezést kell nézni akkor semmi értelme). Igazából ha sikerül megértenem a PERM-et akkor azzal szeretném megcsinálni a beküldött űrlapokat lekezelő felületet, de ez egy tartalékmegoldás amit használhatok ha úgy semmiképp nem sikerül.
+ Szükség lesz mindenképpen adatbázis-lekérdezésre ha majd a beküldött foglalásokat akarom kezelni, mert azokat valahogy majd ki kell olvasnom az adatbázisból.

És hidd el én örülnék a legjobban ha leadhatnám és dolgozhatnék valami mással, de a Drupallal az alaphonlapon már vagy fél évet dolgoztam és vagy 80 oldalnyi dokumentációt írtam. Végül választhattam, hogy úgy fejezem be a melómat, hogy írok hozzá egy Drupal modult, vagy teljesen újra kezdek mindent és az eddigi munkám elveszik, és mivel itt mikor kérdeztem mindenki azt mondta, hogy a Drupal modulírás milyen jó és egyszerű dolog, így azt választottam...

0
0
nevergone képe

itt mikor kérdeztem mindenki azt mondta, hogy a Drupal modulírás milyen jó és egyszerű dolog, így azt választottam...

Ez így van, ha megvannak a szükséges PHP ismeretek megfelelő szinten, amelyek attól tartok, nálad hiányoznak. Viszont attól is tartok, hogy nincs időd, lehetőséged, kedved, kitartásod ezt megfelelően pótolni.

0
0
kkwx képe

ez igaz:
- nincs időm (csak pár hetem van megcsinálni ezt a modult így nem tudom megtanulni a 0-ról, hanem csak a feladatra koncentrálva célirányosan lehet megoldani...)
- nincs lehetőségem: a suliban semmi segítségem nincs mert senki nem ért hozzá, csak a Drupal.hu-s fórum ahol segítséget kaphatok
- nincs kedvem, kitartásom: ez is igaz. Annyira elegem van már ebből az iskolának nevezett cirkuszból, hogy már csak szeretnék túl lenni az egészen. Majd idővel komolyan belemerülök a dolgokba, mert érdekel, csak most nagyon ki vagyok már tőle...

Azt viszont nem értem, hogy mi a gond a kérdéseimmel? Szerintem teljesen egyértelműek:
- Kéne egy felület, amiben le lehet kezelni a beküldött űrlapokat, vagyis milyen módon tudok csinálni egy sima oldalt a modulon keresztül amiben láthatóak a beküldött űrlapok egy listában és át lehet állítani bizonyos értékeket benne (pl az állapotát). Elvileg csak egy oldal kéne, bele egy listaelem, amit feltölthetek egy SQl lekérdezéssel és néhány gomb/rádiógomb amikkel átállítom az állapotokat, esetleg egy szövegmező ahova részletesebben listázná ki a listából kiválasztott rendelést, vagyis ezeket a mezőtípusokat, hogyan valósíthatom meg Drupal modulon keresztül egy oldalban. Ebben az a legrosszabb, hogy még rákeresni se tudnék, mert fogalmam sincs hogyan lehetne ilyesmire rákeresni + nem egy nagy dolog, hanem csak sok apróságból áll össze :S.
- A másik pedig, hogyan kell modulban elérni az adatbázist, mert az előzőleg leírt módon nem működött és ha menne akkor se lenne Drupal modul szabványos megoldás, és az előbb említett problémám megoldásához ez elengedhetetlen.
Ennél részletesebben nem tudom leírni, csak ha leírom, hogy konkrétan milyen értékek vannak beküldve meg hasonlók, de azoknak semmi jelentőségük, mert nem akarom megcsináltatni a feladatot másokkal, csak azt szeretném tudni, hogyan kell megcsinálni, vagy max kapok egy sémát ami alapján megoldhatnám, e ha valami tényleg fontos infótz kihagytam akkor bocs :).

Kösz előre is még a legapróbb segítséget is :).

0
0
Den képe

A feladat megoldásához mindenképpen fog kelleni bizonyos tanulás. Én a pro drupal development könyvet ajánlom neked (2-es kiadás, minden benne van). Ha nem tudsz angolul, akkor... akkor az szívás.

Ami neked kell. Alap modul, form apival felépíted a formodad, az eredményeket listázod. Mindezt a pdd2 könyvből kiollózott példákból kiindulva meg lehet csinálni.

Rengeteg tutorial van, modul fejlesztés drupalhoz. Keress egyet és hajrá. Ebből se lesz sok magyarul. De rengeteg példa modul van, amit szét lehet szedni, belenézni mit, hogyan csinál.

Ennyi, ne bonyolítsd túl az életed: modul, bele egy menüpont, form api, form feldolgozás, listázás. Ennyi kell neked, szerintem, a feladathoz.

A pdd könyv feltételezi a PHP tudást valamilyen szinten, ha az sincs meg, akkor... akkor a feladat megírása közben szeded magadra.

0
0
kkwx képe

én próbálkozok keresni megoldásokat célirányosan, de nem mindig értem, hogy mi hogyan van :( (egy könyvet elolvasni meg nincs időm :( ).
Na mindegy keresgélek, hátha sikerül találnom valami hasznosat...

Azt az apróságot, hogy hogyan csinálok egy másik ablakot egy modulba az űrlap mellé amivel kezelhetem, azt még azért el tudná mondani nekem valaki? mert az egy olyan dolog, amire még azt sem tudom, hogyan kereshetnék rá :S. Kösz.

0
0
Den képe

én próbálkozok keresni megoldásokat célirányosan, de nem mindig értem, hogy mi hogyan van :( (egy könyvet elolvasni meg nincs időm :( ).

Szerintem, többen leírtuk már neked, de akkor mégegyszer: ez így nem fog menni. Mintahogy látjuk a példádon, nem is megy. Bizonyos mennyiségű energiát be kell fektetni, különben elfórumozunk itt még egy darabig, eredmény nélkül. Engem nem zavar, ha tudok valamiben ugyis segítek, de most neked van határidőd, nem nekem :P

Ha nincs időd megtanulni, fogalmad sincs mit akarsz, akkor hogy keresel célirányosan? Hátha valakinek volt már ugyanez a feladata? Na, ezt nem értem.

Tképpen, azt sem, ha suliba jársz, időd nincs tanulni, akkor minek jársz oda? Vagy miért nem adod le a feladatot, és keresel egy másikat, amihez elég a word-excel-powerpoint tudás?

Nem flame akar lenni, csak most már kezdek kíváncsi lenni, hogy hogy lehet a semmiből, energia nélkül valamit csinálni. Úgy érzem, a perpetuum-mobile keletkezésénél ott kell lennem... :D

Na mindegy keresgélek, hátha sikerül találnom valami hasznosat...

Szerintem már találtál nagyon sok hasznosat. Itt. Csak most már neked kellene kezdened vele valamit.

0
0
kkwx képe

ez igaz, már nagyon sok hasznos infót találtam és kaptam itt a fórumon, és nagyon hálás vagyok értük, de ebben a konkrét témában még szinte semmi választ nem kaptam :(, egyedül a hook_perm-es válasz, csak az már nagyjából meg volt valósítva, és elvileg működik, bár valami még kimaradhatott mert nincs jelentősége, hogy mit állítok ott be, mindenkinek megjelenik :(.

Én próbálok kezdeni valamit, rá is kerestem pl az adatbázis-kapcsolatokra, és találtam is oldalakat amik hasznosnak tűntek:

http://api.drupal.org/api/group/database/6
http://mameou.wordpress.com/2008/05/06/drupal-working-with-databases/

de végül egyik se működött :(, így se:

$result = db_query_range('SELECT rid FROM {users_roles} WHERE uid = '$az);
while ($node = db_fetch_object($result)) {
// Perform operations on $node->body, etc. here.
}

és így se:

$db_url = 'mysql://user:pass@localhost/dbname';
include_once('includes/bootstrap.inc');
drupal_bootstrap(DRUPAL_BOOTSTRAP_DATABASE);
$sql = "SELECT rid FROM {users_roles} WHERE uid = '$az'"
$result = db_query(db_rewrite_sql($sql));
while ($data = db_fetch_object($result)) {
$node = node_load( $data->nid );
print node_view( $node, TRUE );
}

de az ilyesmire legalább rá tudok keresni, de azt hogy egy külön kiértékelő ablakot hogyan csinálok, azt még magyarul se nagyon tudom megfogalmazni, nem hogy Google-ben rákeresni angolul :S, vagyis tudom, hogy mit akarok, csak célirányosan nem tudok keresni, így csak itt tudom megkérdezni, pedig ez valami apróság, erre egy sorban lehetne válaszolni, hogy pl olyan mint a "function room_reserver_myform() {" csak a myform helyett valami más kell, mondjuk page, vagy ilyesmi, és meghívom valahogy így (tudom, hogy nem így kell, csak azért írom le, mert szerintem valami hasonló módon kellhet megcsinálni vagy ilyesmi):
$output = drupal_get_page('room_reserver_page');
return $output;
vagy esetleg a "function room_reserver_myform()"-nak adok értéket: "function room_reserver_myform($num)", és az alapján adom ki az űrlapot vagy a kiértékelő felületet?
vagy nem tudom, a listaelemek beillesztését meg hasonlókat már meg tudom csinálni, de itt el vagyok akadva :(, hiába nézek végig több száz weboldalt, vagy olvasok el könyveket ha azt nem tudom, hogy mit is kell keresnem :(, lemondani meg azért nem tudom, mert akkor elveszik fél éves munkám és ráadásul csúszok még fél évet, ami azért kellemetlen, mert már így is két évet csúsztam :(

0
0
Den képe

Figy, első dolog:

- telepítesz, bekonfigolsz egy drupalt. Menjen a szervereden (localhost, távoli szerver, az mindegy). A böngészőben mutasson valamit.

Ez feltételezi, hogy: a settings.php-t kitöltötted megfelelően, és _van_ adatbázis kapcsolat. Innentől neked semmit nem kell tenned, csak egy modult írni.

Az sql hibától eltekintve, ennek működnie kell. Mert van db kapcsolatod már.

$result = db_query_range('SELECT rid FROM {users_roles} WHERE uid = '$az);

A másik bootsrap-es marhaságot értelmezni se tudom, hogy mire kell neked. Nincs rá szükség beállított Drupal esetén. Ugyanis az már lefut.

Még mindig nem fogom, mit szeretnél, de szerintem: van egy weboldal. Ahol van egy form. Azt kitöltik, beírja a db-be az értékeket, és az kitöltéseket lehet listázni.

Erre egy minimális modult kell írnod. A minimális modul megírásához a pdd2 könyvben lévő példák tökéletesen elegek:

Tehát, készitesz egy modult (module + info), abba egy menu elemet, ami visszaad egy formot. Form submitban elmented.

Kb. ennyi az egész. De kell egy bekonfigurált drupal. Az az alap.

0
0
kkwx képe

Kösz, utánanézek a PDD2 könyvnek. Ezt le lehet valahonnan szedni, vagy csak boltból lehet megvásárolni? És abban valóban van példa egy ilyen egyszerű űrlapra és a lekezelésére? Mert az tényleg hasznos lenne :).

A bekonfigurált Drupal már meg van.
Pontosan az kell nekem amit leírtál: "Ahol van egy form. Azt kitöltik, beírja a db-be az értékeket, és a kitöltéseket lehet listázni." Ezek a kilistázások (egy az adminnak aki mindent kezelhet, és egy a a felhasználóknak akik csak a sajátjaikat) kellenének nekem 1-2 külön ablakban (akár egybe megvalósítva, akár külön).

Próbálgatom ezt, de nem akar menni:
$result = db_query_range('SELECT rid FROM {users_roles} WHERE uid = '$az);
ezt adja hibaként:
Parse error: syntax error, unexpected T_VARIABLE in C:\wamp\www\avh\sites\all\modules\room_reserver\room_reserver.module on line 46
Lehet rossz helyre írom be? Mert csak beírom a form mellé, és lehet ez a gáz.
A result ilyenkor minek számít? String, vektor, tömb vagy más?

0
0
Den képe

PHP-ban a stringeket a pont jel (.) köti össze.

$result = db_query_range('SELECT rid FROM {users_roles} WHERE uid = ' . $az);

Az előbb azért nem javítottam, mert gondoltam, csak elgépelted. Rosszul gondoltam.

"db query in drupal" varázsszavakra a google első találatban ezt adja:

http://api.drupal.org/api/group/database/6

Itt a lényeg: result = db_query_range('SELECT n.nid, n.title, n.created FROM {node} n WHERE n.uid = %d', $uid, 0, 10);

n.uid = %d a lényeg. Amit te írtál fenn az az első osztályos, hogyan írjunk "sql injection"-nel teli kódót példa. De a fenti linken található api oldal ezt is elmagyarázza.

Még szerencse, hogy szintaktikailag hibás a kódód. :)

0
0
kkwx képe

kösz, így működik :), bár nem teljesen értem miért, vagyis csak sejtem: ezek szerint nem lehet csakúgy összehasonlítani egy változóval hanem hozzá kell kapcsolni egy üres értékhez. Na de mindegy, ez nem is fontos a lényeg, hogy megy :). Sikerült beszereznem egy "Apress - Pro Drupal Development 2nd Edition"-t. Most abból próbálom kiokoskodni a dolgokat :).
És bocs így utólag a sok bénázásért :).

0
0