Files

421 lines
26 KiB
HTML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{template "header.html"}
{php echo \Phpcmf\Service::L('Field')->get('select')->get_select_search_code();}
<form action="" class="form-horizontal" method="post" name="myform" id="myform">
{$form}
<div class="myfbody">
<div class="portlet bordered light ">
<div class="portlet-title tabbable-line">
<ul class="nav nav-tabs" style="float:left;">
<li class="{if $page==0}active{/if}">
<a href="#tab_0" data-toggle="tab" onclick="$('#dr_page').val('0')"> <i class="fa fa-cog"></i> {dr_lang('基本设置')} </a>
</li>
<li class="{if $page==3}active{/if}">
<a href="#tab_3" data-toggle="tab" onclick="$('#dr_page').val('3')"> <i class="fa fa-code"></i> {dr_lang('字段样式')} </a>
</li>
<li class="{if $page==1}active{/if}">
<a href="#tab_1" data-toggle="tab" onclick="$('#dr_page').val('1')"> <i class="fa fa-crop"></i> {dr_lang('数据验证')} </a>
</li>
<li class="{if $page==2}active{/if}">
<a href="#tab_2" data-toggle="tab" onclick="$('#dr_page').val('2')"> <i class="fa fa-user"></i> {dr_lang('字段权限')} </a>
</li>
</ul>
</div>
<div class="portlet-body">
<div class="tab-content">
<div class="tab-pane {if $page==0}active{/if}" id="tab_0">
<div class="form-body">
<div class="form-group">
<label class="col-md-2 control-label">{dr_lang('显示名称')}</label>
<div class="col-md-9">
<label><input class="form-control" type="text" name="data[name]" value="{htmlspecialchars((string)$data.name)}" id="dr_name" onblur="d_topinyin('fieldname','name');" /></label>
<span class="help-block" id="dr_name_tips">{dr_lang('为字段取个名字')}</span>
</div>
</div>
<div class="form-group">
<label class="col-md-2 control-label">{dr_lang('字段名称')}</label>
<div class="col-md-9">
<label><input class="form-control" type="text" name="data[fieldname]" value="{htmlspecialchars((string)$data.fieldname)}" {if $data.id}disabled{/if} id="dr_fieldname" /></label>
<span class="help-block" id="dr_fieldname_tips">{dr_lang('只能由小写字母、数字、下划线组成')}</span>
</div>
</div>
{if $ismain}
<input name="data[ismain]" type="hidden" value="1" />
{else}
<div class="form-group">
<label class="col-md-2 control-label">{dr_lang('是否主表')}</label>
<div class="col-md-9">
<div class="mt-radio-inline">
<label class="mt-radio mt-radio-outline"><input type="radio" id="iszb1" name="data[ismain]" value="0" {if $id} disabled{/if} {if !$data.ismain} checked{/if} /> {dr_lang('附表')} <span></span></label>
<label class="mt-radio mt-radio-outline"><input type="radio" id="iszb2" name="data[ismain]" value="1" {if $id} disabled{/if} {if $data.ismain} checked{/if} /> {dr_lang('主表')} <span></span></label>
</div>
<span class="help-block">{dr_lang('主表字段可用于列表循环或者搜索;附表只能用于内容页显示')}</span>
</div>
</div>
{/if}
<div class="form-group">
<label class="col-md-2 control-label">{dr_lang('字段类别')}</label>
<div class="col-md-9">
<label><select class="form-control bs-select" data-live-search="true" data-actions-box="true" {if $id && !$is_edit} readonly="readonly"{/if} id="dr_fieldtype" name="data[fieldtype]" onChange="show_field_option(this.value)">
<option value=""> -- </option>
{loop $ftype $t}
<option value="{$t.id}" {if $t.id==$data.fieldtype} selected="selected"{/if}> {$t.name}{$t.id} </option>
{/loop}
</select>
</label>
<label id="dr_loading" style="display:none">
&nbsp;&nbsp;&nbsp;&nbsp;
<img width="16" src="{THEME_PATH}assets/images/loading-2.gif">
</label>
</div>
</div>
</div>
<div class="form-body" id="dr_option">
</div>
</div>
<div class="tab-pane {if $page==1}active{/if}" id="tab_1">
<div class="form-body">
<div class="form-group">
<label class="col-md-2 control-label">{dr_lang('XSS过滤')}</label>
<div class="col-md-9">
<input type="checkbox" name="data[setting][validate][xss]" value="1" {if $data['setting']['validate']['xss']}checked{/if} data-on-text="{dr_lang('已开启')}" data-off-text="{dr_lang('已关闭')}" data-off-color="danger" data-on-color="success" class="make-switch" data-size="small">
<span class="help-block">{dr_lang('非法字符会被安全替换掉')}</span>
</div>
</div>
<div class="form-group">
<label class="col-md-2 control-label">{dr_lang('前端禁止修改')}</label>
<div class="col-md-9">
<input type="checkbox" name="data[setting][validate][isedit]" value="1" {if $data['setting']['validate']['isedit']}checked{/if} data-on-text="{dr_lang('已开启')}" data-off-text="{dr_lang('已关闭')}" data-on-color="success" data-off-color="danger" class="make-switch" data-size="small">
<span class="help-block">{dr_lang('前端用户提交之后将不能修改字段值,后台仍然可以修改值')}</span>
</div>
</div>
<div class="form-group dr_is_validate">
<label class="col-md-2 control-label">{dr_lang('内容验证必填')}</label>
<div class="col-md-9">
<div class="mt-radio-inline">
<label class="mt-radio mt-radio-outline"><input type="radio" name="data[setting][validate][required]" value="0" {if $data['setting']['validate']['required']==0}checked{/if} onclick="set_required(0)" /> {dr_lang('不验证')} <span></span></label>
<label class="mt-radio mt-radio-outline"><input type="radio" name="data[setting][validate][required]" value="1" {if $data['setting']['validate']['required']==1}checked{/if} onclick="set_required(1)" /> {dr_lang('验证')} <span></span></label>
</div>
<span class="help-block">{dr_lang('对提交内容进行必填验证(超管不进行验证)')}</span>
</div>
</div>
<div id="required" class="dr_is_validate" style="display:none">
<div class="form-group">
<label class="col-md-2 control-label">{dr_lang('正则验证')}</label>
<div class="col-md-9">
<div class="input-group ">
<input class="form-control" type="text" name="data[setting][validate][pattern]" value="{$data['setting']['validate']['pattern']}" >
<span class="input-group-btn">
<button class="btn blue" onclick="dr_iframe_show('{dr_lang('正则表达式')}', '{dr_url('api/test_pattern')}')" type="button">{dr_lang('测试')}</button>
</span>
</div>
<span class="help-block">{dr_lang('例如数字正则表达式格式:/^[0-9]+$/')}</span>
</div>
</div>
<div class="form-group">
<label class="col-md-2 control-label">{dr_lang('验证提示')}</label>
<div class="col-md-9">
<input class="form-control" type="text" name="data[setting][validate][errortips]" value="{htmlspecialchars((string)$data['setting']['validate']['errortips'])}" id="dr_errortips" />
<span class="help-block">{dr_lang('当字段校验未通过时的提示信息,如“标题必须在80字以内”等等')}</span>
</div>
</div>
</div>
<div class="form-group">
<label class="col-md-2 control-label">{dr_lang('校验函数/方法')}</label>
<div class="col-md-9">
<label><input class="form-control input-large"type="text" name="data[setting][validate][check]" value="{htmlspecialchars((string)$data['setting']['validate']['check'])}" id="dr_check"> </label>
<label><a class="btn btn-sm blue" href="javascript:dr_test_call('dr_check');"> {dr_lang('检测')} </a></label>
<span class="help-block"> <a href="javascript:dr_help('601');"> {dr_lang('此功能需要有PHP编程经验,了解函数的定义')}</a> </span>
</div>
</div>
<div class="form-group">
<label class="col-md-2 control-label">{dr_lang('过滤函数/方法')}</label>
<div class="col-md-9">
<label><input class="form-control input-large"type="text" name="data[setting][validate][filter]" value="{htmlspecialchars((string)$data['setting']['validate']['filter'])}" id="dr_filter"> </label>
<label><a class="btn btn-sm blue" href="javascript:dr_test_call('dr_filter');"> {dr_lang('检测')} </a></label>
<span class="help-block"> <a href="javascript:dr_help('602');"> {dr_lang('此功能需要有PHP编程经验,了解函数的定义')}</a> </span>
</div>
</div>
</div>
</div>
<div class="tab-pane {if $page==3}active{/if}" id="tab_3">
<div class="form-body">
<div class="form-body" id="dr_css">
</div>
<div class="form-group">
<label class="col-md-2 control-label">{dr_lang('字段提示信息')}</label>
<div class="col-md-9">
<input class="form-control" type="text" name="data[setting][validate][tips]" value="{htmlspecialchars((string)$data['setting']['validate']['tips'])}" />
<span class="help-block">{dr_lang('对字段简短的提示,来说明这个字段是用来干什么的')}</span>
</div>
</div>
<div class="form-group">
<label class="col-md-2 control-label">{dr_lang('Css样式表')}</label>
<div class="col-md-9">
<input class="form-control" type="text" name="data[setting][option][css]" value="{htmlspecialchars((string)$data['setting']['option']['css'])}" />
<span class="help-block">{dr_lang('[不建议使用] Text类型字段可用,对字段进行样式控制,使用开发者自定义的css样式')}</span>
</div>
</div>
<div class="form-group">
<label class="col-md-2 control-label">{dr_lang('表单附加属性')}</label>
<div class="col-md-9">
<textarea class="form-control" style="height:120px" name="data[setting][validate][formattr]">{$data['setting']['validate']['formattr']}</textarea>
<span class="help-block">{dr_lang('[不建议使用] Text类型字段可用,可以通过此处加入js事件、ajax验证、css等')}</span>
</div>
</div>
</div>
</div>
<div class="tab-pane {if $page==2}active{/if}" id="tab_2">
<div class="form-body">
<div class="form-group">
<label class="col-md-2 control-label">{dr_lang('禁止使用')}</label>
<div class="col-md-9">
<input type="checkbox" name="data[disabled]" value="1" {if $data['disabled']}checked{/if} data-on-text="{dr_lang('已禁止')}" data-off-text="{dr_lang('已开放')}" data-on-color="success" data-off-color="danger" class="make-switch" data-size="small">
</div>
</div>
<div class="form-group">
<label class="col-md-2 control-label">{dr_lang('显示位置')}</label>
<div class="col-md-9">
<div class="mt-radio-inline">
<label class="mt-radio mt-radio-outline"><input type="radio" name="data[setting][is_right]" value="0" {if !$data['setting']['is_right']}checked{/if} /> {dr_lang('默认')} <span></span></label>
<label class="mt-radio mt-radio-outline"><input type="radio" name="data[setting][is_right]" value="1" {if 1==$data['setting']['is_right']}checked{/if} /> {dr_lang('右侧')} <span></span></label>
<label class="mt-radio mt-radio-outline"><input type="radio" name="data[setting][is_right]" value="2" {if 2==$data['setting']['is_right']}checked{/if} /> {dr_lang('手动')} <span></span></label>
</div>
<span class="help-block">{dr_lang('此功能仅支持模块内容字段使用,选择“右侧”时字段显示在右侧部分; 当选择"手动"时,需要开发者手动调用')}
<?php echo '{';?>$diyfield}
</span>
</div>
</div>
<div class="form-group">
<label class="col-md-2 control-label">{dr_lang('后台不显示该字段')}</label>
<div class="col-md-9">
<label style="min-width: 200px">
<select class="form-control bs-select" name="data[setting][show_admin][]" multiple data-actions-box="true">
{loop $role $t}
{if $t.id>1}
<option {if dr_in_array($t.id, (array)$data.setting.show_admin)} selected{/if} value="{$t.id}">{dr_lang($t.name)}</option>
{/if}
{/loop}
</select>
</label>
<span class="help-block">{dr_lang('后台发布内容时该角色将不会看到这个字段')}</span>
</div>
</div>
<div class="form-group ">
<label class="col-md-2 control-label">{dr_lang('前端不显示该字段')}</label>
<div class="col-md-9">
<label style="min-width: 200px">
<select class="form-control bs-select" name="data[setting][show_member][]" multiple data-actions-box="true">
<option {if dr_in_array(0, (array)$data.setting.show_member)} selected{/if} value="0">{dr_lang('游客')}</option>
{list action=cache name=MEMBER.group}
<option {if dr_in_array($t.id, (array)$data.setting.show_member)} selected{/if} value="{$t.id}">{dr_lang($t.name)}</option>
{/list}
</select>
</label>
<span class="help-block">{dr_lang('前端发布内容时该会员组将不会看到这个字段,如果“前端显示”关闭了此功能就无效')}</span>
</div>
</div>
<div class="form-group">
<label class="col-md-2 control-label">{dr_lang('前端显示')}</label>
<div class="col-md-9">
<input type="checkbox" name="data[ismember]" value="1" {if $data['ismember']}checked{/if} data-on-text="{dr_lang('已显示')}" data-off-text="{dr_lang('已隐藏')}" data-on-color="success" data-off-color="danger" class="make-switch" data-size="small">
<span class="help-block">{dr_lang('前端发布内容时,前端表单或者会员中心控制是否显示它')}</span>
</div>
</div>
{if $issearch}
<div class="form-group">
<label class="col-md-2 control-label">{dr_lang('category_search_field标签')}</label>
<div class="col-md-9">
<input type="checkbox" name="data[issearch]" value="1" {if $data['issearch']}checked{/if} data-on-text="{dr_lang('已开启')}" data-off-text="{dr_lang('已关闭')}" data-on-color="success" data-off-color="danger" class="make-switch" data-size="small">
<span class="help-block">{dr_lang('只针对栏目模型字段搜索时,category_search_field标签使用,只支持Select、Radio、Checkbox')}</span>
</div>
</div>
{/if}
</div>
</div>
</div>
</div>
</div>
</div>
<div class="portlet-body form myfooter">
<div class="form-actions text-center">
<label><button type="button" onclick="dr_ajax_submit3('{dr_now_url()}&page='+$('#dr_page').val(), 'myform', '2000', '')" class="btn blue"> <i class="fa fa-save"></i> {dr_lang('保存')}</button></label>
<label><button type="button" onclick="dr_ajax_submit3('{dr_now_url()}&page='+$('#dr_page').val(), 'myform', '2000', '{dr_url('field/index', ['rname' => $rname, 'rid' => $rid])}')" class="btn green"> <i class="fa fa-mail-reply-all"></i> {dr_lang('保存并返回')}</button></label>
</div>
</div>
</form>
<script type="text/javascript">
$(function() {
set_required({intval($data['setting']['validate']['required'])});
$("#dr_loading").show();
$.ajax({type: "GET",dataType:"json", url: '{dr_url('api/field')}&rand='+Math.random(),
data: {type:'{$data['fieldtype']}', relatedid:'{$rid}', relatedname:'{$rname}', app:'{$namespace}', id:{intval($data.id)}},
success: function(data) {
$('#dr_css').html(data.style);
$('#dr_option').html(data.option);
$("#dr_loading").hide();
App.init();
},
error: function(HttpRequest, ajaxOptions, thrownError) {
dr_ajax_alert_error(HttpRequest, this, thrownError);
}
});
});
function dr_ajax_submit3(url, form, time, go) {
var loading = layer.load(2, {
shade: [0.3,'#fff'], //0.1透明度的白色背景
time: 100000000
});
$.ajax({
type: "POST",
dataType: "json",
url: url,
data: $("#"+form).serialize(),
success: function(json) {
layer.close(loading);
// token 更新
if (json.token) {
var token = json.token;
$("#"+form+" input[name='"+token.name+"']").val(token.value);
}
if (json.code < 0) {
layer.confirm(
json.msg,
{
icon: 3,
shade: 0,
title: lang['ts'],
btn: ['{dr_lang("仍然创建")}', '{dr_lang("变更名字")}']
}, function(index) {
dr_ajax_submit3(url+"&is_op_add=1", form, time, go);
});
} else if (json.code > 0) {
dr_cmf_tips(json.code, json.msg, json.data.time);
if (time) {
var gourl = url;
if (go != '' && go != undefined && go != 'undefined') {
gourl = go;
} else if (json.data.url) {
gourl = json.data.url;
}
setTimeout("window.location.href = '"+gourl+"'", time);
}
dr_sync_cache(0); // 自动更新缓存
} else {
dr_cmf_tips(0, json.msg, json.data.time);
if (json.data.field) {
$('#'+form+' #dr_row_'+json.data.field).addClass('has-error');
$('#'+form+' #dr_'+json.data.field).focus();
}
}
},
error: function(HttpRequest, ajaxOptions, thrownError) {
dr_ajax_alert_error(HttpRequest, this, thrownError);
}
});
}
function show_field_option(type) {
{if $id}
var ftype = '{$data.fieldtype}';
if (ftype != type) {
$.ajax({type: "GET",dataType:"json", url: '{dr_url("field/type_edit")}&my='+ftype+'&to='+type,
success: function(json) {
if (json.code==1) {
$("#dr_loading").show();
$.ajax({type: "GET",dataType:"json", url: '{dr_url('api/field')}&rand='+Math.random(),
data: {type:type, relatedid:'{$rid}', relatedname:'{$rname}', app:'{$namespace}', id:{intval($data.id)}},
success: function(data) {
$('#dr_css').html(data.style);
$('#dr_option').html(data.option);
$("#dr_loading").hide();
App.init();
},
error: function(HttpRequest, ajaxOptions, thrownError) {
dr_ajax_alert_error(HttpRequest, this, thrownError);
}
});
} else {
layer.confirm(
json.msg,
{
icon: 3,
shade: 0,
title: lang['ts'],
btn: [lang['ok'], lang['esc']]
}, function(index) {
$("#dr_loading").show();
$.ajax({type: "GET",dataType:"json", url: '{dr_url('api/field')}&rand='+Math.random(),
data: {type:type, relatedid:'{$rid}', relatedname:'{$rname}', app:'{$namespace}', id:{intval($data.id)}},
success: function(data) {
$('#dr_css').html(data.style);
$('#dr_option').html(data.option);
$("#dr_loading").hide();
App.init();
},
error: function(HttpRequest, ajaxOptions, thrownError) {
dr_ajax_alert_error(HttpRequest, this, thrownError);
}
});
});
}
},
error: function(HttpRequest, ajaxOptions, thrownError) {
dr_ajax_alert_error(HttpRequest, this, thrownError);
}
});
}
{else}
$("#dr_loading").show();
$.ajax({type: "GET",dataType:"json", url: '{dr_url('api/field')}&rand='+Math.random(),
data: {type:type, relatedid:'{$rid}', relatedname:'{$rname}', app:'{$namespace}', id:{intval($data.id)}},
success: function(data) {
$('#dr_css').html(data.style);
$('#dr_option').html(data.option);
$("#dr_loading").hide();
App.init();
},
error: function(HttpRequest, ajaxOptions, thrownError) {
dr_ajax_alert_error(HttpRequest, this, thrownError);
}
});
{/if}
}
function set_required(id) {
if (!id) {
$('#required').hide();
} else {
$('#required').show();
}
}
function dr_test_call(value) {
$.ajax({type: "GET",dataType:"json", url: "{dr_url('api/field_call')}&name="+$('#'+value).val(),
success: function(json) {
dr_tips(json.code, json.msg);
},
error: function(HttpRequest, ajaxOptions, thrownError) {
dr_ajax_alert_error(HttpRequest, this, thrownError);
}
});
}
</script>
{template "footer.html"}