ajaxgetdropmenu.html.php 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. <?php
  2. /**
  3. * The ajaxgetdropmenu view file of api 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 Sun Guangming<sunguangming@easycorp.ltd>
  7. * @package doc
  8. * @link https://www.zentao.net
  9. */
  10. namespace zin;
  11. $data = array('nolink' => array(), 'product' => array(), 'project' => array());
  12. /* 处理独立接口库。Process independent libs. */
  13. foreach($nolinkLibs as $lib) $data['nolink'][] = array('id' => "lib.$lib->id", 'text' => $lib->name, 'active' => $lib->id == $libID, 'type' => 'item', 'url' => createLink('api', 'index', "libID=$lib->id"));
  14. /* 处理产品和项目数据。Process product and project data. */
  15. foreach($products as $product)
  16. {
  17. $programID = $product->program;
  18. $item = array('type' => 'product', 'id' => "product.$product->id", 'text' => $product->name, 'active' => $objectType == 'product' && $product->id == $objectID, 'url' => createLink('api', 'index', 'libID=' . (isset($product->firstLib) ? $product->firstLib : 0)));
  19. if(isset($programs[$programID]))
  20. {
  21. $programKey = "program.$programID";
  22. $program = $programs[$programID];
  23. if(!isset($data['product'][$programKey])) $data['product'][$programKey] = array('id' => $programKey, 'text' => $program->name, 'type' => 'program', 'items' => array());
  24. $data['product'][$programKey]['items'][] = $item;
  25. }
  26. else
  27. {
  28. $data['product'][$product->id] = $item;
  29. }
  30. }
  31. foreach($projects as $project)
  32. {
  33. $programID = $project->parent;
  34. $item = array('type' => 'project', 'id' => "project.$project->id", 'text' => $project->name, 'active' => $objectType == 'project' && $project->id == $objectID, 'url' => createLink('api', 'index', 'libID=' . (isset($project->firstLib) ? $project->firstLib : 0)));
  35. if(isset($programs[$programID]))
  36. {
  37. $programKey = "program.$programID";
  38. $program = $programs[$programID];
  39. if(!isset($data['project'][$programKey])) $data['project'][$programKey] = array('id' => $programKey, 'text' => $program->name, 'type' => 'program', 'items' => array());
  40. $data['project'][$programKey]['items'][] = $item;
  41. }
  42. else
  43. {
  44. $data['project'][$project->id] = $item;
  45. }
  46. }
  47. $data['product'] = array_values($data['product']);
  48. $data['project'] = array_values($data['project']);
  49. /**
  50. * 定义最终的 JSON 数据。
  51. * Define the final json data.
  52. */
  53. $link = $this->createLink('api', 'ajaxGetList', "objectID={id}&objectType={type}");
  54. $tabs = array();
  55. $tabs[] = array('name' => 'nolink', 'active' => $libID, 'text' => $lang->api->libTypeList['nolink']);
  56. $tabs[] = array('name' => 'product', 'active' => $objectType == 'product', 'text' => $lang->api->libTypeList['product']);
  57. $tabs[] = array('name' => 'project', 'active' => $objectType == 'project', 'text' => $lang->api->libTypeList['project']);
  58. $json = array();
  59. $json['link'] = $link;
  60. $json['data'] = $data;
  61. $json['tabs'] = $tabs;
  62. $json['searchHint'] = $lang->searchAB;
  63. $json['labelMap'] = array('program' => $lang->program->common);
  64. $json['itemType'] = 'lib';
  65. $json['typeIconMap'] = array('lib' => 'interface-lib');
  66. $json['debug'] = array('libID' => $libID, 'objectType' => $objectType, 'objectID' => $objectID);
  67. /**
  68. * 渲染 JSON 字符串并发送到客户端。
  69. * Render json data to string and send to client.
  70. */
  71. renderJson($json);