browse.html.php 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239
  1. <?php
  2. /**
  3. * The browse view file of dataview module of ZenTaoPMS.
  4. *
  5. * @copyright Copyright 2009-2023 禅道软件(青岛)有限公司(ZenTao Software (Qingdao) Co., Ltd. www.cnezsoft.com)
  6. * @license ZPL (http://zpl.pub/page/zplv12.html)
  7. * @author Chenxuan Song <1097180981@qq.com>
  8. * @package dataview
  9. * @version $Id: browse.html.php 4129 2022-11-14 14:42:12 $
  10. * @link https://www.zentao.net
  11. */
  12. ?>
  13. <?php include $app->getModuleRoot() . 'common/view/header.html.php';?>
  14. <?php js::set('table', $selectedTable);?>
  15. <?php js::set('type', $type);?>
  16. <?php js::set('dataview', $data ? $data : '');?>
  17. <?php js::set('fieldCount', count($fields));?>
  18. <?php js::set('warningDesign', $lang->dataview->error->warningDesign);?>
  19. <?php js::set('viewResult', $lang->dataview->viewResult);?>
  20. <?php js::set('pageID', $pageID);?>
  21. <?php js::set('recPerPage', $recPerPage);?>
  22. <?php js::set('recTotal', $recTotal);?>
  23. <?php js::set('recTotalTip', $lang->dataview->recTotalTip);?>
  24. <?php js::set('recPerPageTip', $lang->dataview->recPerPageTip);?>
  25. <div id='mainMenu' class='clearfix'>
  26. <div class='btn-toolbar pull-left'><?php // common::printAdminSubMenu('dev');?></div>
  27. <div class="btn-toolbar pull-right">
  28. <?php if($selectedTable):?>
  29. <?php if(common::hasPriv('dataview', 'export')) echo html::a($this->createLink('dataview', 'export', "type=$type&table=$selectedTable", '', true), "<i class='icon icon-export'></i> {$lang->dataview->export}", '', "class='iframe btn btn-link dataview-export'");?>
  30. <?php endif;?>
  31. <?php if(common::hasPriv('dataview', 'create')) echo html::a($this->createLink('dataview', 'create'), "<i class='icon icon-plus'></i><span class='text'>" . $lang->dataview->create . "</span>", '', "class='btn btn-secondary'");?>
  32. </div>
  33. </div>
  34. <script>$('#mainMenu #<?php echo $tab;?>').addClass('btn-active-text')</script>
  35. <div id='mainContent' class='main-row'>
  36. <div class='side-col' id='sidebar'>
  37. <div class='cell'>
  38. <div class="panel panel-sm with-list">
  39. <div class='panel-heading'>
  40. <?php foreach($lang->dataview->typeList as $key => $label):?>
  41. <?php echo html::a(inlink('browse', "type=$key"), "<span class='text'>$label</span>", '', "class='btn btn-link " . ($type == $key ? 'btn-active-text' : '') . "'");?>
  42. <?php endforeach;?>
  43. </div>
  44. <?php if($type == 'table') echo $originTable;?>
  45. <?php if($type == 'view'):?>
  46. <?php if(!$groupTree):?>
  47. <hr class="space">
  48. <div class="text-center text-muted">
  49. <?php echo $lang->dataview->noModule;?>
  50. </div>
  51. <hr class="space">
  52. <?php endif;?>
  53. <?php echo $groupTree;?>
  54. <div class="text-center">
  55. <?php common::printLink('tree', 'browsegroup', "dimensionID=0&groupID=0&type=dataview", $lang->dataview->manageGroup, '', "class='btn btn-info btn-wide'");?>
  56. <hr class="space-sm" />
  57. </div>
  58. <?php endif;?>
  59. </div>
  60. </div>
  61. </div>
  62. <div id='dataContent' class='main-col main-content'>
  63. <div class='detail'>
  64. <div class='detail-title'>
  65. <div class='dataview-title' title='<?php echo $dataTitle;?>'><?php echo $dataTitle;?><?php if($type == 'table') echo "<span class='table-code'>$table</span>";?></div>
  66. <div class='actions pull-right'>
  67. <?php if($selectedTable and isset($dataview)):?>
  68. <?php
  69. $designTitle = $lang->dataview->design;
  70. $editTitle = $lang->dataview->edit;
  71. $deleteTitle = $lang->dataview->delete;
  72. if(common::hasPriv('dataview', 'query') and $type == 'view') echo html::a('#', "<i class='icon icon-design'></i> {$lang->dataview->design}", '', "class='query-view' title='{$designTitle}'");
  73. if(common::hasPriv('dataview', 'edit') and $type == 'view') echo html::a($this->createLink('dataview', 'edit', "id=$selectedTable", '', true), "<i class='icon icon-edit'></i> {$lang->dataview->edit}", '', "class='iframe' title='{$editTitle}' data-width='480'");
  74. if(common::hasPriv('dataview', 'delete') and $type == 'view') echo html::a($this->createLink('dataview', 'delete', "id=$selectedTable"), "<i class='icon icon-trash'></i> {$lang->dataview->delete}", 'hiddenwin', "class='query-delete' title='{$deleteTitle}'");
  75. ?>
  76. <?php endif;?>
  77. </div>
  78. </div>
  79. <?php if($selectedTable):?>
  80. <div class='detail-content'>
  81. <div class='tabs'>
  82. <ul class='nav nav-tabs'>
  83. <li class='active'><a href='#data' data-toggle='tab' onclick="setExport('show')"><?php echo $lang->dataview->data;?></a></li>
  84. <li><a href='#schema' data-toggle='tab' onclick="setExport('hide')"><?php echo $lang->dataview->schema;?></a></li>
  85. <?php if(!empty($dataview)):?>
  86. <li><a href='#details' data-toggle='tab' onclick="setExport('hide')"><?php echo $lang->dataview->details;?></a></li>
  87. <?php endif;?>
  88. </ul>
  89. <div class='tab-content '>
  90. <div class='tab-pane active' id='data'>
  91. <?php if(!empty($fields)):?>
  92. <div id='datas'>
  93. <table class="table table-bordered" style="min-width: <?php echo count($fields)*100;?>px">
  94. <thead>
  95. <tr>
  96. <?php foreach($fields as $key => $field):?>
  97. <?php
  98. $fieldName = isset($dataview->fieldSettings->$key->name) ? $dataview->fieldSettings->$key->name : $key;
  99. if(!empty($dataview->langs))
  100. {
  101. $langs = json_decode($dataview->langs, true);
  102. if(!empty($langs)) $fieldName = $langs[$key][$clientLang] ? $langs[$key][$clientLang] : $fieldName;
  103. }
  104. ?>
  105. <th><?php echo $fieldName;?></th>
  106. <?php endforeach;?>
  107. </tr>
  108. </thead>
  109. <tbody>
  110. <?php foreach($data as $value):?>
  111. <?php echo '<tr>';?>
  112. <?php foreach($fields as $key => $field):?>
  113. <?php $tdValue = isset($value->$key) ? $value->$key : 'null';?>
  114. <td title='<?php echo $tdValue;?>'><?php echo $tdValue;?></td>
  115. <?php endforeach;?>
  116. <?php echo '</tr>';?>
  117. <?php endforeach;?>
  118. </tbody>
  119. </table>
  120. </div>
  121. <div class='table-footer'>
  122. <ul class="pager">
  123. <li><div class="pager-label recTotal"></div></li>
  124. <li>
  125. <div class="btn-group pager-size-menu dropup">
  126. <button type="button" class="btn dropdown-toggle recPerPage" data-toggle="dropdown" style="border-radius: 4px;"></button>
  127. <ul class="dropdown-menu">
  128. <li><a href="javascript:;" data-size="5">5</a></li>
  129. <li><a href="javascript:;" data-size="10">10</a></li>
  130. <li><a href="javascript:;" data-size="15">15</a></li>
  131. <li><a href="javascript:;" data-size="20">20</a></li>
  132. <li><a href="javascript:;" data-size="25">25</a></li>
  133. <li><a href="javascript:;" data-size="30">30</a></li>
  134. <li><a href="javascript:;" data-size="35">35</a></li>
  135. <li><a href="javascript:;" data-size="40">40</a></li>
  136. <li><a href="javascript:;" data-size="45">45</a></li>
  137. <li><a href="javascript:;" data-size="50">50</a></li>
  138. <li><a href="javascript:;" data-size="100">100</a></li>
  139. <li><a href="javascript:;" data-size="200">200</a></li>
  140. <li><a href="javascript:;" data-size="500">500</a></li>
  141. <li><a href="javascript:;" data-size="1000">1000</a></li>
  142. <li><a href="javascript:;" data-size="2000">2000</a></li>
  143. </ul>
  144. </div>
  145. </li>
  146. <li class='pager-item-left first-page'>
  147. <a class='pager-item' data-page='1' href='javascript:;'><i class='icon icon-first-page'></i></a>
  148. </li>
  149. <li class='pager-item-left left-page'>
  150. <a class='pager-item' data-page='1' href='javascript:;'><i class='icon icon-angle-left'></i></a>
  151. </li>
  152. <li><div class='pager-label page-number'></div></li>
  153. <li class='pager-item-right right-page'>
  154. <a class='pager-item' data-page='1' href='javascript:;'><i class='icon icon-angle-right'></i></a>
  155. </li>
  156. <li class='pager-item-right last-page'>
  157. <a class='pager-item' data-page='1' href='javascript:;'><i class='icon icon-last-page'></i></a>
  158. </li>
  159. </ul>
  160. <span style="float:left;line-height:28px" id="queryResult"></span>
  161. </div>
  162. <?php endif;?>
  163. </div>
  164. <div class='tab-pane' id='schema'>
  165. <?php if(!empty($fields)):?>
  166. <table class="table table-bordered">
  167. <thead>
  168. <tr>
  169. <th class='w-id'><?php echo $lang->dev->fields['id']?></th>
  170. <th><?php echo $lang->dev->fields['name']?></th>
  171. <?php if(strpos($selectedTable, $this->config->db->prefix) !== false) echo "<th>{$lang->dev->fields['desc']}</th>"?>
  172. <th><?php echo $lang->dev->fields['type']?></th>
  173. <th><?php echo $lang->dev->fields['length']?></th>
  174. <th><?php echo $lang->dev->fields['null']?></th>
  175. </tr>
  176. </thead>
  177. <tbody>
  178. <?php $i = 1;?>
  179. <?php foreach($fields as $key => $field):?>
  180. <tr>
  181. <td title='<?php echo $i;?>'><?php echo $i;?></td>
  182. <td title='<?php echo $key;?>'><?php echo $key;?></td>
  183. <?php if(strpos($selectedTable, $this->config->db->prefix) !== false) echo "<td title='{$field['name']}'>{$field['name']}</td>"?>
  184. <td title="<?php echo $field['type'];?>"><?php echo $field['type'];?></td>
  185. <td title='<?php echo isset($field['options']['max']) ? $field['options']['max'] : '';?>'><?php echo isset($field['options']['max']) ? $field['options']['max'] : '';?></td>
  186. <td title='<?php echo $field['null'];?>'><?php echo $field['null'];?></td>
  187. </tr>
  188. <?php $i++; endforeach?>
  189. </tbody>
  190. </table>
  191. <?php endif;?>
  192. </div>
  193. <?php if(!empty($dataview)):?>
  194. <div class='tab-pane' id='details'>
  195. <table class="table table-data table-fixed">
  196. <tbody>
  197. <tr>
  198. <th><?php echo $lang->dataview->name;?></th>
  199. <td title='<?php echo $dataview->name;?>'><?php echo $dataview->name;?></td>
  200. </tr>
  201. <tr>
  202. <th><?php echo $lang->dataview->code;?></th>
  203. <td><?php echo $dataview->code;?></td>
  204. </tr>
  205. <tr>
  206. <th><?php echo $lang->dataview->view;?></th>
  207. <td><?php echo empty($dataview->sql) ? '' : $dataview->view;?></td>
  208. </tr>
  209. <tr>
  210. <th><?php echo $lang->dataview->group;?></th>
  211. <td><?php echo zget($groups, $dataview->group);?></td>
  212. </tr>
  213. <tr>
  214. <th><?php echo $lang->dataview->sql;?></th>
  215. <td class='dataview-sql'><?php echo $dataview->sql;?></td>
  216. </tr>
  217. </tbody>
  218. </table>
  219. </div>
  220. <?php endif;?>
  221. </div>
  222. </div>
  223. </div>
  224. <?php else:?>
  225. <div class='detail-content'>
  226. <div class="table-empty-tip">
  227. <p><span class="text-muted"><?php echo $lang->dataview->notSelect;?></span></p>
  228. </div>
  229. </div>
  230. <?php endif;?>
  231. </div>
  232. </div>
  233. </div>
  234. <?php include $this->app->getModuleRoot() . 'common/view/footer.html.php';?>