Translations
Info
All page names need to be in English.
en da  de  fr  it  ja  km  nl  ru  zh

EXT/Rating AX

From TYPO3Wiki
Jump to: navigation, search

notice - Reviewer needed

Change the {{review}} marker to {{publish}} when all parts are reviewed (e.g. TypoScript). info
Extension detail information
th_rating
Rating of any content object with Ajax
documentation state draft document state list
licence OCL
forgeproject Rating AX
mailinglist
usergroups list of usergroups forAdmins, forIntermediates
author(s) Thomas Hucke
TER category fe
dependency PHP 5.6.0 - 7.0.99, TYPO3 7.6.0 - 8.7.99, static_info_tables

<< Back to Extension manuals page

[edit]


notice - Open Content License

This document is published under the Open Content License

The content is related to TYPO3 - a GNU/GPL CMS/Framework available from typo3.org


Introduction

What does it do?

This extension provides a rating plugin for every type of content in the database. Every field of every table can be defined as a so-called 'ratingobject' that can be used for ratings. The extension could be included as a normal content plugin to have ratings of the content page. Nevertheless the best usecase is to integrate it as a cObj in your own extension. This extension features the future oriented extensions extbase and fluid. It is expected to adopt it in a easy way to new versions of TYPO3. It is inspired by the extension 'ratings' from Dmitry Dulepov and the incredible tutorial about CSS star rating technique from "Komodomedia":http://www.komodomedia.com/blog/2007/01/css-star-rating-redux/


Featurelist:

  • display ratings (graphically or text)
  • support for AJAX-ratings (graphically or text)
  • one-time voting for logged in FE users
  • multiple anonymous votings
  • highly customizable look for ratings, incl. support for vertical ratings
  • different weight for each rating step
  • full localization support for ratingnames (>0.5.1)
  • includes viewhelper for FLUID templates
  • polling mode (>0.10.1)

Screenshots

Users manual

This extension does mainly target developers (website administrators and extension developers) but you can also easily use this rating directly on pages as a content element.

  1. Create a new content element of the type "Insert Plugin"
    ManualNewContentElement.png

  2. Choose the extension "Rating AX" in the dropdownbox
    ManualContentElementPlugin.png

  3. Configure your rating

The concerned ratingobject in that mode uses tt_content as tablename and uid as fieldname. You may first configure the ratingsteps you like to have. Be aware using ongoing positive integer ratingorder numbers.

ManualContentElementObject.png

If you are working on multilanguage websites you may add translations of your ratingsteps as usual:

ManualRatingstepMultilang.png

Important: Don´t forget adding the additional language you want to add to the list of pagelanguages in your storagepage.

FAQ

  • Nothing so far

Administration

  • Target group: Administrators and extension developers
  • This extension is based upon the new framework of extbase / fluid included in TYPO3 4.7 (and later)
  • the following graphic shows the extension model

Extension model.png

Except the objecttype “Tx_Extbase_Domain_Model_FrontendUser” which is build into extbase all further objects are stored in their own tables:

  • Tx_ThRating_Domain_Model_Ratingobject
    Holds the basic information on anything you´d like to rate
    • ratetable: the name of the table you like to rate
    • ratefield: the fieldname within the table you like to rate (distiguishing fields makes it possible to configure multiple ratings on the same tables)
    • stepconfs: Each ratingobject must have ratingsteps configured (see Tx_ThRating_Domain_Model_Stepconf)
    • ratings: To do ratings on each row of a table this link is required (see Tx_ThRating_Domain_Model_Rating)
  • Tx_ThRating_Domain_Model_Stepconf
    Holds all information how to rate an object
    • ratingobject: Hold the connecting information to the parent object (Tx_ThRating_Domain_Model_Ratingobject)
    • steporder: ongoing sequence counting the number of ratingsteps
    • stepweight: every step could have a different weight configured (eg. 3 steps having the second weighted double). Normal value would be 1 on every step.
    • Stepname: links to the localized stepname if entered (see Tx_ThRating_Domain_Model_Stepname)
    • Votes: Every vote given by a frontend user is connected to its ratingstep (see Tx_ThRating_Domain_Model_Vote)
  • Tx_ThRating_Domain_Model_Stepname
    Holds localized speaking texts for stepconf entries
    • stepname: speaking text to set a name on every step. This would be displayed in different cases.
    • Stepconf: Hold the connecting information to the parent object (Tx_ThRating_Domain_Model_Stepconf)
  • Tx_ThRating_Domain_Model_Rating
    Holds information of every rated row of an object
    • ratingobject: Hold the connecting information to the parent object (Tx_ThRating_Domain_Model_Ratingobject)
    • ratedobjectuid: hold the identifier of the rated row
    • votes: Every vote given by a frontend user is connected to its rating (see Tx_ThRating_Domain_Model_Vote)
    • currentrates: calculated rating statistic summaries for performance reasons
  • Tx_ThRating_Domain_Model_Vote
    Holds information of every vote given by frontend users
    • vote: Each vote is linked to a ratingsteps (see Tx_ThRating_Domain_Model_Stepconf)
    • ratings: Each vote is linked to a rating (see Tx_ThRating_Domain_Model_Rating)
    • voter: Each vote is linked to a valid frontend user (see Tx_Extbase_Domain_Model_FrontendUser)
    • hasRated(): checks if the FE-User has already rated
    • hasAnonymousVote: checks if anonymous rating has already been done
    • isAnonymous(): checks if this is an anonymous vote
  • Tx_ThRating_Domain_Model_Voter
    Wrapper object for default Tx_Extbase_Domain_Model_FrontendUser


