batchcreatetask.html.php 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321
  1. <?php
  2. /**
  3. * The batch create view of task module of ZenTaoPMS.
  4. *
  5. * @copyright Copyright 2009-2015 禅道软件(青岛)有限公司(ZenTao Software (Qingdao) Co., Ltd. www.cnezsoft.com)
  6. * @license ZPL(http://zpl.pub/page/zplv12.html) or AGPL(https://www.gnu.org/licenses/agpl-3.0.en.html)
  7. * @author Yangyang Shi <shiyangyang@cnezsoft.com>
  8. * @package task
  9. * @version $Id$
  10. * @link http://www.zentao.net
  11. */
  12. ?>
  13. <?php include $app->getModuleRoot() . 'common/view/header.html.php';?>
  14. <?php include $app->getModuleRoot() . 'common/view/datepicker.html.php';?>
  15. <?php js::set('taskConsumed', $taskConsumed);?>
  16. <?php js::set('addChildTask', $lang->task->addChildTask);?>
  17. <?php js::set('isonlybody', isonlybody())?>
  18. <?php js::set('requiredFields', $config->task->create->requiredFields);?>
  19. <?php
  20. $visibleFields = array();
  21. $requiredFields = array();
  22. foreach(explode(',', $showFields) as $field)
  23. {
  24. if($field) $visibleFields[$field] = '';
  25. }
  26. foreach(explode(',', $config->task->create->requiredFields) as $field)
  27. {
  28. if($field)
  29. {
  30. $requiredFields[$field] = '';
  31. if(strpos(",{$config->marketresearch->task->customBatchCreateFields},", ",{$field},") !== false) $visibleFields[$field] = '';
  32. }
  33. }
  34. $colspan = count($visibleFields) + 3;
  35. ?>
  36. <?php js::set('showFields', $showFields);?>
  37. <div id="mainContent" class="main-content fade">
  38. <div class="main-header clearfix">
  39. <h2 class="pull-left">
  40. <?php if($parent):?>
  41. <span class='pull-left'><?php echo $parentTitle . $this->lang->hyphen;?></span>
  42. <?php echo $lang->task->batchCreateChildren;?>
  43. <?php else:?>
  44. <?php echo $lang->task->batchCreate;?>
  45. <?php endif;?>
  46. </h2>
  47. <div class="pull-right btn-toolbar">
  48. <button type='button' data-toggle='modal' data-target="#importLinesModal" class="btn btn-primary"><?php echo $lang->pasteText;?></button>
  49. <?php if(isonlybody()):?>
  50. <div class="divider"></div>
  51. <button id="closeModal" type="button" class="btn btn-link" data-dismiss="modal"><i class="icon icon-close"></i></button>
  52. <?php endif;?>
  53. </div>
  54. </div>
  55. <form method='post' class='batch-actions-form' target='hiddenwin' enctype='multipart/form-data' id="batchCreateForm">
  56. <div class="table-responsive">
  57. <table class="table table-form" id="tableBody">
  58. <thead>
  59. <tr>
  60. <th class='c-id'><?php echo $lang->idAB;?></th>
  61. <th class='c-name required has-btn'><?php echo $lang->task->name;?></span></th>
  62. <th class='c-assigned<?php echo zget($visibleFields, 'assignedTo', ' hidden') . zget($requiredFields, 'assignedTo', '', ' required');?> assignedToBox'><?php echo $lang->task->assignedTo;?></th>
  63. <th class='c-estimate<?php echo zget($visibleFields, 'estimate', ' hidden') . zget($requiredFields, 'estimate', '', ' required');?> estimateBox'><?php echo $lang->task->estimateAB;?></th>
  64. <th class='c-date<?php echo zget($visibleFields, 'estStarted', ' hidden') . zget($requiredFields, 'estStarted', '', ' required');?> estStartedBox'><?php echo $lang->task->estStarted;?></th>
  65. <th class='c-date<?php echo zget($visibleFields, 'deadline', ' hidden') . zget($requiredFields, 'deadline', '', ' required');?> deadlineBox'><?php echo $lang->task->deadline;?></th>
  66. <th class='c-desc<?php echo zget($visibleFields, 'desc', ' hidden') . zget($requiredFields, 'desc', '', ' required');?> descBox'><?php echo $lang->task->desc;?></th>
  67. <th class='c-pri<?php echo zget($visibleFields, 'pri', ' hidden') . zget($requiredFields, 'pri', '', ' required');?> priBox'><?php echo $lang->task->pri;?></th>
  68. <th class='c-actions'><?php echo $lang->actions;?></th>
  69. </tr>
  70. </thead>
  71. <tbody>
  72. <?php
  73. $members['ditto'] = $lang->task->ditto;
  74. $colspan = $colspan - 1;
  75. ?>
  76. <?php for($i = 1; $i <= $config->marketresearch->batchCreateTask->defaultCount; $i++):?>
  77. <?php $type = $member = $i == 1 ? 'research' : 'ditto';?>
  78. <?php $pri = $parent ? $parentPri : 3;?>
  79. <tr>
  80. <?php echo html::hidden("type[$i]", $type);?>
  81. <?php echo html::hidden("story[$i]", '0');?>
  82. <?php echo html::hidden("module[$i]", '0');?>
  83. <?php echo html::hidden("parent[$i]", $parent);?>
  84. <td class='text-left c-id'><?php echo $i;?></td>
  85. <td style='overflow:visible'>
  86. <div class="input-control has-icon-right">
  87. <?php echo html::input("name[$i]", '', "class='form-control title-import'");?>
  88. <div class="colorpicker">
  89. <button type="button" class="btn btn-link dropdown-toggle" data-toggle="dropdown"><span class="cp-title"></span><span class="color-bar"></span><i class="ic"></i></button>
  90. <ul class="dropdown-menu clearfix pull-right">
  91. <li class="heading"><?php echo $lang->task->colorTag;?><i class="icon icon-close"></i></li>
  92. </ul>
  93. <?php echo html::hidden("color[$i]", '', "data-provide='colorpicker' data-icon='color' data-wrapper='input-control-icon-right' data-update-color='#name\\[$i\\]'");?>
  94. </div>
  95. </div>
  96. </td>
  97. <td class="<?php echo zget($visibleFields, 'assignedTo', 'hidden')?> assignedToBox" style='overflow:visible'><?php echo html::select("assignedTo[$i]", $members, $member, "class='form-control chosen'");?></td>
  98. <td class="<?php echo zget($visibleFields, 'estimate', 'hidden')?> estimateBox"><?php echo html::input("estimate[$i]", '', "class='form-control text-center'");?></td>
  99. <td class="<?php echo zget($visibleFields, 'estStarted', 'hidden')?> estStartedBox">
  100. <div class='input-group'>
  101. <?php
  102. echo html::input("estStarted[$i]", '', "class='form-control text-center form-date' onkeyup='toggleCheck(this)'");
  103. if($i != 1) echo "<span class='input-group-addon estStartedBox'><input type='checkbox' name='estStartedDitto[$i]' id='estStartedDitto$i' " . ($i > 1 ? "checked" : '') . " /> {$lang->task->ditto}</span>";
  104. ?>
  105. </div>
  106. </td>
  107. <td class="<?php echo zget($visibleFields, 'deadline', 'hidden')?> deadlineBox">
  108. <div class='input-group'>
  109. <?php
  110. echo html::input("deadline[$i]", '', "class='form-control text-center form-date' onkeyup='toggleCheck(this)'");
  111. if($i != 1) echo "<span class='input-group-addon deadlineBox'><input type='checkbox' name='deadlineDitto[$i]' id='deadlineDitto$i' " . ($i > 1 ? "checked" : '') . " /> {$lang->task->ditto}</span>";
  112. ?>
  113. </div>
  114. </td>
  115. <td class="<?php echo zget($visibleFields, 'desc', 'hidden')?> descBox"><?php echo html::textarea("desc[$i]", '', "rows='1' class='form-control autosize'");?></td>
  116. <td class="<?php echo zget($visibleFields, 'pri', 'hidden')?> priBox"><?php echo html::select("pri[$i]", (array)$lang->task->priList, $pri, 'class=form-control');?></td>
  117. <td class='c-actions text-left'>
  118. <a href='javascript:;' onclick='addRow(this)' class='btn btn-link'><i class='icon-plus'></i></a>
  119. <?php if($i != 1):?>
  120. <a href='javascript:;' onclick='deleteRow(this)' class='btn btn-link'><i class='icon icon-close'></i></a>
  121. <?php endif;?>
  122. </td>
  123. </tr>
  124. <?php endfor;?>
  125. </tbody>
  126. <tfoot>
  127. <tr>
  128. <td colspan='<?php echo $colspan?>' class='text-center form-actions'>
  129. <?php echo html::submitButton(); ?>
  130. <?php echo html::backButton(); ?>
  131. </td>
  132. </tr>
  133. </tfoot>
  134. </table>
  135. </div>
  136. </form>
  137. </div>
  138. <?php js::set('rowIndex', -- $i);?>
  139. <table class='template' id='trTemp'>
  140. <tbody>
  141. <tr>
  142. <td class='text-left c-id'>%s</td>
  143. <?php echo html::hidden("parent[%s]", $parent);?>
  144. <?php echo html::hidden("type[%s]", $type);?>
  145. <td style='overflow:visible'>
  146. <div class="input-control has-icon-right">
  147. <?php echo html::input("name[%s]", '', "class='form-control title-import'");?>
  148. <div class="colorpicker">
  149. <button type="button" class="btn btn-link dropdown-toggle" data-toggle="dropdown"><span class="cp-title"></span><span class="color-bar"></span><i class="ic"></i></button>
  150. <ul class="dropdown-menu clearfix pull-right">
  151. <li class="heading"><?php echo $lang->task->colorTag;?><i class="icon icon-close"></i></li>
  152. </ul>
  153. <?php echo html::hidden("color[%s]", '', "data-provide='colorpicker-later' data-icon='color' data-wrapper='input-control-icon-right' data-update-color='#name\\[%s\\]'");?>
  154. </div>
  155. </div>
  156. </div>
  157. </td>
  158. <td class="<?php echo zget($visibleFields, 'assignedTo', 'hidden')?> assignedToBox" style='overflow:visible'><?php echo html::select("assignedTo[%s]", $members, $member, "class='form-control chosen'");?></td>
  159. <td class="<?php echo zget($visibleFields, 'estimate', 'hidden')?> estimateBox"><?php echo html::input("estimate[%s]", '', "class='form-control text-center'");?></td>
  160. <td class="<?php echo zget($visibleFields, 'estStarted', 'hidden')?> estStartedBox">
  161. <div class='input-group'>
  162. <?php
  163. echo html::input("estStarted[%s]", '', "class='form-control text-center form-date' onkeyup='toggleCheck(this)'");
  164. echo "<span class='input-group-addon estStartedBox'><input type='checkbox' name='estStartedDitto[%s]' id='estStartedDitto%s' checked/>{$lang->task->ditto}</span>";
  165. ?>
  166. </div>
  167. </td>
  168. <td class="<?php echo zget($visibleFields, 'deadline', 'hidden')?> deadlineBox">
  169. <div class='input-group'>
  170. <?php
  171. echo html::input("deadline[%s]", '', "class='form-control text-center form-date' onkeyup='toggleCheck(this)'");
  172. echo "<span class='input-group-addon deadlineBox'><input type='checkbox' name='deadlineDitto[%s]' id='deadlineDitto%s' checked/>{$lang->task->ditto}</span>";
  173. ?>
  174. </div>
  175. <td class="<?php echo zget($visibleFields, 'desc', 'hidden')?> descBox"><?php echo html::textarea("desc[%s]", '', "rows='1' class='form-control autosize'");?></td>
  176. <td class="<?php echo zget($visibleFields, 'pri', 'hidden')?> priBox"><?php echo html::select("pri[%s]", (array)$lang->task->priList, $pri, 'class=form-control');?></td>
  177. <td class='c-actions text-left'>
  178. <a href='javascript:;' onclick='addRow(this)' class='btn btn-link'><i class='icon-plus'></i></a>
  179. <a href='javascript:;' onclick='deleteRow(this)' class='btn btn-link'><i class='icon icon-close'></i></a>
  180. </td>
  181. </tr>
  182. </tbody>
  183. </table>
  184. <div>
  185. <?php $i = '%i%';?>
  186. <table class='hidden'>
  187. <tr id='addRow' class='hidden'>
  188. <td class='text-left c-id'><?php echo $i;?></td>
  189. <?php echo html::hidden("parent[$i]", $parent);?>
  190. <?php echo html::hidden("type[$i]", $type);?>
  191. <td style='overflow:visible'>
  192. <div class="input-control has-icon-right">
  193. <?php echo html::input("name[$i]", '', "class='form-control title-import'");?>
  194. <div class="colorpicker">
  195. <button type="button" class="btn btn-link dropdown-toggle" data-toggle="dropdown"><span class="cp-title"></span><span class="color-bar"></span><i class="ic"></i></button>
  196. <ul class="dropdown-menu clearfix pull-right">
  197. <li class="heading"><?php echo $lang->task->colorTag;?><i class="icon icon-close"></i></li>
  198. </ul>
  199. <?php echo html::hidden("color[$i]", '', "data-provide='colorpicker' data-icon='color' data-wrapper='input-control-icon-right' data-update-color='#name\\[$i\\]'");?>
  200. </div>
  201. </div>
  202. </td>
  203. <td class="<?php echo zget($visibleFields, 'assignedTo', 'hidden')?> assignedToBox" style='overflow:visible'><?php echo html::select("assignedTo[$i]", $members, $member, "class='form-control chosen'");?></td>
  204. <td class="<?php echo zget($visibleFields, 'estimate', 'hidden')?> estimateBox"><?php echo html::input("estimate[$i]", '', "class='form-control text-center'");?></td>
  205. <td class="<?php echo zget($visibleFields, 'estStarted', 'hidden')?> estStartedBox">
  206. <div class='input-group'>
  207. <?php
  208. echo html::input("estStarted[$i]", '', "class='form-control text-center form-date' onkeyup='toggleCheck(this)'");
  209. echo "<span class='input-group-addon estStartedBox'><input type='checkbox' name='estStartedDitto[$i]' id='estStartedDitto$i' checked/> {$lang->task->ditto}</span>";
  210. ?>
  211. </div>
  212. </td>
  213. <td class="<?php echo zget($visibleFields, 'deadline', 'hidden')?> deadlineBox">
  214. <div class='input-group'>
  215. <?php
  216. echo html::input("deadline[$i]", '', "class='form-control text-center form-date' onkeyup='toggleCheck(this)'");
  217. echo "<span class='input-group-addon deadlineBox'><input type='checkbox' name='deadlineDitto[$i]' id='deadlineDitto$i' checked/> {$lang->task->ditto}</span>";
  218. ?>
  219. </div>
  220. </td>
  221. <td class="<?php echo zget($visibleFields, 'desc', 'hidden')?> descBox"><?php echo html::textarea("desc[$i]", '', "rows='1' class='form-control autosize'");?></td>
  222. <td class="<?php echo zget($visibleFields, 'pri', 'hidden')?> priBox"><?php echo html::select("pri[$i]", (array)$lang->task->priList, $pri, 'class=form-control');?></td>
  223. <td class='c-actions text-left'>
  224. <a href='javascript:;' onclick='addRow(this)' class='btn btn-link'><i class='icon-plus'></i></a>
  225. <a href='javascript:;' onclick='deleteRow(this)' class='btn btn-link'><i class='icon icon-close'></i></a>
  226. </td>
  227. </tr>
  228. </table>
  229. </div>
  230. <?php js::set('executionType', $execution->type);?>
  231. <?php js::set('mainField', 'name');?>
  232. <?php js::set('ditto', $lang->task->ditto);?>
  233. <?php if(isonlybody()):?>
  234. <style>
  235. .body-modal .main-header {padding-right: 0px;}
  236. .btn-toolbar > .dropdown {margin: 0px;}
  237. </style>
  238. <script>
  239. $(function()
  240. {
  241. parent.$('#triggerModal .modal-content .modal-header .close').hide();
  242. });
  243. </script>
  244. <?php endif;?>
  245. <script>
  246. $(function()
  247. {
  248. removeDitto();
  249. if(taskConsumed > 0) bootbox.alert(addChildTask);
  250. });
  251. $(document).on('change', "[name^='estStarted'], [name^='deadline']", function()
  252. {
  253. toggleCheck($(this));
  254. })
  255. /**
  256. * Toggle checkbox.
  257. *
  258. * @param object $obj
  259. * @access public
  260. * @return void
  261. */
  262. function toggleCheck(obj)
  263. {
  264. var $this = $(obj);
  265. var date = $this.val();
  266. var $ditto = $this.closest('div').find("input[type='checkBox']");
  267. if(date == '')
  268. {
  269. $ditto.attr('checked', true);
  270. $ditto.closest('.input-group-addon').show();
  271. }
  272. else
  273. {
  274. $ditto.removeAttr('checked');
  275. $ditto.closest('.input-group-addon').hide();
  276. }
  277. }
  278. $(document).on('chosen:showing_dropdown', '.chosen-with-drop', function()
  279. {
  280. var select = $(this).closest('td').find('select');
  281. if($(select).val() == 'ditto')
  282. {
  283. var index = $(select).closest('td').index();
  284. var row = $(select).closest('tr').index();
  285. var table = $(select).closest('tr').parent();
  286. var value = '';
  287. for(i = row - 1; i >= 0; i--)
  288. {
  289. value = $(table).find('tr').eq(i).find('td').eq(index).find('select').val();
  290. if(value != 'ditto') break;
  291. }
  292. $(select).val(value);
  293. $(select).trigger("chosen:updated");
  294. $(select).trigger("change");
  295. }
  296. })
  297. $(document).on('mousedown', 'select', function()
  298. {
  299. if($(this).val() == 'ditto')
  300. {
  301. var index = $(this).closest('td').index();
  302. var row = $(this).closest('tr').index();
  303. var table = $(this).closest('tr').parent();
  304. var value = '';
  305. for(i = row - 1; i >= 0; i--)
  306. {
  307. value = $(table).find('tr').eq(i).find('td').eq(index).find('select').val();
  308. if(value != 'ditto') break;
  309. }
  310. $(this).val(value);
  311. }
  312. })
  313. </script>
  314. <?php include $app->getModuleRoot() . 'common/view/pastetext.html.php';?>
  315. <?php include $app->getModuleRoot() . 'ai/view/inputinject.html.php';?>
  316. <?php include $app->getModuleRoot() . 'common/view/footer.html.php';?>