Commit 877ea4b2b3619a86e31e7ff64b41cca143441cb4

Authored by Yarik
1 parent 1b09a6ee

test

common/models/Portfolio.php
... ... @@ -2,9 +2,12 @@
2 2  
3 3 namespace common\models;
4 4  
  5 + use common\modules\comment\models\Comment;
  6 + use common\modules\comment\models\Rating;
5 7 use Yii;
6 8 use yii\behaviors\BlameableBehavior;
7 9 use yii\behaviors\TimestampBehavior;
  10 + use yii\db\ActiveQuery;
8 11 use yii\db\Expression;
9 12  
10 13 /**
... ... @@ -26,6 +29,9 @@
26 29 * @property PortfolioSpecialization[] $portfolioSpecializations
27 30 * @property Specialization[] $specializations
28 31 * @property User $user
  32 + * @property Comment[] $comment
  33 + * @property Rating[] $rating
  34 + * @property string $ratingValue
29 35 */
30 36 class Portfolio extends \yii\db\ActiveRecord
31 37 {
... ... @@ -199,4 +205,37 @@
199 205 {
200 206 return $this->hasOne(User::className(), [ 'id' => 'user_id' ]);
201 207 }
  208 +
  209 + /**
  210 + * @return ActiveQuery
  211 + */
  212 + public function getComments()
  213 + {
  214 + return $this->hasMany(Comment::className(), [ 'model_id' => 'portfolio_id' ])
  215 + ->andWhere([ 'comment.model' => $this->className(), 'comment.status' => Comment::STATUS_ACTIVE ]);
  216 + }
  217 +
  218 + /**
  219 + * @return ActiveQuery
  220 + */
  221 + public function getRating()
  222 + {
  223 + return $this->hasMany(Rating::className(), [ 'model_id' => 'comment_id' ])
  224 + ->via('comments')
  225 + ->andWhere([
  226 + 'not',
  227 + [ 'rating.value' => NULL ],
  228 + ]);
  229 + }
  230 +
  231 + /**
  232 + * @return string
  233 + */
  234 + public function getRatingValue()
  235 + {
  236 + return $this->getRating()
  237 + ->asArray()
  238 + ->select([ 'sum' => 'ROUND(SUM(rating.value)/COUNT(rating.value)::numeric, 1)' ])
  239 + ->scalar();
  240 + }
202 241 }
... ...
common/modules/comment/widgets/views/form-comment.php
... ... @@ -5,6 +5,7 @@
5 5 * @var \yii\data\ActiveDataProvider $dataProvider
6 6 * @var null|\common\modules\comment\models\Rating $rating
7 7 */
  8 + use kartik\rating\StarRating;
8 9 use yii\widgets\ActiveForm;
9 10 use yii\helpers\Html;
10 11  
... ... @@ -15,16 +16,16 @@
15 16  
16 17 <?php
17 18 $form = ActiveForm::begin();
18   -
19   - echo $form->field($rating, 'value')
20   - ->label(false)
21   - ->radioList([
22   - 1 => 1,
23   - 2 => 2,
24   - 3 => 3,
25   - 4 => 4,
26   - 5 => 5,
27   - ]);
  19 + if($rating) {
  20 + echo $form->field(( !empty( $model->rating ) ? $model->rating : $rating ), 'value')
  21 + ->label(false)
  22 + ->widget(StarRating::className(), [ 'pluginOptions' => [ 'size' => 'xxs',
  23 + 'step' => 1,
  24 + 'value' => 2,
  25 + 'showCaption' => false,
  26 + ],
  27 + ]);
  28 + }
28 29  
29 30 if($model->scenario == $model::SCENARIO_GUEST) {
30 31 echo $form->field($model, 'user_name', [
... ... @@ -44,7 +45,8 @@
44 45 'class' => 'custom-input-4',
45 46 ],
46 47 ])
47   - ->textInput();
  48 + ->textInput()
  49 + ->hint('Ваш email не будет доступен к просмотру.');
48 50 }
49 51  
50 52 ?>
... ...
common/modules/comment/widgets/views/project_comment_view.php
1 1 <?php
2 2 use common\models\User;
  3 + use common\modules\comment\widgets\CommentWidget;
3 4 use kartik\rating\StarRating;
4 5 use yii\helpers\Html;
5 6  
... ... @@ -18,8 +19,9 @@
18 19 ->with('userInfo')
19 20 ->one();
20 21 }
  22 + $model->buildButtons(['delete']);
