sfReviewPlugin - 1.2

Review management plugin.

You are currently browsing
the website for symfony 1

Visit the Symfony2 website


« Back to the Plugins Home

Signin


Forgot your password?
Create an account

Tools

Stats

advanced search
Information Readme Dependencies Releases Changelog Contribute
Show source

sfReview plugin

The sfReviewPlugin is a symfony plugin that allows users from sfGuardPlugin to leave reviews on different entities of an application. We use it to place reviews of spanish politicians at http://voota.es, you are welcome to test it !

Upgrade

Please, use the sql script shipped with each new version to upgrade database:

    data/sql/update-from-n_m.sql 

Installation

  • Install the plugin

    $ symfony plugin:install sfReviewPlugin
    
  • Rebuild your model

    $ symfony propel:build-model
    $ symfony propel:build-sql
    $ symfony propel:build-forms
    $ symfony propel:build-filters
    
  • Update your database tables by starting from scratch (it will delete all the existing tables, then re-create them):

    $ symfony propel:insert-sql
    

    or you can just create the new tables by using the generated SQL statements in data/sql/plugins.sfReviewPlugin.lib.model.schema.sql

  • Enable one or more modules in your settings.yml (optional)

    • For your backend application: sfReviewType,sfReviewStatus,sfReview
    • For your frontend application: sfReviewFront

      [php] all: .settings: enabled_modules: [default,sfGuardAuth,sfGuardUser,sfGuardGroup,sfGuardPermission ,sfReviewType,sfReviewStatus,sfReview]

  • Clear you cache

    $ symfony cc
    
  • Configure status:

    $ symfony review:create-status
    
  • Configure types (optional):

    $ symfony review:create-type Celebrity
    

    where Celebrity is the entity to be reviewed

  • Configure SfGuard permissions. Only users whith 'superadmin' or 'moderator' credentials are authorized to access backend modules.

  • Enable i18n for the frontend application (apps/frontend/config/settings.yml):

    [php] all: .settings: i18n: on # Enable interface translation. Set to off if your application should not be translated.

Setup the module to be reviewed

Imagine that we have a module called 'Celebrity' and that our users are going to put reviews of each Celebrity we have in the database. You should have a template in apps/frontend/modules/celebrity/templates/showSucces.php with information about a celebrity. For now, let's say that we are showing only the name of the celebrity:

  [php]
  <?php echo $celeb->getName() ?>

First of all, we need to setup the view to use the plugin assets: [php] stylesheets: [main.css, /sfReviewPlugin/css/sf_review.css] javascripts: [/sfReviewPlugin/js/sf_review.js, /sfJqueryReloadedPlugin/js/jquery-1.3.2.min.js, /sfJqueryReloadedPlugin/js/jquery-ui-1.7.2.custom.min.js]

Yes, jquery javascripts are also needed. Ok, now we are going to fill the template with the necesary code to put a review on this subject:

  [php]
  <?php use_helper('Javascript') ?>
  <?php use_helper('jQuery') ?>
  <script type="text/javascript">
  <!--
  $(document).ready(function(){
    loadReviewBox( 
        '<?php echo url_for('@sf_review_init') ?>',
        1,
        <?php echo $id; ?>,
        '0',
        'sfreview_box'
    );
  });
  //-->
  </script>

  <?php echo $celeb->getName() ?>

  <div id="sfreview_box"></div>

Manager and helper

The plugin is shipped with a manager and a helper class that simplifies showing the reviews. In the controller you can ask for reviews of one type:

  [php]
  $this->positives = SfReviewManager::getReviewsByEntityAndValue($request, 1, $id, 1);
  $this->positiveCount =  SfReviewManager::getTotalReviewsByEntityAndValue(1, $id, 1);
  $this->negatives = SfReviewManager::getReviewsByEntityAndValue($request, 1, $id, -1);
  $this->negativeCount =  SfReviewManager::getTotalReviewsByEntityAndValue(1, $id, -1);

And in the view you can show the review test:

  [php]
  <?php use_helper('SfReview') ?>
  ...
  <?php echo review_text( $the_review ) ?>

Support

This plugin is mainteined by the people from Voota (http://voota.es). Please contact us for any issue or comment at tech [at] voota.es. We will be glad to hear from you :)

Thank you!