mindoc/views/book/index.tpl
Rendtime 886a412a70
Some checks failed
Go / ${{ matrix.config.name }} (map[artifact:linux name:Ubuntu Latest GCC os:ubuntu-latest]) (push) Has been cancelled
Go / ${{ matrix.config.name }} (map[artifact:windows name:Windows Latest MSVC os:windows-latest]) (push) Has been cancelled
添加只读用户角色,不能创建、编辑,只能被设置为观察者 (#992)
* 添加只读用户角色,不能创建、编辑,只能被设置为观察者

* Update markdown.preview.css

toc隐藏的时候,article宽度为100%

* Update cherry-markdown.css

cherry样式,隐藏toc时宽度100%

* 发布pdf时候的默认发布者(项目填写了公司名称以公司名称为准)

* 验证只读用户权限
2024-12-27 15:26:03 +08:00

683 lines
35 KiB
Smarty
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>{{i18n $.Lang "common.my_project"}} - Powered by MinDoc</title>
<!-- Bootstrap -->
<link href="{{cdncss "/static/bootstrap/css/bootstrap.min.css"}}" rel="stylesheet" type="text/css">
<link href="{{cdncss "/static/font-awesome/css/font-awesome.min.css"}}" rel="stylesheet" type="text/css">
<link href="{{cdncss "/static/bootstrap/plugins/bootstrap-fileinput/4.4.7/css/fileinput.min.css"}}" rel="stylesheet" type="text/css">
<link href="{{cdncss "/static/bootstrap/plugins/bootstrap-fileinput/4.4.7/themes/explorer-fa/theme.css"}}" rel="stylesheet" type="text/css">
<link href="{{cdncss "/static/select2/4.0.5/css/select2.min.css"}}" rel="stylesheet">
<link href="{{cdncss "/static/css/main.css" "version"}}" rel="stylesheet">
<!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
<!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
<!--[if lt IE 9]>
<script src="/static/html5shiv/3.7.3/html5shiv.min.js"></script>
<script src="/static/respond.js/1.4.2/respond.min.js"></script>
<![endif]-->
</head>
<body>
<div class="manual-reader">
{{template "widgets/header.tpl" .}}
<div class="container manual-body">
<div class="row">
<div class="page-left">
<ul class="menu">
<li {{if eq .ControllerName "BookController"}}class="active"{{end}}><a href="{{urlfor "BookController.Index"}}" class="item"><i class="fa fa-sitemap" aria-hidden="true"></i> {{i18n $.Lang "common.my_project"}}</a> </li>
<li {{if eq .ControllerName "BlogController"}}class="active"{{end}}><a href="{{urlfor "BlogController.ManageList"}}" class="item"><i class="fa fa-file" aria-hidden="true"></i> {{i18n $.Lang "common.my_blog"}}</a> </li>
</ul>
</div>
<div class="page-right">
<div class="m-box">
<div class="box-head">
<strong class="box-title">{{i18n $.Lang "blog.project_list"}}</strong>
&nbsp;
{{if eq .Member.Role 0 1 2 }}
<button type="button" data-toggle="modal" data-target="#addBookDialogModal" class="btn btn-success btn-sm pull-right">{{i18n $.Lang "blog.add_project"}}</button>
<button type="button" data-toggle="modal" data-target="#importBookDialogModal" class="btn btn-primary btn-sm pull-right" style="margin-right: 5px;">{{i18n $.Lang "blog.import_project"}}</button>
{{end}}
</div>
</div>
<div class="box-body" id="bookList">
<div class="book-list">
<template v-if="lists.length <= 0">
<div class="text-center">{{i18n $.Lang "message.no_data"}}</div>
</template>
<template v-else>
<div class="list-item" v-for="item in lists">
<div class="book-title">
<div class="pull-left">
<a :href="'{{.BaseUrl}}/book/' + item.identify + '/dashboard'" title="{{i18n $.Lang "blog.project_summary"}}" data-toggle="tooltip">
<template v-if="item.privately_owned == 0">
<i class="fa fa-unlock" aria-hidden="true"></i>
</template>
<template v-else-if="item.privately_owned == 1">
<i class="fa fa-lock" aria-hidden="true"></i>
</template>
${item.book_name}
</a>
</div>
<div class="pull-right">
<div class="btn-group">
<a :href="'{{.BaseUrl}}/book/' + item.identify + '/dashboard'" class="btn btn-default">{{i18n $.Lang "common.setting"}}</a>
<a href="javascript:;" class="btn btn-default dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
<span class="caret"></span>
<span class="sr-only">Toggle Dropdown</span>
</a>
<ul class="dropdown-menu">
<li><a :href="'{{urlfor "DocumentController.Index" ":key" ""}}' + item.identify" target="_blank">{{i18n $.Lang "blog.read"}}</a></li>
<template v-if="item.role_id != 3">
<li><a :href="'{{.BaseUrl}}/api/' + item.identify + '/edit'" target="_blank">{{i18n $.Lang "blog.edit"}}</a></li>
</template>
<template v-if="item.role_id == 0">
<li><a :href="'javascript:deleteBook(\''+item.identify+'\');'">{{i18n $.Lang "blog.delete"}}</a></li>
<li><a :href="'javascript:copyBook(\''+item.identify+'\');'">{{i18n $.Lang "blog.copy"}}</a></li>
</template>
</ul>
</div>
{{/*<a :href="'{{urlfor "DocumentController.Index" ":key" ""}}' + item.identify" title="{{i18n $.Lang "blog.view"}}" data-toggle="tooltip" target="_blank"><i class="fa fa-eye"></i> {{i18n $.Lang "blog.view"}}</a>*/}}
{{/*<template v-if="item.role_id != 3">*/}}
{{/*<a :href="'/api/' + item.identify + '/edit'" title="{{i18n $.Lang "blog.edit_doc"}}" data-toggle="tooltip" target="_blank"><i class="fa fa-edit" aria-hidden="true"></i> {{i18n $.Lang "blog.edit_doc"}}</a>*/}}
{{/*</template>*/}}
</div>
<div class="clearfix"></div>
</div>
<div class="desc-text">
<template v-if="item.description === ''">
&nbsp;
</template>
<template v-else="">
<a :href="'{{.BaseUrl}}/book/' + item.identify + '/dashboard'" title="{{i18n $.Lang "blog.project_summary"}}" style="font-size: 12px;">
${item.description}
</a>
</template>
</div>
<div class="info">
<span title="{{i18n $.Lang "blog.create_time"}}" data-toggle="tooltip" data-placement="bottom"><i class="fa fa-clock-o"></i>
${(new Date(item.create_time)).format("yyyy-MM-dd hh:mm:ss")}
</span>
<span title="{{i18n $.Lang "blog.creator"}}" data-toggle="tooltip" data-placement="bottom"><i class="fa fa-user"></i> ${item.create_name}</span>
<span title="{{i18n $.Lang "blog.doc_amount"}}" data-toggle="tooltip" data-placement="bottom"><i class="fa fa-pie-chart"></i> ${item.doc_count}</span>
<span title="{{i18n $.Lang "blog.project_role"}}" data-toggle="tooltip" data-placement="bottom"><i class="fa fa-user-secret"></i> ${item.role_name}</span>
<template v-if="item.last_modify_text !== ''">
<span title="{{i18n $.Lang "blog.last_edit"}}" data-toggle="tooltip" data-placement="bottom"><i class="fa fa-pencil"></i> {{i18n $.Lang "blog.last_edit"}}: ${item.last_modify_text}</span>
</template>
</div>
</div>
</template>
</div>
<template v-if="lists.length >= 0">
<nav class="pagination-container">
{{.PageHtml}}
</nav>
</template>
</div>
</div>
</div>
</div>
{{template "widgets/footer.tpl" .}}
</div>
<!-- Modal -->
<div class="modal fade" id="addBookDialogModal" tabindex="-1" role="dialog" aria-labelledby="addBookDialogModalLabel">
<div class="modal-dialog modal-lg" role="document" style="min-width: 900px;">
<form method="post" autocomplete="off" action="{{urlfor "BookController.Create"}}" id="addBookDialogForm" enctype="multipart/form-data">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title" id="myModalLabel">{{i18n $.Lang "blog.add_project"}}</h4>
</div>
<div class="modal-body">
<div class="form-group">
<div class="pull-left" style="width: 620px">
<div class="form-group required">
<label class="text-label col-sm-2">{{i18n $.Lang "common.project_space"}}</label>
<div class="col-sm-10">
<select class="js-data-example-ajax-add form-control" multiple="multiple" name="itemId" id="itemId">
{{if .Item}}<option value="{{.Item.ItemId}}" selected>{{.Item.ItemName}}</option> {{end}}
</select>
<p class="text">{{i18n $.Lang "message.project_must_belong_space"}}</p>
</div>
<div class="clearfix"></div>
</div>
<div class="form-group required">
<label class="text-label col-sm-2">{{i18n $.Lang "blog.project_title"}}</label>
<div class="col-sm-10">
<input type="text" class="form-control" placeholder="{{i18n $.Lang "message.project_title_placeholder"}}" name="book_name" id="bookName">
<p class="text">{{i18n $.Lang "message.project_title_tips"}}</p>
</div>
<div class="clearfix"></div>
</div>
<div class="form-group required">
<label class="text-label col-sm-2">{{i18n $.Lang "blog.project_id"}}</label>
<div class="col-sm-10">
<input type="text" class="form-control" placeholder="{{i18n $.Lang "message.project_id_placeholder"}}" name="identify" id="identify">
<p class="text">{{i18n $.Lang "message.project_id_tips"}}</p>
</div>
<div class="clearfix"></div>
</div>
<div class="form-group">
<textarea name="description" id="description" class="form-control" placeholder="{{i18n $.Lang "message.project_desc_placeholder"}}" style="height: 90px;"></textarea>
</div>
<div class="form-group">
<div class="col-lg-4">
<label>
<input type="radio" name="privately_owned" value="0" checked> {{i18n $.Lang "blog.public"}}<span class="text">{{i18n $.Lang "message.project_public_desc"}}</span>
</label>
</div>
<div class="col-lg-8">
<label>
<input type="radio" name="privately_owned" value="1"> {{i18n $.Lang "blog.private"}}<span class="text">{{i18n $.Lang "message.project_private_desc"}}</span>
</label>
</div>
<div class="clearfix"></div>
</div>
<!--选择编辑器模式-->
<div class="form-group">
<label>{{i18n $.Lang "blog.text_editor"}}</label>
<div class="col-lg-20">
<label class="radio-inline">
<input type="radio" name="editor" value="markdown"> Markdown
</label>
<label class="radio-inline">
<input type="radio" name="editor" checked value="cherry_markdown"> Markdown (cherry)
</label>
<label class="radio-inline">
<input type="radio" name="editor" value="new_html"> Html (Quill)
</label>
<label class="radio-inline">
<input type="radio" name="editor" value="html"> Html (wangEditor)
</label>
</div>
<div class="clearfix"></div>
</div>
</div>
<div class="pull-right text-center" style="width: 235px;">
<canvas id="bookCover" height="230px" width="170px"><img src="{{cdnimg "/static/images/book.jpg"}}"> </canvas>
<p class="text">{{i18n $.Lang "message.project_cover_desc"}}</p>
</div>
</div>
<div class="clearfix"></div>
</div>
<div class="modal-footer">
<span id="form-error-message"></span>
<button type="button" class="btn btn-default" data-dismiss="modal">{{i18n $.Lang "common.cancel"}}</button>
<button type="button" class="btn btn-success" id="btnSaveDocument" data-loading-text="{{i18n $.Lang "common.processing"}}">{{i18n $.Lang "common.save"}}</button>
</div>
</div>
</form>
</div>
</div>
<!--END Modal-->
<!-- importBookDialogModal -->
<div class="modal fade" id="importBookDialogModal" tabindex="-1" role="dialog" aria-labelledby="importBookDialogModalLabel">
<div class="modal-dialog" role="document" style="min-width: 900px;">
<form method="post" autocomplete="off" action="{{urlfor "BookController.Import"}}" id="importBookDialogForm" enctype="multipart/form-data">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title">{{i18n $.Lang "blog.import_project"}}</h4>
</div>
<div class="modal-body">
<div class="form-group">
<div class="form-group required">
<label class="text-label">{{i18n $.Lang "common.project_space"}}</label>
<select class="js-data-example-ajax-import form-control" multiple="multiple" name="itemId">
{{if .Item}}<option value="{{.Item.ItemId}}" selected>{{.Item.ItemName}}</option> {{end}}
</select>
<p class="text">{{i18n $.Lang "message.project_must_belong_space"}}</p>
</div>
<div class="form-group required">
<label class="text-label">{{i18n $.Lang "blog.project_title"}}</label>
<input type="text" class="form-control" placeholder="{{i18n $.Lang "message.project_title_placeholder"}}" name="book_name" maxlength="100" value="">
<p class="text">{{i18n $.Lang "blog.project_title_tips"}}</p>
</div>
<div class="form-group required">
<label class="text-label">{{i18n $.Lang "blog.project_id"}}</label>
<input type="text" class="form-control" placeholder="{{i18n $.Lang "message.project_id_placeholder"}}" name="identify" value="">
<div class="clearfix"></div>
<p class="text">{{i18n $.Lang "blog.project_id_tips"}}</p>
</div>
<div class="form-group">
<label class="text-label">{{i18n $.Lang "blog.project_desc"}}</label>
<textarea name="description" id="description" class="form-control" placeholder="{{i18n $.Lang "message.project_desc_placeholder"}}" style="height: 90px;"></textarea>
</div>
<div class="form-group">
<div class="col-lg-4">
<label>
<input type="radio" name="privately_owned" value="0" checked> {{i18n $.Lang "blog.public"}}<span class="text">{{i18n $.Lang "message.project_public_desc"}}</span>
</label>
</div>
<div class="col-lg-8">
<label>
<input type="radio" name="privately_owned" value="1"> {{i18n $.Lang "blog.private"}}<span class="text">{{i18n $.Lang "message.project_private_desc"}}</span>
</label>
</div>
<div class="clearfix"></div>
</div>
<div class="form-group">
<div class="file-loading">
<input id="import-book-upload" name="import-file" type="file" accept=".zip,.docx">
</div>
<div id="kartik-file-errors"></div>
</div>
</div>
<div class="clearfix"></div>
</div>
<div class="modal-footer">
<span id="import-book-form-error-message" style="background-color: #ffffff;border: none;margin: 0;padding: 0;"></span>
<button type="button" class="btn btn-default" data-dismiss="modal">{{i18n $.Lang "common.cancel"}}</button>
<button type="button" class="btn btn-success" id="btnImportBook" data-loading-text="{{i18n $.Lang "common.processing"}}">{{i18n $.Lang "common.create"}}</button>
</div>
</div>
</form>
</div>
</div>
<!--END importBookDialogModal-->
<!-- Delete Book Modal -->
<div class="modal fade" id="deleteBookModal" tabindex="-1" role="dialog" aria-labelledby="deleteBookModalLabel">
<div class="modal-dialog" role="document">
<form method="post" id="deleteBookForm" action="{{urlfor "BookController.Delete"}}">
<input type="hidden" name="identify" value="">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title">{{i18n $.Lang "blog.delete_project"}}</h4>
</div>
<div class="modal-body">
<span style="font-size: 14px;font-weight: 400;">{{i18n $.Lang "message.confirm_delete_project"}}</span>
<p></p>
<p class="text error-message">{{i18n $.Lang "message.warning_delete_project"}}</p>
</div>
<div class="modal-footer">
<span id="form-error-message2" class="error-message"></span>
<button type="button" class="btn btn-default" data-dismiss="modal">{{i18n $.Lang "common.cancel"}}</button>
<button type="submit" id="btnDeleteBook" class="btn btn-primary" data-loading-text="{{i18n $.Lang "common.processing"}}">{{i18n $.Lang "common.confirm_delete"}}</button>
</div>
</div>
</form>
</div>
</div>
<script src="{{cdnjs "/static/jquery/1.12.4/jquery.min.js"}}" type="text/javascript"></script>
<script src="{{cdnjs "/static/bootstrap/js/bootstrap.min.js"}}" type="text/javascript"></script>
<script src="{{cdnjs "/static/vuejs/vue.min.js"}}" type="text/javascript"></script>
<script src="{{cdnjs "/static/js/jquery.form.js"}}" type="text/javascript"></script>
<script src="{{cdnjs "/static/bootstrap/plugins/bootstrap-fileinput/4.4.7/js/fileinput.min.js"}}"></script>
<script src="{{cdnjs "/static/bootstrap/plugins/bootstrap-fileinput/4.4.7/js/locales/zh.js"}}"></script>
<script src="{{cdnjs "/static/layer/layer.js"}}" type="text/javascript" ></script>
<script src="{{cdnjs "/static/select2/4.0.5/js/select2.full.min.js"}}"></script>
<script src="{{cdnjs "/static/select2/4.0.5/js/i18n/zh-CN.js"}}"></script>
<script src="{{cdnjs "/static/js/main.js"}}" type="text/javascript"></script>
<script type="text/javascript">
/**
* 绘制项目封面
* @param $id
* @param $font
*/
function drawBookCover($id,$font) {
var draw = document.getElementById($id);
//<canvas>
if (draw.getContext) {
var context = draw.getContext('2d');
//,绿
context.fillStyle = '#eee';
context.strokeStyle = '#d4d4d5';
context.strokeRect(0,0,170,230);
context.fillRect(0,0,170,230);
//
context.font = "600 20px Helvetica";
context.textAlign = "left";
//
context.fillStyle = "#3E403E";
var font = $.trim($font);
var lineWidth = 0; //
var lastTextIndex = 0; //canvas最后的一个字符的下标
var drawWidth = 155,lineHeight = 25,drawStartX = 15,drawStartY=65;
//canvas
var arr = [];
for(var i = 0; i<font.length; i++){
//
lineWidth = context.measureText(font.substr(lastTextIndex,i-lastTextIndex)).width;
if(lineWidth > drawWidth){
//
if(judgePunctuationMarks(font[i-1])){
arr.push(font.substr(lastTextIndex,i-lastTextIndex));
lastTextIndex = i;
}else{
arr.push(font.substr(lastTextIndex,i-lastTextIndex-1));
lastTextIndex = i-1;
}
}
//
if(i === font.length - 1){
arr.push(font.substr(lastTextIndex,i-lastTextIndex+1));
}
}
for(var i =0; i<arr.length; i++){
context.fillText(arr[i],drawStartX,drawStartY+i*lineHeight);
}
//
function judgePunctuationMarks(value) {
var arr = [".",",",";","?","!",":","\"","","。","","","","","、"];
for(var i = 0; i< arr.length; i++){
if(value === arr[i]){
return true;
}
}
return false;
}
}else{
console.log("浏览器不支持")
}
}
/**
* 将base64格式的图片转换为二进制
* @param dataURI
* @returns {Blob}
*/
function dataURItoBlob(dataURI) {
var byteString = atob(dataURI.split(',')[1]);
var mimeString = dataURI.split(',')[0].split(':')[1].split(';')[0];
var ab = new ArrayBuffer(byteString.length);
var ia = new Uint8Array(ab);
for (var i = 0; i < byteString.length; i++) {
ia[i] = byteString.charCodeAt(i);
}
return new Blob([ab], {type: mimeString});
}
/**
* 删除项目
*/
function deleteBook($id) {
$("#deleteBookModal").find("input[name='identify']").val($id);
$("#deleteBookModal").modal("show");
}
/**
* 复制项目
* */
function copyBook($id){
var index = layer.load()
$.ajax({
url : "{{urlfor "BookController.Copy"}}" ,
data : {"identify":$id},
type : "POST",
dataType : "json",
success : function ($res) {
layer.close(index);
if ($res.errcode === 0) {
window.app.lists.splice(0, 0, $res.data);
$("#addBookDialogModal").modal("hide");
} else {
layer.msg($res.message);
}
},
error : function () {
layer.close(index);
layer.msg('{{i18n $.Lang "message.system_error"}}');
}
});
}
$(function () {
/**
*
* */
$("#addBookDialogModal").on("show.bs.modal",function () {
window.bookDialogModal = $(this).find("#addBookDialogForm").html();
drawBookCover("bookCover","{{i18n $.Lang "blog.default_cover"}}");
$('.js-data-example-ajax-add').select2({
language: "{{i18n $.Lang "common.js_lang"}}",
minimumInputLength : 1,
minimumResultsForSearch: Infinity,
maximumSelectionLength:1,
width : "100%",
ajax: {
url: '{{urlfor "BookController.ItemsetsSearch"}}',
dataType: 'json',
data: function (params) {
return {
q: params.term, // search term
page: params.page
};
},
processResults: function (data, params) {
return {
results : data.data.results
}
}
}
});
}).on("hidden.bs.modal",function () {
$(this).find("#addBookDialogForm").html(window.bookDialogModal);
});
/**
*
* */
$("#importBookDialogModal").on("show.bs.modal",function () {
window.importBookDialogModal = $(this).find("#importBookDialogForm").html();
$("#import-book-upload").fileinput({
'uploadUrl':"{{urlfor "BookController.Import"}}",
'theme': 'fa',
'showPreview': false,
'showUpload' : false,
'required': true,
'validateInitialCount': true,
"language" : "{{i18n $.Lang "common.upload_lang"}}",
'allowedFileExtensions': ['zip', 'docx'],
'msgPlaceholder' : '{{i18n $.Lang "message.file_type_placeholder"}}',
'elErrorContainer' : "#import-book-form-error-message",
'uploadExtraData' : function () {
var book = {};
var $then = $("#importBookDialogForm");
book.book_name = $then.find("input[name='book_name']").val();
book.identify = $then.find("input[name='identify']").val();
book.description = $then.find('textarea[name="description"]').val();
book.itemId = $then.find("select[name='itemId']").val();
return book;
}
});
$('.js-data-example-ajax-import').select2({
language: "{{i18n $.Lang "common.js_lang"}}",
minimumInputLength : 1,
minimumResultsForSearch: Infinity,
maximumSelectionLength:1,
width : "100%",
ajax: {
url: '{{urlfor "BookController.ItemsetsSearch"}}',
dataType: 'json',
data: function (params) {
return {
q: params.term, // search term
page: params.page
};
},
processResults: function (data, params) {
return {
results : data.data.results
}
}
}
});
}).on("hidden.bs.modal",function () {
$(this).find("#importBookDialogForm").html(window.importBookDialogModal);
});
/**
*
*/
$("body").on("click","#btnSaveDocument",function () {
var $this = $(this);
var itemId = $("#itemId").val();
if (itemId <= 0) {
return showError("{{i18n $.Lang "message.project_space_empty"}}")
}
var bookName = $.trim($("#bookName").val());
if (bookName === "") {
return showError("{{i18n $.Lang "message.project_title_empty"}}")
}
if (bookName.length > 100) {
return showError("{{i18n $.Lang "message.project_title_tips"}}");
}
var identify = $.trim($("#identify").val());
if (identify === "") {
return showError("{{i18n $.Lang "message.project_id_empty"}}");
}
if (identify.length > 50) {
return showError("{{i18n $.Lang "message.project_id_length"}}");
}
var description = $.trim($("#description").val());
if (description.length > 500) {
return showError("{{i18n $.Lang "message.project_desc_placeholder"}}");
}
$this.button("loading");
var draw = document.getElementById("bookCover");
var form = document.getElementById("addBookDialogForm");
var fd = new FormData(form);
if (draw.getContext) {
var dataURL = draw.toDataURL("png", 100);
var blob = dataURItoBlob(dataURL);
fd.append('image-file', blob,(new Date()).valueOf() + ".png");
}
$.ajax({
url : "{{urlfor "BookController.Create"}}",
data: fd,
type: "POST",
dataType :"json",
processData: false,
contentType: false
}).success(function (res) {
$this.button("reset");
if (res.errcode === 0) {
window.app.lists.splice(0, 0, res.data);
$("#addBookDialogModal").modal("hide");
} else {
showError(res.message);
}
$this.button("reset");
}).error(function () {
$this.button("reset");
return showError("{{i18n $.Lang "message.system_error"}}");
});
return false;
}).on("blur","#bookName",function () {
var txt = $("#bookName").val();
if(txt !== ""){
drawBookCover("bookCover",txt);
}
}).on("click","#btnImportBook",function () {
var $then = $(this).parents("#importBookDialogForm");
var itemId = $then.find("input[name='itemId']").val();
if (itemId <= 0) {
return showError("{{i18n $.Lang "message.project_space_empty"}}")
}
var bookName = $.trim($then.find("input[name='book_name']").val());
if (bookName === "") {
return showError("{{i18n $.Lang "message.project_title_empty"}}","#import-book-form-error-message");
}
if (bookName.length > 100) {
return showError("{{i18n $.Lang "message.project_title_tips"}}","#import-book-form-error-message");
}
var identify = $.trim($then.find("input[name='identify']").val());
if (identify === "") {
return showError("{{i18n $.Lang "message.project_id_empty"}}","#import-book-form-error-message");
}
var description = $.trim($then.find('textarea[name="description"]').val());
if (description.length > 500) {
return showError("{{i18n $.Lang "message.project_decs_placeholder"}}","#import-book-form-error-message");
}
var filesCount = $('#import-book-upload').fileinput('getFilesCount');
if (filesCount <= 0) {
return showError("{{i18n $.Lang "message.import_file_empty"}}","#import-book-form-error-message");
}
//$("#importBookDialogForm").submit();
$("#btnImportBook").button("loading");
$('#import-book-upload').fileinput('upload');
}).on("fileuploaded","#import-book-upload",function (event, data, previewId, index){
if(data.response.errcode === 0 || data.response.errcode === '0'){
showSuccess(data.response.message,"#import-book-form-error-message");
}else{
showError(data.response.message,"#import-book-form-error-message");
}
$("#btnImportBook").button("reset");
return true;
});
/**
*
*/
$("#deleteBookForm").ajaxForm({
beforeSubmit : function () {
$("#btnDeleteBook").button("loading");
},
success : function (res) {
if(res.errcode === 0){
window.location = window.location.href;
}else{
showError(res.message,"#form-error-message2");
}
$("#btnDeleteBook").button("reset");
},
error : function () {
showError("{{i18n $.Lang "message.system_error"}}","#form-error-message2");
$("#btnDeleteBook").button("reset");
}
});
window.app = new Vue({
el : "#bookList",
data : {
lists : {{.Result}}
},
delimiters : ['${','}'],
methods : {
}
});
Vue.nextTick(function () {
$("[data-toggle='tooltip']").tooltip();
});
});
</script>
</body>
</html>