fastadmin/public/assets/js/backend/posts/sites.js

116 lines
5.2 KiB
JavaScript

define(['jquery', 'bootstrap', 'backend', 'table', 'form', 'template'], function ($, undefined, Backend, Table, Form, Template) {
var Controller = {
index: function () {
// 初始化表格参数配置
Table.api.init({
extend: {
index_url: 'posts/sites/index',
add_url: 'posts/sites/add',
edit_url: 'posts/sites/edit',
del_url: 'posts/sites/del',
multi_url: 'posts/sites/multi',
table: 'sites',
}
});
var table = $("#table");
// 初始化表格
table.bootstrapTable({
url: $.fn.bootstrapTable.defaults.extend.index_url,
pk: 'id',
sortName: 'id',
columns: [
[
{checkbox: true},
{field: 'id', title: __('Id')},
{field: 'username', title: __('User_id'), operate:false},
{field: 'name', title: __('name'),operate: 'LIKE %...%',placeholder: '关键字,模糊搜索',},
{field: 'domain', title: __('Domain'),operate: 'LIKE %...%',placeholder: '关键字,模糊搜索',},
{field: 'lang', title: __('Lang'), operate:false},
{field: 'status', title: __('Status'),searchList: {normal: __('Normal'), hidden: __('Hidden')}, formatter: Table.api.formatter.status},
{field: 'createtime', title: __('Createtime'), operate: 'BETWEEN', type: 'datetime', addclass: 'datetimepicker', data: 'data-date-format="YYYY-MM-DD"', formatter: Table.api.formatter.datetime},
{field: 'operate', title: __('Operate'), table: table, events: Table.api.events.operate, formatter: Table.api.formatter.operate}
]
]
});
// 为表格绑定事件
Table.api.bindevent(table);
},
add: function () {
Controller.api.bindevent();
},
edit: function () {
Controller.api.bindevent();
},
config: function(){
$.validator.config({
rules: {
domain: function(ele){
_value = $.trim(element.value.toString());
if (!_value.match(/^[A-Za-z0-9]+$/)) {
return __('Please enter a valid URL');
}
return $.ajax({
url: 'posts/sites/check_element_available',
type: 'POST',
data: {"domain": _value},
dataType: 'json'
});
},
url: function (element) {
_value = $.trim(element.value.toString());
if (!_value.match(/^[A-Za-z0-9-_]+\.[A-Za-z0-9-_\.]+$/)) {
return __('Please enter a valid URL');
}
return $.ajax({
url: 'posts/sites/check_element_available',
type: 'POST',
data: {"domain": _value},
dataType: 'json'
});
}
}
});
Controller.api.bindevent();
},
api: {
bindevent: function () {
$(document).on("click", ".fieldlist .btn-append", function () {
var rel = parseInt($(this).closest("dl").children('dd').length)-2;
$(this).closest("dl").attr("rel", rel);
$('<dd class="form-inline"><input type="text" name="custom['+ rel + '][field]" class="form-control" value="" size="20" /> <input type="text" name="custom[' + rel + '][value]" class="form-control" value="" size="50" /> <span class="btn btn-sm btn-danger btn-remove"><i class="fa fa-times"></i></span></dd>').insertBefore($(this).parent());
});
$(document).on("click", ".fieldlist dd .btn-remove", function () {
var that=this;
$(that).parent().remove();
return;
});
$(document).on('click', 'input[name*="row[lang]"]', function(e){
if($(this).val()=='zh-cn'){
$(this).prop('checked', true);
return false;
}
$('#extraLanguage').html('');
if($('input[name*="row[lang]"]:checked').length>1){
$('input[name*="row[lang]"]:checked').each(function(){
if($(this).val()!='zh-cn'){
var language = $(this).val();
var languageText = $(this).closest('label').text();
var html = Template('seotpl', {lang: language, langName: languageText});
$('#extraLanguage').append(html)
}
});
}
});
Form.api.bindevent($("form[role=form]"));
}
}
};
return Controller;
});