Installation

  1. Install the extension static_info_tables as usual
  2. Install this extension as usual
    Install EM.png

  3. Include the template of this extension in your site template
    Install InclTemplate.png

  4. Reference to the container for extension data
    Create a new sysfolder or choose an existing one and write down the PID.
    Open the TS Constant Editor and at least set the value in [plugin.tx_thrating.settings.pluginStoragePid] to the former written down PID of the sysfolger
    Install Constants.png

  5. Reference to the container for Website users
    Create another folder designated as a container for Website Users and again write down the PID.
    Now open your website template and add the following configuration setup:
    plugin.tx_felogin_pi1.storagePid = <PID of the website users container>

FAQ

  • Nothing so far

Configuration

Knowledge of Extbase/Fluid framework would be helpful to understand how to configure this extension.

Reference

The basic configuration to use this extension as a cObj in your TSConfig or in your own extension is already done within the default template. The only changes are necessary if you like to alter the usage type (MVC-Action).

Property: Data type: Description: Default:
action String MVC-Action to activated. Possible values:
  • ratinglinks
    graphical presentation to do and to display ratings
  • mark
    one step rating similar to FB like button
  • polling
    ratings are presented as pollings giving percentages.
  • show
    display the actual vote of the currently logged on FE user in plain
    text
  • new
    generate a classic form element (default: drop-drown select field)
    for voting. If the user has already voted action 'show' is used.


Important:

Whatever value is configured here it must also be set in

  plugin.tx_thrating.switchableControllerActions {
     Vote {
         1 = ratinglinks
         #1 = show
         #1 = new
     }
  }
ratinglinks

[tsref:plugin.tx_thrating]



Section: ratings

Each rating could have a special graphical configuration. Use this section to configure it. The configurations are seperated into subsections identified by a distinct name.

Best practice would be to include such configuration in your own template. It is recommended to use distinct names for your ratingconfigurations. Additionally - if you'd like to adjust the default given configurations - remember that your settings will override or enhance the default settings. But it is not possible to delete settings of the default. It is recommended to just copy the wanted configuration from the file EXT:th_rating\Configuration\TypoScript\setup.txt, choose a different name and then make your adjustments as you want.


Property: Data type: Description: Default:
imagefile String Imagename of the graphical representation including path.

Path must be given either relative to SITE_ROOT (e.g. typo3conf/ext/th_rating/Resources/Public/Css/stars.gif)

barimage Boolean Sets the imagetype to bar- or starrating 0
tilt Boolean If set the imagetype is up/down 0

[tsref:plugin.tx_thrating.ratings.{name}]


Example

Here an example which is also included in one of the default configurations:

