拖拽可视化新增图文模块、新增base64k库
parent
17a2681977
commit
96c3039e48
|
|
@ -97,6 +97,7 @@ class Design extends Base
|
|||
'border_style_type_list' => BaseLayout::$border_style_type_list,
|
||||
'goods_view_list_show_style' => BaseLayout::$goods_view_list_show_style,
|
||||
'many_images_view_list_show_style' => BaseLayout::$many_images_view_list_show_style,
|
||||
'images_text_view_list_show_style' => BaseLayout::$images_text_view_list_show_style,
|
||||
|
||||
// 首页商品排序规则
|
||||
'goods_order_by_type_list' => MyConst('goods_order_by_type_list'),
|
||||
|
|
|
|||
|
|
@ -5,10 +5,10 @@
|
|||
<legend class="am-padding-horizontal-xs am-padding-bottom-xs">
|
||||
<img src="{{if empty($data['logo'])}}{{$attachment_host}}/static/common/images/default-images-mini.png{{else /}}{{$data.logo}}{{/if}}" class="am-img-thumbnail am-radius page-top-nav-logo" />
|
||||
<span class="page-top-nav-title">
|
||||
<span>{{$data.name}}</span>
|
||||
<a href="javascript:;" class="am-icon-eyedropper am-margin-left-xs" data-am-modal="{target: '#popup-saveinfo'}"></a>
|
||||
<span class="am-text-xs">{{$data.name}}</span>
|
||||
<a href="javascript:;" class="am-icon-eyedropper am-text-xs am-margin-left-xs" data-am-modal="{target: '#popup-saveinfo'}"></a>
|
||||
</span>
|
||||
<a href="{{:MyUrl('index/design/index', ['id'=>$data['id']])}}" target="_blank" class="am-fr">查看 >></a>
|
||||
<a href="{{:MyUrl('index/design/index', ['id'=>$data['id']])}}" target="_blank" class="am-fr am-text-xs am-margin-top-sm">查看 >></a>
|
||||
</legend>
|
||||
<div class="am-padding-bottom-sm">
|
||||
<div class="layout-operate-container am-fr" data-save-url="{{:MyUrl('admin/design/save')}}" data-json="{{:urlencode(json_encode($data))}}">
|
||||
|
|
|
|||
|
|
@ -108,6 +108,9 @@
|
|||
<!-- 复制插件 -->
|
||||
<script type='text/javascript' src="{{$public_host}}static/common/lib/clipboard/clipboard.min.js?v={{:MyC('home_static_cache_version')}}"></script>
|
||||
|
||||
<!-- base64 -->
|
||||
<script type='text/javascript' src="{{$public_host}}static/common/lib/base64/base64csvtojson.js?v={{:MyC('home_static_cache_version')}}"></script>
|
||||
|
||||
<!-- ckplayer播放器 -->
|
||||
{{if isset($is_load_ckplayer) and $is_load_ckplayer eq 1}}
|
||||
<script type='text/javascript' src="{{$public_host}}static/common/lib/ckplayer/js/ckplayer.min.js?v={{:MyC('home_static_cache_version')}}"></script>
|
||||
|
|
|
|||
|
|
@ -110,6 +110,7 @@ class Index extends Common
|
|||
$assign['border_style_type_list'] = BaseLayout::$border_style_type_list;
|
||||
$assign['goods_view_list_show_style'] = BaseLayout::$goods_view_list_show_style;
|
||||
$assign['many_images_view_list_show_style'] = BaseLayout::$many_images_view_list_show_style;
|
||||
$assign['images_text_view_list_show_style'] = BaseLayout::$images_text_view_list_show_style;
|
||||
|
||||
// 首页商品排序规则
|
||||
$assign['goods_order_by_type_list'] = MyConst('goods_order_by_type_list');
|
||||
|
|
|
|||
|
|
@ -72,6 +72,9 @@
|
|||
<!-- 复制插件 -->
|
||||
<script type='text/javascript' src="{{$public_host}}static/common/lib/clipboard/clipboard.min.js?v={{:MyC('home_static_cache_version')}}"></script>
|
||||
|
||||
<!-- base64 -->
|
||||
<script type='text/javascript' src="{{$public_host}}static/common/lib/base64/base64csvtojson.js?v={{:MyC('home_static_cache_version')}}"></script>
|
||||
|
||||
<!-- 元素拖拽排序插件 -->
|
||||
<script type='text/javascript' src="{{$public_host}}static/common/lib/dragsort/jquery.dragsort-0.5.2.min.js?v={{:MyC('home_static_cache_version')}}"></script>
|
||||
|
||||
|
|
|
|||
|
|
@ -45,6 +45,13 @@ class BaseLayout
|
|||
'list' => '列表模式',
|
||||
];
|
||||
|
||||
// 图文样式类型
|
||||
public static $images_text_view_list_show_style = [
|
||||
'updown' => '上图下文',
|
||||
'leftright' => '左图右文',
|
||||
'rolling' => '滚动模式',
|
||||
];
|
||||
|
||||
/**
|
||||
* 配置处理-保存
|
||||
* @author Devil
|
||||
|
|
@ -103,6 +110,27 @@ class BaseLayout
|
|||
}
|
||||
}
|
||||
break;
|
||||
|
||||
// 图文 images-text
|
||||
case 'images-text' :
|
||||
foreach($vss['config']['data_list'] as &$itl)
|
||||
{
|
||||
$itl['images'] = ResourcesService::AttachmentPathHandle($itl['images']);
|
||||
}
|
||||
$key = 'content_images_';
|
||||
foreach($vss['config'] as $mik=>$miv)
|
||||
{
|
||||
if(substr($mik, 0, strlen($key)) == $key)
|
||||
{
|
||||
$vss['config'][$mik] = ResourcesService::AttachmentPathHandle($miv);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
// 自定义html custom
|
||||
case 'custom' :
|
||||
$vss['config']['custom'] = empty($vss['config']['custom']) ? '' : base64_decode($vss['config']['custom']);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -203,6 +231,22 @@ class BaseLayout
|
|||
}
|
||||
break;
|
||||
|
||||
// 图文 images-text
|
||||
case 'images-text' :
|
||||
foreach($vss['config']['data_list'] as &$itl)
|
||||
{
|
||||
$itl['images'] = ResourcesService::AttachmentPathViewHandle($itl['images']);
|
||||
}
|
||||
$key = 'content_images_';
|
||||
foreach($vss['config'] as $mik=>$miv)
|
||||
{
|
||||
if(substr($mik, 0, strlen($key)) == $key)
|
||||
{
|
||||
$vss['config'][$mik] = ResourcesService::AttachmentPathViewHandle($miv);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
// 商品
|
||||
case 'goods' :
|
||||
$p = [
|
||||
|
|
@ -228,6 +272,11 @@ class BaseLayout
|
|||
$vss['config']['data_list'] = $res['data'];
|
||||
break;
|
||||
|
||||
// 自定义html
|
||||
case 'custom' :
|
||||
$vss['config']['custom'] = empty($vss['config']['custom']) ? '' : base64_encode(htmlspecialchars_decode($vss['config']['custom']));
|
||||
break;
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -326,6 +375,15 @@ class BaseLayout
|
|||
}
|
||||
break;
|
||||
|
||||
// 图文 images-text
|
||||
case 'images-text' :
|
||||
foreach($vss['config']['data_list'] as &$itl)
|
||||
{
|
||||
$itl['images'] = ResourcesService::AttachmentPathViewHandle($itl['images']);
|
||||
$itl['url'] = self::LayoutUrlValueHandle($itl['type'], $itl['value']);
|
||||
}
|
||||
break;
|
||||
|
||||
// 商品
|
||||
case 'goods' :
|
||||
$p = [
|
||||
|
|
@ -384,6 +442,11 @@ class BaseLayout
|
|||
'keywords_list' => $keywords_list,
|
||||
];
|
||||
break;
|
||||
|
||||
// 自定义html
|
||||
case 'custom' :
|
||||
$vss['config']['custom'] = empty($vss['config']['custom']) ? '' : htmlspecialchars_decode($vss['config']['custom']);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -673,10 +736,10 @@ class BaseLayout
|
|||
{
|
||||
foreach($v as &$vs)
|
||||
{
|
||||
$vs = empty($vs) ? '' : urldecode($vs);
|
||||
$vs = is_array($vs) ? $vs : (empty($vs) ? '' : urldecode($vs));
|
||||
}
|
||||
} else {
|
||||
$v = empty($v) ? '' : urldecode($v);
|
||||
$v = is_array($v) ? $v : (empty($v) ? '' : urldecode($v));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -35,9 +35,11 @@
|
|||
<div class="renovation-drag scrollspy-nav" data-am-tabs="{noSwipe: 1}" data-am-sticky>
|
||||
<button type="button" draggable="true" class="am-btn am-btn-default am-radius am-btn-xs am-margin-xs" data-value="images">单图</button>
|
||||
<button type="button" draggable="true" class="am-btn am-btn-default am-radius am-btn-xs am-margin-xs" data-value="many-images">多图</button>
|
||||
<button type="button" draggable="true" class="am-btn am-btn-default am-radius am-btn-xs am-margin-xs" data-value="images-text">图文</button>
|
||||
<button type="button" draggable="true" class="am-btn am-btn-default am-radius am-btn-xs am-margin-xs" data-value="video">视频</button>
|
||||
<button type="button" draggable="true" class="am-btn am-btn-default am-radius am-btn-xs am-margin-xs" data-value="goods">商品</button>
|
||||
<button type="button" draggable="true" class="am-btn am-btn-default am-radius am-btn-xs am-margin-xs" data-value="title">标题</button>
|
||||
<button type="button" draggable="true" class="am-btn am-btn-default am-radius am-btn-xs am-margin-xs" data-value="custom">自定义html</button>
|
||||
<button type="button" draggable="true" class="am-btn am-btn-default am-radius am-btn-xs am-margin-xs" data-value="border">辅助线</button>
|
||||
<button type="button" draggable="true" class="am-btn am-btn-default am-radius am-btn-xs am-margin-xs" data-value="height">辅助空白</button>
|
||||
</div>
|
||||
|
|
@ -68,6 +70,8 @@
|
|||
data-goods-category-name="商品分类"
|
||||
data-brand-name="品牌"
|
||||
data-keywords-name="关键字"
|
||||
data-config-images-text-tips="请先添加图文并配置"
|
||||
data-upload-images-or-title-tips="图片和标题必填一项"
|
||||
data-upload-images-name="上传图片"
|
||||
data-upload-images-tips="请上传图片"
|
||||
data-config-images-tips="请先添加图片并配置"
|
||||
|
|
@ -95,6 +99,7 @@
|
|||
data-search-goods-tips="请搜索商品"
|
||||
data-custom-url-name="自定义链接"
|
||||
data-custom-url-tips="请至少填写一个地址"
|
||||
data-data-show-modal-tips="请选择数据展示模式"
|
||||
>
|
||||
{{if !empty($layout_data) and is_array($layout_data)}}
|
||||
{{foreach $layout_data as $k=>$v}}
|
||||
|
|
@ -133,6 +138,9 @@
|
|||
<!-- 侧边栏 - 模块配置 - 多图 -->
|
||||
{{include file="../../../layout/view/public/offcanvas/offcanvas_module_config_many_images" /}}
|
||||
|
||||
<!-- 侧边栏 - 模块配置 - 图文 -->
|
||||
{{include file="../../../layout/view/public/offcanvas/offcanvas_module_config_images_text" /}}
|
||||
|
||||
<!-- 侧边栏 - 模块配置 - 视频 -->
|
||||
{{include file="../../../layout/view/public/offcanvas/offcanvas_module_config_video" /}}
|
||||
|
||||
|
|
@ -142,6 +150,9 @@
|
|||
<!-- 侧边栏 - 模块配置 - 标题 -->
|
||||
{{include file="../../../layout/view/public/offcanvas/offcanvas_module_config_title" /}}
|
||||
|
||||
<!-- 侧边栏 - 模块配置 - 自定义html -->
|
||||
{{include file="../../../layout/view/public/offcanvas/offcanvas_module_config_custom" /}}
|
||||
|
||||
<!-- 侧边栏 - 模块配置 - 辅助线 -->
|
||||
{{include file="../../../layout/view/public/offcanvas/offcanvas_module_config_border" /}}
|
||||
|
||||
|
|
|
|||
|
|
@ -17,6 +17,12 @@ function FormBackModuleConfigManyImages(e)
|
|||
FormBackModuleConfigManyImagesHandle(e);
|
||||
}
|
||||
|
||||
// 图文选择回调处理
|
||||
function FormBackModuleConfigImagesText(e)
|
||||
{
|
||||
FormBackModuleConfigImagesTextHandle(e);
|
||||
}
|
||||
|
||||
// 视频选择回调处理
|
||||
function FormBackModuleConfigVideo(e)
|
||||
{
|
||||
|
|
@ -35,6 +41,12 @@ function FormBackModuleConfigTitle(e)
|
|||
FormBackModuleConfigTitleHandle(e);
|
||||
}
|
||||
|
||||
// 自定义html选择回调处理
|
||||
function FormBackModuleConfigCustom(e)
|
||||
{
|
||||
FormBackModuleConfigCustomHandle(e);
|
||||
}
|
||||
|
||||
// 辅助线选择回调处理
|
||||
function FormBackModuleConfigBorder(e)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@
|
|||
{{switch vss.value}}
|
||||
{{case images}}
|
||||
<a href="javascript:ModuleToPrompt('{{$vss.config.content_to_name}}');" class="module-images-content {{$vss.config.frontend_config.media_fixed.media_container_ent}}" style="{{$vss.config.frontend_config.media_fixed.media_container_style}}">
|
||||
<img src="{{$vss.config.content_images}}" class="{{$vss.config.frontend_config.media_fixed.media_ent}}" />
|
||||
<img src="{{$vss.config.content_images}}" class="{{$vss.config.frontend_config.media_fixed.media_ent}}" style="{{$vss.config.frontend_config.media_fixed.media_container_style}}" />
|
||||
</a>
|
||||
{{/case}}
|
||||
{{case many-images}}
|
||||
|
|
@ -28,7 +28,7 @@
|
|||
{{foreach $vss.config.data_list as $i}}
|
||||
<li>
|
||||
<a href="javascript:ModuleToPrompt('{{$i.name}}');" class="{{$vss.config.frontend_config.media_fixed.media_container_ent}}" style="{{$vss.config.frontend_config.media_fixed.media_container_style}}">
|
||||
<img src="{{$i.images}}" class="{{$vss.config.frontend_config.media_fixed.media_ent}}" />
|
||||
<img src="{{$i.images}}" class="{{$vss.config.frontend_config.media_fixed.media_ent}}" style="{{$vss.config.frontend_config.media_fixed.media_container_style}}" />
|
||||
</a>
|
||||
</li>
|
||||
{{/foreach}}
|
||||
|
|
@ -41,7 +41,7 @@
|
|||
<li>
|
||||
<div class="module-item" style="{{$vss.config.frontend_config.item_style}}">
|
||||
<a href="javascript:ModuleToPrompt('{{$i.name}}');" class="{{$vss.config.frontend_config.media_fixed.media_container_ent}}" style="{{$vss.config.frontend_config.media_fixed.media_container_style}}">
|
||||
<img src="{{$i.images}}" class="{{$vss.config.frontend_config.media_fixed.media_ent}}" />
|
||||
<img src="{{$i.images}}" class="{{$vss.config.frontend_config.media_fixed.media_ent}}" style="{{$vss.config.frontend_config.media_fixed.media_container_style}}" />
|
||||
</a>
|
||||
</div>
|
||||
</li>
|
||||
|
|
@ -54,7 +54,7 @@
|
|||
{{foreach $vss.config.data_list as $i}}
|
||||
<li>
|
||||
<a href="javascript:ModuleToPrompt('{{$i.name}}');" class="{{$vss.config.frontend_config.media_fixed.media_container_ent}}" style="{{$vss.config.frontend_config.media_fixed.media_container_style}}">
|
||||
<img src="{{$i.images}}" class="{{$vss.config.frontend_config.media_fixed.media_ent}}" />
|
||||
<img src="{{$i.images}}" class="{{$vss.config.frontend_config.media_fixed.media_ent}}" style="{{$vss.config.frontend_config.media_fixed.media_container_style}}" />
|
||||
</a>
|
||||
</li>
|
||||
{{/foreach}}
|
||||
|
|
@ -62,9 +62,73 @@
|
|||
</div>
|
||||
{{/switch}}
|
||||
{{/case}}
|
||||
{{case images-text}}
|
||||
{{switch vss.config.view_list_show_style}}
|
||||
{{case rolling}}
|
||||
<div class="am-slider am-slider-default am-slider-carousel {{$vss.config.frontend_config.nav_dot_ent}}" data-am-flexslider="{itemWidth: {{if empty($vss['config']['view_list_show_style_value_arr']) or empty($vss['config']['view_list_show_style_value_arr']['item_width'])}}200{{else /}}{{$vss.config.view_list_show_style_value_arr.item_width}}{{/if}}, itemMargin: {{if empty($vss['config']['view_list_show_style_value_arr']) or empty($vss['config']['view_list_show_style_value_arr']['item_margin'])}}0{{else /}}{{$vss.config.view_list_show_style_value_arr.item_margin}}{{/if}}, slideshow: {{if empty($vss['config']['view_list_show_style_value_arr']) or !isset($vss['config']['view_list_show_style_value_arr']['is_auto_play']) or $vss['config']['view_list_show_style_value_arr']['is_auto_play'] eq 0}}false{{else /}}true{{/if}}, controlNav: {{if empty($vss['config']['view_list_show_style_value_arr']) or !isset($vss['config']['view_list_show_style_value_arr']['is_nav_dot']) or $vss['config']['view_list_show_style_value_arr']['is_nav_dot'] eq 0}}false{{else /}}true{{/if}}}">
|
||||
<ul class="am-slides">
|
||||
{{foreach $vss.config.data_list as $ik=>$i}}
|
||||
<li>
|
||||
<div class="module-item" style="{{$vss.config.frontend_config.item_style}}">
|
||||
<a href="javascript:ModuleToPrompt('{{$i.name}}');" class="{{$vss.config.frontend_config.media_fixed.media_container_ent}}" style="{{$vss.config.frontend_config.media_fixed.media_container_style}}">
|
||||
<img src="{{$i.images}}" class="{{$vss.config.frontend_config.media_fixed.media_ent}}" style="{{$vss.config.frontend_config.media_fixed.media_container_style}}" />
|
||||
</a>
|
||||
{{if !empty($i['title'])}}
|
||||
<p style="{{if !empty($vss['config']['frontend_config']['item_field_style']) and !empty($vss['config']['frontend_config']['item_field_style'][$ik]) and !empty($vss['config']['frontend_config']['item_field_style'][$ik]['title'])}} {{$vss.config.frontend_config.item_field_style[$ik]['title']}}{{/if}}">{{$i.title}}</p>
|
||||
{{/if}}
|
||||
{{if !empty($i['desc'])}}
|
||||
<p style="{{if !empty($vss['config']['frontend_config']['item_field_style']) and !empty($vss['config']['frontend_config']['item_field_style'][$ik]) and !empty($vss['config']['frontend_config']['item_field_style'][$ik]['desc'])}} {{$vss.config.frontend_config.item_field_style[$ik]['desc']}}{{/if}}">{{$i.desc}}</p>
|
||||
{{/if}}
|
||||
</div>
|
||||
</li>
|
||||
{{/foreach}}
|
||||
</ul>
|
||||
</div>
|
||||
{{/case}}
|
||||
{{case leftright}}
|
||||
<ul class="module-list-content {{$vss.config.frontend_config.list_ent}}">
|
||||
{{foreach $vss.config.data_list as $ik=>$i}}
|
||||
<li>
|
||||
<div class="module-item" style="{{$vss.config.frontend_config.item_style}}">
|
||||
<a href="javascript:ModuleToPrompt('{{$i.name}}');" class="am-fl {{$vss.config.frontend_config.media_fixed.media_container_ent}}" style="{{$vss.config.frontend_config.media_fixed.media_container_style}}">
|
||||
<img src="{{$i.images}}" class="{{$vss.config.frontend_config.media_fixed.media_ent}}" style="{{$vss.config.frontend_config.media_fixed.media_container_style}}" />
|
||||
</a>
|
||||
<div class="am-fl" style="{{$vss.config.frontend_config.item_right_style}}">
|
||||
{{if !empty($i['title'])}}
|
||||
<p style="{{if !empty($vss['config']['frontend_config']['item_field_style']) and !empty($vss['config']['frontend_config']['item_field_style'][$ik]) and !empty($vss['config']['frontend_config']['item_field_style'][$ik]['title'])}} {{$vss.config.frontend_config.item_field_style[$ik]['title']}}{{/if}}">{{$i.title}}</p>
|
||||
{{/if}}
|
||||
{{if !empty($i['desc'])}}
|
||||
<p style="{{if !empty($vss['config']['frontend_config']['item_field_style']) and !empty($vss['config']['frontend_config']['item_field_style'][$ik]) and !empty($vss['config']['frontend_config']['item_field_style'][$ik]['desc'])}} {{$vss.config.frontend_config.item_field_style[$ik]['desc']}}{{/if}}">{{$i.desc}}</p>
|
||||
{{/if}}
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
{{/foreach}}
|
||||
</ul>
|
||||
{{/case}}
|
||||
{{default /}}
|
||||
<ul class="module-list-content {{$vss.config.frontend_config.list_ent}}">
|
||||
{{foreach $vss.config.data_list as $ik=>$i}}
|
||||
<li>
|
||||
<div class="module-item" style="{{$vss.config.frontend_config.item_style}}">
|
||||
<a href="javascript:ModuleToPrompt('{{$i.name}}');" class="{{$vss.config.frontend_config.media_fixed.media_container_ent}}" style="{{$vss.config.frontend_config.media_fixed.media_container_style}}">
|
||||
<img src="{{$i.images}}" class="{{$vss.config.frontend_config.media_fixed.media_ent}}" style="{{$vss.config.frontend_config.media_fixed.media_container_style}}" />
|
||||
</a>
|
||||
{{if !empty($i['title'])}}
|
||||
<p style="{{if !empty($vss['config']['frontend_config']['item_field_style']) and !empty($vss['config']['frontend_config']['item_field_style'][$ik]) and !empty($vss['config']['frontend_config']['item_field_style'][$ik]['title'])}} {{$vss.config.frontend_config.item_field_style[$ik]['title']}}{{/if}}">{{$i.title}}</p>
|
||||
{{/if}}
|
||||
{{if !empty($i['desc'])}}
|
||||
<p style="{{if !empty($vss['config']['frontend_config']['item_field_style']) and !empty($vss['config']['frontend_config']['item_field_style'][$ik]) and !empty($vss['config']['frontend_config']['item_field_style'][$ik]['desc'])}} {{$vss.config.frontend_config.item_field_style[$ik]['desc']}}{{/if}}">{{$i.desc}}</p>
|
||||
{{/if}}
|
||||
</div>
|
||||
</li>
|
||||
{{/foreach}}
|
||||
</ul>
|
||||
{{/switch}}
|
||||
{{/case}}
|
||||
{{case video}}
|
||||
<div class="module-video-content {{$vss.config.frontend_config.media_fixed.media_container_ent}}" style="{{$vss.config.frontend_config.media_fixed.media_container_style}}">
|
||||
<video src="{{$vss.config.content_video}}" poster="{{if !empty($vss['config']['content_images'])}}{{$vss.config.content_images}}{{/if}}" controls class="{{$vss.config.frontend_config.media_fixed.media_ent}}">your browser does not support the video tag</video>
|
||||
<video src="{{$vss.config.content_video}}" poster="{{if !empty($vss['config']['content_images'])}}{{$vss.config.content_images}}{{/if}}" controls class="{{$vss.config.frontend_config.media_fixed.media_ent}}" style="{{$vss.config.frontend_config.media_fixed.media_container_style}}">your browser does not support the video tag</video>
|
||||
</div>
|
||||
{{/case}}
|
||||
{{case goods}}
|
||||
|
|
@ -78,7 +142,7 @@
|
|||
<li>
|
||||
<div class="module-item" style="{{$vss.config.frontend_config.item_style}}">
|
||||
<a href="{{$g.goods_url}}" target="_blank" class="{{$vss.config.frontend_config.media_fixed.media_container_ent}}" style="{{$vss.config.frontend_config.media_fixed.media_container_style}}">
|
||||
<img src="{{$g.images}}" alt="{{$g.title}}" class="{{$vss.config.frontend_config.media_fixed.media_ent}}" />
|
||||
<img src="{{$g.images}}" alt="{{$g.title}}" class="{{$vss.config.frontend_config.media_fixed.media_ent}}" style="{{$vss.config.frontend_config.media_fixed.media_container_style}}" />
|
||||
</a>
|
||||
<div class="item-bottom">
|
||||
<div class="module-title">
|
||||
|
|
@ -98,7 +162,7 @@
|
|||
<li>
|
||||
<div class="module-item" style="{{$vss.config.frontend_config.item_style}}">
|
||||
<a href="{{$g.goods_url}}" target="_blank" class="{{$vss.config.frontend_config.media_fixed.media_container_ent}}" style="{{$vss.config.frontend_config.media_fixed.media_container_style}}">
|
||||
<img src="{{$g.images}}" alt="{{$g.title}}" class="{{$vss.config.frontend_config.media_fixed.media_ent}}" />
|
||||
<img src="{{$g.images}}" alt="{{$g.title}}" class="{{$vss.config.frontend_config.media_fixed.media_ent}}" style="{{$vss.config.frontend_config.media_fixed.media_container_style}}" />
|
||||
</a>
|
||||
<div class="item-bottom">
|
||||
<div class="module-title">
|
||||
|
|
@ -135,6 +199,11 @@
|
|||
{{/if}}
|
||||
</div>
|
||||
{{/case}}
|
||||
{{case custom}}
|
||||
{{if !empty($vss['config']['custom'])}}
|
||||
{{:base64_decode($vss.config.custom)}}
|
||||
{{/if}}
|
||||
{{/case}}
|
||||
{{/switch}}
|
||||
</div>
|
||||
{{else /}}
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@
|
|||
{{switch vss.value}}
|
||||
{{case images}}
|
||||
<a {{if empty($vss['config']['url'])}}href="javascript:;"{{else /}}href="{{$vss.config.url}}" target="_blank"{{/if}} class="module-images-content {{$vss.config.frontend_config.media_fixed.media_container_ent}}" style="{{$vss.config.frontend_config.media_fixed.media_container_style}}">
|
||||
<img src="{{$vss.config.images}}" class="{{$vss.config.frontend_config.media_fixed.media_ent}}" />
|
||||
<img src="{{$vss.config.images}}" class="{{$vss.config.frontend_config.media_fixed.media_ent}}" style="{{$vss.config.frontend_config.media_fixed.media_container_style}}" />
|
||||
</a>
|
||||
{{/case}}
|
||||
{{case many-images}}
|
||||
|
|
@ -20,7 +20,7 @@
|
|||
{{foreach $vss.config.data_list as $i}}
|
||||
<li>
|
||||
<a {{if empty($i['url'])}}href="javascript:;"{{else /}}href="{{$i.url}}" target="_blank"{{/if}} class="{{$vss.config.frontend_config.media_fixed.media_container_ent}}" style="{{$vss.config.frontend_config.media_fixed.media_container_style}}">
|
||||
<img src="{{$i.images}}" class="{{$vss.config.frontend_config.media_fixed.media_ent}}" />
|
||||
<img src="{{$i.images}}" class="{{$vss.config.frontend_config.media_fixed.media_ent}}" style="{{$vss.config.frontend_config.media_fixed.media_container_style}}" />
|
||||
</a>
|
||||
</li>
|
||||
{{/foreach}}
|
||||
|
|
@ -33,7 +33,7 @@
|
|||
<li>
|
||||
<div class="module-item" style="{{$vss.config.frontend_config.item_style}}">
|
||||
<a {{if empty($i['url'])}}href="javascript:;"{{else /}}href="{{$i.url}}" target="_blank"{{/if}} class="{{$vss.config.frontend_config.media_fixed.media_container_ent}}" style="{{$vss.config.frontend_config.media_fixed.media_container_style}}">
|
||||
<img src="{{$i.images}}" class="{{$vss.config.frontend_config.media_fixed.media_ent}}" />
|
||||
<img src="{{$i.images}}" class="{{$vss.config.frontend_config.media_fixed.media_ent}}" style="{{$vss.config.frontend_config.media_fixed.media_container_style}}" />
|
||||
</a>
|
||||
</div>
|
||||
</li>
|
||||
|
|
@ -46,7 +46,7 @@
|
|||
{{foreach $vss.config.data_list as $i}}
|
||||
<li>
|
||||
<a {{if empty($i['url'])}}href="javascript:;"{{else /}}href="{{$i.url}}" target="_blank"{{/if}} class="{{$vss.config.frontend_config.media_fixed.media_container_ent}}" style="{{$vss.config.frontend_config.media_fixed.media_container_style}}">
|
||||
<img src="{{$i.images}}" class="{{$vss.config.frontend_config.media_fixed.media_ent}}" />
|
||||
<img src="{{$i.images}}" class="{{$vss.config.frontend_config.media_fixed.media_ent}}" style="{{$vss.config.frontend_config.media_fixed.media_container_style}}" />
|
||||
</a>
|
||||
</li>
|
||||
{{/foreach}}
|
||||
|
|
@ -54,9 +54,73 @@
|
|||
</div>
|
||||
{{/switch}}
|
||||
{{/case}}
|
||||
{{case images-text}}
|
||||
{{switch vss.config.view_list_show_style}}
|
||||
{{case rolling}}
|
||||
<div class="am-slider am-slider-default am-slider-carousel {{$vss.config.frontend_config.nav_dot_ent}}" data-am-flexslider="{itemWidth: {{if empty($vss['config']['view_list_show_style_value_arr']) or empty($vss['config']['view_list_show_style_value_arr']['item_width'])}}200{{else /}}{{$vss.config.view_list_show_style_value_arr.item_width}}{{/if}}, itemMargin: {{if empty($vss['config']['view_list_show_style_value_arr']) or empty($vss['config']['view_list_show_style_value_arr']['item_margin'])}}0{{else /}}{{$vss.config.view_list_show_style_value_arr.item_margin}}{{/if}}, slideshow: {{if empty($vss['config']['view_list_show_style_value_arr']) or !isset($vss['config']['view_list_show_style_value_arr']['is_auto_play']) or $vss['config']['view_list_show_style_value_arr']['is_auto_play'] eq 0}}false{{else /}}true{{/if}}, controlNav: {{if empty($vss['config']['view_list_show_style_value_arr']) or !isset($vss['config']['view_list_show_style_value_arr']['is_nav_dot']) or $vss['config']['view_list_show_style_value_arr']['is_nav_dot'] eq 0}}false{{else /}}true{{/if}}}">
|
||||
<ul class="am-slides">
|
||||
{{foreach $vss.config.data_list as $ik=>$i}}
|
||||
<li>
|
||||
<div class="module-item" style="{{$vss.config.frontend_config.item_style}}">
|
||||
<a {{if empty($i['url'])}}href="javascript:;"{{else /}}href="{{$i.url}}" target="_blank"{{/if}} class="{{$vss.config.frontend_config.media_fixed.media_container_ent}}" style="{{$vss.config.frontend_config.media_fixed.media_container_style}}">
|
||||
<img src="{{$i.images}}" class="{{$vss.config.frontend_config.media_fixed.media_ent}}" style="{{$vss.config.frontend_config.media_fixed.media_container_style}}" />
|
||||
</a>
|
||||
{{if !empty($i['title'])}}
|
||||
<p style="{{if !empty($vss['config']['frontend_config']['item_field_style']) and !empty($vss['config']['frontend_config']['item_field_style'][$ik]) and !empty($vss['config']['frontend_config']['item_field_style'][$ik]['title'])}} {{$vss.config.frontend_config.item_field_style[$ik]['title']}}{{/if}}"><a {{if empty($i['url'])}}href="javascript:;"{{else /}}href="{{$i.url}}" target="_blank"{{/if}}><a {{if empty($i['url'])}}href="javascript:;"{{else /}}href="{{$i.url}}" target="_blank"{{/if}}>{{$i.title}}</a></a></p>
|
||||
{{/if}}
|
||||
{{if !empty($i['desc'])}}
|
||||
<p style="{{if !empty($vss['config']['frontend_config']['item_field_style']) and !empty($vss['config']['frontend_config']['item_field_style'][$ik]) and !empty($vss['config']['frontend_config']['item_field_style'][$ik]['desc'])}} {{$vss.config.frontend_config.item_field_style[$ik]['desc']}}{{/if}}">{{$i.desc}}</p>
|
||||
{{/if}}
|
||||
</div>
|
||||
</li>
|
||||
{{/foreach}}
|
||||
</ul>
|
||||
</div>
|
||||
{{/case}}
|
||||
{{case leftright}}
|
||||
<ul class="module-list-content {{$vss.config.frontend_config.list_ent}}">
|
||||
{{foreach $vss.config.data_list as $ik=>$i}}
|
||||
<li>
|
||||
<div class="module-item" style="{{$vss.config.frontend_config.item_style}}">
|
||||
<a {{if empty($i['url'])}}href="javascript:;"{{else /}}href="{{$i.url}}" target="_blank"{{/if}} class="am-fl {{$vss.config.frontend_config.media_fixed.media_container_ent}}" style="{{$vss.config.frontend_config.media_fixed.media_container_style}}">
|
||||
<img src="{{$i.images}}" class="{{$vss.config.frontend_config.media_fixed.media_ent}}" style="{{$vss.config.frontend_config.media_fixed.media_container_style}}" />
|
||||
</a>
|
||||
<div class="am-fl" style="{{$vss.config.frontend_config.item_right_style}}">
|
||||
{{if !empty($i['title'])}}
|
||||
<p style="{{if !empty($vss['config']['frontend_config']['item_field_style']) and !empty($vss['config']['frontend_config']['item_field_style'][$ik]) and !empty($vss['config']['frontend_config']['item_field_style'][$ik]['title'])}} {{$vss.config.frontend_config.item_field_style[$ik]['title']}}{{/if}}"><a {{if empty($i['url'])}}href="javascript:;"{{else /}}href="{{$i.url}}" target="_blank"{{/if}}>{{$i.title}}</a></p>
|
||||
{{/if}}
|
||||
{{if !empty($i['desc'])}}
|
||||
<p style="{{if !empty($vss['config']['frontend_config']['item_field_style']) and !empty($vss['config']['frontend_config']['item_field_style'][$ik]) and !empty($vss['config']['frontend_config']['item_field_style'][$ik]['desc'])}} {{$vss.config.frontend_config.item_field_style[$ik]['desc']}}{{/if}}">{{$i.desc}}</p>
|
||||
{{/if}}
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
{{/foreach}}
|
||||
</ul>
|
||||
{{/case}}
|
||||
{{default /}}
|
||||
<ul class="module-list-content {{$vss.config.frontend_config.list_ent}}">
|
||||
{{foreach $vss.config.data_list as $ik=>$i}}
|
||||
<li>
|
||||
<div class="module-item" style="{{$vss.config.frontend_config.item_style}}">
|
||||
<a {{if empty($i['url'])}}href="javascript:;"{{else /}}href="{{$i.url}}" target="_blank"{{/if}} class="{{$vss.config.frontend_config.media_fixed.media_container_ent}}" style="{{$vss.config.frontend_config.media_fixed.media_container_style}}">
|
||||
<img src="{{$i.images}}" class="{{$vss.config.frontend_config.media_fixed.media_ent}}" style="{{$vss.config.frontend_config.media_fixed.media_container_style}}" />
|
||||
</a>
|
||||
{{if !empty($i['title'])}}
|
||||
<p style="{{if !empty($vss['config']['frontend_config']['item_field_style']) and !empty($vss['config']['frontend_config']['item_field_style'][$ik]) and !empty($vss['config']['frontend_config']['item_field_style'][$ik]['title'])}} {{$vss.config.frontend_config.item_field_style[$ik]['title']}}{{/if}}"><a {{if empty($i['url'])}}href="javascript:;"{{else /}}href="{{$i.url}}" target="_blank"{{/if}}>{{$i.title}}</a></p>
|
||||
{{/if}}
|
||||
{{if !empty($i['desc'])}}
|
||||
<p style="{{if !empty($vss['config']['frontend_config']['item_field_style']) and !empty($vss['config']['frontend_config']['item_field_style'][$ik]) and !empty($vss['config']['frontend_config']['item_field_style'][$ik]['desc'])}} {{$vss.config.frontend_config.item_field_style[$ik]['desc']}}{{/if}}">{{$i.desc}}</p>
|
||||
{{/if}}
|
||||
</div>
|
||||
</li>
|
||||
{{/foreach}}
|
||||
</ul>
|
||||
{{/switch}}
|
||||
{{/case}}
|
||||
{{case video}}
|
||||
<div class="module-video-content {{$vss.config.frontend_config.media_fixed.media_container_ent}}" style="{{$vss.config.frontend_config.media_fixed.media_container_style}}">
|
||||
<video src="{{$vss.config.video}}" poster="{{if !empty($vss['config']['content_images'])}}{{$vss.config.content_images}}{{/if}}" controls class="{{$vss.config.frontend_config.media_fixed.media_ent}}">your browser does not support the video tag</video>
|
||||
<video src="{{$vss.config.video}}" poster="{{if !empty($vss['config']['content_images'])}}{{$vss.config.content_images}}{{/if}}" controls class="{{$vss.config.frontend_config.media_fixed.media_ent}}" style="{{$vss.config.frontend_config.media_fixed.media_container_style}}">your browser does not support the video tag</video>
|
||||
</div>
|
||||
{{/case}}
|
||||
{{case goods}}
|
||||
|
|
@ -70,7 +134,7 @@
|
|||
<li>
|
||||
<div class="module-item" style="{{$vss.config.frontend_config.item_style}}">
|
||||
<a href="{{$g.goods_url}}" target="_blank" class="{{$vss.config.frontend_config.media_fixed.media_container_ent}}" style="{{$vss.config.frontend_config.media_fixed.media_container_style}}">
|
||||
<img src="{{$g.images}}" alt="{{$g.title}}" class="{{$vss.config.frontend_config.media_fixed.media_ent}}" />
|
||||
<img src="{{$g.images}}" alt="{{$g.title}}" class="{{$vss.config.frontend_config.media_fixed.media_ent}}" style="{{$vss.config.frontend_config.media_fixed.media_container_style}}" />
|
||||
</a>
|
||||
<div class="item-bottom">
|
||||
<div class="module-title">
|
||||
|
|
@ -90,7 +154,7 @@
|
|||
<li>
|
||||
<div class="module-item" style="{{$vss.config.frontend_config.item_style}}">
|
||||
<a href="{{$g.goods_url}}" target="_blank" class="{{$vss.config.frontend_config.media_fixed.media_container_ent}}" style="{{$vss.config.frontend_config.media_fixed.media_container_style}}">
|
||||
<img src="{{$g.images}}" alt="{{$g.title}}" class="{{$vss.config.frontend_config.media_fixed.media_ent}}" />
|
||||
<img src="{{$g.images}}" alt="{{$g.title}}" class="{{$vss.config.frontend_config.media_fixed.media_ent}}" style="{{$vss.config.frontend_config.media_fixed.media_container_style}}" />
|
||||
</a>
|
||||
<div class="item-bottom">
|
||||
<div class="module-title">
|
||||
|
|
@ -127,6 +191,11 @@
|
|||
{{/if}}
|
||||
</div>
|
||||
{{/case}}
|
||||
{{case custom}}
|
||||
{{if !empty($vss['config']['custom'])}}
|
||||
{{$vss.config.custom|raw}}
|
||||
{{/if}}
|
||||
{{/case}}
|
||||
{{/switch}}
|
||||
</div>
|
||||
{{/if}}
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
<label>展示模式</label>
|
||||
<div class="config-view-show-style">
|
||||
{{foreach $goods_view_list_show_style as $k=>$v}}
|
||||
<label class="am-radio-inline">
|
||||
<label class="am-checkbox-inline">
|
||||
<input type="radio" name="view_list_show_style" value="{{$k}}" data-am-ucheck {{if $k eq 'routine'}}checked{{/if}} /> {{$v}}
|
||||
</label>
|
||||
{{/foreach}}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,11 @@
|
|||
<div class="am-form-group am-form-group-refreshing">
|
||||
<label>展示模式</label>
|
||||
<div class="config-view-show-style">
|
||||
{{foreach $images_text_view_list_show_style as $k=>$v}}
|
||||
<label class="am-checkbox-inline">
|
||||
<input type="radio" name="view_list_show_style" value="{{$k}}" data-am-ucheck {{if $k eq 'updown'}}checked{{/if}} /> {{$v}}
|
||||
</label>
|
||||
{{/foreach}}
|
||||
<input type="hidden" name="view_list_show_style_value" value="" />
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -2,8 +2,8 @@
|
|||
<label>展示模式</label>
|
||||
<div class="config-view-show-style">
|
||||
{{foreach $many_images_view_list_show_style as $k=>$v}}
|
||||
<label class="am-radio-inline">
|
||||
<input type="radio" name="view_list_show_style" value="{{$k}}" data-am-ucheck {{if $k eq 'routine'}}checked{{/if}} /> {{$v}}
|
||||
<label class="am-checkbox-inline">
|
||||
<input type="radio" name="view_list_show_style" value="{{$k}}" data-am-ucheck {{if $k eq 'routine'}}checked{{/if}} /> {{$v}}
|
||||
</label>
|
||||
{{/foreach}}
|
||||
<input type="hidden" name="view_list_show_style_value" value="" />
|
||||
|
|
|
|||
|
|
@ -1,5 +1,11 @@
|
|||
<!-- 宽度 -->
|
||||
{{include file="../../../layout/view/public/style/width" key="[key]" required="[required]" width="1200" name="图片容器宽度" /}}
|
||||
|
||||
<!-- 高度 -->
|
||||
{{include file="../../../layout/view/public/style/height" key="[key]" required="[required]" height="800" name="[name]" /}}
|
||||
{{include file="../../../layout/view/public/style/height" key="[key]" required="[required]" height="800" name="图片容器高度" /}}
|
||||
|
||||
<!-- 圆角 -->
|
||||
{{include file="../../../layout/view/public/style/border_radius" max="1000" key="[key]" required="" /}}
|
||||
|
||||
<!-- 是否高度100% -->
|
||||
<div class="am-form-group am-form-group-refreshing">
|
||||
|
|
|
|||
|
|
@ -1,9 +1,9 @@
|
|||
<div class="am-form-group am-form-group-refreshing">
|
||||
<label>行展示数量</label>
|
||||
<div class="am-input-group am-input-group-sm group-list-number-width">
|
||||
<input type="number" placeholder="小屏" name="view_list_number_sm" min="0" max="12" data-validation-message="小屏最大12" value="2" class="am-form-field" />
|
||||
<input type="number" placeholder="中屏" name="view_list_number_md" min="0" max="12" data-validation-message="中屏最大12" value="5" class="am-form-field" />
|
||||
<input type="number" placeholder="大屏" name="view_list_number_lg" min="0" max="12" data-validation-message="大屏最大12" value="5" class="am-form-field" />
|
||||
<input type="number" data-is-clearout="0" placeholder="小屏" name="view_list_number_sm" min="0" max="12" data-validation-message="小屏最大12" value="2" class="am-form-field" />
|
||||
<input type="number" data-is-clearout="0" placeholder="中屏" name="view_list_number_md" min="0" max="12" data-validation-message="中屏最大12" value="5" class="am-form-field" />
|
||||
<input type="number" data-is-clearout="0" placeholder="大屏" name="view_list_number_lg" min="0" max="12" data-validation-message="大屏最大12" value="5" class="am-form-field" />
|
||||
<span class="am-input-group-label">个</span>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -74,8 +74,10 @@
|
|||
</div>
|
||||
<div class="pages-custom-url-container am-padding-sm">
|
||||
{{foreach :MyConst('common_platform_type') as $v}}
|
||||
<div class="am-input-group am-input-group-sm am-radius">
|
||||
<span class="am-input-group-label">{{$v.name}}</span>
|
||||
<div class="am-input-group am-input-group-sm">
|
||||
<span class="am-input-group-btn">
|
||||
<button type="button" class="am-btn am-btn-default am-radius">{{$v.name}}</button>
|
||||
</span>
|
||||
<input type="text" name="pages_custom_url_{{$v.value}}" placeholder="{{$v.name}}" class="am-form-field am-radius" value="" />
|
||||
</div>
|
||||
{{/foreach}}
|
||||
|
|
|
|||
|
|
@ -6,14 +6,14 @@
|
|||
<div class="am-form-group am-form-group-refreshing">
|
||||
<label>数据项宽度<span class="am-form-group-label-tips">默认200</span></label>
|
||||
<div class="am-input-group am-input-group-sm">
|
||||
<input type="number" placeholder="数据项宽度" name="item_width" min="0" max="600" data-validation-message="数据项宽度最大600" value="200" class="am-form-field" />
|
||||
<input type="number" data-is-clearout="0" placeholder="数据项宽度" name="item_width" min="0" max="600" data-validation-message="数据项宽度最大600" value="200" class="am-form-field" />
|
||||
<span class="am-input-group-label">px</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="am-form-group am-form-group-refreshing">
|
||||
<label>数据项间距</label>
|
||||
<div class="am-input-group am-input-group-sm">
|
||||
<input type="number" placeholder="数据项间距" name="item_margin" min="0" max="100" data-validation-message="数据项间距最大100" value="" class="am-form-field" />
|
||||
<input type="number" data-is-clearout="0" placeholder="数据项间距" name="item_margin" min="0" max="100" data-validation-message="数据项间距最大100" value="" class="am-form-field" />
|
||||
<span class="am-input-group-label">px</span>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@
|
|||
<div class="am-panel-hd">中屏样式</div>
|
||||
<div class="am-panel-bd">
|
||||
<!-- 圆角 -->
|
||||
{{include file="../../../layout/view/public/style/border_radius" key="_md" required="" /}}
|
||||
{{include file="../../../layout/view/public/style/border_radius" max="30" key="_md" required="" /}}
|
||||
|
||||
<!-- 边线类型 -->
|
||||
{{include file="../../../layout/view/public/style/border_style_4" key="_md" /}}
|
||||
|
|
@ -41,7 +41,7 @@
|
|||
<div class="am-panel-hd">小屏样式</div>
|
||||
<div class="am-panel-bd">
|
||||
<!-- 圆角 -->
|
||||
{{include file="../../../layout/view/public/style/border_radius" key="_sm" required="" /}}
|
||||
{{include file="../../../layout/view/public/style/border_radius" max="30" key="_sm" required="" /}}
|
||||
|
||||
<!-- 边线类型 -->
|
||||
{{include file="../../../layout/view/public/style/border_style_4" key="_sm" /}}
|
||||
|
|
@ -62,7 +62,7 @@
|
|||
<div class="am-panel-hd">大屏样式</div>
|
||||
<div class="am-panel-bd">
|
||||
<!-- 圆角 -->
|
||||
{{include file="../../../layout/view/public/style/border_radius" key="_lg" required="" /}}
|
||||
{{include file="../../../layout/view/public/style/border_radius" max="30" key="_lg" required="" /}}
|
||||
|
||||
<!-- 边线类型 -->
|
||||
{{include file="../../../layout/view/public/style/border_style_4" key="_lg" /}}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,18 @@
|
|||
<!-- 侧边栏 - 模块配置 - 自定义代码 -->
|
||||
<div id="offcanvas-module-config-custom" class="am-offcanvas module-offcanvas-container">
|
||||
<div class="am-offcanvas-bar">
|
||||
<div class="am-offcanvas-content am-padding-0">
|
||||
<form class="am-form form-validation-module-offcanvas-custom" request-type="sync" request-value="FormBackModuleConfigCustom">
|
||||
<div class="am-panel am-panel-default">
|
||||
<div class="am-panel-hd">内容设置</div>
|
||||
<div class="am-panel-bd">
|
||||
<textarea name="custom" rows="35" placeholder="自定义html代码"></textarea>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-submit-container">
|
||||
<button type="submit" class="am-btn am-btn-primary am-radius am-btn-xs am-btn-block" data-am-loading="{loadingText: '处理中...'}">确认</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -53,7 +53,7 @@
|
|||
</div>
|
||||
<div class="am-form-group am-form-group-refreshing">
|
||||
<label>数量</label>
|
||||
<input type="number" placeholder="数量" name="goods_order_limit_number" min="0" max="50" data-validation-message="数量最大50" value="10" class="am-radius am-form-field" />
|
||||
<input type="number" data-is-clearout="0" placeholder="数量" name="goods_order_limit_number" min="0" max="50" data-validation-message="数量最大50" value="10" class="am-radius am-form-field" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -70,7 +70,7 @@
|
|||
{{include file="../../../layout/view/public/style/background_color" key="_module" required="" /}}
|
||||
|
||||
<!-- 圆角 -->
|
||||
{{include file="../../../layout/view/public/style/border_radius" key="_module" required="" /}}
|
||||
{{include file="../../../layout/view/public/style/border_radius" max="1000" key="_module" required="" /}}
|
||||
|
||||
<!-- 边线类型 -->
|
||||
{{include file="../../../layout/view/public/style/border_style_4" key="_module" /}}
|
||||
|
|
@ -94,7 +94,7 @@
|
|||
<div class="am-panel-hd">商品样式</div>
|
||||
<div class="am-panel-bd">
|
||||
<!-- 圆角 -->
|
||||
{{include file="../../../layout/view/public/style/border_radius" key="" required="" /}}
|
||||
{{include file="../../../layout/view/public/style/border_radius" max="1000" key="" required="" /}}
|
||||
|
||||
<!-- 边线类型 -->
|
||||
{{include file="../../../layout/view/public/style/border_style" key="" required="" /}}
|
||||
|
|
@ -114,7 +114,7 @@
|
|||
<div class="am-panel am-panel-default">
|
||||
<div class="am-panel-hd">图片固定</div>
|
||||
<div class="am-panel-bd">
|
||||
{{include file="../../../layout/view/public/content/media_fixed" key="_media_fixed" required="" name="图片容器高度" /}}
|
||||
{{include file="../../../layout/view/public/content/media_fixed" key="_media_fixed" required="" /}}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
|
|
|||
|
|
@ -34,8 +34,11 @@
|
|||
<div class="am-panel am-panel-default">
|
||||
<div class="am-panel-hd">样式设置</div>
|
||||
<div class="am-panel-bd">
|
||||
<!-- 背景色 -->
|
||||
{{include file="../../../layout/view/public/style/background_color" key="" required="" /}}
|
||||
|
||||
<!-- 圆角 -->
|
||||
{{include file="../../../layout/view/public/style/border_radius" key="" required="" /}}
|
||||
{{include file="../../../layout/view/public/style/border_radius" max="1000" key="" required="" /}}
|
||||
|
||||
<!-- 边线类型 -->
|
||||
{{include file="../../../layout/view/public/style/border_style_4" key="" /}}
|
||||
|
|
@ -55,7 +58,7 @@
|
|||
<div class="am-panel am-panel-default">
|
||||
<div class="am-panel-hd">图片固定</div>
|
||||
<div class="am-panel-bd">
|
||||
{{include file="../../../layout/view/public/content/media_fixed" key="_media_fixed" required="" name="图片容器高度" /}}
|
||||
{{include file="../../../layout/view/public/content/media_fixed" key="_media_fixed" required="" /}}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,61 @@
|
|||
<!-- 侧边栏 - 模块配置 - 图文 -->
|
||||
<div id="offcanvas-module-config-images-text" class="am-offcanvas module-offcanvas-container" data-default-images="{{$attachment_host}}/static/common/images/default-images-mini.png">
|
||||
<div class="am-offcanvas-bar">
|
||||
<div class="am-offcanvas-content am-padding-0">
|
||||
<form class="am-form form-validation-module-offcanvas-images-text" request-type="sync" request-value="FormBackModuleConfigImagesText">
|
||||
<div class="am-panel am-panel-default">
|
||||
<div class="am-panel-hd">内容设置<span class="am-form-group-label-tips-must">图片和标题必填一项</span></div>
|
||||
<div class="am-panel-bd">
|
||||
<div class="config-images-text-container"></div>
|
||||
<div class="business-operations-submit am-text-center am-block config-images-text-item-add">+添加图文</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 内容样式 -->
|
||||
<div class="am-panel am-panel-default">
|
||||
<div class="am-panel-hd">内容样式</div>
|
||||
<div class="am-panel-bd">
|
||||
<!-- 展示模式 -->
|
||||
{{include file="../../../layout/view/public/content/images_text_show_style" /}}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 样式设置 -->
|
||||
<div class="am-panel am-panel-default">
|
||||
<div class="am-panel-hd">样式设置</div>
|
||||
<div class="am-panel-bd">
|
||||
<!-- 背景色 -->
|
||||
{{include file="../../../layout/view/public/style/background_color" key="" required="" /}}
|
||||
|
||||
<!-- 圆角 -->
|
||||
{{include file="../../../layout/view/public/style/border_radius" max="1000" key="" required="" /}}
|
||||
|
||||
<!-- 边线类型 -->
|
||||
{{include file="../../../layout/view/public/style/border_style_4" key="" /}}
|
||||
|
||||
<!-- 边线大小 -->
|
||||
{{include file="../../../layout/view/public/style/border_width_color_4" key="" /}}
|
||||
|
||||
<!-- 外边距 -->
|
||||
{{include file="../../../layout/view/public/style/margin_4" key="" /}}
|
||||
|
||||
<!-- 内边距 -->
|
||||
{{include file="../../../layout/view/public/style/padding_4" key="" /}}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 图片固定 -->
|
||||
<div class="am-panel am-panel-default">
|
||||
<div class="am-panel-hd">图片固定</div>
|
||||
<div class="am-panel-bd">
|
||||
{{include file="../../../layout/view/public/content/media_fixed" key="_media_fixed" required="" /}}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-submit-container">
|
||||
<button type="submit" class="am-btn am-btn-primary am-radius am-btn-xs am-btn-block" data-am-loading="{loadingText: '处理中...'}">确认</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -24,8 +24,11 @@
|
|||
<div class="am-panel am-panel-default">
|
||||
<div class="am-panel-hd">样式设置</div>
|
||||
<div class="am-panel-bd">
|
||||
<!-- 背景色 -->
|
||||
{{include file="../../../layout/view/public/style/background_color" key="" required="" /}}
|
||||
|
||||
<!-- 圆角 -->
|
||||
{{include file="../../../layout/view/public/style/border_radius" key="" required="" /}}
|
||||
{{include file="../../../layout/view/public/style/border_radius" max="1000" key="" required="" /}}
|
||||
|
||||
<!-- 边线类型 -->
|
||||
{{include file="../../../layout/view/public/style/border_style_4" key="" /}}
|
||||
|
|
@ -45,7 +48,7 @@
|
|||
<div class="am-panel am-panel-default">
|
||||
<div class="am-panel-hd">图片固定</div>
|
||||
<div class="am-panel-bd">
|
||||
{{include file="../../../layout/view/public/content/media_fixed" key="_media_fixed" required="" name="图片容器高度" /}}
|
||||
{{include file="../../../layout/view/public/content/media_fixed" key="_media_fixed" required="" /}}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
|
|
|||
|
|
@ -54,7 +54,7 @@
|
|||
{{include file="../../../layout/view/public/style/background_color" key="" required="" /}}
|
||||
|
||||
<!-- 圆角 -->
|
||||
{{include file="../../../layout/view/public/style/border_radius" key="" required="" /}}
|
||||
{{include file="../../../layout/view/public/style/border_radius" max="1000" key="" required="" /}}
|
||||
|
||||
<!-- 边线类型 -->
|
||||
{{include file="../../../layout/view/public/style/border_style_4" key="" /}}
|
||||
|
|
|
|||
|
|
@ -30,7 +30,7 @@
|
|||
<div class="am-panel-hd">样式设置</div>
|
||||
<div class="am-panel-bd">
|
||||
<!-- 圆角 -->
|
||||
{{include file="../../../layout/view/public/style/border_radius" key="" required="" /}}
|
||||
{{include file="../../../layout/view/public/style/border_radius" max="1000" key="" required="" /}}
|
||||
|
||||
<!-- 边线类型 -->
|
||||
{{include file="../../../layout/view/public/style/border_style_4" key="" /}}
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
<div class="am-form-group am-form-group-refreshing">
|
||||
<label>圆角</label>
|
||||
<div class="am-input-group am-input-group-sm">
|
||||
<input type="number" placeholder="圆角" name="style[key]_border_radius" min="0" max="30" data-validation-message="请输入圆角、最大30的数字" value="" class="am-form-field" [required] />
|
||||
<input type="number" data-is-clearout="0" placeholder="圆角" name="style[key]_border_radius" min="0" max="[max]" data-validation-message="请输入圆角、最大[max]的数字" value="" class="am-form-field" [required] />
|
||||
<span class="am-input-group-label">px</span>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -1,10 +1,10 @@
|
|||
<div class="am-form-group am-form-group-refreshing">
|
||||
<label>边线大小<span class="am-form-group-label-tips">上 -> 右 -> 下 -> 左</span></label>
|
||||
<div class="am-input-group am-input-group-sm group-border-width group-border-radius-color">
|
||||
<input type="number" placeholder="上" name="style[key]_border_width_top" min="0" max="10" data-validation-message="边线上最大10" value="" class="am-form-field" />
|
||||
<input type="number" placeholder="右" name="style[key]_border_width_right" min="0" max="10" data-validation-message="边线右最大10" value="" class="am-form-field" />
|
||||
<input type="number" placeholder="下" name="style[key]_border_width_bottom" min="0" max="10" data-validation-message="边线下最大10" value="" class="am-form-field" />
|
||||
<input type="number" placeholder="左" name="style[key]_border_width_left" min="0" max="10" data-validation-message="边线左最大10" value="" class="am-form-field" />
|
||||
<input type="number" data-is-clearout="0" placeholder="上" name="style[key]_border_width_top" min="0" max="10" data-validation-message="边线上最大10" value="" class="am-form-field" />
|
||||
<input type="number" data-is-clearout="0" placeholder="右" name="style[key]_border_width_right" min="0" max="10" data-validation-message="边线右最大10" value="" class="am-form-field" />
|
||||
<input type="number" data-is-clearout="0" placeholder="下" name="style[key]_border_width_bottom" min="0" max="10" data-validation-message="边线下最大10" value="" class="am-form-field" />
|
||||
<input type="number" data-is-clearout="0" placeholder="左" name="style[key]_border_width_left" min="0" max="10" data-validation-message="边线左最大10" value="" class="am-form-field" />
|
||||
<span class="am-input-group-label">px</span>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -1,7 +1,7 @@
|
|||
<div class="am-form-group am-form-group-refreshing">
|
||||
<label>边线/颜色</label>
|
||||
<div class="am-input-group am-input-group-sm group-border-radius-color">
|
||||
<input type="number" placeholder="边线" name="style[key]_border_width" min="0" max="10" data-validation-message="请输入边线、最大10的数字" value="" class="am-form-field" [required] />
|
||||
<input type="number" data-is-clearout="0" placeholder="边线" name="style[key]_border_width" min="0" max="10" data-validation-message="请输入边线、最大10的数字" value="" class="am-form-field" [required] />
|
||||
<span class="am-input-group-label">px</span>
|
||||
<input type="hidden" name="style[key]_border_color" value="" />
|
||||
<a href="javascript:;" class="am-input-group-label colorpicker-submit module-style-border-color[key]" data-position="fixed" data-input-tag=".module-offcanvas-container .module-style-border-color[key]" data-color-tag=".module-offcanvas-container input[name='style[key]_border_color']" data-color-style="background-color|border-color">
|
||||
|
|
|
|||
|
|
@ -1,10 +1,10 @@
|
|||
<div class="am-form-group am-form-group-refreshing">
|
||||
<label>边线大小<span class="am-form-group-label-tips">上 -> 右 -> 下 -> 左 -> 颜色</span></label>
|
||||
<div class="am-input-group am-input-group-sm group-border-width group-border-radius-color">
|
||||
<input type="number" placeholder="上" name="style[key]_border_width_top" min="0" max="10" data-validation-message="边线上最大10" value="" class="am-form-field" />
|
||||
<input type="number" placeholder="右" name="style[key]_border_width_right" min="0" max="10" data-validation-message="边线右最大10" value="" class="am-form-field" />
|
||||
<input type="number" placeholder="下" name="style[key]_border_width_bottom" min="0" max="10" data-validation-message="边线下最大10" value="" class="am-form-field" />
|
||||
<input type="number" placeholder="左" name="style[key]_border_width_left" min="0" max="10" data-validation-message="边线左最大10" value="" class="am-form-field" />
|
||||
<input type="number" data-is-clearout="0" placeholder="上" name="style[key]_border_width_top" min="0" max="10" data-validation-message="边线上最大10" value="" class="am-form-field" />
|
||||
<input type="number" data-is-clearout="0" placeholder="右" name="style[key]_border_width_right" min="0" max="10" data-validation-message="边线右最大10" value="" class="am-form-field" />
|
||||
<input type="number" data-is-clearout="0" placeholder="下" name="style[key]_border_width_bottom" min="0" max="10" data-validation-message="边线下最大10" value="" class="am-form-field" />
|
||||
<input type="number" data-is-clearout="0" placeholder="左" name="style[key]_border_width_left" min="0" max="10" data-validation-message="边线左最大10" value="" class="am-form-field" />
|
||||
<span class="am-input-group-label">px</span>
|
||||
<input type="hidden" name="style[key]_border_color" value="" />
|
||||
<a href="javascript:;" class="am-input-group-label colorpicker-submit module-style-border-color[key]" data-position="fixed" data-input-tag=".module-offcanvas-container .module-style-border-color[key]" data-color-tag=".module-offcanvas-container input[name='style[key]_border_color']" data-color-style="background-color|border-color">
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
<div class="am-form-group am-form-group-refreshing">
|
||||
<label>[name]</label>
|
||||
<div class="am-input-group am-input-group-sm">
|
||||
<input type="number" placeholder="[name]" name="style[key]_height" min="0" max="[height]" data-validation-message="请输入[name]、最大[height]的数字" value="" class="am-form-field" [required] />
|
||||
<input type="number" data-is-clearout="0" placeholder="[name]" name="style[key]_height" min="0" max="[height]" data-validation-message="请输入[name]、最大[height]的数字" value="" class="am-form-field" [required] />
|
||||
<span class="am-input-group-label">px</span>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -1,7 +1,7 @@
|
|||
<div class="am-form-group am-form-group-refreshing">
|
||||
<label>外边距</label>
|
||||
<div class="am-input-group am-input-group-sm">
|
||||
<input type="number" placeholder="外边距" name="style[key]_margin" min="0" max="30" data-validation-message="请输入外边距、最大30的数字" value="" class="am-form-field" [required] />
|
||||
<input type="number" data-is-clearout="0" placeholder="外边距" name="style[key]_margin" min="0" max="30" data-validation-message="请输入外边距、最大30的数字" value="" class="am-form-field" [required] />
|
||||
<span class="am-input-group-label">px</span>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -1,10 +1,10 @@
|
|||
<div class="am-form-group am-form-group-refreshing">
|
||||
<label>外边距<span class="am-form-group-label-tips">上 -> 右 -> 下 -> 左</span></label>
|
||||
<div class="am-input-group am-input-group-sm group-border-width">
|
||||
<input type="number" placeholder="上" name="style[key]_margin_top" min="0" max="60" data-validation-message="外边距上最大60" value="" class="am-form-field" />
|
||||
<input type="number" placeholder="右" name="style[key]_margin_right" min="0" max="60" data-validation-message="外边距右最大60" value="" class="am-form-field" />
|
||||
<input type="number" placeholder="下" name="style[key]_margin_bottom" min="0" max="60" data-validation-message="外边距下最大60" value="" class="am-form-field" />
|
||||
<input type="number" placeholder="左" name="style[key]_margin_left" min="0" max="60" data-validation-message="外边距左最大60" value="" class="am-form-field" />
|
||||
<input type="number" data-is-clearout="0" placeholder="上" name="style[key]_margin_top" min="0" max="60" data-validation-message="外边距上最大60" value="" class="am-form-field" />
|
||||
<input type="number" data-is-clearout="0" placeholder="右" name="style[key]_margin_right" min="0" max="60" data-validation-message="外边距右最大60" value="" class="am-form-field" />
|
||||
<input type="number" data-is-clearout="0" placeholder="下" name="style[key]_margin_bottom" min="0" max="60" data-validation-message="外边距下最大60" value="" class="am-form-field" />
|
||||
<input type="number" data-is-clearout="0" placeholder="左" name="style[key]_margin_left" min="0" max="60" data-validation-message="外边距左最大60" value="" class="am-form-field" />
|
||||
<span class="am-input-group-label">px</span>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -1,7 +1,7 @@
|
|||
<div class="am-form-group am-form-group-refreshing">
|
||||
<label>内边距</label>
|
||||
<div class="am-input-group am-input-group-sm">
|
||||
<input type="number" placeholder="内边距" name="style[key]_padding" min="0" max="30" data-validation-message="请输入内边距、最大30的数字" value="" class="am-form-field" [required] />
|
||||
<input type="number" data-is-clearout="0" placeholder="内边距" name="style[key]_padding" min="0" max="30" data-validation-message="请输入内边距、最大30的数字" value="" class="am-form-field" [required] />
|
||||
<span class="am-input-group-label">px</span>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -1,10 +1,10 @@
|
|||
<div class="am-form-group am-form-group-refreshing">
|
||||
<label>内边距<span class="am-form-group-label-tips">上 -> 右 -> 下 -> 左</span></label>
|
||||
<div class="am-input-group am-input-group-sm group-border-width">
|
||||
<input type="number" placeholder="上" name="style[key]_padding_top" min="0" max="60" data-validation-message="内边距上最大60" value="" class="am-form-field" />
|
||||
<input type="number" placeholder="右" name="style[key]_padding_right" min="0" max="60" data-validation-message="内边距右最大60" value="" class="am-form-field" />
|
||||
<input type="number" placeholder="下" name="style[key]_padding_bottom" min="0" max="60" data-validation-message="内边距下最大60" value="" class="am-form-field" />
|
||||
<input type="number" placeholder="左" name="style[key]_padding_left" min="0" max="60" data-validation-message="内边距左最大60" value="" class="am-form-field" />
|
||||
<input type="number" data-is-clearout="0" placeholder="上" name="style[key]_padding_top" min="0" max="60" data-validation-message="内边距上最大60" value="" class="am-form-field" />
|
||||
<input type="number" data-is-clearout="0" placeholder="右" name="style[key]_padding_right" min="0" max="60" data-validation-message="内边距右最大60" value="" class="am-form-field" />
|
||||
<input type="number" data-is-clearout="0" placeholder="下" name="style[key]_padding_bottom" min="0" max="60" data-validation-message="内边距下最大60" value="" class="am-form-field" />
|
||||
<input type="number" data-is-clearout="0" placeholder="左" name="style[key]_padding_left" min="0" max="60" data-validation-message="内边距左最大60" value="" class="am-form-field" />
|
||||
<span class="am-input-group-label">px</span>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -1,7 +1,7 @@
|
|||
<div class="am-form-group am-form-group-refreshing">
|
||||
<label>[name]</label>
|
||||
<div class="am-input-group am-input-group-sm">
|
||||
<input type="number" placeholder="[name]" name="style[key]_width" min="0" max="[width]" data-validation-message="请输入[name]、最大[width]的数字" value="" class="am-form-field" [required] />
|
||||
<input type="number" data-is-clearout="0" placeholder="[name]" name="style[key]_width" min="0" max="[width]" data-validation-message="请输入[name]、最大[width]的数字" value="" class="am-form-field" [required] />
|
||||
<span class="am-input-group-label">px</span>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -12,6 +12,7 @@ namespace app\service;
|
|||
|
||||
use think\facade\Db;
|
||||
use app\service\ResourcesService;
|
||||
use app\layout\service\BaseLayout;
|
||||
|
||||
/**
|
||||
* 页面设计服务层
|
||||
|
|
@ -97,7 +98,7 @@ class DesignService
|
|||
$attachment = ResourcesService::AttachmentParams($params, $data_fields);
|
||||
|
||||
// 配置信息
|
||||
$config = empty($params['config']) ? '' : (is_array($params['config']) ? json_encode($params['config'], JSON_UNESCAPED_UNICODE) : htmlspecialchars_decode($params['config'])) ;
|
||||
$config = empty($params['config']) ? '' : BaseLayout::ConfigSaveHandle($params['config']);
|
||||
|
||||
// 数据
|
||||
$data = [
|
||||
|
|
|
|||
|
|
@ -212,6 +212,11 @@
|
|||
.colorpicker-submit {
|
||||
background-color: #fff;
|
||||
}
|
||||
.colorpicker-submit img {
|
||||
width: 14px;
|
||||
height: 14px;
|
||||
float: right;
|
||||
}
|
||||
|
||||
/**
|
||||
* 模块设置侧边栏
|
||||
|
|
@ -276,13 +281,8 @@
|
|||
.module-offcanvas-container .am-panel .am-panel-bd .am-form-group:last-child {
|
||||
padding-bottom: 5px !important;
|
||||
}
|
||||
@media only screen and (max-width: 640px) {
|
||||
.module-offcanvas-container .am-offcanvas-bar {
|
||||
width: 280px;
|
||||
}
|
||||
.module-offcanvas-container .form-submit-container {
|
||||
width: 279px;
|
||||
}
|
||||
.module-offcanvas-container .am-input-group-label {
|
||||
border-color: #ddd;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -310,17 +310,17 @@
|
|||
.group-border-radius-color .am-input-group-label {
|
||||
border-left: 0;
|
||||
}
|
||||
.group-border-radius-color .colorpicker-submit img {
|
||||
width: 14px;
|
||||
height: 14px;
|
||||
}
|
||||
.group-border-style .chosen-container {
|
||||
width: 72px !important;
|
||||
display: block;
|
||||
float: left;
|
||||
}
|
||||
.group-border-style .chosen-container:not(:last-child) {
|
||||
margin-right: 5px;
|
||||
margin-right: 4px;
|
||||
}
|
||||
.group-text-align-style {
|
||||
border: 1px solid #ddd;
|
||||
padding: 5px 8px;
|
||||
}
|
||||
@media only screen and (max-width: 640px) {
|
||||
.group-border-style .chosen-container {
|
||||
|
|
@ -374,7 +374,8 @@
|
|||
height: 33px;
|
||||
}
|
||||
#offcanvas-module-config-goods .config-goods-list li .am-close,
|
||||
#offcanvas-module-config-many-images .config-many-images-container .am-panel .am-close {
|
||||
#offcanvas-module-config-many-images .config-many-images-container .am-panel .am-close,
|
||||
#offcanvas-module-config-images-text .config-images-text-container .am-panel .am-close {
|
||||
position: absolute;
|
||||
top: -8px;
|
||||
right: -8px;
|
||||
|
|
@ -394,14 +395,19 @@
|
|||
}
|
||||
|
||||
/**
|
||||
* 模块设置侧边栏 - 多图
|
||||
* 模块设置侧边栏 - 多图、图文
|
||||
*/
|
||||
#offcanvas-module-config-many-images .config-many-images-container .am-panel {
|
||||
#offcanvas-module-config-many-images .config-many-images-container .am-panel,
|
||||
#offcanvas-module-config-images-text .config-images-text-container .am-panel {
|
||||
position: relative;
|
||||
}
|
||||
#offcanvas-module-config-many-images .config-many-images-container .am-panel .am-form-group:last-child {
|
||||
#offcanvas-module-config-many-images .config-many-images-container .am-panel .am-form-group:last-child,
|
||||
#offcanvas-module-config-images-text .config-images-text-container .am-panel .am-form-group:last-child {
|
||||
padding-bottom: 5px !important;
|
||||
}
|
||||
#offcanvas-module-config-images-text .config-images-text-container .am-panel .group-input-font-size {
|
||||
width: 110px;
|
||||
}
|
||||
|
||||
/**
|
||||
* 模块设置侧边栏 - 标题
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@
|
|||
* 公共
|
||||
*/
|
||||
.layout-container [class*="am-u-"] {padding-left:0;padding-right:0;}
|
||||
.layout-container a {text-decoration: none;}
|
||||
|
||||
/**
|
||||
* 布局基础
|
||||
|
|
|
|||
|
|
@ -2723,6 +2723,59 @@ function InputClearOutHandle(e)
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 颜色选择器初始化
|
||||
* @author Devil
|
||||
* @blog http://gong.gg/
|
||||
* @version 1.0.0
|
||||
* @date 2022-11-23
|
||||
* @desc description
|
||||
*/
|
||||
function ColorPickerInit()
|
||||
{
|
||||
// 颜色选择器
|
||||
if($('.colorpicker-submit').length > 0)
|
||||
{
|
||||
$('.colorpicker-submit').each(function(k, v)
|
||||
{
|
||||
if(parseInt($(this).attr('data-is-init') || 0) == 0)
|
||||
{
|
||||
$(this).colorpicker(
|
||||
{
|
||||
target: $(this),
|
||||
fillcolor: true,
|
||||
success: function(o, color)
|
||||
{
|
||||
var style_arr = (o.context.dataset.colorStyle || 'color').split('|');
|
||||
var style_value = {};
|
||||
for(var i in style_arr)
|
||||
{
|
||||
style_value[style_arr[i]] = color;
|
||||
}
|
||||
$(o.context.dataset.inputTag).css(style_value);
|
||||
$(o.context.dataset.colorTag).val(color);
|
||||
$(o.context.dataset.colorTag).trigger('change');
|
||||
},
|
||||
reset: function(o)
|
||||
{
|
||||
var color = '';
|
||||
var style_arr = (o.context.dataset.colorStyle || 'color').split('|');
|
||||
var style_value = {};
|
||||
for(var i in style_arr)
|
||||
{
|
||||
style_value[style_arr[i]] = color;
|
||||
}
|
||||
$(o.context.dataset.inputTag).css(style_value);
|
||||
$(o.context.dataset.colorTag).val(color);
|
||||
$(o.context.dataset.colorTag).trigger('change');
|
||||
}
|
||||
});
|
||||
$(this).attr('data-is-init', 1);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// 公共数据操作
|
||||
$(function()
|
||||
|
|
@ -2730,6 +2783,9 @@ $(function()
|
|||
// 表格初始化
|
||||
FormTableContainerInit();
|
||||
|
||||
// 颜色选择器初始化
|
||||
ColorPickerInit();
|
||||
|
||||
// 表格字段数据排序
|
||||
$('.form-sort-container .sort-icon').on('click', function()
|
||||
{
|
||||
|
|
@ -3519,46 +3575,6 @@ $(function()
|
|||
VideoFileUploadShow('.video-file-event');
|
||||
}
|
||||
|
||||
|
||||
// 颜色选择器
|
||||
if($('.colorpicker-submit').length > 0)
|
||||
{
|
||||
$('.colorpicker-submit').each(function(k, v)
|
||||
{
|
||||
$(this).colorpicker(
|
||||
{
|
||||
target: $(this),
|
||||
fillcolor: true,
|
||||
success: function(o, color)
|
||||
{
|
||||
var style_arr = (o.context.dataset.colorStyle || 'color').split('|');
|
||||
var style_value = {};
|
||||
for(var i in style_arr)
|
||||
{
|
||||
style_value[style_arr[i]] = color;
|
||||
}
|
||||
$(o.context.dataset.inputTag).css(style_value);
|
||||
$(o.context.dataset.colorTag).val(color);
|
||||
$(o.context.dataset.colorTag).trigger('change');
|
||||
},
|
||||
reset: function(o)
|
||||
{
|
||||
var color = '';
|
||||
var style_arr = (o.context.dataset.colorStyle || 'color').split('|');
|
||||
var style_value = {};
|
||||
for(var i in style_arr)
|
||||
{
|
||||
style_value[style_arr[i]] = color;
|
||||
}
|
||||
$(o.context.dataset.inputTag).css(style_value);
|
||||
$(o.context.dataset.colorTag).val(color);
|
||||
$(o.context.dataset.colorTag).trigger('change');
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
// 监听多图上传和上传附件组件的插入动作
|
||||
if(typeof(upload_editor) == 'object')
|
||||
{
|
||||
|
|
|
|||
|
|
@ -2,9 +2,11 @@
|
|||
FromInit('form.form-validation-layout-config');
|
||||
FromInit('form.form-validation-module-offcanvas-images');
|
||||
FromInit('form.form-validation-module-offcanvas-many-images');
|
||||
FromInit('form.form-validation-module-offcanvas-images-text');
|
||||
FromInit('form.form-validation-module-offcanvas-video');
|
||||
FromInit('form.form-validation-module-offcanvas-goods');
|
||||
FromInit('form.form-validation-module-offcanvas-title');
|
||||
FromInit('form.form-validation-module-offcanvas-custom');
|
||||
FromInit('form.form-validation-module-offcanvas-border');
|
||||
FromInit('form.form-validation-module-offcanvas-height');
|
||||
|
||||
|
|
@ -23,9 +25,11 @@ var $layout = $('.layout-container');
|
|||
var $offcanvas_layout_config = $('#offcanvas-layout-config');
|
||||
var $offcanvas_config_images = $('#offcanvas-module-config-images');
|
||||
var $offcanvas_config_many_images = $('#offcanvas-module-config-many-images');
|
||||
var $offcanvas_config_images_text = $('#offcanvas-module-config-images-text');
|
||||
var $offcanvas_config_video = $('#offcanvas-module-config-video');
|
||||
var $offcanvas_config_goods = $('#offcanvas-module-config-goods');
|
||||
var $offcanvas_config_title = $('#offcanvas-module-config-title');
|
||||
var $offcanvas_config_custom = $('#offcanvas-module-config-custom');
|
||||
var $offcanvas_config_border = $('#offcanvas-module-config-border');
|
||||
var $offcanvas_config_height = $('#offcanvas-module-config-height');
|
||||
|
||||
|
|
@ -195,8 +199,9 @@ function ModuleToPrompt(to_name)
|
|||
* @param {[object]} data [数据]
|
||||
* @param {[string]} key [key]
|
||||
* @param {[array]} replace_rules [替换规则]
|
||||
* @param {[array]} exclude [排除样式]
|
||||
*/
|
||||
function StyleBaseHandle(data, key, replace_rules)
|
||||
function StyleBaseHandle(data, key, replace_rules, exclude)
|
||||
{
|
||||
// 样式容器
|
||||
var style = '';
|
||||
|
|
@ -240,7 +245,10 @@ function StyleBaseHandle(data, key, replace_rules)
|
|||
var l = data[key+type+'_left'] || value;
|
||||
if((t != 0 || r != 0 || b != 0 || l != 0) || (t != '' || r != '' || b != '' || l != ''))
|
||||
{
|
||||
style += arr[i]['css']+':'+ t+unit+' '+r+unit+' '+b+unit+' '+l+unit+';';
|
||||
if((exclude || null) == null || exclude.indexOf(arr[i]['css']) == -1)
|
||||
{
|
||||
style += arr[i]['css']+':'+ t+unit+' '+r+unit+' '+b+unit+' '+l+unit+';';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -276,6 +284,16 @@ function StyleBaseHandle(data, key, replace_rules)
|
|||
"css": "color",
|
||||
"unit": ""
|
||||
},
|
||||
{
|
||||
"type": "align",
|
||||
"css": "text-align",
|
||||
"unit": ""
|
||||
},
|
||||
{
|
||||
"type": "font_size",
|
||||
"css": "font-size",
|
||||
"unit": "px"
|
||||
},
|
||||
{
|
||||
"type": "margin",
|
||||
"css": "margin",
|
||||
|
|
@ -301,19 +319,21 @@ function StyleBaseHandle(data, key, replace_rules)
|
|||
{
|
||||
if((data[key+arr2[i]['type']] || null) != null)
|
||||
{
|
||||
// 样式值
|
||||
var v = data[key+arr2[i]['type']]+arr2[i]['unit'];
|
||||
|
||||
// 替换规则
|
||||
// rules {"field":{"value":"hello","var":"var"}}
|
||||
if((replace_rules || null) != null && (replace_rules[arr2[i]['type']] || null) != null)
|
||||
if((exclude || null) == null || exclude.indexOf(arr2[i]['css']) == -1)
|
||||
{
|
||||
var rules = replace_rules[arr2[i]['type']];
|
||||
var reg = new RegExp(rules['var'], 'g');
|
||||
v = rules['value'].replace(reg, data[key+arr2[i]['type']]);
|
||||
}
|
||||
// 样式值
|
||||
var v = data[key+arr2[i]['type']]+arr2[i]['unit'];
|
||||
|
||||
style += arr2[i]['css']+':'+v+';';
|
||||
// 替换规则
|
||||
// rules {"field":{"value":"hello","var":"var"}}
|
||||
if((replace_rules || null) != null && (replace_rules[arr2[i]['type']] || null) != null)
|
||||
{
|
||||
var rules = replace_rules[arr2[i]['type']];
|
||||
var reg = new RegExp(rules['var'], 'g');
|
||||
v = rules['value'].replace(reg, data[key+arr2[i]['type']]);
|
||||
}
|
||||
style += arr2[i]['css']+':'+v+';';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -487,7 +507,7 @@ function FormBackModuleConfigImagesHandle(data)
|
|||
// html拼接
|
||||
var html = '<div class="module-images-container" style="'+style+'">';
|
||||
html += '<a href="javascript:ModuleToPrompt(\''+(data.content_to_name || '')+'\');" class="'+media_fixed.media_container_ent+'" style="'+media_fixed.media_container_style+'">';
|
||||
html += '<img src="'+data['content_images']+'" class="'+media_fixed.media_ent+'" />';
|
||||
html += '<img src="'+data['content_images']+'" class="'+media_fixed.media_ent+'" style="'+media_fixed.media_container_style+'" />';
|
||||
html += '</a>';
|
||||
html += '</div>';
|
||||
var $doc = $(doc);
|
||||
|
|
@ -521,7 +541,7 @@ function FormBackModuleConfigManyImagesHandle(data)
|
|||
return false;
|
||||
}
|
||||
|
||||
// 多图图片
|
||||
// 数据字段
|
||||
var fields = {
|
||||
"content_images_": "images",
|
||||
"content_to_name_": "name",
|
||||
|
|
@ -532,18 +552,20 @@ function FormBackModuleConfigManyImagesHandle(data)
|
|||
var data_list = [];
|
||||
for(var i in data)
|
||||
{
|
||||
for(var f in fields)
|
||||
var loc = i.lastIndexOf('_');
|
||||
if(loc != -1)
|
||||
{
|
||||
if(i.substr(0, f.length) == f)
|
||||
var key = i.substr(0, loc+1);
|
||||
var last = i.substr(loc+1);
|
||||
for(var f in fields)
|
||||
{
|
||||
var key = i.replace(f, '') || null;
|
||||
if(key != null)
|
||||
if(key == f)
|
||||
{
|
||||
// 临时索引记录
|
||||
var index = key_temp.indexOf(key);
|
||||
var index = key_temp.indexOf(last);
|
||||
if(index == -1)
|
||||
{
|
||||
key_temp.push(key);
|
||||
key_temp.push(last);
|
||||
index = key_temp.length-1;
|
||||
}
|
||||
|
||||
|
|
@ -553,8 +575,8 @@ function FormBackModuleConfigManyImagesHandle(data)
|
|||
data_list[index] = {};
|
||||
}
|
||||
data_list[index][fields[f]] = (fields[f] != 'value' || (data[i] || null) == null) ? data[i] : (JSON.parse(decodeURIComponent(data[i])) || '');
|
||||
delete data[i];
|
||||
}
|
||||
delete data[i];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -589,7 +611,7 @@ function FormBackModuleConfigManyImagesHandle(data)
|
|||
{
|
||||
item_html += '<li>';
|
||||
item_html += '<a href="javascript:ModuleToPrompt(\''+(data_list[i]['name'] || '')+'\');" class="'+media_fixed.media_container_ent+'" style="'+media_fixed.media_container_style+'">'
|
||||
item_html += '<img src="'+data_list[i]['images']+'" class="'+media_fixed.media_ent+'" />';
|
||||
item_html += '<img src="'+data_list[i]['images']+'" class="'+media_fixed.media_ent+'" style="'+media_fixed.media_container_style+'" />';
|
||||
item_html += '</a>';
|
||||
item_html += '</li>';
|
||||
}
|
||||
|
|
@ -641,13 +663,13 @@ function FormBackModuleConfigManyImagesHandle(data)
|
|||
var lg = show_style_value.view_list_number_lg || 5;
|
||||
|
||||
// 外边距
|
||||
var margin = show_style_value.style_margin || 0;
|
||||
var item_margin = parseInt(show_style_value.style_margin || 0);
|
||||
|
||||
// 数据项样式处理
|
||||
var item_style = (margin > 0) ? 'margin:'+margin+'px 0 0 '+margin+'px;' : '';
|
||||
var item_style = (item_margin > 0) ? 'margin:'+item_margin+'px 0 0 '+item_margin+'px;' : '';
|
||||
|
||||
// 设置了外边距,则计算平均移动值
|
||||
var avg = (margin > 0) ? 'module-list-content-avg-'+margin : '';
|
||||
var avg = (item_margin > 0) ? 'module-list-content-avg-'+item_margin : '';
|
||||
|
||||
// 列表class
|
||||
list_ent = avg+' module-list-sm-'+sm+' module-list-md-'+md+' module-list-lg-'+md+' ';
|
||||
|
|
@ -658,7 +680,7 @@ function FormBackModuleConfigManyImagesHandle(data)
|
|||
html += '<li>';
|
||||
html += '<div class="module-item" style="'+item_style+'">';
|
||||
html += '<a href="javascript:ModuleToPrompt(\''+(data_list[i]['name'] || '')+'\');" class="'+media_fixed.media_container_ent+'" style="'+media_fixed.media_container_style+'">'
|
||||
html += '<img src="'+data_list[i]['images']+'" class="'+media_fixed.media_ent+'" />';
|
||||
html += '<img src="'+data_list[i]['images']+'" class="'+media_fixed.media_ent+'" style="'+media_fixed.media_container_style+'" />';
|
||||
html += '</a>';
|
||||
html += '</div>';
|
||||
html += '</li>';
|
||||
|
|
@ -701,6 +723,245 @@ function FormBackModuleConfigManyImagesHandle(data)
|
|||
$offcanvas_config_many_images.offCanvas('close');
|
||||
}
|
||||
|
||||
/**
|
||||
* 模块-图文处理
|
||||
* @author Devil
|
||||
* @blog http://gong.gg/
|
||||
* @version 1.0.0
|
||||
* @date 2021-05-18
|
||||
* @desc description
|
||||
* @param {[object]} data [表单数据]
|
||||
*/
|
||||
function FormBackModuleConfigImagesTextHandle(data)
|
||||
{
|
||||
// 基础信息
|
||||
var doc = $offcanvas_config_images_text.attr('data-doc') || null;
|
||||
if(doc == null)
|
||||
{
|
||||
Prompt($layout.data('module-tab-tips') || '模块标记有误');
|
||||
return false;
|
||||
}
|
||||
|
||||
// 数据字段
|
||||
var fields = {
|
||||
"content_images_": "images",
|
||||
"content_title_": "title",
|
||||
"content_title_style_color_": "title_style_color",
|
||||
"content_title_style_font_size_": "title_style_font_size",
|
||||
"content_title_style_align_": "title_style_align",
|
||||
"content_title_style_margin_top_": "title_style_margin_top",
|
||||
"content_title_style_margin_right_": "title_style_margin_right",
|
||||
"content_title_style_margin_bottom_": "title_style_margin_bottom",
|
||||
"content_title_style_margin_left": "title_style_margin_left",
|
||||
"content_desc_": "desc",
|
||||
"content_desc_style_color_": "desc_style_color",
|
||||
"content_desc_style_font_size_": "desc_style_font_size",
|
||||
"content_desc_style_align_": "desc_style_align",
|
||||
"content_desc_style_margin_top_": "desc_style_margin_top",
|
||||
"content_desc_style_margin_right_": "desc_style_margin_right",
|
||||
"content_desc_style_margin_bottom_": "desc_style_margin_bottom",
|
||||
"content_desc_style_margin_left": "desc_style_margin_left",
|
||||
"content_to_name_": "name",
|
||||
"content_to_type_": "type",
|
||||
"content_to_value_": "value"
|
||||
};
|
||||
var key_temp = [];
|
||||
var data_list = [];
|
||||
for(var i in data)
|
||||
{
|
||||
var loc = i.lastIndexOf('_');
|
||||
if(loc != -1)
|
||||
{
|
||||
var key = i.substr(0, loc+1);
|
||||
var last = i.substr(loc+1);
|
||||
for(var f in fields)
|
||||
{
|
||||
if(key == f)
|
||||
{
|
||||
// 临时索引记录
|
||||
var index = key_temp.indexOf(last);
|
||||
if(index == -1)
|
||||
{
|
||||
key_temp.push(last);
|
||||
index = key_temp.length-1;
|
||||
}
|
||||
|
||||
// 数据组合
|
||||
if(data_list[index] == undefined)
|
||||
{
|
||||
data_list[index] = {};
|
||||
}
|
||||
data_list[index][fields[f]] = (fields[f] != 'value' || (data[i] || null) == null) ? data[i] : (JSON.parse(decodeURIComponent(data[i])) || '');
|
||||
delete data[i];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if(data_list.length <= 0)
|
||||
{
|
||||
Prompt($layout.data('config-images-text-tips') || '请先添加图文并配置');
|
||||
return false;
|
||||
}
|
||||
for(var i in data_list)
|
||||
{
|
||||
if((data_list[i]['images'] || null) == null && (data_list[i]['title'] || null) == null)
|
||||
{
|
||||
Prompt($layout.data('upload-images-or-title-tips') || '图片和标题必填一项');
|
||||
return false;
|
||||
}
|
||||
}
|
||||
// 展示模式
|
||||
var show_style = data.view_list_show_style || null;
|
||||
if(show_style == null)
|
||||
{
|
||||
Prompt($layout.data('data-show-modal-tips') || '请选择数据展示模式');
|
||||
return false;
|
||||
}
|
||||
|
||||
// 样式处理
|
||||
var style = StyleBaseHandle(data, 'style_');
|
||||
|
||||
// 图片固定
|
||||
var media_fixed = MediaFixedHandle(data);
|
||||
|
||||
// html拼接
|
||||
var html = '<div class="module-slider-container" style="'+style+'">';
|
||||
// 初始化参数
|
||||
var option = {};
|
||||
|
||||
// 参数处理
|
||||
var show_style_value = ViewListShowStyleValueHandle(data.view_list_show_style_value);
|
||||
|
||||
// 外边距
|
||||
var item_margin = parseInt(show_style_value.style_margin || 0);
|
||||
|
||||
// 数据项样式处理
|
||||
var item_style = (item_margin > 0 && show_style != 'rolling') ? 'margin:'+item_margin+'px 0 0 '+item_margin+'px;' : '';
|
||||
|
||||
// 内容处理
|
||||
var item_html = '';
|
||||
var item_right_style = '';
|
||||
var item_field_style = [];
|
||||
for(var i in data_list)
|
||||
{
|
||||
// 字段样式
|
||||
if(item_field_style[i] == undefined)
|
||||
{
|
||||
item_field_style[i] = {};
|
||||
}
|
||||
item_field_style[i]['title'] = StyleBaseHandle(data_list[i], 'title_style_');
|
||||
item_field_style[i]['desc'] = StyleBaseHandle(data_list[i], 'desc_style_');
|
||||
|
||||
// 拼接html
|
||||
item_html += '<li>';
|
||||
item_html += '<div class="module-item" style="'+item_style+'">';
|
||||
switch(show_style)
|
||||
{
|
||||
// 左右
|
||||
case 'leftright' :
|
||||
var style_media_fixed_width = parseInt(data.style_media_fixed_width || 0);
|
||||
item_right_style = 'margin-left:10px;'+((style_media_fixed_width > 0) ? 'width: calc(100% - '+(style_media_fixed_width+10)+'px);' : '');
|
||||
item_html += '<a href="javascript:ModuleToPrompt(\''+(data_list[i]['name'] || '')+'\');" class="am-fl '+media_fixed.media_container_ent+'" style="'+media_fixed.media_container_style+'">'
|
||||
item_html += '<img src="'+data_list[i]['images']+'" class="'+media_fixed.media_ent+'" style="'+media_fixed.media_container_style+'" />';
|
||||
item_html += '</a>';
|
||||
item_html += '<div class="am-fl" style="'+item_right_style+'">';
|
||||
if((data_list[i]['title'] || null) != null)
|
||||
{
|
||||
item_html += '<p style="'+item_field_style[i]['title']+'">'+data_list[i]['title']+'</p>';
|
||||
}
|
||||
if((data_list[i]['desc'] || null) != null)
|
||||
{
|
||||
item_html += '<p style="'+item_field_style[i]['desc']+'">'+data_list[i]['desc']+'</p>';
|
||||
}
|
||||
item_html += '</div>';
|
||||
break;
|
||||
|
||||
// 默认 上下、滚动
|
||||
case 'updown' :
|
||||
default :
|
||||
item_html += '<a href="javascript:ModuleToPrompt(\''+(data_list[i]['name'] || '')+'\');" class="'+media_fixed.media_container_ent+'" style="'+media_fixed.media_container_style+'">'
|
||||
item_html += '<img src="'+data_list[i]['images']+'" class="'+media_fixed.media_ent+'" style="'+media_fixed.media_container_style+'" />';
|
||||
item_html += '</a>';
|
||||
if((data_list[i]['title'] || null) != null)
|
||||
{
|
||||
item_html += '<p style="'+item_field_style[i]['title']+'">'+data_list[i]['title']+'</p>';
|
||||
}
|
||||
if((data_list[i]['desc'] || null) != null)
|
||||
{
|
||||
item_html += '<p style="'+item_field_style[i]['desc']+'">'+data_list[i]['desc']+'</p>';
|
||||
}
|
||||
break;
|
||||
}
|
||||
item_html += '</div>';
|
||||
item_html += '</li>';
|
||||
}
|
||||
|
||||
// 滚动
|
||||
var nav_dot_ent = '';
|
||||
var list_ent = '';
|
||||
if(show_style == 'rolling')
|
||||
{
|
||||
// 参数处理
|
||||
var show_style_value = ViewRollingShowStyleValueHandle(data.view_list_show_style_value);
|
||||
|
||||
// 是否展示导航点
|
||||
nav_dot_ent = show_style_value.is_nav_dot ? '' : 'slides-rolling-not-dot';
|
||||
|
||||
// html拼接
|
||||
html += '<div class="am-slider am-slider-default am-slider-carousel '+nav_dot_ent+'">';
|
||||
html += '<ul class="am-slides">';
|
||||
html += item_html;
|
||||
html += '</ul>';
|
||||
html += '</div>';
|
||||
|
||||
// 组件参数
|
||||
option = {
|
||||
itemWidth: show_style_value.item_width,
|
||||
itemMargin: show_style_value.item_margin,
|
||||
slideshow: show_style_value.is_auto_play,
|
||||
controlNav: show_style_value.is_nav_dot
|
||||
};
|
||||
} else {
|
||||
// 列表展示数量
|
||||
var sm = show_style_value.view_list_number_sm || 2;
|
||||
var md = show_style_value.view_list_number_md || 5;
|
||||
var lg = show_style_value.view_list_number_lg || 5;
|
||||
// 设置了外边距,则计算平均移动值
|
||||
var avg = (item_margin > 0) ? 'module-list-content-avg-'+item_margin : '';
|
||||
|
||||
// 列表class
|
||||
list_ent = avg+' module-list-sm-'+sm+' module-list-md-'+md+' module-list-lg-'+md+' ';
|
||||
html += '<ul class="module-list-content '+list_ent+'">';
|
||||
html += item_html;
|
||||
html += '</ul>';
|
||||
}
|
||||
html += '</div>';
|
||||
|
||||
// 模块容器设置
|
||||
var $doc = $(doc);
|
||||
$doc.html(html);
|
||||
|
||||
// 数据加入配置
|
||||
data['frontend_config'] = {
|
||||
"style": style,
|
||||
"item_style": item_style,
|
||||
"item_right_style": item_right_style,
|
||||
"item_field_style": item_field_style,
|
||||
"nav_dot_ent": nav_dot_ent,
|
||||
"list_ent": list_ent,
|
||||
"media_fixed": media_fixed
|
||||
}
|
||||
data['data_list'] = data_list;
|
||||
$doc.attr('data-json', encodeURIComponent(JSON.stringify(data)));
|
||||
|
||||
// 滚动初始化
|
||||
if(show_style == 'rolling')
|
||||
{
|
||||
$doc.find('.am-slider').flexslider(option);
|
||||
}
|
||||
$offcanvas_config_images_text.offCanvas('close');
|
||||
}
|
||||
|
||||
/**
|
||||
* 模块-视频处理
|
||||
* @author Devil
|
||||
|
|
@ -736,7 +997,7 @@ function FormBackModuleConfigVideoHandle(data)
|
|||
// html拼接
|
||||
var html = '<div class="module-video-container" style="'+style+'">';
|
||||
html += '<div class="module-video-content '+media_fixed.media_container_ent+'" style="'+media_fixed.media_container_style+'">';
|
||||
html += '<video src="'+data.content_video+'" poster="'+(data.content_images || '')+'" controls class="'+media_fixed.media_ent+'">your browser does not support the video tag</video>';
|
||||
html += '<video src="'+data.content_video+'" poster="'+(data.content_images || '')+'" controls class="'+media_fixed.media_ent+'" style="'+media_fixed.media_container_style+'">your browser does not support the video tag</video>';
|
||||
html += '</div>';
|
||||
html += '</div>';
|
||||
var $doc = $(doc);
|
||||
|
|
@ -860,7 +1121,7 @@ function FormBackModuleConfigGoodsHandle(data)
|
|||
item_html += '<li>';
|
||||
item_html += '<div class="module-item" style="'+item_style+'">';
|
||||
item_html += '<a href="'+list[i]['goods_url']+'" target="_blank" class="'+media_fixed.media_container_ent+'" style="'+media_fixed.media_container_style+'">';
|
||||
item_html += '<img src="'+list[i]['images']+'" alt="'+list[i]['title']+'" class="'+media_fixed.media_ent+'" />';
|
||||
item_html += '<img src="'+list[i]['images']+'" alt="'+list[i]['title']+'" class="'+media_fixed.media_ent+'" style="'+media_fixed.media_container_style+'" />';
|
||||
item_html += '</a>';
|
||||
item_html += '<div class="item-bottom">';
|
||||
item_html += '<div class="module-title">';
|
||||
|
|
@ -1069,6 +1330,40 @@ function FormBackModuleConfigTitleHandle(data)
|
|||
$offcanvas_config_title.offCanvas('close');
|
||||
}
|
||||
|
||||
/**
|
||||
* 模块-自定义html处理
|
||||
* @author Devil
|
||||
* @blog http://gong.gg/
|
||||
* @version 1.0.0
|
||||
* @date 2021-06-04
|
||||
* @desc description
|
||||
* @param {[object]} data [表单数据]
|
||||
*/
|
||||
function FormBackModuleConfigCustomHandle(data)
|
||||
{
|
||||
// 基础信息
|
||||
var doc = $offcanvas_config_custom.attr('data-doc') || null;
|
||||
if(doc == null)
|
||||
{
|
||||
Prompt($layout.data('module-tab-tips') || '模块标记有误');
|
||||
return false;
|
||||
}
|
||||
|
||||
// 模块容器设置
|
||||
var $doc = $(doc);
|
||||
$doc.html(data.custom || '');
|
||||
|
||||
// 自定义html、转为base64
|
||||
if((data['custom'] || null) != null)
|
||||
{
|
||||
data['custom'] = CryptoJS.enc.Base64.stringify(CryptoJS.enc.Utf8.parse(data.custom));
|
||||
}
|
||||
|
||||
// 数据加入配置
|
||||
$doc.attr('data-json', encodeURIComponent(JSON.stringify(data)));
|
||||
$offcanvas_config_custom.offCanvas('close');
|
||||
}
|
||||
|
||||
/**
|
||||
* 模块-辅助线处理
|
||||
* @author Devil
|
||||
|
|
@ -1423,6 +1718,116 @@ function ModuleConfigManyImagesItemContentHtml(images, type, name, value)
|
|||
return html;
|
||||
}
|
||||
|
||||
/**
|
||||
* 模块-图文信息生成
|
||||
* @author Devil
|
||||
* @blog http://gong.gg/
|
||||
* @version 1.0.0
|
||||
* @date 2021-05-18
|
||||
* @desc description
|
||||
* @param {[object]} data [配置数据]
|
||||
*/
|
||||
function ModuleConfigImagesTextItemContentHtml(data)
|
||||
{
|
||||
if((data || null) == null)
|
||||
{
|
||||
data = {};
|
||||
}
|
||||
if((data.title_style_align || null) == null)
|
||||
{
|
||||
data.title_style_align = 'left';
|
||||
}
|
||||
if((data.desc_style_align || null) == null)
|
||||
{
|
||||
data.desc_style_align = 'left';
|
||||
}
|
||||
var index = parseInt(Math.random()*1000001);
|
||||
var html = `<div class="am-panel am-panel-default am-padding-sm">
|
||||
<a href="javascript:;" class="am-close am-close-alt am-icon-times"></a>
|
||||
<div class="am-form-group am-form-file am-form-group-refreshing">
|
||||
<ul class="plug-file-upload-view module-slider-type-images-view module-slider-type-images-view-`+index+`" data-form-name="content_images_`+index+`" data-max-number="1" data-delete="0" data-dialog-type="images">
|
||||
<li>
|
||||
<input type="text" name="content_images_`+index+`" value="`+(data.images || '')+`" />
|
||||
<img src="`+(data.images || $offcanvas_config_many_images.data('default-images'))+`" />
|
||||
</li>
|
||||
</ul>
|
||||
<div class="plug-file-upload-submit" data-view-tag="ul.module-slider-type-images-view-`+index+`">+`+($layout.data('upload-images-name') || '上传图片')+`</div>
|
||||
</div>
|
||||
<div class="am-form-group am-form-group-refreshing">
|
||||
<div class="form-view-choice-container am-margin-top-xs" data-key="`+index+`">
|
||||
<input type="hidden" name="content_to_type_`+index+`" value="`+(data.type || '')+`" />
|
||||
<input type="hidden" name="content_to_name_`+index+`" value="`+(data.name || '')+`" />
|
||||
<input type="hidden" name="content_to_value_`+index+`" value="`+((data.value || null) == null ? '' : encodeURIComponent(JSON.stringify(data.value)))+`" />
|
||||
<div class="form-view-choice-container-content">
|
||||
`+ModuleConfigImagesToContentHtml(name)+`
|
||||
</div>
|
||||
</div>
|
||||
</div>`;
|
||||
// 标题
|
||||
var title_style_color = (data.title_style_color || null) == null ? '' : 'background-color:'+data.title_style_color+';border-color:'+data.title_style_color+';';
|
||||
html += `<div class="am-form-group am-form-group-refreshing">
|
||||
<label>标题</label>
|
||||
<div class="am-input-group am-input-group-sm">
|
||||
<input type="text" placeholder="标题" name="content_title_`+index+`" value="`+(data.title || '')+`" class="am-form-field" />
|
||||
<input type="hidden" name="content_title_style_color_`+index+`" value="`+(data.title_style_color || '')+`" />
|
||||
<a href="javascript:;" class="am-input-group-label colorpicker-submit module-style-color-images-text-content-title-style-color-`+index+`" data-position="fixed" data-input-tag=".module-style-color-images-text-content-title-style-color-`+index+`" data-color-tag="input[name='content_title_style_color_`+index+`']" data-color-style="background-color|border-color" style="`+title_style_color+`">
|
||||
<img src="`+__attachment_host__+`/static/common/images/colorpicker.png" />
|
||||
</a>
|
||||
</div>`;
|
||||
|
||||
// 外边距
|
||||
html += `<div class="am-input-group am-input-group-sm group-border-width am-margin-top-xs">
|
||||
<input type="number" data-is-clearout="0" placeholder="外上" name="content_title_style_margin_top_`+index+`" min="0" max="60" data-validation-message="标题外边距上最大60" value="`+(data.title_style_margin_top || '')+`" class="am-form-field" />
|
||||
<input type="number" data-is-clearout="0" placeholder="外右" name="content_title_style_margin_right_`+index+`" min="0" max="60" data-validation-message="标题外边距右最大60" value="`+(data.title_style_margin_right || '')+`" class="am-form-field" />
|
||||
<input type="number" data-is-clearout="0" placeholder="外下" name="content_title_style_margin_bottom_`+index+`" min="0" max="60" data-validation-message="标题外边距下最大60" value="`+(data.title_style_margin_bottom || '')+`" class="am-form-field" />
|
||||
<input type="number" data-is-clearout="0" placeholder="外左" name="content_title_style_margin_left_`+index+`" min="0" max="60" data-validation-message="标题外边距左最大60" value="`+(data.title_style_margin_left || '')+`" class="am-form-field" />
|
||||
<span class="am-input-group-label">px</span>
|
||||
</div>`;
|
||||
|
||||
// 字体大小和左右居中
|
||||
html += `<div class="am-margin-top-xs am-nbfc">
|
||||
<div class="am-input-group am-input-group-sm am-fl group-input-font-size">
|
||||
<input type="number" data-is-clearout="0" placeholder="大小" name="content_title_style_font_size_`+index+`" min="0" max="50" value="`+(data.title_style_font_size || '')+`" class="am-form-field" />
|
||||
<span class="am-input-group-label">px</span>
|
||||
</div>
|
||||
<div class="am-fr group-text-align-style"><label class="am-checkbox-inline"><input type="radio" name="content_title_style_align_`+index+`" value="left" data-am-ucheck `+(data.title_style_align == 'left' ? 'checked' : '')+` /> 居左</label><label class="am-checkbox-inline"><input type="radio" name="content_title_style_align_`+index+`" value="center" data-am-ucheck `+(data.title_style_align == 'center' ? 'checked' : '')+` /> 居中</label><label class="am-checkbox-inline"><input type="radio" name="content_title_style_align_`+index+`" value="right" data-am-ucheck `+(data.title_style_align == 'right' ? 'checked' : '')+` /> 居右</label></div>
|
||||
</div>`;
|
||||
html += `</div>`;
|
||||
|
||||
// 描述
|
||||
var desc_style_color = (data.desc_style_color || null) == null ? '' : 'background-color:'+data.desc_style_color+';border-color:'+data.desc_style_color+';';
|
||||
html += `<div class="am-form-group am-form-group-refreshing">
|
||||
<label>描述</label>
|
||||
<div class="am-input-group am-input-group-sm">
|
||||
<input type="text" placeholder="描述" name="content_desc_`+index+`" value="`+(data.desc || '')+`" class="am-form-field" />
|
||||
<input type="hidden" name="content_desc_style_color_`+index+`" value="`+(data.desc_style_color || '')+`" />
|
||||
<a href="javascript:;" class="am-input-group-label colorpicker-submit module-style-color-images-text-content-desc-style-color-`+index+`" data-position="fixed" data-input-tag=".module-style-color-images-text-content-desc-style-color-`+index+`" data-color-tag="input[name='content_desc_style_color_`+index+`']" data-color-style="background-color|border-color" style="`+desc_style_color+`">
|
||||
<img src="`+__attachment_host__+`/static/common/images/colorpicker.png" />
|
||||
</a>
|
||||
</div>`;
|
||||
|
||||
// 外边距
|
||||
html += `<div class="am-input-group am-input-group-sm group-border-width am-margin-top-xs">
|
||||
<input type="number" data-is-clearout="0" placeholder="外上" name="content_desc_style_margin_top_`+index+`" min="0" max="60" data-validation-message="描述外边距上最大60" value="`+(data.desc_style_margin_top || '')+`" class="am-form-field" />
|
||||
<input type="number" data-is-clearout="0" placeholder="外右" name="content_desc_style_margin_right_`+index+`" min="0" max="60" data-validation-message="描述外边距右最大60" value="`+(data.desc_style_margin_right || '')+`" class="am-form-field" />
|
||||
<input type="number" data-is-clearout="0" placeholder="外下" name="content_desc_style_margin_bottom_`+index+`" min="0" max="60" data-validation-message="描述外边距下最大60" value="`+(data.desc_style_margin_bottom || '')+`" class="am-form-field" />
|
||||
<input type="number" data-is-clearout="0" placeholder="外左" name="content_desc_style_margin_left_`+index+`" min="0" max="60" data-validation-message="描述外边距左最大60" value="`+(data.desc_style_margin_left || '')+`" class="am-form-field" />
|
||||
<span class="am-input-group-label">px</span>
|
||||
</div>`;
|
||||
|
||||
// 字体大小和左右居中
|
||||
html += `<div class="am-margin-top-xs am-nbfc">
|
||||
<div class="am-input-group am-input-group-sm am-fl group-input-font-size">
|
||||
<input type="number" data-is-clearout="0" placeholder="大小" name="content_desc_style_font_size_`+index+`" min="0" max="50" value="`+(data.desc_style_font_size || '')+`" class="am-form-field" />
|
||||
<span class="am-input-group-label">px</span>
|
||||
</div>
|
||||
<div class="am-fr group-text-align-style"><label class="am-checkbox-inline"><input type="radio" name="content_desc_style_align_`+index+`" value="left" data-am-ucheck `+(data.desc_style_align == 'left' ? 'checked' : '')+` /> 居左</label><label class="am-checkbox-inline"><input type="radio" name="content_desc_style_align_`+index+`" value="center" data-am-ucheck `+(data.desc_style_align == 'center' ? 'checked' : '')+` /> 居中</label><label class="am-checkbox-inline"><input type="radio" name="content_desc_style_align_`+index+`" value="right" data-am-ucheck `+(data.desc_style_align == 'right' ? 'checked' : '')+` /> 居右</label></div>
|
||||
</div>
|
||||
</div>`;
|
||||
html += `</div>`;
|
||||
return html;
|
||||
}
|
||||
|
||||
/**
|
||||
* 模块-标题关键字
|
||||
* @author Devil
|
||||
|
|
@ -2185,6 +2590,26 @@ $(function()
|
|||
$config.find('.config-many-images-container').html(html);
|
||||
break;
|
||||
|
||||
// 图文
|
||||
case 'images-text' :
|
||||
// 多图图片
|
||||
var html = '';
|
||||
if((json.data_list || null) != null && json.data_list.length > 0)
|
||||
{
|
||||
for(var i in json.data_list)
|
||||
{
|
||||
html += ModuleConfigImagesTextItemContentHtml(json.data_list[i]);
|
||||
}
|
||||
}
|
||||
$config.find('.config-images-text-container').html(html);
|
||||
// 展示模式默认空,必须要选择
|
||||
var images_text_show_style_arr = ['updown', 'leftright', 'rolling'];
|
||||
if(images_text_show_style_arr.indexOf(json.view_list_show_style) == -1)
|
||||
{
|
||||
json['view_list_show_style'] = '';
|
||||
}
|
||||
break;
|
||||
|
||||
// 视频
|
||||
case 'video' :
|
||||
// 视频地址
|
||||
|
|
@ -2264,14 +2689,31 @@ $(function()
|
|||
// 链接地址处理
|
||||
$config.find('.form-view-choice-container-content').html(ModuleConfigImagesToContentHtml(json.content_to_name || ''));
|
||||
break;
|
||||
|
||||
// 自定义html
|
||||
case 'custom' :
|
||||
json['custom'] = ((json['custom'] || null) == null) ? '' : CryptoJS.enc.Base64.parse(json.custom).toString(CryptoJS.enc.Utf8);
|
||||
break;
|
||||
|
||||
default :
|
||||
if($config.length == 0)
|
||||
{
|
||||
Prompt('模块未配置('+value+')');
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// 表单数据赋值
|
||||
FormDataFill(json, config_doc);
|
||||
|
||||
// 背景色组件处理
|
||||
ModuleColorpickerHandle($config);
|
||||
|
||||
// 单选框初始化
|
||||
$config.find('input[type="checkbox"], input[type="radio"]').uCheck();
|
||||
// 颜色选择器初始化
|
||||
ColorPickerInit();
|
||||
|
||||
// 更新选择组件
|
||||
$config.find('.chosen-select').trigger('chosen:updated');
|
||||
|
||||
|
|
@ -2918,8 +3360,8 @@ $(function()
|
|||
$(this).parent().remove();
|
||||
});
|
||||
|
||||
// 展示模式切换
|
||||
$(document).on('click', 'input[name="view_list_show_style"]', function()
|
||||
// 配置多图 - 展示模式切换
|
||||
$(document).on('click', '#offcanvas-module-config-many-images input[name="view_list_show_style"]', function()
|
||||
{
|
||||
$base_show_style_value_obj = $(this).parents('.config-view-show-style').find('input[name="view_list_show_style_value"]');
|
||||
switch($(this).val())
|
||||
|
|
@ -2969,6 +3411,83 @@ $(function()
|
|||
}
|
||||
});
|
||||
|
||||
|
||||
// 左侧配置 - 图文- 图文添加
|
||||
$offcanvas_config_images_text.on('click', '.config-images-text-item-add', function()
|
||||
{
|
||||
$offcanvas_config_images_text.find('.config-images-text-container').append(ModuleConfigImagesTextItemContentHtml());
|
||||
// 单选框初始化
|
||||
$offcanvas_config_images_text.find('input[type="checkbox"], input[type="radio"]').uCheck();
|
||||
// 颜色选择器初始化
|
||||
ColorPickerInit();
|
||||
});
|
||||
|
||||
// 配置图文 - 选择页面事件
|
||||
$offcanvas_config_images_text.on('click', '.form-view-choice-container-submit', function(e)
|
||||
{
|
||||
OffcanvasConfigPagesChoice($(this), e);
|
||||
});
|
||||
|
||||
// 左侧配置 - 配置图文 - 链接地址 - 移除
|
||||
$offcanvas_config_images_text.on('click', '.form-view-choice-container-active i.am-icon-close', function(e)
|
||||
{
|
||||
OffcanvasConfigPagesRemove($(this), e);
|
||||
});
|
||||
|
||||
// 左侧配置 - 配置图文 - 移除
|
||||
$(document).on('click', '#offcanvas-module-config-images-text .config-images-text-container .am-panel a.am-close', function()
|
||||
{
|
||||
$(this).parent().remove();
|
||||
});
|
||||
|
||||
// 配置图文 - 展示模式切换
|
||||
$(document).on('click', '#offcanvas-module-config-images-text input[name="view_list_show_style"]', function()
|
||||
{
|
||||
$base_show_style_value_obj = $(this).parents('.config-view-show-style').find('input[name="view_list_show_style_value"]');
|
||||
switch($(this).val())
|
||||
{
|
||||
// 滚动
|
||||
case 'rolling' :
|
||||
// 数据填充
|
||||
var json = ViewRollingShowStyleValueHandle($base_show_style_value_obj.val());
|
||||
if(json['item_margin'] <= 0)
|
||||
{
|
||||
json['item_margin'] = '';
|
||||
}
|
||||
FormDataFill(json, '#modal-module-rolling-config');
|
||||
|
||||
// 开关状态
|
||||
$modal_rolling_config.find('input[name="is_auto_play"]').bootstrapSwitch('state', json.is_auto_play);
|
||||
$modal_rolling_config.find('input[name="is_nav_dot"]').bootstrapSwitch('state', json.is_nav_dot);
|
||||
|
||||
// 开启弹窗
|
||||
$modal_rolling_config.modal({
|
||||
width: 260,
|
||||
height: 370,
|
||||
closeViaDimmer: false
|
||||
});
|
||||
break;
|
||||
|
||||
// 默认
|
||||
default :
|
||||
// 数据填充
|
||||
var json = ViewListShowStyleValueHandle($base_show_style_value_obj.val());
|
||||
if(json['style_margin'] <= 0)
|
||||
{
|
||||
json['style_margin'] = '';
|
||||
}
|
||||
FormDataFill(json, '#modal-module-list-config');
|
||||
|
||||
// 开启弹窗
|
||||
$modal_list_config.modal({
|
||||
width: 260,
|
||||
height: 225,
|
||||
closeViaDimmer: false
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
// 左侧配置 - 标题 - 右侧按钮 - 选择页面事件
|
||||
$offcanvas_config_title.on('click', '.form-view-choice-container-submit', function(e)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -0,0 +1,17 @@
|
|||
// 使用示例
|
||||
// // 加密 base64_encode
|
||||
// var str = CryptoJS.enc.Utf8.parse(value_str);
|
||||
// var base64 = CryptoJS.enc.Base64.stringify(str);
|
||||
// // 解密 base64_decode
|
||||
// var words = CryptoJS.enc.Base64.parse(value_str);
|
||||
// var val = words.toString(CryptoJS.enc.Utf8);
|
||||
// 处理方法
|
||||
var CryptoJS=CryptoJS||function(h,o){var f={},j=f.lib={},k=j.Base=function(){function a(){}return{extend:function(b){a.prototype=this;var c=new a;b&&c.mixIn(b);c.$super=this;return c},create:function(){var a=this.extend();a.init.apply(a,arguments);return a},init:function(){},mixIn:function(a){for(var c in a)a.hasOwnProperty(c)&&(this[c]=a[c]);a.hasOwnProperty("toString")&&(this.toString=a.toString)},clone:function(){return this.$super.extend(this)}}}(),i=j.WordArray=k.extend({init:function(a,b){a=
|
||||
this.words=a||[];this.sigBytes=b!=o?b:4*a.length},toString:function(a){return(a||p).stringify(this)},concat:function(a){var b=this.words,c=a.words,d=this.sigBytes,a=a.sigBytes;this.clamp();if(d%4)for(var e=0;e<a;e++)b[d+e>>>2]|=(c[e>>>2]>>>24-8*(e%4)&255)<<24-8*((d+e)%4);else if(65535<c.length)for(e=0;e<a;e+=4)b[d+e>>>2]=c[e>>>2];else b.push.apply(b,c);this.sigBytes+=a;return this},clamp:function(){var a=this.words,b=this.sigBytes;a[b>>>2]&=4294967295<<32-8*(b%4);a.length=h.ceil(b/4)},clone:function(){var a=
|
||||
k.clone.call(this);a.words=this.words.slice(0);return a},random:function(a){for(var b=[],c=0;c<a;c+=4)b.push(4294967296*h.random()|0);return i.create(b,a)}}),l=f.enc={},p=l.Hex={stringify:function(a){for(var b=a.words,a=a.sigBytes,c=[],d=0;d<a;d++){var e=b[d>>>2]>>>24-8*(d%4)&255;c.push((e>>>4).toString(16));c.push((e&15).toString(16))}return c.join("")},parse:function(a){for(var b=a.length,c=[],d=0;d<b;d+=2)c[d>>>3]|=parseInt(a.substr(d,2),16)<<24-4*(d%8);return i.create(c,b/2)}},n=l.Latin1={stringify:function(a){for(var b=
|
||||
a.words,a=a.sigBytes,c=[],d=0;d<a;d++)c.push(String.fromCharCode(b[d>>>2]>>>24-8*(d%4)&255));return c.join("")},parse:function(a){for(var b=a.length,c=[],d=0;d<b;d++)c[d>>>2]|=(a.charCodeAt(d)&255)<<24-8*(d%4);return i.create(c,b)}},q=l.Utf8={stringify:function(a){try{return decodeURIComponent(escape(n.stringify(a)))}catch(b){throw Error("Malformed UTF-8 data");}},parse:function(a){return n.parse(unescape(encodeURIComponent(a)))}},m=j.BufferedBlockAlgorithm=k.extend({reset:function(){this._data=i.create();
|
||||
this._nDataBytes=0},_append:function(a){"string"==typeof a&&(a=q.parse(a));this._data.concat(a);this._nDataBytes+=a.sigBytes},_process:function(a){var b=this._data,c=b.words,d=b.sigBytes,e=this.blockSize,f=d/(4*e),f=a?h.ceil(f):h.max((f|0)-this._minBufferSize,0),a=f*e,d=h.min(4*a,d);if(a){for(var g=0;g<a;g+=e)this._doProcessBlock(c,g);g=c.splice(0,a);b.sigBytes-=d}return i.create(g,d)},clone:function(){var a=k.clone.call(this);a._data=this._data.clone();return a},_minBufferSize:0});j.Hasher=m.extend({init:function(){this.reset()},
|
||||
reset:function(){m.reset.call(this);this._doReset()},update:function(a){this._append(a);this._process();return this},finalize:function(a){a&&this._append(a);this._doFinalize();return this._hash},clone:function(){var a=m.clone.call(this);a._hash=this._hash.clone();return a},blockSize:16,_createHelper:function(a){return function(b,c){return a.create(c).finalize(b)}},_createHmacHelper:function(a){return function(b,c){return r.HMAC.create(a,c).finalize(b)}}});var r=f.algo={};return f}(Math);
|
||||
|
||||
(function(){var h=CryptoJS,i=h.lib.WordArray;h.enc.Base64={stringify:function(b){var e=b.words,f=b.sigBytes,c=this._map;b.clamp();for(var b=[],a=0;a<f;a+=3)for(var d=(e[a>>>2]>>>24-8*(a%4)&255)<<16|(e[a+1>>>2]>>>24-8*((a+1)%4)&255)<<8|e[a+2>>>2]>>>24-8*((a+2)%4)&255,g=0;4>g&&a+0.75*g<f;g++)b.push(c.charAt(d>>>6*(3-g)&63));if(e=c.charAt(64))for(;b.length%4;)b.push(e);return b.join("")},parse:function(b){var b=b.replace(/\s/g,""),e=b.length,f=this._map,c=f.charAt(64);c&&(c=b.indexOf(c),-1!=c&&(e=c));
|
||||
for(var c=[],a=0,d=0;d<e;d++)if(d%4){var g=f.indexOf(b.charAt(d-1))<<2*(d%4),h=f.indexOf(b.charAt(d))>>>6-2*(d%4);c[a>>>2]|=(g|h)<<24-8*(a%4);a++}return i.create(c,a)},_map:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="}})();
|
||||
Loading…
Reference in New Issue