Přeskočit přímo na text


Rules: jak podmínit uložení příspěvku zaškrtnutím checkboxu

Cílem je, aby se uzel uložil jen při splnění podmínky (typicky: zaškrtnutí políčka – něco jako „Souhlasím s pravidly…“; to je ale jen příklad, teoreticky může být podmínka jakákoliv).

Příklad zadání

Z webu odeslat přihlášku ke vzdělávacímu programu, kde jsou specifikované „Podmínky účasti v programu“ a u nich zaškrtávací políčko s hodnotou „Souhlasím“. Pokud uživatel políčko nezaškrtne, přihláška se nesmí uložit a musí se vypsat chybová hláška.

Jak na to

Budete potřebovat moduly: Content Construction Kit – CCK, Rules, případně Token (pokud chcete používat tokeny třeba pro obsah chybové hlášky, v daném případě to není nutné; pozn. – pokud vím, s Rules zatím spolupracuje pouze -dev verze modulu Token).

Vytvořte typ obsahu Přihláška (strojový název prihlaska) a naklikejte pole, jaká potřebujete (kdo neví, základní tutoriál k CCK je zde). Podstatné je vytvořit pole s podmínkami účasti a zaškrtávacím polem. Já jsem to v reálu udělala tak, že jsem vytvořila skupinu (group v CCK) nazvanou Podmínky účasti (strojový název: group_prihlas­ka_conditions) a text podmínek zadala jako vysvětlivky k této skupině. Možná by to šlo i jinak a líp, ale nechme to tak – ostatně, vyplynula z toho jedna zajímavá záludnost, o kterou se s vámi chci podělit. Do této skupiny přidejte pole: Souhlas s podmínkami (strojový název: field_prihlas­ka_cond_conf), typ Text a widget „Single on/off checkbox“. Jako „Povolené hodnoty“ zadejte:
0|Nesouhlasím
1|Odesláním přihlášky souhlasím s podmínkami účasti v programu.

Další kroky se týkají modulu Rules. Jedná se o nastavení události pro formulář (zde editačníformulář uzlu), takže jděte do: Rules > Form events. Zaškrtněte: Enable event activation messages on forms, Display form element IDs … a uložte. Dále přejděte na editační formulář Přihlášky (node/add/prih­laska) a klikněte na Activate events for prihlaska_node_for­m, potvrďte na další stránce.

Další nastavení se odehraje v: Rules > Trigerred Rules > Add a new rule. Popis: „Přihláška – error – není souhlas s podmínkami“, Event: Prihlaska node form is being validated. Add a condition: Form element has value:

Odbočka: Zde je třeba vyplnit správné ID formulářového prvku. Možná byste si mysleli, že tam stačí lupnout strojový název vytvořeného CCK pole, ale v tom je právě ta záludnost, která mě stála 20 minut mého mladého a krásného života. Možnost „Display form elements IDs“, kterou Rules nabízí, tam je asi právě proto, že to není tak docela triviální :-). Když se podíváte na formulář pro vložení přihlášky (node/add/prih­laska), zjistíte, že správné ID je v tomto případě group_prihlas­ka_conditions[fi­eld_prihlaska_con­d_conf]. (Ještě technická poznámka – zobrazování ID ve formuláři se deaktivuje, jakmile se odhlásíte ze systému, pokud ho pak znovu potřebujete, musíte ho opět zapnout).

Vraťme se k nastavení Rules: Add a condition: Form element ID: group_prihlas­ka_conditions[fi­eld_prihlaska_con­d_conf], zaškrtněte „Negate“ a zadejte Value(s): 1. (Když hodnota pole není 1, tedy souhlas, chceme vypsat chybu).
Add an action: Set a form error, Form element ID: field_prihlas­ka_cond_conf. (Zde nastavujeme, které pole se má označit jako chybně vyplněné. V tomto případě mi naopak funguje pouze jednoduchý strojový název pole a přiznám se, že netuším, v čem je rozdíl). Zpráva: Bez souhlasu s podmínkami se nemůžete na program přihlásit.

To by mělo být všechno, zbývá vyzkoušet. Předem díky za případné komentáře.

About the authornení
 

Velmi dobry clanok. Dik.

