mirror of
https://github.com/nsnail/FreeSql.git
synced 2025-06-19 12:28:15 +08:00
新增读取文档帮助
This commit is contained in:
@ -60,7 +60,8 @@ namespace FreeSql.Site.UI.Areas.Admin.Controllers
|
||||
if (!string.IsNullOrEmpty(model.DocTitle))
|
||||
searchPredicate = searchPredicate.And(u => u.DocTitle.IndexOf(model.DocTitle) != -1);
|
||||
}
|
||||
var contents = DocumentContentDAL.Query(searchPredicate);
|
||||
PageInfo pageinfo = new PageInfo() { IsPaging = true, PageIndex = page, PageSize = limit };
|
||||
var contents = DocumentContentDAL.Query(searchPredicate, null, pageinfo);
|
||||
|
||||
return Json(new DataPage<DocumentContent>
|
||||
{
|
||||
@ -74,8 +75,8 @@ namespace FreeSql.Site.UI.Areas.Admin.Controllers
|
||||
public ActionResult DocContentEditModule(string id)
|
||||
{
|
||||
ViewBag.DocumentTypeList = DocumentTypeDAL.Query(w => w.Status == 1).list.Select(s => new SelectListItem { Text = s.TypeName, Value = s.ID.ToString() }).ToList();
|
||||
DocumentContent model = new DocumentContent();
|
||||
if (!string.IsNullOrEmpty(id))
|
||||
DocumentContent model = new DocumentContent() { OriginType = 0};
|
||||
if (!string.IsNullOrEmpty(id) && id != "0")
|
||||
{
|
||||
int _id = Convert.ToInt32(id);
|
||||
model = DocumentContentDAL.GetByOne(w => w.ID == _id);
|
||||
@ -234,7 +235,7 @@ namespace FreeSql.Site.UI.Areas.Admin.Controllers
|
||||
return Json(resdata);
|
||||
}
|
||||
|
||||
[HttpPost]
|
||||
[HttpPost]
|
||||
//[ValidateAntiForgeryToken]
|
||||
public ActionResult DocTypeDelete(int id, IFormCollection collection)
|
||||
{
|
||||
|
@ -3,30 +3,19 @@
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>@ViewData["Title"] - FreeSql.Site.UI</title>
|
||||
<title>@ViewData["Title"]</title>
|
||||
|
||||
<environment include="Development">
|
||||
<link href="~/layui/css/layui.css" rel="stylesheet" />
|
||||
<link href="~/lib/editormd/css/editormd.min.css" rel="stylesheet" />
|
||||
<link href="~/lib/editormd/css/editormd.preview.min.css" rel="stylesheet" />
|
||||
|
||||
<link href="~/layui/lay/modules/preview.css" rel="stylesheet" />
|
||||
<link href="~/css/admin.css" rel="stylesheet" />
|
||||
<script src="~/lib/jquery/dist/jquery.js"></script>
|
||||
<script src="~/js/common.js"></script>
|
||||
@*<script src="~/lib/bootstrap/dist/js/bootstrap.js"></script>*@
|
||||
<script src="~/lib/editormd/src/editormd.js"></script>
|
||||
|
||||
<!-- 页面markdown解析成HTML需要的js -->
|
||||
<script src="~/lib/editormd/lib/marked.min.js"></script>
|
||||
<script src="~/lib/editormd/lib/prettify.min.js"></script>
|
||||
<script src="~/lib/editormd/lib/raphael.min.js"></script>
|
||||
<script src="~/lib/editormd/lib/underscore.min.js"></script>
|
||||
<script src="~/lib/editormd/lib/sequence-diagram.min.js"></script>
|
||||
<script src="~/lib/editormd/lib/flowchart.min.js"></script>
|
||||
<script src="~/lib/editormd/lib/jquery.flowchart.min.js"></script>
|
||||
|
||||
<script src="https://cdn.jsdelivr.net/npm/marked/marked.min.js"></script>
|
||||
<script src="https://cdn.bootcss.com/highlight.js/9.13.1/highlight.min.js"></script>
|
||||
<script src="~/layui/lay/modules/layer.js"></script>
|
||||
<script src="~/layui/layui.js"></script>
|
||||
</environment>
|
||||
<environment exclude="Development">
|
||||
|
@ -35,10 +35,22 @@
|
||||
|
||||
<script>
|
||||
var contentEdit;
|
||||
layui.use(['form', 'table'], function () {
|
||||
layui.use(['layer', 'laymd', 'form', 'table'], function () {
|
||||
var table = layui.table;
|
||||
var form = layui.form
|
||||
, layer = layui.layer;
|
||||
, layer = layui.layer, laymd = layui.laymd;
|
||||
|
||||
var loadMarkDown = function () {
|
||||
//实例化编辑器,可以多个实例
|
||||
var md = laymd.init('DocContent', {});
|
||||
//内容改变事件
|
||||
md.on('change', function () {
|
||||
//这里借用marked.js解析效率比HyperDown快,用户可自行找解析器
|
||||
this.setPreview(marked(this.getText()));
|
||||
});
|
||||
//初始化数据预览
|
||||
md.do('change');
|
||||
};
|
||||
|
||||
|
||||
table.render({
|
||||
@ -97,14 +109,39 @@
|
||||
switch (obj.event) {
|
||||
case 'add':
|
||||
var options = {
|
||||
url: "/Admin/Document/DocContentEditModule", paramters: { id: "" },
|
||||
url: "/Admin/Document/DocContentEditModule", paramters: { id: "0" },
|
||||
title: "新增文档",
|
||||
area: ['1100px', '660px'],
|
||||
submit: {
|
||||
url: "/Admin/Document/DocContentCreate",
|
||||
},
|
||||
elmid: "docContentEdit",
|
||||
callback: reloadTable
|
||||
callback: reloadTable,
|
||||
loadBefore: function () {
|
||||
//监听指定开关
|
||||
form.on('switch(switchTest)', function (data) {
|
||||
if (this.checked) {
|
||||
$("#OriginUrlArea").hide();
|
||||
$("#DocContentArea").show();
|
||||
}
|
||||
else {
|
||||
$("#OriginUrlArea").show();
|
||||
$("#DocContentArea").hide();
|
||||
|
||||
}
|
||||
});
|
||||
//contentEdit = editormd("md_DocContent", {
|
||||
// width: "96%",
|
||||
// height: 640,
|
||||
// syncScrolling: "single",
|
||||
// path: "../../lib/editormd/lib/"
|
||||
//});
|
||||
loadMarkDown();
|
||||
},
|
||||
submitBefore: function (data) {
|
||||
data.field.OriginType = data.field.OriginType == "on" ? 1 : 0;
|
||||
return data;
|
||||
}
|
||||
};
|
||||
freejs.dialogWindow.create(options, form);
|
||||
break;
|
||||
@ -149,7 +186,33 @@
|
||||
url: "/Admin/Document/DocContentUpdate",
|
||||
},
|
||||
elmid: "docContentEdit",
|
||||
callback: reloadTable
|
||||
callback: reloadTable,
|
||||
loadBefore: function () {
|
||||
//监听指定开关
|
||||
form.on('switch(switchTest)', function (data) {
|
||||
if (this.checked) {
|
||||
$("#OriginUrlArea").hide();
|
||||
$("#DocContentArea").show();
|
||||
}
|
||||
else {
|
||||
$("#OriginUrlArea").show();
|
||||
$("#DocContentArea").hide();
|
||||
|
||||
}
|
||||
});
|
||||
//contentEdit = editormd("md_DocContent", {
|
||||
// width: "96%",
|
||||
// height: 640,
|
||||
// syncScrolling: "single",
|
||||
// path: "../../lib/editormd/lib/"
|
||||
//});
|
||||
loadMarkDown();
|
||||
},
|
||||
submitBefore: function (data) {
|
||||
var _origintype = $(".layui-tab-title").find('.layui-this').attr("origintype");
|
||||
data.field.OriginType = _origintype;
|
||||
return data;
|
||||
}
|
||||
};
|
||||
freejs.dialogWindow.create(options, form);
|
||||
}
|
||||
|
@ -2,23 +2,17 @@
|
||||
@model FreeSql.Site.Entity.DocumentContent
|
||||
|
||||
<form class="layui-form" action="" id="frm_DocContentEdit">
|
||||
@Html.HiddenFor(m => m.ID)
|
||||
@Html.HiddenFor(m => m.CreateBy)
|
||||
@Html.HiddenFor(m => m.CreateDt)
|
||||
@Html.HiddenFor(m => m.WatchCount)
|
||||
@Html.HiddenFor(m => m.StarCount)
|
||||
<div class="form-module-content">
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">文章分类</label>
|
||||
<label class="layui-form-label">文章分类 </label>
|
||||
<div class="layui-input-block">
|
||||
@Html.HiddenFor(m => m.ID)
|
||||
@Html.HiddenFor(m => m.OriginType)
|
||||
@Html.HiddenFor(m => m.WatchCount)
|
||||
@Html.HiddenFor(m => m.StarCount)
|
||||
@Html.HiddenFor(m => m.CreateBy)
|
||||
@Html.HiddenFor(m => m.CreateDt)
|
||||
@Html.DropDownList("TypeID", ViewBag.DocumentTypeList as List<SelectListItem>, "", new Dictionary<string, object> { { "class", "plate_text" } })
|
||||
@*<select name="TypeID" lay-filter="aihao">
|
||||
<option value="0" selected="selected">--请选择--</option>
|
||||
@foreach (var item in (List<SelectListItem>)ViewBag.DocumentTypeList)
|
||||
{
|
||||
<option value="@item.Value">@item.Text</option>
|
||||
}
|
||||
</select>*@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -51,16 +45,38 @@
|
||||
<input type="radio" name="status" value="0" title="关闭">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item layui-form-text">
|
||||
<label class="layui-form-label">文本域</label>
|
||||
<div class="layui-input-block" id="md_DocContent">
|
||||
@Html.TextAreaFor(m => m.DocContent, new Dictionary<string, object> { { "autocomplete", "off" }, { "placeholder", "请输入内容" } })
|
||||
@*<textarea style="display:none;" placeholder="请输入内容" name="DocContent"></textarea>*@
|
||||
@*<div class="layui-form-item">
|
||||
<label class="layui-form-label">来源类型</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="checkbox" id="OriginType" @(Model.OriginType == 1 ? "checked=''" : "") name="OriginType" lay-skin="switch" lay-filter="switchTest" lay-text="当前内容|URL地址">
|
||||
</div>
|
||||
</div>*@
|
||||
|
||||
<div class="layui-tab">
|
||||
<ul class="layui-tab-title">
|
||||
<li class=' @(Model.OriginType == 1 ? "" : "layui-this")' origintype="0">自有内容</li>
|
||||
<li class=' @(Model.OriginType == 1 ? "layui-this" : "")' origintype="1">外部来源</li>
|
||||
</ul>
|
||||
<div class="layui-tab-content">
|
||||
<div class='layui-tab-item @(Model.OriginType == 1 ? "" : "layui-show")'>
|
||||
<div class="layui-form-item layui-form-text" id="DocContentArea">
|
||||
<div id="DocContent">@Model.DocContent</div>
|
||||
@*@Html.TextAreaFor(m => m.DocContent, new Dictionary<string, object> { { "autocomplete", "off" }, { "placeholder", "请输入内容" } })*@
|
||||
@*<textarea style="display:none;" placeholder="请输入内容" name="DocContent"></textarea>*@
|
||||
</div>
|
||||
</div>
|
||||
<div class='layui-tab-item @(Model.OriginType == 1 ? "layui-show" : "")'>
|
||||
<div class="layui-form-item" id="OriginUrlArea">
|
||||
<label class="layui-form-label">外部来源</label>
|
||||
<div class="layui-input-block">
|
||||
@Html.TextBoxFor(m => m.OriginUrl, "", new Dictionary<string, object> { { "autocomplete", "off" }, { "class", "layui-input " }, { "lay-verify", "title" }, { "placeholder", "请输入标题" } })
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="form-module-footer">
|
||||
@*<div class="form-module-footer">
|
||||
<button class="layui-btn" lay-submit lay-filter="formDemo">立即提交</button>
|
||||
</div>
|
||||
</div>*@
|
||||
</form>
|
@ -11,8 +11,8 @@
|
||||
<script>
|
||||
var dialog_Paramters = { height: 460, width: 600 };
|
||||
</script>
|
||||
<button class="layui-btn layui-btn-primary layui-btn-xs down-up-all">全部收起/展开</button>
|
||||
<button class="layui-btn layui-btn-primary layui-btn-xs get-checked">获取选中</button>
|
||||
<button class="layui-btn layui-btn-sm down-up-all" expandStatus="down">全部收起/展开</button>
|
||||
<button class="layui-btn layui-btn-sm get-checked">获取选中</button>
|
||||
|
||||
<table class="layui-table layui-form" id="doctype-tree-table"></table>
|
||||
|
||||
@ -42,7 +42,7 @@
|
||||
{
|
||||
field: 'title',
|
||||
title: '标题',
|
||||
width: '40%',
|
||||
width: '45%',
|
||||
template: function (item) {
|
||||
if (item.level == 1) {
|
||||
return '<span style="color:red;">' + item.title + '</span>';
|
||||
@ -53,11 +53,6 @@
|
||||
return item.title;
|
||||
}
|
||||
},
|
||||
{
|
||||
field: 'id',
|
||||
title: '编号',
|
||||
width: '10%'
|
||||
},
|
||||
{
|
||||
title: '标签',
|
||||
width: '10%',
|
||||
|
@ -33,7 +33,7 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-module-footer">
|
||||
@*<div class="form-module-footer">
|
||||
<button class="layui-btn" lay-submit lay-filter="formDemo">立即提交</button>
|
||||
</div>
|
||||
</div>*@
|
||||
</form>
|
@ -1,5 +1,5 @@
|
||||
@{
|
||||
ViewBag.Title = "";
|
||||
ViewData["Title"] = ".NETCore最方便的ORM";
|
||||
Layout = "~/Areas/Admin/Shared/_Layout.cshtml";
|
||||
}
|
||||
<div class="layui-side layui-bg-black">
|
||||
@ -21,7 +21,7 @@
|
||||
<div class="layui-body">
|
||||
<!-- 内容主体区域 -->
|
||||
<div style="padding: 15px;" id="page_content">
|
||||
|
||||
文档主页引导
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -32,7 +32,7 @@
|
||||
|
||||
var index = freejs.showLoading({ msg: "数据加载中......" });
|
||||
var options = {
|
||||
url: path_item, paramters: $.parseJSON(path_json), loadIndex: index
|
||||
url: path_item, paramters: $.parseJSON(path_json), loadIndex: index, elm: "page_content"
|
||||
};
|
||||
freejs.loadHtml(options);
|
||||
|
||||
|
@ -1,3 +1,4 @@
|
||||
@{
|
||||
Layout = null;
|
||||
ViewData["Title"] = ".NETCore最方便的ORM";
|
||||
}
|
||||
|
@ -4,68 +4,53 @@
|
||||
}
|
||||
@if (ViewBag.DocumentInfo == null)
|
||||
{
|
||||
<span style="font-size:20px; color:red;">
|
||||
编号: @ViewBag.DocumentID
|
||||
</span>
|
||||
<span>测试没有</span>
|
||||
<span>文章不存在,请选择其它文章查看!</span>
|
||||
}
|
||||
else
|
||||
{
|
||||
<h1 class="site-h1">@*开始使用 - 入门指南*@@documentinfo.DocTitle</h1>
|
||||
<h1 class="site-h1">@documentinfo.DocTitle</h1>
|
||||
<div id="details_content" style="display:none;">
|
||||
@*<markdown>@documentinfo.DocContent</markdown>*@
|
||||
<blockquote>
|
||||
@documentinfo.DocAbstract
|
||||
</blockquote>
|
||||
@documentinfo.DocContent
|
||||
@*<blockquote class="layui-elem-quote">
|
||||
lFreeSql 是轻量化、可扩展和跨平台版的 .NETStandard 数据访问技术实现。<br />
|
||||
FreeSql 可用作对象关系映射程序 (O/RM),以便于开发人员能够使用 .NETStandard 对象来处理数据库,不必经常编写大部分数据访问代码。<br />
|
||||
FreeSql 支持 MySql/SqlServer/PostgreSQL 数据库技术实现。<br />
|
||||
FreeSql 打造 .NETCore 最方便的 ORM,dbfirst codefirst混合使用,codefirst模式下的开发阶段,建好实体不用执行任何操作,就能创建表和修改字段,dbfirst模式下提供api+模板,自定义生成代码,作者提供了3种模板。<br />
|
||||
FreeSql 目前仍处在测试阶段,您可以持续关注或者参与给出宝贵意见,QQ群:4336577
|
||||
</blockquote>
|
||||
<fieldset class="layui-elem-field layui-field-title site-title">
|
||||
<legend><a name="compatibility">兼容性和面向场景</a></legend>
|
||||
</fieldset>
|
||||
<div class="site-text">
|
||||
<p>1. 官网首页下载</p>
|
||||
<blockquote class="layui-elem-quote layui-quote-nm">
|
||||
您可以通过 <a href="#">Github</a> 下载到FreeSql的最新版:
|
||||
</blockquote>
|
||||
<pre class="layui-code layui-box layui-code-view"><h3 class="layui-code-h3">code<a href="#" target="_blank">FreeSql</a></h3><ol class="layui-code-ol"><li> ├─css //css目录</li><li> │ │─modules //模块css目录(一般如果模块相对较大,我们会单独提取,比如下面三个:)</li><li> │ │ ├─laydate</li><li> │ │ ├─layer</li><li> │ │ └─layim</li><li> │ └─layui.css //核心样式文件</li><li> ├─font //字体图标目录</li><li> ├─images //图片资源目录(目前只有layim和编辑器用到的GIF表情)</li><li> │─lay //模块核心目录</li><li> │ └─modules //各模块组件</li><li> │─layui.js //基础核心库</li><li> └─layui.all.js //包含layui.js和所有模块的合并文件</li><li> </li></ol></pre>
|
||||
<p>2. Git 仓库下载</p>
|
||||
<blockquote class="layui-elem-quote layui-quote-nm">
|
||||
你也可以通过 <a href="https://github.com/2881099/FreeSql/" target="_blank">GitHub</a> 或 <a href="https://gitee.com/sentsin/layui" target="_blank">码云</a> 得到 FreeSql 的完整开发包,以便于你进行二次开发,或者 Fork FreeSql 为我们贡献方案
|
||||
<br><br>
|
||||
<iframe src="//ghbtns.com/github-btn.html?user=2881099&repo=FreeSql&type=watch&count=true&size=large" allowtransparency="true" frameborder="0" scrolling="0" width="156px" height="30px"></iframe>
|
||||
<iframe src="//ghbtns.com/github-btn.html?user=2881099&repo=FreeSql&type=fork&count=true&size=large" allowtransparency="true" frameborder="0" scrolling="0" width="156px" height="30px"></iframe>
|
||||
</blockquote>
|
||||
<p>3. npm 安装</p>
|
||||
<pre class="layui-code layui-box layui-code-view layui-code-notepad" lay-skin="notepad"><h3 class="layui-code-h3">code<a href="#" target="_blank">FreeSql</a></h3><ol class="layui-code-ol"><li> </li><li>Install-Package FreeSql </li><li> </li></ol></pre>
|
||||
<p>一般用于 WebPack 管理</p>
|
||||
</div>
|
||||
<fieldset class="layui-elem-field layui-field-title site-title">
|
||||
<legend><a name="quickstart">快速上手</a></legend>
|
||||
</fieldset>
|
||||
<div class="site-text">
|
||||
<p>1. 官网首页下载</p>
|
||||
<blockquote class="layui-elem-quote layui-quote-nm">
|
||||
你可以在我们的 <a href="http://www.layui.com/">官网首页</a> 下载到 layui 的最新版,它经过了自动化构建,更适合用于生产环境。目录结构如下:
|
||||
</blockquote>
|
||||
<pre class="layui-code layui-box layui-code-view"><h3 class="layui-code-h3">code<a href="#" target="_blank">FreeSql</a></h3><ol class="layui-code-ol"><li> ├─css //css目录</li><li> │ │─modules //模块css目录(一般如果模块相对较大,我们会单独提取,比如下面三个:)</li><li> │ │ ├─laydate</li><li> │ │ ├─layer</li><li> │ │ └─layim</li><li> │ └─layui.css //核心样式文件</li><li> ├─font //字体图标目录</li><li> ├─images //图片资源目录(目前只有layim和编辑器用到的GIF表情)</li><li> │─lay //模块核心目录</li><li> │ └─modules //各模块组件</li><li> │─layui.js //基础核心库</li><li> └─layui.all.js //包含layui.js和所有模块的合并文件</li><li> </li></ol></pre>
|
||||
</div>*@
|
||||
</div>
|
||||
<script>
|
||||
marked.setOptions({
|
||||
renderer: new marked.Renderer(),
|
||||
gfm: true,
|
||||
tables: true,
|
||||
breaks: true,
|
||||
pedantic: false,
|
||||
sanitize: false,
|
||||
smartLists: true,
|
||||
smartypants: false,
|
||||
});
|
||||
document.getElementById('details_content').innerHTML =
|
||||
marked($("#details_content").html());
|
||||
if ('@documentinfo.OriginType' == '1') {
|
||||
var options = {
|
||||
elm: "details_content", url: "@documentinfo.OriginUrl", paramters: "", loadIndex: 1,
|
||||
successCallBack: function () {
|
||||
debugger
|
||||
document.getElementById('details_content').innerHTML =
|
||||
marked($("#details_content").html());
|
||||
}
|
||||
};
|
||||
freejs.loadHtml(options);
|
||||
}
|
||||
else {
|
||||
if ('@documentinfo.EditorMode' == '0') {
|
||||
marked.setOptions({
|
||||
renderer: new marked.Renderer(),
|
||||
gfm: true,
|
||||
tables: true,
|
||||
breaks: true,
|
||||
pedantic: false,
|
||||
sanitize: false,
|
||||
smartLists: true,
|
||||
smartypants: false,
|
||||
});
|
||||
marked.setOptions({
|
||||
highlight: function (code) {
|
||||
return hljs.highlightAuto(code).value;
|
||||
}
|
||||
});
|
||||
document.getElementById('details_content').innerHTML =
|
||||
marked($("#details_content").html());
|
||||
}
|
||||
else {
|
||||
//直接里面的内容就是HTML
|
||||
}
|
||||
}
|
||||
$("#details_content").show();
|
||||
</script>
|
||||
}
|
Reference in New Issue
Block a user