batchedit.html.php 4.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. <?php
  2. /**
  3. * The UI view file of story module of ZenTaoPMS.
  4. * @copyright Copyright 2009-2023 禅道软件(青岛)有限公司(ZenTao Software (Qingdao) Co., Ltd. www.zentao.net)
  5. * @license ZPL(https://zpl.pub/page/zplv12.html) or AGPL(https://www.gnu.org/licenses/agpl-3.0.en.html)
  6. * @author Wang Yidong <yidong@easycorp.ltd>
  7. * @package story
  8. * @link https://www.zentao.net
  9. */
  10. namespace zin;
  11. data('activeMenuID', $from != 'work' && $from != 'contribute' ? $storyType : $from);
  12. jsVar('branchTagOption', $branchTagOption);
  13. jsVar('moduleList', $moduleList);
  14. jsVar('planGroups', $plans);
  15. jsVar('meeting', isset($meetings) ? $meetings : array());
  16. jsVar('researchReports', isset($researchReports) ? $researchReports : array());
  17. jsVar('productStoryList', $productStoryList);
  18. jsVar('storyType', $storyType);
  19. jsVar('urStageOptions', $urStageOptions);
  20. $URSourceItems = array();
  21. foreach($lang->requirement->sourceList as $key => $name) $URSourceItems[] = array('value' => $key, 'text' => $name);
  22. jsVar('URSourceItems', $URSourceItems);
  23. if(!empty($twinsTip)) pageJS("zui.Modal.alert({message: '{$twinsTip}', icon: 'icon-exclamation-sign', iconClass: 'warning-pale rounded-full icon-2x'});\n");
  24. if(!empty($frozenTips)) pageJS("zui.Modal.alert({message: '{$frozenTips}', icon: 'icon-exclamation-sign', iconClass: 'warning-pale rounded-full icon-2x'});\n");
  25. $items = array();
  26. $items['storyIdList'] = array('name' => 'storyIdList', 'label' => '', 'control' => 'hidden', 'hidden' => true);
  27. $items['id'] = array('name' => 'id', 'label' => $lang->idAB, 'control' => 'index', 'width' => '60px');
  28. $fields = $config->story->form->batchEdit;
  29. foreach($fields as $fieldName => $field)
  30. {
  31. if($fieldName == 'color') continue;
  32. if(isset($field['options']) && $field['options'] == 'users') $field['options'] = $users;
  33. if($fieldName == 'source') $field['options'] = $lang->{$storyType}->sourceList;
  34. if($fieldName == 'pri') $field['options'] = $lang->{$storyType}->priList;
  35. if($fieldName == 'category') $field['options'] = $lang->{$storyType}->categoryList;
  36. $items[$fieldName] = array('name' => $fieldName, 'label' => zget($lang->story, $fieldName), 'control' => $field['control'], 'width' => $field['width'], 'required' => $field['required']);
  37. if(isset($field['options'])) $items[$fieldName]['items'] = $field['options'];
  38. if(isset($customFields[$fieldName]) && strpos(",$showFields,", ",$fieldName,") === false) $items[$fieldName]['hidden'] = true;
  39. if($fieldName == 'sourceNote' && strpos(",$showFields,", ",source,") === false) $items['sourceNote']['hidden'] = true;
  40. }
  41. $items['title']['inputClass'] = 'filter-none';
  42. $items['assignedTo']['ditto'] = true;
  43. $items['source']['ditto'] = true;
  44. $items['stage']['ditto'] = true;
  45. $items['assignedTo']['defaultDitto'] = 'off';
  46. $items['source']['defaultDitto'] = 'off';
  47. $items['stage']['defaultDitto'] = 'off';
  48. if(!empty($fields['plan'])) $items['plan']['tip'] = $lang->story->planTip;
  49. if(!$branchProduct) unset($items['branch'], $customFields['branch']);
  50. /* Build form field value for batch edit. */
  51. $fieldNameList = array_keys($items);
  52. $data = array();
  53. foreach($stories as $storyID => $story)
  54. {
  55. if(empty($story->pri)) $story->pri = $this->config->story->defaultPriority;
  56. $data[$storyID] = $story;
  57. foreach($fieldNameList as $fieldName)
  58. {
  59. if($fieldName == 'storyIdList')$data[$storyID]->storyIdList = $story->id;
  60. if($fieldName == 'status')
  61. {
  62. $data[$storyID]->rawStatus = $story->status;
  63. $data[$storyID]->$fieldName = $this->processStatus('story', $story);
  64. }
  65. }
  66. }
  67. formBatchPanel
  68. (
  69. set::title($lang->story->batchEdit),
  70. on::change('[data-name="source"]')->call('setSourceNote', jsRaw('event')),
  71. set::onRenderCol(jsRaw('window.handleRenderFieldCol')),
  72. set::mode('edit'),
  73. set::items($items),
  74. set::data(array_values($data)),
  75. set::customFields(array('list' => $customFields, 'show' => explode(',', $showFields), 'key' => 'batchEditFields')),
  76. set::onRenderRow(jsRaw('renderRowData'))
  77. );
  78. render();