Parcourir la source

1,优化截图上传和显示支持远程地址。
2,更新火车头入库模块、说明文档加入截图字段。
3,其他细节。

magicblack il y a 4 ans
Parent
commit
4f83f5306c

+ 41 - 12
application/admin/view/art/info.html

@@ -169,26 +169,22 @@
                         <label class="layui-form-label ">{:lang('pic_screenshot')}:</label>
                         <div class="layui-input-inline w400 ">
                             <div class="layui-btn-group">
-                                <button type="button" class="layui-btn screenshot"><i class="layui-icon layui-icon-upload"></i> {:lang('add')}</button>
-
+                                <button type="button" class="layui-btn screenshot"><i class="layui-icon layui-icon-upload"></i> {:lang('upload_pic')}</button>
                             </div>
                         </div>
                     </div>
                     <div class="layui-form-item">
-                        <div class="layui-input-block w900">
+                        <div class="layui-input-block">
+                            <textarea id="art_pic_screenshot" name="art_pic_screenshot" type="text/plain" style="width:100%;height:150px;">{$info.art_pic_screenshot|mac_str_correct=###,'#',chr(13)}</textarea>
                             <fieldset class="layui-elem-field layui-field-title" style="margin-top: 30px;">
                                 <legend>{:lang('screenshot_preview')}</legend>
                             </fieldset>
                             <div class="screenshot_list">
-                                {notempty name="$info.art_pic_screenshot"}
-                                {volist name=":explode('$$$',$info.art_pic_screenshot);" id="vo"}
-                                <div>
-                                    <input type="hidden" name="art_pic_screenshot[]" value="{$vo}">
-                                    <a href="javascript:;" class="del_screenshot">{:lang('del')}</a>
-                                    <img src="{:mac_url_img($vo)}" alt="" class="layui-upload-img screenshot-img">
+                                {volist name="$info.art_pic_screenshot_list" id="vo"}
+                                <div data-src="{$vo['url']}"><a href="javascript:;" class="del_screenshot">{:lang('del')}</a>
+                                    <img src="{$vo['url']}" alt="" class="layui-upload-img screenshot-img">
                                 </div>
                                 {/volist}
-                                {/notempty}
                             </div>
                         </div>
                     </div>
@@ -388,10 +384,33 @@
             }
             ,done: function(res){
                 var val = res.data.file;
-                $('.screenshot_list').append('<div><input type="hidden" name="art_pic_screenshot[]" value="'+val+'"><a href="javascript:;" class="del_screenshot">{:lang('del')}</a><img src="{php}echo MAC_PATH;{/php}'+ val +'" alt="" class="layui-upload-img screenshot-img"></div>')
+                var input = $("#art_pic_screenshot")
+                var content = input.val();
+                if(content){
+                    content += '\r\n'+val;
+                }
+                input.val(content);
+                $('.screenshot_list').append('<div data-src="'+val+'"><a href="javascript:;" class="del_screenshot">{:lang('del')}</a><img src="'+mac_url_img(val)+'" alt="" class="layui-upload-img screenshot-img"></div>');
             }
         });
 
