Rating modul
Slouží k evidenci hodnocení a počtu shlédnutí. Použít lze pod článkem nebo například u produktu v eshopu.
Konfigurace
Rating modul se aktivuje v rámci sitemapy tagem:
<ratingmodule> ...</ratingmodule>Možnosti nastavení modulu jsou shrnuty v následujících odstavcích.
Cache
Zapíná cachování. Pokud není explicitně použit konfigurační tag, vytvoří se cache s defaultními parametry. Její tag by vypadal takto:
<cache threshold="0.5" ttl="180"/>| Parametr | Popis | Defaultní hodnota |
|---|---|---|
| threshold | Určuje o kolik se musí změnit rating aby se znovu nacachoval. | 0,5 |
| ttl | Interval po kterém se znovu načte průměrná hodnota. | 180 |
Tato cache se používá pouze pro starý přístup. Pro detailní hodnocení a jeho providery nefunguje.
Škála
Nastavuje rozsah hodnocení.
<scale from="1" to="5"/>| Parametr | Popis | Defaultní hodnota |
|---|---|---|
| from | Nejnižší možné hodnocení. | 1 |
| to | Nejvyšší možné hodnocení. | 5 |
Detailed
Slouží pro detailnější logování hlasů. Umožňuje udržovat spolu s číselným hodnocením i textové. Přidává tedy možnost evidovat pozitivní a negativní textové hodnocení a reakci administrátora. Dále aktivací této součásti umožníte výpočet detailnějších statistik hodnocení. V neposlední řadě umožňuje i administraci z EDEEho a příslušný schvalovací proces pro nově přidaná hodnocení. Hodnocení lze i logicky mazat.
<detailed defaultStatus="ACTIVE"/>| Parametr | Popis | Defaultní hodnota |
|---|---|---|
| defaultStatus | Určuje výchozí stav pro nově vložené hodnocení. | ACTIVE |
Možnosti defaultStatusu jsou:
ACTIVE- hodnocení je vidět na frontendu okamžitě po vloženíHIDDEN- hodnocení je po vytvoření vidět jen v EDEEm a čeká na schváleníDELETED- hodnocení je logicky smazané (uvedeno jen aby zde byly všechny varianty, jako hodnota konfiguračního parametru nedává smysl)
Auditoři
Aktivuje specifické funkce pro evidenci hlasů a povolování přidání nového hlasu. Příklad kompletního nastavení auditorů i s defaultními hodnotami:
<auditors typePatterns=""> <auditor type="cookie" maxAge="7d" typePatterns=""/> <auditor type="ip" maxLimit="5" typePatterns=""/> <auditor type="captcha" auditRates="true" auditHits="true" typePatterns=""/> <auditor type="user" typePatterns=""/></auditors>Všichni auditoři jsou volitelní, pouze pokud tag <auditors> chybí úplně, je automaticky aktivován Cookie
auditor s defaultními parametry. Společným parametrem pro hlavní i vnořené tagy je typePatterns.
| Parametr | Popis | Defaultní hodnota |
|---|---|---|
| typePatterns | Definuje skupinu typů, pro které daný auditor nebo všechny vnoření auditoři platí. | platí pro všechny |
Cookie
Blokuje další hlasování nebo hit pro prohlížeč s uloženým cookie po dobu jeho platnosti.
<auditor type="cookie" maxAge="7d" typePatterns=""/>| Parametr | Popis | Defaultní hodnota |
|---|---|---|
| maxAge | Doba platnosti cookie. | 7d (7 dní) |
IP
Blokuje další hlasování nebo přidání shlédnutí pro prohlížeč s daným IP po překročení limitu počtu přístupů.
<auditor type="ip" maxLimit="5" typePatterns=""/>| Parametr | Popis | Defaultní hodnota |
|---|---|---|
| maxLimit | Maximální počet povolených hodnocení nebo zaznamenaných přístupů pro IP. | 5 |
Captcha
Vyžaduje potvrzení zadání hodnocení nebo hitu pomocí captcha formuláře.
<auditor type="captcha" auditRates="true" auditHits="true" typePatterns=""/>| Parametr | Popis | Defaultní hodnota |
|---|---|---|
| auditRates | Určuje jestli vyžadovat captchu pro hodnocení. | povinné |
| auditHits | Určuje jestli vyžadovat captchu pro počet shlédnutí. | povinné |
User
Eviduje hlasování podle uživatelského jména. Pro přihlášeného uživatele je tak možné přidat jen jedno hodnocení nebo navštívení stránky.
<auditor type="user" typePatterns=""/>Žádné specifické nastavení není třeba.
Rating
Umožňuje definovat jiné nastavení pro určitý typ ratingu. Nastavení pak vypadá stejně jako to globální. Všechny použitelné vnořené tagy jsou zahrnuty v příkladu, jen auditoři můžou být libovolní:
<rating type="xxx"> <scale from="1" to="5"/> <auditors> <auditor type="cookie" maxAge="7d"/> </auditors></rating>GUI
Dále je třeba aktivovat administrační GUI. Tato část dává smysl pouze ve spojení s detailním logováním hlasů.
<gui ramJetModuleName="edeeui" parentSection="edee" admin="true" defaultSetup="true"/>Denní rating
Pro ukládání ratingHitů na denní bázi stačí aktivovat pomocí xml:
<ratingmodule storeDaily="true" />Modul bude nově ukládat a počítat hity po jednotlivých dnech - tabulka T_RATING_DAILY.
Prozatím ukládá pouze hits a defaultně je deaktivováno. Denní data lze získat pomocí programového
přístupu přes metodu com.fg.rating.service.RatingService.getAllDailyHitRatings.
Příklad
Kompletní konfigurace může vypadat například takto:
<ratingmodule storeDaily="true"> <cache threshold="0.5" ttl="300"/> <scale from="1" to="5"/> <detailed defaultStatus="ACTIVE"/> <auditors> <auditor type="cookie" maxAge="365d"/> <auditor type="user"/> </auditors>
<gui ramJetModuleName="edeeui" parentSection="edee" admin="true" defaultSetup="true"/></ratingmodule>Propojení s frontendem
Vkládání informací do Rating modulu se provádí pomocí commandů. Alternativně lze využít i POST requestů na určitou adresu spojených s předáním parametrů.
Commandy
Počet shlédnutí
Provádí se pomocí commandu com.fg.rating.web.ramjet.HitCommand používaného pod typem jménem hit. Zároveň je
k dispozici v Ramjetu na adrese /rating/hit. Jeho parametrem je pouze:
- ratedType - kombinace
type;identifier, je jich možné použít i více a přidat tak hit k více položkám najednou
Hodnocení
Provádí se pomocí commandu com.fg.rating.web.ramjet.RateCommand známého pod jménem typu rate. Ten je k dispozici
uvnitř Ramjetu na adrese /rating/rate. Parametry jsou tyto:
- ratedType - kombinace
type;identifier, je jich možné použít i více a oratovat tak více položek najednou - type - pokud není použit parametr
ratedTypesloží jako první část kombinace v něm, určuje typ hodnocené položky, umožňuje oratování pouze jedné kombinace type-identifier najednou - identifier - pokud není použit parametr
ratedTypesloží jako druhá část kombinace v něm, určuje id položky v rámci typu - rating - číselné hodnocení (celé číslo)
- userName - uživatelské jméno, pokud je uživatel přihlášen, bude použit jeho login na místo tohoto
- comment - komentář
- positiveComment - pozitivní hodnocení
- negativeComment - negativní hodnocení
POST requesty
Počet shlédnutí
Navýšení počtu shlédnutí se provede odesláním POST requestu na adresu:
/rating/service/hitParametry POST requestu jsou:
- types - pole typů, u kterých se má zvýšit počet shlédnutí, např.
[{"name":"views","identifier":"100"}]- typ se skládá ze dvou částí
- name - jméno typu
- identifier - ID identifikující položku v rámci typu
- typ se skládá ze dvou částí
Hodnocení
Hodnocení se přidává POSTem na adresu:
/rating/service/rateParametry takového POST requestu jsou:
- types - pole typů, ke kterým se má přidat dané hodnocení, např.
[{"name":"views","identifier":"100"}]- typ se skládá ze dvou částí:
- name - jméno typu
- identifier - ID identifikující položku v rámci typu
- typ se skládá ze dvou částí:
- rating - číselné hodnocení
- userName* - jméno hodnotícího uživatele, ve formě:
- čistý text se jménem, např.
Martin Krása - uživatelské jméno interpretované frontendem, např.
mkr
- čistý text se jménem, např.
- positiveComment* - text pozitivního hodnocení
- negativeComment* - text negativního hodnocení
Položky označené hvězdičkou jsou funkční pouze v případě aktivního detailního logování hlasů.
Získávání výsledků
Jednoduché výsledky lze získat pomocí GET requestů na adresu /rating/service/hit, resp. /rating/service/rate.
Složitější statistiky lze získat pomocí data providerů.
Data providery
Data providery mají smysl pouze v kombinaci s aktivním detailním logováním hlasů. Připravené jsou dva:
com.fg.rating.web.ramjet.RatingResultRecordSource- slouží k získávání detailních statistik hodnocení daného typucom.fg.rating.web.ramjet.RatingDetailRecordListingSource- slouží k získávání jednotlivých hodnocení
RatingResultRecordSource
Vrací objekt typu com.fg.rating.RatingResult obsahující
statistiky hodnocení pro daný typ a identifikátor. Ukázka takovéhoto data sourcu:
<dataSource class="com.fg.rating.web.ramjet.RatingResultRecordSource" ratedTypeRjel="products" identifierRjel="100" detailedRjel="true"/>Data source ignoruje query a přijímá následující parametry:
| Parametr | Popis | Defaultní hodnota |
|---|---|---|
| ratedTypeRjel | RJEL výraz směřující na název typu hodnocení. | povinné |
| identifierRjel | RJEL výraz směřující na identifikátor v rámci typu hodnocení pro hodnocenou položku. | povinné |
| detailedRjel | RJEL výraz směřující na boolean hodnotu, která určuje jestli vyžadujeme i kompletní přehled počtů a procent výskytů pro jednotlivá číselná hodnocení (atribut valueResults). | false |
Vrácený objekt obsahuje tyto data:
- ratedType - hodnocená položka
com.fg.rating.RatedType, obsahuje:- name - hodnocený typ
- identifier - identifikátor hodnocené položky v rámci typu
- rating - průměrné hodnocení
- totalVotes - celkový počet hodnocení
- valueResults - list
com.fg.rating.RatingValueResultpro všechny jednotlivé hodnoty číselného hodnocení, vyplňuje se pouze pokud je nastaven parametr tagudetailedRjel="true", každá položka obsahuje:- rating - číselné hodnocení, ke kterému se záznam vztahuje
- count - počet záznamů s tímto hodnocením
- percentage - procento záznamů s tímto hodnocením ze všech hodnocení daného ratedType
RatingDetailRecordListingSource
Lze použít pro získání právě jednoho detailu hodnocení nebo stránkovaného listu detailů hodnocení. Jako atributy přijímá
standardní parametry query: filter, hint a order.
Pro použití v record listingu lze konfigurovat například takto:
<recordListing id="ratingDetailListing" filter="and( in(status, #widgetData[status.filter.value]!#), in(ratedType, #widgetData[ratedType.filter.value]!#), in(identifier, #widgetData[identifier.filter.value]!#), in(rating, #widgetData[rating.filter.value]!#) )" hint="paging(#params[pageNumber]!1#, 10)" order="order(#params[filter.orderBy]!created#, #params[filter.orderType]!asc#)"> <dataSource class="com.fg.rating.web.ramjet.RatingDetailRecordListingSource"/> ...</recordListing>Pro použití v recordu pak lze použít například toto:
<record id="ratingRecord" filter="eq(id, #params[ratingId]!?int#)"> <dataSource class="com.fg.rating.web.ramjet.RatingDetailRecordListingSource"/> ...</record>Vrácené záznamy jsou pak instance třídy
com.fg.rating.RatingDetail s atributy:
- id - primární klíč
- ratedType - hodnocená položka
com.fg.rating.RatedType, obsahuje:- name - hodnocený typ
- identifier - identifikátor hodnocené položky v rámci typu
- status - stav schválení hodnocení, enum
com.fg.rating.RatingDetailStatusACTIVE- hodnocení je vidět na frontenduHIDDEN- hodnocení je vidět jen v EDEEm a čeká na schváleníDELETED- hodnocení je logicky smazané
- rating - hodnocení
- userName - jméno hodnotícího uživatele, ve formě:
- čistý text se jménem, např.
Martin Krása - uživatelské jméno interpretované frontendem, např.
mkr
- čistý text se jménem, např.
- created - datum a čas vytvoření
- positiveComment - text pozitivního hodnocení uživatele
- negativeComment - text negativního hodnocení uživatele
- adminComment - text reakce administrátora
Administrace
Ve stromu stránek, v sekci Rozšíření je položka Hodnocení. Jejím stiskem se dostanete do administrace Rating modulu.

