batchcreate.html.php 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284
  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 $this->app->getModuleRoot() . '/common/view/header.html.php';?>
  14. <?php include $this->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('regionID', $regionID);?>
  19. <?php js::set('requiredFields', $config->task->create->requiredFields);?>
  20. <style>.c-lane,.c-region{width:150px;}</style>
  21. <div id="mainContent" class="main-content fade">
  22. <div class="main-header clearfix">
  23. <h2 class="pull-left">
  24. <?php if($parent):?>
  25. <span class='pull-left'><?php echo $parentTitle . $this->lang->hyphen;?></span>
  26. <?php echo $lang->task->batchCreateChildren;?>
  27. <?php else:?>
  28. <?php echo $lang->task->batchCreate;?>
  29. <?php endif;?>
  30. </h2>
  31. <?php if($execution->type != 'ops'):?>
  32. <a class="checkbox-primary pull-left" id='zeroTaskStory' href='javascript:toggleZeroTaskStory();'>
  33. <label><?php echo $lang->story->zeroTask;?></label>
  34. </a>
  35. <?php endif;?>
  36. <div class="pull-right btn-toolbar">
  37. <button type='button' data-toggle='modal' data-target="#importLinesModal" class="btn btn-primary"><?php echo $lang->pasteText;?></button>
  38. <?php $customLink = $this->createLink('custom', 'ajaxSaveCustomFields', 'module=task&section=custom&key=batchCreateFields')?>
  39. <?php include $this->app->getModuleRoot() . '/common/view/customfield.html.php';?>
  40. <div class="divider"></div>
  41. </div>
  42. </div>
  43. <?php
  44. $visibleFields = array();
  45. $requiredFields = array();
  46. foreach(explode(',', $showFields) as $field)
  47. {
  48. if($field)$visibleFields[$field] = '';
  49. }
  50. foreach(explode(',', $config->task->create->requiredFields) as $field)
  51. {
  52. if($field) $requiredFields[$field] = '';
  53. }
  54. $colspan = count($visibleFields) + 3;
  55. ?>
  56. <form method='post' class='batch-actions-form' target='hiddenwin' enctype='multipart/form-data' id="batchCreateForm">
  57. <div class="table-responsive">
  58. <table class="table table-form" id="tableBody">
  59. <thead>
  60. <tr>
  61. <th class='c-id'><?php echo $lang->idAB;?></th>
  62. <th class='c-module<?php echo zget($visibleFields, 'module', ' hidden') . zget($requiredFields, 'module', '', ' required');?> moduleBox'><?php echo $lang->task->module?></th>
  63. <?php if($execution->type != 'ops'):?>
  64. <th class='c-story<?php echo zget($visibleFields, 'story', ' hidden') . zget($requiredFields, 'story', '', ' required');?> storyBox'><?php echo $lang->task->story;?></th>
  65. <?php endif;?>
  66. <th class='c-name required has-btn'><?php echo $lang->task->name;?></span></th>
  67. <th class='c-region required<?php echo zget($visibleFields, 'region', ' hidden');?> regionBox'><?php echo $lang->task->region;?></th>
  68. <th class='c-lane required<?php echo zget($visibleFields, 'lane', ' hidden');?> laneBox'><?php echo $lang->task->lane;?></th>
  69. <th class='c-type required'><?php echo $lang->typeAB;?></span></th>
  70. <th class='c-assigned<?php echo zget($visibleFields, 'assignedTo', ' hidden') . zget($requiredFields, 'assignedTo', '', ' required');?>'><?php echo $lang->task->assignedTo;?></th>
  71. <th class='c-estimate<?php echo zget($visibleFields, 'estimate', ' hidden') . zget($requiredFields, 'estimate', '', ' required');?> estimateBox'><?php echo $lang->task->estimateAB;?></th>
  72. <th class='c-date<?php echo zget($visibleFields, 'estStarted', ' hidden') . zget($requiredFields, 'estStarted', '', ' required');?> estStartedBox'><?php echo $lang->task->estStarted;?></th>
  73. <th class='c-date<?php echo zget($visibleFields, 'deadline', ' hidden') . zget($requiredFields, 'deadline', '', ' required');?> deadlineBox'><?php echo $lang->task->deadline;?></th>
  74. <th class='c-desc<?php echo zget($visibleFields, 'desc', ' hidden') . zget($requiredFields, 'desc', '', ' required');?> descBox'><?php echo $lang->task->desc;?></th>
  75. <th class='c-pri<?php echo zget($visibleFields, 'pri', ' hidden') . zget($requiredFields, 'pri', '', ' required');?> priBox'><?php echo $lang->task->pri;?></th>
  76. <?php
  77. $extendFields = $this->task->getFlowExtendFields();
  78. foreach($extendFields as $extendField) echo "<th class='w-100px'>{$extendField->name}</th>";
  79. ?>
  80. </tr>
  81. </thead>
  82. <tbody>
  83. <?php
  84. $stories['ditto'] = $lang->task->ditto;
  85. $lang->task->typeList['ditto'] = $lang->task->ditto;
  86. $members['ditto'] = $lang->task->ditto;
  87. $modules['ditto'] = $lang->task->ditto;
  88. if($execution->type == 'ops') $colspan = $colspan - 1;
  89. ?>
  90. <?php for($i = 1; $i <= $config->task->batchCreate; $i++):?>
  91. <?php
  92. if($i == 1)
  93. {
  94. $currentStory = $storyID;
  95. $type = '';
  96. $member = '';
  97. }
  98. else
  99. {
  100. $currentStory = $type = $member = $moduleID = 'ditto';
  101. }
  102. ?>
  103. <?php $pri = 3;?>
  104. <tr>
  105. <td class='text-center'><?php echo $i;?></td>
  106. <td class="<?php echo zget($visibleFields, 'module', 'hidden')?> moduleBox" style='overflow:visible'>
  107. <?php echo html::select("module[$i]", $modules, $moduleID, "class='form-control chosen' onchange='setStories(this.value, $execution->id, $i)'")?>
  108. <?php echo html::hidden("parent[$i]", $parent);?>
  109. </td>
  110. <?php if($execution->type != 'ops'):?>
  111. <td class="<?php echo zget($visibleFields, 'story', 'hidden');?> storyBox" style='overflow: visible'>
  112. <div class='input-group'>
  113. <?php echo html::select("story[$i]", $stories, $currentStory, "class='form-control chosen' onchange='setStoryRelated($i)'");?>
  114. <span class='input-group-btn'>
  115. <a id='preview<?php echo $i;?>' href='#' class='btn iframe btn-link btn-icon btn-copy' disabled='disabled' title='<?php echo $lang->preview; ?>'><i class='icon-eye'></i></a>
  116. <a href='javascript:copyStoryTitle(<?php echo $i;?>)' class='btn btn-link btn-icon btn-copy' title='<?php echo $lang->task->copyStoryTitle; ?>'><i class='icon-arrow-right'></i></a>
  117. <?php echo html::hidden("storyEstimate$i") . html::hidden("storyDesc$i") . html::hidden("storyPri$i");?>
  118. </span>
  119. </div>
  120. </td>
  121. <?php endif;?>
  122. <td style='overflow:visible'>
  123. <div class="input-control has-icon-right">
  124. <?php echo html::input("name[$i]", '', "class='form-control title-import'");?>
  125. <div class="colorpicker">
  126. <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>
  127. <ul class="dropdown-menu clearfix pull-right">
  128. <li class="heading"><?php echo $lang->task->colorTag;?><i class="icon icon-close"></i></li>
  129. </ul>
  130. <?php echo html::hidden("color[$i]", '', "data-provide='colorpicker' data-icon='color' data-wrapper='input-control-icon-right' data-update-color='#name\\[$i\\]'");?>
  131. </div>
  132. </div>
  133. </td>
  134. <td class="<?php echo zget($visibleFields, 'region', 'hidden');?> regionBox" style='overflow:visible'><?php echo html::select("region[$i]", $regionList, isset($regionID) ? $regionID : '', "class='form-control chosen' onchange='loadLaneGroup(this.value, $i)'");?></td>
  135. <td class="<?php echo zget($visibleFields, 'lane', 'hidden');?> laneBox" style='overflow:visible'><?php echo html::select("lane[$i]", $lanes, '', "class='form-control chosen'");?></td>
  136. <td><?php echo html::select("type[$i]", $lang->task->typeList, $type, "class='form-control chosen'");?></td>
  137. <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>
  138. <td class="<?php echo zget($visibleFields, 'estimate', 'hidden')?> estimateBox"><?php echo html::input("estimate[$i]", '', "class='form-control text-center'");?></td>
  139. <td class="<?php echo zget($visibleFields, 'estStarted', 'hidden')?> estStartedBox">
  140. <div class='input-group'>
  141. <?php
  142. echo html::input("estStarted[$i]", '', "class='form-control text-center form-date' onkeyup='toggleCheck(this)'");
  143. 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>";
  144. ?>
  145. </div>
  146. </td>
  147. <td class="<?php echo zget($visibleFields, 'deadline', 'hidden')?> deadlineBox">
  148. <div class='input-group'>
  149. <?php
  150. echo html::input("deadline[$i]", '', "class='form-control text-center form-date' onkeyup='toggleCheck(this)'");
  151. if($i != 1) echo "<span class='input-group-addon deadlineBox'><input type='checkbox' name='deadlineDitto[$i]' id='deadlineDitto$i' " . ($i > 0 ? "checked" : '') . " /> {$lang->task->ditto}</span>";
  152. ?>
  153. </div>
  154. </td>
  155. <td class="<?php echo zget($visibleFields, 'desc', 'hidden')?> descBox"><?php echo html::textarea("desc[$i]", '', "rows='1' class='form-control autosize'");?></td>
  156. <td class="<?php echo zget($visibleFields, 'pri', 'hidden')?> priBox"><?php echo html::select("pri[$i]", (array)$lang->task->priList, $pri, 'class=form-control');?></td>
  157. <?php foreach($extendFields as $extendField) echo "<td" . (($extendField->control == 'select' or $extendField->control == 'multi-select') ? " style='overflow:visible'" : '') . ">" . $this->loadModel('flow')->getFieldControl($extendField, '', $extendField->field . "[$i]") . "</td>";?>
  158. </tr>
  159. <?php endfor;?>
  160. </tbody>
  161. <tfoot>
  162. <tr>
  163. <td colspan='<?php echo $colspan?>' class='text-center form-actions'>
  164. <?php echo html::submitButton();?>
  165. <?php echo html::backButton();?>
  166. </td>
  167. </tr>
  168. </tfoot>
  169. </table>
  170. </div>
  171. </form>
  172. </div>
  173. <table class='template' id='trTemp'>
  174. <tbody>
  175. <tr>
  176. <td class='text-center'>%s</td>
  177. <td class="<?php echo zget($visibleFields, 'module', 'hidden')?> moduleBox" style='overflow:visible'>
  178. <?php echo html::select("module[%s]", $modules, $moduleID, "class='form-control chosen' onchange='setStories(this.value, $execution->id, \"%s\")'")?>
  179. <?php echo html::hidden("parent[%s]", $parent);?>
  180. </td>
  181. <td class="<?php echo zget($visibleFields, 'story', 'hidden');?> storyBox" style='overflow: visible'>
  182. <div class='input-group'>
  183. <?php echo html::select("story[%s]", $stories, $currentStory, "class='form-control chosen' onchange='setStoryRelated(\"%s\")'");?>
  184. <span class='input-group-btn'>
  185. <a id="preview%s" href='#' class='btn iframe btn-link btn-icon btn-copy' disabled='disabled' title='<?php echo $lang->preview; ?>'><i class='icon-eye'></i></a>
  186. <a href='javascript:copyStoryTitle("%s")' class='btn btn-link btn-icon btn-copy' title='<?php echo $lang->task->copyStoryTitle; ?>'><i class='icon-arrow-right'></i></a>
  187. </span>
  188. </div>
  189. </td>
  190. <td style='overflow:visible'>
  191. <div class="input-control has-icon-right">
  192. <?php echo html::input("name[%s]", '', "class='form-control title-import'");?>
  193. <div class="colorpicker">
  194. <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>
  195. <ul class="dropdown-menu clearfix pull-right">
  196. <li class="heading"><?php echo $lang->task->colorTag;?><i class="icon icon-close"></i></li>
  197. </ul>
  198. <?php echo html::hidden("color[%s]", '', "data-provide='colorpicker-later' data-icon='color' data-wrapper='input-control-icon-right' data-update-color='#name\\[%s\\]'");?>
  199. </div>
  200. </div>
  201. </div>
  202. </td>
  203. <td class="<?php echo zget($visibleFields, 'region', 'hidden');?> regionBox" style='overflow:visible'><?php echo html::select("region[%s]", $regionList, isset($regionID) ? $regionID : '', "class='form-control chosen' onchange='loadLaneGroup(this.value, $i)'");?></td>
  204. <td class="<?php echo zget($visibleFields, 'lane', 'hidden');?> laneBox" style='overflow:visible'><?php echo html::select("lane[%s]", $lanes, '', "class='form-control chosen'");?></td>
  205. <td><?php echo html::select("type[%s]", $lang->task->typeList, $type, 'class="form-control"');?></td>
  206. <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>
  207. <td class="<?php echo zget($visibleFields, 'estimate', 'hidden');?> estimateBox"><?php echo html::input("estimate[%s]", '', "class='form-control text-center'");?></td>
  208. <td class="<?php echo zget($visibleFields, 'estStarted', 'hidden');?> estStartedBox">
  209. <div class='input-group'>
  210. <?php
  211. echo html::input("estStarted[%s]", '', "class='form-control text-center form-date' onkeyup='toggleCheck(this)'");
  212. echo "<span class='input-group-addon estStartedBox'><input type='checkbox' name='estStartedDitto[%s]' id='estStartedDitto%s' checked/>{$lang->task->ditto}</span>";
  213. ?>
  214. </div>
  215. </td>
  216. <td class="<?php echo zget($visibleFields, 'deadline', 'hidden')?> deadlineBox">
  217. <div class='input-group'>
  218. <?php
  219. echo html::input("deadline[%s]", '', "class='form-control text-center form-date' onkeyup='toggleCheck(this)'");
  220. echo "<span class='input-group-addon deadlineBox'><input type='checkbox' name='deadlineDitto[%s]' id='deadlineDitto%s' checked/>{$lang->task->ditto}</span>";
  221. ?>
  222. </div>
  223. <td class="<?php echo zget($visibleFields, 'desc', 'hidden')?> descBox"><?php echo html::textarea("desc[%s]", '', "rows='1' class='form-control autosize'");?></td>
  224. <td class="<?php echo zget($visibleFields, 'pri', 'hidden')?> priBox"><?php echo html::select("pri[%s]", (array)$lang->task->priList, $pri, 'class=form-control');?></td>
  225. <?php foreach($extendFields as $extendField) echo "<td" . (($extendField->control == 'select' or $extendField->control == 'multi-select') ? " style='overflow:visible'" : '') . ">" . $this->loadModel('flow')->getFieldControl($extendField, '', $extendField->field . "[%s]") . "</td>";?>
  226. </tr>
  227. </tbody>
  228. </table>
  229. <?php js::set('executionType', $execution->type);?>
  230. <?php js::set('storyTasks', $storyTasks);?>
  231. <?php js::set('mainField', 'name');?>
  232. <?php js::set('ditto', $lang->task->ditto);?>
  233. <?php js::set('storyID', $storyID);?>
  234. <script>
  235. function loadLaneGroup(regionID, num)
  236. {
  237. var link = createLink('kanban', 'ajaxGetLanes', 'regionID=' + regionID + '&type=task&field=lane&i=' + num);
  238. $.post(link, function(data)
  239. {
  240. $('#lane' + num).replaceWith(data);
  241. $('#lane' + num + '_chosen').remove();
  242. $('#lane' + num).chosen();
  243. });
  244. }
  245. $(function()
  246. {
  247. /* Initial fetch of kanban lanes. */
  248. var link = createLink('kanban', 'ajaxGetLanes', 'regionID=' + regionID + '&type=task&field=lane&i=1');
  249. $.post(link, function(data)
  250. {
  251. for(var num = 1; num <= 10; num++)
  252. {
  253. $('#lane' + num).replaceWith(data.replace('lane1', 'lane' + num).replace('lane[1]', 'lane[' + num + ']'));
  254. $('#lane' + num + '_chosen').remove();
  255. $('#lane' + num).chosen();
  256. }
  257. if($('#lane1').children().length < 2 && $('#region1').children().length < 2)
  258. {
  259. $('.c-region').addClass('hide');
  260. $('.c-lane').addClass('hide');
  261. for(var num = 1; num <= 10; num++)
  262. {
  263. $('#region' + num).parent().addClass('hide');
  264. $('#lane' + num).parent().addClass('hide');
  265. }
  266. }
  267. });
  268. })
  269. </script>
  270. <?php if(isonlybody()):?>
  271. <style>
  272. .body-modal .main-header{padding-right:0px;}
  273. .btn-toolbar>.dropdown{margin:0px;}
  274. </style>
  275. <?php $html = '<div class="divider"></div><button id="closeModal" type="button" class="btn btn-link" data-dismiss="modal"><i class="icon icon-close"></i></button>';?>
  276. <script>$(function()
  277. {
  278. parent.$('#triggerModal .modal-content .modal-header .close').hide();
  279. $('#mainContent .main-header .pull-right.btn-toolbar').append(<?php echo json_encode($html)?>);
  280. })
  281. </script>
  282. <?php endif;?>
  283. <?php include $this->app->getModuleRoot() . '/common/view/pastetext.html.php';?>
  284. <?php include $this->app->getModuleRoot() . '/common/view/footer.html.php';?>