+        //监听文本框
+        $('#art_pic_screenshot').keyup(function(e){
+            let html = ``;
+            var textArr = $(this).val().split(/[(\r\n)\r\n]+/);
+            textArr.forEach((item,index)=>{
+                if(!item){
+                    textArr.splice(index,1);
+                }else{
+                    if(item.indexOf('$')>-1){
+                        item = item.substring(item.indexOf('$')+1);
+                    }
+                    html += `<div data-src="${item}"><a href="javascript:;" class="del_screenshot">{:lang('del')}</a><img src="${mac_url_img(item)}"" alt="" class="layui-upload-img screenshot-img"></div>`;
+                }
+            });
+            $('.screenshot_list').html(html);
+        });
+
         upload.render({
             elem: '.layui-upload'
             ,url: "{:url('upload/upload')}?flag=art"
@@ -492,8 +511,18 @@
         });
 
         $(document).on('click', '.del_screenshot', function() {
-            var src=$(this).parent().find('input').val();
+            var src = $(this).parent().attr('data-src');
+            var input = $("#art_pic_screenshot")
+            var content = input.val();
+            console.log(content);
+            var snsArr = content.split(/[(\r\n)\r\n]+/);
+            snsArr.forEach((item,index)=>{
+                if(!item || item == src){
+                    snsArr.splice(index,1);//删除
+                }
+            });
             $(this).parent().remove();
+            input.val(snsArr.join('\r\n'));//重新赋值
             $.get("{:url('annex/del')}", {ids:src}, function(res){});
         });
         if(content_arr_len==0){

+ 41 - 12
application/admin/view/vod/info.html

@@ -294,26 +294,22 @@
                         <label class="layui-form-label ">{:lang('pic_screenshot')}:</label>
                         <div class="layui-input-inline w400 ">
                             <div class="layui-btn-group">
-                                <button type="button" class="layui-btn screenshot"><i class="layui-icon layui-icon-upload"></i> {:lang('add')}</button>
-
+                                <button type="button" class="layui-btn screenshot"><i class="layui-icon layui-icon-upload"></i> {:lang('upload_pic')}</button>
                             </div>
                         </div>
                     </div>
                     <div class="layui-form-item">
-                        <div class="layui-input-block w900">
+                        <div class="layui-input-block">
+                            <textarea id="vod_pic_screenshot" name="vod_pic_screenshot" type="text/plain" style="width:100%;height:150px;">{$info.vod_pic_screenshot|mac_str_correct=###,'#',chr(13)}</textarea>
                             <fieldset class="layui-elem-field layui-field-title" style="margin-top: 30px;">
                                 <legend>{:lang('screenshot_preview')}</legend>
                             </fieldset>
                             <div class="screenshot_list">
-                                {notempty name="$info.vod_pic_screenshot"}
-                                {volist name=":explode('$$$',$info.vod_pic_screenshot);" id="vo"}
-                                <div>
-                                    <input type="hidden" name="vod_pic_screenshot[]" value="{$vo}">
-                                    <a href="javascript:;" class="del_screenshot">{:lang('del')}</a>
-                                    <img src="{:mac_url_img($vo)}" alt="" class="layui-upload-img screenshot-img">
+                                {volist name="$info.vod_pic_screenshot_list" id="vo"}
+                                <div data-src="{$vo['url']}"><a href="javascript:;" class="del_screenshot">{:lang('del')}</a>
+                                    <img src="{$vo['url']}" alt="" class="layui-upload-img screenshot-img">
                                 </div>
                                 {/volist}
-                                {/notempty}
                             </div>
                         </div>
                     </div>
@@ -574,10 +570,33 @@
             }
             ,done: function(res){
                 var val = res.data.file;
-                $('.screenshot_list').append('<div><input type="hidden" name="vod_pic_screenshot[]" value="'+val+'"><a href="javascript:;" class="del_screenshot">{:lang('del')}</a><img src="{php}echo MAC_PATH;{/php}'+ val +'" alt="" class="layui-upload-img screenshot-img"></div>')
+                var input = $("#vod_pic_screenshot")
+                var content = input.val();
+                if(content){
+                    content += '\r\n'+val;
+                }
+                input.val(content);
+                $('.screenshot_list').append('<div data-src="'+val+'"><a href="javascript:;" class="del_screenshot">{:lang(\'del\')}</a><img src="'+mac_url_img(val)+'" alt="" class="layui-upload-img screenshot-img"></div>');
             }
         });
 
