ajaxgetdropmenu.html.php 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157
  1. <style>
  2. #tabContent {margin-top: 5px; max-width: 220px}
  3. .objectTree ul {list-style: none; margin: 0}
  4. .objectTree .objects>ul>li>div {display: flex; flex-flow: row nowrap; justify-content: flex-start; align-items: center;}
  5. .objectTree li>a, div.hide-in-search>a {display: block; padding: 2px 10px 2px 5px; overflow: hidden; line-height: 20px; text-overflow: ellipsis; white-space: nowrap; border-radius: 4px;}
  6. .objectTree .tree li>.list-toggle {line-height: 24px;}
  7. .objectTree .tree li.has-list.open:before {content: unset;}
  8. #swapper li>div.hide-in-search>a:focus, #swapper li>div.hide-in-search>a:hover {color: #838a9d; cursor: default;}
  9. #swapper li > a {margin-top: 4px; margin-bottom: 4px;}
  10. #swapper li {padding-top: 0; padding-bottom: 0;}
  11. #swapper .tree li>.list-toggle {top: -1px;}
  12. #closed {width: 90px; height: 25px; line-height: 25px; background-color: #ddd; color: #3c495c; text-align: center; margin-left: 15px; border-radius: 2px;}
  13. #gray-line {width: 230px;height: 1px; margin-left: 10px; margin-bottom:2px; background-color: #ddd;}
  14. #dropMenu.has-search-text .hide-in-search {display: flex;}
  15. #swapper li>.selected {color: #0c64eb!important; background: #e9f2fb!important;}
  16. .tree-product:last-child {border-bottom: 1px solid #eee;}
  17. </style>
  18. <?php
  19. $normalObjectsHtml = '<ul class="tree noProgram">';
  20. $closedObjectsHtml = '<ul class="tree noProgram">';
  21. $link = $this->createLink('api', 'index');
  22. $selected = $objectType == 'nolink' ? 'selected' : '';
  23. $dataParams = 'data-type="nolink" data-id="0"';
  24. if(!empty($nolinkLibs)) $normalObjectsHtml .= "<li>" . html::a($link, $lang->api->noLinked, '', "class='clickable $selected' title='{$lang->api->noLinked}' $dataParams data-key='" . zget($objectsPinYin, $lang->api->noLinked, '') . "'") . '</li>';
  25. foreach(array('product', 'project') as $moduleType)
  26. {
  27. if(!empty($normalObjects[$moduleType]))
  28. {
  29. foreach($normalObjects[$moduleType] as $normalObjectID => $normalObjectName)
  30. {
  31. $dataParams = "data-type='$moduleType' data-id='$normalObjectID'";
  32. $selected = $normalObjectID == $objectID ? 'selected' : '';
  33. $normalObjectsHtml .= "<li>" . html::a($link, "<i class='icon icon-$moduleType'></i> $normalObjectName", '', "class='$selected clickable' title='{$normalObjectName}' $dataParams data-key='" . zget($objectsPinYin, $normalObjectName, '') . "'") . '</li>';
  34. }
  35. }
  36. if(!empty($closedObjects[$moduleType]))
  37. {
  38. foreach($closedObjects[$moduleType] as $closedObjectID => $closedObjectName)
  39. {
  40. $dataParams = "data-type='$moduleType' data-id='$closedObjectID'";
  41. $selected = $closedObjectID == $objectID ? 'selected' : '';
  42. $closedObjectsHtml .= '<li>' . html::a($link, "<i class='icon icon-$moduleType'></i> $closedObjectName", '', "class='$selected clickable' title='{$closedObjectName}' $dataParams data-key='" . zget($objectsPinYin, $closedObjectName, '') . "'") . '</li>';
  43. }
  44. }
  45. if($moduleType == 'product')
  46. {
  47. if(!empty($normalObjects['project']) and (!empty($nolinkLibs) or !empty($normalObjects['product']))) $normalObjectsHtml .= '<li class="divider"></li>';
  48. if(!empty($closedObjects['project']) and !empty($normalObjects['product'])) $closedObjectsHtml .= '<li class="divider"></li>';
  49. }
  50. }
  51. $normalObjectsHtml .= '</ul>';
  52. $closedObjectsHtml .= '</ul>';
  53. ?>
  54. <div class="table-row">
  55. <div class="table-col <?php if(!empty($closedObjects['product']) or !empty($closedObjects['project'])) echo 'col-left'?>">
  56. <div class='list-group'>
  57. <div class="tab-content objectTree" id="tabContent">
  58. <div class="tab-pane objects active">
  59. <?php echo $normalObjectsHtml;?>
  60. </div>
  61. </div>
  62. </div>
  63. <?php if(!empty($closedObjects['product']) or !empty($closedObjects['project'])):?>
  64. <div class="col-footer">
  65. <a class='pull-right toggle-right-col not-list-item'><?php echo $lang->doc->closed?><i class='icon icon-angle-right'></i></a>
  66. </div>
  67. <?php endif;?>
  68. </div>
  69. <div id="gray-line" hidden></div>
  70. <div id="closed" hidden><?php echo $lang->doc->closed?></div>
  71. <div class="table-col col-right objectTree">
  72. <div class='list-group objects'><?php echo $closedObjectsHtml;?></div>
  73. </div>
  74. </div>
  75. <script>
  76. $(function()
  77. {
  78. $('#swapper [data-ride="tree"]').tree('expand');
  79. <?php if(isset($closedObjects[$objectID])):?>
  80. $('.col-footer .toggle-right-col').click(function(){ scrollToSelected(); })
  81. <?php else:?>
  82. scrollToSelected();
  83. <?php endif;?>
  84. $('.nav-tabs li span').hide();
  85. $('.nav-tabs li.active').find('span').show();
  86. $('.nav-tabs>li a').click(function()
  87. {
  88. if($('#swapper input[type="search"]').val() == '')
  89. {
  90. $(this).siblings().show();
  91. $(this).parent().siblings('li').find('span').hide();
  92. }
  93. })
  94. $('#swapper #dropMenu .search-box').on('onSearchChange', function(event, value)
  95. {
  96. if(value != '')
  97. {
  98. $('div.hide-in-search').siblings('i').addClass('hide-in-search');
  99. $('.nav-tabs li span').hide();
  100. }
  101. else
  102. {
  103. $('div.hide-in-search').siblings('i').removeClass('hide-in-search');
  104. $('li.has-list div.hide-in-search').removeClass('hidden');
  105. $('.nav-tabs li.active').find('span').show();
  106. }
  107. if($('.form-control.search-input').val().length > 0)
  108. {
  109. $('#closed').attr("hidden", false);
  110. $('#gray-line').attr("hidden", false);
  111. }
  112. else
  113. {
  114. $('#closed').attr("hidden", true);
  115. $('#gray-line').attr("hidden", true);
  116. }
  117. });
  118. $('#swapper #dropMenu').on('onSearchComplete', function()
  119. {
  120. var listItem = $(this).find('.has-list');
  121. listItem.each(function()
  122. {
  123. $(this).css('display','')
  124. var $hidden = $(this).find('.hidden');
  125. var $item = $(this).find('.search-list-item');
  126. if($hidden.length == $item.length) $(this).css('display','none');
  127. });
  128. if($('.list-group.objects').height() == 0)
  129. {
  130. $('#closed').attr("hidden", true);
  131. $('#gray-line').attr("hidden", true);
  132. }
  133. });
  134. $('.objectTree a').on('click', function()
  135. {
  136. var objectType = $(this).data('type');
  137. var objectID = $(this).data('id');
  138. $.cookie('objectType', objectType, {expires: config.cookieLife, path: config.webRoot});
  139. $.cookie('objectID', objectID, {expires: config.cookieLife, path: config.webRoot});
  140. });
  141. })
  142. </script>