TS TypoScript:
plugin.tx_thrating.ratings {
	#use this section to configure your own ratingConfigurations
	exampleRatingConfig {
		imagefile = typo3conf/ext/th_rating/Resources/Public/Css/rating_bar.png
		barimage = 1
		tilt = 0
		settings {
			showNoFEUser = 1
			showNotRated = 1
			mapAnonymous = 0
			cookieLifetime = 0
		}
		fluid {
			layouts {
				default {
					hideSummary = {$plugin.tx_thrating.config.hideSummary}
					showCurrentRates = 1
					showSectionContent = 1
				}
			}
			templates {
				#ratinglinks.likesMode = 0 - deprecated from Version 0.10.2
			}
			partials {
				usersRating {
					showTextInfo = 1
					showGraphicInfo = 0
				}
				infoBlock {
					showAnonymousVotes = 1
				}
			}
		}
	}
Graphics requirements:

The graphic contains icons or stripes for all states:

  • not rated (e.g. Req nr.png)
  • rated (e.g. Req r.png)
  • choose rating (e.g. Req cr.png)

It is recommended to choose icons of identical dimensions. These icons must be arranged in one file depending on the imagetype in a manner as follows:

Classic starrating Tilt starrating Barrating Tilt barrating smileyLikes
Req classic starrating.png Req tilt starrating.png Req barrating.png Req tilt barrating.png Req smiley.png
stars starsTilt barrating facesbartilt smiley

The table shows all preconfigured rating configuration and their names.

All icons (except those of the type barrating) are taken from http://openiconlibrary.sourceforge.net/. All upper listed icons are licensed by GPL2 or PD. I appreciate the great work of those authors. Anyway, if the usage of any icon hits the copyright of any person I´d ask this person to drop me a mail if he/she want me to remove it.

Subsection: fluid

The default extension output could be modified by some configuration addition in this subsection. It would also feature different behaviour of your own templates and partials. Take a look at the provided files which give you examples. All configuration settings will override those set in the main section 'fluid'.

Section: settings

Each rating could have a special graphical configuration. Use this section to configure it.

The configurations a seperated into subsections identified by a distinct name.

Property: Data type: Description: Default:
display String Name of the rating configuration to use as set per default. Value depends on choosen action. different
ratetable String Tablename of the ratingobject tt_content
ratefield String Fieldname of the ratingobject uid
ratingContext String CSS class addition to defer between different formattings in different contexts defaultContext
ratingobject Integer UID of the ratingobject.Could be helpful to increase performance instead of using ratetable/ratefield combination.  
ratedobjectuid Integer UID of the rated row in the table  
mapAnonymous Integer UID of the FE user that holds all anonymous votings see constants: {$plugin.tx_thrating.config.mapAnonymous}
cookieLifetime Integer Lifetime of cookie protection for anonymous votes 0
showNoFEUser Boolean Switch to activate info if no user is logged on. see constants: {$plugin.tx_thrating.config.showNoFEUser}
showNotRated Boolean Switch to deactivate info if no no rating has been done yet. 0
displayOnly Boolean Switch to deactivate ratings and only display current rating. 0
enableReVote Boolean Switch to enable users to change their given votings. 0
foreignFieldArrayUpdate Boolean New feature since version 0.11.2:
Update foreign ratetable in ratefield using the whole getCurrentRates array or double value (default)
0
storagePid Integer General storage page where all records are stored. value of constant plugin.tx_thrating.settings.pluginStoragePid

[tsref:plugin.tx_thrating.settings]


Example

Here an example which is also included in one of the defaults configurations:

TS TypoScript:
     plugin.tx_thrating.settings {
         ratetable = tt_content
         ratefield = uid
         #ratingobject = 1
         ratedobjectuid = 1
         #display = stars - not needed if default is used
     }
Section: settings.richSnippetFields

This extension provides support for Google rich snippets. Setting the following options some meta information could be configured which is being read from the database for each rated item. The configured options must be field descriptors in the rated table. If no or an invalid name is given, the default value consists of the constant text "Rating AX" appendixed by the UID values of the ratingobject and the rated object. (e.g. "Rating AX 2_30" meaning ratingobject #2 / ratedobject #30).

Property: Data type: Description: Default:
name String Fieldname to fetch the item name from Rating AX xx_yy
description String Fieldname to fetch the item description from

[tsref:plugin.tx_thrating.settings.richSnippetFields]

Section: settings.fluid

The layout of the extension could be manipulated using this section. All settings here could be overridden by the configuration set in the section ratings. The section is deeply divided in subsections:

First level: According to the structure of fluid modules are the names on this level.

  1. layouts
  2. templates
  3. partials
Section: settings.fluid.layouts

At this point of time the extension uses one layout named DefaultLayout for all action handlers. You may take a look at the file for better understanding the following options.

Property: Data type: Description: Default:
showSummary Boolean Switch to display rating summary info in output 1
showCurrentRates Boolean Switch to display the current rating statistics. 1
showSectionContent Boolean Switch to display the complete action content section. 1

[tsref:plugin.tx_thrating.settings.fluid.layouts.default]

Section: settings.fluid.templates

At this point of time only one action template supports a special configuration option.

Property: Data type: Description: Default:
likesMode Boolean Switch to a mode that only displays the users vote after his rating.
Deprecated from version 0.10.2. User mark action instead.
0
tooltips Boolean Activate HTML tooltips on hover over ratinglinks.
Ratinglink tooltip example.png
1

[tsref:plugin.tx_thrating.settings.fluid.templates.ratinglinks]

Section: settings.fluid.partials

At this point of time the extension support two partials named usersRating and infoBlock. Both are mainly used in the ratinglink action. You may alos here take a look at the files for better understanding the following options.

Property: Data type: Description: Default:
showTextInfo Boolean Switch to hide textual info on the users vote 1
showGraphicInfo Boolean Switch to show graphic info on the users vote. 0

[tsref:plugin.tx_thrating.settings.fluid.partials.usersRating]

Property: Data type: Description: Default:
showAnonymousVotes Boolean Switch to hide the infomation the anonymous votes are possible. 1

[tsref:plugin.tx_thrating.settings.fluid.partials.infoBlock]


Section: settings.logging

This extension makes use of the logging framework which was newly introduced in TYPO3 6.1. For more information on this look at Logging with TYPO3 in the TYPO3 Core API. For each log level as there are

  • emergency
  • alert
  • critical
  • error
  • warning
  • notice
  • info
  • debug

different logwriters of types 'file' and/or 'table' could be configured.

Property: Data type: Description: Default:
file Resource Filename to store log messages.  
table String Tablename to store log messages. sys_log

[tsref:plugin.tx_thrating.settings.logging.<level>]

Constants

Constants plugin.tx_thrating.config:

The following constants could be configured once per site. Configuration could be done via the usual way using template constant editor.

Property: Data type: Description: Default:
loadJQuery Boolean Enable (1) / Disable (0) loading jQuery by this extension 1
showNoFEUser Boolean Enable (1) / Disable (0) info if no FE user is logged on 0
cookieLifetime Integer Set lifetime for cookie protection (global setting [days]). Could be overridden by individual settings. 0
mapAnonymous Integer UID of the FE user that holds all anonymous votings 0 - no anonymous votes allowed

[tsref:plugin.tx_thrating.config]

Constants plugin.tx_thrating.settings:

The following constants must be set once per site. Configuration could be done via the usual way using template constant editor.

Property: Data type: Description: Default:
pluginStoragePid Integer General storage page where all records are stored.

[tsref:plugin.tx_thrating.settings]

Constants plugin.tx_thrating.view:

The following constants must be set once per site. Configuration could be done via the usual way using template constant editor.

Property: Data type: Description: Default:
templateRootPath String Page UID where the FLUID templates are stored EXT:th_rating/Resources/Private/Templates/
partialRootPath String Page UID where the FLUID partials are stored EXT:th_rating/Resources/Private/Partials/
layoutRootPath String Page UID where the FLUID layouts are stored EXT:th_rating/Resources/Private/Layouts/

[tsref:plugin.tx_thrating.view]

FAQ

  • Nothing so far

Developer information

Signal / Slot support

From version 0.8.1 support for signal / slot feature of extbase is implemented. Currently the extension will "listen" for two signals:

  • afterRatinglinkAction
  • afterCreateAction

Registered slots are being called with two parameters:

signalSlotMessage: an array consisting of

tablename - the tablename of the rated object
fieldname - the fieldname of the rated object
uid - the uid of the rated object
currentRates - an array constising of the actual rating statistics
currentrate - the calculated overall rating
weightedVotes - an array giving the voting counts for every ratingstep
sumWeightedVotes - an array giving the voting counts for every ratingstep multiplied by their weights
currentPollDimensions - an array of elements ['pctValue'] giving the polling percentage for every ratingstep
anonymousVotes - count of anonymous votings
numAllVotes - overall count of given votings
If the user has voted anonymous or non-anonymous:
voter - the uid of the frontenduser that has voted
votingStep - the ratingstep that has been choosen
votingName - the name of the ratingstep
anonymousVote - boolean info if it was an anonymous rating


customContent: Array by reference to modify pre- and post- content of the extension The called slothandler could fill this array with pure HTML code wich will be included into the extension output.

staticPreContent - this content will be included in front of the extension output (NOT changed by AJAX)
staticPostContent - this content will be included after the extension output (NOT changed by AJAX)
preContent - this content will be included in front of the extension output (changed by AJAX)
postContent - this content will be included after the extension output (changed by AJAX)


The following picture will help you understanding the different section of the extension output.
ThRating defaultLayout.gif
Using the right CSS formattings it would be easy to arrange the different sections for your specific needs.

Localization support

The extension is handled by the official localization server. By that other localizations than German and English could be added easily.

ExtensionManagementService

This service object provides developers support for generating ratingobjects, stepconfs and localized stepnames automatically. This could be an easy to use alternative to manually creating them via backend. Two methods are avaiable:

makeRatable

This function has to be called giving three parameters:

$generatedRatingobject = $this->objectManager->get('Thucke\\ThRating\\Service\\ExtensionManagementService')->makeRatable( $tablename, $fieldname, $stepcount )

The parameters:

  • $tablename / $fieldname (String)
    These two parameters define the basic ratingobject which should be created.
  • $stepcount (Integer)
    You must define the inital number of ratingsteps that this ratingobject would use. The ratingsteps will all have a stepweight of 1. Stepnames have to be added manually via BE or by using the functionsetStepname.

setStepname

This function has to be called giving two mandatory and two optional parameters:

$this->objectManager->get('Thucke\\ThRating\\Service\\ExtensionManagementService')->setStepname( \Thucke\ThRating\Domain\Model\Stepconf $stepconf, $stepname, $languageIso2Code=0, $allStepconfs=FALSE )

The parameters specifies the new ratingstep description text:

  • $stepconf: the stepconf object which has to be described
  • $stepconf: the localized description text
  • $languageIso2Code: (default to 0) the ISO2 language code (e.g. 43 = German)
  • $allStepconfs: (defaults to FALSE) on TRUE all stepconfs of the ratingobject will be configured with this text. The steporder numer will be appended.

If an entry for the stepname already does exist nothing will be changed.

Example

Let´s try to create an initial rating configuration for the field "Testfield" in table "Testtable". We need 4 ratingsteps even weighted. This example assumes that we´re in an extbase controller context. Basically it could be also a guide for "old" pi_based extensions.

//initialize ratingobject and autocreate four ratingsteps
$ratingobject = $this->objectManager->get('Thucke\\ThRating\\Service\\ExtensionManagementService')->makeRatable('TestTabelle', 'TestField', 4);

We store the reference on the generated new ratingobject in a variable. Next the rating stepnames could be added according to our extension needs. In this example assumes any default language and additional website language "German (UID 43 in the table static_languages):

//add descriptions in default language to each stepconf
$this->objectManager->get('Thucke\\ThRating\\Service\\ExtensionManagementService')->setStepname($ratingobject->getStepconfs()->current(), 'Automatic generated entry ', 0, TRUE);
//add descriptions in german language to each stepconf
$this->objectManager->get('Thucke\\ThRating\\Service\\ExtensionManagementService')->setStepname($ratingobject->getStepconfs()->current(), 'Automatischer Eintrag ', 43, TRUE);

Among others the table static_languages will be installed by the extension static_info_tables. Look for the row of the language you're lookiong for and note the field UID which is 43 for German. If we like to add other languages to our stepconfs we just have to find out the correct language ISO2 code e.g. by checking the table static_languages.

You may also use \TYPO3\CMS\Extbase\Utility\LocalizationUtility::translate for fetching the concrete text. Then it is recommended that all possible language entries for the stepnames have to reside in the default lang XLF of your extension. The following example assumes that the file locallang.xlf of the extension MyExtenion stores text in 'rating.(ratingfield).stepconf.step(steporder).(ISO2Code)':

//add descriptions in default language to each stepconf
$this->objectManager->get('Thucke\\ThRating\\Service\\ExtensionManagementService')->setStepname($ratingobject->getStepconfs()->current(), 
   \TYPO3\CMS\Extbase\Utility\LocalizationUtility::translate('rating.testfield.stepconf.step1.30', 'MyExtension'), 0, TRUE);
//add descriptions in german language to each stepconf
$this->objectManager->get('Thucke\\ThRating\\Service\\ExtensionManagementService')->setStepname($ratingobject->getStepconfs()->current(), 
   \TYPO3\CMS\Extbase\Utility\LocalizationUtility::translate('rating.testfield.stepconf.step1.43', 'MyExtension'), 43, TRUE);

Tutorial

Use of the viewhelper

The easiest way to use this extension is FLUID and new viewhelper. The file EXT:th_rating\Resources\Examples\Templates\blog_example\Post\Index.html could be a good example:


In your template first propagate the new namespace:

{namespace thr=Thucke\ThRating\ViewHelpers}


Next create the needed ratingobject and ratingsteps as described below..


Modify your FLUID template and include the extension viewhelper, e.g.:

<thr:rating ratetable="tx_blogexample_domain_model_post" ratefield="uid" ratedobjectuid="{post.uid}" ></thr:rating>

Creation of Ratingobjects

Before a rating could be done at least one ratingobject must be created and configured with ratingsteps.

Open your configured storage page (see constant plugin.tx_thrating.settings.pluginStoragePid)

Add a new record of type 'ratingobjects'.

BE RatingObjects.png

BE createRatingObjects.png

Ratingobjects will be created automatically (see pluginStoragePid at Constants plugin.tx_thrating.config) when doing the first rating of an object. Finally create your ratingsteps. Normal ratings require a ratingtep weight of value "1". This means all steps are rated equal. "Ratingstep name" could be given a value of your choice.

BE createRatingSteps.png

You may also set a speaking text (Ratingstep name) for your ratingstep. In multilanguage sites you could also configure language specific ratingstep names. If you want to do so please add the wanted site language to the storage page.

BE createRatingStepname.png

Using Signal / Slot handler

Adding a new signal slot is easy. Just add code like the following in your ext_localconf.php:

PHP script:
 include_once(t3lib_extMgm::extPath($_EXTKEY).'pi1/class.ThRatingSignalSlotHandler.php');
 
 //Implement handling of signals from rating
 $signalSlotDispatcher = t3lib_div::makeInstance('Tx_Extbase_SignalSlot_Dispatcher');
 $signalSlotDispatcher->connect('Thucke\\ThRating\\Controller\\VoteController', 'afterCreateAction', 'ThRatingSignalSlotHandler', 'afterCreateRatingAction',FALSE);

Second you may create the file e.g. with the following content:

PHP script:
 <?
 if (!defined ('TYPO3_MODE')) 	die ('Access denied.');
 
 class tx_f4missions_main_signalHandler {
 
    /**
     * Signal handler after a rating has bee created
     * Do timestamp update on changed entry and
     * set new staticPre- and staticPostContent on inital display and
     * set new pre- and postContent with each AJAX-Request
     */
    function afterCreateRatingAction( $signalSlotMessage, &$customContent ) {
 	$updateFields['tstamp'] = time();
 	$GLOBALS['TYPO3_DB']->exec_UPDATEquery( $signalSlotMessage['tablename'], 'uid='.$signalSlotMessage['uid'], $updateFields);
	$customContent['staticPreContent']='<b>This ist my staticPreContent</b>';
	$customContent['staticPostContent']='<b>This ist my staticPostContent</b>';
	$customContent['preContent']='<b>This ist my preContent</b>';
	$customContent['postContent']='<b>This ist my postContent</b>';
    }
 
 }

This handler will update the field tstamp of the rated row each time a rating is added.

Known problems


To-Do list

  • nothing open

ChangeLog

Version Changes
0.1.6 First repository version
0.1.7
  • Copy of manual.sxw to /doc to support TER rendering process
  • cleanup of some developer resources
0.1.8
  • documentation corrections
  • Bugfix for error: Fatal error: Call to a member function getVoter() on a non-object in .../root_web/typo3conf/ext/th_rating/Classes/Controller/VoteController.php on line 382
0.2.0
  • added viewhelper 'Rating' (including example to use it in blog_example)
  • STORAGE_PID or SITEROOT as storagePid if not set in constants
  • new constant to switch off examples in output
  • new constant to switch on message if no FE user is logged on
  • modified extension template (compare if if you've copied a previous one into your own)
  • optimized re-creation of dynamic CSS file
0.3.0
  • added localization of stepnames via locallang.xml. Configure database entry for ratingstepname starting with 'LLL:<entry>' (see examples in locallang.xml)
  • set extension status to 'Beta'
0.3.1
  • configuration of stepconfs in BE was impossible
0.4.0 The REAL BETA

Further version wasn´t really ready for use. Too many issues I stumbled upon when I tried myself to integrate it in my own site. Nevertheless despite of the downloads I reached no mail which gives me a heads up on all these issues. I´d like to encourage all of you dropping me a mail if you have any question!!

  • If Stepname starts with 'LLL:' a translation according locallang will be done.
  • VoteController: in case of allow_url_fopen is disabled imagefiles must reside on the server
  • VoteController: path has to be relative to SITE_ROOT
  • VoteController: fixed calculation of new values right after voting
  • RatingobjectRepository: fixed CSS creation for ratingobjects that reside on other pages than '1'
  • setup.txt: fixed issue with case sensitive CSS-filename
  • setup.txt: Always integrate jQuery via Typoscript config
  • setup.txt: obsolete newRecordStoragePid - fixed to parent object pid
0.5.0
0.5.1 Hotfix release
0.6.0
  • major redesign
  • !! remove all former manual additions to templates (config.tx_extbase.persistence.classes) when upgrading
  • !! move all table objects from pid 1 to you normal storage pid (e.g. with phpMyAdmin)
  • removed display of examples
  • added configuration option 'hideSummary'
  • reworked direct FE plugin implementation
  • added flexform configuration for direct FE plugin usage
  • added configuration for newStoragePid
  • moved documentation to https://wiki.typo3.org/EXT/Rating_AX
0.6.1
  • Bugfix: malfunction when no anonymous user ist configured
  • display errormessage, if no ratingstep is configured
  • update of field in foreign table with current ratingvalue
  • removed some deprecated calls
0.6.2
  • added indexAction in flexform does some reorgs and display all objects
  • Voters are now handled even when they are hidden or deleted
  • some bugfixes
0.7.0
  • added cookie protection for anonymous rating
0.7.1
  • General: raised dependend extension versions for security reasons
  • RatingViewHelper: $this->contentObject replaced with cOject generated by Tx_Extbase_Configuration_ConfigurationManager
  • CookieProtection: Removed restriction on domain for cookie
0.7.2
0.7.3
0.7.4

IMPORTANT!!!
This is the last version having compatibility set to Typo3 4.5. Following versions will require at least Typo3 4.7. There will be no offical version for Typo3 4.6.
Same version has been uploaded multiple times by the backend.

  • emergency bugfix for setting cookies
0.7.6
  • Backport vom version 0.8.4
  • stepnames handled by localization via XLF when starting with 'LLL:'
  • bugfix in fluid for likesMode
0.8.0
  • first version that supports Typo3 4.7
  • new propertymapper has been activated
  • actions.js has been modified - beware of that who modified this file
  • use injections in domain objects
  • workaround for wrong l18n handling in Typo3 4.7 for stepconfs
  • allow spaces in stepnames
0.8.1
  • NEW: SignalSlots 'afterRatinglinkAction' and 'afterCreateAction'
  • NEW: Add own content before or after rating using SignalSlots
  • NEW: implemented full support for localization via language files
  • New configuration option "showNotRated" to suppress not rated message
  • New setting "ratingContext" to support context dependent formattings
  • set cookie option just as in t3lib_userAuth
  • removed undocumented setting 'valueOnly' - please use slothandler instead
  • some visual modifications
  • some deprecation fixes
0.8.2
  • successfully tested with Typo3 6.0.x
  • bugfix in defaultLayout if postContent is added
  • added {staticPreContent} and {staticPostContent} in SignalSlotHandler
  • merged all language files (FlexForm, TCA) to locallang.xlf
0.8.3
  • removed dependency on T3Jquery - loading jQuery directly from Google instead
  • new class Tx_ThRating_Utility_ExtensionManagementUtility provides static funtions
  • makeRatable( $tablename, $fieldname, $stepcount ): auto generate default ratingobject and ratingsteps for default language
  • updateStepconf( Tx_ThRating_Domain_Model_Stepconf $stepconf ): change configuration of stepconf or add a localized one
  • some SQL index optimizations
  • extended Tx_ThRating_Domain_Validator_StepconfValidator with check for defaultlanguage
  • added Tx_ThRating_Domain_Model_Syslang to access system table sys_language
  • new dependency to extension static_info_tables
  • Fix: removed - from ext_typoscript_setup.txt to avoid warnings
0.8.4
  • new feature supporting votings similar FB and G+
  • ratinglink action: reworked layout, template and partials
  • provide more flexibility in configuring graphical ratings (section: ratings)
  • now handling the whole extension setting array in AJAX requests
  • renamed defaultLayout.html to DefaultLayout.html
  • dropped setting cookieProtection
  • Bugfix: Corrections in locallang of TCA - labels in BE are shown again
0.8.5
0.8.6
0.8.7
  • separate stepconf description text (stepnames) from stepconf for better localization handling in DB
    ATTENTION !!!!!!
    This is a breaking change in the data model. Existing stepnames will be deleted and have to be added again after upgrade.
  • removed static function Tx_ThRating_Utility_ExtensionManagementUtility::updateStepconf
  • added static function Tx_ThRating_Utility_ExtensionManagementUtility::setStepname
  • Suggestion #53211 - user defined display configurations should be added via TS
  • Bug #53212 - Error on non existing display configuration
  • Bug #53237 - DblClick counts two votes
0.8.8
  • added several consistency checks in singleton action
  • removed german translation since ext is handled by Pootle server
  • bugfixes
0.9.0
  • tested with TYPO3 6.2 LTS (beta3)
  • added some attribute for screenreaders (WAI-ARIA compliant)
  • reduced size of data posted in AJAX request
  • changed ratinglinks to LI elements
  • removed ratinglink viewhelper
  • TCA correction in tx_thrating_domain_model_rating.php
0.9.1
  • Bug #54936: Storage page restriction prevents generation of CSS file
  • Bug #54994: Hover effect stays after doing votings since 0.9.0
0.9.2
  • Added configuration option for html tooltips on ratinglinks
  • Added some CSS3 effects (round borders, shadow)
  • Bug #55440: FE update when doing multiple ratings in a short time frame
  • Several minor bugfixes
  • Major redesgin in constants and flexform
  • removed showNotRated, cookieLifetime and hideSummary from constants
  • renamed hideSummary to showSummary and switched meaning
0.9.3
  • some compatibility fixes for TYPO3 6.2
  • several bugfixes and code cosmetics
  • added some database fields for PHPUnit support
0.9.4
  • rejected support for TYPO3 6.2
  • bugfix for handling AJAX requests
  • Last version that supports TYPO3 4.x
0.10.0
  • least supported version TYPO3 6.1.7
  • fully switched to namespaces in code
  • switched from $TCA to $GLOBALS['TCA']
  • FLUID: changed namespace to {namespace thr=Thucke\ThRating\ViewHelpers}
  • bugfix for handling AJAX requests
0.10.1
  • New setting 'displayOnly' to disable rating. Gives to possibility for only displaying current ratings.
  • added z-index in CSS for tooltips
  • refactored static classes (ExtensionManagementUtility, ObjectFactoryService) to objects
  • now using logging framework in controller, services and ExtensionManagementUtility
  • bugfix: CSS info for DEBUG messages is in page output
  • moved to new FlashMessageQueue
  • Bugfix #58596: Object of class Thucke\ThRating\Service\ObjectFactoryService could not be converted to string
  • RatingViehelper: make sure that NULL-values result in an error message
0.11.0
  • new action handlers 'polling' and 'mark' (last one replacing likesMode configuration option)
  • deprecated constant settings.storagePid - now all records are read and created on one single page
  • deprecated constant settings.newRecordStoragePid
  • new constant settings.pluginStoragePid - all records are read and created on this single page
  • added some configuration checks on PID settings
  • change setForeignRatingValues() to do update with the whole getCurrentRates array
  • Bug #58766: List modul with PHP5.9 foreach
  • Bug #58802: ViewHelper no default controller
  • Bug #59061: Exception when generating new ratings
  • Suggestion #59869: add numAllVotes in getter for currentRates
  • Avoid 'PHP Warning: Invalid argument supplied for foreach()' on creating logger instance with wrong configuration
0.11.1
  • New feature: change given votes using setting enableReVote
  • imagefile setting in ratingconfigurations now handle GIFBUILDER configuration
  • documentation is now rendered by sphinx project
  • Bug #60090: error in log : division by zero
0.11.2
  • intended to be the last version supporting TYPO3 6.1.x
  • new configuration settings.foreignFieldArrayUpdate
    respect configuration in setForeignRatingValues() in doing update with the whole getCurrentRates array or double value (default)
  • Bugfix: Update of foreign table fails
  • Bugfix: DefaultLayout had typo in condition check
  • Bugfix in setForeignRatingValues()
  • Removed deprecated configuration settings
  • moved extension javascript to the footer
1.0.0
  • first stable version
  • dropped support vor TYPO3 > 6.2
  • raised compatibility up to PHP 5.5.x
1.0.1
  • added constant to prevent jQuery from loading
1.1.0
  • first official version having compatibility TYPO3 7.4.x
  • starting 7.4.x with beta version - pull 1.0.1 if you need a stable version for 6.2.x
  • fixed some deprecation logs
  • removed method addFlashMessage from VoteController
  • templateRootPaths, partialRootPaths and layoutRootPaths are now used in the new way instead of the old options
  • replaced array_merge with native PHP function '+'
1.1.1

see https://forge.typo3.org/versions/3223

1.2.0

see https://forge.typo3.org/versions/3210

1.2.1
  • Bug #70933: PHP Fatal error: Call to a member function getFlashMessageQueue() on a non-object
  • Task #71078: Move ExtensionManagementUtility to ExtensionManagementService
  • Task #71079: Move TCALabelUserFuncUtility to TCALabelUserFuncService
  • Task #71443: Change PHP compatibility from 5.5 to 5.6
  • Task #71444: Move $TYPO3_CONF_VARS['SC_OPTIONS']['tce']['formevals'] to support namespaces and autoloader
  • Feature #71758: Raise compatibility to TYPO3 7.6
1.3.0
  • Feature #70829: google rich snippet
  • Suggestion #72162: Refactoring Fluid Templates
  • Suggestion #72163: use data-attributes for jquery logic
1.3.2

Forge version summary

  • Bug #76591: Compatibility fix for TYPO3 7.6
  • Bug #75951: Core: Error handler (BE): PHP Warning: Invalid argument supplied for foreach() in ..../th_rating/Classes/Service/TCALabelUserFuncService.php line 168
  • Suggestion #76593: Add cookieLifetime to global constant settings
  • Bug #76592: Cookieprotection not working when configured in plugin.tx_thrating.ratings
  • Task #76602: TYPO3 7.6 Deprecation: #69822 - Deprecate TCA settings of select fields
1.4.0

Forge version summary

  • Major Feature #73635: Raise compatibility to PHP 7
  • Bug #76630: Cookie protection only working after page refresh
  • Bug #76650: First rating won't show up after AJAX response
  • Task #76597: Check for impact of "Deprecation: #65790 - Remove pages.storage_pid and logic"
    BREAKING CHANGE
    • Please check your configuration after upgrade!
    • The constant plugin.tx_thrating.settings.feUserStoragePid will be removed and replaced by the value of plugin.tx_felogin.storagePid
    • New setting plugin.tx_felogin.storagePid is now required
    • Clear cache after installation/upgrade
  • Task #76601: Check for impact of "Feature: #68700 - Autoload definition can be provided in ext_emconf.php"
1.4.1

Forge version summary

  • Bug #77325: Oops, an error occurred! Konstante "plugin.tx_thrating.settings.feUserStoragePid" nicht gesetzt
  • "plugin.tx_felogin.storagePid" is deprecated and replaced by "plugin.tx_felogin_pi1.storagePid"
  • Feature #76920: Integrate optional no-chaching configuration option e.g. like in "powermail"
1.5.0

Forge version summary

  • Feature #79627: Cut support for TYPO3 6.x
  • Task #76594: Check for impact of "Deprecation: #63453 - Deprecate renderMode attribute of FlashMessagesViewHelper"
  • Task #76603: Check for impact of "Deprecation: #71249 - Deprecate render method of FlashMessage class"
  • Feature #76920: Integrate optional no-chaching configuration option e.g. like in "powermail"
  • Bug #77325: Oops, an error occurred! Konstante "plugin.tx_thrating.settings.feUserStoragePid" nicht gesetzt.
  • Major Feature #79627: Cut support for TYPO3 6.x
  • Task #80828: Cut support for deprecated setting "plugin.tx_felogin.storagePid"
  • Bug #80829: Refactor: Convert LF to CRLF
  • Task #80850: Solve other deprecation log entries of TYPO3 7
  • Bug #80860: MarkAction got hidden after vote
  • Bug #80861: Wrong var type in Cookie protection
  • Major Feature #80862: Add support for TYPO3 8
1.5.1

Forge version summary

  • Bug #81281: Plugin couldn't doesn't support sites using custom pagetype
  • Bug #81282: thratingDyn.css not recreated when page is nonCachable
  • Bug #81283: Force recreation of thratingDyn.css in ExtensionManagementService::makeRatable
  • Suggestion #81303: Use a separete LoggingService class for injection into AbstractExtensionService|-
1.x.y
  • IN DEVELOPMENT

Forge version summary

Wishlist

  • TBD
  • if there are any suggestions please don't hesitate to drop me a mail
  • It´d be great if you could sent me a link to the website you´re using my extension.

Credits

Some who like this extension asked if they could donate me something. I would be - naturally - very happy if you like to do so.
Well, I've got a wishlist on amazon.de or you could send me via paypal. Just use the donation link on the extension page
Thank you in advance!