You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
577 lines
18 KiB
577 lines
18 KiB
<?php
|
|
|
|
defined('IN_IA') or exit('Access Denied');
|
|
|
|
if (defined('IN_MOBILE')) {
|
|
load()->app('tpl');
|
|
} else {
|
|
load()->web('tpl');
|
|
}
|
|
|
|
function tpl_form_field_date($name, $value = '', $withtime = false) {
|
|
return _tpl_form_field_date($name, $value, $withtime);
|
|
}
|
|
|
|
function tpl_form_field_clock($name, $value = '') {
|
|
$s = '';
|
|
if (!defined('TPL_INIT_CLOCK_TIME')) {
|
|
$s .= '
|
|
<script type="text/javascript">
|
|
require(["clockpicker"], function($){
|
|
$(function(){
|
|
$(".clockpicker").clockpicker({
|
|
autoclose: true
|
|
});
|
|
});
|
|
});
|
|
</script>
|
|
';
|
|
define('TPL_INIT_CLOCK_TIME', 1);
|
|
}
|
|
$time = date('H:i');
|
|
if (!empty($value)) {
|
|
if (!strexists($value, ':')) {
|
|
$time = date('H:i', $value);
|
|
} else {
|
|
$time = $value;
|
|
}
|
|
}
|
|
$s .= ' <div class="input-group clockpicker">
|
|
<span class="input-group-addon"><i class="fa fa-clock-o"></i></span>
|
|
<input type="text" name="' . $name . '" value="' . $time . '" class="form-control">
|
|
</div>';
|
|
|
|
return $s;
|
|
}
|
|
|
|
|
|
function tpl_form_field_daterange($name, $value = array(), $time = false, $clear = true) {
|
|
$s = '';
|
|
|
|
if (empty($time) && !defined('TPL_INIT_DATERANGE_DATE')) {
|
|
$s = '
|
|
<script type="text/javascript">
|
|
require(["daterangepicker"], function(){
|
|
$(function(){
|
|
$(".daterange.daterange-date").each(function(){
|
|
var elm = this;
|
|
$(this).daterangepicker({
|
|
startDate: $(elm).prev().prev().val() || moment("不限", "Y"),
|
|
endDate: $(elm).prev().val() || moment("不限", "Y"),
|
|
format: "YYYY-MM-DD",
|
|
clear: '. $clear .'
|
|
}, function(start, end){
|
|
start = start.toDateStr().indexOf("0000-01-01") != -1 ? "" : start.toDateStr();
|
|
end = end.toDateStr().indexOf("0000-01-01") != -1 ? "" : end.toDateStr();
|
|
var html = (start == "" ? "不限时间" : start) + (start == "" && end === "" ? "" : (" 至" + end))
|
|
$(elm).find(".date-title").html(html);
|
|
$(elm).prev().prev().val(start);
|
|
$(elm).prev().val(end);
|
|
});
|
|
});
|
|
});
|
|
});
|
|
</script>
|
|
';
|
|
define('TPL_INIT_DATERANGE_DATE', true);
|
|
}
|
|
|
|
if (!empty($time) && !defined('TPL_INIT_DATERANGE_TIME')) {
|
|
$s = '
|
|
<script type="text/javascript">
|
|
require(["daterangepicker"], function(){
|
|
$(function(){
|
|
$(".daterange.daterange-time").each(function(){
|
|
var elm = this;
|
|
$(this).daterangepicker({
|
|
startDate: $(elm).prev().prev().val() || moment("不限", "Y"),
|
|
endDate: $(elm).prev().val() || moment("不限", "Y"),
|
|
format: "YYYY-MM-DD HH:mm",
|
|
timePicker: true,
|
|
timePicker12Hour : false,
|
|
timePickerIncrement: 1,
|
|
minuteStep: 1,
|
|
clear: '. $clear .'
|
|
}, function(start, end){
|
|
start = start.toDateStr().indexOf("0000-01-01") != -1 ? "" : start.toDateTimeStr();
|
|
end = end.toDateStr().indexOf("0000-01-01") != -1 ? "" : end.toDateTimeStr();
|
|
var html = (start == "" ? "不限时间" : start) + (start == "" && end === "" ? "" : (" 至" + end))
|
|
$(elm).find(".date-title").html(html);
|
|
$(elm).prev().prev().val(start);
|
|
$(elm).prev().val(end);
|
|
});
|
|
});
|
|
});
|
|
});
|
|
</script>
|
|
';
|
|
define('TPL_INIT_DATERANGE_TIME', true);
|
|
}
|
|
if (!empty($value['starttime']) || !empty($value['start'])) {
|
|
if ($value['start'] && strtotime($value['start'])) {
|
|
$value['starttime'] = empty($time) ? date('Y-m-d', strtotime($value['start'])) : date('Y-m-d H:i', strtotime($value['start']));
|
|
}
|
|
$value['starttime'] = empty($value['starttime']) ? '' : $value['starttime'];
|
|
} else {
|
|
$value['starttime'] = '';
|
|
}
|
|
|
|
if (!empty($value['endtime']) || !empty($value['end'])) {
|
|
if ($value['end'] && strtotime($value['end'])) {
|
|
$value['endtime'] = empty($time) ? date('Y-m-d', strtotime($value['end'])) : date('Y-m-d H:i', strtotime($value['end']));
|
|
}
|
|
$value['endtime'] = empty($value['endtime']) ? $value['starttime'] : $value['endtime'];
|
|
} else {
|
|
$value['endtime'] = '';
|
|
}
|
|
$s .= '
|
|
<input name="' . $name . '[start]' . '" type="hidden" value="' . $value['starttime'] . '" />
|
|
<input name="' . $name . '[end]' . '" type="hidden" value="' . $value['endtime'] . '" />
|
|
<button class="btn btn-default daterange ' . (!empty($time) ? 'daterange-time' : 'daterange-date') . '" type="button"><span class="date-title">' .
|
|
($value['starttime'] == "" ? "不限时间" : $value['starttime']) . ($value['starttime'] == "" && $value['endtime'] === "" ? "" : (" 至" . $value['endtime'])) . '</span> <i class="fa fa-calendar"></i></button>
|
|
';
|
|
|
|
return $s;
|
|
}
|
|
|
|
|
|
function tpl_form_field_calendar($name, $values = array()) {
|
|
$html = '';
|
|
if (!defined('TPL_INIT_CALENDAR')) {
|
|
$html .= '
|
|
<script type="text/javascript">
|
|
function handlerCalendar(elm) {
|
|
require(["moment"], function(moment){
|
|
var tpl = $(elm).parent().parent();
|
|
var year = tpl.find("select.tpl-year").val();
|
|
var month = tpl.find("select.tpl-month").val();
|
|
var day = tpl.find("select.tpl-day");
|
|
day[0].options.length = 1;
|
|
if(year && month) {
|
|
var date = moment(year + "-" + month, "YYYY-M");
|
|
var days = date.daysInMonth();
|
|
for(var i = 1; i <= days; i++) {
|
|
var opt = new Option(i, i);
|
|
day[0].options.add(opt);
|
|
}
|
|
if(day.attr("data-value")!=""){
|
|
day.val(day.attr("data-value"));
|
|
} else {
|
|
day[0].options[0].selected = "selected";
|
|
}
|
|
}
|
|
if($("select").niceSelect) {
|
|
$("select").niceSelect("update");
|
|
}
|
|
});
|
|
}
|
|
require([""], function(){
|
|
$(".tpl-calendar").each(function(){
|
|
handlerCalendar($(this).find("select.tpl-year")[0]);
|
|
});
|
|
});
|
|
</script>';
|
|
define('TPL_INIT_CALENDAR', true);
|
|
}
|
|
|
|
if (empty($values) || !is_array($values)) {
|
|
$values = array(0, 0, 0);
|
|
}
|
|
$values['year'] = intval($values['year']);
|
|
$values['month'] = intval($values['month']);
|
|
$values['day'] = intval($values['day']);
|
|
|
|
if (empty($values['year'])) {
|
|
$values['year'] = '1980';
|
|
}
|
|
$year = array(date('Y'), '1914');
|
|
$html .= '<div class="row row-fix tpl-calendar">
|
|
<div class="col-xs-12 col-sm-4 col-md-4 col-lg-4">
|
|
<select name="' . $name . '[year]" onchange="handlerCalendar(this)" class="form-control tpl-year">
|
|
<option value="">年</option>';
|
|
for ($i = $year[1]; $i <= $year[0]; ++$i) {
|
|
$html .= '<option value="' . $i . '"' . ($i == $values['year'] ? ' selected="selected"' : '') . '>' . $i . '</option>';
|
|
}
|
|
$html .= ' </select>
|
|
</div>
|
|
<div class="col-xs-12 col-sm-4 col-md-4 col-lg-4">
|
|
<select name="' . $name . '[month]" onchange="handlerCalendar(this)" class="form-control tpl-month">
|
|
<option value="">月</option>';
|
|
for ($i = 1; $i <= 12; ++$i) {
|
|
$html .= '<option value="' . $i . '"' . ($i == $values['month'] ? ' selected="selected"' : '') . '>' . $i . '</option>';
|
|
}
|
|
$html .= ' </select>
|
|
</div>
|
|
<div class="col-xs-12 col-sm-4 col-md-4 col-lg-4">
|
|
<select name="' . $name . '[day]" data-value="' . $values['day'] . '" class="form-control tpl-day">
|
|
<option value="0">日</option>
|
|
</select>
|
|
</div>
|
|
</div>';
|
|
|
|
return $html;
|
|
}
|
|
|
|
|
|
function tpl_form_field_district($name, $values = array()) {
|
|
$html = '';
|
|
if (!defined('TPL_INIT_DISTRICT')) {
|
|
$html .= '
|
|
<script type="text/javascript">
|
|
require(["district"], function(dis){
|
|
$(".tpl-district-container").each(function(){
|
|
var elms = {};
|
|
elms.province = $(this).find(".tpl-province")[0];
|
|
elms.city = $(this).find(".tpl-city")[0];
|
|
elms.district = $(this).find(".tpl-district")[0];
|
|
var vals = {};
|
|
vals.province = $(elms.province).attr("data-value");
|
|
vals.city = $(elms.city).attr("data-value");
|
|
vals.district = $(elms.district).attr("data-value");
|
|
dis.render(elms, vals, {withTitle: true});
|
|
});
|
|
});
|
|
</script>';
|
|
define('TPL_INIT_DISTRICT', true);
|
|
}
|
|
if (empty($values) || !is_array($values)) {
|
|
$values = array('province' => '', 'city' => '', 'district' => '');
|
|
}
|
|
if (empty($values['province'])) {
|
|
$values['province'] = '';
|
|
}
|
|
if (empty($values['city'])) {
|
|
$values['city'] = '';
|
|
}
|
|
if (empty($values['district'])) {
|
|
$values['district'] = '';
|
|
}
|
|
$html .= '
|
|
<div class="row row-fix tpl-district-container">
|
|
<div class="col-xs-12 col-sm-4 col-md-4 col-lg-4">
|
|
<select name="' . $name . '[province]" data-value="' . $values['province'] . '" class="form-control tpl-province">
|
|
</select>
|
|
</div>
|
|
<div class="col-xs-12 col-sm-4 col-md-4 col-lg-4">
|
|
<select name="' . $name . '[city]" data-value="' . $values['city'] . '" class="form-control tpl-city">
|
|
</select>
|
|
</div>
|
|
<div class="col-xs-12 col-sm-4 col-md-4 col-lg-4">
|
|
<select name="' . $name . '[district]" data-value="' . $values['district'] . '" class="form-control tpl-district">
|
|
</select>
|
|
</div>
|
|
</div>';
|
|
|
|
return $html;
|
|
}
|
|
|
|
|
|
function tpl_form_field_category_2level($name, $parents, $children, $parentid, $childid) {
|
|
$html = '
|
|
<script type="text/javascript">
|
|
window._' . $name . ' = ' . json_encode($children) . ';
|
|
</script>';
|
|
if (!defined('TPL_INIT_CATEGORY')) {
|
|
$html .= '
|
|
<script type="text/javascript">
|
|
function renderCategory(obj, name){
|
|
var index = obj.options[obj.selectedIndex].value;
|
|
require([\'jquery\', \'util\'], function($, u){
|
|
$selectChild = $(\'#\'+name+\'_child\');
|
|
var html = \'<option value="0">请选择二级分类</option>\';
|
|
if (!window[\'_\'+name] || !window[\'_\'+name][index]) {
|
|
$selectChild.html(html);
|
|
return false;
|
|
}
|
|
for(var i=0; i< window[\'_\'+name][index].length; i++){
|
|
html += \'<option value="\'+window[\'_\'+name][index][i][\'id\']+\'">\'+window[\'_\'+name][index][i][\'name\']+\'</option>\';
|
|
}
|
|
$selectChild.html(html);
|
|
if($("select").niceSelect) {
|
|
$("select").niceSelect("update");
|
|
}
|
|
});
|
|
}
|
|
</script>
|
|
';
|
|
define('TPL_INIT_CATEGORY', true);
|
|
}
|
|
|
|
$html .=
|
|
'<div class="row row-fix tpl-category-container">
|
|
<div class="col-xs-12 col-sm-6 col-md-6 col-lg-6">
|
|
<select class="form-control tpl-category-parent we7-select" id="' . $name . '_parent" name="' . $name . '[parentid]" onchange="renderCategory(this,\'' . $name . '\')">
|
|
<option value="0">请选择一级分类</option>';
|
|
$ops = '';
|
|
if (!empty($parents)) {
|
|
foreach ($parents as $row) {
|
|
$html .= '
|
|
<option value="' . $row['id'] . '" ' . (($row['id'] == $parentid) ? 'selected="selected"' : '') . '>' . $row['name'] . '</option>';
|
|
}
|
|
}
|
|
|
|
$html .= '
|
|
</select>
|
|
</div>
|
|
<div class="col-xs-12 col-sm-6 col-md-6 col-lg-6">
|
|
<select class="form-control tpl-category-child we7-select" id="' . $name . '_child" name="' . $name . '[childid]">
|
|
<option value="0">请选择二级分类</option>';
|
|
if (!empty($parentid) && !empty($children[$parentid])) {
|
|
foreach ($children[$parentid] as $row) {
|
|
$html .= '
|
|
<option value="' . $row['id'] . '"' . (($row['id'] == $childid) ? 'selected="selected"' : '') . '>' . $row['name'] . '</option>';
|
|
}
|
|
}
|
|
$html .= '
|
|
</select>
|
|
</div>
|
|
</div>
|
|
';
|
|
|
|
return $html;
|
|
}
|
|
|
|
|
|
function tpl_form_field_industry($name, $pvalue = '', $cvalue = '', $parentid = 'industry_1', $childid = 'industry_2') {
|
|
$html = '
|
|
<div class="row row-fix">
|
|
<div class="col-sm-4">
|
|
<select name="' . $name . '[parent]" id="' . $parentid . '" class="form-control" value="' . $pvalue . '"></select>
|
|
</div>
|
|
<div class="col-sm-4">
|
|
<select name="' . $name . '[child]" id="' . $childid . '" class="form-control" value="' . $cvalue . '"></select>
|
|
</div>
|
|
<script type="text/javascript">
|
|
require([\'industry\'], function(industry){
|
|
industry.init("' . $parentid . '","' . $childid . '");
|
|
});
|
|
</script>
|
|
</div>';
|
|
|
|
return $html;
|
|
}
|
|
|
|
|
|
function tpl_form_field_coordinate($field, $value = array()) {
|
|
$s = '';
|
|
if (!defined('TPL_INIT_COORDINATE')) {
|
|
$s .= '<script type="text/javascript" src="https://api.map.baidu.com/api?v=2.0&ak=F51571495f717ff1194de02366bb8da9&s=1"></script><script type="text/javascript">
|
|
function showCoordinate(elm) {
|
|
require(["util"], function(util){
|
|
var val = {};
|
|
val.lng = parseFloat($(elm).parent().prev().prev().find(":text").val());
|
|
val.lat = parseFloat($(elm).parent().prev().find(":text").val());
|
|
util.map(val, function(r){
|
|
$(elm).parent().prev().prev().find(":text").val(r.lng);
|
|
$(elm).parent().prev().find(":text").val(r.lat);
|
|
});
|
|
|
|
});
|
|
}
|
|
|
|
</script>';
|
|
define('TPL_INIT_COORDINATE', true);
|
|
}
|
|
$s .= '
|
|
<div class="row row-fix">
|
|
<div class="col-xs-4 col-sm-4">
|
|
<input type="text" name="' . $field . '[lng]" value="' . $value['lng'] . '" placeholder="地理经度" class="form-control" />
|
|
</div>
|
|
<div class="col-xs-4 col-sm-4">
|
|
<input type="text" name="' . $field . '[lat]" value="' . $value['lat'] . '" placeholder="地理纬度" class="form-control" />
|
|
</div>
|
|
<div class="col-xs-4 col-sm-4">
|
|
<button onclick="showCoordinate(this);" class="btn btn-default" type="button">选择坐标</button>
|
|
</div>
|
|
</div>';
|
|
|
|
return $s;
|
|
}
|
|
|
|
|
|
function tpl_fans_form($field, $value = '') {
|
|
switch ($field) {
|
|
case 'avatar':
|
|
$avatar_url = '../attachment/images/global/avatars/';
|
|
$html = '';
|
|
if (!defined('TPL_INIT_AVATAR')) {
|
|
$html .= '
|
|
<script type="text/javascript">
|
|
function showAvatarDialog(elm, opts) {
|
|
require(["util"], function(util){
|
|
var btn = $(elm);
|
|
var ipt = btn.parent().prev();
|
|
var img = ipt.parent().next().children();
|
|
var content = \'<div class="avatar-browser clearfix">\';
|
|
for(var i = 1; i <= 12; i++) {
|
|
content +=
|
|
\'<div title="头像\' + i + \'" class="thumbnail">\' +
|
|
\'<em><img src="' . $avatar_url . 'avatar_\' + i + \'.jpg" class="img-responsive"></em>\' +
|
|
\'</div>\';
|
|
}
|
|
content += "</div>";
|
|
var dialog = util.dialog("请选择头像", content);
|
|
dialog.modal("show");
|
|
dialog.find(".thumbnail").on("click", function(){
|
|
var url = $(this).find("img").attr("src");
|
|
img.get(0).src = url;
|
|
ipt.val(url.replace(/^\.\.\/attachment\//, ""));
|
|
dialog.modal("hide");
|
|
});
|
|
});
|
|
}
|
|
</script>';
|
|
define('TPL_INIT_AVATAR', true);
|
|
}
|
|
if (!defined('TPL_INIT_IMAGE')) {
|
|
global $_W;
|
|
if (defined('IN_MOBILE')) {
|
|
$html .= <<<EOF
|
|
<script type="text/javascript">
|
|
// in mobile
|
|
function showImageDialog(elm) {
|
|
require(["jquery", "util"], function($, util){
|
|
var btn = $(elm);
|
|
var ipt = btn.parent().prev();
|
|
var val = ipt.val();
|
|
var img = ipt.parent().next().children();
|
|
util.image(elm, function(url){
|
|
img.get(0).src = url.url;
|
|
ipt.val(url.attachment);
|
|
});
|
|
});
|
|
}
|
|
</script>
|
|
EOF;
|
|
} else {
|
|
$html .= <<<EOF
|
|
<script type="text/javascript">
|
|
// in web
|
|
function showImageDialog(elm, opts) {
|
|
require(["util"], function(util){
|
|
var btn = $(elm);
|
|
var ipt = btn.parent().prev();
|
|
var val = ipt.val();
|
|
var img = ipt.parent().next().find('img');
|
|
util.image(val, function(url){
|
|
img.get(0).src = url.url;
|
|
ipt.val(url.attachment);
|
|
}, {multiple:false,type:"image",direct:true}, opts);
|
|
});
|
|
}
|
|
</script>
|
|
EOF;
|
|
}
|
|
define('TPL_INIT_IMAGE', true);
|
|
}
|
|
$val = './resource/images/nopic.jpg';
|
|
if (!empty($value)) {
|
|
$val = tomedia($value);
|
|
}
|
|
$options = array();
|
|
$options['width'] = '200';
|
|
$options['height'] = '200';
|
|
|
|
if (defined('IN_MOBILE')) {
|
|
$html .= <<<EOF
|
|
<div class="input-group">
|
|
<input type="text" value="{$value}" name="{$field}" class="form-control" autocomplete="off">
|
|
<span class="input-group-btn">
|
|
<button class="btn btn-default" type="button" onclick="showImageDialog(this);">选择图片</button>
|
|
<button class="btn btn-default" type="button" onclick="showAvatarDialog(this);">系统头像</button>
|
|
</span>
|
|
</div>
|
|
<div class="input-group" style="margin-top:.5em;">
|
|
<img src="{$val}" class="img-responsive img-thumbnail" width="150" style="max-height: 150px;"/>
|
|
</div>
|
|
EOF;
|
|
} else {
|
|
$html .= '
|
|
<div class="input-group">
|
|
<input type="text" value="' . $value . '" name="' . $field . '" class="form-control" autocomplete="off">
|
|
<span class="input-group-btn">
|
|
<button class="btn btn-default" type="button" onclick="showImageDialog(this, \'' . base64_encode(iserializer($options)) . '\');">选择图片</button>
|
|
<button class="btn btn-default" type="button" onclick="showAvatarDialog(this);">系统头像</button>
|
|
</span>
|
|
</div>
|
|
<div class="input-group" style="margin-top:.5em;">
|
|
<img src="' . $val . '" class="img-responsive img-thumbnail" width="150" />
|
|
</div>';
|
|
}
|
|
|
|
break;
|
|
case 'birth':
|
|
case 'birthyear':
|
|
case 'birthmonth':
|
|
case 'birthday':
|
|
$html = tpl_form_field_calendar('birth', $value);
|
|
break;
|
|
case 'reside':
|
|
case 'resideprovince':
|
|
case 'residecity':
|
|
case 'residedist':
|
|
$html = tpl_form_field_district('reside', $value);
|
|
break;
|
|
case 'bio':
|
|
case 'interest':
|
|
$html = '<textarea name="' . $field . '" class="form-control">' . $value . '</textarea>';
|
|
break;
|
|
case 'gender':
|
|
$html = '
|
|
<select name="gender" class="form-control">
|
|
<option value="0" ' . (0 == $value ? 'selected ' : '') . '>保密</option>
|
|
<option value="1" ' . (1 == $value ? 'selected ' : '') . '>男</option>
|
|
<option value="2" ' . (2 == $value ? 'selected ' : '') . '>女</option>
|
|
</select>';
|
|
break;
|
|
case 'education':
|
|
case 'constellation':
|
|
case 'zodiac':
|
|
case 'bloodtype':
|
|
if ('bloodtype' == $field) {
|
|
$options = array('A', 'B', 'AB', 'O', '其它');
|
|
} elseif ('zodiac' == $field) {
|
|
$options = array('鼠', '牛', '虎', '兔', '龙', '蛇', '马', '羊', '猴', '鸡', '狗', '猪');
|
|
} elseif ('constellation' == $field) {
|
|
$options = array('水瓶座', '双鱼座', '白羊座', '金牛座', '双子座', '巨蟹座', '狮子座', '处女座', '天秤座', '天蝎座', '射手座', '摩羯座');
|
|
} elseif ('education' == $field) {
|
|
$options = array('博士', '硕士', '本科', '专科', '中学', '小学', '其它');
|
|
}
|
|
$html = '<select name="' . $field . '" class="form-control">';
|
|
foreach ($options as $item) {
|
|
$html .= '<option value="' . $item . '" ' . ($value == $item ? 'selected ' : '') . '>' . $item . '</option>';
|
|
}
|
|
$html .= '</select>';
|
|
break;
|
|
case 'nickname':
|
|
case 'realname':
|
|
case 'address':
|
|
case 'mobile':
|
|
case 'qq':
|
|
case 'msn':
|
|
case 'email':
|
|
case 'telephone':
|
|
case 'taobao':
|
|
case 'alipay':
|
|
case 'studentid':
|
|
case 'grade':
|
|
case 'graduateschool':
|
|
case 'idcard':
|
|
case 'zipcode':
|
|
case 'site':
|
|
case 'affectivestatus':
|
|
case 'lookingfor':
|
|
case 'nationality':
|
|
case 'height':
|
|
case 'weight':
|
|
case 'company':
|
|
case 'occupation':
|
|
case 'position':
|
|
case 'revenue':
|
|
default:
|
|
$html = '<input type="text" class="form-control" name="' . $field . '" value="' . $value . '" />';
|
|
break;
|
|
}
|
|
|
|
return $html;
|
|
}
|