Example #1
0
 public function actionView($id)
 {
     $model = $this->loadModel('app\\models\\Issue', $id);
     $this->view->params['appSettings'] = ['app_name' => $model->project->title];
     if (!\Yii::$app->user->can('viewProject', ['project' => $model->project]) || \Yii::$app->user->isGuest) {
         throw new ForbiddenHttpException('Access denied');
     }
     if (\Yii::$app->request->post('hasEditable') && !\Yii::$app->user->isGuest) {
         $post = \Yii::$app->request->post('Issue');
         if (isset($post['status_id'])) {
             $model->status_id = $post['status_id'];
             $output = StatusEnum::i()->getMap()[$post['status_id']];
             $this->sendMessage($model, ['subject' => \Yii::t('app', 'Issue Status Changed'), 'view' => 'changeStatus']);
         }
         if (isset($post['priority_id'])) {
             $model->priority_id = (int) $post['priority_id'];
             $output = PriorityEnum::i()->getMap()[$post['priority_id']];
         }
         if (isset($post['tracker_id'])) {
             $model->tracker_id = (int) $post['tracker_id'];
             $output = TrackerEnum::i()->getMap()[$post['tracker_id']];
         }
         if (isset($post['assignee_id'])) {
             if ($post['assignee_id']) {
                 $model->assignee_id = (int) $post['assignee_id'];
                 $output = \app\models\Project::getAssigneeOptions($model->project_id)[$post['assignee_id']];
                 $this->sendMessage($model);
             } else {
                 $model->assignee_id = null;
                 $output = '<i>(' . \Yii::t('app', 'not set') . ')</i>';
             }
         }
         if (isset($post['readiness_id'])) {
             $model->readiness_id = (int) $post['readiness_id'];
             $output = Issue::getReadinessOptions()[$post['readiness_id']];
         }
         if (isset($post['deadline'])) {
             $model->deadline = $post['deadline'];
             $output = $post['deadline'];
         }
         if ($model->save()) {
             $out = Json::encode(['output' => $output, 'message' => '']);
             echo $out;
             return;
         }
     }
     if ($post = \Yii::$app->request->post('IssueComment')) {
         $comment = new IssueComment();
         $comment->text = $post['text'];
         $comment->issue_id = $id;
         if ($comment->save()) {
             \Yii::$app->session->setFlash('success', \Yii::t('app', 'Comment successfully added.'));
         }
     }
     return $this->render('view', ['model' => $model]);
 }
Example #2
0
</h1>
<i><?php 
echo \Yii::t('app', 'Added by') . ' <u>' . $model->author->getFullName() . '</u> ' . $model->created_date;
?>
</i>

<div class="row">
    <div class="col-sm-3">
        <dl class="dl-horizontal">
            <dt><?php 
echo \Yii::t('app', 'Status');
?>
</dt>
            <dd>
                <?php 
echo Editable::widget(['model' => $model, 'attribute' => 'status_id', 'header' => \Yii::t('app', 'Status'), 'inputType' => Editable::INPUT_DROPDOWN_LIST, 'data' => StatusEnum::i()->getMap(), 'options' => ['class' => 'form-control'], 'displayValue' => StatusEnum::i()->getMap()[$model->status_id]]);
?>
            </dd>
            <dt><?php 
echo \Yii::t('app', 'Priority');
?>
</dt>
            <dd>
                <?php 
echo Editable::widget(['model' => $model, 'attribute' => 'priority_id', 'header' => \Yii::t('app', 'Priority'), 'inputType' => Editable::INPUT_DROPDOWN_LIST, 'data' => PriorityEnum::i()->getMap(), 'options' => ['class' => 'form-control'], 'displayValue' => PriorityEnum::i()->getMap()[$model->priority_id]]);
?>
            </dd>
            <dt><?php 
