| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272 |
- <?php
- /**
- * The map jira to zentao view file of convert module of ZenTaoPMS.
- * @copyright Copyright 2009-2023 禅道软件(青岛)有限公司(ZenTao Software (Qingdao) Co., Ltd. www.zentao.net)
- * @license ZPL(https://zpl.pub/page/zplv12.html) or AGPL(https://www.gnu.org/licenses/agpl-3.0.en.html)
- * @author Gang Liu <liugang@easycorp.ltd>
- * @package convert
- * @link https://www.zentao.net
- */
- namespace zin;
- include('jiraside.html.php');
- $buildHeader = function(string $label): h
- {
- return div
- (
- setClass("flex-1 text-center text-md font-bold"),
- $label
- );
- };
- $buildJira = function(string $name, string $label, int $value): h
- {
- return div
- (
- setClass("flex-1 text-center"),
- $label,
- input
- (
- set::type('hidden'),
- set::name("{$name}[]"),
- set::value($value)
- )
- );
- };
- $buildZenTao = function(string $name, array $items, $index = '', string $key = '', string $default = '') use($jiraRelation, $defaultValue): h
- {
- $default = !empty($defaultValue[$name][$key]) ? $defaultValue[$name][$key] : $default;
- return div
- (
- setClass("flex-1 mx-2"),
- picker
- (
- set::name("{$name}[$index]"),
- set::items($items),
- set::value(!empty($jiraRelation[$name][$index]) ? $jiraRelation[$name][$index] : $default)
- )
- );
- };
- $rows = array();
- if($step == 'object')
- {
- $rows[] = div
- (
- setClass('panel-title'),
- span(setClass('text-lg'), $lang->convert->jira->steps[$step]),
- span
- (
- icon('help self-center text-warning mr-1 pl-2'),
- setClass('self-center font-medium text-gray'),
- $lang->convert->jira->mapObjectNotice
- )
- );
- $rows[] = formRow
- (
- $buildHeader($lang->convert->jira->jiraObject),
- $buildHeader($lang->convert->jira->zentaoObject)
- );
- foreach($issueTypeList as $id => $issueType)
- {
- $value = $issueType->pname;
- $rows[] = formRow
- (
- $buildJira('jiraObject', $value, $id),
- $buildZenTao('zentaoObject', $zentaoObjects, $id, $value)
- );
- }
- }
- if(!empty($jiraRelation['zentaoObject']) && in_array($step, array_keys($jiraRelation['zentaoObject'])))
- {
- if(!empty($fieldList))
- {
- $rows[] = div
- (
- setClass('panel-title'),
- span(setClass('text-lg whitespace-nowrap'), $lang->convert->jira->objectField),
- span
- (
- icon('help self-center text-warning mr-1 pl-2'),
- setClass('self-center font-medium text-gray'),
- $lang->convert->jira->mapFieldNotice
- )
- );
- $rows[] = formRow
- (
- $buildHeader(sprintf($lang->convert->jira->jiraField, zget($issueTypeList[$step], 'pname', ''))),
- $buildHeader(sprintf($lang->convert->jira->zentaoField, zget($zentaoObjects, $jiraRelation['zentaoObject'][$step])))
- );
- $zentaoFields = $this->convert->getZentaoFields($jiraRelation['zentaoObject'][$step]);
- foreach($fieldList as $id => $field)
- {
- $rows[] = formRow
- (
- $buildJira("jiraField$step", $field, $id),
- $buildZenTao("zentaoField$step", $zentaoFields, $id, $field, 'add_field')
- );
- }
- $rows[] = divider();
- }
- if(!empty($statusList))
- {
- $zentaoStatusList = $this->convert->getZentaoStatus($jiraRelation['zentaoObject'][$step]);
- $defaultStatus = $this->convert->convertStatus($jiraRelation['zentaoObject'][$step], '', '');
- $rows[] = div
- (
- setClass('panel-title'),
- span(setClass('text-lg whitespace-nowrap'), $lang->convert->jira->objectStatus),
- span
- (
- icon('help self-center text-warning mr-1 pl-2'),
- setClass('self-center font-medium text-gray'),
- sprintf($lang->convert->jira->mapStatusNotice, zget($zentaoStatusList, $defaultStatus))
- )
- );
- $rows[] = formRow
- (
- $buildHeader(sprintf($lang->convert->jira->jiraStatus, zget($issueTypeList[$step], 'pname', ''))),
- $buildHeader(sprintf($lang->convert->jira->zentaoStatus, zget($zentaoObjects, $jiraRelation['zentaoObject'][$step]))),
- in_array($jiraRelation['zentaoObject'][$step], array('requirement', 'story', 'epic')) ? $buildHeader(sprintf($lang->convert->jira->zentaoStage, zget($zentaoObjects, $jiraRelation['zentaoObject'][$step]))) : null
- );
- foreach($statusList as $id => $status)
- {
- $rows[] = formRow
- (
- $buildJira("jiraStatus$step", $status, $id),
- $buildZenTao("zentaoStatus$step", $zentaoStatusList, $id, $status),
- in_array($jiraRelation['zentaoObject'][$step], array('requirement', 'story', 'epic')) ? $buildZenTao("zentaoStage$step", $lang->story->stageList, $id, $status) : null
- );
- }
- }
- if(!empty($jiraActions))
- {
- $rows[] = formRow
- (
- setClass('hidden'),
- $buildHeader(sprintf($lang->convert->jira->jiraAction, zget($issueTypeList[$step], 'pname', ''))),
- $buildHeader(sprintf($lang->convert->jira->zentaoAction, zget($zentaoObjects, $jiraRelation['zentaoObject'][$step])))
- );
- $zentaoActions = $this->convert->getZentaoActions($jiraRelation['zentaoObject'][$step]);
- foreach($jiraActions['actions'] as $id => $action)
- {
- $value = $action['name'];
- $rows[] = formRow
- (
- setClass('hidden'),
- $buildJira("jiraAction$step", $value, $id),
- $buildZenTao("zentaoAction$step", $zentaoActions, $id, $value, 'add_action')
- );
- }
- }
- if(in_array($jiraRelation['zentaoObject'][$step], array('bug', 'task', 'story', 'requirement', 'epic', 'feedback', 'ticket')))
- {
- $rows[] = divider();
- $rows[] = div
- (
- setClass('panel-title'),
- span(setClass('text-lg whitespace-nowrap'), $lang->convert->jira->objectResolution),
- span
- (
- icon('help self-center text-warning mr-1 pl-2'),
- setClass('self-center font-medium text-gray'),
- $lang->convert->jira->mapReasonNotice
- )
- );
- $rows[] = formRow
- (
- $buildHeader(sprintf($lang->convert->jira->jiraResolution, zget($issueTypeList[$step], 'pname', ''))),
- $buildHeader(sprintf($jiraRelation['zentaoObject'][$step] == 'bug' ? $lang->convert->jira->zentaoResolution : $lang->convert->jira->zentaoReason, zget($zentaoObjects, $jiraRelation['zentaoObject'][$step])))
- );
- foreach($resolutionList as $id => $resolution)
- {
- $value = $resolution->pname;
- $module = $jiraRelation['zentaoObject'][$step];
- if($module) $app->loadLang($module);
- if($module == 'epic' || $module == 'story' || $module == 'requirement') $module = 'story';
- if($module == 'bug')
- {
- $reasonList = $lang->bug->resolutionList + array('add_resolution' => $lang->convert->add);
- }
- else if($module == 'feedback' || $module == 'ticket')
- {
- $reasonList = $lang->{$module}->closedReasonList + array('add_closedReason' => $lang->convert->add);
- }
- else
- {
- $reasonList = $lang->{$module}->reasonList + array('add_reason' => $lang->convert->add);
- }
- if($module == 'epic' || $module == 'story' || $module == 'requirement') unset($reasonList['subdivided']);
- $rows[] = formRow
- (
- $buildJira("jiraResolution$step", $value, $id),
- $module == 'bug' ? $buildZenTao("zentaoResolution$step", $reasonList, $id, $value) : $buildZenTao("zentaoReason$step", $reasonList, $id, $value)
- );
- }
- }
- }
- if($step == 'relation')
- {
- $rows[] = div
- (
- setClass('panel-title'),
- span(setClass('text-lg'), $lang->convert->jira->steps[$step]),
- span
- (
- icon('help self-center text-warning mr-1 pl-2'),
- setClass('self-center font-medium text-gray'),
- $lang->convert->jira->mapRelationNotice
- )
- );
- $rows[] = formRow
- (
- $buildHeader($lang->convert->jira->jiraLinkType),
- $buildHeader($lang->convert->jira->zentaoLinkType)
- );
- $relationList = $this->convert->getZentaoRelationList();
- foreach($linkTypeList as $id => $linkType)
- {
- $value = $linkType->linkname;
- $rows[] = formRow
- (
- $buildJira('jiraLinkType', $value, $id),
- $buildZenTao('zentaoLinkType', $relationList, $id)
- );
- }
- }
- div
- (
- setClass('flex'),
- panel
- (
- setClass('w-1/4 mr-4 overflow-y-scroll scrollbar-thin scrollbar-hover'),
- setStyle(array('max-height' => 'calc(100vh - 130px)')),
- $items
- ),
- panel
- (
- setClass('flex-1 m-0 p-0 overflow-y-scroll scrollbar-thin scrollbar-hover'),
- setStyle(array('max-height' => 'calc(100vh - 130px)')),
- formPanel
- (
- on::change('[name^="zentaoField"]', 'changeField'),
- setClass('p-0'),
- set::actionsClass('hidden'),
- $rows
- )
- )
- );
- render();
|