Commit f0f915df9a171a77beb555d456c6e382e3e13397

Authored by Administrator
1 parent 77092529

add Vitaliy's widgets

backend/web/js/option.js
@@ -17,14 +17,7 @@ function checkboxerInit() { @@ -17,14 +17,7 @@ function checkboxerInit() {
17 $(value).trigger('change'); 17 $(value).trigger('change');
18 }); 18 });
19 } 19 }
20 -function accountRedraw() {  
21 - var type = $('input[name="User[type]"]:checked').val();  
22 - if(type == 2) {  
23 - $('#form_definition').addClass('form_for_company');  
24 - } else {  
25 - $('#form_definition').removeClass('form_for_company');  
26 - }  
27 -} 20 +
28 $(function() { 21 $(function() {
29 var counter = 0; 22 var counter = 0;
30 $(document).on('click', '.add_row', function() { 23 $(document).on('click', '.add_row', function() {
frontend/config/main.php
@@ -47,6 +47,7 @@ return [ @@ -47,6 +47,7 @@ return [
47 'showScriptName' => false, 47 'showScriptName' => false,
48 'rules' => [ 48 'rules' => [
49 'landing/<view:[\w-]+>' => 'landing/view', 49 'landing/<view:[\w-]+>' => 'landing/view',
  50 + 'site/city/<query:[\d]+>' => 'site/city',
50 ] 51 ]
51 ], 52 ],
52 ], 53 ],
frontend/controllers/SiteController.php
@@ -12,6 +12,7 @@ use frontend\models\ContactForm; @@ -12,6 +12,7 @@ use frontend\models\ContactForm;
12 use frontend\models\Options; 12 use frontend\models\Options;
13 use frontend\models\OptionValues; 13 use frontend\models\OptionValues;
14 use yii\base\InvalidParamException; 14 use yii\base\InvalidParamException;
  15 +use yii\db\Query;
15 use yii\web\BadRequestHttpException; 16 use yii\web\BadRequestHttpException;
16 use yii\web\Controller; 17 use yii\web\Controller;
17 use yii\filters\VerbFilter; 18 use yii\filters\VerbFilter;
@@ -48,6 +49,23 @@ class SiteController extends Controller @@ -48,6 +49,23 @@ class SiteController extends Controller
48 49
49 50
50 51
  52 + public function actionCity($query){
  53 + \Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
  54 + $out = ['results' => ['id' => '', 'text' => '']];
  55 + if (!is_null($query)) {
  56 + $query = new Query();
  57 + $query->select('id, name AS text')
  58 + ->from('city')
  59 + ->where(['like', 'name', $query])
  60 + ->limit(20);
  61 + $command = $query->createCommand();
  62 + $data = $command->queryAll();
  63 + $out['results'] = array_values($data);
  64 + }
  65 +
  66 + return $out;
  67 + }
  68 +
51 69
52 public function actionFormsModal() 70 public function actionFormsModal()
53 { 71 {
frontend/models/SignupForm.php
@@ -13,6 +13,10 @@ class SignupForm extends Model @@ -13,6 +13,10 @@ class SignupForm extends Model
13 public $username; 13 public $username;
14 public $email; 14 public $email;
15 public $password; 15 public $password;
  16 + public $firstname;
  17 + public $lastname;
  18 + public $verifyCode;
  19 + public $location;
16 20
17 /** 21 /**
18 * @inheritdoc 22 * @inheritdoc
@@ -25,12 +29,16 @@ class SignupForm extends Model @@ -25,12 +29,16 @@ class SignupForm extends Model
25 ['username', 'unique', 'targetClass' => '\common\models\User', 'message' => 'This username has already been taken.'], 29 ['username', 'unique', 'targetClass' => '\common\models\User', 'message' => 'This username has already been taken.'],
26 ['username', 'string', 'min' => 2, 'max' => 255], 30 ['username', 'string', 'min' => 2, 'max' => 255],
27 31
  32 + ['location', 'string', 'min' => 2, 'max' => 255],
  33 +
28 ['email', 'filter', 'filter' => 'trim'], 34 ['email', 'filter', 'filter' => 'trim'],
29 ['email', 'required'], 35 ['email', 'required'],
30 ['email', 'email'], 36 ['email', 'email'],
31 ['email', 'string', 'max' => 255], 37 ['email', 'string', 'max' => 255],
32 ['email', 'unique', 'targetClass' => '\common\models\User', 'message' => 'This email address has already been taken.'], 38 ['email', 'unique', 'targetClass' => '\common\models\User', 'message' => 'This email address has already been taken.'],
33 39
  40 + ['verifyCode', 'captcha'],
  41 +
34 ['password', 'required'], 42 ['password', 'required'],
35 ['password', 'string', 'min' => 6], 43 ['password', 'string', 'min' => 6],
36 ]; 44 ];
frontend/views/accounts/general.php
@@ -70,29 +70,23 @@ @@ -70,29 +70,23 @@
70 </div> 70 </div>
71 <div class="general-who style border-general"> 71 <div class="general-who style border-general">
72 <div class="general-who-title gen-admin-title">Кто вы:</div> 72 <div class="general-who-title gen-admin-title">Кто вы:</div>
  73 +
73 <?= $form->field ($user, 'type') 74 <?= $form->field ($user, 'type')
74 - ->label ('Кто вы')  
75 - ->radioList ([1 => 'Частное лицо', 2 => 'Компания']);  
76 - ?>  
77 -  
78 -<!-- --><?//= $form->field ($user, 'type')  
79 -// ->label (false)  
80 -// ->radioList (  
81 -// [1 => 'Male', 0 => 'Female'],  
82 -// [  
83 -// 'item' => function($index, $label, $name, $checked, $value) {  
84 -//  
85 -// $return = '<label class="modal-radio">';  
86 -// $return .= '<input type="radio" name="' . $name . '" value="' . $value . '" tabindex="3">';  
87 -// $return .= '<i></i>';  
88 -// $return .= '<span>' . ucwords($label) . '</span>';  
89 -// $return .= '</label>';  
90 -//  
91 -// return $return;  
92 -// }  
93 -// ]  
94 -// );  
95 -// ?> 75 + ->label (false)
  76 + ->radioList (
  77 + [1 => 'Частное лицо', 2 => 'Компания'],
  78 + [
  79 + 'item' => function($index, $label, $name, $checked, $value) {
  80 + $return = '<label>';
  81 + $return .= '<input type="radio" name="' . $name . '" value="' . $value . '" '.($checked ? "checked" :"").' >';
  82 + $return .= '<span></span>' . ucwords($label);
  83 + $return .= '</label>';
  84 +
  85 + return $return;
  86 + }
  87 + ]
  88 + );
  89 + ?>
96 90
97 91
98 </div> 92 </div>
frontend/views/site/registration.php
@@ -3,7 +3,9 @@ @@ -3,7 +3,9 @@
3 * @var $user common\models\User 3 * @var $user common\models\User
4 * @var $user_info common\models\UserInfo 4 * @var $user_info common\models\UserInfo
5 */ 5 */
  6 + use yii\captcha\Captcha;
6 use yii\widgets\ActiveForm; 7 use yii\widgets\ActiveForm;
  8 + $this->registerJsFile('/js/selectize.js');
7 ?> 9 ?>
8 <div class="section-box content"> 10 <div class="section-box content">
9 <div class="section-box registration"> 11 <div class="section-box registration">
@@ -15,13 +17,7 @@ @@ -15,13 +17,7 @@
15 17
16 <div class="input-blocks-wrapper"> 18 <div class="input-blocks-wrapper">
17 <div class="input-blocks"> 19 <div class="input-blocks">
18 - <?= $form->field($model, 'username')?>  
19 -  
20 - <div class="form-group field-accountsform-email require has-erro">  
21 - <label for="input-txt-1">Логин</label>  
22 - <input class="custom-input-2" id="input-txt-1" type="text">  
23 - <div class="help-block">Значение «E-mail (Логин)» не является правильным email адресом.</div>  
24 - </div> 20 + <?= $form->field($model, 'username')->textInput(['class'=>'custom-input-2'])?>
25 </div> 21 </div>
26 <div class="input-blocks-help-wr"> 22 <div class="input-blocks-help-wr">
27 <div class="input-blocks-help">Логин должен содержать не менее 3-х символов, начинаться с английской буквы и заканчиваться буквой или цифрой. Допускаются английские буквы, цифры и знаки 'тире', 'подчеркивание', 'точка'</div> 23 <div class="input-blocks-help">Логин должен содержать не менее 3-х символов, начинаться с английской буквы и заканчиваться буквой или цифрой. Допускаются английские буквы, цифры и знаки 'тире', 'подчеркивание', 'точка'</div>
@@ -31,8 +27,7 @@ @@ -31,8 +27,7 @@
31 <div class="input-blocks-wrapper"> 27 <div class="input-blocks-wrapper">
32 <div class="input-blocks"> 28 <div class="input-blocks">
33 29
34 - <label for="input-txt-2">Пароль</label>  
35 - <input class="custom-input-2" id="input-txt-2" type="text"> 30 + <?= $form->field($model, 'password')->passwordInput(['class'=>'custom-input-2'])?>
36 31
37 </div> 32 </div>
38 <div class="input-blocks-help-wr"> 33 <div class="input-blocks-help-wr">
@@ -42,8 +37,7 @@ @@ -42,8 +37,7 @@
42 37
43 <div class="input-blocks-wrapper"> 38 <div class="input-blocks-wrapper">
44 <div class="input-blocks"> 39 <div class="input-blocks">
45 - <label for="input-txt-3">E-mail</label>  
46 - <input class="custom-input-2" id="input-txt-3" type="text"> 40 + <?= $form->field($model, 'email')->textInput(['class'=>'custom-input-2'])?>
47 </div> 41 </div>
48 <div class="input-blocks-help-wr"> 42 <div class="input-blocks-help-wr">
49 <div class="input-blocks-help">На этот адрес электронной почты будет отправлено уведомление о регистрации.</div> 43 <div class="input-blocks-help">На этот адрес электронной почты будет отправлено уведомление о регистрации.</div>
@@ -55,6 +49,7 @@ @@ -55,6 +49,7 @@
55 <div class="who-you-are-form-wr style"> 49 <div class="who-you-are-form-wr style">
56 <div class="who-you-are-form"> 50 <div class="who-you-are-form">
57 <div class="check-radio-wr"> 51 <div class="check-radio-wr">
  52 +
58 <div class="custom-form-buttons"> 53 <div class="custom-form-buttons">
59 <input class="custom-radio" id="custom-radio-1" name="group-1" checked="checked" type="radio"> 54 <input class="custom-radio" id="custom-radio-1" name="group-1" checked="checked" type="radio">
60 <label for="custom-radio-1"><span></span>Частное лицо copy</label> 55 <label for="custom-radio-1"><span></span>Частное лицо copy</label>
@@ -108,15 +103,6 @@ @@ -108,15 +103,6 @@
108 <option value="5">Черкасы</option> 103 <option value="5">Черкасы</option>
109 </select> 104 </select>
110 </div> 105 </div>
111 -  
112 - <!--<div class="input-blocks">-->  
113 - <!--<select name="" id="" >-->  
114 - <!--<option selected disabled></option>-->  
115 - <!--<option value="">Киев</option>-->  
116 - <!--<option value="">Киев</option>-->  
117 - <!--<option value="">Киев</option>-->  
118 - <!--</select>-->  
119 - <!--</div>-->  
120 </div> 106 </div>
121 107
122 <div class="input-blocks-wrapper city-two"> 108 <div class="input-blocks-wrapper city-two">
@@ -126,18 +112,21 @@ @@ -126,18 +112,21 @@
126 </div> 112 </div>
127 <div class="form-help-two">Если вашего города нет в списке, введите его. </div> 113 <div class="form-help-two">Если вашего города нет в списке, введите его. </div>
128 </div> 114 </div>
129 -  
130 - <div class="input-blocks-wrapper captcha">  
131 - <div class="input-blocks-captcha">  
132 - <img id="accountsform-verifycode-image" src="/images/captcha.png" alt="">  
133 - </div>  
134 - </div>  
135 -  
136 <div class="input-blocks-wrapper"> 115 <div class="input-blocks-wrapper">
137 - <div class="input-blocks">  
138 - <label for="input-txt-8">Введите проверочный код</label>  
139 - <input class="custom-input-2" id="input-txt-8" type="text">  
140 - </div> 116 + <?= $form->field($model, 'verifyCode')->widget(Captcha::className(), [
  117 + 'template' => '
  118 + <div class="input-blocks-wrapper">
  119 + <div class="input-blocks">
  120 + <label for="input-txt-8">Введите проверочный код</label>
  121 + {input}
  122 + </div>
  123 + </div>
  124 + <div class="input-blocks-wrapper captcha">
  125 + <div class="input-blocks-captcha">
  126 + {image}
  127 + </div>
  128 + </div>',
  129 + ])->label(false) ?>
141 </div> 130 </div>
142 <div class="input-blocks-wrapper button"> 131 <div class="input-blocks-wrapper button">
143 <button type="submit" value="Submit">Зарегистрироваться</button> 132 <button type="submit" value="Submit">Зарегистрироваться</button>
frontend/web/js/selectize.js
@@ -3046,15 +3046,44 @@ @@ -3046,15 +3046,44 @@
3046 3046
3047 $(document).ready(function() { 3047 $(document).ready(function() {
3048 var $select = $('.control-group select').selectize({ 3048 var $select = $('.control-group select').selectize({
3049 - create: true,  
3050 - sortField: {  
3051 - field: 'text',  
3052 - direction: 'asc'  
3053 - },  
3054 - dropdownParent: null,  
3055 - onDropdownClose: function() {  
3056 - $("#btnClear").css({display:'block'})  
3057 - } 3049 + valueField: 'AuthorId',
  3050 + labelField: 'AuthorName',
  3051 + searchField: ['AuthorName'],
  3052 + maxOptions: 10,
  3053 + minimumInputLength: 2,
  3054 + //create: function (input, callback) {
  3055 + // $.ajax({
  3056 + // url: '/site/city',
  3057 + // data: { 'AuthorName': input },
  3058 + // type: 'POST',
  3059 + // dataType: 'json',
  3060 + // success: function (response) {
  3061 + // return callback(response);
  3062 + // }
  3063 + // });
  3064 + //},
  3065 + render: {
  3066 + option: function (item, escape) {
  3067 + return '<div>' + escape(item.AuthorName) + '</div>';
  3068 + }
  3069 + },
  3070 + load: function (query, callback) {
  3071 + if (!query.length) return callback();
  3072 + $.ajax({
  3073 + url: '/site/city/' + query,
  3074 + type: 'POST',
  3075 + dataType: 'json',
  3076 + data: {
  3077 + maxresults: 10
  3078 + },
  3079 + error: function () {
  3080 + callback();
  3081 + },
  3082 + success: function (res) {
  3083 + callback(res);
  3084 + }
  3085 + });
  3086 + }
3058 3087
3059 }); 3088 });
3060 3089