index.tpl 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241
  1. <!DOCTYPE html>
  2. <html lang="zh-CN">
  3. <head>
  4. <meta charset="utf-8">
  5. <meta http-equiv="X-UA-Compatible" content="IE=edge">
  6. <meta name="viewport" content="width=device-width, initial-scale=1">
  7. <title>我的项目 - Powered by MinDoc</title>
  8. <!-- Bootstrap -->
  9. <link href="{{cdncss "/static/bootstrap/css/bootstrap.min.css"}}" rel="stylesheet" type="text/css">
  10. <link href="{{cdncss "/static/font-awesome/css/font-awesome.min.css"}}" rel="stylesheet" type="text/css">
  11. <link href="{{cdncss "/static/css/main.css"}}" rel="stylesheet">
  12. <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
  13. <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
  14. <!--[if lt IE 9]>
  15. <script src="/static/html5shiv/3.7.3/html5shiv.min.js"></script>
  16. <script src="/static/respond.js/1.4.2/respond.min.js"></script>
  17. <![endif]-->
  18. </head>
  19. <body>
  20. <div class="manual-reader">
  21. {{template "widgets/header.tpl" .}}
  22. <div class="container manual-body">
  23. <div class="row">
  24. <div class="page-left">
  25. <ul class="menu">
  26. <li class="active"><a href="{{urlfor "SettingController.Index"}}" class="item"><i class="fa fa-sitemap" aria-hidden="true"></i> 我的项目</a> </li>
  27. </ul>
  28. </div>
  29. <div class="page-right">
  30. <div class="m-box">
  31. <div class="box-head">
  32. <strong class="box-title">项目列表</strong>
  33. <button type="button" data-toggle="modal" data-target="#addBookDialogModal" class="btn btn-success btn-sm pull-right">添加项目</button>
  34. </div>
  35. </div>
  36. <div class="box-body" id="bookList">
  37. <div class="book-list">
  38. <template v-if="lists.length <= 0">
  39. <div class="text-center">暂无数据</div>
  40. </template>
  41. <template v-else>
  42. <div class="list-item" v-for="item in lists">
  43. <div class="book-title">
  44. <div class="pull-left">
  45. <a :href="'/book/' + item.identify + '/dashboard'" title="项目概要" data-toggle="tooltip">
  46. <template v-if="item.privately_owned == 0">
  47. <i class="fa fa-unlock" aria-hidden="true"></i>
  48. </template>
  49. <template v-else-if="item.privately_owned == 1">
  50. <i class="fa fa-lock" aria-hidden="true"></i>
  51. </template>
  52. ${item.book_name}
  53. </a>
  54. </div>
  55. <div class="pull-right">
  56. <a :href="'{{urlfor "DocumentController.Index" ":key" ""}}' + item.identify" title="查看文档" data-toggle="tooltip" target="_blank"><i class="fa fa-eye"></i> 查看文档</a>
  57. <template v-if="item.role_id != 3">
  58. <a :href="'/api/' + item.identify + '/edit'" title="编辑文档" data-toggle="tooltip" target="_blank"><i class="fa fa-edit" aria-hidden="true"></i> 编辑文档</a>
  59. </template>
  60. </div>
  61. <div class="clearfix"></div>
  62. </div>
  63. <div class="desc-text">
  64. <template v-if="item.description === ''">
  65. &nbsp;
  66. </template>
  67. <template v-else="">
  68. <a :href="'/book/' + item.identify + '/dashboard'" title="项目概要" style="font-size: 12px;">
  69. ${item.description}
  70. </a>
  71. </template>
  72. </div>
  73. <div class="info">
  74. <span title="创建时间" data-toggle="tooltip" data-placement="bottom"><i class="fa fa-clock-o"></i>
  75. ${(new Date(item.create_time)).format("yyyy-MM-dd hh:mm:ss")}
  76. </span>
  77. <span title="创建者" data-toggle="tooltip" data-placement="bottom"><i class="fa fa-user"></i> ${item.create_name}</span>
  78. <span title="文档数量" data-toggle="tooltip" data-placement="bottom"><i class="fa fa-pie-chart"></i> ${item.doc_count}</span>
  79. <span title="项目角色" data-toggle="tooltip" data-placement="bottom"><i class="fa fa-user-secret"></i> ${item.role_name}</span>
  80. <template v-if="item.last_modify_text !== ''">
  81. <span title="最后编辑" data-toggle="tooltip" data-placement="bottom"><i class="fa fa-pencil"></i> 最后编辑: ${item.last_modify_text}</span>
  82. </template>
  83. </div>
  84. </div>
  85. </template>
  86. </div>
  87. <template v-if="lists.length >= 0">
  88. <nav class="pagination-container">
  89. {{.PageHtml}}
  90. </nav>
  91. </template>
  92. </div>
  93. </div>
  94. </div>
  95. </div>
  96. {{template "widgets/footer.tpl" .}}
  97. </div>
  98. <!-- Modal -->
  99. <div class="modal fade" id="addBookDialogModal" tabindex="-1" role="dialog" aria-labelledby="addBookDialogModalLabel">
  100. <div class="modal-dialog" role="document" style="width: 655px">
  101. <form method="post" autocomplete="off" action="{{urlfor "BookController.Create"}}" id="addBookDialogForm">
  102. <div class="modal-content">
  103. <div class="modal-header">
  104. <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
  105. <h4 class="modal-title" id="myModalLabel">添加项目</h4>
  106. </div>
  107. <div class="modal-body">
  108. <div class="form-group">
  109. <input type="text" class="form-control" placeholder="标题(不超过100字)" name="book_name" id="bookName">
  110. </div>
  111. <div class="form-group">
  112. <div class="pull-left" style="padding: 7px 5px 6px 0">
  113. {{.BaseUrl}}{{urlfor "DocumentController.Index" ":key" ""}}
  114. </div>
  115. <input type="text" class="form-control pull-left" style="width: 220px;vertical-align: middle" placeholder="项目唯一标识(不能超过50字)" name="identify" id="identify">
  116. <div class="clearfix"></div>
  117. <p class="text" style="font-size: 12px;color: #999;margin-top: 6px;">文档标识只能包含小写字母、数字,以及“-”和“_”符号,并且只能小写字母开头</p>
  118. </div>
  119. <div class="form-group">
  120. <textarea name="description" id="description" class="form-control" placeholder="描述信息不超过500个字符" style="height: 90px;"></textarea>
  121. </div>
  122. <div class="form-group">
  123. <div class="col-lg-6">
  124. <label>
  125. <input type="radio" name="privately_owned" value="0" checked> 公开<span class="text">(任何人都可以访问)</span>
  126. </label>
  127. </div>
  128. <div class="col-lg-6">
  129. <label>
  130. <input type="radio" name="privately_owned" value="1"> 私有<span class="text">(只要参与者或使用令牌才能访问)</span>
  131. </label>
  132. </div>
  133. <div class="clearfix"></div>
  134. </div>
  135. <!--
  136. {{/*
  137. <div class="form-group">
  138. <div class="col-lg-3">
  139. <label>
  140. <input type="radio" checked name="comment_status" value="open">允许所有人评论<span class="text"></span>
  141. </label>
  142. </div>
  143. <div class="col-lg-3">
  144. <label>
  145. <input type="radio" name="comment_status" value="closed">关闭评论<span class="text"></span>
  146. </label>
  147. </div>
  148. <div class="col-lg-3">
  149. <label>
  150. <input type="radio" name="comment_status" value="group_only">仅允许参与者评论<span class="text"></span>
  151. </label>
  152. </div>
  153. <div class="col-lg-3">
  154. <label>
  155. <input type="radio" name="comment_status" value="registered_only">仅允许注册者评论<span class="text"></span>
  156. </label>
  157. </div>
  158. <div class="clearfix"></div>
  159. </div>
  160. */}}
  161. -->
  162. <div class="clearfix"></div>
  163. </div>
  164. <div class="modal-footer">
  165. <span id="form-error-message"></span>
  166. <button type="button" class="btn btn-default" data-dismiss="modal">取消</button>
  167. <button type="submit" class="btn btn-success" id="btnSaveDocument" data-loading-text="保存中...">保存</button>
  168. </div>
  169. </div>
  170. </form>
  171. </div>
  172. </div><!--END Modal-->
  173. <script src="{{cdnjs "/static/jquery/1.12.4/jquery.min.js"}}" type="text/javascript"></script>
  174. <script src="{{cdnjs "/static/bootstrap/js/bootstrap.min.js"}}" type="text/javascript"></script>
  175. <script src="{{cdnjs "/static/vuejs/vue.min.js"}}" type="text/javascript"></script>
  176. <script src="{{cdnjs "/static/js/jquery.form.js"}}" type="text/javascript"></script>
  177. <script src="/static/js/main.js" type="text/javascript"></script>
  178. <script type="text/javascript">
  179. $(function () {
  180. $("#addBookDialogForm").ajaxForm({
  181. beforeSubmit : function () {
  182. var bookName = $.trim($("#bookName").val());
  183. if(bookName === ""){
  184. return showError("项目标题不能为空")
  185. }
  186. if(bookName.length > 100){
  187. return showError("项目标题必须小于100字符");
  188. }
  189. var identify = $.trim($("#identify").val());
  190. if(identify === ""){
  191. return showError("项目标识不能为空");
  192. }
  193. if(identify.length > 50){
  194. return showError("项目标识必须小于50字符");
  195. }
  196. var description = $.trim($("#description").val());
  197. if(description.length > 500){
  198. return showError("描述信息不超过500个字符");
  199. }
  200. $("#btnSaveDocument").button("loading");
  201. return showSuccess("");
  202. },
  203. success : function (res) {
  204. $("#btnSaveDocument").button("reset");
  205. if(res.errcode === 0){
  206. window.app.lists.splice(0,0,res.data);
  207. $("#addBookDialogModal").modal("hide");
  208. }else{
  209. showError(res.message);
  210. }
  211. }
  212. });
  213. window.app = new Vue({
  214. el : "#bookList",
  215. data : {
  216. lists : {{.Result}}
  217. },
  218. delimiters : ['${','}'],
  219. methods : {
  220. }
  221. });
  222. Vue.nextTick(function () {
  223. $("[data-toggle='tooltip']").tooltip();
  224. });
  225. });
  226. </script>
  227. </body>
  228. </html>