Exemple #1
0
    public function run()
    {
        //begin form
        echo CHtml::beginForm($this->action, $this->method, array('id' => $this->id, 'enctype' => $this->enctype, 'class' => $this->class));
        foreach ($this->model as $item) {
            if ($this->selector) {
                echo CHtml::checkBox('selector_' . $item['key']);
            }
            $name = Awecms::generateFriendlyName($item["key"]);
            ?>
            <div class="settings row">
                <?php 
            echo $this->getlabel($item['key']);
            switch ($item['type']) {
                //add new types here
                case 'textfield':
                    echo $this->getFullTextField($item);
                    break;
                case 'boolean':
                    echo CHtml::hiddenField($item['key'], 0);
                    echo CHtml::checkBox($item['key'], $item['value']);
                    break;
                case 'image_url':
                    echo $this->getFullTextField($item);
                    echo "<a class=\"right\" href=\"{$item["value"]}\" target=\"_blank\"><img src=\"{$item["value"]}\" title=\"{$name}\" alt=\"{$name}\" /></a>";
                    break;
                case 'email':
                    echo $this->getFullTextField($item);
                    break;
                case 'textarea':
                    echo CHtml::textArea($item['key'], $item['value']);
                case 'NULL':
                    break;
                default:
                    echo "Unsupported type: " . $item['type'] . " of " . $item['key'] . " with value " . $item['value'] . "<br/>";
                    break;
            }
            if (isset($item['hint'])) {
                ?>
                    <p class="hint">
                        <?php 
                echo $item['hint'];
                ?>
                    </p>
                    <?php 
            }
            ?>

            </div>
            <?php 
        }
        ?>
        <div class="row buttons">
            <?php 
        echo CHtml::submitButton('Submit!');
        ?>
        </div>
        <?php 
        echo CHtml::endForm();
    }
Exemple #2
0
 public function getThemes()
 {
     $themeDirs = array_map('basename', glob(Yii::getPathOfAlias('menu.assets.frontend.themes') . '/*', GLOB_ONLYDIR));
     $return = array();
     foreach ($themeDirs as $item) {
         $return[$item] = Awecms::generateFriendlyName($item);
     }
     return $return;
 }
Exemple #3
0
 public static function getLinkForModules()
 {
     //modules to ignore
     $ignoreToList = array('admin');
     $ignoreToLink = array('mail', 'eauth');
     $r = array();
     foreach (Yii::app()->metadata->getModules() as $module) {
         $item = array();
         if (in_array($module, $ignoreToList)) {
             continue;
         }
         $item['label'] = Awecms::generateFriendlyName($module);
         if (!in_array($module, $ignoreToLink)) {
             $item['url'] = '/' . $module;
         }
         $r[] = $item;
     }
     return $r;
 }
