setting.tpl 28 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523
  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>{{i18n $.Lang "common.setting"}} - {{.Model.BookName}} - Powered by MinDoc</title>
  8. <!-- Bootstrap -->
  9. <link href="{{cdncss "/static/bootstrap/css/bootstrap.min.css"}}" rel="stylesheet">
  10. <link href="{{cdncss "/static/font-awesome/css/font-awesome.min.css"}}" rel="stylesheet">
  11. <link href="{{cdncss "/static/webuploader/webuploader.css"}}" rel="stylesheet">
  12. <link href="{{cdncss "/static/cropper/2.3.4/cropper.min.css"}}" rel="stylesheet">
  13. <link href="{{cdncss "/static/bootstrap/plugins/tagsinput/bootstrap-tagsinput.css"}}" rel="stylesheet">
  14. <link href="{{cdncss "/static/bootstrap/plugins/bootstrap-switch/css/bootstrap3//bootstrap-switch.min.css"}}" rel="stylesheet">
  15. <link href="{{cdncss "/static/select2/4.0.5/css/select2.min.css"}}" rel="stylesheet">
  16. <link href="{{cdncss "/static/css/main.css" "version"}}" rel="stylesheet">
  17. </head>
  18. <body>
  19. <div class="manual-reader">
  20. {{template "widgets/header.tpl" .}}
  21. <div class="container manual-body">
  22. <div class="row">
  23. <div class="page-left">
  24. <ul class="menu">
  25. <li><a href="{{urlfor "BookController.Dashboard" ":key" .Model.Identify}}" class="item"><i class="fa fa-dashboard" aria-hidden="true"></i> {{i18n $.Lang "blog.summary"}}</a> </li>
  26. <li><a href="{{urlfor "BookController.Users" ":key" .Model.Identify}}" class="item"><i class="fa fa-user" aria-hidden="true"></i> {{i18n $.Lang "blog.member"}}</a> </li>
  27. <li><a href="{{urlfor "BookController.Team" ":key" .Model.Identify}}" class="item"><i class="fa fa-group" aria-hidden="true"></i> {{i18n $.Lang "blog.team"}}</a> </li>
  28. <li class="active"><a href="{{urlfor "BookController.Setting" ":key" .Model.Identify}}" class="item"><i class="fa fa-gear" aria-hidden="true"></i> {{i18n $.Lang "common.setting"}}</a> </li>
  29. </ul>
  30. </div>
  31. <div class="page-right">
  32. <div class="m-box">
  33. <div class="box-head">
  34. <strong class="box-title"> {{i18n $.Lang "blog.project_setting"}}</strong>
  35. {{if eq .Model.RoleId 0}}
  36. <button type="button" class="btn btn-success btn-sm pull-right" data-toggle="modal" data-target="#transferBookModal">{{i18n $.Lang "blog.handover_project"}}</button>
  37. {{if eq .Model.PrivatelyOwned 1}}
  38. <button type="button" class="btn btn-success btn-sm pull-right" data-toggle="modal" data-target="#changePrivatelyOwnedModal" style="margin-right: 5px;">{{i18n $.Lang "blog.make_public"}}</button>
  39. {{else}}
  40. <button type="button" class="btn btn-danger btn-sm pull-right" data-toggle="modal" data-target="#changePrivatelyOwnedModal" style="margin-right: 5px;">{{i18n $.Lang "blog.make_private"}}</button>
  41. {{end}}
  42. <button type="button" class="btn btn-danger btn-sm pull-right" style="margin-right: 5px;" data-toggle="modal" data-target="#deleteBookModal">{{i18n $.Lang "blog.delete_project"}}</button>
  43. {{end}}
  44. </div>
  45. </div>
  46. <div class="box-body" style="padding-right: 200px;">
  47. <div class="form-left">
  48. <form method="post" id="bookEditForm" action="{{urlfor "BookController.SaveBook"}}">
  49. <input type="hidden" name="identify" value="{{.Model.Identify}}">
  50. <div class="form-group">
  51. <label>{{i18n $.Lang "blog.project_title"}}</label>
  52. <input type="text" class="form-control" name="book_name" id="bookName" placeholder="{{i18n $.Lang "blog.project_title"}}" value="{{.Model.BookName}}">
  53. </div>
  54. <div class="form-group">
  55. <label>{{i18n $.Lang "blog.project_id"}}</label>
  56. <input type="text" class="form-control" value="{{urlfor "DocumentController.Index" ":key" .Model.Identify}}" placeholder="{{i18n $.Lang "blog.project_id"}}" disabled>
  57. <p class="text">{{i18n $.Lang "message.project_id_desc"}}</p>
  58. </div>
  59. <div class="form-group">
  60. <label>{{i18n $.Lang "common.project_space"}}</label>
  61. <select class="js-data-example-ajax form-control" multiple="multiple" name="itemId">
  62. <option value="{{.Model.ItemId}}" selected="selected">{{.Model.ItemName}}</option>
  63. </select>
  64. </div>
  65. <div class="form-group">
  66. <label>{{i18n $.Lang "blog.history_record_amount"}}</label>
  67. <input type="text" class="form-control" name="history_count" value="{{.Model.HistoryCount}}" placeholder="{{i18n $.Lang "blog.history_record_amount"}}">
  68. <p class="text">{{i18n $.Lang "message.history_record_amount_desc"}}</p>
  69. </div>
  70. <div class="form-group">
  71. <label>{{i18n $.Lang "blog.corp_id"}}</label>
  72. <input type="text" class="form-control" name="publisher" value="{{.Model.Publisher}}" placeholder="{{i18n $.Lang "blog.corp_id"}}">
  73. <p class="text">{{i18n $.Lang "message.corp_id_desc"}}</p>
  74. </div>
  75. <div class="form-group">
  76. <label>{{i18n $.Lang "blog.project_desc"}}</label>
  77. <textarea rows="3" class="form-control" name="description" style="height: 90px" placeholder="{{i18n $.Lang "blog.project_desc"}}">{{.Model.Description}}</textarea>
  78. <p class="text">{{i18n $.Lang "message.project_desc_desc"}}</p>
  79. </div>
  80. <div class="form-group">
  81. <label>{{i18n $.Lang "blog.text_editor"}}</label>
  82. <div class="radio">
  83. <label class="radio-inline">
  84. <input type="radio"{{if eq .Model.Editor "markdown"}} checked{{end}} name="editor" value="markdown"> Markdown {{i18n $.Lang "blog.text_editor"}}
  85. </label>
  86. <label class="radio-inline">
  87. <input type="radio"{{if eq .Model.Editor "html"}} checked{{end}} name="editor" value="html"> Html {{i18n $.Lang "blog.text_editor"}}
  88. </label>
  89. </div>
  90. </div>
  91. {{if eq .Model.PrivatelyOwned 1}}
  92. <div class="form-group">
  93. <label>{{i18n $.Lang "blog.access_pass"}}</label>
  94. <input type="text" name="bPassword" id="bPassword" class="form-control" placeholder="{{i18n $.Lang "blog.access_pass"}}" value="{{.Model.BookPassword}}">
  95. <p class="text">{{i18n $.Lang "message.access_pass_desc"}}</p>
  96. </div>
  97. {{end}}
  98. <div class="form-group">
  99. <label for="autoRelease">{{i18n $.Lang "blog.auto_publish"}}</label>
  100. <div class="controls">
  101. <div class="switch switch-small" data-on="primary" data-off="info">
  102. <input type="checkbox" id="autoRelease" name="auto_release"{{if .Model.AutoRelease }} checked{{end}} data-size="small">
  103. </div>
  104. <p class="text">{{i18n $.Lang "message.auto_publish_desc"}}</p>
  105. </div>
  106. </div>
  107. <div class="form-group">
  108. <label for="autoRelease">{{i18n $.Lang "blog.enable_export"}}</label>
  109. <div class="controls">
  110. <div class="switch switch-small" data-on="primary" data-off="info">
  111. <input type="checkbox" id="isDownload" name="is_download"{{if .Model.IsDownload }} checked{{end}} data-size="small" placeholder="{{i18n $.Lang "blog.enable_export"}}">
  112. </div>
  113. <p class="text">{{i18n $.Lang "message.enable_export_desc"}}</p>
  114. </div>
  115. </div>
  116. <div class="form-group">
  117. <label for="autoRelease">{{i18n $.Lang "blog.enable_share"}}</label>
  118. <div class="controls">
  119. <div class="switch switch-small" data-on="primary" data-off="info">
  120. <input type="checkbox" id="enableShare" name="enable_share"{{if .Model.IsEnableShare }} checked{{end}} data-size="small" placeholder="{{i18n $.Lang "blog.enable_share"}}">
  121. </div>
  122. <p class="text">{{i18n $.Lang "message.enable_share_desc"}}</p>
  123. </div>
  124. </div>
  125. <div class="form-group">
  126. <label for="autoRelease">{{i18n $.Lang "blog.set_first_as_home"}}</label>
  127. <div class="controls">
  128. <div class="switch switch-small" data-on="primary" data-off="info">
  129. <input type="checkbox" id="isUseFirstDocument" name="is_use_first_document"{{if .Model.IsUseFirstDocument }} checked{{end}} data-size="small" placeholder="{{i18n $.Lang "blog.set_first_as_home"}}">
  130. </div>
  131. </div>
  132. </div>
  133. <div class="form-group">
  134. <label for="autoRelease">{{i18n $.Lang "blog.auto_save"}}</label>
  135. <div class="controls">
  136. <div class="switch switch-small" data-on="primary" data-off="info">
  137. <input type="checkbox" id="autoSave" name="auto_save"{{if .Model.AutoSave }} checked{{end}} data-size="small" placeholder="{{i18n $.Lang "blog.auto_save"}}">
  138. </div>
  139. <p class="text">{{i18n $.Lang "message.auto_save_desc"}}</p>
  140. </div>
  141. </div>
  142. <div class="form-group">
  143. <button type="submit" id="btnSaveBookInfo" class="btn btn-success" data-loading-text="{{i18n $.Lang "common.processing"}}">{{i18n $.Lang "common.save"}}</button>
  144. <span id="form-error-message" class="error-message"></span>
  145. </div>
  146. </form>
  147. </div>
  148. <div class="form-right">
  149. <label>
  150. <a href="javascript:;" data-toggle="modal" data-target="#upload-logo-panel">
  151. <img src="{{cdnimg .Model.Cover}}" onerror="this.src='{{cdnimg "/static/images/book.png"}}'" alt="{{i18n $.Lang "blog.cover"}}" style="max-width: 120px;border: 1px solid #999" id="headimgurl">
  152. </a>
  153. </label>
  154. <p class="text">{{i18n $.Lang "blog.click_change_cover"}}</p>
  155. </div>
  156. <div class="clearfix"></div>
  157. </div>
  158. </div>
  159. </div>
  160. </div>
  161. {{template "widgets/footer.tpl" .}}
  162. </div>
  163. <!-- Modal -->
  164. <div class="modal fade" id="changePrivatelyOwnedModal" tabindex="-1" role="dialog" aria-labelledby="changePrivatelyOwnedModalLabel">
  165. <div class="modal-dialog" role="document">
  166. <form method="post" action="{{urlfor "BookController.PrivatelyOwned" }}" id="changePrivatelyOwnedForm">
  167. <input type="hidden" name="identify" value="{{.Model.Identify}}">
  168. <input type="hidden" name="status" value="{{if eq .Model.PrivatelyOwned 0}}close{{else}}open{{end}}">
  169. <div class="modal-content">
  170. <div class="modal-header">
  171. <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
  172. <h4 class="modal-title">
  173. {{if eq .Model.PrivatelyOwned 0}}
  174. {{i18n $.Lang "blog.make_private"}}
  175. {{else}}
  176. {{i18n $.Lang "blog.make_public"}}
  177. {{end}}
  178. </h4>
  179. </div>
  180. <div class="modal-body">
  181. {{if eq .Model.PrivatelyOwned 0}}
  182. <span style="font-size: 14px;font-weight: 400;">{{i18n $.Lang "message.confirm_into_private"}}</span>
  183. <p></p>
  184. <p class="text error-message">{{i18n $.Lang "message.into_private_notice"}}</p>
  185. {{else}}
  186. <span style="font-size: 14px;font-weight: 400;">{{i18n $.Lang "message.confirm_into_public"}}</span>
  187. <p></p>
  188. <p class="text error-message">{{i18n $.Lang "message.into_public_notice"}}</p>
  189. {{end}}
  190. </div>
  191. <div class="modal-footer">
  192. <span class="error-message" id="form-error-message1"></span>
  193. <button type="button" class="btn btn-default" data-dismiss="modal">{{i18n $.Lang "common.cancel"}}</button>
  194. <button type="submit" class="btn btn-primary" data-loading-text="{{i18n $.Lang "common.processing"}}" id="btnChangePrivatelyOwned">{{i18n $.Lang "common.confirm"}}</button>
  195. </div>
  196. </div>
  197. </form>
  198. </div>
  199. </div>
  200. <!-- Start Modal -->
  201. <div class="modal fade" id="upload-logo-panel" tabindex="-1" role="dialog" aria-labelledby="{{i18n $.Lang "blog.change_cover"}}" aria-hidden="true">
  202. <div class="modal-dialog">
  203. <div class="modal-content">
  204. <div class="modal-header">
  205. <button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">&times;</span><span class="sr-only">Close</span></button>
  206. <h4 class="modal-title">{{i18n $.Lang "blog.change_cover"}}</h4>
  207. </div>
  208. <div class="modal-body">
  209. <div class="wraper">
  210. <div id="image-wraper">
  211. </div>
  212. </div>
  213. <div class="watch-crop-list">
  214. <div class="preview-title">{{i18n $.Lang "blog.preview"}}</div>
  215. <ul>
  216. <li>
  217. <div class="img-preview preview-lg"></div>
  218. </li>
  219. <li>
  220. <div class="img-preview preview-sm"></div>
  221. </li>
  222. </ul>
  223. </div>
  224. <div style="clear: both"></div>
  225. </div>
  226. <div class="modal-footer">
  227. <span id="error-message"></span>
  228. <div id="filePicker" class="btn">{{i18n $.Lang "blog.choose"}}</div>
  229. <button type="button" id="saveImage" class="btn btn-success" style="height: 40px;width: 77px;" data-loading-text="{{i18n $.Lang "blog.processing"}}">{{i18n $.Lang "blog.upload"}}</button>
  230. </div>
  231. </div>
  232. </div>
  233. </div>
  234. <!--END Modal-->
  235. <!-- Delete Book Modal -->
  236. <div class="modal fade" id="deleteBookModal" tabindex="-1" role="dialog" aria-labelledby="deleteBookModalLabel">
  237. <div class="modal-dialog" role="document">
  238. <form method="post" id="deleteBookForm" action="{{urlfor "BookController.Delete"}}">
  239. <input type="hidden" name="identify" value="{{.Model.Identify}}">
  240. <div class="modal-content">
  241. <div class="modal-header">
  242. <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
  243. <h4 class="modal-title">{{i18n $.Lang "blog.delete_project"}}</h4>
  244. </div>
  245. <div class="modal-body">
  246. <span style="font-size: 14px;font-weight: 400;">{{i18n $.Lang "confirm_delete_project"}}</span>
  247. <p></p>
  248. <p class="text error-message">{{i18n $.Lang "message.warning_delete_project"}}</p>
  249. </div>
  250. <div class="modal-footer">
  251. <span id="form-error-message2" class="error-message"></span>
  252. <button type="button" class="btn btn-default" data-dismiss="modal">{{i18n $.Lang "common.cancel"}}</button>
  253. <button type="submit" id="btnDeleteBook" class="btn btn-primary" data-loading-text="{{i18n $.Lang "common.processing"}}">{{i18n $.Lang "common.confirm_delete"}}</button>
  254. </div>
  255. </div>
  256. </form>
  257. </div>
  258. </div>
  259. <!-- Modal -->
  260. <div class="modal fade" id="transferBookModal" tabindex="-1" role="dialog" aria-labelledby="transferBookModalLabel">
  261. <div class="modal-dialog" role="document">
  262. <form action="{{urlfor "BookController.Transfer"}}" method="post" id="transferBookForm">
  263. <input type="hidden" name="identify" value="{{.Model.Identify}}">
  264. <div class="modal-content">
  265. <div class="modal-header">
  266. <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
  267. <h4 class="modal-title" id="myModalLabel">{{i18n $.Lang "blog.handover_project"}}</h4>
  268. </div>
  269. <div class="modal-body">
  270. <div class="form-group">
  271. <label class="col-sm-2 control-label">{{i18n $.Lang "blog.recipient_account"}}</label>
  272. <div class="col-sm-10">
  273. <input type="text" name="account" class="form-control" placeholder="{{i18n $.Lang "blog.recipient_account"}}" id="receiveAccount" maxlength="50">
  274. </div>
  275. </div>
  276. <div class="clearfix"></div>
  277. </div>
  278. <div class="modal-footer">
  279. <span id="form-error-message3" class="error-message"></span>
  280. <button type="button" class="btn btn-default" data-dismiss="modal">{{i18n $.Lang "common.cancel"}}</button>
  281. <button type="submit" id="btnTransferBook" class="btn btn-primary">{{i18n $.Lang "common.comfirm"}}</button>
  282. </div>
  283. </div>
  284. </form>
  285. </div>
  286. </div>
  287. <script src="{{cdnjs "/static/jquery/1.12.4/jquery.min.js"}}" type="text/javascript"></script>
  288. <script src="{{cdnjs "/static/bootstrap/js/bootstrap.min.js"}}" type="text/javascript"></script>
  289. <script src="{{cdnjs "/static/webuploader/webuploader.min.js"}}" type="text/javascript"></script>
  290. <script src="{{cdnjs "/static/cropper/2.3.4/cropper.min.js"}}" type="text/javascript"></script>
  291. <script src="{{cdnjs "/static/js/jquery.form.js"}}" type="text/javascript"></script>
  292. <script src="{{cdnjs "/static/bootstrap/plugins/tagsinput/bootstrap-tagsinput.min.js"}}" type="text/javascript"></script>
  293. <script src="{{cdnjs "/static/bootstrap/plugins/bootstrap-switch/js/bootstrap-switch.min.js"}}" type="text/javascript"></script>
  294. <script src="{{cdnjs "/static/select2/4.0.5/js/select2.full.min.js"}}"></script>
  295. <script src="{{cdnjs "/static/select2/4.0.5/js/i18n/zh-CN.js"}}"></script>
  296. <script src="{{cdnjs "/static/js/main.js"}}" type="text/javascript"></script>
  297. <script type="text/javascript">
  298. $(function () {
  299. $("#upload-logo-panel").on("hidden.bs.modal",function () {
  300. $("#upload-logo-panel").find(".modal-body").html(window.modalHtml);
  301. }).on("show.bs.modal",function () {
  302. window.modalHtml = $("#upload-logo-panel").find(".modal-body").html();
  303. });
  304. $("#autoRelease,#enableShare,#isDownload,#isUseFirstDocument,#autoSave").bootstrapSwitch();
  305. $('input[name="label"]').tagsinput({
  306. confirmKeys: [13,44],
  307. maxTags: 10,
  308. trimValue: true,
  309. cancelConfirmKeysOnEmpty : false
  310. });
  311. $("#changePrivatelyOwnedForm").ajaxForm({
  312. beforeSubmit :function () {
  313. $("#btnChangePrivatelyOwned").button("loading");
  314. },
  315. success :function (res) {
  316. if(res.errcode === 0){
  317. window.location = window.location.href;
  318. return;
  319. }else{
  320. showError(res.message,"#form-error-message1");
  321. }
  322. $("#btnChangePrivatelyOwned").button("reset");
  323. },
  324. error :function () {
  325. showError("{{i18n $.Lang "message.system_error"}}","#form-error-message1");
  326. $("#btnChangePrivatelyOwned").button("reset");
  327. }
  328. });
  329. $("#createToken,#deleteToken").on("click",function () {
  330. var btn = $(this).button("loading");
  331. var action = $(this).attr("data-action");
  332. $.ajax({
  333. url : "{{urlfor "BookController.CreateToken"}}",
  334. type :"post",
  335. data : { "identify" : {{.Model.Identify}} , "action" : action },
  336. dataType : "json",
  337. success : function (res) {
  338. if(res.errcode === 0){
  339. $("#token").val(res.data);
  340. }else{
  341. alert(res.message);
  342. }
  343. btn.button("reset");
  344. },
  345. error : function () {
  346. btn.button("reset");
  347. alert("{{i18n $.Lang "message.system_error"}}");
  348. }
  349. }) ;
  350. });
  351. $("#token").on("focus",function () {
  352. $(this).select();
  353. });
  354. $("#bookEditForm").ajaxForm({
  355. beforeSubmit : function () {
  356. var bookName = $.trim($("#bookName").val());
  357. if (bookName === "") {
  358. return showError("{{i18n $.Lang "message.project_name_empty"}}");
  359. }
  360. $("#btnSaveBookInfo").button("loading");
  361. },
  362. success : function (res) {
  363. if(res.errcode === 0){
  364. showSuccess("{{i18n $.Lang "message.success"}}")
  365. }else{
  366. showError("{{i18n $.Lang "message.failed"}}")
  367. }
  368. $("#btnSaveBookInfo").button("reset");
  369. },
  370. error : function () {
  371. showError("{{i18n $.Lang "message.system_error"}}");
  372. $("#btnSaveBookInfo").button("reset");
  373. }
  374. });
  375. $("#deleteBookForm").ajaxForm({
  376. beforeSubmit : function () {
  377. $("#btnDeleteBook").button("loading");
  378. },
  379. success : function (res) {
  380. if(res.errcode === 0){
  381. window.location = "{{urlfor "BookController.Index"}}";
  382. }else{
  383. showError(res.message,"#form-error-message2");
  384. }
  385. $("#btnDeleteBook").button("reset");
  386. },
  387. error : function () {
  388. showError("{{i18n $.Lang "message.system_error"}}","#form-error-message2");
  389. $("#btnDeleteBook").button("reset");
  390. }
  391. });
  392. $("#transferBookForm").ajaxForm({
  393. beforeSubmit : function () {
  394. var account = $.trim($("#receiveAccount").val());
  395. if (account === ""){
  396. return showError("{{i18n $.Lang "message.receive_account_empty"}}","#form-error-message3")
  397. }
  398. $("#btnTransferBook").button("loading");
  399. },
  400. success : function (res) {
  401. if(res.errcode === 0){
  402. window.location = window.location.href;
  403. }else{
  404. showError(res.message,"#form-error-message3");
  405. }
  406. $("#btnTransferBook").button("reset");
  407. },
  408. error : function () {
  409. $("#btnTransferBook").button("reset");
  410. }
  411. });
  412. $('.js-data-example-ajax').select2({
  413. language: "{{i18n $.Lang "common.js_lang"}}",
  414. minimumInputLength : 1,
  415. minimumResultsForSearch: Infinity,
  416. maximumSelectionLength:1,
  417. width : "100%",
  418. ajax: {
  419. url: '{{urlfor "BookController.ItemsetsSearch"}}',
  420. dataType: 'json',
  421. data: function (params) {
  422. return {
  423. q: params.term, // search term
  424. page: params.page
  425. };
  426. },
  427. processResults: function (data, params) {
  428. return {
  429. results : data.data.results
  430. }
  431. }
  432. }
  433. });
  434. try {
  435. var uploader = WebUploader.create({
  436. auto: false,
  437. swf: '{{.BaseUrl}}/static/webuploader/Uploader.swf',
  438. server: '{{urlfor "BookController.UploadCover"}}',
  439. formData : { "identify" : {{.Model.Identify}} },
  440. pick: "#filePicker",
  441. fileVal : "image-file",
  442. fileNumLimit : 1,
  443. compress : false,
  444. accept: {
  445. title: 'Images',
  446. extensions: 'jpg,jpeg,png',
  447. mimeTypes: 'image/jpg,image/jpeg,image/png'
  448. }
  449. }).on("beforeFileQueued",function (file) {
  450. uploader.reset();
  451. }).on( 'fileQueued', function( file ) {
  452. uploader.makeThumb( file, function( error, src ) {
  453. $img = '<img src="' + src +'" style="max-width: 360px;max-height: 360px;">';
  454. if ( error ) {
  455. $img.replaceWith('<span>{{i18n $.Lang "message.cannot_preview"}}</span>');
  456. return;
  457. }
  458. $("#image-wraper").html($img);
  459. window.ImageCropper = $('#image-wraper>img').cropper({
  460. aspectRatio: 175 / 230,
  461. dragMode : 'move',
  462. viewMode : 1,
  463. preview : ".img-preview"
  464. });
  465. }, 1, 1 );
  466. }).on("uploadError",function (file,reason) {
  467. console.log(reason);
  468. $("#error-message").text("{{i18n $.Lang "message.upload_failed"}}:" + reason);
  469. }).on("uploadSuccess",function (file, res) {
  470. if(res.errcode === 0){
  471. console.log(res);
  472. $("#upload-logo-panel").modal('hide');
  473. $("#headimgurl").attr('src',res.data);
  474. }else{
  475. $("#error-message").text(res.message);
  476. }
  477. }).on("beforeFileQueued",function (file) {
  478. if(file.size > 1024*1024*2){
  479. uploader.removeFile(file);
  480. uploader.reset();
  481. alert("{{i18n $.Lang "message.upload_file_size_limit"}}");
  482. return false;
  483. }
  484. }).on("uploadComplete",function () {
  485. $("#saveImage").button('reset');
  486. });
  487. $("#saveImage").on("click",function () {
  488. var files = uploader.getFiles();
  489. if(files.length > 0) {
  490. $("#saveImage").button('loading');
  491. var cropper = window.ImageCropper.cropper("getData");
  492. uploader.option("formData", cropper);
  493. uploader.upload();
  494. }else{
  495. alert("{{i18n $.Lang "message.choose_pic_file"}}");
  496. }
  497. });
  498. }catch(e){
  499. console.log(e);
  500. }
  501. });
  502. </script>
  503. </body>
  504. </html>