/** * Displays a single Issues model. * @param integer $id * @return mixed */ public function actionIssues($type, $id, $key = null) { switch ($type) { case 'all': $this->model = new Issues(); break; default: $this->model = Issues::findModel([$id, $type]); break; } $searchModel = new IssuesSearch(['queryOptions' => ['with' => ['closedBy', 'resolvedBy']]]); $get = \Yii::$app->request->getQueryParams(); $params = array_merge($get, $this->model->constraints); unset($params['type'], $params['id'], $params['key']); $options = ['enableComments' => $this->enableComments]; switch ($key) { case 'duplicate': $params = array_merge($params, ['duplicate' => true]); $orderBy = ['id' => SORT_DESC]; break; case 'closed': $params = array_merge($params, ['closed' => true]); $orderBy = ['closed_at' => SORT_DESC]; break; case 'open': $params = array_merge($params, ['closed' => false]); $orderBy = ['id' => SORT_DESC]; break; case 'resolved': $params = array_merge($params, ['resolved' => true]); $orderBy = ['resolved_at' => SORT_DESC]; break; case 'unresolved': $params = array_merge($params, ['resolved' => false]); $orderBy = ['id' => SORT_DESC]; break; default: $orderBy = []; break; } $dataProvider = $searchModel->search($params); $dataProvider->query->orderBy($orderBy); Response::viewOptions(null, ['args' => ["content" => $this->renderAjax('issues', ['enableComments' => $this->enableComments, 'searchModel' => $searchModel, 'dataProvider' => $dataProvider, 'options' => $options, 'parentId' => $id, 'parentType' => $type, 'filterType' => $key])], 'modalOptions' => ['contentOnly' => true], 'js' => \Yii::$app->request->isAjax ? new \yii\web\JsExpression('$nitm.onModuleLoad("issue-tracker", function (module) { module.initDefaults("#issues-' . $key . '-list' . $id . '", "issue-tracker"); });') : ''], true); //$this->setResponseFormat(\Yii::$app->request->isAjax ? 'modal' : 'html'); return $this->renderResponse(null, null, \Yii::$app->request->isAjax); }
public function run() { $dataProvdier = null; $searchModel = new IssuesSearch(['queryOptions' => ['with' => ['author', 'editor', 'closedBy', 'resolvedBy']]]); $get = \Yii::$app->request->getQueryParams(); $params = array_merge($get, $this->model->getConstraints()); $params['closed'] = false; switch (is_array($this->items) && !empty($this->items)) { case true: $dataProvider = new \yii\data\ArrayDataProvider(["allModels" => $this->items]); break; default: switch ($this->model instanceof IssuesModel) { case true: unset($params['type']); unset($params['id']); $dataProvider = $searchModel->search(array_merge($params)); break; } break; } switch (is_null($dataProvider)) { case false: $dataProvider->setSort(['defaultOrder' => ['id' => SORT_DESC]]); $dataProviderOpen = $searchModel->search(array_replace($params, ['closed' => false])); $dataProviderClosed = $searchModel->search(array_replace($params, ['closed' => true])); $dataProviderDuplicate = $searchModel->search(array_replace($params, ['duplicate' => true])); $dataProviderResolved = $searchModel->search(array_replace($params, ['resolved' => true])); $dataProviderUnresolved = $searchModel->search(array_replace($params, ['resolved' => false])); $dataProviderOpen->query->orderBy(['id' => SORT_DESC]); $dataProviderClosed->query->orderBy(['closed_at' => SORT_DESC]); $issues = $this->render('@nitm/widgets/views/issue/index', ['dataProviderOpen' => $dataProviderOpen, 'dataProviderClosed' => $dataProviderClosed, 'dataProviderResolved' => $dataProviderResolved, 'dataProviderUnresolved' => $dataProviderUnresolved, 'dataProviderDuplicate' => $dataProviderDuplicate, 'searchModel' => $searchModel, 'parentId' => $this->parentId, 'parentType' => $this->parentType, 'useModal' => $this->useModal, 'enableComments' => $this->enableComments]); break; default: $issues = 'No Issues'; break; } $this->options['id'] .= $this->parentId; return Html::tag('div', $issues, $this->options); }