echo \Yii::t('app', 'Tracker');
?>
</dt>
Example #3
0
 public function getShortInfo()
 {
     $str = '<b>' . $this->project->title . '</b>: ' . Html::a($this->subject, ['/issue/view', 'id' => $this->id]);
     if (in_array($this->status_id, StatusEnum::getOpenStatuses())) {
         if ($this->commentsCount) {
             $str .= ' <sup class="text-muted">' . $this->commentsCount . '<i class="fa fa-comments" title="Комментарии"></i></sup>';
         }
         if ($this->assignee_id == \Yii::$app->user->id) {
             $str .= ' <sup><i class="fa fa-get-pocket text-success" title="назначена мне"></i></sup>';
         }
         $str .= '<span class="pull-right text-muted text-sm">' . $this->created_date . '</span>';
     }
     if ($this->status_id == StatusEnum::IN_WORK) {
         $str .= ' <i class="text-muted">(' . $this->assignee->getFullName() . ')</i>';
     }
     return $str;
 }
Example #4
0
<?php

use yii\grid\GridView;
echo GridView::widget(['dataProvider' => $dataProvider, 'columns' => ['id', ['attribute' => 'status_id', 'header' => 'Текст', 'format' => 'raw', 'value' => function ($data) {
    return '<b>' . $data->user->getFullName() . ': </b>' . 'Изменение статуса зачади на &laquo;' . \app\components\enums\StatusEnum::i()->getMap()[$data->status_id] . '&raquo;';
}]]]);
Example #5
0
 public function actionGetIssuesJson()
 {
     \Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
     return ['New' => Issue::find()->where('status_id IN (' . implode(',', StatusEnum::getOpenStatuses()) . ')')->orderBy('id DESC')->limit(self::ISSUE_LIMIT)->all(), 'In work' => Issue::find()->where(['status_id' => StatusEnum::IN_WORK])->orderBy('id DESC')->limit(self::ISSUE_LIMIT)->all(), 'Closed' => Issue::find()->where('status_id IN (' . implode(',', StatusEnum::getClosedStatuses()) . ')')->orderBy('id DESC')->limit(self::ISSUE_LIMIT)->all()];
 }