+        //监听文本框
+        $('#vod_pic_screenshot').keyup(function(e){
+            let html = ``;
+            var textArr = $(this).val().split(/[(\r\n)\r\n]+/);
+            textArr.forEach((item,index)=>{
+                if(!item){
+                    textArr.splice(index,1);
+                }else{
+                    if(item.indexOf('$')>-1){
+                        item = item.substring(item.indexOf('$')+1);
+                    }
+                    html += `<div data-src="${item}"><a href="javascript:;" class="del_screenshot">{:lang('del')}</a><img src="${mac_url_img(item)}"" alt="" class="layui-upload-img screenshot-img"></div>`;
+                }
+            });
+            $('.screenshot_list').html(html);
+        });
+
         upload.render({
             elem: '.layui-upload'
             ,url: "{:url('upload/upload')}?flag=vod"
@@ -892,8 +911,18 @@
             $("#plot_list").append(tpl);
         });
         $(document).on('click', '.del_screenshot', function() {
-            var src=$(this).parent().find('input').val();
+            var src = $(this).parent().attr('data-src');
+            var input = $("#vod_pic_screenshot")
+            var content = input.val();
+            console.log(content);
+            var snsArr = content.split(/[(\r\n)\r\n]+/);
+            snsArr.forEach((item,index)=>{
+                if(!item || item == src){
+                    snsArr.splice(index,1);//删除
+                }
+            });
             $(this).parent().remove();
+            input.val(snsArr.join('\r\n'));//重新赋值
             $.get("{:url('annex/del')}", {ids:src}, function(res){});
         });
         if(players_arr_len==0 && downers_arr_len==0) {

+ 41 - 13
application/admin/view/website/info.html

@@ -159,31 +159,26 @@
                         <label class="layui-form-label ">{:lang('pic_screenshot')}:</label>
                         <div class="layui-input-inline w400 ">
                             <div class="layui-btn-group">
-                                <button type="button" class="layui-btn screenshot"><i class="layui-icon layui-icon-upload"></i> {:lang('add')}</button>
-
+                                <button type="button" class="layui-btn screenshot"><i class="layui-icon layui-icon-upload"></i> {:lang('upload_pic')}</button>
                             </div>
                         </div>
                     </div>
                     <div class="layui-form-item">
-                        <div class="layui-input-block w900">
+                        <div class="layui-input-block">
+                            <textarea id="website_pic_screenshot" name="website_pic_screenshot" type="text/plain" style="width:100%;height:150px;">{$info.website_pic_screenshot|mac_str_correct=###,'#',chr(13)}</textarea>
                             <fieldset class="layui-elem-field layui-field-title" style="margin-top: 30px;">
                                 <legend>{:lang('screenshot_preview')}</legend>
                             </fieldset>
                             <div class="screenshot_list">
-                                {notempty name="$info.website_pic_screenshot"}
-                                {volist name=":explode('$$$',$info.website_pic_screenshot);" id="vo"}
-                                <div>
-                                    <input type="hidden" name="website_pic_screenshot[]" value="{$vo}">
-                                    <a href="javascript:;" class="del_screenshot">{:lang('del')}</a>
-                                    <img src="{:mac_url_img($vo)}" alt="" class="layui-upload-img screenshot-img">
+                                {volist name="$info.website_pic_screenshot_list" id="vo"}
+                                <div data-src="{$vo['url']}"><a href="javascript:;" class="del_screenshot">{:lang('del')}</a>
+                                    <img src="{$vo['url']}" alt="" class="layui-upload-img screenshot-img">
                                 </div>
                                 {/volist}
-                                {/notempty}
                             </div>
                         </div>
                     </div>
 
-
                     <div class="layui-form-item">
                         <label class="layui-form-label">{:lang('blurb')}:</label>
                         <div class="layui-input-block">
@@ -349,9 +344,32 @@
             }
             ,done: function(res){
                 var val = res.data.file;
-                $('.screenshot_list').append('<div><input type="hidden" name="website_pic_screenshot[]" value="'+val+'"><a href="javascript:;" class="del_screenshot">{:lang('del')}</a><img src="{php}echo MAC_PATH;{/php}'+ val +'" alt="" class="layui-upload-img screenshot-img"></div>')
+                var input = $("#website_pic_screenshot")
+                var content = input.val();
+                if(content){
+                    content += '\r\n'+val;
+                }
+                input.val(content);
+                $('.screenshot_list').append('<div data-src="'+val+'"><a href="javascript:;" class="del_screenshot">{:lang(\'del\')}</a><img src="'+mac_url_img(val)+'" alt="" class="layui-upload-img screenshot-img"></div>');
             }
         });
