Ejemplo n.º 1
0
 protected function getModels()
 {
     $models = array();
     $files = scandir(Yii::getPathOfAlias('application.models'));
     foreach ($files as $file) {
         if ($file[0] !== '.' && CFileHelper::getExtension($file) === 'php') {
             $fileClassName = substr($file, 0, strpos($file, '.'));
             if (class_exists($fileClassName) && is_subclass_of($fileClassName, 'GiiyActiveRecord')) {
                 $fileClass = new ReflectionClass($fileClassName);
                 if (!$fileClass->isAbstract() && !is_array(GiiyActiveRecord::model($fileClassName)->getPrimaryKey())) {
                     $models[] = $fileClassName;
                 }
             }
         }
     }
     foreach (Yii::app()->getModules() as $module => $moduleConf) {
         if (Yii::getPathOfAlias($module . '.models')) {
             $files = scandir(Yii::getPathOfAlias($module . '.models'));
             foreach ($files as $file) {
                 if ($file[0] !== '.' && CFileHelper::getExtension($file) === 'php') {
                     $fileClassName = substr($file, 0, strpos($file, '.'));
                     if (class_exists($fileClassName) && is_subclass_of($fileClassName, 'GiiyActiveRecord')) {
                         $fileClass = new ReflectionClass($fileClassName);
                         if (!$fileClass->isAbstract() && !is_array(GiiyActiveRecord::model($fileClassName)->getPrimaryKey())) {
                             $models[] = $fileClassName;
                         }
                     }
                 }
             }
         }
     }
     return $models;
 }
Ejemplo n.º 2
0
 public function relationForm($relationName)
 {
     $relations = $this->model->relations();
     if (!isset($relations[$relationName])) {
         throw new CException('whrong relation attribute name');
     }
     $relation = $relations[$relationName];
     $relationModel = $relation[1];
     $isMultiple = $relation[0] == CActiveRecord::HAS_MANY || $relation[0] == CActiveRecord::MANY_MANY;
     $isFileBased = GiiyActiveRecord::model($relationModel) instanceof IFileBased;
     if ($this->fromModel == $relationModel) {
         return '';
     }
     $value = join(',', $this->model->getRelationIds($relationName));
     $widget = $this->createWidget('TbSelect2', array('form' => $this, 'model' => $this->model, 'attribute' => $relationName, 'htmlOptions' => array('value' => $value, 'relationName' => $relationName, 'isMultiple' => $isMultiple, 'label' => '<a name="' . $relationName . '"></a>' . $this->model->getAttributeLabel($relationName) . ' <button name="add" class="btn btn-success btn-mini" onclick="addForm($(this).parent().next(),\'' . $relationModel . '\');return false;" >+</button>'), 'asDropDownList' => false, 'options' => array('width' => '755px', 'multiple' => true, 'placeholder' => 'Выберите ' . $this->model->getAttributeLabel($relationName), 'minimumInputLength' => 1, 'ajax' => array('url' => '/' . strtolower($relationModel), 'dataType' => 'json', 'type' => 'POST', 'data' => 'js: function(term,page) { return {q: term}; }', 'results' => 'js: function(data,page) { return {results: data}; }'), 'formatSelection' => $isFileBased ? 'js:formatSelectionUpload' : 'js:formatSelectionForm', 'formatResult' => 'js:formatResult', 'initSelection' => 'js:initSelection')));
     if ($isFileBased) {
         Yii::app()->bootstrap->registerAssetJs('fileupload/jquery.fileupload.js');
     }
     Yii::app()->clientScript->registerScript('initModelData', '
         var modelData = Array();
     ', CClientScript::POS_HEAD);
     Yii::app()->clientScript->registerScript($relationName . 'ModelData', '
         modelData["' . $relationName . '"] = ' . json_encode($this->model->getRelationNames($relationName, true)) . ';
     ', CClientScript::POS_HEAD);
     Yii::app()->clientScript->registerScript('ModelData', '
         modelData["_modelName"] = "' . get_class($this->model) . '";
     ', CClientScript::POS_HEAD);
     return $this->renderWidget($widget);
 }
Ejemplo n.º 3
0
<?
/**
 * The following variables are available in this template:
 * - $this: the BootCrudCode object
 */
?>
<?
$model = GiiyActiveRecord::model($this->modelClass);
echo "<?\n";
$label=$this->pluralize($this->class2name($this->modelClass));
echo "\$this->breadcrumbs=array(
	'$label'=>array('index'),
	'Manage',
);\n";
?>

$this->menu=array(
	array('label'=>'List <?php 
echo $this->modelClass;
?>
','url'=>array('index')),
	array('label'=>'Create <?php 
echo $this->modelClass;
?>
','url'=>array('create')),
);

Yii::app()->clientScript->registerScript('search', "
$('.search-button').click(function(){
	$('.search-form').toggle();
	return false;
Ejemplo n.º 4
0
 public static function model($className = __CLASS__)
 {
     return parent::model($className);
 }
Ejemplo n.º 5
0
    protected function _prepareModel(GiiyActiveRecord $model)
    {
        $values = $_POST[get_class($model)];

        foreach($values as $name => $value) {
            if (
                isset($model->relations()[$name])
                && ($model->relations()[$name][0] == CActiveRecord::HAS_MANY
                    || $model->relations()[$name][0] == CActiveRecord::MANY_MANY
                )
            ) {
                $ids = $value?$value:array();
                $pks = is_array($ids)?$ids:explode(',',$ids);
                if (!is_array(GiiyActiveRecord::model($model->relations()[$name][1])->getTableSchema()->primaryKey)) {

                    $models = array();
                    foreach (GiiyActiveRecord::model($model->relations()[$name][1])->findAllByPk($pks) as $res)
                        $models[$res->getPrimaryKey()] = $res;

                    $sortedModels = array();
                    foreach ($pks as $pk)
                        $sortedModels[] = $models[$pk];

                    $model->$name = $sortedModels;

                } else
                    $model->$name = $pks;
            } elseif (isset($model->relations()[$name])) {
                $relModel = CActiveRecord::model($model->relations()[$name][1])
                    ->findByPk($value);
                $model->$name = $relModel?$relModel:null;
            } elseif ($model->hasAttribute($name) || isset($model->$name) || method_exists($model,'set'.ucfirst($name))) {
                $model->$name = $value;
            }
        }
        return $model;
    }