Hlavní stránka
Hlavní stránka obsahuje filtrovatelný seznam všech hodnocení.

S každým hodnocením je možné provést několik akcí:
- Upravit - otevírá podstránku Detail hodnocení
- Zveřejnit - převádí hodnocení ze stavu
HIDDENdo stavuACTIVE, to zpřístupní hodnocení na frontendu - Schovat - převádí hodnocení ze stavu
ACTIVEdo stavuHIDDEN, to odstraní hodnocení z frontendu - Odstranit - převádí hodnocení ze stavu
ACTIVEneboHIDDENdo stavuDELETED, to logicky smaže záznam z DB - Vrátit z koše - převádí hodnocení ze stavu
DELETEDdo stavuACTIVE, ruší logické smazání v DB
Detail hodnocení
Stránka zobrazuje všechny existující informace k danému hodnocení.

Dostupné akce jsou:
- Uložit - uloží upravenou hodnotu komentáře administrátora do DB
- Zveřejnit, Schovat, Odstranit, Vrátit z koše - ekvivalentní ke stejnojmenným akcím na Hlavní stránce
Eventy
Modul vytváří po provedení určitých akcí eventy. Implementací listeneru tak lze provádět určité dodatečné akce, například rozeslat e-maily.
com.fg.rating.event.RatingEvent- odesílá se po vytvoření záznamu pro ratingcom.fg.rating.event.HitEvent- odesílá se po vytvoření záznamu pro shlédnutícom.fg.rating.event.RatingAdminCommentEvent- odesílá se po úpravě komentáře administrátoracom.fg.rating.event.RatingStatusChangedEvent- odesílá se po změně stavu hodnocení
Rating rest api module
Swagger dostupný z: lib_rating/src/main/resources/META-INF/doc/swagger/swagger.yaml
Ukazková konfigurace:
<?xml version="1.0" encoding="utf-8"?><sitemap>
<ratingmodule> <cache threshold="0.5" ttl="180"/> <scale from="1" to="5"/> <detailed defaultStatus="ACTIVE"/> <auditors> <auditor type="cookie"/> </auditors>
<gui admin="true"/> <gui/> </ratingmodule>
<module customName="ratingRestApi" classname="com.fg.rating.api.cps.RatingRestModule" /></sitemap>