+        //监听文本框
+        $('#website_pic_screenshot').keyup(function(e){
+            let html = ``;
+            var textArr = $(this).val().split(/[(\r\n)\r\n]+/);
+            textArr.forEach((item,index)=>{
+                if(!item){
+                    textArr.splice(index,1);
+                }else{
+                    if(item.indexOf('$')>-1){
+                        item = item.substring(item.indexOf('$')+1);
+                    }
+                    html += `<div data-src="${item}"><a href="javascript:;" class="del_screenshot">{:lang('del')}</a><img src="${mac_url_img(item)}"" alt="" class="layui-upload-img screenshot-img"></div>`;
+                }
+            });
+            $('.screenshot_list').html(html);
+        });
+
         upload.render({
             elem: '.layui-upload'
             ,url: "{:url('upload/upload')}?flag=website"
@@ -402,8 +420,18 @@
             $("#website_score_num").val( rndNum(100) );
         });
         $(document).on('click', '.del_screenshot', function() {
-            var src=$(this).parent().find('input').val();
+            var src = $(this).parent().attr('data-src');
+            var input = $("#website_pic_screenshot")
+            var content = input.val();
+            console.log(content);
+            var snsArr = content.split(/[(\r\n)\r\n]+/);
+            snsArr.forEach((item,index)=>{
+                if(!item || item == src){
+                    snsArr.splice(index,1);//删除
+                }
+            });
             $(this).parent().remove();
+            input.val(snsArr.join('\r\n'));//重新赋值
             $.get("{:url('annex/del')}", {ids:src}, function(res){});
         });
         var ue = editor_getEditor('website_content');

+ 21 - 2
application/common.php

@@ -1157,6 +1157,8 @@ function mac_plot_list($vod_plot_name,$vod_plot_detail)
 
 }
 
