E-mail küldése egyes moderátoroknak

mopet képe

Sziasztok!

A felhasználók(moderátorok is) 10 kerületbe vannak sorolva. Az általuk beküldött tartalmak csak a moderátorok jóváhagyása után jelenhetnek meg. Azt szeretném elérni, hogy minden olyan moderátor kapjon e-mailt az új tartalmakról, akinek a kerülete megegyezik a beküldő kerületével.
Rules modullal próbálkoztam eddig, de csak annyit tudtam beállítani, hogy az összes moderátor kapjon e-mailt kerületi szűrés nélkül.

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

moderáláshoz melyik modult vagy modulokat állítottad be?

1
0

Geva
----- Geva drupal sminkek

mopet képe

nem állítottam be hozzá külön modult. Egyszerűen rejtettre állítottam be a tartalmak megjelenítését alapértelmezettként, ennek megváltoztatására pedig csak a moderátoroknak adtam jogot.

0
0
Geva képe

A keruletet mikent alakitottad ki, hogyan soroltad be a felhasznalokat? Taxonomia vagy tartalomtipus vagy mi a kerulet?
...rules-l biztosan megoldhato lesz, ha tudhatjuk a reszleteket :-(
Eddig jo amit csinaltal

0
0

Geva
----- Geva drupal sminkek

mopet képe

10 kerületbe van besorolva minden regisztrált felhasználó. A regisztrációkor kell kiválasztani ezt egy legördülős mezőből. Egy kerületnek 1-5 moderátora van, akik változni fognak az idők folyamán.
A beküldött módszertani játékok (tartalmak) nem kerület szerint vannak címkézve, hanem annak függvényében, hogy milyen tudásanyag átadásához hasznosíthatók. Ez a címkézés taxonomyval van megoldva. A kerületi bontásra csupán a moderáláskor van szükség, mert azt szeretnénk, ha a moderátorok a saját kerületükben tevékenykedő normál felhasználók játékait moderálnák, mert kerületeken belül általában ismerik egymást az emberek. Ez pedig azért előnyös, mert a tartalmak típusából adódóan a moderálás arról szól, hogy csak jól kidolgozott, minőségi játékok kerüljenek a be a közösbe. Ez pedig sokszor kétirányú kommunikációt igényel a moderátor és a felhasználó között.

0
0
Dahar képe

ezt rules-al nem annyira egyszerű összerakni, talán úgy működhet úgy hogy készítesz egy rule-t, az evet a tartalombeküldés, feltétel hogy új, meg a típus,meg amit még lehet.., action meg hogy fetch entity by property, ezzel be tudod loadolni azokat akik tartalom szerzőjével azonos kerületűek(ha itt nincs meg a szerző kerületének a tokenje akkor még bűvészkedni kell egy kicsit), ezen egy loop-al végig kell menni a loop aktuális elemég pedig rules összetevővel szűrni hogy csak moderátorra legyen érvényes és az összetevő action pedig a levél küldés.

Ez most csak zsigerből jött de szerintem működhet, bár általában amikor ennyire összetetten akartam valamit a rules-al megcsinálni az volt a tapasztalatom hogy a rules mély irmeretének hiánya miatt gyorsabban végeztem ha saját tules feltételt és akciót csinálta.

Sok sikert a feladathoz!

1
0
mopet képe

Köszönöm a leírást, igazán hasznosnak bizonyult. Actionnek beállítottam, hogy fetch entity by property, utána végigküldtem rajta a loopot. Egyenlőre azok kapnak e-mailt, akik ugyanabban a kerületben vannak, mint a beküldő, viszont nem tudom megszűrni, hogy csak a moderátorok kapjanak.
Úgy próbálkoztam, hogy az előző action alá beküldtem még egy fetch entityt. Entitás típusának beállítottam a felhasználót, tulajdonságnak a szerepkört, de a lekérni kívánt entitás tulajdonságértéke mezőnél nem tudok megadni fix értéket, csak tokent, pedig nekem arra lenne szükségem, hogy ez a mező mindig a moderátor értéket vegye fel. Lehet, hogy rossz szintaktikát használok, esetleg az adott szerepkörnek valami rendszer által kezelt nevét, ID számát kellene használnom? Ha igen, azt hol találom.
Jó egyáltalán az az elképzelés, hogy egymás alá rendelt fetch entity-val próbálkozom, vagy van sokkal egyszerűbb?

0
0
Dahar képe

a loopon belül egy összetevőnek kellene lenni.
Ugye itt tudsz hozzáadni összetevőt:
admin/config/workflow/rules/components/add
Ha a legördülőből a szabály típusú összetevőt választot akkor megadhatsz feltételt és akciót is.
Szóval kiszávasztod a szabály típusú összetevőt, majd tovább.
Adsz neki nevet, és a változóknál megadsz egy bemeneti változót ez az adott user-ed lesz, tehát adattípus: felhasználó entitás, cimke: act_user, program ált. haszn. név: user. majd változtatások mentése.
Hozzáadod a feltéstelt hogy has user role és abban megadod az adott csoportot
Az action meg a levélküldés és kész az összetevőd.

Az így elkészült összetevőt a loopnal hozzáadod akcióként és elvileg működik.

0
0
Geva képe

igen, szerintem is:
mivel sem loop-ban sem az akcióban feltételt már nem tudsz megadni, ezért külön - ahogy Dahar írta - összetevőként kell meghatározni a címzett adminokat az akcióhoz

0
0

Geva
----- Geva drupal sminkek

mopet képe

Nagyon szépen köszönöm a segítségeteket! Magamtól, illetve videókból, angol leírásokból nem mostanában jöttem volna rá erre az elsőre nyakatekertnek tűnő dologra. Az utókor számára pedig összefoglalom a végső megoldást (azért angolul mert arra bárki vissza tudja állítani a rendszert, míg magyar nem biztos, hogy van mindenkinél):

1. Új összetevő felvétele (components)
components fül, add new component
component plugin: rule
-> save
name: tetszőleges
data type: entity - user
label: act user
machine name: user
usage: parameter
-> Save changes
conditions: User has role(s)
Parameter: User: [user], Roles: moderátor
actions: Send mail
Parameter: To: [user:mail], Subject: teszt, Message: teszt,
From: teszt, Language: [user:language]

2. Új szabály felvétele (rules)
event: After saving new content of type Módszertan
actions: Fetch entity by property
Parameter: Entity type: User,
Property: Kerület,
Value: [node:author:field-kerulet]
Provides variables: Fetched entity (entity_fetched)
add loop
Parameter: List: [entity-fetched]
List item: Aktuális listaelem (list_item)
A loopnál add action, majd a legördülő menüből ki kell választani a készített összetevőt (lista legalja) és kész is.

1
0