Сделал виджет с переопределением 4 главных функций календаря в js
This commit is contained in:
32
backend/modules/calendar/controllers/AjaxController.php
Normal file
32
backend/modules/calendar/controllers/AjaxController.php
Normal file
@ -0,0 +1,32 @@
|
||||
<?php
|
||||
|
||||
namespace backend\modules\calendar\controllers;
|
||||
|
||||
use backend\modules\card\models\UserCardSearch;
|
||||
use Yii;
|
||||
use yii\helpers\ArrayHelper;
|
||||
use yii\web\Response;
|
||||
|
||||
class AjaxController extends \yii\web\Controller
|
||||
{
|
||||
public function actionGetBirthdayByMonth($month )
|
||||
{
|
||||
$searchModel = new UserCardSearch();
|
||||
$models = $searchModel->search(Yii::$app->request->queryParams)->getModels();
|
||||
$models_array = ArrayHelper::toArray($models, [
|
||||
'backend\modules\card\models\UserCard' => [
|
||||
'id',
|
||||
'dob',
|
||||
'fio'
|
||||
],
|
||||
]);
|
||||
|
||||
$response = Yii::$app->response;
|
||||
$response->format = Response::FORMAT_JSON;
|
||||
$response->getHeaders()->set('Content-Type', 'application/json; charset=utf-8');
|
||||
$response->content = json_encode(
|
||||
$models_array
|
||||
);
|
||||
return $response;
|
||||
}
|
||||
}?>
|
@ -3,7 +3,6 @@
|
||||
namespace backend\modules\calendar\controllers;
|
||||
|
||||
use backend\modules\card\models\UserCardSearch;
|
||||
use common\classes\Debug;
|
||||
use Yii;
|
||||
use yii\data\ArrayDataProvider;
|
||||
use yii\filters\AccessControl;
|
||||
@ -43,6 +42,14 @@ class CalendarController extends Controller
|
||||
* Renders the index view for the module
|
||||
* @return string
|
||||
*/
|
||||
public function actionAlternative(){
|
||||
$searchModel = new UserCardSearch();
|
||||
$dataProvider = $searchModel->search(['month'=>date('m', strtotime('2019-07-03'))]);
|
||||
return $this->render('alternative', [
|
||||
'dataProvider' => $dataProvider
|
||||
]);
|
||||
}
|
||||
|
||||
public function actionIndex()
|
||||
{
|
||||
$searchModel = new UserCardSearch();
|
||||
|
80
backend/modules/calendar/views/calendar/alternative.php
Normal file
80
backend/modules/calendar/views/calendar/alternative.php
Normal file
@ -0,0 +1,80 @@
|
||||
<?php
|
||||
use yii\helpers\Html;
|
||||
|
||||
$this->title = 'Календарь ДР';
|
||||
?>
|
||||
<?= \backend\widgets\Calendar::widget([
|
||||
'button' => Html::a('<i class="fas fa-long-arrow-alt-left"></i> Назад',
|
||||
Yii::$app->request->referrer, ['class' => 'btn btn-primary',]),
|
||||
'runBuild' => "function (date, content){
|
||||
this.build(date, content)
|
||||
}",
|
||||
'updateContent' => "function(date){
|
||||
let monthNumber = date.substr(5, 2);
|
||||
return fetch('../ajax/get-birthday-by-month?' +
|
||||
'month=' + monthNumber)
|
||||
.then((res) => {
|
||||
return res.json()
|
||||
})
|
||||
}",
|
||||
'getColor' => "function (date, dates = null) {
|
||||
for (let contentDate of dates) {
|
||||
if (contentDate['dob'].substr(8, 2) == DateHelper.intToDate(date.getDate())) {
|
||||
return 'success';
|
||||
}
|
||||
}
|
||||
}",
|
||||
'getHtmlContentForDate' => 'function (content, date) {
|
||||
let flag = false
|
||||
let html = `<table class="table table-striped table-bordered">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>#</th>
|
||||
<th>ФИО</th>
|
||||
<th>Дата рождения</th>
|
||||
<th class="action-column"> </th>
|
||||
</tr>
|
||||
</thead><tbody>`;
|
||||
for (let i = 1; i <= content.length; i++) {
|
||||
let model = content[i - 1];
|
||||
if (model["dob"].substr(8, 2) == date.substr(8, 2)) {
|
||||
flag = true;
|
||||
html += `<tr data-key="${model["id"]}">`
|
||||
html += `<td>${i}</td>`
|
||||
html += `<td>${model["fio"]}</td>`
|
||||
html += `<td>${model["dob"]}</td>`
|
||||
html += `<td><a href="/secure/calendar/calendar/view?id=${model["id"]}" title="Просмотр" aria-label="Просмотр" data-pjax="0">
|
||||
<svg aria-hidden="true"
|
||||
style="display:inline-block;font-size:inherit;height:1em;overflow:visible;vertical-align:-.125em;width:1.125em"
|
||||
xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512">
|
||||
<path fill="currentColor"
|
||||
d="M573 241C518 136 411 64 288 64S58 136 3 241a32 32 0 000 30c55 105 162 177 285 177s230-72 285-177a32 32 0 000-30zM288 400a144 144 0 11144-144 144 144 0 01-144 144zm0-240a95 95 0 00-25 4 48 48 0 01-67 67 96 96 0 1092-71z"></path>
|
||||
</svg>
|
||||
</a> <a href="/secure/calendar/calendar/update?id=${model["id"]}" title="Редактировать" aria-label="Редактировать"
|
||||
data-pjax="0">
|
||||
<svg aria-hidden="true"
|
||||
style="display:inline-block;font-size:inherit;height:1em;overflow:visible;vertical-align:-.125em;width:1em"
|
||||
xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512">
|
||||
<path fill="currentColor"
|
||||
d="M498 142l-46 46c-5 5-13 5-17 0L324 77c-5-5-5-12 0-17l46-46c19-19 49-19 68 0l60 60c19 19 19 49 0 68zm-214-42L22 362 0 484c-3 16 12 30 28 28l122-22 262-262c5-5 5-13 0-17L301 100c-4-5-12-5-17 0zM124 340c-5-6-5-14 0-20l154-154c6-5 14-5 20 0s5 14 0 20L144 340c-6 5-14 5-20 0zm-36 84h48v36l-64 12-32-31 12-65h36v48z"></path>
|
||||
</svg>
|
||||
</a> <a href="/secure/calendar/calendar/delete?id=${model["id"]}" title="Удалить" aria-label="Удалить" data-pjax="0"
|
||||
data-confirm="Вы уверены, что хотите удалить этот элемент?" data-method="post">
|
||||
<svg aria-hidden="true"
|
||||
style="display:inline-block;font-size:inherit;height:1em;overflow:visible;vertical-align:-.125em;width:.875em"
|
||||
xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512">
|
||||
<path fill="currentColor"
|
||||
d="M32 464a48 48 0 0048 48h288a48 48 0 0048-48V128H32zm272-256a16 16 0 0132 0v224a16 16 0 01-32 0zm-96 0a16 16 0 0132 0v224a16 16 0 01-32 0zm-96 0a16 16 0 0132 0v224a16 16 0 01-32 0zM432 32H312l-9-19a24 24 0 00-22-13H167a24 24 0 00-22 13l-9 19H16A16 16 0 000 48v32a16 16 0 0016 16h416a16 16 0 0016-16V48a16 16 0 00-16-16z"></path>
|
||||
</svg>
|
||||
</a>
|
||||
</td>`
|
||||
html += `</tr>`
|
||||
}
|
||||
}
|
||||
html += `</tbody></table>`
|
||||
if (flag) return html;
|
||||
return "empty"
|
||||
}'
|
||||
]) ?>
|
||||
|
||||
|
@ -4,9 +4,10 @@
|
||||
/* @var $dataProvider yii\data\ActiveDataProvider */
|
||||
|
||||
use yii\grid\GridView;
|
||||
use yii\helpers\Html;
|
||||
use yii\widgets\Pjax;
|
||||
?>
|
||||
|
||||
<div style="display: flex;align-items: flex-start;">
|
||||
<p>
|
||||
<select id="options" class="btn btn-secondary dropdown-toggle">
|
||||
<option selected="selected" value="?month=00">Выберите месяц</option>
|
||||
@ -25,7 +26,9 @@ use yii\widgets\Pjax;
|
||||
<option value="?month=12">декабрь</option>
|
||||
</select>
|
||||
</p>
|
||||
|
||||
<?=Html::a('Календарь дней рождений '.Html::tag('i', null, ['class' => 'far fa-calendar-alt']),
|
||||
['alternative'], ['class' => 'btn btn-success', 'style' => 'margin-left: 10px'])?>
|
||||
</div>
|
||||
<?php
|
||||
Pjax::begin(['id' => 'reload']);
|
||||
echo GridView::widget([
|
||||
|
@ -6,7 +6,6 @@ use common\classes\Debug;
|
||||
use Yii;
|
||||
use yii\base\Model;
|
||||
use yii\data\ActiveDataProvider;
|
||||
use backend\modules\card\models\UserCard;
|
||||
|
||||
/**
|
||||
* UserCardSearch represents the model behind the search form of `backend\modules\card\models\UserCard`.
|
||||
@ -64,6 +63,10 @@ class UserCardSearch extends UserCard
|
||||
|
||||
$query->where(['deleted_at' => null]);
|
||||
|
||||
if (isset($params['month'])) {
|
||||
$query->andFilterWhere(['=', 'MONTH(dob)', $params['month']]);
|
||||
}
|
||||
|
||||
// grid filtering conditions
|
||||
$query->andFilterWhere([
|
||||
'id' => $this->id,
|
||||
|
Reference in New Issue
Block a user