2017 © Pedro Peláez
 

yii2-extension cms-comments

Comments component

image

skeeks/cms-comments

Comments component

  • Tuesday, November 21, 2017
  • by skeeks-semenov
  • Repository
  • 2 Watchers
  • 0 Stars
  • 34 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 0 Forks
  • 0 Open issues
  • 4 Versions
  • 0 % Grown

The README.md

Comments

Installation

The preferred way to install this extension is through composer., (*1)

Either run, (*2)

php composer.phar require --prefer-dist skeeks/cms-comments "*"

or add, (*3)

"skeeks/cms-comments": "*"
  • Run migrations
yii migrate --migrationPath=@skeeks/cms/comments/migrations/

How to use (simple)

Configuration

  • In your config file
'bootstrap' => ['comments'],
'components' =>
[
'i18n' => [
    'translations'  =>
    [
        'skeeks/comments' =>
        [
            'class'             => 'yii\i18n\PhpMessageSource',
            'basePath'          => '@skeeks/cms/comments/messages',
            'fileMap' => [
                'skeeks/comments' => 'main.php',
            ],
        ]
    ],
],
],

'modules' =>
[
    'comments' =>
    [
        'class' => 'skeeks\cms\comments\CommentsModule',
        //'maxNestedLevel'          => 5
        //'onlyRegistered'          => false
        //'orderDirection'          => SORT_DESC
        //'nestedOrderDirection'    => SORT_ASC
        //'displayAvatar'           => true
        //'commentsPerPage'         => 5,
        'on commentAdded' => function(\skeeks\cms\comments\events\CommentEvent $e)
        {
            /**
             * @var $comment \skeeks\cms\comments\models\CmsComment
             */
            $comment = $e->comment;
            $comment->user;
            $comment->model;
            $comment->model_id;
        },

        'on commentDeleted' => function(\skeeks\cms\comments\events\CommentEvent $e)
        {
            //...
        }
    ]
]
  • In you model [optional]
public function behaviors()
{
  return [
    'comments' => [
      'class' => 'skeeks\cms\comments\behaviors\CommentsBehavior'
    ]
  ];
}
  • Content element property update count comments
'on commentAdded' => function(\skeeks\cms\comments\events\CommentEvent $e)
{
    /**
     * @var $comment \skeeks\cms\comments\models\CmsComment
     * @var $user \common\models\User
     * @var $element \skeeks\cms\models\CmsContentElement
     */
    $comment = $e->comment;
    $user = $comment->user;

    /*$user->appUser->total_comments = $user->appUser->total_comments + 1;
    if (!$user->appUser->save())
    {
        \Yii::error("Not update user total comments: {$user->id}", 'project');
    }*/

    \Yii::error(\skeeks\cms\models\CmsContentElement::tableName(), 'project');
    \Yii::error(\yii\helpers\Json::encode($comment->toArray()), 'project');

    if ($comment->model == \skeeks\cms\models\CmsContentElement::tableName())
    {
        $element = \skeeks\cms\models\CmsContentElement::findOne($comment->model_id);
        if ($element && $element->relatedPropertiesModel->hasAttribute('comments'))
        {
        $totalComments = \skeeks\cms\comments\models\CmsComment::find()->where([
            'model_id' => $element->id,
        ])->andWhere(['model' => \skeeks\cms\models\CmsContentElement::tableName()])->count();
        $element->relatedPropertiesModel->setAttribute('comments', $totalComments);
        //$element->relatedPropertiesModel->setAttribute('comments', ((int) $element->relatedPropertiesModel->getAttribute('comments') + 1));

        if (!$element->relatedPropertiesModel->save())
        {
            \Yii::error("Not update element total comments: {$element->id}", 'project');
        }
        } else
        {
        \Yii::error("Element not found or not have property comments: {$element->id}", 'project');
        }
    }
},

'on commentDeleted' => function(\skeeks\cms\comments\events\CommentEvent $e)
{
....

Usage

  • Widget namespace
use skeeks\cms\comments\widgets\CommentsWidget;
  • Add comment widget in model view using (string) page key :
echo Comments::widget(['model' => $pageKey]);
  • Or display comments using model name and id:
echo Comments::widget(['model' => 'post', 'model_id' => 1]);
  • Or display comments using model behavior:
echo Post::findOne(10)->displayComments();

Module Options

Use this options to configurate comments module:, (*4)

  • userModel - User model class name., (*5)

  • maxNestedLevel - Maximum allowed nested level for comment's replies., (*6)

  • onlyRegistered - Indicates whether not registered users can leave a comment., (*7)

  • orderDirection - Comments order direction., (*8)

  • nestedOrderDirection - Replies order direction., (*9)

  • userAvatar - The field for displaying user avatars., (*10)

    Is this field is NULL default avatar image will be displayed. Also it can specify path to image or use callable type., (*11)

    If this property is specified as a callback, it should have the following signature: function ($user_id), (*12)

For dev

php yii lang/translate-app @skeeks/cms/comments/messages/ru/main.php @skeeks/cms/comments/messages/ main.php

skeeks!
SkeekS CMS (Yii2) — fast, simple, effective!
skeeks.com | cms.skeeks.com | marketplace.cms.skeeks.com, (*13)

The Versions

21/11 2017

dev-master

9999999-dev http://skeeks.com/

Comments component

  Sources   Download

GPL-3.0+

The Requires

 

by Semenov Alexander

framework app yii comments sx skeeks

21/11 2017

1.2.0

1.2.0.0 http://skeeks.com/

Comments component

  Sources   Download

GPL-3.0+

The Requires

 

by Semenov Alexander

framework app yii comments sx skeeks

07/11 2017

1.1.0

1.1.0.0 http://skeeks.com/

Comments component

  Sources   Download

GPL-3.0+

The Requires

 

by Semenov Alexander

framework app yii comments sx skeeks

30/12 2016

1.0.0

1.0.0.0 http://skeeks.com/

Comments component

  Sources   Download

GPL-3.0+

The Requires

 

by Semenov Alexander

framework app yii comments sx skeeks