Commit 172119fd authored by Олег Гиммельшпах's avatar Олег Гиммельшпах

Merge branch 'master' of git.task-on.com:ktask/task-on.com

parents 613e8694 47e910be
......@@ -183,7 +183,6 @@ class AuthItem extends \common\components\ActiveRecordModel
public function getRoles()
{
static $roles;
if(!$roles)
{
$roles = $this->findAllByAttributes(array(
......
......@@ -64,3 +64,38 @@ a.login_form_link, a.login_form_popup_link, a.reg_popup_link, a.reg_form_link {
.button_social{
margin-top: -10px;
}
img.play_img{
width: 85px;
height: auto;
top: 50%;
left: 50%;
position: absolute;
cursor: pointer;
}
.ytb_video img {
cursor: pointer;
}
.lessons-block:before, .lessons-block:after {
display: table;
content: " ";
}
a.ls_block_title {
overflow: hidden;
height: 105px;
}
.ls_block_btn {
margin-top:10px;
}
.ls_likes {
margin-bottom:20px;
}
.ls_likes_y_choice {
background: #00CF56;
color: #fff;
text-decoration: none;
}
.ls_likes_n_choice {
background: #F26363;
color: #fff;
text-decoration: none;
}
\ No newline at end of file
......@@ -112,16 +112,37 @@ $(document).ready(function() {
else {
$('.spec_propotition').hide();
}
/*jQuery.ajax({
});
$('body').on('click', 'a.ls_likes_y', function(){
link = $(this);
courseId = link.data('course');
if (!link.hasClass("ls_likes_y_choice") ) {
jQuery.ajax({
type: 'POST',
url: "/school/likes-course/like-course",
dataType: "html",
data: {'courseId': courseId},
success: function(data){
jQuery('.ls_likes').html(data);
}
});
}
});
$('body').on('click', 'a.ls_likes_n', function(){
link = $(this);
courseId = link.data('course');
if (!link.hasClass("ls_likes_n_choice")) {
jQuery.ajax({
type: 'POST',
url: "/school/lessons-admin/update-form-document",
data: {'docId': doc},
url: "/school/likes-course/unlike-course",
data: {'courseId': courseId},
dataType: "html",
success: function(data){
jQuery('#doc-upd').append(
data
);
jQuery('.ls_likes').html(data);
}
});
}
});*/
});
});
......
......@@ -42,6 +42,13 @@ class CourseController extends BaseController
public function actionView($id)
{
if($_GET["source"] == 'email' && !Yii::$app->response->cookies->get('source')){
$options['name'] = 'source';
$options['value'] = 'email';
$options['expire'] = time()+86400*365;
$cookie = new \yii\web\Cookie($options);
\Yii::$app->response->cookies->add($cookie);
}
$model = Courses::findOne($id);
$searchModel = new SearchLessons();
$search['course_id'] = $id;
......
......@@ -22,6 +22,14 @@ class LessonController extends BaseController
public function actionView($id)
{
if($_GET["source"] == 'email' && !Yii::$app->response->cookies->get('source')){
$options['name'] = 'source';
$options['value'] = 'email';
$options['expire'] = time()+86400*365;
$cookie = new \yii\web\Cookie($options);
\Yii::$app->response->cookies->add($cookie);
}
$model = Lessons::findOne($id);
\Yii::$app->view->registerMetaTag([
......@@ -52,4 +60,13 @@ class LessonController extends BaseController
\Yii::$app->response->sendFile($file);
}
}
function cookie($name,$value=null,$expire=null){
$options['name'] = $name;
$options['value'] = $value;
$options['expire'] = time()+86400*365;
$cookie = new \yii\web\Cookie($options);
\Yii::$app->response->cookies->add($cookie);
}
}
<?php
namespace common\modules\school\controllers;
use common\components\BaseController;
use common\modules\school\models\LikesCourse;
class LikesCourseController extends BaseController
{
public static function actionsTitles()
{
return [
'Like-course' => 'Положительная оценка курса пользователем',
'Unlike-course' => 'Отрицательная оценка курса пользователем',
];
}
public function actionLikeCourse()
{
if (!\Yii::$app->user->isGuest){
$courseId = $_POST['courseId'];
$userId = \Yii::$app->user->id;
$estimateCourse = LikesCourse::findOne(['user_id' => $userId, 'course_id' => $courseId]);
if (!$estimateCourse){
$estimateCourse = new LikesCourse();
$estimateCourse->estimate = LikesCourse::LIKE;
$estimateCourse->user_id = $userId;
$estimateCourse->course_id = $courseId;
$estimateCourse->save();
}
else{
if ($estimateCourse->estimate == LikesCourse::UNLIKE){
$estimateCourse->estimate = LikesCourse::LIKE;
$estimateCourse->save();
}
}
$gradeUser = LikesCourse::LIKE;
echo $this->renderPartial('block_likes_course', array(
'gradeUser' => $gradeUser, 'courseId' => $courseId
));
}
}
public function actionUnlikeCourse()
{
if (!\Yii::$app->user->isGuest){
$courseId = $_POST['courseId'];
$userId = \Yii::$app->user->id;
$estimateCourse = LikesCourse::findOne(['user_id' => $userId, 'course_id' => $courseId]);
if (!$estimateCourse){
$estimateCourse = new LikesCourse();
$estimateCourse->estimate = LikesCourse::UNLIKE;
$estimateCourse->user_id = $userId;
$estimateCourse->course_id = $courseId;
$estimateCourse->save();
}
else{
if ($estimateCourse->estimate == LikesCourse::LIKE){
$estimateCourse->estimate = LikesCourse::UNLIKE;
$estimateCourse->save();
}
}
$gradeUser = LikesCourse::UNLIKE;
echo $this->renderPartial('block_likes_course', array(
'gradeUser' => $gradeUser, 'courseId' => $courseId
));
}
}
}
......@@ -21,9 +21,10 @@ if ($model->files){
</a>
</div>';
}
$docsLesson = implode("", $docsLesson);
}
$docsLesson = implode("", $docsLesson);
$newDoc = 'Добавить документ<span><a class="btn" id="add-doc-projs" href="javascript:void(0);" title="Новый документ">
<i class="icon-plus"></i></a>
</span>
......
......@@ -6,6 +6,7 @@ use Yii;
use common\modules\school\models\Lessons;
use common\modules\testings\models\Test;
use common\modules\school\models\LikesCourse;
class Courses extends \common\components\ActiveRecordModel
{
......@@ -135,4 +136,32 @@ class Courses extends \common\components\ActiveRecordModel
}
return $class;
}
public function getEstimateCourseLike($courseId)
{
$userId = \Yii::$app->user->id;
$estimateCourse = LikesCourse::findOne(['user_id' => $userId, 'course_id' => $courseId,
'estimate' => LikesCourse::LIKE]);
if($estimateCourse){
return true;
}
else {
return false;
}
}
public function getEstimateCourseUnlike($courseId)
{
$userId = \Yii::$app->user->id;
$estimateCourse = LikesCourse::findOne(['user_id' => $userId, 'course_id' => $courseId,
'estimate' => LikesCourse::UNLIKE]);
if($estimateCourse){
return true;
}
else {
return false;
}
}
}
......@@ -19,7 +19,7 @@ use common\modules\school\models\LessonImage;
*/
class Lessons extends \common\components\ActiveRecordModel
{
const PAGE_SIZE = 10;
const PAGE_SIZE = 100;
const IMAGES_FOLDER = '/uploads/lessons_docs/';
......
<?php
namespace common\modules\school\models;
class LikesCourse extends \common\components\ActiveRecordModel
{
const LIKE = 1;
const UNLIKE = 2;
public static function tableName()
{
return 'likes_course';
}
public function name()
{
return 'Оценка курса';
}
public function attributeLabels()
{
return [
'estimate' => 'Оценка',
'user_id' => 'Пользователь',
'course_id' => 'Курс',
];
}
/**
* @inheritdoc
*/
public function rules()
{
return [
[['estimate', 'user_id', 'course_id'], 'required'],
[['estimate', 'user_id', 'course_id'], 'integer'],
];
}
/**
* @inheritdoc
*/
public function behaviors()
{
return [
];
}
}
......@@ -66,6 +66,8 @@ class SearchLessons extends Lessons
$dataProvider = new ActiveDataProvider([
'query' => $query,
'pagination'=>array(
'pageSize'=>Lessons::PAGE_SIZE ),
]);
return $dataProvider;
......
......@@ -5,7 +5,7 @@
WidgetAssetBundle::register($this);
?>
<div class="col-md-3 col-xs-6 col-sm-12">
<div class="ls_block_item">
<div class="line_ls">Урок <?php echo $model->number;?></div>
<a href="<?php echo Url::toRoute(['/school/lesson/view', 'id' => $model->id]);?>" class="ls_block_title">
......@@ -15,5 +15,4 @@
Смотреть
</a>
</div>
</div>
......@@ -13,6 +13,9 @@
<div class="kurs_over">
<h1 class="kurs_title"><span><?php echo $model->title;?></span></h1><br>
<span class="kurs_sub-title"><?php echo $model->description;?></span>
<?php if($model->type == Courses::TYPE_DV):?>
<div class="kurs_lock"></div>
<?php endif;?>
<?php if($model->spec_proposition):?>
<div class="blip_kurs">За просмотр этих курсов<br> мы заплатим 15 000 руб.</div>
<?php endif;?>
......
......@@ -10,7 +10,7 @@
<div class="row">
<div class="col-md-5 col-xs-7 col-sm-12">
<div class="ball-block">Накоплено баллов:
<span class="col-ball">99 999</span>
<span class="col-ball">0</span>
<a href="#" class="ball-link">Как увеличить?</a>
<div class="ball_hover">Текст как увеличить,<br> текст как увеличить,</div>
</div>
......@@ -47,31 +47,33 @@
<?php echo \yii\widgets\ListView::widget( [
'dataProvider' => $dataProvider,
'itemView' => 'item-view-lesson',
'itemOptions' => ['tag' => 'div'],
'options' => ['tag' => 'div'],
'itemOptions' => ['tag' => 'div class="col-md-3 col-xs-6 col-sm-12"'],
'options' => ['tag' => 'div class="lessons-block"'],
'emptyTextOptions' => [ 'tag' => 'div', 'class' => 'empty-text' ],
'layout' => '{items}<li><nav class="pages">{pager}</nav></li>',
'layout' => '{items}<div class="clear"></div><li><nav class="pages">{pager}</nav></li>',
'pager' => [
'class' => 'common\components\zii\FrontLinkPager',
'activePageCssClass' => 'is-active',
'prevPageLabel' => '<span class="glyphicon glyphicon-chevron-left"></span>Предыдущая',
'nextPageLabel' => 'Следующая<span class="glyphicon glyphicon-chevron-right"></span>',
'prevPageLabel' => '<span class="glyphicon glyphicon-chevron-left"></span>',
'nextPageLabel' => '<span class="glyphicon glyphicon-chevron-right"></span>',
'options' => [
'class' => 'pages-list',
],
],
] );
?>
<div class="row">
<div class="clear"></div>
<?php if (!Yii::$app->user->isGuest):?>
<div class="col-md-3 col-xs-6 col-sm-12">
<div class="ls_likes">
<div class="ls_likes_title">Нравится курс?</div>
<a href="" class="ls_likes_y">Да</a>
<a href="" class="ls_likes_n">Нет</a>
</div>
<a href="javascript:void(0)" class="ls_likes_y <?php echo $model->getEstimateCourseLike($model->id) ? 'ls_likes_y_choice':'';?>"
data-course="<?php echo $model->id;?>">Да</a>
<a href="javascript:void(0)" class="ls_likes_n <?php echo $model->getEstimateCourseUnlike($model->id) ? 'ls_likes_n_choice':'';?>"
data-course="<?php echo $model->id;?>">Нет</a>
</div>
</div>
<?php endif;?>
</div>
</section>
<footer>
......
......@@ -13,7 +13,7 @@ WidgetAssetBundle::register($this);
<div class="row">
<div class="col-md-5 col-xs-7 col-sm-12">
<div class="ball-block">Накоплено баллов:
<span class="col-ball">99 999</span>
<span class="col-ball">0</span>
<a href="#" class="ball-link">Как увеличить?</a>
<div class="ball_hover">Текст как увеличить,<br> текст как увеличить,</div>
</div>
......@@ -62,7 +62,14 @@ WidgetAssetBundle::register($this);
<div class="col-md-12 col-xs-12 col-sm-12">
<div class="ytb_video">
<?php if (!Yii::$app->user->isGuest):?>
<iframe width="903" height="508" src="https://www.youtube.com/embed/<?php echo $model->video_id ?>" frameborder="0" allowfullscreen></iframe>
<?php else:?>
<a href="#registration_form2" class="popup-form">
<img width="903" height="508" src="http://img.youtube.com/vi/<?php echo $model->video_id ?>/0.jpg">
<img width="85" src="/images/youtube_play.png" alt="" class="play_img">
</a>
<?php endif;?>
</div>
<?php if($model->course->spec_proposition):?>
......@@ -154,14 +161,16 @@ WidgetAssetBundle::register($this);
<div class="row">
<div class="col-md-6 col-xs-6 col-sm-12">
<i class="ai_format"></i>
<a href="<?php echo Url::toRoute(['/school/lesson/download-documents', 'id' => $file->id]);?>" class="ai_link">
<a href="<?php echo Yii::$app->user->isGuest ? '#registration_form2': Url::toRoute(['/school/lesson/download-documents', 'id' => $file->id]);?>"
class="ai_link <?php echo Yii::$app->user->isGuest ? 'popup-form': '';?>">
<?php echo $file->title;?>
</a>
</div>
<?php else:?>
<div class="col-md-6 col-xs-6 col-sm-12">
<i class="ai_format"></i>
<a href="<?php echo Url::toRoute(['/school/lesson/download-documents', 'id' => $file->id]);?>" class="ai_link">
<a href="<?php echo Yii::$app->user->isGuest ? '#registration_form2': Url::toRoute(['/school/lesson/download-documents', 'id' => $file->id]);?>"
class="ai_link <?php echo Yii::$app->user->isGuest ? 'popup-form': '';?>">
<?php echo $file->title;?>
</a>
</div>
......
<?php
use common\modules\school\models\LikesCourse;
?>
<div class="ls_likes_title">Нравится курс?</div>
<a href="javascript:void(0)" class="ls_likes_y <?php echo ($gradeUser == LikesCourse::LIKE) ? 'ls_likes_y_choice':'';?>"
data-course="<?php echo $courseId;?>">Да</a>
<a href="javascript:void(0)" class="ls_likes_n <?php echo ($gradeUser == LikesCourse::UNLIKE) ? 'ls_likes_n_choice':'';?>"
data-course="<?php echo $courseId;?>">Нет</a>
......@@ -125,8 +125,13 @@ class UserController extends \common\components\BaseController {
if ($model->validate()) {
$password = $model->password;
$model->password = Yii::$app->getSecurity()->generatePasswordHash($model->password);
//$model->activate_code = md5($model->password . 'xdf5sf');
if(Yii::$app->request->cookies->get('source')=='email'){
$model->source = User::SOURCE_MESSAGE;
}
else{
$model->source = User::SOURCE_DEFAULT;
}
$model->save(false);
$assignment = new AuthAssignment();
......
......@@ -69,6 +69,7 @@ class User extends \common\components\ActiveRecordModel implements IdentityInter
const SCENARIO_RECOVER_PASSWORD = 'RecoverPassword';
const SCENARIO_SOCIAL_REGISTRATION = 'SocialRegistration';
const SOURCE_DEFAULT = 'direct';
const SOURCE_MESSAGE= 'email';
public $password_c;
public $captcha;
......@@ -439,8 +440,7 @@ class User extends \common\components\ActiveRecordModel implements IdentityInter
public function getRoleName()
{
$assigment = AuthAssignment::find(['user_id' => $this->id])->one();
$assigment = AuthAssignment::findAll(['user_id' => $this->id]);
if (!$assigment)
{
$assigment = new AuthAssignment();
......@@ -448,7 +448,7 @@ class User extends \common\components\ActiveRecordModel implements IdentityInter
$assigment->user_id = $this->id;
$assigment->save(false);
}
$roles = \Yii::$app->authManager->getRoles($this->id);
$roles = \Yii::$app->authManager->getRolesByUser($this->id);
$out = '';
foreach($roles as $key=>$role) {
$out .= $role->description . ', ';
......
<?php
use yii\db\Schema;
use yii\db\Migration;
class m160308_105319_create_table_likes_course extends Migration
{
public function safeUp()
{
$tableOptions = null;
if ($this->db->driverName === 'mysql')
{
$tableOptions = 'CHARACTER SET utf8 COLLATE utf8_general_ci ENGINE=InnoDB';
}
// Структура таблицы `lessons`
$this->createTable('likes_course', [
'id' => Schema::TYPE_PK,
'estimate' => Schema::TYPE_INTEGER . '(11) NOT NULL',
'user_id' => Schema::TYPE_INTEGER . '(11) NOT NULL',
'course_id' => Schema::TYPE_INTEGER . '(11) NOT NULL',
], $tableOptions);
$this->createIndex('FK_likes_course_users', 'likes_course', 'user_id');
$this->createIndex('FK_likes_course_courses', 'likes_course', 'course_id');
}
public function safeDown()
{
$this->dropTable('likes_course');
}
}
......@@ -179,8 +179,11 @@ return [
'support' => 'support/support/index',
'support/<_a>/<id:\d+>' => 'support/support/<_a>',
'support/<_a>' => 'support/support/<_a>',
'school' => 'school/course/index',
'school/' => 'school/course/index',
'school/course/<id>/<source>' => 'school/course/view',
'school/course/<id>' => 'school/course/view',
'school/lesson/download-documents/<id>' => 'school/lesson/download-documents',
'school/lesson/<id>/<source>' => 'school/lesson/view',
'school/lesson/<id>' => 'school/lesson/view',
'login/eauth/<service_eauth:google|vk|facebook>' => 'site/login',
'login' => 'site/login',
......@@ -199,9 +202,9 @@ return [
],
'authManager' => [
'class' => 'yii\rbac\DbManager',
'connectionID' => 'db',
'itemTable' => 'auth_items',
'assignmentTable' => 'auth_assignments',
/*'connectionID' => 'db',*/
'itemTable' => 'auth_item',
'assignmentTable' => 'auth_assignment',
'itemChildTable' => 'auth_item_child',
'defaultRoles' => [
'user',
......
......@@ -163,7 +163,7 @@ class SiteController extends Controller
$model = new LoginForm();
if ($model->load(Yii::$app->request->post()) && $model->validate())
{
if($model->user->role == User::ROLE_USER)
if($model->user->role == User::ROLE_USER || $model->user->role == User::ROLE_ADMIN)
{
$model->login();
}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment