Commit 556e1e9d authored by Шакарим Сапа's avatar Шакарим Сапа

Merge remote-tracking branch 'origin/master'

parents 5027a07f 172119fd
......@@ -32,9 +32,6 @@ class HeadAsset extends AssetBundle
'position' => \yii\web\View::POS_HEAD
];
public $depends = [
'yii\web\JqueryAsset',
'yii\jui\JuiAsset',
'yii\bootstrap\BootstrapAsset',
'yii\bootstrap\BootstrapPluginAsset',
];
}
......@@ -28,6 +28,7 @@ return [
'triggers' => ['class' => 'common\modules\triggers\Module'],
'message-template' => ['class' => 'common\modules\messageTemplate\Module'],
'school' => ['class' => 'common\modules\school\Module'],
'support' => ['class' => 'common\modules\support\Module'],
'rbac' => ['class' => 'common\modules\rbac\rbac'],
],
'components' => [
......@@ -51,7 +52,10 @@ return [
],
'user' => [
'identityClass' => 'common\modules\users\models\User',
'enableAutoLogin' => true,
'identityCookie' => [
'name' => '_backendIdentity'
],
'enableAutoLogin' => false,
],
'log' => [
'traceLevel' => YII_DEBUG ? 3 : 0,
......
......@@ -5,7 +5,7 @@ use Yii;
use yii\filters\AccessControl;
use yii\web\Controller;
use common\models\LoginForm;
use yii\filters\VerbFilter;
use common\modules\users\models\User;
/**
* Site controller
......@@ -34,12 +34,6 @@ class SiteController extends Controller
],
],
],
'verbs' => [
'class' => VerbFilter::className(),
'actions' => [
'logout' => ['post'],
],
],
];
}
......@@ -66,8 +60,17 @@ class SiteController extends Controller
$this->layout = "blank";
$model = new LoginForm();
if ($model->load(Yii::$app->request->post()) && $model->login())
if ($model->load(Yii::$app->request->post()) && $model->validate())
{
if($model->user->role == User::ROLE_ADMIN)
{
$model->login();
}
else
{
return $this->refresh();
}
return $this->goBack();
}
else
......
......@@ -29,7 +29,7 @@ AppAsset::register($this);
$this->registerCssFile('/plugins/font-awesome/css/font-awesome.min.css', ['position' => \yii\web\View::POS_HEAD]);
$this->registerCssFile('/css/animate.min.css', ['position' => \yii\web\View::POS_HEAD]);
$this->registerCssFile('/css/style.min.css', ['position' => \yii\web\View::POS_HEAD]);
$this->registerCssFile('/css/simple_line_icons.css', ['position' => \yii\web\View::POS_HEAD]);
// $this->registerCssFile('/css/simple_line_icons.css', ['position' => \yii\web\View::POS_HEAD]);
$this->registerCssFile('/css/style-responsive.min.css', ['position' => \yii\web\View::POS_HEAD]);
$this->registerCssFile('/css/theme/default.css', ['position' => \yii\web\View::POS_HEAD]);
?>
......@@ -67,12 +67,7 @@ AppAsset::register($this);
$this->registerJsFile('/plugins/slimscroll/jquery.slimscroll.min.js', ['position' => \yii\web\View::POS_END ]);
$this->registerJsFile('/plugins/jquery-cookie/jquery.cookie.js', ['position' => \yii\web\View::POS_END ]);
?>
<?php
$script = <<<JS
JS;
$this->registerJs($script, \yii\web\View::POS_READY);
?>
</body>
</html>
<?php $this->endPage() ?>
......@@ -22,7 +22,7 @@ use frontend\widgets\Alert;
<li><a href="javascript:;">Calendar</a></li-->
<li><a href="javascript:;">Настройки</a></li>
<li class="divider"></li>
<li><a data-method="post" href="/site/logout">Выход</a></li>
<li><a href="/site/logout">Выход</a></li>
</ul>
</li>
<?php endif?>
......
......@@ -62,41 +62,26 @@ abstract class BaseController extends Controller
public function beforeAction($action)
{
CheckPresenceTime::init()->initScript();
/*if(substr($currentUrl, -1) == '/' && $currentUrl!="/") {
$urlWithoutSlash = substr($currentUrl, 0, -1);
return $this->redirect($urlWithoutSlash,true,301);
}*/
$actions = ['/login', '/changePasswordRequest', '/changePassword', '/error'];
$curr_action = lcfirst($action->id);
// $actions = ['/login', '/changePasswordRequest', '/changePassword', '/error'];
$feedback_action = $action->controller->id == 'feedback' && $curr_action == 'create';
// $curr_action = lcfirst($action->id);
$testing_controller = $action->controller->id == 'testingTest';
// $feedback_action = $action->controller->id == 'feedback' && $curr_action == 'create';
// $testing_controller = $action->controller->id == 'testingTest';
if (!empty(Yii::$app->request->cookies['startPage']->value)) {
Yii::$app->response->cookies->add(new \yii\web\Cookie([
'name' => 'startPage',
'value' => "http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]"
]));
}
if (Yii::$app->user->isGuest && !in_array($curr_action, $actions) && !$feedback_action && !$testing_controller)
{
//$this->redirect($this->url('/users/user/login'));
}
/*$item_name = common\modules\rbac\models\AuthItem::constructName(Yii::$app->controller->id, $action->id);
if (isset(Yii::$app->params->save_site_actions) && Yii::$app->params->save_site_actions)
{
common\modules\main\MainModule::saveSiteAction();
}*/
// if (!empty(Yii::$app->request->cookies['startPage']->value)) {
// Yii::$app->response->cookies->add(new \yii\web\Cookie([
// 'name' => 'startPage',
// 'value' => "http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]"
// ]));
// }
$this->setTitle($action);
$this->_setMetaTags($action);
......
......@@ -5,13 +5,20 @@ return [
'cache' => [
'class' => 'yii\caching\FileCache',
],
'db' => [
'db' => [
'class' => 'yii\db\Connection',
'dsn' => 'mysql:host=localhost;dbname=framework',
'username' => 'framework',
'password' => 'T57Rrf9mfEfme7ys',
'charset' => 'utf8',
],
'dbSupport' => [
'class' => 'yii\db\Connection',
'dsn' => 'mysql:host=185.106.106.36;dbname=art_redmine',
'username' => 'russia',
'password' => 'rdJz4fDZ',
'charset' => 'utf8',
],
'mailer' => [
'class' => 'yii\swiftmailer\Mailer',
'viewPath' => '@common/mail',
......
......@@ -14,7 +14,7 @@ class LoginForm extends Model
public $password;
public $rememberMe = true;
private $_user = false;
private $_user = null;
/**
......@@ -32,7 +32,6 @@ class LoginForm extends Model
['phone','safe'],
// password is validated by validatePassword()
['password', 'validatePassword'],
['username', 'validateStatus'],
];
}
......@@ -52,23 +51,6 @@ class LoginForm extends Model
}
}
}
/**
* Validates the status.
* This method serves as the inline validation for status.
*
* @param string $attribute the attribute currently being validated
* @param array $params the additional name-value pairs given in the rule
*/
public function validateStatus($attribute, $params)
{
if (!$this->hasErrors()) {
$user = $this->getUser();
/*if ($user->status != User::STATUS_ACTIVE) {
$this->addError($attribute, 'Пожалуйста, активируйте свой аккаунт.');
}*/
}
}
/**
* Logs in a user using the provided username and password.
......@@ -77,22 +59,9 @@ class LoginForm extends Model
*/
public function login()
{
if ($this->validate())
{
$user = $this->getUser();
if(Yii::$app->id == 'app-backend' && $user->role != User::ROLE_ADMIN)
{
return false;
}
else
{
return Yii::$app->user->login($user, $this->rememberMe ? 3600 * 24 * 30 : 0);
}
}
else
{
return false;
}
$user = $this->getUser();
return Yii::$app->user->login($user, $this->rememberMe ? 3600 * 24 * 30 : 0);
}
/**
......@@ -102,7 +71,7 @@ class LoginForm extends Model
*/
public function getUser()
{
if ($this->_user === false)
if ($this->_user === null)
{
$this->_user = User::findByUsername($this->username);
}
......
......@@ -27,13 +27,13 @@ if ($popup) {
<ul class="eauth-list">
<?php foreach ($services as $name => $service) {
if($service->id == 'google'){
$image = '<img src="images/button_g.jpg" height="39" width="186" alt="">';
$image = '<img src="/images/button_g.jpg" height="39" width="186" alt="">';
}
elseif($service->id == 'vk'){
$image = '<img src="images/button_vk.jpg" height="39" width="186" alt="">';
$image = '<img src="/images/button_vk.jpg" height="39" width="186" alt="">';
}
elseif($service->id == 'facebook'){
$image = '<img src="images/button_f.jpg" height="39" width="186" alt="">';
$image = '<img src="/images/button_f.jpg" height="39" width="186" alt="">';
}
//echo '<li class="eauth-service eauth-service-id-' . $service->id . '"><p>';
echo '<li class="eauth-service-id-' . $service->id . '"><p>';
......
......@@ -183,7 +183,6 @@ class AuthItem extends \common\components\ActiveRecordModel
public function getRoles()
{
static $roles;
if(!$roles)
{
$roles = $this->findAllByAttributes(array(
......
......@@ -63,4 +63,39 @@ 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
......@@ -66,7 +66,6 @@ $(document).ready(function() {
});
$(".submit_form_reg_popup").on('click', function () {
alert(1);
$('#reg_form_popup').ajaxSubmit(optionsPopup);
return false;
});
......@@ -101,7 +100,7 @@ $(document).ready(function() {
$('#login_form').hide();
});
$('body').on('click', '.call_form_reg', function(){
$('body').on('click', '.call_form_reg', function(){
link = $(this);
title = 'Регистрация на курс <br>'+link.data('title');
spec_propotion = link.data('spec');
......@@ -113,16 +112,37 @@ $(document).ready(function() {
else {
$('.spec_propotition').hide();
}
/*jQuery.ajax({
type: 'POST',
url: "/school/lessons-admin/update-form-document",
data: {'docId': doc},
success: function(data){
jQuery('#doc-upd').append(
data
);
}
});*/
});
$('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/likes-course/unlike-course",
data: {'courseId': courseId},
dataType: "html",
success: function(data){
jQuery('.ls_likes').html(data);
}
});
}
});
});
......
......@@ -20,7 +20,7 @@ class CourseController extends BaseController
}
public function actionIndex()
{
{
\Yii::$app->view->registerMetaTag([
'property' => 'og:title',
'content' => 'Школа аналитики'
......@@ -29,21 +29,27 @@ class CourseController extends BaseController
$search = \Yii::$app->request->queryParams;
$dataProvider = $searchModel->search($search);
$modelUser = new User();
/*$modelUser = new User();
$modelLogin = new LoginForm();
$formPopup = new \common\components\BaseForm('/common/modules/users/forms/RegistrationUserPopupForm', $modelUser);
//$form = new \common\components\BaseForm('/common/modules/users/forms/RegistrationUserForm', $modelUser);
//$formLogin = new \common\components\BaseForm('/common/modules/users/forms/LoginForm', $modelLogin);
$formLoginPopup = new \common\components\BaseForm('/common/modules/users/forms/LoginPopupForm', $modelLogin);
$formLoginPopup = new \common\components\BaseForm('/common/modules/users/forms/LoginPopupForm', $modelLogin);*/
return $this->render('index', ['dataProvider' => $dataProvider,
'formPopup' => $formPopup->out, 'formLoginPopup' => $formLoginPopup->out]);
/*'formPopup' => $formPopup->out, 'formLoginPopup' => $formLoginPopup->out*/]);
}
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;
$dataProvider = $searchModel->search($search);
......
......@@ -22,7 +22,15 @@ class LessonController extends BaseController
public function actionView($id)
{
$model = Lessons::findOne($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([
'property' => 'og:title',
......@@ -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;
......
......@@ -163,26 +163,8 @@ WidgetAssetBundle::register($this);
<button class="save-button popup_bt_send">Заказать звонок</button>
</form>
</div>
<!--<div id="reg_form" class="popup">
<?php
/*echo $formLoginPopup;
?>
<?php echo \common\modules\eauth\widgets\SocialWidget::widget(['action' => '/site/login']); */?>
</div>-->
<!-- add 00.02.16 -->
<div id="registration_form" class="popup registration_form">
<!-- <div class="txtbtnclose">Закрыть</div> -->
<span class="popup__title2">Регистрация на курс <br>Лекции для менеджеров it-отрасли</span>
<?php
echo $formPopup;
?>
</div>
<div id="registration_form2" class="popup registration_form registration_form2">
<span class="popup__title2">Войти как пользователь</span>
<?php echo $formLoginPopup;?>
</div>
<?php echo \common\modules\users\widgets\LoginWidget::widget(); ?>
<?php echo \common\modules\users\widgets\RegistrationWidget::widget(); ?>
</div>
......
......@@ -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="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 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="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>
</div>
</div>
<?php endif;?>
</div>
</section>
<footer>
......@@ -114,16 +116,6 @@
<button class="save-button popup_bt_send">Заказать звонок</button>
</form>
</div>
<div id="reg_form" class="popup">
<!-- <div class="txtbtnclose">Закрыть</div> -->
<span class="popup__title">Регистрация</span>
<form class="validreg_form">
<input type="text" class="input_st field-input required alphanumeric" placeholder="Имя Фамилия">
<input type="tel" class="input_st field-input required alphanumeric" placeholder="Телефон">
<input type="email" class="input_st field-input required email" placeholder="E-mail">
<input type="password" class="input_st field-input required alphanumeric" placeholder="Придумайте пароль">
<input type="password" class="input_st field-input required alphanumeric" placeholder="Повторите пароль">
<button class="save-button popup_bt_send">Зарегистрироваться</button>
</form>
</div>
<?php echo \common\modules\users\widgets\LoginWidget::widget(); ?>
<?php echo \common\modules\users\widgets\RegistrationWidget::widget(); ?>
</div>
......@@ -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">
<iframe width="903" height="508" src="https://www.youtube.com/embed/<?php echo $model->video_id ?>" frameborder="0" allowfullscreen></iframe>
<?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,18 +161,20 @@ 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">
<?php echo $file->title;?>
</a>
</div>
</div>
<div class="col-md-6 col-xs-6 col-sm-12">
<i class="ai_format"></i>
<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>
</div>
<?php endif;?>
<?php endforeach;?>
<?php if((count($model->files) % 2) != 0):?>
......@@ -237,16 +246,6 @@ WidgetAssetBundle::register($this);
<button class="save-button popup_bt_send">Заказать звонок</button>
</form>
</div>
<div id="reg_form" class="popup">
<!-- <div class="txtbtnclose">Закрыть</div> -->
<span class="popup__title">Регистрация</span>
<form class="validreg_form">
<input type="text" class="input_st field-input required alphanumeric" placeholder="Имя Фамилия">
<input type="tel" class="input_st field-input required alphanumeric" placeholder="Телефон">
<input type="email" class="input_st field-input required email" placeholder="E-mail">
<input type="password" class="input_st field-input required alphanumeric" placeholder="Придумайте пароль">
<input type="password" class="input_st field-input required alphanumeric" placeholder="Повторите пароль">
<button class="save-button popup_bt_send">Зарегистрироваться</button>
</form>
</div>
<?php echo \common\modules\users\widgets\LoginWidget::widget(); ?>
<?php echo \common\modules\users\widgets\RegistrationWidget::widget(); ?>
</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>
<?php
namespace common\modules\support;
/**
* support module definition class
*/
class Module extends \common\components\WebModule
{
/**
* @inheritdoc
*/
public $controllerNamespace = 'common\modules\support\controllers';
public static $active = true;
public $menu_icons = 'fa fa-support';
/**
* @inheritdoc
*/
public function init()
{
parent::init();
}
public static function name()
{
return 'Техническая поддержка';
}
public static function description()
{
return 'Техническая поддержка';
}
public static function version()
{
return '1.0';
}
public static function adminMenu()
{
return array(
);
}
}
<?php
namespace common\modules\support\controllers;
use Yii;
use yii\filters\AccessControl;
use yii\web\Controller;
use common\modules\support\models\LoginForm;
use common\modules\users\models\User;
/**
* Default controller for the `support` module
*/
class DefaultController extends Controller
{
public $meta_title;
public $meta_description;
public $meta_keywords;
public $page_title;
public function behaviors()
{
return [
'access' => [
'class' => AccessControl::className(),
'user' => 'support',
'only' => ['login', 'logout'],
'rules' => [
[
'allow' => true,
'actions' => ['login'],
'roles' => ['?'],
],
[
'allow' => true,
'actions' => ['logout'],
'roles' => ['@'],
],
],
],
];
}
public static function actionsTitles()
{
return [
'Login' => 'Авторизация',
'Logout' => 'Выход',
];
}
public function actionLogin()
{
$this->page_title = 'Техническая поддержка';
$this->layout = "@backend/views/layouts/blank";
$model = new LoginForm();
if ($model->load(Yii::$app->request->post()) && $model->validate())
{
if($model->user->role == User::ROLE_SUPPORT)
{
$model->login();
return $this->redirect(['/support']);
}
else
{
$model->addError('password', 'Доступ запрещен!');
}
}
return $this->render('@backend/views/site/login', [
'model' => $model,
]);
}
public function actionLogout()
{
Yii::$app->support->logout();
return $this->redirect(['/support']);
}
}
<?php
namespace common\modules\support\controllers;
use Yii;
use yii\filters\AccessControl;
use yii\web\Controller;
use yii\web\NotFoundHttpException;
use common\models\Settings;
use common\modules\support\models\redmine\Issue;
use common\modules\support\models\redmine\IssueSearch;
/**
* Default controller for the `support` module
*/
class SupportController extends Controller
{
public $meta_title;
public $meta_description;
public $meta_keywords;
public function behaviors()
{
return [
'access' => [
'class' => AccessControl::className(),
'user' => 'support',
'only' => ['index'],
'rules' => [
[
'allow' => true,
'actions' => ['index'],
'roles' => ['@'],
],
],
],
];
}
public static function actionsTitles()
{
return [
'Index' => 'Техническая поддержка',
];
}
public function actionIndex()
{
$client = new \Redmine\Client('http://help-russia.ru', Yii::$app->support->identity->redmine_key);
$works = $client->issue->all([
'author_id' => 23
]);
return $this->render('index', [
'works' => $works,
// 'ratings' => $ratings,
// 'tests' => $tests,
// 'approves' => $approves,
// 'accepteds' => $accepteds,
]);
}
public function actionCreate()
{
$model = new Issue();
if ($model->load(Yii::$app->request->post()) && $model->save()) {
return $this->redirect(['view', 'id' => $model->id]);
} else {
return $this->render('create', [
'model' => $model,
]);
}
}
public function actionView($id)
{
$model = $this->findModel($id);
if($model->author_id != Yii::$app->support->identity->support_id)
{
throw new NotFoundHttpException('Доступ запрещен!');
}
return $this->render('view', [
'model' => $model,
]);
}
/**
* Finds the Post model based on its primary key value.
* If the model is not found, a 404 HTTP exception will be thrown.
* @param integer $id
* @return Post the loaded model
* @throws NotFoundHttpException if the model cannot be found
*/
protected function findModel($id)
{
if (($model = Issue::findOne($id)) !== null)
{
return $model;
}
else
{
throw new NotFoundHttpException('The requested page does not exist.');
}
}
}
<?php
namespace common\modules\support\models;
use Yii;
/**
* Login form
*/
class LoginForm extends \common\models\LoginForm
{
/**
* Logs in a user using the provided username and password.
*
* @return boolean whether the user is logged in successfully
*/
public function login()
{
$user = $this->getUser();
return Yii::$app->support->login($user, $this->rememberMe ? 3600 * 24 * 30 : 0);
}
}
<?php
namespace common\modules\support\models\redmine;
use Yii;
/**
* This is the model class for table "issues".
*
* @property integer $id
* @property integer $tracker_id
* @property integer $project_id
* @property string $subject
* @property string $description
* @property string $due_date
* @property integer $category_id
* @property integer $status_id
* @property integer $assigned_to_id
* @property integer $priority_id
* @property integer $fixed_version_id
* @property integer $author_id
* @property integer $lock_version
* @property string $created_on
* @property string $updated_on
* @property string $start_date
* @property integer $done_ratio
* @property double $estimated_hours
* @property integer $parent_id
* @property integer $root_id
* @property integer $lft
* @property integer $rgt
* @property integer $is_private
* @property string $closed_on
* @property integer $assigned_to_manager_id
* @property integer $assigned_to_customer_id
* @property double $price_for_customer
* @property double $max_price_for_developer
* @property double $price_developer
* @property string $type_price
* @property integer $paid
*/
class Issue extends \common\components\ActiveRecordModel
{
/**
* @inheritdoc
*/
public function name()
{
return 'Задача Redmine';
}
/**
* @inheritdoc
*/
public static function tableName()
{
return 'issues';
}
/**
* @return \yii\db\Connection the database connection used by this AR class.
*/
public static function getDb()
{
return Yii::$app->get('dbSupport');
}
/**
* @inheritdoc
*/
public function rules()
{
return [
[['tracker_id', 'project_id', 'status_id', 'priority_id', 'author_id'], 'required'],
[['tracker_id', 'project_id', 'category_id', 'status_id', 'assigned_to_id', 'priority_id', 'fixed_version_id', 'author_id', 'lock_version', 'done_ratio', 'parent_id', 'root_id', 'lft', 'rgt', 'is_private', 'assigned_to_manager_id', 'assigned_to_customer_id', 'paid'], 'integer'],
[['description'], 'string'],
[['due_date', 'created_on', 'updated_on', 'start_date', 'closed_on'], 'safe'],
[['estimated_hours', 'price_for_customer', 'max_price_for_developer', 'price_developer'], 'number'],
[['subject', 'type_price'], 'string', 'max' => 255],
];
}
/**
* @inheritdoc
*/
public function attributeLabels()
{
return [
'id' => 'ID',
'tracker_id' => 'Tracker ID',
'project_id' => 'Project ID',
'subject' => 'Subject',
'description' => 'Description',
'due_date' => 'Due Date',
'category_id' => 'Category ID',
'status_id' => 'Status ID',
'assigned_to_id' => 'Assigned To ID',
'priority_id' => 'Priority ID',
'fixed_version_id' => 'Fixed Version ID',
'author_id' => 'Author ID',
'lock_version' => 'Lock Version',
'created_on' => 'Created On',
'updated_on' => 'Updated On',
'start_date' => 'Start Date',
'done_ratio' => 'Done Ratio',
'estimated_hours' => 'Estimated Hours',
'parent_id' => 'Parent ID',
'root_id' => 'Root ID',
'lft' => 'Lft',
'rgt' => 'Rgt',
'is_private' => 'Is Private',
'closed_on' => 'Closed On',
'assigned_to_manager_id' => 'Assigned To Manager ID',
'assigned_to_customer_id' => 'Assigned To Customer ID',
'price_for_customer' => 'Price For Customer',
'max_price_for_developer' => 'Max Price For Developer',
'price_developer' => 'Price Developer',
'type_price' => 'Type Price',
'paid' => 'Paid',
];
}
/**
* @inheritdoc
* @return IssueQuery the active query used by this AR class.
*/
public static function find()
{
return new IssueQuery(get_called_class());
}
}
\ No newline at end of file
<?php
namespace common\modules\support\models\redmine;
use Yii;
use common\models\Settings;
/**
* This is the ActiveQuery class for [[Issue]].
*
* @see Issue
*/
class IssueQuery extends \yii\db\ActiveQuery
{
public $orderBy = ['created_on' => SORT_DESC];
public function search($s)
{
if($s && trim($s) != '')
{
return $this->andWhere(['like', 'subject', $s]);
}
return $this;
}
public function me()
{
return $this->andWhere(['author_id' => Yii::$app->support->identity->support_id]);
}
public function work()
{
$status = Settings::getValue('support-status-work');
return $this->andWhere(['status_id' => $status]);
}
public function rating()
{
$status = Settings::getValue('support-status-new');
return $this->andWhere(['status_id' => $status]);
}
public function test()
{
$status = Settings::getValue('support-status-test');
return $this->andWhere(['status_id' => $status]);
}
public function approve()
{
$status = Settings::getValue('support-status-approve');
return $this->andWhere(['status_id' => $status]);
}
public function accepted()
{
$status = Settings::getValue('support-status-accepted');
return $this->andWhere(['status_id' => $status]);
}
/**
* @inheritdoc
* @return Issue[]|array
*/
public function all($db = null)
{
return parent::all($db);
}
/**
* @inheritdoc
* @return Issue|array|null
*/
public function one($db = null)
{
return parent::one($db);
}
}
<?php
namespace common\modules\support\models\redmine;
use Yii;
/**
* This is the model class for table "users".
*
* @property integer $id
* @property string $login
* @property string $hashed_password
* @property string $firstname
* @property string $lastname
* @property integer $admin
* @property integer $status
* @property string $last_login_on
* @property string $language
* @property integer $auth_source_id
* @property string $created_on
* @property string $updated_on
* @property string $type
* @property string $identity_url
* @property string $mail_notification
* @property string $salt
* @property integer $must_change_passwd
* @property string $passwd_changed_on
* @property integer $show_report
* @property string $requisite
*/
class User extends \common\components\ActiveRecordModel
{
const TYPE_USER = 'User';
const TYPE_GROUP = 'Group';
const TYPE_GROUP_NON_MEMBER = 'GroupNonMember';
const TYPE_GROUP_ANONYMOUS = 'GroupAnonymous';
const TYPE_ANONYMOUS_USER = 'AnonymousUser';
public $specialName;
/**
* @inheritdoc
*/
public function name()
{
return 'Пользователи Redmine';
}
/**
* @inheritdoc
*/
public static function tableName()
{
return 'users';
}
/**
* @return \yii\db\Connection the database connection used by this AR class.
*/
public static function getDb()
{
return Yii::$app->get('dbSupport');
}
/**
* @inheritdoc
*/
public function rules()
{
return [
[['admin', 'status', 'auth_source_id', 'must_change_passwd', 'show_report'], 'integer'],
[['last_login_on', 'created_on', 'updated_on', 'passwd_changed_on', 'specialName'], 'safe'],
[['requisite'], 'string'],
[['login', 'lastname', 'type', 'identity_url', 'mail_notification'], 'string', 'max' => 255],
[['hashed_password'], 'string', 'max' => 40],
[['firstname'], 'string', 'max' => 30],
[['language'], 'string', 'max' => 5],
[['salt'], 'string', 'max' => 64],
];
}
/**
* @inheritdoc
*/
public function attributeLabels()
{
return [
'id' => 'ID',
'login' => 'Логин',
'hashed_password' => 'Пароль',
'firstname' => 'Имя',
'lastname' => 'Фамилия',
'admin' => 'Admin',
'status' => 'Статус',
'last_login_on' => 'Последняя авторизация',
'language' => 'Язык',
'auth_source_id' => 'Auth Source ID',
'created_on' => 'Created On',
'updated_on' => 'Updated On',
'type' => 'Тип',
'identity_url' => 'Identity Url',
'mail_notification' => 'Mail Notification',
'salt' => 'Salt',
'must_change_passwd' => 'Must Change Passwd',
'passwd_changed_on' => 'Passwd Changed On',
'show_report' => 'Show Report',
'requisite' => 'Requisite',
];
}
}
<?php
use yii\helpers\Html;
?>
<?php if($output['issues']) : ?>
<div class="panel-group panel-group-2" id="accordion_2">
<div class="panel panel-default">
<div class="panel-heading table-responsive">
<table class="w100pr table_header">
<tbody>
<tr>
<td>
<p class="panel-title2 pull-left">
<!-- <a href=""><span class="glyphicon glyphicon-align-justify"></span></a>&nbsp;&nbsp; -->
<a href=""><strong><?=$title?></strong></a>&nbsp;&nbsp;
</p>
</td>
<td class="box_td">
<p><strong>Дата <br> поступления</strong></p>
</td>
<td class="box_td">
<p><strong>Срок <br> исполнения</strong></p>
</td>
<td class="box_td">
<p><strong>Стоимость <br> руб.</strong></p>
</td>
</tr>
</tbody>
</table>
</div>
<div id="collapse_1" class="panel-collapse collapse in">
<?php foreach ($output['issues'] as $model) : ?>
<div class="panel-body panel-body-ex-1 color_on_cursor gray_box_2">
<table class="w100pr">
<tbody>
<tr>
<td class="box_td_fir">
<!-- <div class="arrov_poz pull-left">
<a href=""><span class="caret caret_top"></span></a>
<a href=""><span class="caret"></span></a>
</div> -->
<span><?=$model['id']?></span>
</td>
<td class="box_td_cont">
<p><strong><?=Html::a($model['subject'], ['/support/view/'.$model['id']])?></strong></p>
</td>
<td class="box_td">
<span><?=date('d.m.Y', strtotime($model['created_on']))?></span>
</td>
<td class="box_td">
<span><?=($model->due_date?date('d.m.Y', strtotime($model['due_date'])):'')?></span>
</td>
<td class="box_td">
<p class="pull-left"><strong><?=Yii::$app->formatter->asCurrency($model['price_for_customer'], 'RUR', [], [\NumberFormatter::CURRENCY_SYMBOL => '₽'])?></strong></p>
<!-- <div class="tooltip_wr pull-right">
<div class="tooltip_box">Счет был выставлен</div>
<span class="tooltip_cont"><img src="/images/score_icon.jpg" height="24" width="19" alt=""></span>
</div> -->
</td>
</tr>
</tbody>
</table>
</div>
<?php endforeach; ?>
</div>
</div>
</div>
<?php endif; ?>
\ No newline at end of file
<div class="container_white">
<div class="container">
<div class="right_box_top row">
<div class="col-md-6 col-xs-6 col-sm-12">
<h2>Создание задачи</h2>
</div>
<div class="col-md-6 col-xs-6 col-sm-12">
<div class="logo_taskon">
<span>Разработанно в: </span>
<a href=""><img src="/images/logo_taskon.png" height="44" width="135" alt=""></a>
</div>
</div>
</div>
<div class="row">
<div class="col-sm-12">
<p class="label_p"><strong>Заголовок задачи</strong></p>
<input type="text" class="form-control" placeholder="Дизайн оформления витринных окон для ресторана Subway">
</div>
<div class="col-md-3 col-xs-6 col-sm-12">
<p class="label_p"><strong>Тип задачи</strong></p>
<select class="form-control">
<option>Выберите тип задачи</option>
<option>2</option>
<option>3</option>
<option>4</option>
<option>5</option>
</select>
</div>
<div class="col-md-3 col-xs-6 col-sm-12">
<p class="label_p">Важность</p>
<div class="important_box important_button_text">
<p class="important_button_text_1">Важная</p>
<p class="important_button_text_2">Обычная</p>
<div class="important_button"></div>
</div>
</div>
</div>
<div class="row">
<div class="col-sm-12">
<p class="label_p"><strong>Текст задачи</strong></p>
<div class="text_box_form">
<div class="text_box_form_top"><img src="/images/text_box_img.jpg" width="100%" alt=""></div>
<textarea>Повторный контакт консолидирует стратегический маркетинг, не считаясь с затратами. Лидерство в продажах нейтрализует институциональный инструмент маркетинга, невзирая на действия конкурентов. Интересно отметить, что взаимодействие корпорации и клиента недостижимо. Рекламный макет трансформирует рыночный рекламный клаттер, используя опыт предыдущих кампаний.</textarea>
<button class="gray_button">Прикрепить файл<i class="glyphicon glyphicon-paperclip"></i></button>
<br>
<button class="btn btn-success-2">Создать задачу</button>
</div>
</div>
</div>
<br>
<br>
</div>
</div>
\ No newline at end of file
<?php
use yii\helpers\Html;
use yii\grid\GridView;
use yii\widgets\ActiveForm;
?>
<div class="client_interface">
<div class="container">
<div class="right_box_top row">
<div class="col-md-6 col-xs-6 col-sm-12">
<h2><strong>Список задач</strong></h2>
</div>
<div class="col-md-6 col-xs-6 col-sm-12">
<div class="logo_taskon">
<span>Разработанно в: </span>
<a href=""><img src="/images/logo_taskon.png" height="44" width="135" alt=""></a>
</div>
</div>
</div>
<div class="right_box_top row">
<div class="col-md-3 col-xs-3 col-sm-12 dropdown-menu-my">
<?=Html::a('<span class="glyphicon glyphicon-plus"></span> Добавить задачу', ['/support/create'], ['class' => 'btn btn-success-2 dropdown-menu-my-button'])?>
</div>
<div class="col-md-9 col-xs-9 col-sm-12">
<?php $form = ActiveForm::begin([
'method' => 'GET',
'action' => '/support',
'options' => [
'class' => 'search-form'
]
]); ?>
<div class="input-group">
<?=Html::textInput('s', Yii::$app->request->get('s'), ['class' => 'form-control']); ?>
<span class="input-group-btn">
<?= Html::submitButton('<span class="glyphicon glyphicon-search"></span>', ['class' => 'btn btn-default-2 btn-size-2']) ?>
</span>
</div>
<?php ActiveForm::end(); ?>
</div>
</div>
<br>
<div class="table-responsive table-responsive-conf">
<table class="table">
<tr>
<td class="no_pad">
<?=$this->render('_loop', ['output' => $ratings, 'title' => 'Задачи на оценке']);?>
<?=$this->render('_loop', ['output' => $works, 'title' => 'Задачи в работе']);?>
<?=$this->render('_loop', ['output' => $tests, 'title' => 'Задачи на тестировании']);?>
<?=$this->render('_loop', ['output' => $approves, 'title' => 'Задачи ожидающие проверки']);?>
</td>
</tr>
</table>
</div>
<br>
<?php if($accepteds) : ?>
<a href="#" class="separator_close">Закрытые задачи</a>
<?php foreach ($accepteds as $model) : ?>
<div class="panel-body panel-body-ex-1 panel-body-ex-2">
<div data-toggle="buttons">
<label class="btn pull-left active">
<input type="checkbox">
</label>
<div class="text-mes">
<p><?=$model->subject?></p>
</div>
</div>
</div>
<?php endforeach; ?>
<?php endif; ?>
<br>
<br>
</div>
</div>
\ No newline at end of file
This diff is collapsed.
......@@ -221,40 +221,36 @@ class UserAdminController extends \common\components\AdminController
public function actionUpdate($id)
{
$model = $this->loadModel($id);
$old_password = $model->password;
$model->password_c = $model->password = null;
$model->scenario = User::SCENARIO_UPDATE;
$old_password = $model->password;
\yii::$app->controller->page_title = 'Редактирование пользователя <small>' . $model->name.'</small>';
\yii::$app->controller->tabs = [
"управление пользователями" => \yii\helpers\Url::toRoute("manage"),
];
\yii::$app->controller->breadcrumbs = [
['Все пользователи' => '/users/user-admin/manage'],
$model->name,
];
['Все пользователи' => '/users/user-admin/manage'],
$model->name,
];
if (isset($_POST['User']))
if($model->load(Yii::$app->request->post()))
{
$model->attributes = $_POST['User'];
$pwd = \Yii::$app->security->generatePasswordHash($_POST['User']['password']);
$model->password_c = $pwd;
$model->password = $pwd;
if ($model->validate())
if($model->password)
{
if ($_POST['User']['password'] != $old_password)
{
$model->password = \Yii::$app->security->generatePasswordHash($_POST['User']['password']);
}
$model->save(false);
$model->password = $model->password_c = \Yii::$app->security->generatePasswordHash($model->password);
}
else
{
$model->password = $model->password_c = $old_password;
}
if($model->save())
{
AuthAssignment::updateUserRole($model->id, $_POST['User']['role']);
$this->redirect(array(
return $this->redirect(array(
'/rbac/role-admin/manage',
'id'=> $model->id
));
......
......@@ -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');
$model->source = User::SOURCE_DEFAULT;
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();
......
......@@ -34,7 +34,7 @@ $elements = [
<p>Каждую неделю мы будем высылать тебе по 1 видео-уроку, который позволит освоить данную тему. Просмотр уроков и бонусных материалов - бесплатный!</p>
<div class="registration_form_img">
<br>
<img src="images/registration_form_img.jpg" alt="">
<img src="/images/registration_form_img.jpg" alt="">
<br>
<br>
</div>
......
<?php
// use common\modules\rbac\models\AuthItem;
use common\modules\users\models\User;
// use yii\helpers\ArrayHelper;
// $roles = AuthItem::find(
// ['type' => AuthItem::TYPE_ROLE],
// "name != '" . AuthItem::ROLE_GUEST . "'"
// )->all();
use \yii\helpers\ArrayHelper;
use common\modules\users\models\User;
$js = <<<JS
visibleSupport();
$('#user-role').change(function(){
visibleSupport();
});
function visibleSupport()
{
if($('#user-role').val() == 'support')
{
$('#user-redmine_key').closest('.form-group').show();
}
else
{
$('#user-redmine_key').closest('.form-group').hide();
}
}
JS;
\Yii::$app->view->registerJs($js, \yii\web\View::POS_READY, 'SupportID');
return [
'activeForm'=>[
......@@ -35,6 +49,10 @@ return [
'items' => User::$role_list,
'class' => 'form-control',
],
'redmine_key' => [
'type' => 'text',
'class' => 'form-control',
],
'password' => ['type' => 'password', 'class' => 'form-control', 'pwd-id' => 'passwordStrengthDiv'],
'password_c' => ['type' => 'password', 'class' => 'form-control', 'pwd-id' => 'passwordStrengthDiv2'],
],
......
......@@ -42,6 +42,7 @@ class User extends \common\components\ActiveRecordModel implements IdentityInter
const ROLE_ADMIN = 'admin';
const ROLE_USER = 'user';
const ROLE_SUPPORT = 'support';
const GENDER_MAN = "man";
const GENDER_WOMAN = "woman";
......@@ -68,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;
......@@ -83,6 +85,7 @@ class User extends \common\components\ActiveRecordModel implements IdentityInter
public static $role_list = [
self::ROLE_ADMIN => 'Доступ в админ-панель',
self::ROLE_USER => 'Доступ к сайту',
self::ROLE_SUPPORT => 'Клиент тех. поддержки',
];
public static $occupation_list = [
......@@ -111,6 +114,7 @@ class User extends \common\components\ActiveRecordModel implements IdentityInter
$attrs = array_merge(parent::attributeLabels(), array(
"password_c" => "Пароль еще раз",
"fio" => "Фамилия имя отчество",
'redmine_key' => 'API Key Redmine',
"name" => "Имя",
"surname" => "Фамилия",
"remember_me" => "Запомни меня",
......@@ -141,7 +145,7 @@ class User extends \common\components\ActiveRecordModel implements IdentityInter
self::SCENARIO_SEND_NEW_PASSWORD,
self::SCENARIO_RECOVER_PASSWORD
], 'message' => 'Пожалуйста, укажите корректный e-mail адрес'],
[['send_email'], 'safe'],
[['send_email', 'redmine_key'], 'safe'],
[['fio','name', 'surname'], 'safe', 'on' => [
self::SCENARIO_CREATE,
], 'message' => 'Пожалуйста, укажите Ваше имя'],
......@@ -391,16 +395,6 @@ class User extends \common\components\ActiveRecordModel implements IdentityInter
return 'Введенный E-mail адрес некорректен. Пожалуйста, проверьте правильность ввода';
}
public function relations()
{
return array(
'assignment' => array(self::HAS_ONE, 'AuthAssignment', 'user_id'),
'city' => array(self::BELONGS_TO, 'City', 'city_id'),
//'eauth' => array(self::HAS_ONE, 'UserEAuth', 'user_id'),
);
}
public function getEauth()
{
return $this->hasOne(UserEAuth::className(), ['user_id'=>'id']);
......@@ -411,7 +405,6 @@ class User extends \common\components\ActiveRecordModel implements IdentityInter
return $this->hasOne(AuthAssignment::className(), ['user_id'=>'id']);
}
public function search($params)
{
$query = User::find();
......@@ -447,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();
......@@ -456,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 . ', ';
......@@ -504,17 +496,6 @@ class User extends \common\components\ActiveRecordModel implements IdentityInter
return $url;
}
public function beforeSave($insert){
if( strtolower($this->scenario) == 'update'){
if(isset($this->password) && empty($this->password))
unset($this->password);
}
return parent::beforeSave($insert);
}
public function validate($attributeNames = null, $clearErrors = true) {
if (!parent::validate($attributeNames = null, $clearErrors = true))
return false;
......
<?php
namespace common\modules\users\widgets;
use yii\base\Widget;
use common\models\LoginForm;
class LoginWidget extends Widget
{
public $modelLogin;
public $formLoginPopup;
/**
* Executes the widget.
* This method is called by {@link CBaseController::endWidget}.
*/
public function run()
{
$modelLogin = new LoginForm();
$formLoginPopup = new \common\components\BaseForm('/common/modules/users/forms/LoginPopupForm', $modelLogin);
echo $this->render('LoginWidget', ['formLoginPopup' => $formLoginPopup->out]);
}
}
\ No newline at end of file
<?php
namespace common\modules\users\widgets;
use yii\base\Widget;
use common\modules\users\models\User;
class RegistrationWidget extends Widget
{
public $modelUser;
public $formPopup;
/**
* Executes the widget.
* This method is called by {@link CBaseController::endWidget}.
*/
public function run()
{
$modelUser = new User();
$formPopup = new \common\components\BaseForm('/common/modules/users/forms/RegistrationUserPopupForm', $modelUser);
echo $this->render('RegistrationWidget', ['formPopup' => $formPopup->out]);
}
}
\ No newline at end of file
<div id="registration_form2" class="popup registration_form registration_form2">
<span class="popup__title2">Войти как пользователь</span>
<?php echo $formLoginPopup;?>
</div>
\ No newline at end of file
<div id="registration_form" class="popup registration_form">
<span class="popup__title2">Регистрация</span>
<?php
echo $formPopup;
?>
</div>
\ No newline at end of file
......@@ -3,6 +3,11 @@ use yii\helpers\Html;
use yii\web\View;
?>
<div class="prof_block"> <span class="prof_name"><?php echo $user->name ?></span>
<?php echo Html::a('Выход', ['/site/logout']) ?></div>
\ No newline at end of file
<?php if (!Yii::$app->user->isGuest):?>
<div class="prof_block"> <span class="prof_name"><?php echo $user->name ?></span>
<?php echo Html::a('Выход', ['/site/logout']) ?></div>
<?php else:?>
<div class="prof_block">
<a href="#registration_form2" class="popup-form">Вход</a>
</div>
<?php endif;?>
\ No newline at end of file
<?php
use yii\db\Schema;
use yii\db\Migration;
class m160303_110638_update_users extends Migration
{
// Use safeUp/safeDown to run migration code within a transaction
public function safeUp()
{
$this->addColumn('users', 'support_id', Schema::TYPE_INTEGER . '(11) DEFAULT NULL AFTER id');
}
public function safeDown()
{
$this->dropColumn('users', 'support_id');
}
}
<?php
use yii\db\Migration;
class m160304_035059_add_setting extends Migration
{
// Use safeUp/safeDown to run migration code within a transaction
public function safeUp()
{
$this->insert('settings', [
'module_id' => 'support',
'code' => 'support-status-new',
'name' => 'Статус на оценке',
'value' => '7,9',
'element' => 'text',
'hidden' => 0,
'description' => 'Введите ID статусов через запятую',
]);
$this->insert('settings', [
'module_id' => 'support',
'code' => 'support-status-work',
'name' => 'Статус в работе',
'value' => '1,8,13,15,17,18',
'element' => 'text',
'hidden' => 0,
'description' => 'Введите ID статусов через запятую',
]);
$this->insert('settings', [
'module_id' => 'support',
'code' => 'support-status-test',
'name' => 'Статус на тестирование',
'value' => '10',
'element' => 'text',
'hidden' => 0,
'description' => 'Введите ID статусов через запятую',
]);
$this->insert('settings', [
'module_id' => 'support',
'code' => 'support-status-approve',
'name' => 'Статус ожидает проверки',
'value' => '16',
'element' => 'text',
'hidden' => 0,
'description' => 'Введите ID статусов через запятую',
]);
$this->insert('settings', [
'module_id' => 'support',
'code' => 'support-status-accepted',
'name' => 'Статус принято',
'value' => '14',
'element' => 'text',
'hidden' => 0,
'description' => 'Введите ID статусов через запятую',
]);
}
public function safeDown()
{
$this->delete('settings', ['code' => 'support-status-new']);
$this->delete('settings', ['code' => 'support-status-work']);
$this->delete('settings', ['code' => 'support-status-test']);
$this->delete('settings', ['code' => 'support-status-approve']);
$this->delete('settings', ['code' => 'support-status-accepted']);
}
}
<?php
use yii\db\Schema;
use yii\db\Migration;
class m160304_091243_fix_user_table extends Migration
{
// Use safeUp/safeDown to run migration code within a transaction
public function safeUp()
{
$this->alterColumn('users', 'support_id', Schema::TYPE_STRING . '(50) DEFAULT NULL');
$this->renameColumn('users', 'support_id', 'redmine_key');
}
public function safeDown()
{
$this->renameTable('users', 'redmine_key', 'support_id');
$this->renameColumn('users', 'support_id', Schema::TYPE_INTEGER . '(11) DEFAULT NULL');
}
}
<?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');
}
}
......@@ -24,6 +24,7 @@ return [
'testings' => ['class' => 'common\modules\testings\Module',],
'users' => ['class' => 'common\modules\users\users',],
'blog' => ['class' => 'common\modules\blog\Module'],
'support' => ['class' => 'common\modules\support\Module'],
'sessions' => ['class' => 'common\modules\sessions\Module'],
'sitemap' => [
'class' => 'frontend\modules\sitemap\Sitemap',
......@@ -70,12 +71,26 @@ return [
],
'user' => [
'identityClass' => 'common\modules\users\models\User',
'identityCookie' => [
'name' => '_frontendIdentity'
],
'enableAutoLogin' => true,
'loginUrl' => ['/site/login'],
],
'support' => [
'class' => 'yii\web\User',
'identityClass' => 'common\modules\users\models\User',
'identityCookie' => [
'name' => '_supportIdentity',
'httpOnly' => true
],
'idParam' => '__supportID',
'enableAutoLogin' => true,
'loginUrl' => ['/support/login'],
],
'session' => [
'class' => 'yii\web\Session',
'timeout'=>3600,
'timeout' => 3600,
],
'log' => [
'traceLevel' => YII_DEBUG ? 3 : 0,
......@@ -120,8 +135,8 @@ return [
'/js/libs/jquery/jquery-1.11.2.min.js'
],
'jsOptions' => [
//'position' => \yii\web\View::POS_HEAD,
'position' => \yii\web\View::POS_BEGIN,
'position' => \yii\web\View::POS_HEAD,
// 'position' => \yii\web\View::POS_BEGIN,
],
],
'yii\jui\JuiAsset' => [
......@@ -159,8 +174,16 @@ return [
'blog/<url>' => 'blog/post/view',
'testing/<_a>/<id:\d+>' => 'testings/test/<_a>',
'testing/<_a>' => 'testings/test/<_a>',
'school' => 'school/course/index',
'support/login' => 'support/default/login',
'support/logout' => 'support/default/logout',
'support' => 'support/support/index',
'support/<_a>/<id:\d+>' => 'support/support/<_a>',
'support/<_a>' => 'support/support/<_a>',
'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',
......@@ -179,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',
......
......@@ -9,6 +9,7 @@ use yii\filters\AccessControl;
use yii\helpers\Url;
use common\models\LoginForm;
use common\modules\users\models\User;
use common\modules\eauth\components\GoogleOAuth2Service;
use common\modules\eauth\models\UserEAuth;
......@@ -28,8 +29,8 @@ class SiteController extends Controller
'Index' => 'Главная страница',
'Contacts' => 'Контакты',
'Error' => 'Error',
'Login' => '',
'Logout' => '',
'Login' => 'Вход',
'Logout' => 'Выход',
];
}
......@@ -63,12 +64,12 @@ class SiteController extends Controller
],
],
],
'verbs' => [
/* 'verbs' => [
'class' => VerbFilter::className(),
'actions' => [
'logout' => ['post'],
],
],
],*/
'eauth' => [
// required to disable csrf validation on OpenID requests
'class' => \nodge\eauth\openid\ControllerBehavior::className(),
......@@ -159,13 +160,23 @@ class SiteController extends Controller
}
//Yii::$app->user->getIdentity()->getRole()
$model = new LoginForm();
$model->load(Yii::$app->request->post());
if ($model->validate()) {
Yii::$app->user->login($model->getUser(), $model->rememberMe ? 3600 * 24 * 30 : 0);
$this->redirect(array("/school/course/index"));
} else {
echo json_encode(array('errors'=>$model->getErrors()));
$model = new LoginForm();
if ($model->load(Yii::$app->request->post()) && $model->validate())
{
if($model->user->role == User::ROLE_USER || $model->user->role == User::ROLE_ADMIN)
{
$model->login();
}
else
{
echo json_encode(['errors' => []]);
}
$this->redirect(array("/school/course/index"));
}
else
{
echo json_encode(array('errors'=>$model->getErrors()));
}
}
......
This diff is collapsed.
This diff is collapsed.
[.ShellClassInfo]
InfoTip= .
IconFile=C:\Program Files (x86)\Google\Drive\googledrivesync.exe
IconIndex=16
\ No newline at end of file
This diff is collapsed.
This source diff could not be displayed because it is too large. You can view the blob instead.
/*
Template Name: Color Admin - Responsive Admin Dashboard Template build with Twitter Bootstrap 3.3.2
Version: 1.6.0
Author: Sean Ngu
Website: http://www.seantheme.com/color-admin-v1.6/admin/
*/
.navbar-logo,
.coming-soon .brand .logo,
.login .login-header .brand .logo {
border-color: #626668 #565b5e #414446;
}
.navbar.navbar-inverse .navbar-brand,
.sidebar .nav > li.active > a,
.sidebar .nav > li.active > a:focus,
.sidebar .nav > li.active > a:hover,
.page-sidebar-minified .sidebar .nav > li.has-sub.active:focus > a,
.page-sidebar-minified .sidebar .nav > li.has-sub.active:hover > a,
.page-sidebar-minified .sidebar .nav > li.has-sub.active > a,
.label.label-theme,
.btn.btn-scroll-to-top {
background: #6C7275;
}
.navbar.navbar-inverse .navbar-brand {
color: #fff !important;
}
.text-theme {
color: #6C7275;
}
.sidebar .sub-menu > li.active > a:before {
color: #fff;
}
@media (max-width: 767px) {
.navbar-inverse .navbar-header {
background: #6C7275;
}
}
/* Added in v1.5 */
.gradient-enabled .navbar.navbar-inverse .navbar-brand,
.gradient-enabled .sidebar .nav > li.active > a,
.gradient-enabled .sidebar .nav > li.active > a:focus,
.gradient-enabled .sidebar .nav > li.active > a:hover,
.gradient-enabled.page-sidebar-minified .sidebar .nav > li.has-sub.active:focus > a,
.gradient-enabled.page-sidebar-minified .sidebar .nav > li.has-sub.active:hover > a,
.gradient-enabled.page-sidebar-minified .sidebar .nav > li.has-sub.active > a,
.gradient-enabled .label.label-theme,
.gradient-enabled .btn.btn-scroll-to-top {
background: rgb(136,136,136); /* Old browsers */
/* IE9 SVG, needs conditional override of 'filter' to 'none' */
background: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/Pgo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0JveD0iMCAwIDEgMSIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSI+CiAgPGxpbmVhckdyYWRpZW50IGlkPSJncmFkLXVjZ2ctZ2VuZXJhdGVkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjAlIiB5MT0iMCUiIHgyPSIwJSIgeTI9IjEwMCUiPgogICAgPHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iIzg4ODg4OCIgc3RvcC1vcGFjaXR5PSIxIi8+CiAgICA8c3RvcCBvZmZzZXQ9IjEwMCUiIHN0b3AtY29sb3I9IiM2YzcyNzUiIHN0b3Atb3BhY2l0eT0iMSIvPgogIDwvbGluZWFyR3JhZGllbnQ+CiAgPHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEiIGhlaWdodD0iMSIgZmlsbD0idXJsKCNncmFkLXVjZ2ctZ2VuZXJhdGVkKSIgLz4KPC9zdmc+);
background: -moz-linear-gradient(top, rgba(136,136,136,1) 0%, rgba(108,114,117,1) 100%); /* FF3.6+ */
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgba(136,136,136,1)), color-stop(100%,rgba(108,114,117,1))); /* Chrome,Safari4+ */
background: -webkit-linear-gradient(top, rgba(136,136,136,1) 0%,rgba(108,114,117,1) 100%); /* Chrome10+,Safari5.1+ */
background: -o-linear-gradient(top, rgba(136,136,136,1) 0%,rgba(108,114,117,1) 100%); /* Opera 11.10+ */
background: -ms-linear-gradient(top, rgba(136,136,136,1) 0%,rgba(108,114,117,1) 100%); /* IE10+ */
background: linear-gradient(to bottom, rgba(136,136,136,1) 0%,rgba(108,114,117,1) 100%); /* W3C */
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#888888', endColorstr='#6c7275',GradientType=0 ); /* IE6-8 */
}
.pace-progress {
background: #6C7275;
}
.pace .pace-activity {
border-top-color: #6C7275;
border-left-color: #6C7275;
}
\ No newline at end of file
/*
Template Name: Color Admin - Responsive Admin Dashboard Template build with Twitter Bootstrap 3.3.2
Version: 1.6.0
Author: Sean Ngu
Website: http://www.seantheme.com/color-admin-v1.6/admin/
*/
.navbar-logo,
.coming-soon .brand .logo,
.login .login-header .brand .logo {
border-color: #2F83CF #2a72b5 #1f5688;
}
.navbar.navbar-inverse .navbar-brand,
.sidebar .nav > li.active > a,
.sidebar .nav > li.active > a:focus,
.sidebar .nav > li.active > a:hover,
.page-sidebar-minified .sidebar .nav > li.has-sub.active:focus > a,
.page-sidebar-minified .sidebar .nav > li.has-sub.active:hover > a,
.page-sidebar-minified .sidebar .nav > li.has-sub.active > a,
.label.label-theme,
.btn.btn-scroll-to-top {
background: #348fe2;
}
.navbar.navbar-inverse .navbar-brand {
color: #fff !important;
}
.text-theme,
.sidebar .sub-menu > li.active > a:before {
color: #348fe2;
}
@media (max-width: 767px) {
.navbar-inverse .navbar-header {
background: #348fe2;
}
}
/* Added in v1.5 */
.gradient-enabled .navbar.navbar-inverse .navbar-brand,
.gradient-enabled .sidebar .nav > li.active > a,
.gradient-enabled .sidebar .nav > li.active > a:focus,
.gradient-enabled .sidebar .nav > li.active > a:hover,
.gradient-enabled.page-sidebar-minified .sidebar .nav > li.has-sub.active:focus > a,
.gradient-enabled.page-sidebar-minified .sidebar .nav > li.has-sub.active:hover > a,
.gradient-enabled.page-sidebar-minified .sidebar .nav > li.has-sub.active > a,
.gradient-enabled .label.label-theme,
.gradient-enabled .btn.btn-scroll-to-top {
background: rgb(103,176,240); /* Old browsers */
/* IE9 SVG, needs conditional override of 'filter' to 'none' */
background: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/Pgo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0JveD0iMCAwIDEgMSIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSI+CiAgPGxpbmVhckdyYWRpZW50IGlkPSJncmFkLXVjZ2ctZ2VuZXJhdGVkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjAlIiB5MT0iMCUiIHgyPSIwJSIgeTI9IjEwMCUiPgogICAgPHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iIzY3YjBmMCIgc3RvcC1vcGFjaXR5PSIxIi8+CiAgICA8c3RvcCBvZmZzZXQ9IjEwMCUiIHN0b3AtY29sb3I9IiMzNDhmZTIiIHN0b3Atb3BhY2l0eT0iMSIvPgogIDwvbGluZWFyR3JhZGllbnQ+CiAgPHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEiIGhlaWdodD0iMSIgZmlsbD0idXJsKCNncmFkLXVjZ2ctZ2VuZXJhdGVkKSIgLz4KPC9zdmc+);
background: -moz-linear-gradient(top, rgba(103,176,240,1) 0%, rgba(52,143,226,1) 100%); /* FF3.6+ */
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgba(103,176,240,1)), color-stop(100%,rgba(52,143,226,1))); /* Chrome,Safari4+ */
background: -webkit-linear-gradient(top, rgba(103,176,240,1) 0%,rgba(52,143,226,1) 100%); /* Chrome10+,Safari5.1+ */
background: -o-linear-gradient(top, rgba(103,176,240,1) 0%,rgba(52,143,226,1) 100%); /* Opera 11.10+ */
background: -ms-linear-gradient(top, rgba(103,176,240,1) 0%,rgba(52,143,226,1) 100%); /* IE10+ */
background: linear-gradient(to bottom, rgba(103,176,240,1) 0%,rgba(52,143,226,1) 100%); /* W3C */
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#67b0f0', endColorstr='#348fe2',GradientType=0 ); /* IE6-8 */
}
.pace-progress {
background: #348fe2;
}
.pace .pace-activity {
border-top-color: #348fe2;
border-left-color: #348fe2;
}
\ No newline at end of file
/*
Template Name: Color Admin - Responsive Admin Dashboard Template build with Twitter Bootstrap 3.3.2
Version: 1.6.0
Author: Sean Ngu
Website: http://www.seantheme.com/color-admin-v1.6/admin/
*/
.navbar-logo,
.coming-soon .brand .logo,
.login .login-header .brand .logo {
border-color: #4DCACA #31A3A3 #1D8888;
}
.navbar.navbar-inverse .navbar-brand,
.sidebar .nav > li.active > a,
.sidebar .nav > li.active > a:focus,
.sidebar .nav > li.active > a:hover,
.page-sidebar-minified .sidebar .nav > li.has-sub.active:focus > a,
.page-sidebar-minified .sidebar .nav > li.has-sub.active:hover > a,
.page-sidebar-minified .sidebar .nav > li.has-sub.active > a,
.label.label-theme,
.btn.btn-scroll-to-top {
background: #79C137;
}
.navbar.navbar-inverse .navbar-brand {
color: #fff !important;
}
.text-theme,
.sidebar .sub-menu > li.active > a:before {
color: #79C137;
}
@media (max-width: 767px) {
.navbar-inverse .navbar-header {
background: #00acac;
}
}
/* Added in v1.5 */
.gradient-enabled .navbar.navbar-inverse .navbar-brand,
.gradient-enabled .sidebar .nav > li.active > a,
.gradient-enabled .sidebar .nav > li.active > a:focus,
.gradient-enabled .sidebar .nav > li.active > a:hover,
.gradient-enabled.page-sidebar-minified .sidebar .nav > li.has-sub.active:focus > a,
.gradient-enabled.page-sidebar-minified .sidebar .nav > li.has-sub.active:hover > a,
.gradient-enabled.page-sidebar-minified .sidebar .nav > li.has-sub.active > a,
.gradient-enabled .label.label-theme,
.gradient-enabled .btn.btn-scroll-to-top {
background: rgb(0,210,210); /* Old browsers */
/* IE9 SVG, needs conditional override of 'filter' to 'none' */
background: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/Pgo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0JveD0iMCAwIDEgMSIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSI+CiAgPGxpbmVhckdyYWRpZW50IGlkPSJncmFkLXVjZ2ctZ2VuZXJhdGVkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjAlIiB5MT0iMCUiIHgyPSIwJSIgeTI9IjEwMCUiPgogICAgPHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iIzAwZDJkMiIgc3RvcC1vcGFjaXR5PSIxIi8+CiAgICA8c3RvcCBvZmZzZXQ9IjEwMCUiIHN0b3AtY29sb3I9IiMwMGFjYWMiIHN0b3Atb3BhY2l0eT0iMSIvPgogIDwvbGluZWFyR3JhZGllbnQ+CiAgPHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEiIGhlaWdodD0iMSIgZmlsbD0idXJsKCNncmFkLXVjZ2ctZ2VuZXJhdGVkKSIgLz4KPC9zdmc+);
background: -moz-linear-gradient(top, rgba(0,210,210,1) 0%, rgba(0,172,172,1) 100%); /* FF3.6+ */
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgba(0,210,210,1)), color-stop(100%,rgba(0,172,172,1))); /* Chrome,Safari4+ */
background: -webkit-linear-gradient(top, rgba(0,210,210,1) 0%,rgba(0,172,172,1) 100%); /* Chrome10+,Safari5.1+ */
background: -o-linear-gradient(top, rgba(0,210,210,1) 0%,rgba(0,172,172,1) 100%); /* Opera 11.10+ */
background: -ms-linear-gradient(top, rgba(0,210,210,1) 0%,rgba(0,172,172,1) 100%); /* IE10+ */
background: linear-gradient(to bottom, rgba(0,210,210,1) 0%,rgba(0,172,172,1) 100%); /* W3C */
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#00d2d2', endColorstr='#00acac',GradientType=0 ); /* IE6-8 */
}
.pace-progress {
background: #00acac;
}
.pace .pace-activity {
border-top-color: #00acac;
border-left-color: #00acac;
}
\ No newline at end of file
/*
Template Name: Color Admin - Responsive Admin Dashboard Template build with Twitter Bootstrap 3.3.2
Version: 1.6.0
Author: Sean Ngu
Website: http://www.seantheme.com/color-admin-v1.6/admin/
*/
.navbar-logo,
.coming-soon .brand .logo,
.login .login-header .brand .logo {
border-color: #DF8F19 #c47d15 #935e10;
}
.navbar.navbar-inverse .navbar-brand,
.sidebar .nav > li.active > a,
.sidebar .nav > li.active > a:focus,
.sidebar .nav > li.active > a:hover,
.page-sidebar-minified .sidebar .nav > li.has-sub.active:focus > a,
.page-sidebar-minified .sidebar .nav > li.has-sub.active:hover > a,
.page-sidebar-minified .sidebar .nav > li.has-sub.active > a,
.label.label-theme,
.btn.btn-scroll-to-top {
background: #f59c1a;
}
.navbar.navbar-inverse .navbar-brand {
color: #fff !important;
}
.text-theme,
.sidebar .sub-menu > li.active > a:before {
color: #f59c1a;
}
@media (max-width: 767px) {
.navbar-inverse .navbar-header {
background: #f59c1a;
}
}
/* Added in v1.5 */
.gradient-enabled .navbar.navbar-inverse .navbar-brand,
.gradient-enabled .sidebar .nav > li.active > a,
.gradient-enabled .sidebar .nav > li.active > a:focus,
.gradient-enabled .sidebar .nav > li.active > a:hover,
.gradient-enabled.page-sidebar-minified .sidebar .nav > li.has-sub.active:focus > a,
.gradient-enabled.page-sidebar-minified .sidebar .nav > li.has-sub.active:hover > a,
.gradient-enabled.page-sidebar-minified .sidebar .nav > li.has-sub.active > a,
.gradient-enabled .label.label-theme,
.gradient-enabled .btn.btn-scroll-to-top {
background: rgb(253,182,79); /* Old browsers */
/* IE9 SVG, needs conditional override of 'filter' to 'none' */
background: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/Pgo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0JveD0iMCAwIDEgMSIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSI+CiAgPGxpbmVhckdyYWRpZW50IGlkPSJncmFkLXVjZ2ctZ2VuZXJhdGVkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjAlIiB5MT0iMCUiIHgyPSIwJSIgeTI9IjEwMCUiPgogICAgPHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI2ZkYjY0ZiIgc3RvcC1vcGFjaXR5PSIxIi8+CiAgICA8c3RvcCBvZmZzZXQ9IjEwMCUiIHN0b3AtY29sb3I9IiNmNTljMWEiIHN0b3Atb3BhY2l0eT0iMSIvPgogIDwvbGluZWFyR3JhZGllbnQ+CiAgPHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEiIGhlaWdodD0iMSIgZmlsbD0idXJsKCNncmFkLXVjZ2ctZ2VuZXJhdGVkKSIgLz4KPC9zdmc+);
background: -moz-linear-gradient(top, rgba(253,182,79,1) 0%, rgba(245,156,26,1) 100%); /* FF3.6+ */
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgba(253,182,79,1)), color-stop(100%,rgba(245,156,26,1))); /* Chrome,Safari4+ */
background: -webkit-linear-gradient(top, rgba(253,182,79,1) 0%,rgba(245,156,26,1) 100%); /* Chrome10+,Safari5.1+ */
background: -o-linear-gradient(top, rgba(253,182,79,1) 0%,rgba(245,156,26,1) 100%); /* Opera 11.10+ */
background: -ms-linear-gradient(top, rgba(253,182,79,1) 0%,rgba(245,156,26,1) 100%); /* IE10+ */
background: linear-gradient(to bottom, rgba(253,182,79,1) 0%,rgba(245,156,26,1) 100%); /* W3C */
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#fdb64f', endColorstr='#f59c1a',GradientType=0 ); /* IE6-8 */
}
.pace-progress {
background: #f59c1a;
}
.pace .pace-activity {
border-top-color: #f59c1a;
border-left-color: #f59c1a;
}
\ No newline at end of file
/*
Template Name: Color Admin - Responsive Admin Dashboard Template build with Twitter Bootstrap 3.3.2
Version: 1.6.0
Author: Sean Ngu
Website: http://www.seantheme.com/color-admin-v1.6/admin/
*/
.navbar-logo,
.coming-soon .brand .logo,
.login .login-header .brand .logo {
border-color: #6670AC #5b6392 #444a6d;
}
.navbar.navbar-inverse .navbar-brand,
.sidebar .nav > li.active > a,
.sidebar .nav > li.active > a:focus,
.sidebar .nav > li.active > a:hover,
.page-sidebar-minified .sidebar .nav > li.has-sub.active:focus > a,
.page-sidebar-minified .sidebar .nav > li.has-sub.active:hover > a,
.page-sidebar-minified .sidebar .nav > li.has-sub.active > a,
.label.label-theme,
.btn.btn-scroll-to-top {
background: #727cb6;
}
.navbar.navbar-inverse .navbar-brand {
color: #fff !important;
}
.text-theme,
.sidebar .sub-menu > li.active > a:before {
color: #727cb6;
}
@media (max-width: 767px) {
.navbar-inverse .navbar-header {
background: #727cb6;
}
}
/* Added in v1.5 */
.gradient-enabled .navbar.navbar-inverse .navbar-brand,
.gradient-enabled .sidebar .nav > li.active > a,
.gradient-enabled .sidebar .nav > li.active > a:focus,
.gradient-enabled .sidebar .nav > li.active > a:hover,
.gradient-enabled.page-sidebar-minified .sidebar .nav > li.has-sub.active:focus > a,
.gradient-enabled.page-sidebar-minified .sidebar .nav > li.has-sub.active:hover > a,
.gradient-enabled.page-sidebar-minified .sidebar .nav > li.has-sub.active > a,
.gradient-enabled .label.label-theme,
.gradient-enabled .btn.btn-scroll-to-top {
background: rgb(134,142,192); /* Old browsers */
/* IE9 SVG, needs conditional override of 'filter' to 'none' */
background: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/Pgo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0JveD0iMCAwIDEgMSIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSI+CiAgPGxpbmVhckdyYWRpZW50IGlkPSJncmFkLXVjZ2ctZ2VuZXJhdGVkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjAlIiB5MT0iMCUiIHgyPSIwJSIgeTI9IjEwMCUiPgogICAgPHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iIzg2OGVjMCIgc3RvcC1vcGFjaXR5PSIxIi8+CiAgICA8c3RvcCBvZmZzZXQ9IjEwMCUiIHN0b3AtY29sb3I9IiM3MjdjYjYiIHN0b3Atb3BhY2l0eT0iMSIvPgogIDwvbGluZWFyR3JhZGllbnQ+CiAgPHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEiIGhlaWdodD0iMSIgZmlsbD0idXJsKCNncmFkLXVjZ2ctZ2VuZXJhdGVkKSIgLz4KPC9zdmc+);
background: -moz-linear-gradient(top, rgba(134,142,192,1) 0%, rgba(114,124,182,1) 100%); /* FF3.6+ */
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgba(134,142,192,1)), color-stop(100%,rgba(114,124,182,1))); /* Chrome,Safari4+ */
background: -webkit-linear-gradient(top, rgba(134,142,192,1) 0%,rgba(114,124,182,1) 100%); /* Chrome10+,Safari5.1+ */
background: -o-linear-gradient(top, rgba(134,142,192,1) 0%,rgba(114,124,182,1) 100%); /* Opera 11.10+ */
background: -ms-linear-gradient(top, rgba(134,142,192,1) 0%,rgba(114,124,182,1) 100%); /* IE10+ */
background: linear-gradient(to bottom, rgba(134,142,192,1) 0%,rgba(114,124,182,1) 100%); /* W3C */
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#868ec0', endColorstr='#727cb6',GradientType=0 ); /* IE6-8 */
}
.pace-progress {
background: #727cb6;
}
.pace .pace-activity {
border-top-color: #727cb6;
border-left-color: #727cb6;
}
\ No newline at end of file
/*
Template Name: Color Admin - Responsive Admin Dashboard Template build with Twitter Bootstrap 3.3.2
Version: 1.6.0
Author: Sean Ngu
Website: http://www.seantheme.com/color-admin-v1.6/admin/
*/
.navbar-logo,
.coming-soon .brand .logo,
.login .login-header .brand .logo {
border-color: #F8504B #cc4946 #993734;
}
.navbar.navbar-inverse .navbar-brand,
.sidebar .nav > li.active > a,
.sidebar .nav > li.active > a:focus,
.sidebar .nav > li.active > a:hover,
.page-sidebar-minified .sidebar .nav > li.has-sub.active:focus > a,
.page-sidebar-minified .sidebar .nav > li.has-sub.active:hover > a,
.page-sidebar-minified .sidebar .nav > li.has-sub.active > a,
.label.label-theme,
.btn.btn-scroll-to-top {
background: #ff5b57;
}
.navbar.navbar-inverse .navbar-brand {
color: #fff !important;
}
.text-theme,
.sidebar .sub-menu > li.active > a:before {
color: #ff5b57;
}
@media (max-width: 767px) {
.navbar-inverse .navbar-header {
background: #ff5b57;
}
}
/* Added in v1.5 */
.gradient-enabled .navbar.navbar-inverse .navbar-brand,
.gradient-enabled .sidebar .nav > li.active > a,
.gradient-enabled .sidebar .nav > li.active > a:focus,
.gradient-enabled .sidebar .nav > li.active > a:hover,
.gradient-enabled.page-sidebar-minified .sidebar .nav > li.has-sub.active:focus > a,
.gradient-enabled.page-sidebar-minified .sidebar .nav > li.has-sub.active:hover > a,
.gradient-enabled.page-sidebar-minified .sidebar .nav > li.has-sub.active > a,
.gradient-enabled .label.label-theme,
.gradient-enabled .btn.btn-scroll-to-top {
background: rgb(253,128,125); /* Old browsers */
/* IE9 SVG, needs conditional override of 'filter' to 'none' */
background: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/Pgo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0JveD0iMCAwIDEgMSIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSI+CiAgPGxpbmVhckdyYWRpZW50IGlkPSJncmFkLXVjZ2ctZ2VuZXJhdGVkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjAlIiB5MT0iMCUiIHgyPSIwJSIgeTI9IjEwMCUiPgogICAgPHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI2ZkODA3ZCIgc3RvcC1vcGFjaXR5PSIxIi8+CiAgICA8c3RvcCBvZmZzZXQ9IjEwMCUiIHN0b3AtY29sb3I9IiNmZjViNTciIHN0b3Atb3BhY2l0eT0iMSIvPgogIDwvbGluZWFyR3JhZGllbnQ+CiAgPHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEiIGhlaWdodD0iMSIgZmlsbD0idXJsKCNncmFkLXVjZ2ctZ2VuZXJhdGVkKSIgLz4KPC9zdmc+);
background: -moz-linear-gradient(top, rgba(253,128,125,1) 0%, rgba(255,91,87,1) 100%); /* FF3.6+ */
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgba(253,128,125,1)), color-stop(100%,rgba(255,91,87,1))); /* Chrome,Safari4+ */
background: -webkit-linear-gradient(top, rgba(253,128,125,1) 0%,rgba(255,91,87,1) 100%); /* Chrome10+,Safari5.1+ */
background: -o-linear-gradient(top, rgba(253,128,125,1) 0%,rgba(255,91,87,1) 100%); /* Opera 11.10+ */
background: -ms-linear-gradient(top, rgba(253,128,125,1) 0%,rgba(255,91,87,1) 100%); /* IE10+ */
background: linear-gradient(to bottom, rgba(253,128,125,1) 0%,rgba(255,91,87,1) 100%); /* W3C */
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#fd807d', endColorstr='#ff5b57',GradientType=0 ); /* IE6-8 */
}
.pace-progress {
background: #ff5b57;
}
.pace .pace-activity {
border-top-color: #ff5b57;
border-left-color: #ff5b57;
}
\ No newline at end of file
[.ShellClassInfo]
InfoTip= .
IconFile=C:\Program Files (x86)\Google\Drive\googledrivesync.exe
IconIndex=16
\ No newline at end of file
[.ShellClassInfo]
InfoTip= .
IconFile=C:\Program Files (x86)\Google\Drive\googledrivesync.exe
IconIndex=16
\ No newline at end of file
[.ShellClassInfo]
InfoTip= .
IconFile=C:\Program Files (x86)\Google\Drive\googledrivesync.exe
IconIndex=16
\ No newline at end of file
[.ShellClassInfo]
InfoTip= .
IconFile=C:\Program Files (x86)\Google\Drive\googledrivesync.exe
IconIndex=16
\ No newline at end of file
[.ShellClassInfo]
InfoTip= .
IconFile=C:\Program Files (x86)\Google\Drive\googledrivesync.exe
IconIndex=16
\ No newline at end of file
frontend/web/images/about_img.jpg

213 KB | W: | H:

frontend/web/images/about_img.jpg

65.9 KB | W: | H:

frontend/web/images/about_img.jpg
frontend/web/images/about_img.jpg
frontend/web/images/about_img.jpg
frontend/web/images/about_img.jpg
  • 2-up
  • Swipe
  • Onion skin
[.ShellClassInfo]
InfoTip= .
IconFile=C:\Program Files (x86)\Google\Drive\googledrivesync.exe
IconIndex=16
\ No newline at end of file
$(document).ready(function() {
$(".important_button").click(function () {
$(this).toggleClass("important_button_active");
});
$(".important_button").click(function () {
$(".important_button_text").toggleClass("important_button_text_active");
});
$(window).scroll(function(){
if($(window).scrollTop() > 700)
{
......
[.ShellClassInfo]
InfoTip= .
IconFile=C:\Program Files (x86)\Google\Drive\googledrivesync.exe
IconIndex=16
\ No newline at end of file
$(function() {
$('.datepicker-autoClose').datepicker({
dateFormat: 'dd.mm.yy',
todayHighlight: true,
regional: 'ru',
autoclose: true,
todayBtn: true
});
$('.datetimepicker-autoClose').datetimepicker({
todayHighlight: true,
language: 'ru',
autoclose: true,
todayBtn: true,
format: 'dd.mm.yyyy hh:ii'
});
FormSliderSwitcher.init();
tinymce.init({
selector: "textarea",theme: "modern",
language: "ru",
custom_elements: "emstart,emend,header,main,span",
extended_valid_elements: "span[id|name|class|style],i[id|name|class|style],ul[id|name|class|style],li[id|name|class|style]",
height: '350px',
menubar: "edit insert view format table tools",
plugins: [
"advlist autolink link image code lists charmap print preview hr anchor pagebreak",
"searchreplace wordcount visualblocks visualchars insertdatetime media nonbreaking",
"table contextmenu directionality emoticons paste textcolor responsivefilemanager codesample"
],
toolbar1: "undo redo | bold italic underline | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | codesample | styleselect",
toolbar2: "| responsivefilemanager | link unlink anchor | image media | forecolor backcolor | print preview code ",
image_advtab: true ,
forced_root_block : false,
force_br_newlines : false,
force_p_newlines : true,
external_filemanager_path:"/filemanager/",
filemanager_title:"Responsive Filemanager" ,
external_plugins: { "filemanager" : "/filemanager/plugin.min.js"}
});
});
jQuery(document).ready(function(){
$(".important_button").click(function () {
$(this).toggleClass("important_button_active");
});
$(".important_button").click(function () {
$(".important_button_text").toggleClass("important_button_text_active");
});
});
[.ShellClassInfo]
InfoTip= .
IconFile=C:\Program Files (x86)\Google\Drive\googledrivesync.exe
IconIndex=16
\ No newline at end of file
[.ShellClassInfo]
InfoTip= .
IconFile=C:\Program Files (x86)\Google\Drive\googledrivesync.exe
IconIndex=16
\ No newline at end of file
[.ShellClassInfo]
InfoTip= .
IconFile=C:\Program Files (x86)\Google\Drive\googledrivesync.exe
IconIndex=16
\ No newline at end of file
[.ShellClassInfo]
InfoTip= .
IconFile=C:\Program Files (x86)\Google\Drive\googledrivesync.exe
IconIndex=16
\ No newline at end of file
[.ShellClassInfo]
InfoTip= .
IconFile=C:\Program Files (x86)\Google\Drive\googledrivesync.exe
IconIndex=16
\ No newline at end of file
[.ShellClassInfo]
InfoTip= .
IconFile=C:\Program Files (x86)\Google\Drive\googledrivesync.exe
IconIndex=16
\ No newline at end of file
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
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