21 23 ?>
22   -<div class="new-portf-comm-read artbox_comment_container" data-comment_id="<?= $model->comment_id ?>" data-form_name="<?= $model->formName() ?>">
  24 +<div class="new-portf-comm-read artbox_comment_container" data-key="<?= $model->comment_id ?>" data-form="<?= $model->formName() ?>">
23 25 <div class="style">
24 26 <div class="header-cabinet-foto">
25 27 <?php
... ... @@ -64,6 +66,19 @@
64 66 <?= Html::encode($model->text) ?>
65 67 </div>
66 68 <div style="clear:both"></div>
  69 + <div>
  70 + <?php
  71 + if(!empty( $model->buttons[ 'delete' ] )) {
  72 + echo Html::a(($model->user_id != NULL && $model->user_id == \Yii::$app->user->id)?'Удалить':'Пожаловаться ', $model->buttons[ 'delete' ], [ 'class' => CommentWidget::$baseClass[ 'comment_delete' ] ]);
  73 + }
  74 + if(!empty( $model->buttons[ 'update' ] )) {
  75 + echo Html::a('Редактировать', $model->buttons[ 'update' ], [ 'class' => CommentWidget::$baseClass[ 'comment_update' ] ]);
  76 + }
  77 + if(!empty( $model->buttons[ 'reply' ] )) {
  78 + echo Html::a('Ответить', $model->buttons[ 'reply' ], [ 'class' => CommentWidget::$baseClass[ 'comment_reply' ] ]);
  79 + }
  80 + ?>
  81 + </div>
