Edee.one · Dokumentace

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:

xml
<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:

xml
<cache threshold="0.5" ttl="180"/>
ParametrPopisDefaultní hodnota
thresholdUrčuje o kolik se musí změnit rating aby se znovu nacachoval.0,5
ttlInterval 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í.

xml
<scale from="1" to="5"/>
ParametrPopisDefaultní hodnota
fromNejnižší možné hodnocení.1
toNejvyšší 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.

xml
<detailed defaultStatus="ACTIVE"/>
ParametrPopisDefaultní hodnota
defaultStatusUrč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:

xml
<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.

ParametrPopisDefaultní hodnota
typePatternsDefinuje skupinu typů, pro které daný auditor nebo všechny vnoření auditoři platí.platí pro všechny

Blokuje další hlasování nebo hit pro prohlížeč s uloženým cookie po dobu jeho platnosti.

xml
<auditor type="cookie" maxAge="7d" typePatterns=""/>
ParametrPopisDefaultní hodnota
maxAgeDoba 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ů.

xml
<auditor type="ip" maxLimit="5" typePatterns=""/>
ParametrPopisDefaultní hodnota
maxLimitMaximá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.

xml
<auditor type="captcha" auditRates="true" auditHits="true" typePatterns=""/>
ParametrPopisDefaultní hodnota
auditRatesUrčuje jestli vyžadovat captchu pro hodnocení.povinné
auditHitsUrč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.

xml
<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í:

xml
<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ů.

xml
<gui ramJetModuleName="edeeui"                 parentSection="edee"                 admin="true"                 defaultSetup="true"/>

Denní rating

Pro ukládání ratingHitů na denní bázi stačí aktivovat pomocí xml:

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:

xml
<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 ratedType složí 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 ratedType složí 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:

kód
/rating/service/hit

Parametry 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

Hodnocení

Hodnocení se přidává POSTem na adresu:

kód
/rating/service/rate

Parametry 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
  • 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
  • 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 typu
  • com.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:

xml

<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:

ParametrPopisDefaultní hodnota
ratedTypeRjelRJEL výraz směřující na název typu hodnocení.povinné
identifierRjelRJEL výraz směřující na identifikátor v rámci typu hodnocení pro hodnocenou položku.povinné
detailedRjelRJEL 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.RatingValueResult pro všechny jednotlivé hodnoty číselného hodnocení, vyplňuje se pouze pokud je nastaven parametr tagu detailedRjel="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:

xml

<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:

xml

<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.RatingDetailStatus
    • ACTIVE - hodnocení je vidět na frontendu
    • HIDDEN - 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
  • 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.

Strom stránek

Hlavní stránka

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

Administrace Rating modulu

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 HIDDEN do stavu ACTIVE, to zpřístupní hodnocení na frontendu
  • Schovat - převádí hodnocení ze stavu ACTIVE do stavu HIDDEN, to odstraní hodnocení z frontendu
  • Odstranit - převádí hodnocení ze stavu ACTIVE nebo HIDDEN do stavu DELETED, to logicky smaže záznam z DB
  • Vrátit z koše - převádí hodnocení ze stavu DELETED do stavu ACTIVE, ruší logické smazání v DB

Detail hodnocení

Stránka zobrazuje všechny existující informace k danému hodnocení.

Detail hodnocení a komentář administrátora

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 rating
  • com.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átora
  • com.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
<?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>