vjCommentPlugin - 1.1.4

Comment behavior + comment's administration and moderation

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 Releases Changelog Contribute
Show source

vjCommentPlugin

This plugin proviedes possibility to add commentable functionality to your models, which will allow users to place comments.

A presentation of the plugin is available here.

Installation

  • Install the plugin

    $ ./symfony plugin:install vjCommentPlugin
    $ ./symfony plugin:publish-assets
    $ ./symfony cc
    
  • If you do migrations, run them now:

    $ ./symfony doctrine:generate-migrations-diff
    $ ./symfony doctrine:migrate
    

How to make something commentable?

Add behavior in your schema:

  • edit config/doctrine/schema.yml

    YourModel:
      actAs:
        Commentable:
        # others behaviors
    

Build your project:

  • If it's a new project (you don't have build all, so do it !)

    $ ./symfony doctrine:build --all
    
  • If it's an old project, you're adding Commentable ability to:

    $ ./symfony doctrine:build --all-classes
    

At this point behaviour doesn't change or add anything to the model, so migrations will do nothing.

Activate module in frontend

  • edit apps/your_frontend_app/config/settings.yml

    enabled_modules:        [..., comment]
    

Add the form and/or the list of comments wherever you want

  • edit your action file

    public function executeIndex(sfWebRequest $request)
    {
      $this->news = Doctrine::getTable('News')->find($request->getParameter('id'));
    }
    
  • edit your template file

    <?php include_component('comment', 'formComment', array('object' => $yourModelsObject)) ?>
    <?php include_component('comment', 'list', array('object' => $yourModelsObject, 'i' => 0)) ?>
    

And ... that's all ! You only need to get your object and to pass it to the template and two components do the rest.

Logged users and comments

Since 1.1.0 we've added setting, that would allow you to connect sfGuardUser with comments:

  • edit apps/your_frontend_app/config/app.yml

    all:
      vjCommentPlugin:
        guardbind: false
        restricted: false
    

First setting adds relation between Comment and sfGuardUser model. After changing this setting, make sure create migrations:

$ ./symfony doctrine:generate-migrations-diff
$ ./symfony doctrine:migrate
$ ./symfony doctrine:build --all-classes

Second setting if set to true restricts comments only to logged in user.

How to enable reCaptcha

You need to enable it in each frontend application

  • edit apps/your_frontend_app/config/app.yml

    all:
      recaptcha:
        enabled:        true
        # visit http://recaptcha.net/
        public_key:     your_public_recaptcha_key
        private_key:    your_private_recaptcha_key
    

How to disable or param Gravatar

Gravatar is enabled by default, to disable it

  • edit apps/your_frontend_app/config/app.yml

    all:
      gravatar:
        enabled:        false
    

You can change default size, image or directories of gravatar

  • edit apps/your_frontend_app/config/app.yml

    all:
      gravatar:
        default_size:   40
        default_image:  ../web/images/gravatar_default.png
        upload_dir:     .. # by default, this uses sf_upload_dir configuration
        cache_dir_name: g_cache
    

How to moderate comments and/or reports ?

Activate modules in backend

  • edit apps/your_backend_app/config/settings.yml

    enabled_modules:        [..., commentAdmin, commentReportAdmin]
    

Moderate comments You can edit a comment, reply to or delete one. Deletion is not permanent ; the comment appears in frontend with the mention 'deleted by moderator'. You can restore it. Reply in backend is same as reply in frontend. You can use the user object to override author values in the form.

Moderate reports You can remove, validate or invalidate a report and edit or remove a comment. There's three states : untreated, validated and invalidated. By default, list only shows untreated reports. You can switch in filters.

In the list of the commentAdmin module, comment's body is truncated to 50 characters by default to keep a readable list. You can edit this option :

  • edit apps/your_frontend_app/config/app.yml

    all:
      commentAdmin:
        max_length:     50
    

Internationalization

English (default), French and Polish (thanks to fizyk)translations are embed in the plugin.

To use french :

  • edit apps/your_apps/config/settings.yml

    default_culture:        fr #en
    i18n:                   true
    
  • edit apps/your_apps/config/app.yml

    all:
      culture_locale:  fr_FR.utf8
    
  • edit apps/your_apps/config/factories.yml

    all:
      user:
        class: myUser
    
  • edit apps/your_apps/lib/myUser.class.php

    class myUser extends sfBasicSecurityUser
    {
      public function setCulture($culture)
      {
        setlocale(LC_TIME, sfConfig::get('app_culture_locale'));
        parent::setCulture($culture);
      }
    }
    
  • copy the generator.yml files

    $ cp -r plugins/vjCommentPlugin/more/modules/fr/commentAdmin/ apps/your_backend_app/modules/
    $ cp -r plugins/vjCommentPlugin/more/modules/fr/commentReportAdmin/ apps/your_backend_app/modules/
    $ symfony cc
    
  • don't forget to delete your cookies !

TODO

  • Integrate the tests provided

Thanks

A really thanks to fizyk for all his comments, the polish translation and especially for all his great ideas !

Contact

Please contact me if you see a problem, an error or if you think that something can be enhanced ! Advice are cool too !