|
|
|
<?php
|
|
|
|
/**
|
|
|
|
* @link http://www.yiiframework.com/
|
|
|
|
* @copyright Copyright (c) 2008 Yii Software LLC
|
|
|
|
* @license http://www.yiiframework.com/license/
|
|
|
|
*/
|
|
|
|
|
|
|
|
namespace yii\gii\controllers;
|
|
|
|
|
|
|
|
use yii\web\Controller;
|
|
|
|
use yii\web\HttpException;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @author Qiang Xue <qiang.xue@gmail.com>
|
|
|
|
* @since 2.0
|
|
|
|
*/
|
|
|
|
class DefaultController extends Controller
|
|
|
|
{
|
|
|
|
public $layout = 'generator';
|
|
|
|
/**
|
|
|
|
* @var \yii\gii\Module
|
|
|
|
*/
|
|
|
|
public $module;
|
|
|
|
/**
|
|
|
|
* @var \yii\gii\Generator
|
|
|
|
*/
|
|
|
|
public $generator;
|
|
|
|
|
|
|
|
public function actionIndex()
|
|
|
|
{
|
|
|
|
$this->layout = 'main';
|
|
|
|
return $this->render('index');
|
|
|
|
}
|
|
|
|
|
|
|
|
public function actionView($id)
|
|
|
|
{
|
|
|
|
$generator = $this->loadGenerator($id);
|
|
|
|
$params = array('generator' => $generator);
|
|
|
|
if (isset($_POST['preview']) || isset($_POST['generate'])) {
|
|
|
|
if ($generator->validate()) {
|
|
|
|
$generator->saveStickyAttributes();
|
|
|
|
$files = $generator->generate();
|
|
|
|
if (isset($_POST['generate']) && !empty($_POST['answers'])) {
|
|
|
|
$params['hasError'] = $generator->save($files, (array)$_POST['answers'], $results);
|
|
|
|
$params['results'] = $results;
|
|
|
|
} else {
|
|
|
|
$params['files'] = $files;
|
|
|
|
$params['answers'] = isset($_POST['answers']) ? $_POST['answers'] : null;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
return $this->render('view', $params);
|
|
|
|
}
|
|
|
|
|
|
|
|
public function actionPreview($id, $file)
|
|
|
|
{
|
|
|
|
$generator = $this->loadGenerator($id);
|
|
|
|
if ($generator->validate()) {
|
|
|
|
foreach ($generator->generate() as $f) {
|
|
|
|
if ($f->id === $file) {
|
|
|
|
$content = $f->preview();
|
|
|
|
if ($content !== false) {
|
|
|
|
return '<div class="content">' . $content . '</content>';
|
|
|
|
} else {
|
|
|
|
return '<div class="error">Preview is not available for this file type.</div>';
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
throw new HttpException(404, "Code file not found: $file");
|
|
|
|
}
|
|
|
|
|
|
|
|
public function actionDiff($id, $file)
|
|
|
|
{
|
|
|
|
$generator = $this->loadGenerator($id);
|
|
|
|
if ($generator->validate()) {
|
|
|
|
foreach ($generator->generate() as $f) {
|
|
|
|
if ($f->id === $file) {
|
|
|
|
return $this->renderPartial('diff', array(
|
|
|
|
'diff' => $f->diff(),
|
|
|
|
));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
throw new HttpException(404, "Code file not found: $file");
|
|
|
|
}
|
|
|
|
|
|
|
|
public function createUrl($route, $params = array())
|
|
|
|
{
|
|
|
|
if (!isset($params['id']) && $this->generator !== null) {
|
|
|
|
foreach ($this->module->generators as $id => $generator) {
|
|
|
|
if ($generator === $this->generator) {
|
|
|
|
$params['id'] = $id;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return parent::createUrl($route, $params);
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Loads the generator with the specified ID.
|
|
|
|
* @param string $id the ID of the generator to be loaded.
|
|
|
|
* @return \yii\gii\Generator the loaded generator
|
|
|
|
* @throws \yii\web\HttpException
|
|
|
|
*/
|
|
|
|
protected function loadGenerator($id)
|
|
|
|
{
|
|
|
|
if (isset($this->module->generators[$id])) {
|
|
|
|
$this->generator = $this->module->generators[$id];
|
|
|
|
$this->generator->loadStickyAttributes();
|
|
|
|
$this->generator->load($_POST);
|
|
|
|
return $this->generator;
|
|
|
|
} else {
|
|
|
|
throw new HttpException(404, "Code generator not found: $id");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|