create.html.php 9.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261
  1. <?php
  2. /**
  3. * The create view file of flow module of ZDOO.
  4. *
  5. * @copyright Copyright 2009-2016 禅道软件(青岛)有限公司(ZenTao Software (Qingdao) Co., Ltd. www.cnezsoft.com)
  6. * @license 商业软件,非开源软件
  7. * @author Gang Liu <liugang@cnezsoft.com>
  8. * @package flow
  9. * @version $Id$
  10. * @link http://www.zdoo.com
  11. */
  12. ?>
  13. <?php include 'header.html.php';?>
  14. <?php include '../../common/view/picker.html.php';?>
  15. <?php if(!empty($this->config->flow->editor->create)) include $app->getModuleRoot() . 'common/view/kindeditor.html.php';?>
  16. <?php js::set('moduleName', $flow->module);?>
  17. <?php js::set('action', $action->action);?>
  18. <div class='panel'>
  19. <div class='panel-heading'>
  20. <strong><?php echo str_replace('-', '', $title);?></strong>
  21. </div>
  22. <div class='panel-body'>
  23. <form id='ajaxForm' method='post' enctype='multipart/form-data' action='<?php echo $actionURL;?>'>
  24. <table class='table table-form'>
  25. <?php $hasChildFields = false;?>
  26. <?php $hasPrevField = false;?>
  27. <?php foreach($fields as $field):?>
  28. <?php
  29. if(!$field->show) continue;
  30. $width = ($field->width && $field->width != 'auto' ? $field->width . 'px' : 'auto');
  31. $value = $field->defaultValue;
  32. if($field->field == $prevField)
  33. {
  34. $hasPrevField = true;
  35. $value = $prevDataID;
  36. }
  37. ?>
  38. <?php /* Print files. */ ?>
  39. <?php if($field->control == 'file'):?>
  40. <tr class='field-row'>
  41. <th class='w-100px'><?php echo $field->name;?></th>
  42. <td>
  43. <?php $fileField = "files{$field->field}";?>
  44. <?php $labelsName = "labels{$field->field}";?>
  45. <?php echo $this->fetch('file', 'buildOldForm', "fileCount=1&percent=0.9&filesName={$fileField}&labelsName={$labelsName}");?>
  46. </td>
  47. <td></td>
  48. </tr>
  49. <?php /* Print mailto. */ ?>
  50. <?php elseif($field->field == 'mailto'):?>
  51. <tr class='field-row'>
  52. <th class='w-100px'><?php echo $field->name;?></th>
  53. <td>
  54. <div class='input-group'>
  55. <?php echo html::select('mailto[]', $users, $value, "class='form-control chosen' data-placeholder='{$lang->chooseUserToMail}' multiple");?>
  56. <?php echo $this->fetch('my', 'buildContactLists');?>
  57. </div>
  58. </td>
  59. <td class='text-important'><?php echo $lang->flow->tips->notice;?></td>
  60. </tr>
  61. <?php /* Print sub tables. */ ?>
  62. <?php elseif(isset($childFields[$field->field])):?>
  63. <?php $hasChildFields = true;?>
  64. <tr class='field-row'>
  65. <th><?php echo $field->name;?></th>
  66. <td colspan='2' class='child'>
  67. <table class='table table-form table-child' data-child='<?php echo $field->field;?>' id='<?php echo $field->field;?>' style='width: <?php echo $width;?>'>
  68. <?php /* Add a empty row of sub table. */ ?>
  69. <tr>
  70. <?php foreach($childFields[$field->field] as $childField):?>
  71. <?php if(!$childField->show) continue;?>
  72. <?php $childWidth = ($childField->width && $childField->width != 'auto' ? $childField->width . 'px' : 'auto');?>
  73. <?php $childValue = $childField->defaultValue;?>
  74. <td style='width: <?php echo $childWidth;?>'>
  75. <?php
  76. if($field->readonly or $childField->readonly)
  77. {
  78. if($childField->control == 'multi-select' or $childField->control == 'checkbox')
  79. {
  80. $childValues = explode(',', $childValue);
  81. foreach($childValues as $childV)
  82. {
  83. if(in_array($childV, $this->config->flow->variables)) $childV = $this->loadModel('workflowhook')->getParamRealValue($childV);
  84. echo zget($childField->options, $childV, '') . ' ';
  85. }
  86. }
  87. else
  88. {
  89. echo zget($childField->options, $childValue);
  90. }
  91. echo html::hidden("children[$field->field][$childField->field][1]", $childValue);
  92. }
  93. else
  94. {
  95. $element = "children[$field->field][$childField->field][1]";
  96. echo $this->flow->buildControl($childField, $childValue, $element, $field->field);
  97. }
  98. ?>
  99. </td>
  100. <?php endforeach;?>
  101. <td class='w-100px'>
  102. <?php echo html::hidden("children[{$field->field}][id][1]");?>
  103. <a href='javascript:;' class='btn btn-default addItem'><i class='icon-plus'></i></a>
  104. <a href='javascript:;' class='btn btn-default delItem'><i class='icon-close'></i></a>
  105. </td>
  106. </tr>
  107. </table>
  108. </td>
  109. </tr>
  110. <?php /* Print other fields. */ ?>
  111. <?php else:?>
  112. <?php
  113. $attr = "class='field-row'";
  114. $relation = zget($relations, $field->field, '');
  115. if($relation && strpos(",$relation->actions,", ',many2one,') === false)
  116. {
  117. $attr = "class='field-row prevTR' data-prev='{$relation->prev}' data-next='{$relation->next}' data-action='$action->action' data-field='{$relation->field}' data-dataID='$prevDataID'";
  118. }
  119. ?>
  120. <tr <?php echo $attr;?>>
  121. <th class='w-100px'><?php echo $field->name;?></th>
  122. <td>
  123. <div style='width: <?php echo $width;?>'>
  124. <?php
  125. if($field->readonly)
  126. {
  127. if($field->control == 'multi-select' or $field->control == 'checkbox')
  128. {
  129. $values = explode(',', $value);
  130. foreach($values as $v)
  131. {
  132. if(in_array($v, $this->config->flow->variables)) $v = $this->loadModel('workflowhook')->getParamRealValue($v);
  133. echo zget($field->options, $v, '') . ' ';
  134. }
  135. }
  136. else
  137. {
  138. if(in_array($value, $this->config->flow->variables)) $value = $this->loadModel('workflowhook', 'flow')->getParamRealValue($value, 'control');
  139. echo zget($field->options, $value);
  140. }
  141. echo html::hidden($field->field, $value);
  142. }
  143. else
  144. {
  145. echo $this->flow->buildControl($field, $value);
  146. }
  147. ?>
  148. </div>
  149. </td>
  150. <td></td>
  151. </tr>
  152. <?php endif;?>
  153. <?php endforeach;?>
  154. <tr>
  155. <th></th>
  156. <td class='form-actions'>
  157. <?php if($prevField && !$hasPrevField) echo html::hidden($prevField, is_array($prevDataID) ? implode(',', $prevDataID) : $prevDataID);?>
  158. <?php echo html::submitButton();?>
  159. <?php echo html::backButton();?>
  160. </td>
  161. </tr>
  162. </table>
  163. </form>
  164. </div>
  165. </div>
  166. <?php js::set('childKey', 2);?>
  167. <?php if($formulaScript) echo $formulaScript;?>
  168. <?php if($linkageScript) echo $linkageScript;?>
  169. <?php /* The table below is used to generate dom when click plus button. */?>
  170. <?php if($hasChildFields)
  171. {
  172. $itemRows = array();
  173. foreach($childFields as $childModule => $moduleFields)
  174. {
  175. $itemRow = '<tr class="field-row">';
  176. foreach($moduleFields as $childField)
  177. {
  178. if(!$childField->show) continue;
  179. $element = "children[$childModule][$childField->field][KEY]";
  180. $childWidth = ($childField->width && $childField->width != 'auto' ? $childField->width . 'px' : 'auto');
  181. $itemRow .= "<td style='width: {$childWidth}'>";
  182. $itemRow .= $this->flow->buildControl($childField, $childField->defaultValue, $element, $childModule);
  183. $itemRow .= '</td>';
  184. }
  185. $itemRow .= "<td class='w-100px'>";
  186. $itemRow .= html::hidden("children[$childModule][id][KEY]");
  187. $itemRow .= "<a href='javascript:;' class='btn btn-default addItem'><i class='icon-plus'></i></a> ";
  188. $itemRow .= "<a href='javascript:;' class='btn btn-default delItem'><i class='icon-close'></i></a>";
  189. $itemRow .= '</td>';
  190. $itemRow .= '</tr>';
  191. $itemRows[$childModule] = $itemRow;
  192. }
  193. js::set('itemRows', $itemRows);
  194. }
  195. ?>
  196. <script>
  197. $(document).on('click', 'td.child .addItem', function()
  198. {
  199. var child = $(this).parents('table').data('child');
  200. $(this).closest('tr').after(itemRows[child].replace(/KEY/g, childKey));
  201. initSelect($(this).closest('tr').next().find('.picker-select'));
  202. $(this).closest('tr').next().find('.form-date').datetimepicker(
  203. {
  204. language: config.clientLang,
  205. weekStart: 1,
  206. todayBtn: 1,
  207. autoclose: 1,
  208. todayHighlight: 1,
  209. startView: 2,
  210. minView: 2,
  211. forceParse: 0,
  212. format: 'yyyy-mm-dd'
  213. });
  214. $(this).closest('tr').next().find('.form-datetime').datetimepicker(
  215. {
  216. language: config.clientLang,
  217. weekStart: 1,
  218. todayBtn: 1,
  219. autoclose: 1,
  220. todayHighlight: 1,
  221. startView: 2,
  222. forceParse: 0,
  223. showMeridian: 1,
  224. format: 'yyyy-mm-dd hh:ii'
  225. });
  226. childKey++;
  227. });
  228. $(document).on('click', 'td.child .delItem', function()
  229. {
  230. if($(this).parents('.table-child').find('tr').size() > 1)
  231. {
  232. $(this).closest('tr').remove();
  233. }
  234. else
  235. {
  236. $(this).closest('tr').find('input,select,textarea').val('');
  237. }
  238. })
  239. </script>
  240. <script>
  241. <?php helper::import('../js/search.js');?>
  242. </script>
  243. <?php include 'footer.html.php';?>