You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

471 lines
19 KiB
HTML

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<extend name="Public/base" />
<block name="body">
<link rel="stylesheet" href="__CSS__/watermark.css" type="text/css" />
<link rel="stylesheet" href="__CSS__/jquery.minicolors.css" type="text/css">
<link rel="stylesheet" href="__CSS__/nouislider.min.css" type="text/css">
<script type="text/javascript" src="__STATIC__/uploadify/jquery.uploadify.min.js"></script>
<div class="cf main-place top_nav_list navtab_list">
<h3 class="page_title">水印设置</h3>
<p class="description_text">针对图片上水印的显示进行基本配置</p>
</div>
<div class="tab-wrap">
<div class="position_tip">
<div class="tip_rows"><span></span><span></span><span></span></div>
<div class="tip_rows"><span></span><span class="current"><eq name="watermark.types" value="1"><i style="font-family:{:str_replace('.','',"'".$watermark['font']."'")};font-size:{$watermark.font_size}px;color:{$watermark.font_color};-webkit-filter:blur({-$watermark['quality']*5/100+5}px);-moz-filter:blur({-$watermark['quality']*5/100+5}px);-ms-filter:blur({-$watermark['quality']*5/100+5}px);filter:blur({-$watermark['quality']*5/100+5}px);progid:DXImageTransform.Microsoft.Blur(PixelRadius={-$watermark['quality']*5/100+5},MakeShadow=false)">{$watermark.font_text|default='----手游'}</i><else /><img src="<notempty name='watermark.icon'>{:get_cover($watermark['icon'],'path',0,false)}<else />__IMG__/icon_normal_picture.png</notempty>" height="70" width="90" style="opacity:{$watermark['transparency']/100};-webkit-filter:blur({-$watermark['quality']*5/100+5}px);-moz-filter:blur({-$watermark['quality']*5/100+5}px);-ms-filter:blur({-$watermark['quality']*5/100+5}px);filter:blur({-$watermark['quality']*5/100+5}px);progid:DXImageTransform.Microsoft.Blur(PixelRadius={-$watermark['quality']*5/100+5},MakeShadow=false)"></eq></span><span></span></div>
<div class="tip_rows"><span></span><span></span><span></span></div>
</div>
<div class="tab-content tabcon1711 tabcon17112">
<div id="tab1" class="tab-pane in tab1">
<form action="{:U('saveTool')}" method="post" class="form-horizontal watermarkform form_info_ml">
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td class="l noticeinfo">水印设置</td>
<td class="r table_radio">
<div class="position_water">
<div class="position_rows"><span>左上</span><span>中上</span><span>右上</span></div>
<div class="position_rows"><span>左中</span><span class="current">居中</span><span>右中</span></div>
<div class="position_rows"><span>左下</span><span>中下</span><span>右下</span></div>
</div>
<span class="notice-text position_text" style="margin-left: 342px;">针对图片上水印的显示进行基本配置</span>
<input type="hidden" id="position" name="config[position]" value="{$watermark['position']|default='1,1'}">
</td>
</tr>
<tr>
<td class="l noticeinfo">水印类型</td>
<td class="r table_radio">
<span class="form_radio">
<label>
<input type="radio" name="config[types]" value="0" onclick="dr_type(0)" checked> 图片
</label>
<label>
<input type="radio" name="config[types]" value="1" onclick="dr_type(1)"> 文字
</label>
</span>
</td>
</tr>
<tr class="dr_sy dr_sy_1" style="<neq name='watermark.types' value='1'>display:none;</neq>">
<td class="l noticeinfo">文字字体</td>
<td class="r table_radio">
<select name="config[font]">
<option value="1.ttf" selected="">字体1</option>
<option value="2.ttf">字体2</option>
<option value="3.ttf">字体3</option>
</select>
<span class="notice-text" style="margin-left: 256px;">自定义字体文件.config/font/</span>
</td>
</tr>
<tr class="dr_sy dr_sy_1" style="<neq name='watermark.types' value='1'>display:none;</neq>">
<td class="l noticeinfo">水印文字</td>
<td class="r table_radio">
<input name="config[font_text]" type="text" value="{$watermark.font_text}">
<span class="notice-text" style="margin-left: 256px;width: auto;">如果为中文先要在font目录中添加字体</span>
</td>
</tr>
<tr class="dr_sy dr_sy_1" style="<neq name='watermark.types' value='1'>display:none;</neq>">
<td class="l noticeinfo">水印文字大小</td>
<td class="r table_radio">
<input name="config[font_size]" type="text" value="{$watermark.font_size}">
<span class="notice-text" style="margin-left: 256px;width: auto;">字体大小单位px</span>
</td>
</tr>
<tr class="dr_sy dr_sy_1" style="<neq name='watermark.types' value='1'>display:none;</neq>">
<td class="l noticeinfo">水印文字颜色</td>
<td class="r table_radio">
<div class="minicolors minicolors-theme-bootstrap minicolors-position-bottom minicolors-position-left">
<input type="hidden" id="hue-demo" data-control="hue" data-defaultValue="{$watermark.font_color}" class="form-control demo minicolors-input" name="config[font_color]" value="{$watermark.font_color}" size="7">
<div class="minicolors-panel minicolors-slider-hue">
<div class="minicolors-slider minicolors-sprite">
<div class="minicolors-picker"></div>
</div>
<div class="minicolors-opacity-slider minicolors-sprite">
<div class="minicolors-picker"></div>
</div>
<div class="minicolors-grid minicolors-sprite">
<div class="minicolors-grid-inner"></div>
<div class="minicolors-picker">
<div></div>
</div>
</div>
</div>
</div>
</td>
</tr>
<tr class="dr_sy dr_sy_0" style="<neq name='watermark.types' value='0'>display:none;</neq>">
<td class="l noticeinfo">水印图片</td>
<td class="r table_radio">
<div class="select_img fl">
<div class="upload-img-box">
<notempty name="watermark['icon']">
<div class="upload-pre-item"><img src="{$watermark['icon']|get_cover='path'}"/></div>
<else />
<div class="upload-pre-item"><img src="__IMG__/icon_normal_picture.png"></div>
</notempty>
</div>
<input type="file" id="upload_picture_icon" >
<input type="hidden" name="config[icon]" id="cover_id_icon" value="{$watermark.icon}" />
<input type="hidden" name="config[path]" id="cover_id_icon_path" disabled value="<notempty name='watermark.icon'>{:get_cover($watermark['icon'],'path',0,false)}<else />__IMG__/icon_normal_picture.png</notempty>"/>
</div>
<span class="notice-text mg_t10" style="margin-left: 258px;">自定义水印,格式为.png</span>
</td>
</tr>
<tr class="dr_sy dr_sy_0" style="<neq name='watermark.types' value='0'>display:none;</neq>">
<td class="l noticeinfo">水印透明度</td>
<td class="r table_radio">
<div class="slider_st fl">
<div id="demo6_slider1" class="noUi-danger noUi-target noUi-ltr noUi-horizontal noUi-background" style="width: 443px;"></div>
<span id="demo6_slider1-span" class="bar-span">{$watermark.transparency|default=1}</span>
<input type="hidden" id="transparency" name="config[transparency]" value="{$watermark.transparency|default=1}" >
</div>
<span class="notice-text mg_t10">设置水印图标透明度,数值越大,图标越清晰</span>
</td>
</tr>
<tr class="dr_sy dr_sy_1 dr_sy_0">
<td class="l noticeinfo">水印质量</td>
<td class="r table_radio">
<div class="slider_st fl">
<div id="demo6_slider2" class="noUi-danger noUi-target noUi-ltr noUi-horizontal noUi-background" style="width: 443px;"></div>
<span id="demo6_slider2-span" class="bar-span">{$watermark.quality|default=1}</span>
<input type="hidden" id="quality" name="config[quality]" value="{$watermark.quality|default=1}" >
</div>
<span class="notice-text mg_t10" style="height:48px;line-height:48px;">设置添加水印后的图片质量,数值越大,图片越清晰</span>
</td>
</tr>
<tr>
<td class="l noticeinfo">水印显示状态</td>
<td class="r table_radio">
<span class="form_radio">
<label>
<input type="radio" name="status" value="1"> 开启
</label>
<label>
<input type="radio" name="status" value="0" checked> 关闭
</label>
</span>
</td>
</tr>
</tbody>
</table>
<input type="hidden" name="name" value="watermark">
<input type="submit" value="保存" target-form="watermarkform" class="submit_btn form_btn jsajaxpost mlspacing">
</form>
</div>
</div>
</div>
<div class="common_settings">
<span class="plus_icon"><span><img src="__IMG__/zwmimages/icon_jia.png"></span></span>
<form class="addShortcutIcon">
<input type="hidden" name="title" value="{$m_title}">
<input type="hidden" name="url" value="{$m_url}">
</form>
<a class="ajax-post add-butn <notempty name='commonset'>addSIsetted</notempty>" href="javascript:;" target-form="addShortcutIcon" url="{:U('Think/addShortcutIcon')}"><img src="__IMG__/zwmimages/icon_jia.png"><span><notempty name='commonset'>已添加<else />添加至常用设置</notempty></span></a>
</div>
</block>
<block name="script">
<script src="__JS__/jquery.minicolors.min.js" type="text/javascript"></script>
<script src="__JS__/nouislider.min.js" type="text/javascript"></script>
<script type="text/javascript">
Think.setValue('status',{$watermark_data['status']|default=0});
Think.setValue('config[types]',{$watermark['types']|default=0});
Think.setValue('config[font]',"{$watermark['font']|default='1.ttf'}");
//导航高亮
highlight_subnav('{:U('Tool/watermark')}');
$(function() {
//支持tab
showTab();
});
var imgurl = '__IMG__/';
$("#upload_picture_icon").uploadify({
"height" : 30,
"swf" : "__STATIC__/uploadify/uploadify.swf",
"fileObjName" : "download",
"buttonText" : "上传图标",
"uploader" : "{:U('File/uploadPicture',array('session_id'=>session_id()))}",
"width" : 120,
'removeTimeout' : 1,
'fileTypeExts' : '*.jpg; *.jpeg; *.png; *.gif;',
"onUploadSuccess" : upload_picture_icon{$field.name},
'onFallback' : function() {
alert('未检测到兼容版本的Flash.');
}
});
function upload_picture_icon{$field.name}(file, data){
var data = $.parseJSON(data);
var src = '';
if(data.status){
$("#cover_id_icon").val(data.id);
$("#cover_id_icon_path").val(data.path);
src = data.url || '__ROOT__' + data.path;
$("#cover_id_icon").parent().find('.upload-img-box').html(
'<div class="upload-pre-item"><img src="' + src + '"/></div>'
);
setwatrer($('input[name="config[types]"]:checked').val());
} else {
updateAlert(data.info,'tip_error');
setTimeout(function(){
$('#tip').find('.tipclose').click();
$('#top-alert').find('button').click();
$(that).removeClass('disabled').prop('disabled',false);
},1500);
}
}
$('.position_rows span').click(function(){
var that = $(this);
that.closest('.position_water').find('span').removeClass('current');
that.addClass('current');
var rowindex = that.closest('.position_rows').index();
var index = that.index();
$('#position').val(rowindex+","+index);
var tsc = $('.tip_rows span.current').html();
$('.tip_rows span').removeClass('current').html('');
$('.tip_rows').eq(rowindex).find('span').eq(index).addClass('current').html(tsc);
setwatrer($('input[name="config[types]"]:checked').val());
});
function setwatrer(type) {
var list = $('.dr_sy_' + type).find('input,select');
var tip = $('.tip_rows span.current');
if (type == 1) {tip.html('<i></i>');}else{tip.html('');}
var css = {};
var text = '';
$.each(list,function(i,n) {
var that = $(n);
var name = that.attr('name').replace('config[','').replace(']','');
var val = that.val();
switch(name) {
case 'font':css['font-family']="'"+(val.replace('.',''))+"'";break;
case 'font_text':text = val;break;
case 'font_size':css['font-size']=val+'px';break;
case 'font_color':css.color=val;break;
case 'quality':{
css['-webkit-filter']='blur('+(5-val*0.05)+'px)';
css['-moz-filter']='blur('+(5-val*0.05)+'px)';
css['-ms-filter']='blur('+(5-val*0.05)+'px)';
css['filter']='blur('+(5-val*0.05)+'px)';
css['filter']='progid:DXImageTransform.Microsoft.Blur(PixelRadius='+(5-val*0.05)+',MakeShadow=false)';
};break;
case 'path':text = val;break;
case 'transparency':css['opacity']=val/100;break;
}
});
if (type == 1) {
switch(tip.index()) {case 1:css['text-align']='center';break;case 2:css['text-align']='right';break;default:css['text-align']='left';}
tip.find('i').css(css).text(text);
} else {
tip.html('<img src="'+text+'" width="90" height="70">');
tip.find('img').css(css);
}
}
function dr_type(v) {
$('.dr_sy').hide();
$('.dr_sy_' + v).show();
setwatrer(v);
}
$(function(){
var wm = {$watermark['types']|default=0};
$('.jsajaxpost').on('click',function() {
var that = $(this);
if (that.attr('type')=='submit') {
if (that.hasClass('disabled')) {return false;}
that.addClass('disabled').attr('autocomplete','off').prop('disabled',true);
var form = $('.'+that.attr('target-form'));
$.ajax({
type:'post',
dataType:'json',
url:form.attr('action'),
data:form.serialize(),
success:function(data) {
if (data.status==1) {
updateAlert(data.info+',正在准备加水印');
setTimeout(function(){
updateAlert('添加中');
$.ajax({
type:'post',
dataType:'json',
url:'{:U("addWatermarkOnPic")}',
data:{},
success:function(data) {
if (data.status==1) {
updateAlert(data.info);
setTimeout(function(){
location.reload();
},1500);
} else {
updateAlert(data.info,'tip_error');
setTimeout(function(){
location.reload();
},1500);
}
},error:function() {
updateAlert('服务器故障,请稍候再试','tip_error');
setTimeout(function(){
location.reload();
},1500);
}
});
},1500);
}else{
updateAlert(data.info,'tip_error');
setTimeout(function(){
that.removeClass('disabled').prop('disabled',false);
$('#tip').find('.tipclose').click();
},1500);
}
},error:function() {
updateAlert('服务器故障,请稍候再试','tip_error');
setTimeout(function(){
location.reload();
},1500);
}
});
}
return false;
});
var position = [{$watermark['position']}];
var tsc = $('.tip_rows span.current').html();
$('.position_rows span').removeClass('current');
$('.tip_rows span').removeClass('current').html('');
$('.position_rows').eq(position[0]).find('span').eq(position[1]).addClass('current');
$('.tip_rows').eq(position[0]).find('span').eq(position[1]).addClass('current').html(tsc);
$("#hue-demo").minicolors({
control: $(this).attr('data-control') || 'hue',
defaultValue: $(this).attr('data-defaultValue') || '',
inline: $(this).attr('data-inline') === 'true',
letterCase: $(this).attr('data-letterCase') || 'lowercase',
opacity: $(this).attr('data-opacity'),
position: $(this).attr('data-position') || 'bottom left',
change: function(hex, opacity) {
if(!hex) return;
if(opacity) hex += ', ' + opacity;
if(typeof console === 'object') {
console.log(hex);
setwatrer($('input[name="config[types]"]:checked').val());
}
},
theme: 'bootstrap'
});
$('input[name="config[font_text]"],input[name="config[font_size]"],input[name="config[voffset]"],input[name="config[hoffset]"],select[name="config[font]"]').change(function(){
setwatrer($('input[name="config[types]"]:checked').val());
return false;
});
dr_type(wm);
// Store the locked state and slider values.
var lockedState = false,
lockedSlider = false,
lockedValues = [60, 80],
slider1 = document.getElementById('demo6_slider1'),
slider2 = document.getElementById('demo6_slider2'),
slider1Value = document.getElementById('demo6_slider1-span'),
slider2Value = document.getElementById('demo6_slider2-span');
// When the button is clicked, the locked
// state is inverted.
function crossUpdate(value, slider) {
// If the sliders aren't interlocked, don't
// cross-update.
if(!lockedState) return;
// Select whether to increase or decrease
// the other slider value.
var a = slider1 === slider ? 0 : 1,
b = a ? 0 : 1;
// Offset the slider value.
value -= lockedValues[b] - lockedValues[a];
// Set the value
slider.noUiSlider.set();
}
noUiSlider.create(slider1, {
start: {$watermark.transparency|default=0},
// Disable animation on value-setting,
// so the sliders respond immediately. value:{$watermark.transparency|default=1},
animate: false,
range: {
min: 1,
max: 100
}
});
noUiSlider.create(slider2, {
start: {$watermark.quality|default=0},
animate: false,
range: {
min: 1,
max: 100
}
});
slider1.noUiSlider.on('update', function(values, handle) {
slider1Value.innerHTML = parseInt(values[handle]);
$('#transparency').val($.trim(slider1Value.innerHTML));
setwatrer($('input[name="config[types]"]:checked').val());
});
slider2.noUiSlider.on('update', function(values, handle) {
slider2Value.innerHTML = parseInt(values[handle]);
$('#quality').val($.trim(slider2Value.innerHTML));
setwatrer($('input[name="config[types]"]:checked').val());
});
function setLockedValues() {
lockedValues = [
Number(slider1.noUiSlider.get()),
Number(slider2.noUiSlider.get())
];
}
slider1.noUiSlider.on('change', setLockedValues);
slider2.noUiSlider.on('change', setLockedValues);
slider1.noUiSlider.on('slide', function(values, handle) {
crossUpdate(values[handle], slider2);
});
slider2.noUiSlider.on('slide', function(values, handle) {
crossUpdate(values[handle], slider1);
});
});
</script>
</block>