appsList.ftl 9.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251
  1. <!DOCTYPE HTML>
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4. <#include "../layout/header.ftl"/>
  5. <#include "../layout/common.cssjs.ftl"/>
  6. <script type="text/javascript">
  7. function iconFormatter(value, options, rData){
  8. return "<img width='30' height='30' border='0px' src='<@base/>/image/"+rData["id"]+"'/>";
  9. };
  10. function vendorFormatter(value, options, rData){
  11. if(value!=null&&value!=""){
  12. return "<a href='"+rData["vendorUrl"]+"' target='_blank'>"+value+"</a>";
  13. }else{
  14. return value==""?"":value;
  15. }
  16. };
  17. function parserProtocolPath(protocol){
  18. if(protocol=="<%=PROTOCOLS.FORMBASED%>"){
  19. protocolPath="formbased";
  20. }else if(protocol=="<%=PROTOCOLS.TOKENBASED%>"){
  21. protocolPath="tokenbased";
  22. }else if(protocol=="<%=PROTOCOLS.OAUTH10A%>"){
  23. protocolPath="oauth10a";
  24. }else if(protocol=="<%=PROTOCOLS.OAUTH20%>"){
  25. protocolPath="oauth20";
  26. }else if(protocol=="<%=PROTOCOLS.SAML11%>"){
  27. protocolPath="saml11";
  28. }else if(protocol=="<%=PROTOCOLS.SAML20%>"){
  29. protocolPath="saml20";
  30. }else if(protocol=="<%=PROTOCOLS.DESKTOP%>"){
  31. protocolPath="desktop";
  32. }else if(protocol=="<%=PROTOCOLS.BASIC%>"){
  33. protocolPath="basic";
  34. }else if(protocol=="<%=PROTOCOLS.EXTEND_API%>"){
  35. protocolPath="extendapi";
  36. }else if(protocol=="<%=PROTOCOLS.LTPA%>"){
  37. protocolPath="ltpa";
  38. }else if(protocol=="<%=PROTOCOLS.CAS%>"){
  39. protocolPath="cas";
  40. }
  41. return protocolPath;
  42. };
  43. $(function () {
  44. $("#modifyApps").on("click",function(){
  45. var selectIds = $("#list").jqGrid("getGridParam", "selrow");
  46. if(selectIds == null || selectIds == "") {
  47. $.alert({content:$.platform.messages.select.alertText});
  48. return false;
  49. }
  50. var selData= $("#list").jqGrid("getRowData",selectIds);
  51. $.forward({url:"<@base/>/apps/"+parserProtocolPath(selData["protocol"])+"/forwardUpdate/"+selData["id"]});
  52. });
  53. //delete and batch delete button
  54. $("#deleteApps").click(function(){
  55. var selectIds = $("#list").jqGrid("getGridParam", "selrow");
  56. if($("#list")){//get grid list selected ids
  57. if(selectIds == null || selectIds == "") {
  58. $.alert({content:$.platform.messages.select.alertText});
  59. return;
  60. }
  61. }
  62. var selData= $("#list").getRowData(selectIds+"");
  63. var _this=this;
  64. $.conform({//conform action
  65. content : $.platform.messages.del.conformText,
  66. callback : function () {
  67. //delete action post to url with ids
  68. var deleteUrl="<@base/>/apps/"+parserProtocolPath(selData["protocol"])+"/delete/"+selData["id"];
  69. $.post(deleteUrl, {_method:"delete",currTime:(new Date()).getTime()}, function(data) {
  70. //alert delete result
  71. $.alert({content:data.message,type:$.platform.messages.messageType[data.messageType]});
  72. //refresh grid list
  73. if($("#list")){
  74. $("#list").jqGrid('setGridParam').trigger("reloadGrid");
  75. }
  76. });
  77. }
  78. });
  79. });
  80. $( "#addApps" ).click(function() {
  81. var menu = $("#menu").show().position({
  82. my: "left top",
  83. at: "left bottom",
  84. of: this
  85. });
  86. $( document ).on( "click", function() {
  87. menu.hide();
  88. });
  89. return false;
  90. });
  91. $(".select-menu-item").mouseover(function() {
  92. $( this ).addClass( 'select-menu-item-selected' );
  93. }).mouseout(function() {
  94. $( this ).removeClass( 'select-menu-item-selected' );
  95. });
  96. });
  97. </script>
  98. </head>
  99. <body>
  100. <div class="app header-default side-nav-dark">
  101. <div class="layout">
  102. <div class="header navbar">
  103. <#include "../layout/top.ftl"/>
  104. </div>
  105. <div class="col-md-3 sidebar-nav side-nav" >
  106. <#include "../layout/sidenav.ftl"/>
  107. </div>
  108. <div class="page-container">
  109. <div class="main-content">
  110. <div class="container-fluid">
  111. <div class="breadcrumb-wrapper row">
  112. <div class="col-12 col-lg-3 col-md-6">
  113. <h4 class="page-title">Dashboard 2</h4>
  114. </div>
  115. <div class="col-12 col-lg-9 col-md-6">
  116. <ol class="breadcrumb float-right">
  117. <li><a href="index.html">Dashboard</a></li>
  118. <li class="active">/ Dashboard 2</li>
  119. </ol>
  120. </div>
  121. </div>
  122. </div>
  123. <div class="col-12 grid-margin">
  124. <div class="card">
  125. <div class="card-body">
  126. <table class="table table-bordered">
  127. <tr>
  128. <td width="120px"><@locale code="apps.name"/>:</td>
  129. <td width="375px">
  130. <form id="basic_search_form">
  131. <input class="form-control" type="text" name="name" style ="width:150px;float:left;">
  132. <input class="button btn btn-primary mr-3" id="searchBtn" type="button" size="50" value="<@locale code="button.text.search"/>">
  133. <input class="button btn btn-secondary" id="advancedSearchExpandBtn" type="button" size="50" value="<@locale code="button.text.expandsearch"/>" expandValue="<@locale code="button.text.expandsearch"/>" collapseValue="<@locale code="button.text.collapsesearch"/>">
  134. </form>
  135. </td>
  136. <td colspan="2">
  137. <div id="tool_box_right">
  138. <a class="button btn btn-success mr-3" id="addApps" style="width: 70px;">
  139. <span class="ui-button-icon-secondary ui-icon ui-icon-triangle-1-s" style="margin-top: 10px;float: left;"></span>
  140. <@locale code="button.text.add"/>
  141. </a>
  142. <div id="menu" class="select-menu-modal " style="width: 150px;">
  143. <div class="select-menu-item"><a href="<@base/>/apps/formbased/forwardAdd"><div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<@locale code="apps.protocol.formbased" /></div></a></div>
  144. <div class="select-menu-item"><a href="<@base/>/apps/desktop/forwardAdd"><div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<@locale code="apps.protocol.desktop" /></div></a></div>
  145. <div class="select-menu-item"><a href="<@base/>/apps/tokenbased/forwardAdd"><div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<@locale code="apps.protocol.tokenbased" /></div></a></div>
  146. <div class="select-menu-item"><a href="<@base/>/apps/oauth20/forwardAdd"><div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<@locale code="apps.protocol.oauth2.0" /></div></a></div>
  147. <div class="select-menu-item"><a href="<@base/>/apps/saml20/forwardAdd"><div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<@locale code="apps.protocol.saml2.0" /></div></a></div>
  148. <div class="select-menu-item"><a href="<@base/>/apps/ltpa/forwardAdd"><div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<@locale code="apps.protocol.ltpa" /></div></a></div>
  149. <div class="select-menu-item"><a href="<@base/>/apps/cas/forwardAdd"><div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<@locale code="apps.protocol.cas" /></div></a></div>
  150. <div class="select-menu-item"><a href="<@base/>/apps/extendapi/forwardAdd"><div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<@locale code="apps.protocol.extendapi" /></div></a></div>
  151. <div class="select-menu-item"><a href="<@base/>/apps/basic/forwardAdd"><div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<@locale code="apps.protocol.basic" /></div></a></div>
  152. </div>
  153. <input class="button btn btn-info mr-3 " id="modifyApps" type="button" value="<@locale code="button.text.edit"/>" />
  154. <input class="button btn btn-danger mr-3 " id="deleteApps" type="button" value="<@locale code="button.text.delete"/>" />
  155. </div>
  156. </td>
  157. </tr>
  158. </table>
  159. </div>
  160. <div id="advanced_search">
  161. <form id="advanced_search_form">
  162. <table class="datatable">
  163. <tr>
  164. <td width="120px"><@locale code="apps.protocol"/></td>
  165. <td width="374px">
  166. <select name="protocol" class="select_protocol">
  167. <option value="" selected>Select</option>
  168. <option value="<%=PROTOCOLS.FORMBASED%>"><%=PROTOCOLS.FORMBASED%></option>
  169. <option value="<%=PROTOCOLS.OPEN_ID_CONNECT%>"><%=PROTOCOLS.OPEN_ID_CONNECT%></option>
  170. <option value="<%=PROTOCOLS.OAUTH10A%>"><%=PROTOCOLS.OAUTH10A%></option>
  171. <option value="<%=PROTOCOLS.OAUTH20%>"><%=PROTOCOLS.OAUTH20%></option>
  172. <option value="<%=PROTOCOLS.SAML11%>"><%=PROTOCOLS.SAML11%></option>
  173. <option value="<%=PROTOCOLS.SAML20%>"><%=PROTOCOLS.SAML20%></option>
  174. <option value="<%=PROTOCOLS.TOKENBASED%>"><%=PROTOCOLS.TOKENBASED%></option>
  175. <option value="<%=PROTOCOLS.DESKTOP%>"><%=PROTOCOLS.DESKTOP%></option>
  176. <option value="<%=PROTOCOLS.BASIC%>"><%=PROTOCOLS.BASIC%></option>
  177. </select>
  178. </td>
  179. <td width="120px"><@locale code="apps.vendor"/></td>
  180. <td width="374px">
  181. <input id="vendor" name="vendor" type="text" size="50" value="">
  182. </tr>
  183. </table>
  184. </form>
  185. </div>
  186. <table data-url="<@base/>/apps/grid"
  187. id="datagrid"
  188. data-toggle="table"
  189. data-classes="table table-bordered table-hover table-striped"
  190. data-pagination="true"
  191. data-total-field="records"
  192. data-page-list="[10, 25, 50, 100]"
  193. data-search="false"
  194. data-locale="zh-CN"
  195. data-query-params="dataGridQueryParams"
  196. data-query-params-type="pageSize"
  197. data-side-pagination="server">
  198. <thead>
  199. <tr>
  200. <th data-sortable="true" data-field="id" data-visible="false">Id</th>
  201. <th data-field="sessionId"><@locale code="apps.icon"/></th>
  202. <th data-field="name"><@locale code="apps.name"/></th>
  203. <th data-field="protocol"><@locale code="apps.protocol"/></th>
  204. <th data-field="category"><@locale code="apps.category"/></th>
  205. <th data-field="vendor"><@locale code="apps.vendor"/></th>
  206. <th data-field="loginUrl"><@locale code="log.loginhistory.loginUrl"/></th>
  207. </tr>
  208. </thead>
  209. </table>
  210. </div>
  211. </div>
  212. <footer class="content-footer">
  213. <#include "../layout/footer.ftl"/>
  214. </footer>
  215. </div>
  216. </div>
  217. </div>
  218. <div id="preloader">
  219. <div class="loader" id="loader-1"></div>
  220. </div>
  221. </body>
  222. </html>