/** * Open the AutoCode for edit. * * @param EcrProjectAutocode $AutoCode The AutoCode * * @return void */ public function edit(EcrProjectAutocode $AutoCode) { /* Array with required fields */ $requireds = array(); $requireds[] = EcrHtmlSelect::scope($this->scope); echo '<input type="hidden" name="element" value="' . $this->element . '" />'; /* Draws an input box for a name field */ $requireds[] = EcrHtmlSelect::name($this->element, jgettext('Table')); $tableFields = EcrTableHelper::getTableColumns($this->element); echo '<br />'; $key = $AutoCode->getKey() . '.row'; if (array_key_exists($key, $AutoCode->fields)) { $acFields = $AutoCode->fields[$key]; } else { $acFields = array(); } echo '<div style="background-color: #f3fbe6;">Header</div>'; echo '<table>'; echo '<tr>'; echo '<th>' . jgettext('Field') . '</th>'; echo '<th>' . jgettext('Label') . '</th>'; echo '<th>' . jgettext('Input type') . '</th>'; echo '</tr>'; foreach ($tableFields as $name => $tableField) { if (array_key_exists($name, $acFields)) { //-- Autocode present $label = $acFields[$name]->label; $inputType = $acFields[$name]->inputType; $width = $acFields[$name]->width; } else { //-- New field $label = $tableField->Field; $inputType = 'text'; $width = 0; } echo '<tr>'; echo '<th>'; echo $name; echo '</th>'; echo '<td>'; echo '<input type="text" name="field[' . $name . '][label]" value="' . $label . '" />'; echo '</td>'; echo '<td>'; echo '<select name="field[' . $name . '][input_type]">'; $selected = $inputType == 'text' ? ' selected="selected"' : ''; echo '<option value="text"' . $selected . '><text></option>'; $selected = $inputType == 'hidden' ? ' selected="selected"' : ''; echo '<option value="hidden"' . $selected . '><hidden></option>'; $selected = $inputType == 'category' ? ' selected="selected"' : ''; echo '<option value="category"' . $selected . '>Catergory select</option>'; echo '</select>'; echo '</td>'; echo '</tr>'; } //foreach echo '</table>'; /* Draws the submit button */ EcrHtmlButton::autoCode($requireds); }
/** * Inserts the AutoCode into the project. * * @param EcrProjectBase $project The project. * @param array $options Insert options. * @param EcrLogger $logger EcrLogger. * * @return boolean */ public function insert(EcrProjectBase $project, $options, EcrLogger $logger) { $input = JFactory::getApplication()->input; $table_name = $input->get('element'); $var_scope = $input->get('var_scope'); $element_scope = $input->get('element_scope'); if (!$table_name) { JFactory::getApplication()->enqueueMessage(jgettext('No table given'), 'error'); return false; } $db = JFactory::getDBO(); $prefix = $db->getPrefix(); $fields = $db->getTableFields($prefix . $table_name); $table_vars = ''; $autoCodeFields = array(); $reqFields = $input->get('field', array(), 'array'); if (count($fields)) { foreach ($fields[$prefix . $table_name] as $name => $type) { $reqField = $reqFields[$name]; if (isset($project->autoCodes[$this->key]->fields[$this->key . '.var'][$name])) { $field = $project->autoCodes[$this->key]->fields[$this->key . '.var'][$name]; $field->label = $reqField['label']; } else { $field = new EcrTableField(); $field->name = $name; $field->label = $name; $field->type = $type; } $autoCodeFields[] = $field; $adds = array($field->label); $table_vars .= EcrTableHelper::formatTableVar($name, $type, $adds, $var_scope); } //foreach } $AutoCode = new EcrProjectAutocode($this->group, $this->name, $table_name, $element_scope); $AutoCode->options = array(); $AutoCode->options['varscope'] = $var_scope; $AutoCode->fields[$AutoCode->getKey() . '.var'] = $autoCodeFields; $AutoCode->codes[$AutoCode->getKey() . '.var'] = $AutoCode->enclose($table_vars, $AutoCode->getKey() . '.var'); $project->addAutoCode($AutoCode); /* * Add substitutes * * Define keys that will be substitutes in the code */ $project->addSubstitute('ECR_SUBPACKAGE', 'Tables'); $project->addSubstitute('_ECR_TABLE_NAME_', $table_name); foreach ($AutoCode->codes as $key => $code) { $project->addSubstitute($key, $code); } //foreach /* Insert the part to your project and return the results */ return $project->insertPart($options, $logger); }
/** * Inserts the part into the project. * * @param EcrProjectBase $EasyProject The project. * @param array $options Insert options. * @param EcrLogger $logger The EcrLogger. * * @return boolean */ public function insert(EcrProjectBase $EasyProject, $options, EcrLogger $logger) { $input = JFactory::getApplication()->input; $this->_options = $options; $EasyProject->addSubstitute('ECR_SUBPACKAGE', 'Views'); $element_name = $input->get('element_name'); $table_name = $input->get('table_name'); $req_table_fields = $input->get('table_fields', array(), 'array'); $req_table_fields_types = $input->get('table_fields_types', array(), 'array'); if (!$table_name) { $table_name = $element_name; } if (!$table_name) { $table_name = $element_name; JFactory::getApplication()->enqueueMessage(jgettext('No table given'), 'error'); return false; } $table_name = strtolower($table_name); $db = JFactory::getDBO(); $prefix = $db->getPrefix(); $fields = $db->getTableFields($prefix . $table_name); $tableFields = array(); $table_vars = ''; if (count($fields)) { $tableFields = $fields[$prefix . $table_name]; } /* * Add substitutes */ $EasyProject->addSubstitute('ECR_ELEMENT_NAME', $element_name); $EasyProject->addSubstitute('_ECR_LOWER_ELEMENT_NAME_', strtolower($element_name)); $EasyProject->addSubstitute('_ECR_TABLE_NAME_', $table_name); /* * Add manual substitutes */ // $substitutes = array(); // foreach($this->patterns as $pKey => $pReplacement) // { // $substitutes[$pKey] = ''; // }//foreach $code = ''; $acFields = array(); foreach ($req_table_fields as $field) { $f = new stdClass(); $f->name = $field; $f->type = $req_table_fields_types[$field]; $code .= str_replace('_ECR_KEY_', $f->name, $this->fieldsOptions[$f->type]); $acFields[] = $f; // $acOptions[$field] = array(); // $acOptions[$field]['type'] = $req_table_fields_types[$field]; } //foreach // foreach($tableFields as $key => $value) // { // if( ! in_array($key, $req_table_fields)) { continue; } // // foreach($this->patterns as $pKey => $pReplacement) // { // $substitutes[$pKey] .= str_replace('##ECR_KEY##', $key, $pReplacement); // }//foreach // $i ++; // }//foreach /* $substitutes['##ECR_VIEW1_TMPL1_THS##'] .= ' <?php $coloumnCount += '.$i.'; ?>'.NL; */ $AutoCode = new EcrProjectAutocode($this->group, $this->name, $table_name, $this->_scope); // $AutoCode->group = $this->group; // $AutoCode->name = $this->name; // // $AutoCode->element = $table_name; // $AutoCode->scope = $this->_scope; $AutoCode->options = array(); //$acOptions; // foreach($substitutes as $key => $value) // { $key = '##ECR_OPTIONS##'; $AutoCode->fields[$key] = $acFields; //array(); $AutoCode->codes[$key] = $AutoCode->enclose($code, $key, true); $EasyProject->addSubstitute($key, $AutoCode->enclose($code, $key, true)); // } // foreach($substitutes as $key => $value) // { // $EcrProject->addSubstitute($key, $AutoCode->enclose($code, $key, true)); // } $EasyProject->addAutoCode($AutoCode, $this->key); return $EasyProject->insertPart($options, $logger); }
/** * Adds AutoCode to the project. * * @param EcrProjectAutocode $autoCode The AutoCode * * @return void */ public function addAutoCode(EcrProjectAutocode $autoCode) { $this->autoCodes[$autoCode->getKey()] = $autoCode; }
/** * Open the AutoCode for edit. * * @param EcrProjectAutocode $AutoCode The AutoCode * * @return void */ public function edit(EcrProjectAutocode $AutoCode) { JFactory::getApplication()->enqueueMessage(__METHOD__ . ' not finished', 'warning'); /* Array with required fields */ $requireds = array(); $requireds[] = EcrHtmlSelect::scope($this->scope); echo '<input type="hidden" name="element" value="' . $this->element . '" />'; /* Draws an input box for a name field */ $requireds[] = EcrHtmlSelect::name($this->element, jgettext('Table')); $tableFields = EcrTableHelper::getTableColumns($this->element); $elements = array('header', 'cell'); echo '<br />'; /* * Header */ $key = $AutoCode->getKey() . '.header'; if (array_key_exists($key, $AutoCode->fields)) { $acFields = $AutoCode->fields[$key]; } else { $acFields = array(); } echo '<div style="background-color: #f3fbe6;">Header</div>'; echo '<table>'; echo '<tr>'; echo '<th>' . jgettext('Field') . '</th>'; echo '<th>' . jgettext('Label') . '</th>'; echo '<th>' . jgettext('Display') . '</th>'; echo '<th>' . jgettext('Width') . '</th>'; echo '</tr>'; foreach ($tableFields as $name => $tableField) { if (array_key_exists($name, $acFields)) { //-- Autocode present $label = $acFields[$name]->label; $display = $acFields[$name]->display; $width = $acFields[$name]->width; } else { //-- New field $label = $tableField->Field; $display = 'on'; $width = 0; } echo '<tr>'; echo '<th>'; echo $name; echo '</th>'; echo '<td>'; echo '<input type="text" name="field[header][' . $name . '][label]" value="' . $label . '" />'; echo '</td>'; echo '<td>'; echo '<select name="field[header][' . $name . '][display]">'; $selected = $display == 'on' ? ' selected="selected"' : ''; echo '<option value="on"' . $selected . '>' . jgettext('On') . '</option>'; $selected = $display == 'off' ? ' selected="selected"' : ''; echo '<option value="off"' . $selected . '>' . jgettext('Off') . '</option>'; echo '</select>'; echo '</td>'; echo '<td>'; echo '<input type="text" name="field[header][' . $name . '][width]" value="' . $width . '" />'; echo '</td>'; echo '</tr>'; } //foreach echo '</table>'; /* * Cell */ $key = $AutoCode->getKey() . '.cell'; if (array_key_exists($key, $AutoCode->fields)) { $acFields = $AutoCode->fields[$key]; } else { $acFields = array(); } echo '<div style="background-color: #f3fbe6;">Cell</div>'; echo '<table>'; echo '<tr>'; echo '<th>' . jgettext('Field') . '</th>'; // echo '<th>'.jgettext('Label').'</th>'; echo '</tr>'; foreach ($tableFields as $name => $tableField) { if (array_key_exists($name, $acFields)) { //-- Autocode present $value = $acFields[$name]->label; } else { //-- New field $value = $tableField->Field; } echo '<tr>'; echo '<th>'; echo $name; echo '<input type="hidden" name="field[cell][' . $name . '][name]" value="' . $name . '" />'; echo '</th>'; echo '</tr>'; } //foreach echo '</table>'; /* Draws the submit button */ EcrHtmlButton::autoCode($requireds); }
/** * Inserts the part into the project. * * @param EcrProjectBase $EcrProject The project. * @param array $options Insert options. * @param EcrLogger $logger The EcrLogger. * * @return boolean */ public function insert(EcrProjectBase $EcrProject, $options, EcrLogger $logger) { $input = JFactory::getApplication()->input; $EcrProject->addSubstitute('ECR_SUBPACKAGE', 'Models'); $element_name = $input->get('element'); $element_scope = $input->get('element_scope'); $table_name = $input->get('table_name'); if (!$table_name) { $table_name = $element_name; } $req_table_fields = $input->get('table_fields', array(), 'array'); if (!$table_name) { JFactory::getApplication()->enqueueMessage(jgettext('No table given'), 'error'); return false; } $db = JFactory::getDBO(); $prefix = $db->getPrefix(); $fields = $db->getTableFields($prefix . $table_name); $tableFields = array(); $table_vars = ''; if (count($fields)) { $tableFields = $fields[$prefix . $table_name]; } /* * Add substitutes */ $EcrProject->addSubstitute('ECR_ELEMENT_NAME', $element_name); $EcrProject->addSubstitute('_ECR_LOWER_ELEMENT_NAME_', strtolower($element_name)); $EcrProject->addSubstitute('_ECR_TABLE_NAME_', $table_name); /* * Add manual substitutes */ $substitutes = array(); foreach ($this->patterns as $pKey => $pReplacement) { $substitutes[$pKey] = ''; } //foreach $i = 0; foreach ($tableFields as $key => $value) { if (!in_array($key, $req_table_fields)) { continue; } foreach ($this->patterns as $pKey => $pReplacement) { $substitutes[$pKey] .= str_replace('##ECR_KEY##', $key, $pReplacement); } //foreach $i++; } //foreach $substitutes['##ECR_VIEW1_TMPL1_THS##'] .= ' <?php $coloumnCount += ' . $i . '; ?>' . NL; $AutoCode = new EcrProjectAutocode($this->group, $this->name, $table_name, $element_scope); $AutoCode->options = array(); foreach ($substitutes as $key => $value) { $AutoCode->fields[$key] = $req_table_fields; //array();//$autoCodeFields; $AutoCode->codes[$key] = $AutoCode->enclose($value, $key, true); $EcrProject->addSubstitute($key, $AutoCode->enclose($value, $key, true)); } //foreach $EcrProject->addAutoCode($AutoCode, $this->key); return $EcrProject->insertPart($options, $logger); }
/** * Inserts the part into the project. * * @param EcrProjectBase $project The project. * @param array $options Insert options. * @param EcrLogger $logger The EcrLogger. * * @return boolean */ public function insert(EcrProjectBase $project, $options, EcrLogger $logger) { $input = JFactory::getApplication()->input; $table_name = $input->get('element'); $var_scope = $input->get('var_scope'); $element_scope = $input->get('element_scope'); if (!$table_name) { JFactory::getApplication()->enqueueMessage(jgettext('No table given'), 'error'); return false; } $db = JFactory::getDBO(); $prefix = $db->getPrefix(); $fields = $db->getTableFields($prefix . $table_name); $table_vars = ''; $autoCodeFields = array(); if (count($fields)) { foreach ($fields[$prefix . $table_name] as $key => $value) { $table_vars .= $this->formatTableVar($key, $value, array(), $var_scope); $autoCodeFields[] = $key; } //foreach } $AutoCode = new EcrProjectAutocode($this->group, $this->name, $table_name, $element_scope); $AutoCode->options = array(); $AutoCode->options['varScope'] = $var_scope; $AutoCode->fields['##ECR_TABLE_VARS##'] = array(); //$autoCodeFields; $AutoCode->codes['##ECR_TABLE_VARS##'] = $AutoCode->enclose($table_vars, '##ECR_TABLE_VARS##'); $AutoCode->fields['##ECR_FIELD_1##'] = array(); $AutoCode->codes['##ECR_FIELD_1##'] = $AutoCode->enclose($this->formatTableVar('db', 'Database object', array(), $var_scope), '##ECR_FIELD_1##'); $project->addAutoCode($AutoCode, $this->key); /* * Add substitutes * * Define keys that will be substitutes in the code */ $project->addSubstitute('ECR_SUBPACKAGE', 'Tables'); $project->addSubstitute('_ECR_TABLE_NAME_', $table_name); foreach ($AutoCode->codes as $key => $code) { $project->addSubstitute($key, $code); } //foreach /* Insert the part to your project and return the results */ return $project->insertPart($options, $logger); }