67 82 <?php
68 83 /*
69 84 ?>
... ...
frontend/views/performer/_portfolio_list_view.php
... ... @@ -37,21 +37,21 @@
37 37 <div class="portfolio-project-views-img">
38 38 <img src="/images/portfolio-project/ico-1.png"/></div>
39 39 </div>
40   - <div class="portfolio-project-views-txt">127</div>
  40 + <div class="portfolio-project-views-txt"><?=$model->view_count?></div>
41 41 </div>
42 42 <div class="portfolio-project-rati ico-views-bl">
43 43 <div class="portfolio-project-views-img-wr">
44 44 <div class="portfolio-project-views-img">
45 45 <img src="/images/portfolio-project/ico-2.png"/></div>
46 46 </div>
47   - <div class="portfolio-project-views-txt">10.0</div>
  47 + <div class="portfolio-project-views-txt"><?=($model->getRatingValue()?:'Нет')?></div>
48 48 </div>
49 49 <div class="ico-views-bl">
50 50 <div class="portfolio-project-views-img-wr">
51 51 <div class="portfolio-project-views-img">
52 52 <img src="/images/portfolio-project/ico-3.png"/></div>
53 53 </div>
54   - <div class="portfolio-project-views-txt">14</div>
  54 + <div class="portfolio-project-views-txt"><?=count($model->comments)?></div>
55 55 </div>
56 56 </div>
57 57 <div title="<?= implode(', ', ArrayHelper::getColumn($model->specializations, 'specialization_name')) ?>" class="portfolio-project-blocks-tags"><?= implode(', ', ArrayHelper::getColumn($model->specializations, 'specialization_name')) ?></div>
... ...
frontend/views/performer/portfolio-view.php
... ... @@ -2,6 +2,7 @@
2 2  
3 3 use common\models\Portfolio;
4 4 use common\models\User;
  5 + use kartik\rating\StarRating;
5 6 use yii\helpers\Html;
6 7 use yii\web\ViewAction;
7 8 use yii\web\View;
... ... @@ -15,6 +16,7 @@
15 16 $this->params[ 'user' ] = $user;
16 17  
17 18 $this->title = 'My Yii Application';
  19 + $rating = $portfolio->getRatingValue();
18 20 ?>
19 21 <div class="portfolio-new-page-wrapper style">
20 22 <div class="new-portfolio-bg style ">
... ... @@ -35,24 +37,25 @@
35 37 <div class="portfolio-project-views-img">
36 38 <img src="/images/portfolio-project/ico-2.png"></div>
37 39 </div>
38   - <div class="portfolio-project-views-txt">XX.X</div>
  40 + <div class="portfolio-project-views-txt"><?=(!empty($rating)?$rating:'Нет')?></div>
39 41 </div>
40 42 <div class="ico-views-bl">
41 43 <div class="portfolio-project-views-img-wr">
42 44 <div class="portfolio-project-views-img">
43 45 <img src="/images/portfolio-project/ico-3.png"></div>
44 46 </div>
45   - <div class="portfolio-project-views-txt"></div>
  47 + <div class="portfolio-project-views-txt"><?=count($portfolio->comments)?></div>
46 48 </div>
47 49 </div>
48 50 </div>
49 51 <div class="new-portfolio-rating">
50   - <div class="rating new-portf-rat">
51   - <!--оценка-->
52   - <input type="hidden" class="val" value="4"/>
53   - <!--количество голосов-->
54   - <input type="hidden" class="votes" value="12"/>
55   - </div>
  52 + <?php
  53 + echo StarRating::widget([
  54 + 'name' => 'rating_portfolio',
  55 + 'value' => $portfolio->getRatingValue(),
  56 + 'pluginOptions' => ['displayOnly' => true, 'size' => 'xxs']
  57 + ]);
  58 + ?>
56 59 </div>
57 60 </div>
58 61  
... ... @@ -60,13 +63,15 @@
60 63 <div class="new-portf-slider-title"><?= $portfolio->name ?></div>
61 64 <?php
62 65 if(!empty( $portfolio->gallery ) || !empty( $portfolio->gallery->photo )) {
  66 + $gallery = explode(',', $portfolio->gallery->photo);
  67 + array_pop($gallery);
63 68 ?>
64 69 <div class="new-portf-slider style">
65 70 <div class="slider-video-wr">
66 71 <div id="demo5" class="scroll-img">
67 72 <ul>
68 73 <?php
69   - foreach( explode(',', $portfolio->gallery->photo) as $one_photo ) {
  74 + foreach($gallery as $one_photo) {
70 75 ?>
71 76 <li><img src="<?= $one_photo ?>" alt=""/>
72 77 <?php
... ... @@ -117,7 +122,7 @@
117 122 'model' => $portfolio::className(),
118 123 'model_id' => $portfolio->portfolio_id,
119 124 'comment_class' => \common\modules\comment\models\Comment::className(),
120   - 'rating_class' => \common\modules\comment\models\Rating::className(),
  125 + 'rating_class' => (\Yii::$app->user->id?\common\modules\comment\models\Rating::className():false),
121 126 'class_options' => [
122 127 'scenario' => is_int(\Yii::$app->user->getId()) ? \common\modules\comment\models\Comment::SCENARIO_USER : \common\modules\comment\models\Comment::SCENARIO_GUEST,
123 128 'user_id' => \Yii::$app->user->getId(),
... ...
frontend/views/performer/portfolio.php
... ... @@ -4,6 +4,7 @@
4 4 use \yii\helpers\Html;
5 5 use yii\helpers\Url;
6 6 use yii\widgets\ListView;
  7 + use yii\widgets\Pjax;
7 8  
8 9 /* @var $this yii\web\View
9 10 * @var $portfolio yii\data\ArrayDataProvider
... ... @@ -13,6 +14,9 @@
13 14 ?>
14 15 <div class="performer-vacancy-vacant-title-reclam-wr style">
15 16  
  17 + <?php
  18 + Pjax::begin();
  19 + ?>
16 20 <div class="portfolio-project-wr style">
17 21 <div class="workplace-title style"><p>Проектов: <?= $portfolio->totalCount ?></p></div>
18 22 <div class="portfolio-project-tags style">
... ... @@ -44,5 +48,8 @@
44 48  
45 49 </div>
46 50 </div>
  51 + <?php
  52 + Pjax::end();
  53 + ?>
47 54  
48 55 </div>
49 56 \ No newline at end of file
... ...
frontend/web/css/style.css
... ... @@ -6650,7 +6650,7 @@ input[disabled], select[disabled] {
6650 6650 .admin-portfolio-foto .btn {margin-top: 0}
6651 6651 .admin-portfolio-foto.success_download .btn {margin-top: 15px}
6652 6652 .admin-portfolio-foto #cover_buttons_block {
6653   - top: 173px;
  6653 + top: 188px;
6654 6654 left: 116px;
6655 6655 }
6656 6656 .admin-portfolio-foto .admin-ava-wr {
... ...