Exemple #4
0
 public function generateField($column, $modelClass, $search = false)
 {
     if ($column->isForeignKey) {
         $relation = $this->findRelation($modelClass, $column);
         //get primary key of the foreign model
         $foreign_pk = Awecms::getPrimaryKeyColumn(CActiveRecord::model($relation[3]));
         $foreign_identificationColumn = self::getIdentificationColumnFromTableSchema(CActiveRecord::model($relation[3])->getTableSchema());
         //if the relation name is parent or child and if the relation is with items from same model,
         //don't allow any item to be parent/child of itself
         $prompt = '';
         if ($column->allowNull && $column->defaultValue == NULL) {
             $prompt = ", array('prompt' => 'No corresponde')";
         }
         if (($relation[0] == 'parent' || $relation[0] == 'child') && $relation[3] == $modelClass && !$search) {
             $str = "\$allModels = {$relation[3]}::model()->findAll();\n                ";
             $str .= 'foreach ($allModels as $key => $aModel) {
                 ';
             $str .= '    if ($aModel->id == $model->id)
                 ';
             $str .= '        unset($allModels[$key]);
                 ';
             $str .= '}
                 ';
             $str .= "echo \$form->dropDownListControlGroup(\$model, '{$relation[0]}', CHtml::listData(\$allModels, '{$foreign_pk}', '{$foreign_identificationColumn}'){$prompt});\n";
             return $str;
         }
         //requires EActiveRecordRelationBehavior
         return "echo \$form->dropDownListControlGroup(\$model, '{$relation[0]}', CHtml::listData({$relation[3]}::model()->findAll(array('order'=>'{$foreign_identificationColumn}')),'{$foreign_pk}', '{$foreign_identificationColumn}'){$prompt})";
     } else {
         if (in_array(strtolower($column->dbType), $this->booleanTypes)) {
             return "echo \$form->checkBoxControlGroup(\$model,'{$column->name}')";
         }
         //if the column name looks like that of an image and if it's a string
         if (in_array(strtolower($column->name), $this->imageFields) && $column->type == 'string') {
             //find maximum length and size
             if (($size = $maxLength = $column->size) > 60) {
                 $size = 60;
             }
             //generate the textField
             $string = "echo \$form->textFieldControlGroup(\$model,'{$column->name}',array('size'=>{$size},'maxlength'=>{$maxLength}))";
             //also show the image and make it clickable if the field the something
             $string .= ";\nif (!empty(\$model->{$column->name})){ ?> <div class=\"right\"><a href=\"<?php echo \$model->{$column->name} ?>\" target=\"_blank\" title=\"<?php echo Awecms::generateFriendlyName('{$column->name}') ?>\"><img src=\"<?php echo \$model->{$column->name} ?>\"  alt=\"<?php echo Awecms::generateFriendlyName('{$column->name}') ?>\" title=\"<?php echo Awecms::generateFriendlyName('{$column->name}') ?>\"/></a></div><?php }";
             return $string;
         } else {
             if (strtolower($column->dbType) == 'longtext') {
                 return "\$this->widget('EMarkitupWidget', array(\n                        'model' => \$model,\n                        'attribute' => '{$column->name}',\n                        ));";
                 return "echo \$form->textAreaControlGroup(\$model,'{$column->name}',array('rows'=>6, 'cols'=>50))";
             } else {
                 if (stripos($column->dbType, 'text') !== false) {
                     return "echo \$form->textAreaControlGroup(\$model,'{$column->name}',array('rows'=>6, 'cols'=>50))";
                 } else {
                     if (substr(strtolower($column->dbType), 0, 4) == 'enum') {
                         $string = sprintf("echo \$form->dropDownListControlGroup(\$model, '%s', array(\n", $column->name);
                         $enum_values = explode(',', substr($column->dbType, 4, strlen($column->dbType) - 1));
                         foreach ($enum_values as $value) {
                             $value = trim($value, "()'");
                             $string .= "\t\t\t'{$value}' => Yii::t('app', '" . Awecms::generateFriendlyName($value) . "') ,\n";
                         }
                         $string .= '))';
                         return $string;
                     } else {
                         if (substr(strtolower($column->dbType), 0, 3) == 'set') {
                             $string = sprintf("echo CHtml::activeCheckBoxList(\$model, '%s', array(\n", $column->name);
                             $set_values = explode(',', substr($column->dbType, 4, strlen($column->dbType) - 1));
                             foreach ($set_values as $value) {
                                 $value = trim($value, "()'");
                                 $string .= "\t\t\t'{$value}' => Yii::t('app', '" . Awecms::generateFriendlyName($value) . "') ,\n";
                             }
                             $string .= '))';
                             return $string;
                         } else {
                             if (in_array(strtolower($column->dbType), $this->dateTypes)) {
                                 // $mode = strtolower(($column->dbType == 'timestamp') ? 'datetime' : $column->dbType);$model->isNewRecord? date('d/m/Y'):$model->desde,
                                 $mode = 'date';
                                 return "\n                   echo  \"<div class='control-group'>\";  \n                   echo \$form->labelEx(\$model,'{$column->name}',array('class'=>'control-label'));\n                   echo   \"<div class='controls'>\";\n \n                         \$this->widget('CJuiDateTimePicker',\n                         array(\n                            'model'=>\$model,\n                            'name'=>'{$modelClass}[{$column->name}]',\n                            'language'=> 'es',\n                            'value'=>\$model->isNewRecord? date('d/m/Y'):\$model->{$column->name},\n                            'mode' => '" . $mode . "',\n                            'options'=>array(\n                            'showAnim'=>'fold', // 'show' (the default), 'slideDown', 'fadeIn', 'fold'\n                            'showButtonPanel'=>false,\n                            'changeYear'=>true,\n                            'changeMonth'=>true,\n                            'dateFormat'=>'dd/mm/yy',\n                            ),\n                        )\n                    );\n                     echo \"</div></div>\"\n                   ";
                             } else {
                                 if (in_array(strtolower($column->name), $this->passwordFields)) {
                                     $inputField = 'passwordFieldControlGroup';
                                 } else {
                                     $inputField = 'textFieldControlGroup';
                                 }
                                 if ($column->type !== 'string' || $column->size === null) {
                                     return "echo \$form->{$inputField}(\$model,'{$column->name}')";
                                 } else {
                                     if (($size = $maxLength = $column->size) > 60) {
                                         $size = 60;
                                     }
                                     return "echo \$form->{$inputField}(\$model,'{$column->name}',array('size'=>{$size},'maxlength'=>{$maxLength}))";
                                 }
                             }
                         }
                     }
                 }
             }
         }
     }
 }
Exemple #5
0
<?php

$this->breadcrumbs = array('Settings', Yii::t('app', Awecms::generateFriendlyName($action)));
$this->menu = Settings::getCategoriesAsLinks($action);
echo CHtml::link('Add settings field', array('/settings/add/' . $action));
$this->widget('EDynamicForm', array('id' => 'id', 'class' => 'settings', 'model' => $settings, 'selector' => false));
Exemple #6
0
 public static function generatePairs($array)
 {
     $return = array();
     foreach ($array as $item) {
         $return[$item] = Awecms::generateFriendlyName($item);
     }
     return $return;
 }
Exemple #7
0
 public static function getCategoriesAsLinks($action = '')
 {
     //url isn't created for $action
     $settings = array();
     foreach (Settings::getCategories() as $settingsCategory) {
         $item = array();
         $item['label'] = Yii::t('app', Awecms::generateFriendlyName($settingsCategory)) . ' ' . Yii::t('app', 'Settings');
         if ($action != $settingsCategory) {
             $item['url'] = '/settings/' . $settingsCategory;
             if ($action) {
                 $item['url'] = Yii::app()->baseUrl . '/admin' . $item['url'];
             }
         }
         $settings[] = $item;
     }
     return $settings;
 }