+
+
 function mac_play_list($vod_play_from,$vod_play_url,$vod_play_server,$vod_play_note,$flag='play')
 {
     $vod_play_from_list = [];
@@ -1226,6 +1228,25 @@ function new_stripslashes($string) {
     return $string;
 }
 
+function mac_screenshot_list($screenshot)
+{
+    $url_list = array();
+    $array_url = explode('#',$screenshot);
+    foreach($array_url as $key=>$val){
+        if(empty($val)) continue;
+
+        list($title, $url) = explode('$', $val);
+        if ( empty($url) ) {
+            $url_list[$key+1]['name'] = ($key+1);
+            $url_list[$key+1]['url'] = mac_url_img($title);
+        }else{
+            $url_list[$key+1]['name'] = $title;
+            $url_list[$key+1]['url'] = mac_url_img($url);
+        }
+    }
+    return $url_list;
+}
+
 function mac_play_list_one($url_one, $from_one, $server_one=''){
     $url_list = array();
     $array_url = explode('#',$url_one);
@@ -1249,8 +1270,6 @@ function mac_play_list_one($url_one, $from_one, $server_one=''){
     return $url_list;
 }
 
-
-
 function mac_filter_words($str)
 {
     $config = config('maccms.app');

+ 4 - 1
application/common/model/Art.php

@@ -418,6 +418,9 @@ class Art extends Base {
                 $info['art_page_list'] = mac_art_list($info['art_title'], $info['art_note'], $info['art_content']);
                 $info['art_page_total'] = count($info['art_page_list']);
             }
+            if(!empty($info['art_pic_screenshot'])){
+                $info['art_pic_screenshot_list'] = mac_screenshot_list($info['art_pic_screenshot']);
+            }
             //分类
             if (!empty($info['type_id'])) {
                 $type_list = model('Type')->getCache('type_list');
@@ -463,7 +466,7 @@ class Art extends Base {
             $data['art_letter'] = strtoupper(substr($data['art_en'],0,1));
         }
         if(!empty($data['art_pic_screenshot'])){
-            $data['art_pic_screenshot'] = join('$$$',$data['art_pic_screenshot']);
+            $data['art_pic_screenshot'] = str_replace( array(chr(10),chr(13)), array('','#'),$data['art_pic_screenshot']);
         }
         if(!empty($data['art_content'])) {
             $data['art_content'] = join('$$$', $data['art_content']);

+ 4 - 1
application/common/model/Vod.php

@@ -501,6 +501,9 @@ class Vod extends Base {
             if (!empty($info['vod_plot_name'])) {
                 $info['vod_plot_list'] = mac_plot_list($info['vod_plot_name'], $info['vod_plot_detail']);
             }
+            if(!empty($info['vod_pic_screenshot'])){
+                $info['vod_pic_screenshot_list'] = mac_screenshot_list($info['vod_pic_screenshot']);
+            }
 
             //分类
             if (!empty($info['type_id'])) {
@@ -568,7 +571,7 @@ class Vod extends Base {
             $data['vod_down_url'] = '';
         }
         if(!empty($data['vod_pic_screenshot'])){
-            $data['vod_pic_screenshot'] = join('$$$',$data['vod_pic_screenshot']);
+            $data['vod_pic_screenshot'] = str_replace( array(chr(10),chr(13)), array('','#'),$data['vod_pic_screenshot']);
         }
         if(!empty($data['vod_play_from'])) {
             $data['vod_play_from'] = join('$$$', $data['vod_play_from']);

+ 4 - 1
application/common/model/Website.php

@@ -431,6 +431,9 @@ class Website extends Base {
                 return ['code' => 1002, 'msg' => lang('obtain_err')];
             }
             $info = $info->toArray();
+            if(!empty($info['website_pic_screenshot'])){
+                $info['website_pic_screenshot_list'] = mac_screenshot_list($info['website_pic_screenshot']);
+            }
             //分类
             if (!empty($info['type_id'])) {
                 $type_list = model('Type')->getCache('type_list');
@@ -469,7 +472,7 @@ class Website extends Base {
             $data['website_letter'] = strtoupper(substr($data['website_en'],0,1));
         }
         if(!empty($data['website_pic_screenshot'])){
-            $data['website_pic_screenshot'] = join('$$$',$data['website_pic_screenshot']);
+            $data['website_pic_screenshot'] = str_replace( array(chr(10),chr(13)), array('','#'),$data['website_pic_screenshot']);
         }
         if($data['uptime']==1){
             $data['website_time'] = time();

+ 1 - 1
application/extra/version.php

@@ -3,7 +3,7 @@ return array (
     'name' => '苹果CMS内容管理系统',
     'copyright' => 'MacCMS',
     'url' => '//github.com/magicblack',
-    'code' => '2020.1000.1064',
+    'code' => '2020.1000.1065',
     'license' => '免费版',
 );
 ?>

+ 9 - 0
static/js/admin_common.js

@@ -516,4 +516,13 @@ function getDataTime(ts,ty) {
         r += ' ' + (h<10?'0'+h:h)  + ':' + (i<10?'0'+i:i) + ':' + (s<10?'0'+s:s)
     }
     return r;
+}
+
+function mac_url_img(url)
+{
+    url = url.replace('mac:','http:');
+    if (url.indexOf("http") == -1 || url.indexOf("//") == -1){
+        url = ROOT_PATH+"/"+url;
+    }
+    return url;
 }

+ 6 - 3
说明文档/标签说明.txt

@@ -421,7 +421,8 @@ plot是否包含分集剧情 0,1
 {$obj.vod_pic} 图片
 {$obj.vod_pic_thumb} 缩略图
 {$obj.vod_pic_slide} 幻灯图
-{$obj.vod_pic_screenshot}截图多个图片用$$$连接
+{$obj.vod_pic_screenshot}截图多个图片用#连接
+{$obj.vod_pic_screenshot_list}截图列表
 {$obj.vod_actor} 主演
 {$obj.vod_director} 导演
 {$obj.vod_writer}编剧
@@ -675,7 +676,8 @@ cachetime自定义缓存时间单位秒
 {$obj.art_pic} 主图
 {$obj.art_pic_thumb} 缩略图
 {$obj.art_pic_slide} 幻灯图
-{$obj.art_pic_screenshot}截图多个图片用$$$连接
+{$obj.art_pic_screenshot}截图多个图片用#连接
+{$obj.art_pic_screenshot_list}截图列表
 {$obj.art_blurb} 简介
 {$obj.art_remarks} 备注
 {$obj.art_jumpurl} 跳转url
@@ -1034,7 +1036,8 @@ cachetime自定义缓存时间单位秒
 {$obj.website_tag} tags
 {$obj.website_class} 扩展分类
 {$obj.website_pic} 截图
-{$obj.website_pic_screenshot}截图多个图片用$$$连接
+{$obj.website_pic_screenshot}截图多个图片用#连接
+{$obj.website_pic_screenshot_list}截图列表
 {$obj.website_logo} logo
 {$obj.website_sort} 排序
 {$obj.website_level} 推荐值

BIN
说明文档/火车头模块/苹果CMS10.x文章.wpm


BIN
说明文档/火车头模块/苹果CMS10.x网址.wpm


BIN
说明文档/火车头模块/苹果CMS10.x视频.wpm