1
0

Added (slidely adjusted) auto generated CRUD for db::Programme

This commit is contained in:
2014-05-19 10:16:43 +02:00
parent dec918c268
commit 35444de5d5
17 changed files with 1444 additions and 158 deletions

View File

@@ -33,6 +33,7 @@ return ArrayX::merge(
'bootstrap.components.*',
'bootstrap.behaviors.*',
'bootstrap.helpers.*',
'bootstrap.widgets.*',
],
'modules' =>
@@ -64,8 +65,9 @@ return ArrayX::merge(
'rules' =>
[
'' => 'site/index',
'<action:\w+>' => 'site/<action>',
'Programme/' => 'Programme/index',
'Programme/<action:\w+>' => 'programme/<action>',
'gii' => 'gii',
'gii/<controller:\w+>' => 'gii/<controller>',
@@ -73,7 +75,11 @@ return ArrayX::merge(
//'<controller:\w+>/<id:\d+>' => '<controller>/view',
//'<controller:\w+>/<action:\w+>/<id:\d+>' => '<controller>/<action>',
'<controller:\w+>/<action:\w+>' => '<controller>/<action>',
//'<controller:\w+>/<action:\w+>' => '<controller>/<action>',
'' => 'site/index',
//'<action:\w+>' => 'site/<action>',
],
],

View File

@@ -0,0 +1,179 @@
<?php
class ProgrammeController extends Controller
{
public $layout='//layouts/column2';
public $selectedNav = '';
/**
* @return array action filters
*/
public function filters()
{
return array(
'accessControl', // perform access control for CRUD operations
'postOnly + delete', // we only allow deletion via POST request
);
}
/**
* Specifies the access control rules.
* This method is used by the 'accessControl' filter.
* @return array access control rules
*/
public function accessRules()
{
return array(
array('allow', // allow all users to perform 'index' and 'view' actions
'actions'=>array('index','view','create','update','admin','delete'),
'users'=>array('*'),
),
// array('allow', // allow authenticated user to perform 'create' and 'update' actions
// 'actions'=>array('create','update'),
// 'users'=>array('@'),
// ),
// array('allow', // allow admin user to perform 'admin' and 'delete' actions
// 'actions'=>array('admin','delete'),
// 'users'=>array('admin'),
// ),
// array('deny', // deny all users
// 'users'=>array('*'),
// ),
);
}
/**
* Displays a particular model.
* @param integer $id the ID of the model to be displayed
*/
public function actionView($id)
{
$this->render('view',array(
'model'=>$this->loadModel($id),
));
}
/**
* Creates a new model.
* If creation is successful, the browser will be redirected to the 'view' page.
*/
public function actionCreate()
{
$model=new Programme;
// Uncomment the following line if AJAX validation is needed
// $this->performAjaxValidation($model);
if (isset($_POST['Programme'])) {
$model->attributes=$_POST['Programme'];
if ($model->save()) {
$this->redirect(array('view','id'=>$model->ID));
}
}
$this->render('create',array(
'model'=>$model,
));
}
/**
* Updates a particular model.
* If update is successful, the browser will be redirected to the 'view' page.
* @param integer $id the ID of the model to be updated
*/
public function actionUpdate($id)
{
$model=$this->loadModel($id);
// Uncomment the following line if AJAX validation is needed
// $this->performAjaxValidation($model);
if (isset($_POST['Programme'])) {
$model->attributes=$_POST['Programme'];
if ($model->save()) {
$this->redirect(array('view','id'=>$model->ID));
}
}
$this->render('update',array(
'model'=>$model,
));
}
/**
* Deletes a particular model.
* If deletion is successful, the browser will be redirected to the 'admin' page.
* @param integer $id the ID of the model to be deleted
*/
public function actionDelete($id)
{
if (Yii::app()->request->isPostRequest) {
// we only allow deletion via POST request
$this->loadModel($id)->delete();
// if AJAX request (triggered by deletion via admin grid view), we should not redirect the browser
if (!isset($_GET['ajax'])) {
$this->redirect(isset($_POST['returnUrl']) ? $_POST['returnUrl'] : array('admin'));
}
} else {
throw new CHttpException(400,'Invalid request. Please do not repeat this request again.');
}
}
/**
* Lists all models.
*/
public function actionIndex()
{
$dataProvider=new CActiveDataProvider('Programme');
$this->render('index',array(
'dataProvider'=>$dataProvider,
));
}
/**
* Manages all models.
*/
public function actionAdmin()
{
$model=new Programme('search');
$model->unsetAttributes(); // clear any default values
if (isset($_GET['Programme'])) {
$model->attributes=$_GET['Programme'];
}
$this->render('admin',array(
'model'=>$model,
));
}
/**
* Returns the data model based on the primary key given in the GET variable.
* If the data model is not found, an HTTP exception will be raised.
* @param integer $id the ID of the model to be loaded
* @return Programme the loaded model
* @throws CHttpException
*/
public function loadModel($id)
{
$model=Programme::model()->findByPk($id);
if ($model===null) {
throw new CHttpException(404,'The requested page does not exist.');
}
return $model;
}
/**
* Performs the AJAX validation.
* @param Programme $model the model to be validated
*/
protected function performAjaxValidation($model)
{
if (isset($_POST['ajax']) && $_POST['ajax']==='programme-form') {
echo CActiveForm::validate($model);
Yii::app()->end();
}
}
}

View File

@@ -0,0 +1,144 @@
<?php
/**
* This is the model class for table "programme".
*
* The followings are the available columns in table 'programme':
* @property integer $ID
* @property string $Name
* @property double $Downloads
* @property string $Kategorie
* @property double $Sterne
* @property integer $enabled
* @property integer $visible
* @property string $Language
* @property string $Description
* @property string $add_date
* @property string $download_url
* @property integer $viewable_code
* @property string $sourceforge_url
* @property string $homepage_url
* @property string $github_url
* @property integer $uses_absCanv
* @property string $update_identifier
* @property integer $highscore_gid
*/
class Programme extends CActiveRecord
{
/**
* @return string the associated database table name
*/
public function tableName()
{
return 'programme';
}
/**
* @return array validation rules for model attributes.
*/
public function rules()
{
// NOTE: you should only define rules for those attributes that
// will receive user inputs.
return array(
array('Name, Downloads, Kategorie, Sterne, enabled, visible, Language, Description, add_date, download_url, viewable_code, sourceforge_url, homepage_url, github_url, uses_absCanv, update_identifier', 'required'),
array('enabled, visible, viewable_code, uses_absCanv, highscore_gid', 'numerical', 'integerOnly'=>true),
array('Downloads, Sterne', 'numerical'),
array('update_identifier', 'length', 'max'=>28),
// The following rule is used by search().
// @todo Please remove those attributes that should not be searched.
array('ID, Name, Downloads, Kategorie, Sterne, enabled, visible, Language, Description, add_date, download_url, viewable_code, sourceforge_url, homepage_url, github_url, uses_absCanv, update_identifier, highscore_gid', 'safe', 'on'=>'search'),
);
}
/**
* @return array relational rules.
*/
public function relations()
{
// NOTE: you may need to adjust the relation name and the related
// class name for the relations automatically generated below.
return array(
);
}
/**
* @return array customized attribute labels (name=>label)
*/
public function attributeLabels()
{
return array(
'ID' => 'ID',
'Name' => 'Name',
'Downloads' => 'Downloads',
'Kategorie' => 'Kategorie',
'Sterne' => 'Sterne',
'enabled' => 'Enabled',
'visible' => 'Visible',
'Language' => 'Language',
'Description' => 'Description',
'add_date' => 'Add Date',
'download_url' => 'Download Url',
'viewable_code' => 'Viewable Code',
'sourceforge_url' => 'Sourceforge Url',
'homepage_url' => 'Homepage Url',
'github_url' => 'Github Url',
'uses_absCanv' => 'Uses Abs Canv',
'update_identifier' => 'Update Identifier',
'highscore_gid' => 'Highscore Gid',
);
}
/**
* Retrieves a list of models based on the current search/filter conditions.
*
* Typical usecase:
* - Initialize the model fields with values from filter form.
* - Execute this method to get CActiveDataProvider instance which will filter
* models according to data in model fields.
* - Pass data provider to CGridView, CListView or any similar widget.
*
* @return CActiveDataProvider the data provider that can return the models
* based on the search/filter conditions.
*/
public function search()
{
// @todo Please modify the following code to remove attributes that should not be searched.
$criteria=new CDbCriteria;
$criteria->compare('ID',$this->ID);
$criteria->compare('Name',$this->Name,true);
$criteria->compare('Downloads',$this->Downloads);
$criteria->compare('Kategorie',$this->Kategorie,true);
$criteria->compare('Sterne',$this->Sterne);
$criteria->compare('enabled',$this->enabled);
$criteria->compare('visible',$this->visible);
$criteria->compare('Language',$this->Language,true);
$criteria->compare('Description',$this->Description,true);
$criteria->compare('add_date',$this->add_date,true);
$criteria->compare('download_url',$this->download_url,true);
$criteria->compare('viewable_code',$this->viewable_code);
$criteria->compare('sourceforge_url',$this->sourceforge_url,true);
$criteria->compare('homepage_url',$this->homepage_url,true);
$criteria->compare('github_url',$this->github_url,true);
$criteria->compare('uses_absCanv',$this->uses_absCanv);
$criteria->compare('update_identifier',$this->update_identifier,true);
$criteria->compare('highscore_gid',$this->highscore_gid);
return new CActiveDataProvider($this, array(
'criteria'=>$criteria,
));
}
/**
* Returns the static model of the specified AR class.
* Please note that you should have this exact method in all your CActiveRecord descendants!
* @param string $className active record class name.
* @return Programme the static model class
*/
public static function model($className=__CLASS__)
{
return parent::model($className);
}
}

View File

@@ -0,0 +1,35 @@
<?php /* @var $this Controller */
require_once('protected/lib/ArrayX.php');
use Yiinitializr\Helpers\ArrayX;
?>
<?php $this->beginContent('//layouts/main'); ?>
<div class="container">
<div class="row">
<div class="span-9" style="width: 870px;">
<div id="content">
<?php echo $content; ?>
</div>
<!-- content -->
</div>
<div class="span-3">
<div class="well" style="max-width: 340px; padding: 8px 0;">
<?php
$this->widget('bootstrap.widgets.TbNav',
[
'type' => TbHtml::NAV_TYPE_LIST,
'items' => ArrayX::merge(
[
['label' => 'List header'],
],
$this->menu)
]
);
?>
</div>
<!-- well -->
</div>
</div>
</div>
<?php $this->endContent(); ?>

View File

@@ -25,6 +25,8 @@
<!endif]-->
<?php
if (! isset($this->selectedNav)) $this->selectedNav = "";
$this->widget('bootstrap.widgets.TbNavbar',
[
'brandLabel' => Yii::app()->name,

View File

@@ -0,0 +1,65 @@
<?php
/* @var $this ProgrammeController */
/* @var $model Programme */
/* @var $form TbActiveForm */
?>
<div class="form">
<?php $form=$this->beginWidget('bootstrap.widgets.TbActiveForm', array(
'id'=>'programme-form',
// Please note: When you enable ajax validation, make sure the corresponding
// controller action is handling ajax validation correctly.
// There is a call to performAjaxValidation() commented in generated controller code.
// See class documentation of CActiveForm for details on this.
'enableAjaxValidation'=>false,
)); ?>
<p class="help-block">Fields with <span class="required">*</span> are required.</p>
<?php echo $form->errorSummary($model); ?>
<?php echo $form->textAreaControlGroup($model,'Name',array('rows'=>6,'span'=>8)); ?>
<?php echo $form->textFieldControlGroup($model,'Downloads',array('span'=>5)); ?>
<?php echo $form->textAreaControlGroup($model,'Kategorie',array('rows'=>6,'span'=>8)); ?>
<?php echo $form->textFieldControlGroup($model,'Sterne',array('span'=>5)); ?>
<?php echo $form->textFieldControlGroup($model,'enabled',array('span'=>5)); ?>
<?php echo $form->textFieldControlGroup($model,'visible',array('span'=>5)); ?>
<?php echo $form->textAreaControlGroup($model,'Language',array('rows'=>6,'span'=>8)); ?>
<?php echo $form->textAreaControlGroup($model,'Description',array('rows'=>6,'span'=>8)); ?>
<?php echo $form->textFieldControlGroup($model,'add_date',array('span'=>5)); ?>
<?php echo $form->textAreaControlGroup($model,'download_url',array('rows'=>6,'span'=>8)); ?>
<?php echo $form->textFieldControlGroup($model,'viewable_code',array('span'=>5)); ?>
<?php echo $form->textAreaControlGroup($model,'sourceforge_url',array('rows'=>6,'span'=>8)); ?>
<?php echo $form->textAreaControlGroup($model,'homepage_url',array('rows'=>6,'span'=>8)); ?>
<?php echo $form->textAreaControlGroup($model,'github_url',array('rows'=>6,'span'=>8)); ?>
<?php echo $form->textFieldControlGroup($model,'uses_absCanv',array('span'=>5)); ?>
<?php echo $form->textFieldControlGroup($model,'update_identifier',array('span'=>5,'maxlength'=>28)); ?>
<?php echo $form->textFieldControlGroup($model,'highscore_gid',array('span'=>5)); ?>
<div class="form-actions">
<?php echo TbHtml::submitButton($model->isNewRecord ? 'Create' : 'Save',array(
'color'=>TbHtml::BUTTON_COLOR_PRIMARY,
'size'=>TbHtml::BUTTON_SIZE_LARGE,
)); ?>
</div>
<?php $this->endWidget(); ?>
</div><!-- form -->

View File

@@ -0,0 +1,56 @@
<?php
/* @var $this ProgrammeController */
/* @var $model Programme */
/* @var $form CActiveForm */
?>
<div class="wide form">
<?php $form=$this->beginWidget('bootstrap.widgets.TbActiveForm', array(
'action'=>Yii::app()->createUrl($this->route),
'method'=>'get',
)); ?>
<?php echo $form->textFieldControlGroup($model,'ID',array('span'=>5)); ?>
<?php echo $form->textAreaControlGroup($model,'Name',array('rows'=>6,'span'=>8)); ?>
<?php echo $form->textFieldControlGroup($model,'Downloads',array('span'=>5)); ?>
<?php echo $form->textAreaControlGroup($model,'Kategorie',array('rows'=>6,'span'=>8)); ?>
<?php echo $form->textFieldControlGroup($model,'Sterne',array('span'=>5)); ?>
<?php echo $form->textFieldControlGroup($model,'enabled',array('span'=>5)); ?>
<?php echo $form->textFieldControlGroup($model,'visible',array('span'=>5)); ?>
<?php echo $form->textAreaControlGroup($model,'Language',array('rows'=>6,'span'=>8)); ?>
<?php echo $form->textAreaControlGroup($model,'Description',array('rows'=>6,'span'=>8)); ?>
<?php echo $form->textFieldControlGroup($model,'add_date',array('span'=>5)); ?>
<?php echo $form->textAreaControlGroup($model,'download_url',array('rows'=>6,'span'=>8)); ?>
<?php echo $form->textFieldControlGroup($model,'viewable_code',array('span'=>5)); ?>
<?php echo $form->textAreaControlGroup($model,'sourceforge_url',array('rows'=>6,'span'=>8)); ?>
<?php echo $form->textAreaControlGroup($model,'homepage_url',array('rows'=>6,'span'=>8)); ?>
<?php echo $form->textAreaControlGroup($model,'github_url',array('rows'=>6,'span'=>8)); ?>
<?php echo $form->textFieldControlGroup($model,'uses_absCanv',array('span'=>5)); ?>
<?php echo $form->textFieldControlGroup($model,'update_identifier',array('span'=>5,'maxlength'=>28)); ?>
<?php echo $form->textFieldControlGroup($model,'highscore_gid',array('span'=>5)); ?>
<div class="form-actions">
<?php echo TbHtml::submitButton('Search', array('color' => TbHtml::BUTTON_COLOR_PRIMARY,));?>
</div>
<?php $this->endWidget(); ?>
</div><!-- search-form -->

View File

@@ -0,0 +1,83 @@
<?php
/* @var $this ProgrammeController */
/* @var $data Programme */
?>
<div class="view">
<b><?php echo CHtml::encode($data->getAttributeLabel('ID')); ?>:</b>
<?php echo CHtml::link(CHtml::encode($data->ID),array('view','id'=>$data->ID)); ?>
<br />
<b><?php echo CHtml::encode($data->getAttributeLabel('Name')); ?>:</b>
<?php echo CHtml::encode($data->Name); ?>
<br />
<b><?php echo CHtml::encode($data->getAttributeLabel('Downloads')); ?>:</b>
<?php echo CHtml::encode($data->Downloads); ?>
<br />
<b><?php echo CHtml::encode($data->getAttributeLabel('Kategorie')); ?>:</b>
<?php echo CHtml::encode($data->Kategorie); ?>
<br />
<b><?php echo CHtml::encode($data->getAttributeLabel('Sterne')); ?>:</b>
<?php echo CHtml::encode($data->Sterne); ?>
<br />
<b><?php echo CHtml::encode($data->getAttributeLabel('enabled')); ?>:</b>
<?php echo CHtml::encode($data->enabled); ?>
<br />
<b><?php echo CHtml::encode($data->getAttributeLabel('visible')); ?>:</b>
<?php echo CHtml::encode($data->visible); ?>
<br />
<?php /*
<b><?php echo CHtml::encode($data->getAttributeLabel('Language')); ?>:</b>
<?php echo CHtml::encode($data->Language); ?>
<br />
<b><?php echo CHtml::encode($data->getAttributeLabel('Description')); ?>:</b>
<?php echo CHtml::encode($data->Description); ?>
<br />
<b><?php echo CHtml::encode($data->getAttributeLabel('add_date')); ?>:</b>
<?php echo CHtml::encode($data->add_date); ?>
<br />
<b><?php echo CHtml::encode($data->getAttributeLabel('download_url')); ?>:</b>
<?php echo CHtml::encode($data->download_url); ?>
<br />
<b><?php echo CHtml::encode($data->getAttributeLabel('viewable_code')); ?>:</b>
<?php echo CHtml::encode($data->viewable_code); ?>
<br />
<b><?php echo CHtml::encode($data->getAttributeLabel('sourceforge_url')); ?>:</b>
<?php echo CHtml::encode($data->sourceforge_url); ?>
<br />
<b><?php echo CHtml::encode($data->getAttributeLabel('homepage_url')); ?>:</b>
<?php echo CHtml::encode($data->homepage_url); ?>
<br />
<b><?php echo CHtml::encode($data->getAttributeLabel('github_url')); ?>:</b>
<?php echo CHtml::encode($data->github_url); ?>
<br />
<b><?php echo CHtml::encode($data->getAttributeLabel('uses_absCanv')); ?>:</b>
<?php echo CHtml::encode($data->uses_absCanv); ?>
<br />
<b><?php echo CHtml::encode($data->getAttributeLabel('update_identifier')); ?>:</b>
<?php echo CHtml::encode($data->update_identifier); ?>
<br />
<b><?php echo CHtml::encode($data->getAttributeLabel('highscore_gid')); ?>:</b>
<?php echo CHtml::encode($data->highscore_gid); ?>
<br />
*/ ?>
</div>

View File

@@ -0,0 +1,78 @@
<?php
/* @var $this ProgrammeController */
/* @var $model Programme */
$this->breadcrumbs=array(
'Programmes'=>array('index'),
'Manage',
);
$this->menu=array(
array('label'=>'List Programme', 'url'=>array('index')),
array('label'=>'Create Programme', 'url'=>array('create')),
);
Yii::app()->clientScript->registerScript('search', "
$('.search-button').click(function(){
$('.search-form').toggle();
return false;
});
$('.search-form form').submit(function(){
$('#programme-grid').yiiGridView('update', {
data: $(this).serialize()
});
return false;
});
");
?>
<h1>Manage Programmes</h1>
<p>
You may optionally enter a comparison operator (<b>&lt;</b>, <b>&lt;=</b>, <b>&gt;</b>, <b>&gt;=</b>, <b>
&lt;&gt;</b>
or <b>=</b>) at the beginning of each of your search values to specify how the comparison should be done.
</p>
<?php echo CHtml::link('Advanced Search','#',array('class'=>'search-button btn')); ?>
<div class="search-form" style="display:none">
<?php $this->renderPartial('_search',array(
'model'=>$model,
)); ?>
</div><!-- search-form -->
<?php $this->widget('bootstrap.widgets.TbGridView',array(
'type' => TbHtml::GRID_TYPE_BORDERED,
'id'=>'programme-grid',
'dataProvider'=>$model->search(),
'filter'=>$model,
'columns'=>array(
'ID',
'Name',
'Downloads',
'Kategorie',
'Sterne',
'enabled',
/*
'visible',
'Language',
'Description',
'add_date',
'download_url',
'viewable_code',
'sourceforge_url',
'homepage_url',
'github_url',
'uses_absCanv',
'update_identifier',
'highscore_gid',
*/
array(
'class'=>'bootstrap.widgets.TbButtonColumn',
),
),
)); ?>

View File

@@ -0,0 +1,20 @@
<?php
/* @var $this ProgrammeController */
/* @var $model Programme */
?>
<?php
$this->breadcrumbs=array(
'Programmes'=>array('index'),
'Create',
);
$this->menu=array(
array('label'=>'List Programme', 'url'=>array('index')),
array('label'=>'Manage Programme', 'url'=>array('admin')),
);
?>
<h1>Create Programme</h1>
<?php $this->renderPartial('_form', array('model'=>$model)); ?>

View File

@@ -0,0 +1,22 @@
<?php
/* @var $this ProgrammeController */
/* @var $dataProvider CActiveDataProvider */
?>
<?php
$this->breadcrumbs=array(
'Programmes',
);
$this->menu=array(
array('label'=>'Create Programme','url'=>array('create')),
array('label'=>'Manage Programme','url'=>array('admin')),
);
?>
<h1>Programmes</h1>
<?php $this->widget('bootstrap.widgets.TbListView',array(
'dataProvider'=>$dataProvider,
'itemView'=>'_view',
)); ?>

View File

@@ -0,0 +1,23 @@
<?php
/* @var $this ProgrammeController */
/* @var $model Programme */
?>
<?php
$this->breadcrumbs=array(
'Programmes'=>array('index'),
$model->Name=>array('view','id'=>$model->ID),
'Update',
);
$this->menu=array(
array('label'=>'List Programme', 'url'=>array('index')),
array('label'=>'Create Programme', 'url'=>array('create')),
array('label'=>'View Programme', 'url'=>array('view', 'id'=>$model->ID)),
array('label'=>'Manage Programme', 'url'=>array('admin')),
);
?>
<h1>Update Programme <?php echo $model->ID; ?></h1>
<?php $this->renderPartial('_form', array('model'=>$model)); ?>

View File

@@ -0,0 +1,48 @@
<?php
/* @var $this ProgrammeController */
/* @var $model Programme */
?>
<?php
$this->breadcrumbs=array(
'Programmes'=>array('index'),
$model->Name,
);
$this->menu=array(
array('label'=>'List Programme', 'url'=>array('index')),
array('label'=>'Create Programme', 'url'=>array('create')),
array('label'=>'Update Programme', 'url'=>array('update', 'id'=>$model->ID)),
array('label'=>'Delete Programme', 'url'=>'#', 'linkOptions'=>array('submit'=>array('delete','id'=>$model->ID),'confirm'=>'Are you sure you want to delete this item?')),
array('label'=>'Manage Programme', 'url'=>array('admin')),
);
?>
<h1>View Programme #<?php echo $model->ID; ?></h1>
<?php $this->widget('zii.widgets.CDetailView',array(
'htmlOptions' => array(
'class' => 'table table-striped table-condensed table-hover',
),
'data'=>$model,
'attributes'=>array(
'ID',
'Name',
'Downloads',
'Kategorie',
'Sterne',
'enabled',
'visible',
'Language',
'Description',
'add_date',
'download_url',
'viewable_code',
'sourceforge_url',
'homepage_url',
'github_url',
'uses_absCanv',
'update_identifier',
'highscore_gid',
),
)); ?>