fantu
2008-12-21 cdda6b98d785f103d9be6643a99a882c0d65b64c
interface/lib/classes/tform_tpl_generator.inc.php
@@ -1,7 +1,7 @@
<?php
/*
Copyright (c) 2005, Till Brehm, projektfarm Gmbh
Copyright (c) 2007, Till Brehm, projektfarm Gmbh
All rights reserved.
Redistribution and use in source and binary forms, with or without modification,
@@ -28,81 +28,121 @@
EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
class tform_tpl_generator {
   
   function buildHTML($formDef,$tab) {
      
      global $app;
      
      $html = '<table width="500" border="0" cellspacing="0" cellpadding="2">';
      $module = $_SESSION["s"]["module"]["name"];
      $html = '<h2><tmpl_var name="list_head_txt"></h2>
<div class="panel panel_'.$formDef['name'].'">
  <div class="pnl_formsarea">
    <fieldset id="wf_area_'.$formDef['name'].'"><legend>'.$formDef['tabs'][$tab]['title'].'</legend>';
      $lang = array();
      
      foreach($formDef['tabs'][$tab]['fields'] as $key => $field) {
         switch ($field['formtype']) {
            case 'TEXT':
               $html .= "
  <tr>
    <td width=\"126\" class=\"frmText11\">{tmpl_var name='".$key."_txt'}:</td>
    <td width=\"366\" class=\"frmText11\"><input name=\"".$key."\" type=\"text\" class=\"text\" value=\"{tmpl_var name='".$key."'}\" size=\"".$field['width']."\" maxlength=\"".$field['maxlength']."\"></td>
  </tr>";
               $html .= "\r\n      <span class=\"wf_oneField\">
        <label for=\"".$key."\" class=\"wf_preField\">{tmpl_var name='".$key."_txt'}</label>
        <input type=\"text\" id=\"".$key."\" name=\"".$key."\" value=\"{tmpl_var name='".$key."'}\" size=\"".$field['width']."\" maxlength=\"".$field['maxlength']."\"";
          if ($field['required'] == true ) {
                 $html .= " class=\"wf_required\"><span class=\"wf_reqMark\">*</span><br />";
          } else {
                  $html .= ">";
          }
               $html .= "\r\n      </span>";
            break;
            case 'TEXTAREA':
               $html .= "
  <tr>
    <td width=\"126\" class=\"frmText11\">{tmpl_var name='".$key."_txt'}:</td>
    <td width=\"366\" class=\"frmText11\"><textarea name='$key' cols='".$field['cols']."' rows='".$field['rows']."'>{tmpl_var name='".$key."'}</textarea></td>
  </tr>";
               $html .= "\r\n      <span class=\"wf_oneField\">
        <label for=\"".$key."\" class=\"wf_preField\">{tmpl_var name='".$key."_txt'}</label>
        <textarea id=\"".$key."\" name=\"".$key."\" cols='".$field['cols']."' rows='".$field['rows']."'";
          if ($field['required'] == true ) {
                 $html .= " class=\"wf_required\">";
          } else {
                  $html .= ">";
          }
               $html .= "{tmpl_var name='".$key."'}</textarea>";
          if ($field['required'] == true ) {
                 $html .= "<span class=\"wf_reqMark\">*</span><br />";
          }
               $html .= "\r\n      </span>";
            break;
            case 'SELECT':
            $html .= "
  <tr>
    <td width=\"126\" class=\"frmText11\">{tmpl_var name='".$key."_txt'}:</td>
    <td width=\"366\" class=\"frmText11\">
      <select name=\"".$key."\" class=\"text\">
         {tmpl_var name='".$key."'}
      </select>
   </td>
  </tr>";
               $html .= "\r\n      <span class=\"wf_oneField\">
        <label for=\"".$key."\" class=\"wf_preField\">{tmpl_var name='".$key."_txt'}</label>
        <select id=\"".$key."\" name=\"".$key."\"";
          if ($field['required'] == true ) {
                 $html .= " class=\"wf_required\">";
          } else {
                  $html .= ">";
          }
               $html .= "{tmpl_var name='".$key."'}</select>";
          if ($field['required'] == true ) {
                 $html .= "<span class=\"wf_reqMark\">*</span><br />";
          }
               $html .= "\r\n      </span>";
            break;
            case 'MULTIPLE':
            $html .= "
  <tr>
    <td width=\"126\" class=\"frmText11\">{tmpl_var name='".$key."_txt'}:</td>
    <td width=\"366\" class=\"frmText11\">
      <select name=\"".$key."\" class=\"text\" size=\"".$field['rows']."\" multiple>
         {tmpl_var name='".$key."'}
      </select>
   </td>
  </tr>";
               $html .= "\r\n      <span class=\"wf_oneField\">
        <label for=\"".$key."\" class=\"wf_preField\">{tmpl_var name='".$key."_txt'}</label>
        <select multiple id=\"".$key."\" name=\"".$key."\"";
          if ($field['required'] == true ) {
                 $html .= " class=\"wf_required\">";
          } else {
                  $html .= ">";
          }
               $html .= "{tmpl_var name='".$key."'}</select>";
          if ($field['required'] == true ) {
                 $html .= "<span class=\"wf_reqMark\">*</span><br />";
          }
               $html .= "\r\n      </span>";
            break;
            case 'PASSWORD':
            $html .= "
  <tr>
    <td width=\"126\" class=\"frmText11\">{tmpl_var name='".$key."_txt'}:</td>
    <td width=\"366\" class=\"frmText11\"><input name=\"".$key."\" type=\"password\" class=\"text\" value=\"{tmpl_var name='".$key."'}\" size=\"".$field['width']."\" maxlength=\"".$field['maxlength']."\"></td>
  </tr>";
               $html .= "\r\n      <span class=\"wf_oneField\">
        <label for=\"".$key."\" class=\"wf_preField\">{tmpl_var name='".$key."_txt'}</label>
        <input type=\"password\" id=\"".$key."\" name=\"".$key."\" value=\"{tmpl_var name='".$key."'}\" size=\"".$field['width']."\" maxlength=\"".$field['maxlength']."\"";
          if ($field['required'] == true ) {
                 $html .= " class=\"wf_required\"><span class=\"wf_reqMark\">*</span><br />";
          } else {
                  $html .= ">";
          }
               $html .= "\r\n      </span>";
            break;
            case 'CHECKBOX':
            $html .= "
  <tr>
    <td width=\"126\" class=\"frmText11\">{tmpl_var name='".$key."_txt'}:</td>
    <td width=\"366\" class=\"frmText11\">{tmpl_var name='".$key."'}</td>
  </tr>";
               $html .= "\r\n      <span class=\"wf_oneField\">
        <label for=\"".$key."\" class=\"wf_preField\">{tmpl_var name='".$key."_txt'}</label>";
          if ($field['required'] == true ) {
                 $html .= "                    <span class=\"wf_required\">
                      {tmpl_var name='".$key."'}
                    </span>
                    <span class=\"wf_reqMark\">*</span><br />";
          } else {
                 $html .= "                    <span class=\"\">
                      {tmpl_var name='".$key."'}
                    </span>";
          }
          $html .= "\r\n      </span>";
            break;
            case 'CHECKBOXARRAY':
            $html .= "
  <tr>
    <td width=\"126\" class=\"frmText11\">{tmpl_var name='".$key."_txt'}:</td>
    <td width=\"366\" class=\"frmText11\">{tmpl_var name='".$key."'}</td>
  </tr>";
               $html .= "\r\n      <span class=\"wf_oneField\">
        <span class=\"wf_label wf_preField\">{tmpl_var name='".$key."_txt'}</span>";
                 $html .= "                    <fieldset>
                      {tmpl_var name='".$key."'}
                    </fieldset>";
            $html .= "\r\n      </span>";
            break;
            case 'RADIO':
            $html .= "
  <tr>
    <td width=\"126\" class=\"frmText11\">{tmpl_var name='".$key."_txt'}:</td>
    <td width=\"366\" class=\"frmText11\">{tmpl_var name='".$key."'}</td>
  </tr>";
               $html .= "      <span class=\"wf_oneField\">
        <span class=\"wf_label wf_preField\">{tmpl_var name='".$key."_txt'}</span>";
                 $html .= "                    <fieldset>
                      {tmpl_var name='".$key."'}
                    </fieldset>";
            $html .= "\r\n      </span>";
            break;
         }
         
@@ -110,30 +150,28 @@
         $lang[$key."_txt"] = $key;
         
         // language File Eintrag, für error-Text anlegen
         if($field["errmsg"] != '') {
         if(isset($field["errmsg"]) && $field["errmsg"] != '') {
            $errmsg = $field["errmsg"];
            $lang[$errmsg] = $errmsg;
         }
         
      }
      
      $html .= "  <tr>
    <td class=\"frmText11\">&nbsp;</td>
    <td class=\"frmText11\">&nbsp;</td>
  </tr>
  <tr>
    <td>&nbsp;</td>
    <td><input name=\"btn_save\" type=\"submit\" class=\"button\" value=\"{tmpl_var name='btn_save_txt'}\">
      <input name=\"btn_cancel\" type=\"button\" class=\"button\" value=\"{tmpl_var name='btn_cancel_txt'}\" onClick=\"self.location.href='".$formDef["list_default"]."';\">
    </td>
  </tr>";
      $lang['btn_save_txt'] = "Save";
      $lang['btn_cancel_txt'] = "Cancel";
      $html .= "\r\n</table>\r\n<input type=\"hidden\" name=\"id\" value=\"{tmpl_var name='id'}\">";
      $html .= "
    </fieldset>
    <input type=\"hidden\" name=\"id\" value=\"{tmpl_var name='id'}\">
    <div class=\"wf_actions buttons\">
      <button class=\"positive iconstxt icoPositive\" type=\"button\" value=\"{tmpl_var name='btn_save_txt'}\" onClick=\"submitForm('pageForm','".$module."/".$formDef["action"]."');\"><span>{tmpl_var name='btn_save_txt'}</span></button>
      <button class=\"negative iconstxt icoNegative\" type=\"button\" value=\"{tmpl_var name='btn_cancel_txt'}\" onClick=\"loadContent('".$module."/".$formDef["list_default"]."');\"><span>{tmpl_var name='btn_cancel_txt'}</span></button>
    </div>
  </div>
</div>
";
      // speichere Template
      if (!$handle = fopen($formDef['tabs'][$tab]['template'], 'w')) { 
           print "Cannot open file ($filename)"; 
@@ -145,9 +183,6 @@
         exit; 
      }
      fclose($handle);
      // speichere language Datei
      $this->lng_add($lang,$formDef);
      
      // überprüfe, ob es die Tabelle schon gibt,
      // ansonsten wird sie angelegt
@@ -163,7 +198,7 @@
                     'name'         => $formDef["db_table_idx"],
                     'type'         => 'int64',
                     'typeValue'      => '',
                     'defaultValue'   => '',
                     'defaultValue'   => false,
                     'notNull'      => true,
                     'autoInc'      => true,
                     'option'      => 'primary'
@@ -178,7 +213,7 @@
                        'name'         => 'sys_userid',
                        'type'         => 'int32',
                        'typeValue'      => '',
                        'defaultValue'   => '',
                        'defaultValue'   => '0',
                        'notNull'      => true
                     );
            $columns[] = $col;
@@ -186,7 +221,7 @@
                        'name'         => 'sys_groupid',
                        'type'         => 'int32',
                        'typeValue'      => '',
                        'defaultValue'   => '',
                        'defaultValue'   => '0',
                        'notNull'      => true
                     );
            $columns[] = $col;
@@ -194,7 +229,7 @@
                        'name'         => 'sys_perm_user',
                        'type'         => 'varchar',
                        'typeValue'      => '5',
                        'defaultValue'   => '',
                        'defaultValue'   => 'NULL',
                        'notNull'      => true
                     );
            $columns[] = $col;
@@ -202,7 +237,7 @@
                        'name'         => 'sys_perm_group',
                        'type'         => 'varchar',
                        'typeValue'      => '5',
                        'defaultValue'   => '',
                        'defaultValue'   => 'NULL',
                        'notNull'      => true
                     );
            $columns[] = $col;
@@ -210,7 +245,7 @@
                        'name'         => 'sys_perm_other',
                        'type'         => 'varchar',
                        'typeValue'      => '5',
                        'defaultValue'   => '',
                        'defaultValue'   => 'NULL',
                        'notNull'      => true
                     );
            $columns[] = $col;
@@ -237,26 +272,33 @@
                  case 'INTEGER':
                     $type = 'int32';
                     $typevalue = '';
                     $defaultValue   = ($field["default"] != '')?$field["default"]:'0';
                  break;
                  case 'DOUBLE':
                     $type = 'double';
                     $typevalue = '';
                     $defaultValue   = ($field["default"] != '')?$field["default"]:'0';
                  break;
                  case 'CURRENCY':
                     $type = 'double';
                     $typevalue = '';
                     $defaultValue   = ($field["default"] != '')?$field["default"]:'0';
                  break;
                  case 'VARCHAR':
                     $type = 'varchar';
                     $typeValue = ($field["maxlength"] > 0 and $field["maxlength"] <= 256)?$field["maxlength"]:255;
                     // $defaultValue   = ($field["default"] != '')?$field["default"]:'NOT NULL';
                     $defaultValue   = ($field["default"] != '')?$field["default"]:'NULL';
                  break;
                  case 'TEXT':
                     $type = 'text';
                     $typevalue = '';
                     $defaultValue = 'NULL';
                  break;
                  case 'DATE':
                     $type = 'int64';
                     $typevalue = '';
                     $defaultValue   = ($field["default"] != '')?$field["default"]:'0';
                  break;
               }
               
@@ -265,7 +307,7 @@
                           'name'         => $name,
                           'type'         => $type,
                           'typeValue'      => $typeValue,
                           'defaultValue'   => $field["default"],
                           'defaultValue'   => $defaultValue,
                           'notNull'      => true
                           );
               
@@ -278,30 +320,6 @@
      }
    }
   
   function lng_add($lang,$formDef) {
      global $go_api, $go_info;
      $lng_file = "lib/lang/en_".$formDef['name'].".lng";
      if(is_file($lng_file)) {
         include($lng_file);
      } else {
         $wb = array();
      }
      $wb_out = array_merge($wb,$lang);
      if(is_array($wb_out)) {
         $fp = fopen ($lng_file, "w");
         fwrite($fp,"<?php\r\n");
         foreach($wb_out as $key => $val) {
            $new_line = '$wb["'.$key.'"] = '."'$val';\r\n";
            fwrite($fp,$new_line);
         }
         fwrite($fp,"?>");
         fclose($fp);
      }
   }
}
?>