예제 #1
0
 /**
  * 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 . '>&lt;text&gt;</option>';
         $selected = $inputType == 'hidden' ? ' selected="selected"' : '';
         echo '<option value="hidden"' . $selected . '>&lt;hidden&gt;</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);
 }
예제 #2
0
 /**
  * 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);
 }
예제 #3
0
 /**
  * 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);
 }
예제 #4
0
 /**
  * Adds AutoCode to the project.
  *
  * @param EcrProjectAutocode $autoCode The AutoCode
  *
  * @return void
  */
 public function addAutoCode(EcrProjectAutocode $autoCode)
 {
     $this->autoCodes[$autoCode->getKey()] = $autoCode;
 }
예제 #5
0
 /**
  * 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);
 }
예제 #6
0
 /**
  * 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);
 }
예제 #7
0
 /**
  * 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);
 }