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(); }
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; }
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; }
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}))"; } } } } } } } } }
<?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));
public static function generatePairs($array) { $return = array(); foreach ($array as $item) { $return[$item] = Awecms::generateFriendlyName($item); } return $return; }
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; }