Velmi dobry clanok. Dik. Skusal som podla toho prirobit v registracnom formulari checkbox pomocou ktoreho by sa registrovany uzivatel prihlasil na nejaky odber. Checkbox som vytvoril v nastaveni profilov v sprave pouzivatelov. V Rules som vytvoril podla vasho navodu pravidlo ale nefunguje to. Odhadujem ze ten user checbox nevracia ziadne hodnoty, tak ako to mate vy nastavene v tom CCK poli. A neviem ako by som CCK pole zahrnul do registracneho formulara. Predpokladam ze mi budete vediet poradit.

Pro registrační formulář je

Pro registrační formulář je na to modul: http://drupal.org/…terms_of_use (nezkoušela jsem). Já jsem to dělala přes Rules právě proto, že jsem to potřebovala mimo registraci. Nicméně pokud je k tomu důvod, profil uživatele může být taky uzel (modul Content Profile) a pak můžete tento návod pro registraci použít.

Pozrel som sa na to. Terms of

Pozrel som sa na to. Terms of use je jednorazova zalezitost, ja by som potreboval aby sa uzivatel mohol aj odhlasit z odberu. Content Profile vyzera velmi zaujimavo, ale je to trosku zlozitejsie momentalne mi to nevyhovuje, potreboval by som nieco uplne jednoduche.
Napriklad ked som v module profile vytvoril namiesto checkboxu select a v Rules vlozil do values textovu hodnotu z toho selectu tak vsetko funguje. Pri checkboxe vlastne neviem ake hodnoty tam zadat. Skusal som 1 a 0, ale stale mi to vracia FALSE, to vidim vo vypise ladenia Debug rule evaluation.

Viem ze na odbery sprav su moduly, skusal som Notification aj Simplenews, ale potreboval by som nieco uplne automaticke, pri pridani noveho obsahu pri konkretnom type obsahu poslat registrovanym uzivatelom automaticky spravu o novom obsahu. Aby clovek co to bude spravovat nemusel nic vytvarat a posielat. Rules sa mi na to najviac pozdava aj ten vas navod ked som precital tak som si povedal ze to je ono, skoda ze neviem dostat z toho checkboxu tie hodnoty 0 a 1. Ked sa mi to nepodari vyriesim to tym selectom.

Já jsem si teď teprve pořádně

Já jsem si teď teprve pořádně přečetla, na co to vlastně chcete. Na to je Notifications. Editor nic vytvářet nemusí.

Obsah mého blogpostu se týká pouze a jedině checkboxu „souhlasím s něčím“, bez kterého se nedovolí uložit uzel (a dá se to použít kdekoliv, kde používáte CCK). Vy chcete asi něco jiného.

Ano chcel som vas navod

Ano chcel som vas navod pouzit na trochu inu situaciu (co sa mi takmer podarilo). Notifications som skusal, problem som mal s tymi frontami a tiez mi spolahlivo nefungovali intervaly odosielania. Dovod bude ze s tym modulom velmi neviem robit. Kazdopadne dik za info napr. ten modul Content Profile vyzera velmi zaujimavo.

Content Profile je super, já

Content Profile je super, já ho používám všude místo Profile. Jinak Notifications na první pohled je na oběšení :-), ale funguje spolehlivě. Když se v tom člověk trochu pohrabe (konfiguračně), dá se i docílit toho, aby se uživatel z těch mnoha možností nastavení nezbláznil (= aby tam měl jen to, co potřebuje). Základem je vůbec nezapínat, co nechci používat.

Poslat nový komentář

  • You can use Texy! to format and alter entered content.
  • Povolené HTML značky: <em> <strong> <b> <i> <br> <code> <ul> <ol> <li> <pre> <pre class="php">
  • You can enable syntax highlighting of source code with the following tags: <code>, <blockcode>. Beside the tag style "<foo>" it is also possible to use "[foo]".

Více informací o možnostech formátování

Hledat

Přihlášení

Bezpečnost Drupalu

Z hlediska bezpečnosti je Drupal na velmi vysoké úrovni, díky propracovanému systému hlášení, prověřování a řešení možných problémů.

Čtěte více a odebírejte bezpečnostní aktuality

Poslední komentáře

Kdo je online

Momentálně je online 1 uživatel a 0 hostů.

Online uživatelé

Support

Psychologie - poradenství