index.html 7.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  1. <include file="public@header"/>
  2. </head>
  3. <body>
  4. <div class="wrap js-check-wrap">
  5. <ul class="nav nav-tabs">
  6. <li class="active"><a href="{:url('Plugin/index')}">{:lang('ADMIN_PLUGIN_INDEX')}</a></li>
  7. <if condition="class_exists('\app\admin\controller\AppStoreController')">
  8. <li><a href="{:url('AppStore/plugins')}">{:lang('ADMIN_APPSTORE_PLUGINS')}</a></li>
  9. </if>
  10. <li>
  11. <a href="http://www.thinkcmf.com/faq.html?url=https://www.kancloud.cn/thinkcmf/faq/493510" target="_blank">插件离线安装<i
  12. class="fa fa-question-circle"></i></a>
  13. </li>
  14. <li><a href="http://www.thinkcmf.com/topic/index/index/cat/9.html" target="_blank">插件交流</a></li>
  15. <li><a href="https://www.thinkcmf.com/docs/cmf6/#/%E6%8F%92%E4%BB%B6" target="_blank">插件文档</a></li>
  16. </ul>
  17. <form method="post" class="js-ajax-form margin-top-20">
  18. <php>
  19. $status=array("1"=>'开启',"0"=>'禁用',"3"=>'未安装');
  20. </php>
  21. <table class="table table-hover table-bordered">
  22. <thead>
  23. <tr>
  24. <th>{:lang('Name')}</th>
  25. <th>{:lang('Key')}</th>
  26. <th>{:lang('Description')}</th>
  27. <th>{:lang('Author')}</th>
  28. <th>{:lang('Version')}</th>
  29. <th width="60">{:lang('Status')}</th>
  30. <th width="225">{:lang('ACTIONS')}</th>
  31. </tr>
  32. </thead>
  33. <tbody>
  34. <foreach name="plugins" item="vo">
  35. <tr>
  36. <td>{$vo.title}</td>
  37. <td><span class="label label-info">{$vo.name}</span></td>
  38. <td>{$vo.description}</td>
  39. <td>{$vo.author}</td>
  40. <td><span class="label label-success">{$vo.version}</span></td>
  41. <td>{$status[$vo['status']]}</td>
  42. <td>
  43. <if condition="$vo['status']==3">
  44. <a class="btn btn-xs btn-primary js-ajax-dialog-btn"
  45. href="{:url('Plugin/install',array('name'=>$vo['name']))}"
  46. data-msg="确定安装该插件吗?">{:lang('Install')}</a>
  47. <else/>
  48. <php>$config=json_decode($vo['config'],true);</php>
  49. <!-- Single button -->
  50. <span class="dropdown">
  51. <span class="btn btn-primary btn-xs dropdown-toggle" data-toggle="dropdown"
  52. aria-haspopup="true" aria-expanded="false">
  53. 设置<span class="caret"></span>
  54. </span>
  55. <ul class="dropdown-menu">
  56. <if condition="!empty($config)">
  57. <empty name="config.custom_config">
  58. <li>
  59. <a data-href="{:url('Plugin/setting',array('id'=>$vo['id']))}"
  60. href="javascript:;" onclick="openPluginSettingDialog(this)"><i class="fa fa-cog fa-fw"></i> 插件设置</a>
  61. </li>
  62. <else/>
  63. <li>
  64. <a data-href="{:cmf_plugin_url($vo['name'].'://AdminIndex/setting')}"
  65. href="javascript:;" onclick="openPluginSettingDialog(this)"><i class="fa fa-cog fa-fw"></i> 插件设置</a>
  66. </li>
  67. </empty>
  68. </if>
  69. <li>
  70. <a data-href="{:url('admin/Plugin/hooks',['id'=>$vo.id])}"
  71. href="javascript:;" onclick="openPluginHooksDialog(this)"><i class="fa fa-list-ol fa-fw"></i> 执行顺序</a>
  72. </li>
  73. </ul>
  74. </span>
  75. <if condition="!empty($vo['has_admin'])">
  76. <a class="btn btn-xs btn-info"
  77. href="javascript:parent.openapp('{:cmf_plugin_url($vo['name'].'://AdminIndex/index')}','plugin_{$vo.name}','{$vo.title}')">管理</a>
  78. <else/>
  79. <a class="btn btn-xs btn-info disabled" href="javascript:;">管理</a>
  80. </if>
  81. <a class="btn btn-xs btn-success js-ajax-dialog-btn"
  82. href="{:url('Plugin/update',array('name'=>$vo['name']))}"
  83. data-msg="确定更新该插件吗?">{:lang('Update')}</a>
  84. <if condition="$vo['status']==0">
  85. <a class="btn btn-xs btn-success js-ajax-dialog-btn"
  86. href="{:url('Plugin/toggle',array('id'=>$vo['id'],'enable'=>1))}"
  87. data-msg="确定启用该插件吗?">{:lang('Enable')}</a>
  88. <else/>
  89. <a class="btn btn-xs btn-warning js-ajax-dialog-btn"
  90. href="{:url('Plugin/toggle',array('id'=>$vo['id'],'disable'=>1))}"
  91. data-msg="确定禁用该插件吗?">{:lang('Disable')}</a>
  92. </if>
  93. <a class="btn btn-xs btn-danger js-ajax-dialog-btn"
  94. href="{:url('Plugin/uninstall',array('id'=>$vo['id']))}"
  95. data-msg="确定卸载该插件吗?">{:lang('Uninstall')}</a>
  96. </if>
  97. </td>
  98. </tr>
  99. </foreach>
  100. </tbody>
  101. </table>
  102. </form>
  103. </div>
  104. <script src="__STATIC__/js/admin.js?v={$_static_version}"></script>
  105. <script>
  106. function openPluginSettingDialog(obj) {
  107. var $obj = $(obj);
  108. var href = $obj.data('href');
  109. parent.openIframeLayer(href, '插件设置', {
  110. area: GV.IS_MOBILE ? ['100%', '100%'] : ['95%', '95%'],
  111. offset: GV.IS_MOBILE ? ['0px', '0px'] : 'auto',
  112. // btn: ['确定', '取消'],
  113. yes: function (index, layero) {
  114. console.log(layero);
  115. var iframeWin = parent.window[layero.find('iframe')[0]['name']];
  116. //iframeWin.confirm();
  117. parent.layer.close(index); //如果设定了yes回调,需进行手工关闭
  118. },
  119. end: function () {
  120. }
  121. });
  122. }
  123. function openPluginHooksDialog(obj) {
  124. var $obj = $(obj);
  125. var href = $obj.data('href');
  126. parent.openIframeLayer(href, '插件钩子', {
  127. area: GV.IS_MOBILE ? ['100%', '100%'] : ['95%', '95%'],
  128. offset: GV.IS_MOBILE ? ['0px', '0px'] : 'auto',
  129. // btn: ['确定', '取消'],
  130. yes: function (index, layero) {
  131. console.log(layero);
  132. var iframeWin = parent.window[layero.find('iframe')[0]['name']];
  133. //iframeWin.confirm();
  134. parent.layer.close(index); //如果设定了yes回调,需进行手工关闭
  135. },
  136. end: function () {
  137. }
  138. });
  139. }
  140. </script>
  141. </body>
  142. </html>