123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505 |
- <style>
- .measure-input{
- background:transparent url("${ctxPath}/static/images/ruler.gif") repeat-x scroll 0 bottom
- }
- .mutiUpload{
- max-width: 510px;
- height:auto;
- font-size: 18px;
- margin-left: 90px;
- margin-top: -10px;
- }
- .mutiUpload div{
- line-height: 1.8;
- }
- .mutiUpload p{
- font-size: 20px;
- }
- .bjui-pageContent{
- margin: 0 auto;
- }
- </style>
- <script type="text/javascript">
- function thumb_upload_success(file, data) {
- var json = $.parseJSON(data)
- $(this).bjuiajax('ajaxDone', json)
- if (json[BJUI.keys.statusCode] == BJUI.statusCode.ok) {
- $('#j_content_thumb').val(json.filename).trigger('validate')
- $('#j_custom_pic').val(json.filename)
- $('#j_custom_span_pic').html('<img src="'+ json.filename +'" style="margin: 10px 0 0 0" WIDTH="200" HEIGHT="120"/>')
- }
- }
- function content_save_post(){
- $("#status").val("1");
- $("#qy_qymc").val($("#qy_id").find("option:selected").text());
- }
- function content_save(){
- $("#status").val("0");
- $("#qy_qymc").val($("#qy_id").find("option:selected").text());
- }
- </script>
- @if(isWindow=="NO"){
- <div class="bjui-pageHeader">
- <div class="bjui-searchBar">
- <a class="btn btn-default" data-icon="reply" href="${ctxPath}/system/cms/content/page?categoryId=${category.categoryId!}" data-toggle="ajaxload" data-target="#layout-content">返回栏目</a>
- <div class="pull-right">
- @if(has(content)){
- <!--<a class="btn btn-default" data-icon="desktop" href="${ctxPath}/system/cms/content/input?categoryId=${category.categoryId!}&contentId=${content.content_id!}&isWindow=YES" data-toggle="dialog" data-width="850" data-height="650" data-id="post-content-window-tab" data-mask="true">窗口模式</a> -->
- @}else{
- <!--<a class="btn btn-default" data-icon="desktop" href="${ctxPath}/system/cms/content/input?categoryId=${category.categoryId!}&isWindow=YES" data-toggle="dialog" data-width="900" data-height="600" data-id="post-content-window-tab" data-mask="true">窗口模式</a> -->
- @}
- </div>
- </div>
- </div>
- @}
- <div class="bjui-pageContent">
- <form method="post" action="${ctxPath}/system/cms/content/save" id="j_model_form" data-toggle="validate" data-autorefresh="true" data-alertmsg="false">
- <input TYPE="hidden" name="contentId" value="${content.contentId!}">
- <input TYPE="hidden" name="userId" value="${session.SysUser.userId!}">
- <input TYPE="hidden" name="siteId" value="${session.SysUser.siteId!}">
- <input type="hidden" name="tableName" value="${model.tableName!}" >
- <input TYPE="hidden" id="status" name="status" >
- <script>
- var id = '${category.categoryId!}';
- if(id=='220'){
- $(".tc").attr("style","display:none;");
- }
- </script>
- <div class="form-group tc">
- <label for="j_title" class="control-label x85">标题:</label>
- <input type="text" name="title" id="j_title" class="input-nm measure-input" value="${content.title!,xss}" placeholder="请填写标题" size="50" >
- </div>
- <hr class="tc" style="margin-top: 3px!important;padding-top: 3px;margin-bottom: 3px!important;">
- <div class="form-group tc">
- <label for="j_keyword" class="control-label x85">关键字:</label>
- <input type="text" name="keywords" id="j_keyword" class="input-nm" value="${content.keywords!,xss}" placeholder="关键字请用逗号,隔开" size="50" >
- </div>
- <hr class="tc" style="margin-top: 3px!important;padding-top: 3px;margin-bottom: 3px!important;">
- <div class="form-group tc">
- <label for="j_inputdate" class="control-label x85">日期:</label>
- <input style="width:225px;margin-left:0px" name="inputdate" id="j_inputdate" data-rule="required;" value="${content.inputdate!,xss}" class="laydate-icon timeUstyle stateUTime"
- onclick="laydate({istime: true,format:'YYYY-MM-DD'})"/>
- </div>
- <hr class="tc" style="margin-top: 3px!important;padding-top: 3px;margin-bottom: 3px!important;">
- <div class="form-group tc">
- <label for="j_des" class="control-label x85">描述:</label>
- <textarea id="j_des" name="description" placeholder="请填写文章描述" cols="50">${content.description!,xss}</textarea>
- </div>
- <hr class="tc" style="margin-top: 3px!important;padding-top: 3px;margin-bottom: 3px!important;">
- <div class="form-group tc">
- <label for="categoryId" class="control-label x85">栏目:</label>
- <select id="categoryId" data-toggle="selectpicker" class="input-nm" readonly="readonly" name="categoryId">
- ${ContentSelectCategoryFunction(session.SysUser.siteId!0,category.categoryId!0)}
- </select>
- </div>
- @if(enterpriseList != null){
- <hr class="tc" style="margin-top: 3px!important;padding-top: 3px;margin-bottom: 3px!important;">
- <div class="form-group tc">
- <label for="qy_id" class="control-label x85">企业:</label>
- <select id="qy_id" data-toggle="selectpicker" class="input-nm" readonly="readonly" name="qy_id">
- @for(enterprise in enterpriseList){
- <option value="${enterprise.qy_id}">${enterprise.qy_qymc}</option>
- @}
- </select>
- <input type="hidden" id="qy_qymc" name="qy_qymc">
- </div>
- @}
- <hr class="tc" style="margin-top: 3px!important;padding-top: 3px;margin-bottom: 3px!important;">
- <div class="form-group tc">
- <label class="control-label x85">封面图片:</label>
- <div style="display: inline-block; vertical-align: middle;">
- <div id="j_content_thumb" data-toggle="upload" data-uploader="${ctxPath}/uploads"
- data-file-size-limit="1024000000"
- data-file-type-exts="*.jpg;*.png;*.gif;*.mpg"
- data-multi="false"
- data-on-upload-success="thumb_upload_success"
- data-icon="cloud-upload"></div>
- <input type="hidden" name="thumb" value="${content.thumb!}" id="j_custom_pic">
- <span id="j_custom_span_pic">
- @if(isNotEmpty(content.thumb)){
- <IMG WIDTH="200" HEIGHT="120" style="margin: 10px 0 0 0" src="${content.thumb!}">
- @}
- </span>
- </div>
- </div>
- <hr class="tc" style="margin-top: 3px!important;padding-top: 3px;margin-bottom: 3px!important;">
- <div class="form-group tc">
- <label for="j_url" class="control-label x85">外部链接:</label>
- <input type="text" name="url" id="j_url" value="${content.url!,xss}" class="input-nm" placeholder="如果填写为外部链接,则文章链接以外部链接为准" size="50" data-rule="url;" >
- </div>
- <hr class="tc" style="margin-top: 3px!important;padding-top: 3px;margin-bottom: 3px!important;">
- <div class="form-group tc">
- <label class="control-label x85">推荐顶置:</label>
- <input type="checkbox" id="recommend" name="recommend" data-toggle="icheck" data-label="推荐" ${(isNotEmpty(content.recommend)&&content.recommend)?'checked':''}>
- <input type="checkbox" id="top" name="top" data-toggle="icheck" data-label="顶置" ${(isNotEmpty(content.top)&&content.top)?'checked':''}>
- </div>
- <hr class="tc" style="margin-top: 3px!important;padding-top: 3px;margin-bottom: 3px!important;">
- <div class="form-group tc">
- <label for="j_viewnum" class="control-label x85">浏览次数:</label>
- <input type="text" name="viewNum" id="j_viewnum" class="input-nm" placeholder="浏览量" value="${content.viewNum!0}" size="20" data-rule="required;integer(+0)" >
- </div>
- <hr class="tc" style="margin-top: 3px!important;padding-top: 3px;margin-bottom: 3px!important;">
- <div class="form-group tc">
- <label for="j_author" class="control-label x85">作者:</label>
- <input type="text" name="author" id="j_author" class="input-nm" placeholder="文章作者" value="${isEmpty(content.author)?session.SysUser.username:content.author!,xss}" size="20" data-rule="required;" >
- </div>
- <hr class="tc" style="margin-top: 3px!important;padding-top: 3px;margin-bottom: 3px!important;">
- <div class="form-group">
- <label for="j_sorts" class="control-label x85">排序:</label>
- <input type="text" name="sorts" id="j_sorts" size="20"
- value="${content.sorts!999}" data-rule="integer;" placeholder="排序">
- </div>
- <hr class="tc" style="margin-top: 3px!important;padding-top: 3px;margin-bottom: 3px!important;">
- <div class="form-group tc">
- <label class="control-label x85">标签:</label>
- <input type="text" name="tags" data-toggle="tags" VALUE="" data-url="${ctxPath}/system/cms/tag/json" data-width="500" placeholder="输入关键字,回车提交">
- </div>
- @for(filed in modelFiled){
- <hr style="margin-top: 3px!important;padding-top: 3px;margin-bottom: 3px!important;">
- <div class="form-group">
- @if(filed.filedClass=="input"){
- <!--TODO 有待做详细的表单验证-->
- <!--普通表单输入-->
- @var t="";
- @if(filed.notNull){
- @t ="data-rule=\"required;";
- @if(filed.filedType=='int'){
- @t=t+"'integer;'";
- @if(filed.filedLength>1){
- @t=t+"length(1~"+filed.filedLength+");";
- @}else{
- @t=t+"length("+filed.filedLength+");";
- @}
- @}
- @t=t+"\"";
- @}
- <label for="${filed.filedName!}" class="control-label x85">${filed.alias}:</label>
- <input type='text' name='${filed.filedName!}' id='${filed.filedName!}' class='input-nm' placeholder='${filed.alias!}' value='${(!has(content)?filed.filedValue!:content[filed.filedName]!),xss}' size='50' ${t!}>
- @}
- @if(filed.filedClass=="image"){
- <!--判断是否为图片上传字段-->
- <!--TODO 有待做自定义文件类型-->
- <label for="${filed.filedName!}" class="control-label x85">${filed.alias}:</label>
- <input type="file" class="form-control" data-name="${filed.filedName!}" data-toggle="webuploader" data-options="
- {
- pick: {label: '点击选择图片'},
- server: '${ctxPath}/uploads',
- fileNumLimit: 20,
- formData: {dir:'${filed.filedName!}'},
- required: true,
- uploaded: '',
- basePath: '',
- accept: {
- title: '图片',
- extensions: 'jpg,JPG,jpeg,JPEG,png,gif',
- mimeTypes: '.jpg,.JPG,.jpeg,.png,gif'
- }
- }"
- >
- <input TYPE="hidden" name="${filed.filedName!}" value="${!has(content)?'':content[filed.filedName]}" >
- @}
- @if(filed.filedClass=="file"){
- <!--判断是否为文件上传字段-->
- <script type="text/javascript">
- function ${filed.filedName!}_upload_success(file, data) {
- var json = $.parseJSON(data)
- $(this).bjuiajax('ajaxDone', json)
- if (json[BJUI.keys.statusCode] == BJUI.statusCode.ok) {
- $('#${filed.filedName!}').val(json.filename).trigger('validate');
- $('#${filed.filedName!}_file').val(json.filename);
- }
- }
- </script>
- <label for="${filed.filedName!}" class="control-label x85">${filed.alias}:</label>
- <div style="display: inline-block; vertical-align: middle;">
- <!--遍历获取运行上传的文件类型-->
- @var strs = strutil.split(filed.filedValue,"#");
- @var str="";
- @if(isNotEmpty(strs)){
- @for(s in strs){
- @str=str+"*."+s+";";
- @}
- @}
- <div id="${filed.filedName!}" data-toggle="upload" data-uploader="${ctxPath}/uploads"
- data-file-size-limit="1024000000"
- data-file-type-exts="${isNotEmpty(str)?strutil.subStringTo(str,0,strutil.length(str)-1):'*.jpg;*.png;*.gif;*.mpg;*.docx;*.doc;*.xls;*.mp4;'}"
- data-multi="false"
- data-on-upload-success="${filed.filedName!}_upload_success"
- data-icon="cloud-upload"></div>
- <span>
- <input type="text" class="input-nm" style="margin: 5px 0 0 0" size="50" name="${filed.filedName!}" placeholder="${filed.alias!}" value="${(!has(content)?'':content[filed.filedName]!),xss='escape'}" id="${filed.filedName!}_file">
- </span>
- </div>
- @}
- @if(filed.filedClass=="editor"){
- <!--判断是否为文本编辑器-->
- <textarea data-toggle="CKEditor" data-upload="${ctxPath}/uploads/CKEditorUpload" id="CKEditorval" style="height:650px;max-height:750px;margin:10px 0 0 0" name="${filed.filedName!}"}>${(has(content)?content[filed.filedName]:filed.filedValue),xss="escape"}</textarea>
- <input type="button" value="一键排版" onclick="yijian()"/>
- @}
- @if(filed.filedClass=="textarea"){
- <label for="${filed.filedName!}" class="control-label x85">${filed.alias}:</label>
- <!--判断是否为文本编辑器-->
- <textarea id="${filed.filedName!}" name="${filed.filedName!}" value="" PLACEHOLDER="${filed.filedValue!}" cols="50" ${filed.notNull?'data-rule=\"required;\"':''}>${(!has(content)?filed.filedValue:content[filed.filedName]),xss="escape"}</textarea>
- @}
- @if(filed.filedClass=="dateInput"){
- <label for="${filed.filedName!}" class="control-label x85">${filed.alias}:</label>
- <!--判断是否为日期输入框-->
- <input type="text" name="${filed.filedName!}" data-toggle="datepicker" value="${(!has(content)?filed.filedValue!:content[filed.filedName]),xss}" data-pattern="yyyy-MM-dd HH:mm:ss">
- @}
- @if(filed.filedClass=="radio"){
- <label class="control-label x85">${filed.alias}:</label>
- <!--判断是否为单选按钮-->
- @if(isNotEmpty(filed.filedValue)){
- @var radios = strutil.split(filed.filedValue,"#");
- @for(radio in radios){
- @var checked ="";
- @if(has(content)){
- @if(radio==content[filed.filedName]){
- @checked="checked";
- @}
- @}
- <input type="radio" name="${filed.filedName!}" id="${filed.filedName!}_${radio}" ${checked!} data-toggle="icheck" data-label="[${radio}]" value="${radio}" ${filed.notNull?'data-rule=\"required;\"':''}></input>
- @}
- @}
- @}
- @if(filed.filedClass=="checkbox"){
- <label for="${filed.filedName!}" class="control-label x85">${filed.alias}:</label>
- <!--判断是为多选按钮-->
- @if(isNotEmpty(filed.filedValue)){
- @var checkboxs = strutil.split(filed.filedValue,"#");
- @for(checkbox in checkboxs){
- @var checked ="";
- @if(has(content)){
- @if(checkbox==content[filed.filedName]){
- @checked="checked";
- @}
- @}
- <input type="checkbox" name="${filed.filedName!}" id="${filed.filedName!}" ${checked!} data-toggle="icheck" data-label="${checkbox}" value="${checkbox}" ${filed.notNull?'data-rule=\"required;\"':''}></input>
- @}
- @}
- @}
- @if(filed.filedClass=="select"){
- <label for="${filed.filedName!}" class="control-label x85">${filed.alias}:</label>
- <!--判断是为单选菜单-->
- @if(isNotEmpty(filed.filedValue)){
- @var selects = strutil.split(filed.filedValue,"#");
- <select name="${filed.filedName!}" data-toggle="selectpicker" ${filed.notNull?'data-rule=\"required\"':''}>
- <option value="" selected>所有</option>
- @for(s in selects){
- @var selected ="";
- @if(has(content)){
- @if(s==content[filed.filedName]){
- @selected="selected";
- @}
- @}
- <option value="${s}" ${selected!}>${s}</option>
- @}
- </select>
- @}
- @}
- </div>
- @}
- </form>
- </div>
- <div class="bjui-pageFooter">
- <ul>
- <li><button onclick="content_save()" type="submit" class="btn btn-blue" data-icon="pencil">暂存草稿</button></li>
- @if(!(shiro.lacksRole("superAdmin"))){
- <li><button onclick="content_save_post()" type="submit" class="btn btn-green" data-icon="send">保存发布</button></li>
- @}
- </ul>
- </div>
- <script>
- //一键排版
- //格式化
- function yijian() {
- var myeditor = CKEDITOR.instances.CKEditorval;
- if (myeditor.mode == "wysiwyg") {
- var tempimg = new Array();
- var temptable = new Array();
- var tempobject = new Array();
- var isPart = false; //暂时无法实现局部格式化
- if (!isPart) {
- var tmpDiv = document.createElement("DIV");
- var editorhtml = myeditor.getData();
- editorhtml = editorhtml.replace(/<div style="page-break-after: always;?">\s*<span style="display: none;?"> <\/span>\s*<\/div>/gi, '<p>[page]</p>'); //将div span标签替换为p 标签
- tmpDiv.innerHTML = editorhtml.replace(/ /gi, '').replace(/<div/gi, '<p').replace(/<\/div/gi, '</p'); //移除空格标签,div替换为p标签。
- if (window.navigator.userAgent.toLowerCase().indexOf("msie") > 0) {
- tmpDiv.innerHTML = tmpDiv.innerHTML.replace(/<\/p>/gi, '<br /><\/p>'); //每个段落相隔一行
- }
- var tables = tmpDiv.getElementsByTagName("TABLE");
- if (tables != null && tables.length > 0) {
- for (var j = 0; j < tables.length; j++) {
- temptable[temptable.length] = tables[j].outerHTML;
- }
- var formattableCount = 0;
- for (var j = 0; j < tables.length;) {
- tables[j].outerHTML = "#FormatTableID_" + formattableCount + "#";
- formattableCount++;
- }
- }
- var objects = tmpDiv.getElementsByTagName("OBJECT");
- if (objects != null && objects.length > 0) {
- for (var j = 0; j < objects.length; j++) {
- tempobject[tempobject.length] = objects[j].outerHTML;
- }
- var formatobjectCount = 0;
- for (var j = 0; j < objects.length;) {
- objects[j].outerHTML = "#FormatObjectID_" + formatobjectCount + "#";
- formatobjectCount++;
- }
- }
- var imgs = tmpDiv.getElementsByTagName("IMG");
- if (imgs != null && imgs.length > 0) {
- for (var j = 0; j < imgs.length; j++) {
- var t = document.createElement("IMG");
- t.alt = imgs[j].alt;
- t.src = imgs[j].src;
- t.width = imgs[j].width;
- t.height = imgs[j].height;
- t.align = imgs[j].align;
- tempimg[tempimg.length] = t;
- }
- var formatImgCount = 0;
- for (var j = 0; j < imgs.length;) {
- imgs[j].outerHTML = "#FormatImgID_" + formatImgCount + "#";
- formatImgCount++;
- }
- }
- var strongarray = new Array();
- var strongcount = 0;
- for (var i = 0; i < tmpDiv.getElementsByTagName('b').length; i++) {
- strongarray[strongcount] = tmpDiv.getElementsByTagName('b')[i].innerText.trim();
- tmpDiv.getElementsByTagName('b')[i].innerHTML = "#FormatStrongID_" + strongcount + "#";
- strongcount++;
- }
- for (var i = 0; i < tmpDiv.getElementsByTagName('strong').length; i++) {
- strongarray[strongcount] = tmpDiv.getElementsByTagName('strong')[i].innerText.trim();
- tmpDiv.getElementsByTagName('strong')[i].innerHTML = "#FormatStrongID_" + strongcount + "#";
- strongcount++;
- }
- var html = processFormatText(tmpDiv.innerText);
- html = html.replace(/<p>\[page\]<\/p>/gi, '<div style="page-break-after: always;"><span style="display: none;"> </span></div>'); //p标签替换回原来的div和span标签。
- if (temptable != null && temptable.length > 0) {
- for (var j = 0; j < temptable.length; j++) {
- var tablehtml = temptable[j];
- html = html.replace("#FormatTableID_" + j + "#", tablehtml);
- }
- }
- if (tempobject != null && tempobject.length > 0) {
- for (var j = 0; j < tempobject.length; j++) {
- var objecthtml = "<p align=\"center\">" + tempobject[j] + "</p>";
- html = html.replace("#FormatObjectID_" + j + "#", objecthtml);
- }
- }
- if (tempimg != null && tempimg.length > 0) {
- for (var j = 0; j < tempimg.length; j++) {
- var imgheight = "";
- var imgwidth = "";
- if (tempimg[j].height != 0)
- imgheight = " height=\"" + tempimg[j].height + "\"";
- if (tempimg[j].width != 0)
- imgwidth = " width=\"" + tempimg[j].width + "\"";
- var imgalign = "";
- if (tempimg[j].align != "")
- imgalign = " align=\"" + tempimg[j].align + "\"";
- var imghtml = "<p align=\"center\"><img src=\"" + tempimg[j].src + "\" alt=\"" + tempimg[j].alt + "\"" + imgwidth + " " + imgheight + " align=\"" + tempimg[j].align + "\" border=\"0\"></p>";
- html = html.replace("#FormatImgID_" + j + "#", imghtml);
- }
- }
- for (var i = 0; i < strongcount; i++) {
- html = html.replace("#FormatStrongID_" + i + "#", "<p><strong>" + strongarray[i] + "</strong></p>");
- }
- while (html.indexOf("</p></p>") != -1) html = html.replace("</p></p>", "</p>");
- while (html.indexOf('<p><p align="center">') != -1) html = html.replace('<p><p align="center">', '<p align="center">');
- myeditor.setData(html);
- } else {
- }
- } else {
- alert('必须在设计模式下操作!');
- }
- }
- function processFormatText(textContext) {
- var text = dbc2Sbc(textContext);
- var prefix = "";
- var tmps = text.split("\n");
- var html = "";
- for (var i = 0; i < tmps.length; i++) {
- var tmp = tmps[i].trim();
- if (tmp.length > 0) {
- var reg = /#Format[A-Za-z]+_\d+#/gi;
- var f = reg.exec(tmp);
- if (f != null) {
- tmp = tmp.replace(/#Format[A-Za-z]+_\d+#/gi, '');
- html += f;
- if (tmp != "")
- html += "<p align=\"center\">" + tmp + "</p>\n";
- } else {
- html += "<p style='text-indent:2em;'>" + tmp + "</p>\n";
- }
- }
- }
- return html;
- }
- function dbc2Sbc(str) {
- var result = '';
- for (var i = 0; i < str.length; i++) {
- var code = str.charCodeAt(i);
- // “65281”是“!”,“65373”是“}”,“65292”是“,”。不转换","
- if (code >= 65281 && code < 65373 && code != 65292 && code != 65306) {
- // “65248”是转换码距
- result += String.fromCharCode(str.charCodeAt(i) - 65248);
- } else {
- result += str.charAt(i);
- }
- }
- return result;
- }
- String.prototype.trim = function () {
- return this.replace(/(^[\s ]*)|([\s ]*$)/g, "");
- };
- String.prototype.leftTrim = function () {
- return this.replace(/(^\s*)/g, "");
- };
- String.prototype.rightTrim = function () {
- return this.replace(/(\s*$)/g, "");
- };
- </script>
|