public function render() { $tableDefinition = $this->getObject('tableDefinition'); //$tableName = $tableDefinition->getName(); $tablePhpName = $tableDefinition->getPhpName(); $this->addVariable('tablePhpName', $tablePhpName); $tableQueryClass = $tableDefinition->getPhpName() . 'Query'; $this->addVariable('tableQueryClass', $tableQueryClass); $tablePeerClass = $tableDefinition->getPhpName() . 'Peer'; $this->addVariable('tablePeerClass', $tablePeerClass); $tableFormClassName = $this->provider->_getFormClassName($tableDefinition->getPhpName()); $this->addVariable('tableFormClassName', $tableFormClassName); $controllerName = $this->getVariable('controllerNamePrefix') . $this->getVariable('baseName') . 'Controller'; $this->addVariable('controllerName', $controllerName); $formInclude = 'modules/' . $this->getVariable('moduleName') . '/forms/Edit' . $tableDefinition->getPhpName() . '.php'; $this->addVariable('formInclude', $formInclude); //{$this->_controllerNamePrefix} //{$baseName} //$this->addVariable('VAR_searchableFields', $searchableFields); //$this->addVariable('VAR_headers', $headers); //$this->addVariable('VAR_fields', $rowFields); return parent::render(); }
public function render() { /** @var $tableDefinition TableMap */ $tableDefinition = $this->getObject('tableDefinition'); //$tableName = $tableDefinition->getName(); $tablePhpName = $tableDefinition->getPhpName(); $this->addVariable('tablePhpName', $tablePhpName); $tableQueryClass = $tableDefinition->getPhpName() . 'Query'; $this->addVariable('tableQueryClass', $tableQueryClass); $tablePeerClass = $tableDefinition->getPhpName() . 'Peer'; $this->addVariable('tablePeerClass', $tablePeerClass); $tableFormClassName = $this->provider->_getFormClassName($tableDefinition->getPhpName()); $this->addVariable('tableFormClassName', $tableFormClassName); $fields = array(); $fieldNames = array(); /** @var $field ColumnMap */ foreach ($tableDefinition->getColumns() as $field) { $fieldNames[] = $field->getName(); $addedCode = null; $fieldType = null; $referenceTableClass = null; $fieldConfigs = array(); $validators = array(); $filters = array(); if ($field->isForeignKey()) { $referenceTable = $field->getRelatedTable(); $fieldType = 'select'; $baseClass = $referenceTable->getPhpName(); $referenceTableClass = $baseClass; } if ($field->isPrimaryKey()) { $fieldType = 'hidden'; $fieldsConfigs[] = '->setAttrib("class", "hidden-input")'; } elseif ($referenceTableClass) { $fieldConfigs[] = "->setLabel('" . $field->getPhpName() . "')"; $fieldConfigs[] = '->setMultiOptions(array("" => "- - Select - -") + Dfi_Propel_Adapter_Options::get(\'' . $baseClass . '\'))'; if ($field->isNotNull()) { $fieldConfigs[] = '->setRequired(true)'; } $fieldsConfigs[] = '->setAttrib("class", "element-input")'; } else { $fieldConfigs[] = "->setLabel('" . $field->getPhpName() . "')"; // base on the type and type arguments, add corresponding validators and filters switch (strtolower($field->getType())) { case 'set': case 'enum': /** * For example, ENUM('Male', 'Female') would be converted to * * ->setMultiOptions(array("Male" => "Male", "Female" => "Female")) */ $numericOptions = eval("return array({$field['type_arguments']});"); $assocOptions = array(); foreach ($numericOptions as $option) { $option = str_replace("'", "\\'", $option); $assocOptions[] = "'{$option}' => '{$option}'"; } $array = 'array(' . implode(',', $assocOptions) . ')'; $fieldType = 'radio'; $fieldConfigs[] = '->setMultiOptions(' . $array . ')'; $validators[] = "new Zend_Validate_InArray(array('haystack' => {$array}))"; $fieldConfigs[] = '->setSeparator(" ")'; break; case 'tinytext': case 'mediumtext': case 'text': case 'longtext': $fieldType = 'textarea'; $filters[] = 'new Zend_Filter_StringTrim()'; break; case 'tinyint': case 'mediumint': case 'int': case 'integer': case 'year': $fieldType = 'text'; $filters[] = 'new Zend_Filter_StringTrim()'; $validators[] = 'new Zend_Validate_Int()'; break; case 'decimal': case 'float': case 'double': case 'bigint': $fieldType = 'text'; $filters[] = 'new Zend_Filter_StringTrim()'; $validators[] = 'new Zend_Validate_Float()'; break; case 'varchar': case 'char': $validators[] = 'new Zend_Validate_StringLength(array("max" => ' . $field->getSize() . '))'; $fieldType = 'password' == $field->getType() ? 'password' : 'text'; $filters[] = 'new Zend_Filter_StringTrim()'; $fieldConfigs[] = '->setAttrib("maxlength", ' . $field->getSize() . ')'; if ('email' === strtolower($field->getName()) || 'emailaddress' === strtolower($field->getName())) { $validators[] = 'new Zend_Validate_EmailAddress()'; } break; case 'bit': case 'date': case 'datetime': case 'time': case 'timestamp': default: $fieldType = 'text'; $filters[] = 'new Zend_Filter_StringTrim()'; if ('datetime' == $field->getType() || 'timestamp' == $field->getType()) { $fieldConfigs[] = '->setValue(date("Y-m-d H:i:s"))'; } elseif ('date' == $field->getType()) { $fieldConfigs[] = '->setValue(date("Y-m-d"))'; } elseif ('time' == $field->getType()) { $fieldConfigs[] = '->setValue(date("H:i:s"))'; } break; } if ($field->isNotNull()) { $fieldConfigs[] = '->setRequired(true)'; } $fieldsConfigs[] = '->setAttrib("class", "element-input")'; } if ($field->getDefaultValue()) { $fieldConfigs[] = '->setValue("' . str_replace('"', '\\"', $field->getDefaultValue()) . '")'; } foreach ($validators as $validator) { $fieldConfigs[] = '->addValidator(' . $validator . ')'; } foreach ($filters as $filter) { $fieldConfigs[] = '->addFilter(' . $filter . ')'; } $fieldConfigs = $this->formatLineArray($fieldConfigs); $fieldCode = array('$this->addElement(', '$this->createElement(\'' . $fieldType . '\', \'' . $field->getName() . '\')', $fieldConfigs, ');'); if ($addedCode) { $fieldCode = array_unshift($fieldCode, $addedCode); } $fields[] = $this->formatLineArray($fieldCode); } $buttonDecorators = ''; $fields[] = $this->formatLineArray(array('$this->addElement(', '$this->createElement(\'button\', \'submit\')', '->setLabel(\'Save\')', '->setAttrib(\'type\', \'submit\')' . $buttonDecorators, ');')); $fields[] = $this->formatLineArray(array('$this->addElement(', '$this->createElement(\'button\', \'cancel\')', '->setLabel(\'Cancel\')', '->setAttrib(\'type\', \'submit\')' . $buttonDecorators, ');')); $fields = implode("\n\n", $fields); $fieldNames[] = 'submit'; $fieldNames[] = 'cancel'; $this->addVariable('fields', $fields); $this->addVariable('fieldNames', preg_replace('/\\n/', '', var_export($fieldNames, true))); parent::render(); }
public function render() { /** @var $tableDefinition TableMap */ $tableDefinition = $this->getObject('tableDefinition'); $searchableFields = array('all' => 'All'); $rowFields = array('<td align="center"><input class="checkbox" type="checkbox" name="del_id[]" value="<?= $model->get' . $tableDefinition->getPrimaryKeys()[0]->getPhpName() . '(); ?>" /></td>'); $headers = array('<th><input class="checkbox" type="checkbox" onchange="toggleCheckboxes(this);" /></th>'); /** @var $field ColumnMap */ foreach ($tableDefinition->getColumns() as $field) { $columnFilters = ''; $renderedFieldData = array('echo $model->get' . $field->getPhpName() . '();'); if (('CHAR' === substr($field->getType(), -4) || 'TEXT' === substr($field->getType(), -4)) && 'PASSWORD' !== $field->getName()) { $searchableFields[$field->getName()] = $field->getPhpName(); } if ('ENUM' == $field->getType() || 'SET' == $field->getType()) { $optionsCode = array('' => '- - Change - -'); $options = preg_split('#\\s*,\\s*#', $field->getSize()); foreach ($options as $option) { $option = trim($option, "'"); $optionsCode[$option] = $option; } $optionsCode = preg_replace('/\\n/', ' ', var_export($optionsCode, true)); $columnFilters = '<?= $this->formSelect(\'' . $field->getName() . '\', $this->param' . $field->getName() . ', array(\'onchange\' => \'updateFilters(\'' . $field->getName() . '\', this.options[this.selectedIndex].value)\'), ' . $optionsCode . '); ?>'; } elseif (isset($tableDefinition->getForeignKeys()[$field->getName()])) { /** @var $referenceData RelationMap */ $referenceData = $tableDefinition->relationsFK[$field->getName()]; $refTableName = $referenceData->getForeignTable()->getName(); /** @var $refTableDefinition TableMap */ $refTableDefinition = $this->getObject('tables')[$refTableName]; $columnFilters = '<?= $this->formSelect(\'' . $field->getName() . '\', $this->param' . $field->getName() . ', array(\'class\'=>\'form-control\',\'onchange\' => \'updateFilters(\\\'' . $field->getName() . '\\\', this.options[this.selectedIndex].value)\'), array(\'\' => \'- - Change - -\') + Dfi_Propel_Adapter_Options::get(\'' . $refTableDefinition->getPhpName() . '\'));?>'; if ($referenceData->getType() == RelationMap::MANY_TO_ONE) { $renderedFieldData = array('$linkedRow = $model->get' . $referenceData->getName() . '();'); } elseif ($referenceData->getType() == RelationMap::ONE_TO_MANY) { $renderedFieldData = array('$linkedRow = $model->get' . $refTableDefinition->getPhpName() . 'RelatedBy' . $referenceData->getLocalColumns()[0]->getPhpname() . '();'); } else { throw new Exception('relation not nknown'); } $renderedFieldData[] = 'if ($linkedRow) {'; $renderedFieldData[] = 'echo $linkedRow->get' . $refTableDefinition->autoLabel->getPhpName() . '();'; $renderedFieldData[] = '} else {'; $renderedFieldData[] = 'echo $model->get' . $field->getPhpName() . '(). ($model->get' . $field->getPhpName() . '() ? \' (unlinked)\' : \'\');'; $renderedFieldData[] = '}'; } $tmp = array('<th<?= (\'' . $field->getName() . '\' == $this->sortField ? \' class="sort-field sort-\'.htmlspecialchars($this->param_so). \'"\':\'\'); ?>>'); $tmp[] = '<a href="<?= $this->url($_GET + array(\'_sf\' => \'' . $field->getName() . '\', \'_so\' => \'asc\')); ?>"><i class=\'glyphicon glyphicon-arrow-up\'></i></a>'; $tmp[] = $field->getPhpName(); $tmp[] = '<a href="<?= $this->url($_GET + array(\'_sf\' => \'' . $field->getName() . '\', \'_so\' => \'desc\')); ?>"><i class=\'glyphicon glyphicon-arrow-down\'></i></a>'; $tmp[] = $columnFilters; $tmp[] = '</th>'; $headers[] = $this->formatLineArray($tmp); $align = ('INTEGER' == $field->getType() || 'FLOAT' == $field->getType()) && !isset($tableDefinition->getForeignKeys()[$field->getName()]) ? ' align="right"' : ''; if ('TEXT' == $field->getType() || 'MEDIUMTEXT' == $field->getType() || 'LONGTEXT' == $field->getType() || 'TINYTEXT' == $field->getType()) { $rowFields[] = '<td' . $align . '><?= mb_substr($model->get' . $field->getPhpName() . '(), 0, 100), \'...\'; ?></td>'; } else { $rowFields[] = '<td' . $align . '><? ' . $this->formatLineArray($renderedFieldData) . ' ?></td>'; } } $headers[] = '<th>Actions</th>'; $tmp = array('<td align="center"><a class="btn btn-info btn-xs" href="<?= $this->url(array_merge(' . $this->getVariable('routeParams') . ', array(\'action\' => \'update\', \'id\' => $model->get' . $tableDefinition->getPrimaryKeys()[0]->getPhpName() . '())), null, true); ?>"><i class="glyphicon glyphicon-pencil"></i> Edit</a>'); $tmp[] = '<a class="btn btn-danger btn-xs" onclick="return confirm(\'Confirm deletion!\');" href="<?= $this->url(array_merge(' . $this->getVariable('routeParams') . ', array(\'action\' => \'delete\', \'del_id\' =>$model->get' . $tableDefinition->getPrimaryKeys()[0]->getPhpName() . '())), null, true); ?>"><i class="glyphicon glyphicon-trash"></i> Delete</a></td>'; $rowFields[] = $this->formatLineArray($tmp, 4); array_unshift($headers, '<tr>'); array_push($headers, '</tr>'); $headers = $this->formatLineArray($headers, 3); array_unshift($rowFields, '<tr>'); array_push($rowFields, '</tr>'); $rowFields = $this->formatLineArray($rowFields, 3); $searchableFields = preg_replace('/\\n/', ' ', var_export($searchableFields, true)); $this->addVariable('searchableFields', $searchableFields); $this->addVariable('headers', $headers); $this->addVariable('fields', $rowFields); $tablePhpName = $tableDefinition->getPhpName(); $this->addVariable('tablePhpName', $tablePhpName); return parent::render(); }
public function render() { $this->addVariable('controllerNamePrefixIndexController', $this->getVariable('controllerNamePrefix') . 'IndexController'); return parent::render(); }
public function render() { $this->addVariable('className', 'application_BaseController'); return parent::render(); }