Example #6
0
    ?>
            <?php 
    echo Html::img('/uploads/settings/app_logo/' . $this->params['appSettings']['app_logo'], ['class' => 'img-thumbnail', 'width' => 300]);
    ?>
            <br/>
            <?php 
    echo HtmlPurifier::process($this->params['appSettings']['app_description']);
    ?>
        <?php 
} else {
    ?>
            <?php 
    echo GridView::widget(['dataProvider' => $dataProvider, 'filterModel' => $searchModel, 'layout' => '{items} {pager}', 'columns' => [['attribute' => 'project_id', 'filter' => Project::getOptions(), 'value' => function ($data) {
        return $data->project->title;
    }], ['attribute' => 'status_id', 'filter' => StatusEnum::i()->getMap(), 'value' => function ($data) {
        return StatusEnum::i()->getMap()[$data->status_id];
    }], ['attribute' => 'priority_id', 'filter' => PriorityEnum::i()->getMap(), 'value' => function ($data) {
        return PriorityEnum::i()->getMap()[$data->priority_id];
    }], ['attribute' => 'subject', 'format' => 'raw', 'value' => function ($data) {
        $additionalLinks = '';
        $checkList = '';
        if ($data->creator_id == \Yii::$app->user->id || \Yii::$app->user->can('adminDashboard')) {
            $additionalLinks = '<span class="pull-right">' . Html::a('<i class="fa fa-edit"></i>', ['/issue/update', 'id' => $data->id]) . ' ';
            $additionalLinks .= Html::a('<i class="fa fa-trash"></i>', ['/issue/delete', 'id' => $data->id], ['class' => 'confirmLink']) . '</span>';
        }
        if ($data->checkLists) {
            $checkList = '<span class="label label-success" data-toggle="tooltip" title="' . \Yii::t('app', 'Checklist') . '">
                            <i class="fa fa-th-list"></i> ' . $data->offListItems . '/' . $data->checkListsCount . '</span>';
        }
        return Html::a($data->subject, ['/issue/view', 'id' => $data->id]) . ' ' . $checkList . $additionalLinks;
    }], ['attribute' => 'assignee_id', 'filter' => User::getOptions(), 'value' => function ($data) {
Example #7
0
<?php

use app\components\enums\StatusEnum;
use yii\helpers\Html;
/* @var $this yii\web\View */
/* @var $model app\models\Issue */
$resetLink = Yii::$app->urlManager->createAbsoluteUrl(['/issue/view', 'id' => $model->id]);
?>

<?php 
echo \Yii::t('app', 'Status has been changed in Issue') . ' #' . $model->id . '(' . $model->subject . ') ' . \Yii::t('app', 'to') . ' "' . StatusEnum::i()->getMap()[$model->status_id] . '"<br/>';
?>

<?php 
echo Html::a(Html::encode($resetLink), $resetLink);
Example #8
0
            <h1><?php 
echo Yii::t('app', 'Issues');
?>
</h1>
        </div>
        <div class="col-sm-6">
            <?php 
echo Html::a('<i class="fa fa-plus"></i> ' . Yii::t('app', 'New Issue'), ['/issue/create', 'id' => $project->id], ['class' => 'btn btn-primary pull-right']);
?>
        </div>
    </div>

    <?php 
echo GridView::widget(['dataProvider' => $dataProvider, 'filterModel' => $searchModel, 'layout' => '{items} {pager}', 'columns' => [['class' => 'yii\\grid\\CheckboxColumn', 'name' => 'massIssueDelete'], 'id', ['class' => 'kartik\\grid\\EditableColumn', 'attribute' => 'status_id', 'filter' => StatusEnum::i()->getMap(), 'value' => function ($data) {
    return StatusEnum::i()->getMap()[$data->status_id];
}, 'editableOptions' => ['header' => \Yii::t('app', 'Status'), 'inputType' => Editable::INPUT_DROPDOWN_LIST, 'data' => StatusEnum::i()->getMap()]], ['class' => 'kartik\\grid\\EditableColumn', 'attribute' => 'priority_id', 'filter' => PriorityEnum::i()->getMap(), 'value' => function ($data) {
    return PriorityEnum::i()->getMap()[$data->priority_id];
}, 'editableOptions' => ['header' => \Yii::t('app', 'Priority'), 'inputType' => Editable::INPUT_DROPDOWN_LIST, 'data' => PriorityEnum::i()->getMap()]], ['attribute' => 'subject', 'format' => 'raw', 'value' => function ($data) {
    $additionalLinks = '';
    $checkList = '';
    if ($data->creator_id == \Yii::$app->user->id || \Yii::$app->user->can('adminDashboard')) {
        $additionalLinks = '<span class="pull-right">' . Html::a('<i class="fa fa-edit"></i>', ['/issue/update', 'id' => $data->id]) . ' ';
        $additionalLinks .= Html::a('<i class="fa fa-trash"></i>', ['/issue/delete', 'id' => $data->id], ['class' => 'confirmLink']) . '</span>';
    }
    if ($data->checkLists) {
        $checkList = '<span class="label label-success" data-toggle="tooltip" title="' . \Yii::t('app', 'Checklist') . '">
                            <i class="fa fa-th-list"></i> ' . $data->offListItems . '/' . $data->checkListsCount . '</span>';
    }
    return Html::a($data->subject, ['/issue/view', 'id' => $data->id]) . ' ' . $checkList . $additionalLinks;
}], ['attribute' => 'creator_id', 'filter' => \app\models\Project::getAssigneeOptions($project->id), 'value' => function ($data) {
    return $data->author ? $data->author->getFullName() : '';
Example #9
0
    echo $this->render('_listItem', ['model' => $checklistItems[$i], 'index' => $i]);
}
?>
            </div>

            <a href="#" class="checklist-add pull-right"><i class="fa fa-plus-circle"></i> <?php 
echo \Yii::t('app', 'Add Checklist Item');
?>
</a>
        </div>
    </div>
</div>
<div class="row">
    <div class="col-sm-6">
        <?php 
echo $form->field($model, 'status_id')->dropDownList(\app\components\enums\StatusEnum::i()->getMap());
echo $form->field($model, 'priority_id')->dropDownList(\app\components\enums\PriorityEnum::i()->getMap());
?>
    </div>
    <div class="col-sm-6">
        <?php 
echo $form->field($model, 'deadline')->widget(DatePicker::className(), ['dateFormat' => 'yyyy-MM-dd', 'options' => ['class' => 'form-control']]);
echo $form->field($model, 'readiness_id')->dropDownList(\app\models\Issue::getReadinessOptions());
echo $form->field($model, 'image_array[]')->fileInput(['multiple' => ''])->hint(\Yii::t('app', 'Chose one or few files'));
if (!empty($model->photos)) {
    echo $this->render('_imageGrid', ['model' => $model]);
}
?>
    </div>
</div>