feedback.php 7.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145
  1. <?php
  2. /**
  3. *
  4. * 构建创建bug页面数据。
  5. * Build form fields for create bug.
  6. *
  7. * @param object $bug
  8. * @param array $param
  9. * @param string $from
  10. * @access public
  11. * @return void
  12. */
  13. public function buildCreateForm($bug, $param, $from)
  14. {
  15. parent::buildCreateForm($bug, $param, $from);
  16. extract($param);
  17. if(!empty($fromType))
  18. {
  19. /* Init vars. */
  20. $moduleID = 0;
  21. $fromObject = $this->loadModel((string)$fromType)->getById((int)$fromID);
  22. switch($fromType)
  23. {
  24. case 'feedback':
  25. $moduleID = $fromObject->module;
  26. $this->view->feedbackID = $fromID;
  27. $this->view->feedback = $fromObject;
  28. break;
  29. case 'ticket':
  30. $moduleID = $fromObject->module;
  31. $this->view->ticketID = $fromID;
  32. $this->view->ticket = $fromObject;
  33. break;
  34. }
  35. $this->view->fromType = $fromType;
  36. $bug = $this->updateBug($bug, array('title' => $fromObject->title, 'moduleID' => $moduleID, 'steps' => $fromObject->desc));
  37. }
  38. }
  39. /**
  40. * 创建 bug 后的返回结果。
  41. * respond after deleting.
  42. *
  43. * @param object $bug
  44. * @param array $params
  45. * @param string $message
  46. * @access public
  47. * @return bool|int
  48. */
  49. public function responseAfterCreate($bug, $params, $message = '')
  50. {
  51. extract($params);
  52. if(empty($fromType)) return parent::responseAfterCreate($bug, $params, $message);
  53. if(isInModal()) return $this->send(array('result' => 'success', 'message' => $this->lang->saveSuccess, 'closeModal' => true, 'load' => true));
  54. $location = $fromType == 'feedback' ? $this->createLink('feedback', 'adminView', "feedbackID=$fromID") : $this->createLink($fromType, 'view', "fromObjectID=$fromID");
  55. return $this->send(array('result' => 'success', 'message' => $this->lang->saveSuccess, 'load' => $location));
  56. }
  57. /**
  58. * 获取BUG详情页面的基本信息列表。
  59. * Get bug legend basic info.
  60. *
  61. * @param object $view
  62. * @access protected
  63. * @return array
  64. */
  65. protected function getBasicInfoTable($view)
  66. {
  67. extract((array)$view);
  68. $this->app->loadLang('product');
  69. $canViewProduct = common::hasPriv('project', 'view');
  70. $canBrowseBug = common::hasPriv('bug', 'browse');
  71. $canViewPlan = common::hasPriv('productplan', 'view');
  72. $canViewCase = common::hasPriv('testcase', 'view');
  73. $branchTitle = sprintf($this->lang->product->branch, $this->lang->product->branchName[$product->type]);
  74. $fromCaseName = $bug->case ? "#{$bug->case} {$bug->caseTitle}" : '';
  75. $productLink = $bug->product && $canViewProduct ? helper::createLink('product', 'view', "productID={$bug->product}") : '';
  76. $branchLink = $bug->branch && $canBrowseBug ? helper::createLink('bug', 'browse', "productID={$bug->product}&branch={$bug->branch}") : '';
  77. $planLink = $bug->plan && $canViewPlan ? helper::createLink('productplan', 'view', "planID={$bug->plan}&type=bug") : '';
  78. $fromCaseLink = $bug->case && $canViewCase ? helper::createLink('testcase', 'view', "caseID={$bug->case}&caseVersion={$bug->caseVersion}") : '';
  79. $legendBasic = array();
  80. if(empty($product->shadow)) $legendBasic['product'] = array('name' => $this->lang->bug->product, 'text' => $product->name, 'href' => $productLink, 'attr' => array('data-app' => 'product'));
  81. if($product->type != 'normal') $legendBasic['branch'] = array('name' => $branchTitle, 'text' => $branchName, 'href' => $branchLink);
  82. $legendBasic['module'] = array('name' => $this->lang->bug->module, 'text' => $bug->module);
  83. if(empty($product->shadow) || !empty($project->multiple)) $legendBasic['productplan'] = array('name' => $this->lang->bug->plan, 'text' => $bug->planName, 'href' => $planLink);
  84. $legendBasic['fromCase'] = array('name' => $this->lang->bug->fromCase, 'text' => $fromCaseName, 'href' => $fromCaseLink, 'attr' => array('data-toggle' => 'modal', 'data-size' => 'lg'));
  85. $legendBasic['type'] = array('name' => $this->lang->bug->type, 'text' => zget($this->lang->bug->typeList, $bug->type));
  86. $legendBasic['severity'] = array('name' => $this->lang->bug->severity, 'text' => $bug->severity);
  87. $legendBasic['pri'] = array('name' => $this->lang->bug->pri, 'text' => $bug->pri);
  88. $legendBasic['status'] = array('name' => $this->lang->bug->status, 'text' => $this->processStatus('bug', $bug), 'attr' => array('class' => 'status-' . $bug->status));
  89. $legendBasic['activatedCount'] = array('name' => $this->lang->bug->activatedCount, 'text' => $bug->activatedCount ? $bug->activatedCount : '');
  90. $legendBasic['activatedDate'] = array('name' => $this->lang->bug->activatedDate, 'text' => formatTime($bug->activatedDate));
  91. $legendBasic['confirmed'] = array('name' => $this->lang->bug->confirmed, 'text' => $this->lang->bug->confirmedList[$bug->confirmed]);
  92. $legendBasic['assignedTo'] = array('name' => $this->lang->bug->lblAssignedTo, 'text' => $bug->assignedTo ? zget($users, $bug->assignedTo) . $this->lang->at . formatTime($bug->assignedDate) : '');
  93. $legendBasic['deadline'] = array('name' => $this->lang->bug->deadline, 'text' => formatTime($bug->deadline) . (isset($bug->delay) ? sprintf($this->lang->bug->notice->delayWarning, $bug->delay) : ''));
  94. $legendBasic['feedbackBy'] = array('name' => $this->lang->bug->feedbackBy, 'text' => $bug->feedbackBy);
  95. $legendBasic['notifyEmail'] = array('name' => $this->lang->bug->notifyEmail, 'text' => $bug->notifyEmail);
  96. $legendBasic['os'] = array('name' => $this->lang->bug->os, 'text' => $bug->os);
  97. $legendBasic['browser'] = array('name' => $this->lang->bug->browser, 'text' => $bug->browser);
  98. $legendBasic['keywords'] = array('name' => $this->lang->bug->keywords, 'text' => $bug->keywords);
  99. $legendBasic['mailto'] = array('name' => $this->lang->bug->mailto, 'text' => $bug->mailto);
  100. if($bug->feedback)
  101. {
  102. $legendBasic['feedback'] = array('name' => $lang->bug->found, 'text' => zget($users, $bug->found) . " #$bug->feedback $bug->feedbackTitle", 'href' => $this->createLink('feedback', 'adminview', "feedbackID=$bug->feedback"));
  103. }
  104. return $legendBasic;
  105. }
  106. /**
  107. *
  108. * 解析extras,如果bug来源于某个对象 (bug, case, testtask, todo, feedback) ,使用对象的一些属性对bug赋值。
  109. * Extract extras, if bug come from an object(bug, case, testtask, todo, feedback), get some value from object.
  110. *
  111. * @param object $bug
  112. * @param array $output
  113. * @access protected
  114. * @return object
  115. */
  116. protected function extractObjectFromExtras($bug, $output)
  117. {
  118. $bug = parent::extractObjectFromExtras($bug, $output);
  119. if(zget($output, 'fromType') == 'feedback' && isset($output['fromID']))
  120. {
  121. $feedback = $this->loadModel('feedback')->getById($output['fromID']);
  122. if(!empty($feedback->files))
  123. {
  124. $bug->files = isset($bug->files) ? array_merge($bug->files, $feedback->files) : $feedback->files;
  125. foreach($bug->files as $file) $file->name = $file->title;
  126. $bug->files = array_values($bug->files);
  127. }
  128. }
  129. return $bug;
  130. }