Merge branch 'ct-mobile-first'

# Conflicts:
#	application/controllers/welcome.php
#	application/views/bootstrap3/information_edit.php
hotfix/paypal-note
赵鹏 5 years ago
commit 90774ce3df

@ -402,6 +402,7 @@ $config['site'] = array(
'gl' => array('site_code' => 'gl', 'site_id' => 90, 'site_lgc' => '1', 'site_url' => 'https://www.guilinchina.net', 'site_image_url' => '//images.guilinchina.net', 'site_authors' => array('vi', 'sfx'), 'site_user' => ',ycc,vi,bhn,hwt,thf,sfx,J,ZP,lyy,'),
'mbj' => array('site_code' => 'mbj', 'site_id' => 98, 'site_lgc' => '1', 'site_url' => 'https://www.mybeijingchina.com', 'site_image_url' => '//images.mybeijingchina.com', 'site_authors' => array('vz', 'sfx'), 'site_user' => ',ycc,vz,bhn,hwt,thf,sfx,J,ZP,'),
'ct' => array('site_code' => 'ct', 'site_id' => 1000, 'site_lgc' => '104', 'site_url' => 'https://www.chinatravel.com', 'site_image_url' => '//images.chinatravel.com', 'site_authors' => array('ll', 'D'), 'site_user' => ',ycc,vz,bhn,J,wj,ll,D,ZP,lyy,'),
'chinatravel' => array('site_code' => 'chinatravel', 'site_id' => 1000, 'site_lgc' => '104', 'site_url' => 'https://www.chinatravel.com', 'site_image_url' => '//images.chinatravel.com', 'site_authors' => array('ll', 'D'), 'site_user' => ',ycc,vz,bhn,J,wj,ll,D,ZP,lyy,'),
'dct' => array('site_code' => 'dct', 'site_id' => 99, 'site_lgc' => '1', 'site_url' => 'https://www.diychinatours.com', 'site_image_url' => '//images.chinahighlights.com', 'site_authors' => array('zzy', 'spt', 'yl', 'gavin'), 'site_user' => ',ycc,lmr, zyh,J,shw,B,zzy,WJJ,Tony,pcf,zxy,wst,wz,S,yyg,yxd,wj,sw,yl,hx,spt,wmr,syt,gavin,zm,htc,yqw,zl,sw,J,qqs,MGZ,'),
'cits' => array('site_code' => 'cits', 'site_id' => 10086, 'site_lgc' => '2', 'site_image_url' => '', 'site_url' => 'https://www.guilincits.com'),
'mct' => array('site_code' => 'mct', 'site_id' => 6, 'site_lgc' => '101', 'site_image_url' => '', 'site_url' => 'https://www.mychinatours.com', 'site_authors' => array('cj')),
@ -712,6 +713,7 @@ $config['css_source_yz'] = 'https://www.yangtzeriver.org/css/css3/bootstrap/boot
$config['css_source_ah'] = 'https://www.asiahighlights.com/min/?f=/css/global.min.css,/js/bootstrap-datepicker/css/bootstrap-datepicker3.standalone.css,/css/basic.css,/css/homepage.css,/css/contact.css,/css/tailor-make.css,/css/tour.css,/css/tour-detail.css,/css/inquiry-form.css,/css/missing.css';
$config['css_source_gh'] = 'https://www.globalhighlights.com/css/global.css';
$config['css_source_ct'] = 'https://data.chinatravel.com/css/min.php?f=/css/css3/bootstrap/bootstrap.css,/css/css3/style.css,/css/css3/destination-details.css';
$config['css_source_chinatravel'] = 'https://data.chinatravel.com/css/newcss3/base.css';
$config['css_source_ts'] = 'https://www.trainspread.com/css/bootstrap.min.css';
@ -724,6 +726,7 @@ $config['cache']['vac']['cache_path'] = 'C:\VHD\Dropbox\wwwcache\viaje-a-china.c
$config['cache']['ru']['cache_path'] = 'C:\VHD\Dropbox\wwwcache\chinahighlights.ru';
$config['cache']['it']['cache_path'] = 'C:\VHD\Dropbox\wwwcache\viaggio-in-cina.it';
$config['cache']['ch']['cache_path'] = 'D:\wwwcache\chinahighlights.com';
$config['cache']['chinatravel']['cache_path'] = 'D:\wwwcache\mobile-first\chinatravel.com';
//静态文件更新接口
$config['cache']['jp']['cache_api'] = '/info.php/information/update_cache/';

@ -328,22 +328,33 @@ class Information extends CI_Controller
}
//获取移动优先的模板,如果有的话
$mobile_first_template_path = 'mobile_first/' . $this->config->item('site_code');
if (is_file(APPPATH . 'views/' . $mobile_first_template_path . EXT)) {
$mobile_template_H1 = $this->call_mobile_template_H1($mobile_first_template_path, $data['information']->is_path, $data['information']->ic_author, $data['information']->ic_title, $data['information']->ic_photo);//H1模板替换
$data['mobile_first_template'] = $this->load->view($mobile_first_template_path, '', TRUE);
if (empty(get_meta($data['information']->ic_id, 'meta_product_code'))) {
$data['mobile_first_template'] = str_replace('<!--@HEAD_1@-->', $mobile_template_H1, $data['mobile_first_template']);
//增加判断站点,每个站点需要读取的模板不一样。 20210311 zp
if ($this->config->item('site_code')=="ch"){
$mobile_first_template_path = 'mobile_first/' . $this->config->item('site_code');
if (is_file(APPPATH . 'views/' . $mobile_first_template_path . EXT)) {
$mobile_template_H1 = $this->call_mobile_template_H1($mobile_first_template_path, $data['information']->is_path, $data['information']->ic_author, $data['information']->ic_title, $data['information']->ic_photo);//H1模板替换
$data['mobile_first_template'] = $this->load->view($mobile_first_template_path, '', TRUE);
if (empty(get_meta($data['information']->ic_id, 'meta_product_code'))) {
$data['mobile_first_template'] = str_replace('<!--@HEAD_1@-->', $mobile_template_H1, $data['mobile_first_template']);
}
//主样式表,内联模式
$main_css_string=compress_css(GET_HTTP('https://proxy-data.chinahighlights.com/css/mobile-first.css'));
$data['mobile_first_template'] = str_replace('<!--@MAIN-CSS@-->', '<style type="text/css">' . $main_css_string . '</style>', $data['mobile_first_template']);
//查找是否有静态文件
if ($this->html_file_helper('find', $data['information']->ic_url)) {
$data['has_html_file'] = true;
}
} else {
$data['mobile_first_template'] = '没有找到移动模板';
}
//主样式表,内联模式
$main_css_string=compress_css(GET_HTTP('https://proxy-data.chinahighlights.com/css/mobile-first.css'));
$data['mobile_first_template'] = str_replace('<!--@MAIN-CSS@-->', '<style type="text/css">' . $main_css_string . '</style>', $data['mobile_first_template']);
}
//CT判断是否生成静态文件
if ($this->config->item("site_code")=="chinatravel"){
//查找是否有静态文件
if ($this->html_file_helper('find', $data['information']->ic_url)) {
$data['has_html_file'] = true;
}
} else {
$data['mobile_first_template'] = '没有找到移动模板';
}
@ -499,6 +510,12 @@ class Information extends CI_Controller
$information_new = $this->Information_model->Detail($this->input->post('is_id'));
$this->make_www_cache('mobile', $information_new);
$this->make_www_cache('pc', $information_new);
}else if (strcasecmp($site_code, "chinatravel") == 0 && !empty($auto_update_cache)){
//chinatravel读取模板生成PC和移动优先文件
$information_new = $this->Information_model->Detail($this->input->post('is_id'));
$this->make_www_cache_ct('mobile', $information_new);
$this->make_www_cache_ct('pc', $information_new);
} else if (strcasecmp($site_code, "cht") == 0 && !empty($auto_update_cache)) {
$update_info_log = $this->update_cache($ic_url);
} else if (strcasecmp($site_code, "ah") == 0 && !empty($auto_update_cache)) {
@ -578,9 +595,15 @@ class Information extends CI_Controller
return false;
}
if ($this->html_file_helper('find', $information->ic_url)) {
//用于批量更新
$this->make_www_cache('pc', $information);
$this->make_www_cache('mobile', $information);
//用于批量更新,CH和chinatravel分开 20210317 zp
if ($this->config->item('site_code') == 'ch'){
$this->make_www_cache('pc', $information);
$this->make_www_cache('mobile', $information);
}else if ($this->config->item('site_code') == 'chinatravel'){
$this->make_www_cache_ct('pc', $information);
$this->make_www_cache_ct('mobile', $information);
}
echo json_encode(array('name' => 'yes', 'data' => '更新成功!'));
return true;
} else {
@ -737,6 +760,225 @@ class Information extends CI_Controller
file_put_contents($html_path, $template, LOCK_EX);
}
/**
* @description: CT用的生成静态文件方法.有些内容的替换CT这边不一样需要单独处理 zp
* @param {type} $device='mobile' or 'pc'
* @return:
* @Date Changed:
*/
function make_www_cache_ct($device,$information){
$data = array();
//先准备数据CT采用直接赋值视图然后返回视图字符串的模式不使用一次次替换视图模板内容的模式。
$data["TITLE"] = $information->ic_seo_title;
$data["DESCRIPTION"] = $information->ic_seo_description;
$data["KEYWORDS"] = $information->ic_seo_keywords;
$data["CANONICAL"] = $this->config->item('site_url') . $information->ic_url;
/* 详细内容 */
$ic_content = $information->ic_content;
// /**替换详细内容里面的价格
/* 直接使用fetch来动态获取价格这样不用替换标签直接录标签
// * // 一日游价格标签, "<!--@DayTripPrice:XASIC-41@-->" 或者<!--@DayTripPrice:XASIC-41,2@--> 逗号后面是人数
// * //精华线路标签"<!--@TourPrice:ct-1@-->"
// */
// $ic_content = preg_replace_callback('/<!--@DayTripPrice:(.*)@-->/i',function($match){
// //处理一日游每次配备
// $matchItem = $match[1];
// return '<span class="js_getDayTripPrice" data="'.$matchItem.'"></span>';;
// },$ic_content);
// $ic_content = preg_replace_callback('/<!--@TourPrice:(.*)@-->/i',function($match){
// //处理精华线路每次配备
// $matchItem = $match[1];
// return '<span class="js_getTourPrice" data="'.$matchItem.'"></span>';;
// },$ic_content);
//$ic_content = '<div class="container-details details-content">'.$ic_content.'</div>'; //兼容拷贝过来的内容样式
$data["CUSTOMCONENT"]=$ic_content;
//非产品页面
$data["PRODUCTJS"]="";
if (empty(get_meta($information->ic_id, 'meta_product_code'))) {
} else {
// $data["PRODUCTJS"] = '<script src="https://data.chinatravel.com/js/mobile-first/flatpickr.js"></script>';
}
//顶部全屏大图
$data["TOPBANNER"] ="";
$ImgText = ""; //图文字
$meta_addon_picture_url = get_meta($information->ic_id, 'meta_addon_picture_url');
if($device=='mobile'){//移动端读取移动大图
$meta_addon_picture = get_meta($information->ic_id, 'meta_addon_picture_mobile');
$bannerImg = '<img class="img-responsive" alt="' . $information->ic_title . '" src="' . $meta_addon_picture . '">';
}else{
$meta_addon_picture = get_meta($information->ic_id, 'meta_addon_picture');
$bannerImg = '<img class="img-responsive" alt="' . $information->ic_title . '" src="' . $meta_addon_picture . '">';
$meta_addon_picture_text = get_meta($information->ic_id,'meta_addon_picture_text');
if(!empty($meta_addon_picture_url)){
$ImgText = '<div class="carousel-caption"><p class="ads-title"><a href="'.$meta_addon_picture_url.'">'.$meta_addon_picture_text.'</a></p></div>';
}else{
$ImgText = '<div class="carousel-caption"><p class="ads-title">'.$meta_addon_picture_text.'</p></div>';
}
}
if (!empty($meta_addon_picture)) {
if(!empty($meta_addon_picture_url)){
$data["TOPBANNER"] = '<div class="banner"><a href="'.$meta_addon_picture_url.'">'.$bannerImg.' </a>'.$ImgText.'</div>';
}else{
$data["TOPBANNER"] = '<div class="banner">'.$bannerImg.$ImgText.'</div>';
}
}
//顶部视频
$data["TOPVIDEO"]="";
$meta_news_video = get_meta($information->ic_id, 'meta_news_video');
$meta_video_picture = get_meta($information->ic_id, 'meta_video_picture');
if (!empty($meta_news_video) && !empty($meta_video_picture)) {
$data["TOPVIDEO"]='<div class="banner"><video autoplay="" controls="controls" id="bgvid" poster="' . $meta_video_picture . '" src="' . $meta_news_video . '" style="position: inherit;"> </video></div>';
}
//主样式表,内联模式
if ($device=="mobile"){
$cssUrl = "http://202.103.68.104/css/newcss3/base.css";
}else{
$cssUrl="http://202.103.68.104/css/newcss3/base.css";
}
$main_css_string=compress_css(GET_HTTP($cssUrl));
$data["MAINCSS"] = '<style type="text/css">' . $main_css_string . '</style>';
//额外样式
$data["ADDONCSS"]="";
$meta_addon_css = get_meta($information->ic_id, 'meta_addon_css');
if (!empty($meta_addon_css)) {
//引用方式
//$data["ADDONCSS"]= '<link href="' . $meta_addon_css . '" rel="stylesheet" />';
//内联方式
$meta_addon_css_string=compress_css(GET_HTTP($meta_addon_css));
$data["ADDONCSS"]='<style type="text/css">' . $meta_addon_css_string . '</style>';
}
//总JS为了方便以后js好维护必须的把一些公用的JS统计到一个文件。但是又不是所有页面都需要调用这个基础js所以必须在这里进行判断
$addBaseJs = false;
$addonJs = "";
$meta_ct_page_price = get_meta($information->ic_id, 'meta_ct_page_price'); //是否包含价格
$meta_ct_page_type = get_meta($information->ic_id, 'meta_ct_page_type'); //页面类型
if ($meta_ct_page_price=="yes"){
$addBaseJs=true;
}else if ($meta_ct_page_type!==false && $meta_ct_page_type!=""){
$addBaseJs=true;
}
if ($addBaseJs){
$addonJs='<script src="/js/mobile-first/base.js"></script>';
}
/// ----- 总JS判断完成-----
//额外js
$data["ADDONJS"]="";
$meta_addon_js = get_meta($information->ic_id, 'meta_addon_js');
if (!empty($meta_addon_js)) {
$addonJs .='<script src="' . $meta_addon_js . '"></script>';
}
//价格js
if ($meta_ct_page_price=="yes"){
$addonJs .= '<script src="/js/mobile-first/getprice.js"></script>';
}
//列表js
if ($meta_ct_page_type=="daytripindex" || $meta_ct_page_type=="tourindex"){
$addonJs .= '<script src="/js/mobile-first/getlist.js"></script>';
}
$data["ADDONJS"]=$addonJs;
//社媒分享图片
$data["OGIMAGE"]="";
if (!empty($information->ic_photo)) {
$full_ic_photo = $this->config->item('site_image_url') . $information->ic_photo;
$data["OGIMAGE"]= '<meta property="og:image" content="' . $full_ic_photo . '"><meta property="og:image:secure_url" content="' . $full_ic_photo . '"><meta property="og:image:width" content="800"><meta property="og:image:height" content="450">';
}
//结构化标签
$data["ConstructionCode"]="";
$meta_construction_code = get_meta($information->ic_id,'meta_construction_code');
if (!empty($meta_construction_code)){
$data["ConstructionCode"]=$meta_construction_code;
}
//页面传递参数
$passParam = "";
if ($meta_ct_page_type=="daytripindex" || $meta_ct_page_type=="tourindex"){
//产品首页
$meta_ct_page_value = get_meta($information->ic_id,'meta_ct_page_value');
$passParam .= '<input type="hidden" name="param_city" id="param_city" value="'.$meta_ct_page_value.'"/>';
//加信息平台的is_id
$passParam .= '<input type="hidden" name="param_parentId" id="param_parentId" value="'.$information->is_id.'"/>';
}
$data["passParam"] = $passParam;
//两种模板
switch ($device) {
case 'mobile':
//获取移动优先的模板,如果有的话
$template_path = 'mobile_first/' . $this->config->item('site_code');
if (is_file(APPPATH . 'views/' . $template_path . EXT)) {
$template = $this->load->view($template_path, $data, TRUE);
$html_path_ext = '-mobile.htm';
} else {
return false;
}
break;
case 'pc':
//获取PC的模板如果有的话
$template_path = 'mobile_first/' . $this->config->item('site_code');
if (is_file(APPPATH . 'views/' . $template_path . '-pc' . EXT)) {
$template = $this->load->view($template_path . '-pc', $data, TRUE);
$html_path_ext = '-pc.htm';
} else {
return false;
}
break;
default:
}
//生成静态文件
$html_path = $this->config->item('cache')[$this->config->item('site_code')]['cache_path'] . $information->ic_url;
$html_path = str_replace("\\", "/", $html_path);
if (substr($html_path, -1, 1) == '/') {
$html_path = $html_path . 'index.htm';
}
$html_path .= $html_path_ext;
create_folder_by_path(dirname($html_path));
file_put_contents($html_path, $template, LOCK_EX);
// //Google广告代码
// if (!empty(get_meta($information->ic_id, 'meta_google_ad_content'))) {
// $template = str_replace('<!--@Match-Content-GOOGLE@-->', '<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script><ins class="adsbygoogle" style="display:block" data-ad-format="autorelaxed" data-ad-client="ca-pub-4231674166786366" data-ad-slot="1447610161"></ins><script>(adsbygoogle = window.adsbygoogle || []).push({});</script>', $template);
// }
// if (!empty(get_meta($information->ic_id, 'meta_google_ad_article'))) {
// $in_article_google=$this->load->view($template_path.'-google-ad', false,true);
// $template = str_replace('<!--@IN-ARTICLE-GOOGLE@-->', $in_article_google, $template);
// }
// //设置图片尺寸
// //$template=$this->html_optimize_lib->set_image_size($template);
// // /travelguide/chinese-zodiac/monthly-fortune-for-dog.htm
}
function call_mobile_template_H1($mobile_first_template_path, $is_path, $ic_author, $ic_title, $ic_photo)
{
$data['infocategory'] = $this->Information_model->get_detail_by_path($is_path, 1);//信息所属分类,获取信息顶级节点内容

@ -416,4 +416,18 @@ class Welcome extends CI_Controller {
$this->load->view('bootstrap3/recommendlist', $data);
}
/**
* @description: 用于生成一个特殊的根结点is_level和is_sort都为0CT移动优先项目用
* @param {type}
* @return:
* @Date Changed:
*/
public function AddRootNote(){
$this->InfoContents_model->Add('', 'NewRootNote', 'root', 'NewRootNote', '', '', '', '', '', 0, 0, '', '', 0, 0, '', '', '', '', 0,
'','');
$this->InfoStructures_model->AddRootNote($this->InfoContents_model->insert_id);
$is_id = $this->InfoStructures_model->insert_id;
redirect(site_url('information/edit/' . $is_id));
}
}

@ -103,7 +103,7 @@ function is_mobile_first()
{
$CI = &get_instance();
$sitecode = $CI->config->item('site_code');
if ($sitecode == 'ch' || $sitecode == 'ah') {
if ($sitecode == 'ch' || $sitecode == 'ah' || $sitecode='chinatravel') {
return true;
} else {
return false;

@ -221,4 +221,30 @@ class InfoStructures_model extends CI_Model
}
}
/**
* @description: 用于生成一个特殊的根结点is_level和is_sort都为0CT移动优先项目用
* @param {type}
* @return:
* @Date Changed:
*/
public function AddRootNote($is_ic_id){
$sql = "INSERT INTO infoStructures \n"
. " ( \n"
. " is_parent_id, is_path, is_level, is_sort, is_sitecode, is_datetime, is_ic_id \n"
. " ) \n"
. "VALUES \n"
. " ( \n"
. " ?, ?, ?, ?, ?, getdate(), ? \n"
. " )";
$query = $this->HT->query($sql, array(-99, '', 0, 0, $this->config->item('site_code'), $is_ic_id));
$this->insert_id = $this->HT->last_id('infoStructures');
//把自己的ID加到path上
$set_sql = "UPDATE infoStructures \n"
. "SET is_path = is_path + CONVERT(VARCHAR(200), is_id) + ',' \n"
. "WHERE is_id = ?";
$query = $this->HT->query($set_sql, array($this->insert_id));
return $this->insert_id;
}
}

@ -0,0 +1,165 @@
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Api extends CI_Controller {
public function __construct()
{
parent::__construct();
$this->load->model('api_model');
$this->load->library('Currency');
}
public function index()
{
echo("<1>api</h1>");
}
/**
* @description: 返回一日游价格
* @param {*} $returntype
* @return {*}
* @Date Changed:
*/
public function getDaytripsPrice(){
if (isset($_GET["param"])){
$param = $_GET["param"];
if (strpos($param,",")!== false){
$pagecode = explode(",",$param)[0];
$personnum=explode(",",$param)[1];
}else{
$pagecode = $param;
$personnum=2;
}
if (isset($_GET["personnum"])){
$personnum=$_GET["personnum"];
}else{
$personnum=2;
}
$result["status"]="ok";
$price = $this->api_model->getDaytripsPrice($pagecode,$personnum);
$PKP_AdultSpecialPrice = $price->PKP_AdultSpecialPrice;
$PKP_AdultPrice = $price->PKP_AdultPrice;
if ($PKP_AdultPrice!=$PKP_AdultSpecialPrice && $PKP_AdultSpecialPrice>0){
$result["price"] = $this->currency->convert_moneny_by_char($PKP_AdultSpecialPrice,"USD");
}else{
$result["price"] = $this->currency->convert_moneny_by_char($PKP_AdultPrice,"USD");
}
echo json_encode($result);
}else {
$result["status"]="no param";
echo json_encode($result);
}
}
/**
* @description: 获取精华线路价格2人等)
* @param {*}
* @return {*}
* @Date Changed:
*/
public function getTourPrice(){
if (isset($_GET["param"])){
$param = $_GET["param"];
$result["status"]="ok";
$price = $this->api_model->getTourPrice($param);
$result["pricecn"]=$price;
if (is_numeric($price)){
$price = $this->currency->calc_show_price($this->currency->convert_moneny_by_char($price,"USD"));
}else{
$price = "0";
}
$result["price"] = $price;
echo json_encode($result);
}else{
$result["status"]="no param";
echo json_encode($result);
}
}
/**
* @description: 获取HT及信息平台的一日游列表数据
* @param {*}
* @return {*}
* @Date Changed:
*/
public function getDaytripList(){
//先处理传递过来的参数逗号隔开两个参数的格式城市名称父ID
$whereHT="";
$whereInfo="";
if (isset($_GET["param"])){
$param = str_replace("'","''",$_GET["param"]);
if (strpos($param,",")!== false){
$city = explode(",",$param)[0];
$whereHT = " and (CII2_Name ='".$city."') ";
$parentid = explode(",",$param)[1];
$whereInfo = " and is_parent_id = '".$parentid."'";
}else{
$whereHT = " and (CII2_Name ='".$param."') ";
$whereInfo = "";
}
}
$list = $this->api_model->getDaytripList($whereHT,$whereInfo);
foreach ($list as $row) {
//获取价格
$price = $this->api_model->getDaytripsPrice($row->code,2);
if ($price!=null){
$PKP_AdultSpecialPrice = $price->PKP_AdultSpecialPrice;
$PKP_AdultPrice = $price->PKP_AdultPrice;
if ($PKP_AdultPrice!=$PKP_AdultSpecialPrice && $PKP_AdultSpecialPrice>0){
$addPrice = $this->currency->convert_moneny_by_char($PKP_AdultSpecialPrice,"USD");
}else{
$addPrice= $this->currency->convert_moneny_by_char($PKP_AdultPrice,"USD");
}
}else{
$addPrice=0;
}
//URL
if (empty($row->url)){
$str_Url = "/china-day-trips/".strtolower($row->code).".htm";
$row->url = $str_Url; //更新url
}
//图片
$imageCdn = "//images.chinatravel.com";//有些HT绑定图片需要加cdn
if (!empty($row->pic1)){
if (strpos($row->pic1,"chinatravel.com")!== false){
$picurl=$row->pic1;
}else{
$picurl = $imageCdn.$row->pic1;
}
}else if(!empty($row->pic2)){
if (strpos($row->pic2,"chinatravel.com")!== false){
$picurl=$row->pic2;
}else{
$picurl = $imageCdn.$row->pic2;
}
}else{
$picurl="//data.chinatravel.com/images/loading2.gif";
}
$row->price = $addPrice; //新增价格属性
$row->pic =$picurl; //图片地址
}
echo json_encode($list);
}
}
/* End of file Api.php */

@ -0,0 +1,204 @@
<?php
if (!defined('BASEPATH'))
exit('No direct script access allowed');
/*
* 自动加载语种标签
*/
class Currency {
var $USD_Rate; //人民币兑美元汇率
var $EUR_Rate; //人民币兑欧元汇率
var $RUB_Rate; //人民币兑卢布汇率
public function __construct() {
$this->CI = & get_instance();
log_message('debug', "Language Tags Class Initialized");
$this->GetCurrencyRate();
}
function GetCurrencyRate() {
$this->HT = $this->CI->load->database('HT', TRUE);
$sql = "SELECT CRI_BuyIn / 100.00 AS tmpExRate, \n"
. " CRI_Code \n"
. "FROM tourmanager.dbo.CurrencyRateInfo \n"
. "WHERE CRI_Code IN ('USD', 'EUR', 'RUB') \n"
. " AND GETDATE() BETWEEN CRI_Start AND CRI_Stop";
$query = $this->HT->query($sql);
foreach ($query->result() as $item) {
switch ($item->CRI_Code) {
case 'USD':
$this->USD_Rate = $item->tmpExRate;
break;
case 'EUR':
$this->EUR_Rate = $item->tmpExRate;
break;
case 'RUB':
$this->RUB_Rate = $item->tmpExRate;
break;
}
}
// echo $this->USD_Rate . '<br/>';
// echo $this->EUR_Rate . '<br/>';
// echo $this->RUB_Rate . '<br/>';
return $query->result();
}
//根据人民币转换成站点对应的货币
public function GetSiteMoney($RMB) {
if (!is_numeric($RMB))
{
return $RMB;
}
$result = $RMB;
if (is_numeric($RMB)) {
switch (CONST_SITE_CURRENCY) {
case 'USD':
$result = $RMB / $this->USD_Rate;
break;
case 'EUR':
$result = $RMB / $this->EUR_Rate;
break;
case 'RUB':
$result = $RMB / $this->RUB_Rate;
break;
}
}
return ceil($result);
}
//把美金转换为人民币
public function get_USD_RMB_SUM($USD) {
if (!is_numeric($USD))return $USD;
$result = $USD;
$result = $USD * $this->USD_Rate;
return ceil($result);
}
/**
* 返回站点的汇率。
*
* @author lmr
*/
public function get_site_currencyrate() {
switch (CONST_SITE_CURRENCY) {
case 'USD':
return $this->USD_Rate;
case 'EUR':
return $this->EUR_Rate;
case 'RUB':
return $this->RUB_Rate;
default:
return 1;
}
}
/**
* 返回带money_char的价格。
*
* @param $money Int 价格.
* @return String 带货币符号的价格。
*/
public function get_money_char($money='') {
switch (CONST_SITE_CODE) {
case 'JP':
return $money.'元';
case 'GM':
return '€'.$money;
case 'VC':
return $money.'€';
case 'VAC':
return '$'.$money;
case 'RU':
return '$'.$money;
case 'IT':
return '€'.$money;
case 'SHT':
return '$'.$money;
default:
return '$'.$money;
}
}
/**
* 返回带money_char的价格。
*
* @param $money Int 价格.
* @return String 带货币符号的价格。
*/
public function get_site_money_with_char($money='') {
return $this->get_money_char($this->GetSiteMoney($money));
}
/**
* RMB换算成指定货币。
* @param int money RMB
* @param string char 货币代号usdeur
* @return int 换算价格
*/
public function convert_moneny_by_char($money,$char='')
{
switch (strtolower($char))
{
case 'usd':
return ceil($money/$this->USD_Rate);
case 'eur':
return ceil($money/$this->EUR_Rate);
}
return $money;
}
/**
* 尾数取"9"的定价规则
* 在正负误差值小于或等于16的前提下
* 保证展示价格的个位数和十位数统一取"99"
* 当展示价格的个位数和十位数取"99"的正负误差大于16时
* 通过四舍五入加价实现个位数取"9"
* 详细规则见GitLab issue #12 统一网前展示价格的标准
*/
public function calc_show_price($value=0) {
if (empty($value)) return 0;
if (!is_numeric($value)) return $value;
$val_len = strlen($value);
if ($val_len == 1) return 9;
$discount = 16;
$val_pow = pow(10, $val_len - 1);
$min_val = $val_pow - 1;
$max_val = $min_val + $val_pow;
$max_diff = abs($value - $max_val);
$min_diff = abs($value - $min_val);
if (min($max_diff, $min_diff) > $discount) {
$calc_val = floor($value / 10) * 10 + 9;
} else {
$calc_val = $max_diff > $min_diff ? $min_val : $max_val;
}
return $calc_val;
}
/**
* 获取设置的信用卡卡费
*/
public function cardfee(){
$sql = "SELECT TOP 1 * FROM dbo.SystemSettingInfo WHERE (SSI_Code = 1021001)";
$this->HT = $this->CI->load->database('HT', TRUE);
$query = $this->HT->query($sql);
$row = $query->row();
if (isset($row)){
return $row->SSI_UserValue;
}else{
return 0;
}
}
}

@ -0,0 +1,276 @@
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Api_model extends CI_Model {
public function __construct()
{
parent::__construct();
$this->HT = $this->load->database('HT', TRUE);
}
var $dei_sn = 17; //组别ID
var $CTLGC = 104; //语种
/**
* @description: 根据一日游code获取对应人数的成人价格
* @param {string} $pagecode 线路代码
* @param int $personnum 人数
* @return:
*/
function getDaytripsPrice($pagcode, $personnum)
{
$sql = "select top 1 isnull(PKP_AdultPrice,0) as PKP_AdultPrice,isnull(PKP_AdultSpecialPrice,0) as PKP_AdultSpecialPrice
,PAG_DefaultVEI_SN
from BIZ_PackagePrice
inner join BIZ_PackageInfo on BIZ_PackageInfo.PAG_SN = BIZ_PackagePrice.PKP_PAG_SN
and BIZ_PackagePrice.PKP_VEI_SN = BIZ_PackageInfo.PAG_DefaultVEI_SN
where (BIZ_PackageInfo.PAG_Code = ?) AND (pag_dei_sn= ? )
and ? between PKP_PersonStart and PKP_PersonStop and CONVERT(varchar(12),getdate(),111) between pkp_validdate and pkp_invaliddate
order by isnull( BIZ_PackageInfo.PAG_DefaultVEI_SN,0) desc,PKP_PriceGrade ";
$param = array($pagcode,$this->dei_sn, $personnum);
$query = $this->HT->query($sql, $param);
if ($query->num_rows() > 0) {
return $query->row();
} else {
//'第二种有默认供应商但是没有当前日期价格的时候
$sql = "select top 1 isnull(PKP_AdultPrice,0) as PKP_AdultPrice,isnull(PKP_AdultSpecialPrice,0) as PKP_AdultSpecialPrice
,PAG_DefaultVEI_SN
from BIZ_PackagePrice
inner join BIZ_PackageInfo on BIZ_PackageInfo.PAG_SN = BIZ_PackagePrice.PKP_PAG_SN
and BIZ_PackagePrice.PKP_VEI_SN = BIZ_PackageInfo.PAG_DefaultVEI_SN
where (BIZ_PackageInfo.PAG_Code = ? ) AND (pag_dei_sn= ? )
and ? between PKP_PersonStart and PKP_PersonStop
order by pkp_invaliddate desc,PKP_PriceGrade ";
$query = $this->HT->query($sql, $param);
if ($query->num_rows() > 0) {
return $query->row();
}else{
//'第三种没有默认供应商但是有当前日期价格的时候
$sql = "select top 1 isnull(PKP_AdultPrice,0) as PKP_AdultPrice,isnull(PKP_AdultSpecialPrice,0) as PKP_AdultSpecialPrice
,PAG_DefaultVEI_SN
from BIZ_PackagePrice
inner join BIZ_PackageInfo on BIZ_PackageInfo.PAG_SN = BIZ_PackagePrice.PKP_PAG_SN
where (BIZ_PackageInfo.PAG_Code = ? ) AND (pag_dei_sn= ? )
and ? between PKP_PersonStart and PKP_PersonStop and CONVERT(varchar(12),getdate(),111) between pkp_validdate and pkp_invaliddate
order by isnull( BIZ_PackageInfo.PAG_DefaultVEI_SN,0) desc,PKP_PriceGrade ";
$query = $this->HT->query($sql, $param);
if ($query->num_rows() > 0) {
return $query->row();
}else{
//'第四种无默认供应商无当前日期价格
$sql = "select top 1 isnull(PKP_AdultPrice,0) as PKP_AdultPrice,isnull(PKP_AdultSpecialPrice,0) as PKP_AdultSpecialPrice
,PAG_DefaultVEI_SN
from BIZ_PackagePrice
inner join BIZ_PackageInfo on BIZ_PackageInfo.PAG_SN = BIZ_PackagePrice.PKP_PAG_SN
where (BIZ_PackageInfo.PAG_Code = ? ) AND (pag_dei_sn= ? )
and ? between PKP_PersonStart and PKP_PersonStop
order by pkp_invaliddate desc,PKP_PriceGrade ";
if ($query->num_rows() > 0) {
return $query->row();
}else {
return null;
}
}
}
}
}
/**
* @description: 获取精华线路价格2人等
* @param {*}
* @return {*}
* @Date Changed:
*/
function getTourPrice($cli_no){
$CLI_SN = "";
$reust = "";
//'新的GP没有设置以前的2-5人等价格导致读不出价格。把Gp价格放前面计算
$sql = "select top 1 CLI_SN,CLI_PackageClass from CustomerLineInfo
where CLI_NO=? and CLI_State=1005004
AND (CLI_DEI_SN= ? )";
$query = $this->HT->query($sql,array($cli_no,$this->dei_sn));
if (!$query->num_rows()>0){
return null;
}else{
$row = $query->row();
if (isset($row)){
$CLI_SN = $row->CLI_SN;
}
//'获取线路是否有travelbuddy,也就是有固定的发团日期
$fut_sql = "SELECT count(*) as CountBuddy FROM FixedGroupDate WHERE FGD_CLI_SN='".$CLI_SN."'";
$futQuery = $this->HT->query($fut_sql);
$futrow = $futQuery->row();
$fut_CountBuddy = $futrow->CountBuddy;
if ($fut_CountBuddy>0){
//读取GP价格
$gpSql ="SELECT TOP 1 FGD_AdultPrice,FGD_Departure,
isnull(FGD_ProAdultPrice,0) as FGD_ProAdultPrice
FROM FixedGroupDate
WHERE (FGD_Departure >= GETDATE())
AND (FGD_CLI_SN = ".$CLI_SN.") AND (FGD_State = 1) ORDER BY FGD_AdultPrice";
$gpquery = $this->HT->query($gpSql);
if ($gpquery->num_rows()>0){
$gpRow = $gpquery->row();
$FGD_AdultPrice = $gpRow->FGD_AdultPrice;
$FGD_ProAdultPrice = $gpRow->FGD_ProAdultPrice;
if ($FGD_ProAdultPrice>0){
$reust = $FGD_ProAdultPrice; //促销价
}else{
$reust=$FGD_AdultPrice;
}
}
}else {
//普通线路价格
$sql = "select top 1
CLI_SN,CLP_TwoToFiveAdultPrice,CLI_PackageClass
FROM CustomerLineInfo INNER JOIN
CustomerLinePrice ON CustomerLineInfo.CLI_SN = CustomerLinePrice.CLP_CLI_SN INNER JOIN
CustomerLineInfo2 ON CustomerLineInfo.CLI_SN = CustomerLineInfo2.CLI2_CLI_SN
where CLI_SN= ? and CLI2_LGC=? and (CLP_Area=1 or CLP_Area=2)
and CLI_State = 1005004 ORDER BY CLP_TwoToFiveAdultPrice";
$query = $this->HT->query($sql,array($CLI_SN,$this->CTLGC));
if ($query->num_rows()>0){
$reust = $query->row()->CLP_TwoToFiveAdultPrice;
}
}
}
return $reust;
}
/**
* @description: 一日游列表,包含信息平台和HT
* @param {*} $whereHT HT的查询条件
* @param {*} $whereInfo 信息平台的查询条件
* @return {*}
* @Date Changed:
*/
function getDaytripList($whereHT="",$whereInfo=""){
$sql = "select * from(
select * from(
SELECT p2.PAG2_Name as title
,P1.PAG_Code as code
,'' as url
,isnull(p2.PAG2_ImageURL,'') as pic1
,isnull((select top 1 PAP_ImageURL from BIZ_PackagePic where PAP_PII_SN=p2.PAG2_PII_SN),'') as pic2
,'2' as sortby
FROM dbo.BIZ_PackageInfo P1
INNER JOIN dbo.BIZ_PackageInfo2 p2 ON P1.PAG_SN = p2.PAG2_PAG_SN
INNER JOIN dbo.CItyInfo2 ON P1.PAG_CII_SN = dbo.CItyInfo2.CII2_CII_SN AND dbo.CItyInfo2.CII2_LGC = 1
WHERE (p2.PAG2_LGC = 104)
AND (p1.pag_dei_sn = 17)
AND (p2.PAG2_Check = 2)
AND (isnull(P1.DeleteFlag,0) <>1) ".$whereHT."
) Tmp
UNION ALL
SELECT * from (
select ic_url_title as title
,(select top 1 im_value from infoMetas where im_key='meta_product_code' and im_ic_id=ic_id) as code
,ic_url as url , ic_photo as pic1
,(select top 1 im_value from infoMetas where im_key='meta_addon_picture_mobile' and im_ic_id=ic_id) as pic2
,'1' as sortby
FROM dbo.infoContents
inner join infoStructures on ic_id=is_ic_id
WHERE is_sitecode='chinatravel' ".$whereInfo."
--and ic_status=1
) as t
) tball
where 1=1
ORDER BY tball.sortBy ASC
";
$query = $this->HT->query($sql);
return $query->result();
}
/**
* @description: HT获取一日游列表
* @param {*} $city 一日游城市 ,默认必须有城市,不然太多
* @param {*} $where 其它条件
* @return {*}
* @Date Changed:
*/
function getDaytripListHT($city="beijing",$where=""){
$sql = " select * from(
SELECT p2.PAG2_Name
,p2.PAG2_Intro
,P1.PAG_NeedTime
,P1.PAG_SN
,P1.PAG_Leve
,p2.PAG2_Order
,P1.PAG_Code
,p2.PAG2_Attraction
,CItyInfo2.CII2_Name
,isnull((select top 1 PAP_ImageURL from BIZ_PackagePic where PAP_PII_SN=p2.PAG2_PII_SN),'') as NewListImage
,isnull(p2.PAG2_ImageURL,'') as NewListImage2
,dbo.GetFullPathByPII_SN(p2.PAG2_PII_SN, 2) AS picpath
,p2.PAG2_Title
,p1.PAG_Type
,pag2_summary
FROM dbo.BIZ_PackageInfo P1
INNER JOIN dbo.BIZ_PackageInfo2 p2 ON P1.PAG_SN = p2.PAG2_PAG_SN
INNER JOIN dbo.CItyInfo2 ON P1.PAG_CII_SN = dbo.CItyInfo2.CII2_CII_SN AND dbo.CItyInfo2.CII2_LGC = 1
WHERE (p2.PAG2_LGC = ?)
AND (p1.pag_dei_sn = ?)
AND (p2.PAG2_Check = 2)
AND (isnull(P1.DeleteFlag,0) <>1)
) Tmp
where 1=1 ";
if ($city!=""){
$sql .= " AND (CII2_Name ='".$city."')";
}
// $sql .= "and PAG_Code in ('SHALC-1','SHALC-7')";
$sql .= " order by isnull(pag2_order,0) desc,pag_code ";
// echo ($sql);
$param = array($this->CTLGC,$this->dei_sn);
$query = $this->HT->query($sql,$param);
return $query->result();
}
/**
* @description: 获取子类信息列表
* @param {type} $parentid父类的Id
* @return:
* @Date Changed:
*/
function getGuideList($parentid){
if ($parentid < 0 ) {
return null;
}
$sql = "
SELECT is_sort,ic_url,ic_url_title,ic_title, substring(convert(nvarchar(2000),ic_content),0,1000) as ic_summary,ic_photo
,(select top 1 im_value from infoMetas where im_key='meta_addon_picture' and im_ic_id=ic_id) as pic2
FROM dbo.infoContents
inner join infoStructures on ic_id=is_ic_id
WHERE is_sitecode='chinatravel'
and is_parent_id = ?
";
//and ic_status=1
$qurey = $this->HT->query($sql,array($parentid));
return $qurey->result();
}
}
/* End of file Api_model.php */

@ -849,6 +849,94 @@
value="<?php echo get_meta($information->ic_id, 'meta_addon_picture_url'); ?>"/>
</div>
</div>
<?php if ($information->ic_sitecode == 'chinatravel') {
?>
<div>
<div class="col-sm-8">
<label>附加图片说明文字
<a href="javascript:void(0);"
onclick="meta('delete', '<?php echo $information->ic_id; ?>', 'meta_addon_picture_text', $('#meta_addon_picture_text').val())"><i
class="text-muted glyphicon glyphtext-muted glyphicon glyphicon-remove"></i></a>
<a href="javascript:void(0);"
onclick="meta('save', '<?php echo $information->ic_id; ?>', 'meta_addon_picture_text', $('#meta_addon_picture_text').val())"><i
class="text-muted glyphicon glyphtext-muted glyphicon glyphicon-hdd"></i></a>
<a href="javascript:void(0);" title="用于附加的头部大图的alt文字或者图片上的说明文字."><i
class="text-muted glyphicon glyphicon-question-sign"></i></a>
</label>
<input name="meta_addon_picture_text" id="meta_addon_picture_text" type="text"
class="form-control"
value="<?php echo get_meta($information->ic_id, 'meta_addon_picture_text'); ?>"/>
</div>
<div class="col-sm-6">
<label>页面类型
<a href="javascript:void(0);"
onclick="meta('delete', '<?php echo $information->ic_id; ?>', 'meta_ct_page_type', $('#meta_ct_page_type').val())"><i
class="text-muted glyphicon glyphtext-muted glyphicon glyphicon-remove"></i></a>
<a href="javascript:void(0);"
onclick="meta('save', '<?php echo $information->ic_id; ?>', 'meta_ct_page_type', $('#meta_ct_page_type').val())"><i
class="text-muted glyphicon glyphtext-muted glyphicon glyphicon-hdd"></i></a>
<a href="javascript:void(0);" title="用于说明页面的类型,比如选择一日游详细页与选择精华游详细页,这两个页面预订流程不一样"><i
class="text-muted glyphicon glyphicon-question-sign"></i></a>
</label>
<select name="meta_ct_page_type" id="meta_ct_page_type" class="form-control">
<option value="" <?php echo get_meta($information->ic_id, 'meta_ct_page_type') === '' ? 'selected' : false; ?>>
</option>
<option value="daytripindex" <?php echo get_meta($information->ic_id, 'meta_ct_page_type') === 'daytripindex' ? 'selected' : false; ?>>
一日游首页
</option>
<option value="daytripdetail" <?php echo get_meta($information->ic_id, 'meta_ct_page_type') === 'daytripdetail' ? 'selected' : false; ?>>
一日游详细
</option>
<option value="tourindex" <?php echo get_meta($information->ic_id, 'meta_ct_page_type') === 'tourindex' ? 'selected' : false; ?>>
线路首页
</option>
<option value="tourdetail" <?php echo get_meta($information->ic_id, 'meta_ct_page_type') === 'tourdetail' ? 'selected' : false; ?>>
线路详细
</option>
</select>
</div>
<div class="col-sm-6">
<label>页面类型值
<a href="javascript:void(0);"
onclick="meta('delete', '<?php echo $information->ic_id; ?>', 'meta_ct_page_value', $('#meta_ct_page_value').val())"><i
class="text-muted glyphicon glyphtext-muted glyphicon glyphicon-remove"></i></a>
<a href="javascript:void(0);"
onclick="meta('save', '<?php echo $information->ic_id; ?>', 'meta_ct_page_value', $('#meta_ct_page_value').val())"><i
class="text-muted glyphicon glyphtext-muted glyphicon glyphicon-hdd"></i></a>
<a href="javascript:void(0);" title="此属性用于对应上面那个页面类型的值比如选择一日游首页那么这里录入shanghai就可以动态读取上海的一日游列表."><i
class="text-muted glyphicon glyphicon-question-sign"></i></a>
</label>
<input name="meta_ct_page_value" id="meta_ct_page_value" type="text"
class="form-control"
value="<?php echo get_meta($information->ic_id, 'meta_ct_page_value'); ?>"/>
</div>
<div class="col-sm-4">
<label>页面是否有价格
<a href="javascript:void(0);"
onclick="meta('delete', '<?php echo $information->ic_id; ?>', 'meta_ct_page_price', $('#meta_ct_page_price').val())"><i
class="text-muted glyphicon glyphtext-muted glyphicon glyphicon-remove"></i></a>
<a href="javascript:void(0);"
onclick="meta('save', '<?php echo $information->ic_id; ?>', 'meta_ct_page_price', $('#meta_ct_page_price').val())"><i
class="text-muted glyphicon glyphtext-muted glyphicon glyphicon-hdd"></i></a>
<a href="javascript:void(0);" title='页面上如果有价格,那么需要选择这个选项。并且在页面代码里面设置读取标签。一日游:<span class="js_getDayTripPrice" data="线路编码"></span> 线路:<span class="js_getTourPrice" data="线路编码"> </span>'><i
class="text-muted glyphicon glyphicon-question-sign"></i></a>
</label>
<select name="meta_ct_page_price" id="meta_ct_page_price"
class="form-control">
<option value="no" <?php echo get_meta($information->ic_id, 'meta_ct_page_price') === 'no' ? 'selected' : false; ?>>
</option>
<option value="yes" <?php echo get_meta($information->ic_id, 'meta_ct_page_price') === 'yes' ? 'selected' : false; ?>>
</option>
</select>
</div>
</div>
<?php } ?>
<input type="hidden" name="ic_photo_width" id="ic_photo_width"
value="<?php echo $information->ic_photo_width; ?>"/>
@ -2163,7 +2251,7 @@
<input type="checkbox" name="ignore_url_check" id="ignore_url_check"/>忽略URL重复
</label>
<div class="clearfix"></div>
<?php if (in_array($this->config->item('site_code'), array('ch', 'cht', 'gm', 'ah', 'ct'))) { ?>
<?php if (in_array($this->config->item('site_code'), array('ch', 'cht', 'gm', 'ah', 'ct','chinatravel'))) { ?>
<label class="checkbox col-xs-24" style="font-weight: normal;margin-top:0;padding-left: 21px;">
<input type="checkbox" name="auto_update_cache_checkbox" id="auto_update_cache_checkbox"
onclick="get_update_cache_url();" value="<?php echo $information->ic_url; ?>"/>静态更新
@ -2171,7 +2259,7 @@
<?php if (!empty($has_html_file)) { ?>
<label class="checkbox col-xs-24"
style="font-weight: normal;margin-top:0;padding-left: 21px;">
<a href="<?php echo site_url('information/html_file_helper/delete?ic_url=' . $information->ic_url); ?>"
<a href="<?php echo site_url('information/html_file_helper/delete?ic_url=') . $information->ic_url; ?>"
target="_blank">静态文件已生成,点击删除</a>
</label>
<?php } ?>

@ -26,6 +26,17 @@
<?php } ?>
</div>
<div class="col-md-16">
<?php if ($this->config->item("site_code")=="chinatravel" ){ ?>
<div class="row">
<div class="col-md-24">
<div class="panel panel-default">
<div class="panel-heading">此处用来添加根节点,点击右侧按钮<span class="pull-right" title="添加版块根节点"><a href="<?php echo site_url('welcome/AddRootNote/') ?>">添加版块根节点</a></span>
</div>
</div>
</div>
</div>
<?php } ?>
<?php foreach ($groupList as $item) {
if ($item->is_level == 0) { ?>
<div class="row">

@ -0,0 +1,236 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>China Travel: China Travel Agency Featured in Multiple-Destination Tour Design</title>
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta content="yes" name="apple-mobile-web-app-capable">
<meta name="apple-mobile-web-app-title" content="China Travel: China Travel Agency Featured in Multiple-Destination Tour Design">
<meta name="keywords" content="China Travel, China Tours, China city day trips, China Trains">
<meta name="description" content="China Travel organizes China trips with multiple destinations. Single city day tours, Yangtze River cruises and China train bookings are also available.">
<!--@OG:IMAGE@--><?php echo $OGIMAGE ?>
<link rel="canonical" href="https://www.chinatravel.com/">
<link rel="shortcut icon" href="/favicon.ico">
<link rel="preconnect" href="//data.chinatravel.com">
<link rel="dns-prefetch" href="//data.chinatravel.com">
<link rel="dns-prefetch" href="//images.chinatravel.com">
<link rel="dns-prefetch" href="//www.googletagmanager.com">
<link rel="dns-prefetch" href="//www.googleadservices.com">
<link rel="dns-prefetch" href="//www.google-analytics.com">
<link rel="dns-prefetch" href="//connect.facebook.net">
<link rel="dns-prefetch" href="//www.facebook.com">
<!--@MAIN-CSS@--><?php echo $MAINCSS ?>
<!--@ADDON-CSS@--><?php echo $ADDONCSS ?>
<!--@CONSTRUCTION-CODE@--><?php echo $ConstructionCode ?>
</head>
<body>
<!--header-->
<header id="header">
<div class="container">
<div id="logo"><a href="/"><img src="/images/chinatravel-logo.png" alt="China Travel Logo" class="img-responsive"></a></div>
<div class="pull-right">
<div class="top-box">
<ul>
<li><i class="fa fa-envelope-o" aria-hidden="true"></i><a href="mailto:service@chinatravel.com">service@chinatravel.com</a></li>
<li><i class="fa fa-phone" aria-hidden="true"></i><strong>86-773-286-5632</strong> (Intl rates apply)<span class="t-arrow tag hidden"></span></li>
<li><a href="/forms/contactus" class="btn btn-contactus"><i class="fa fa-user-circle-o" aria-hidden="true"></i>Contact Us</a></li>
<li>
<form id="cse-search-box" name="googlesreach" action="https://www.chinatravel.com/search-result.asp">
<input type="hidden" name="cx" value="016808570474272112209:2xv5z3olaus" />
<input type="hidden" name="cof" value="FORID:11" />
<div class="relative">
<input type="text" class="siteser" placeholder="Site Search..." name="q">
<button type="submit" class="sitebtn"><span class="sitebtn-ser"></span></button>
</div>
</form>
</li>
</ul>
</div>
<div class="clear"></div>
<nav class="topnav" role="navigation">
<ul id="js_menuBox">
<li><a href="/tour">China Tours<i class="fa fa-angle-down" aria-hidden="true"></i></a>
<ul>
<span class="container">
<li><a href="/tour/top-china-tour">Top 10 China Tours</a></li>
<li><a href="/tour/panda-tour">China Panda Tours</a></li>
<li><a href="/china-tours/theme/family-tours/">Family Tours</a></li>
<li><a href="/china-tours/theme/silk-road-adventure/">Silk Road</a></li>
<li><a href="/china-tours/theme/china-train-travel/">China Train Travel</a></li>
<li><a href="/china-tours/theme/honeymoon-tours/">Honeymoon Tours</a></li>
</span>
</ul>
</li>
<li><a href="/citytour">Destinations<i class="fa fa-angle-down" aria-hidden="true"></i></a>
<ul>
<span class="container">
<li><a href=" /beijing/tour">Beijing</a></li>
<li><a href="/shanghai/tour">Shanghai</a></li>
<li><a href="/guilin/tour">Guilin</a></li>
<li><a href="/chengdu/tour">Chengdu</a></li>
<li><a href="/zhangjiajie/tour">Zhangjiajie</a></li>
<li><a href="/xian/tour">Xi'an</a></li>
<li><a href=" /huangshan/tour">Huangshan</a></li>
<li><a href="/china-tours/theme/tibet-impression/">Tibet</a></li>
<li><a href="/suzhou/tour">Suzhou</a></li>
</span>
</ul>
</li>
<li><a href="/daytrip">Day Trips<i class="fa fa-angle-down" aria-hidden="true"></i></a>
<ul>
<span class="container">
<li><a href="/shanghai/daytour">Shanghai Day Trips</a></li>
<li><a href="/beijing/daytour">Beijing Day Trips</a></li>
<li><a href="/chengdu/daytour">Chengdu Day Trips</a></li>
<li><a href="/guilin/daytour">Guilin Day Trips</a></li>
<li><a href="/xian/daytour">Xi'an Day Trips</a></li>
<li><a href="/china-day-trips/hong-kong/">Hong Kong Day Trips</a></li>
</span>
</ul>
</li>
<li><a href="/guide">China Guide<i class="fa fa-angle-down" aria-hidden="true"></i></a>
<ul>
<span class="container">
<li><a href="/guide/how-to-plan-a-trip-to-china">Plan Your China Trip</a></li>
<li><a href="/guide/weather">China Weather </a></li>
<li><a href="/guide/visa">China Visas</a></li>
<li><a href="/china-map/">China Maps</a></li>
<li><a href="/beijing">Beijing Travel Guide</a></li>
<li><a href="/shanghai">Shanghai Travel Guide</a></li><br>
</span>
</ul>
</li>
<li><a href="/culture">Culture<i class="fa fa-angle-down" aria-hidden="true"></i></a>
<ul>
<span class="container">
<li><a href="/chinese-food">Chinese Food </a></li>
<li><a href="/chinese-zodiac">Chinese Zodiac</a></li>
<li><a href="/chinese-new-year">Chinese New Year</a></li>
<li><a href="/facts/chinese-history.htm">Chinese History</a></li>
<li><a href="/culture/chinese-tea">Chinese Tea</a></li>
<li><a href="/facts/chinese-kung-fu.htm">Chinese Kong Fu</a></li><br>
</span>
</ul>
</li>
<li><a href="/forms/customize">Create My Trip</a></li>
<li><a href="/about-china-travel">About Us<i class="fa fa-angle-down" aria-hidden="true"></i></a>
<ul class="topnav-down">
<span class="container">
<li><a href="/about-china-travel/team.html">Meet the Team</a></li>
<li><a href="/about-china-travel/why-choose-us.html">Why Choose Us?</a></li>
<li><a href="/about-china-travel/award.html">Our Licenses and Awards</a></li>
<li><a href="/about-china-travel/china-travel-terms-conditions.html">Terms and Conditions</a></li>
<li><a href="/about-china-travel/privacy-policy.html">Privacy Police</a></li>
<li><a href="/about-china-travel/world-vip-choose-us.html">World VIPs Choose Us</a></li>
</span>
</ul>
</li>
</ul>
</nav>
</div>
</div>
</header>
<!--header end-->
<!--@TOP-BANNER@--><?php if (isset($TOPBANNER)){ echo $TOPBANNER; } ?>
<!--@TOP-VIDEO@--><?php if (isset($TOPVIDEO)) {echo $TOPVIDEO;} ?>
<!--header end-->
<main id="main">
<?php echo $CUSTOMCONENT ?>
</main>
<!---mian end---->
<!---tailor made star---->
<div class="content-tm">
<div class="opacity-content">
<div class="content-tm-info">
<div class="container">
<p class="contenttm-title">Need Help?</p>
<p>Request a custom itinerary today and get one step closer to your personalized trip</p>
<p><a href="/forms/customize.html" class="btn-borderwhite">Create Your Trip <i class="fa fa-angle-right" aria-hidden="true"></i></a></p>
</div>
</div>
</div>
</div>
<!---tailor made end---->
<!--footer star-->
<footer id="footer">
<div class="container">
<div class="flex-row">
<div class="footer-left vw-width">
<div class="footer-list">
<p> <a rel="nofollow" href="/contact-china-travel/">Contact Us</a> <a rel="nofollow" href="/about-china-travel/">About Us</a> <a rel="nofollow" href="/about-china-travel/china-travel-terms-conditions.html"> Terms and Conditions</a> <a rel="nofollow" href="/china-travel-faq/">FAQ</a> <a rel="nofollow" href="/feedback/">Testimonial</a> <a rel="nofollow" href="/china-travel-tools/china-trains/">Trains</a> <a rel="nofollow" href="/about-china-travel/online-job.html">Work for Us</a> </p>
</div>
<div class="footer-list">
<img src="/images/icon/partner-logo.png" alt="partner logo" class="img-responsive" />
</div>
<div class="media-box"><span class="pull-left color8">FOLLOWS US ON:</span>
<ul>
<li><a href="https://www.facebook.com/ChinaTravelDotCom" rel="nofollow"><i class="fa fa-facebook"></i>Feacbook</a></li>
<li><a rel="nofollow" href="https://twitter.com/joinchinatravel"><i class="fa fa-twitter"></i>Twitter</a></li>
<li><a rel="nofollow" href="https://www.linkedin.com/groups/China-Travel-Dot-Com-4633649?trk=myg_ugrp_ovr"><i class="fa fa-linkedin" aria-hidden="true"></i>Linkedin</a></li>
</ul>
</div>
</div>
<div class="footer-right vw-width">
<span class="color8 m-left20"> FEATURE ON:</span>
<div class="brands-logo">
<a href="#" rel="nofollow" target="_blank" class="bbc-logo" title="BBC Logo"></a><a href="https://listverse.com/2014/09/14/10-spectacular-lakes-with-sinister-pasts/" rel="nofollow" target="_blank" class="listverse-logo" title="Listverse"></a><a href="https://elpais.com/elpais/2012/11/13/viajero_astuto/1352821786_135282.html" rel="nofollow" target="_blank" class="elpais-logo" title="Elpais"></a>
</div></div>
</div>
</div>
<div class="footer-bottom">
<div class="container">
<div class="footerbottom-logo"><a href="/"><img src="/images/icon/white-logo.png" alt="China Travel Logo" width="65"></a></div>
<div class="footerbottom-text">
<p>call us at:<strong> 86-773-286-5632</strong> (Intl rates apply) </p>
<p>© All Rights Reserved,Chinatravel.com® is a registered trademark </p>
</div>
</div>
</div>
</footer>
<!--footer end-->
<script>
eval(function(p,a,c,k,e,d){e=function(c){return(c<a?"":e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)d[e(c)]=k[c]||e(c);k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1;};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p;}('8.R=10;(4(){3 h=b 26();4 11(X){8.R=X&&X.1I===\'1b\'?h.1V==1:10;1c()}h.1T=11;h.1Z=11;h.S=\'1M:1R/1x;1F,1Q/1P=\'})();5(!c.g){c.g=(4(){3 1u=y.M.1S;3 P=4(l){6 I l==="4"||1u.Q(l)==="[19 1L]"};3 1j=4(D){3 f=1O(D);5(1N(f)){6 0}5(f===0||!1Y(f)){6 f}6(f>0?1:-1)*o.1X(o.20(f))};3 1y=o.1U(2,1W)-1;3 1a=4(D){3 9=1j(D);6 o.1G(o.1H(9,0),1y)};6 4 g(J){3 C=E;3 U=y(J);5(J==p){F b H("c.g 1K 1J 1E-1D 19 - V p 1k B")}3 n=j.m>1?j[1]:2o B;3 T;5(I n!=="B"){5(!P(n)){F b H("c.g: 2q 2j, 2i 2k 2l 2m 2n a 4")}5(j.m>2){T=j[2]}}3 9=1a(U.m);3 A=P(C)?y(b C(9)):b c(9);3 k=0;3 d;1l(k<9){d=U[k];5(n){A[k]=I T==="B"?n(d,k):n.Q(T,d,k)}z{A[k]=d}k+=1}A.m=9;6 A}}())}5(!c.M.v){c.M.v=4(u){3 T,k;5(E==p){F b H("E 1i p 1k V 2p")}3 O=y(E);3 9=O.m>>>0;5(I u!=="4"){F b H(u+" 1i V a 4")}5(j.m>1){T=j[1]}k=0;1l(k<9){3 d;5(k 13 O){d=O[k];u.Q(T,d,k,O)}k++}}}4 1c(2h){3 14=4(i){i.W("1b",4(){i.r.q=1});5(8.R){i.1z("S",i.1B("1A").25(\'.28\',\'.1x\'))}z{i.1z("S",i.1B("1A"))}};3 1p=c.g(e.1q("h[1C=27]"));1p.v(4(7,Y){7.r.q=0;7.r.1w="q 0.18 1e-13-1m";14(7)});3 w=1o();w();4 12(l,1s,1v){3 N=p,L=b 1r();6 4(){3 K=b 1r();22(N);5(K-L>=1v){l();L=K}z{N=21(l,1s)}}}4 1h(1n){3 16=1n.24();6{15:16.15+8.23-e.t.2e,1t:16.1t+8.2d-e.t.2g}}4 1o(){3 G=c.g(e.1q("h[1C=2f]"));G.v(4(7,Y){7.r.q=0;7.r.1w="q 0.18 1e-13-1m"});6 4(){3 1g=8.2a;3 x=(e.t&&e.t.x)||(e.1d&&e.1d.x);G=G.29(4(7,Y){3 1f=1h(7).15;3 Z=1f<1g+x;5(Z){14(7)}6!Z})}}5(8.W){8.W("2c",12(w,s,s),10)}z{5(8.17){8.17("2b",12(w,s,s))}}};',62,151,'|||var|function|if|return|element|window|len||new|Array|kValue|document|number|from|img|target|arguments||fn|length|mapFn|Math|null|opacity|style|500|documentElement|callback|forEach|lazyloader|scrollTop|Object|else||undefined||value|this|throw|lazyImageList|TypeError|typeof|arrayLike|curTime|startTime|prototype|timeout||isCallable|call|isSupportWebp|src||items|not|addEventListener|event|index|hasVisible|false|getResult|throttle|in|loadImageByUrl|top|box|attachEvent|5s|object|toLength|load|createImageLoader|body|ease|offsetTop|seeHeight|getOffset|is|toInteger|or|while|out|el|createLazyloader|imageList|querySelectorAll|Date|delay|left|toStr|atleast|transition|webp|maxSafeInteger|setAttribute|originalsrc|getAttribute|loader|like|array|base64|min|max|type|an|requires|Function|data|isNaN|Number|vuUAAA|UklGRiQAAABXRUJQVlA4IBgAAAAwAQCdASoBAAEAAwA0JaQAA3AA|image|toString|onerror|pow|width|53|floor|isFinite|onload|abs|setTimeout|clearTimeout|pageYOffset|getBoundingClientRect|replace|Image|ready|jpg|filter|innerHeight|onscroll|scroll|pageXOffset|clientTop|lazy|clientLeft|settings|the|provided|second|argument|must|be|void|defined|when'.split('|'),0,{}))
function loadScriptByAsync(src) {var asyncScript = document.createElement("script");asyncScript.async = true;asyncScript.crossorigin = "anonymous";asyncScript.src = src;firstScript=document.getElementsByTagName("script")[0];firstScript.parentNode.insertBefore(asyncScript, firstScript);}
</script>
<!--@PRODUCT-JS@--> <?php echo $PRODUCTJS ?>
<!--@ADDON-JS@--> <?php echo $ADDONJS ?>
<!-- Google -->
<script defer="defer">
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-4273670-1',{'siteSpeedSampleRate': 100});
ga('require', 'linkid', 'linkid.js');
ga('require', 'displayfeatures');
ga('send', 'pageview');
//google trace
(function() {
var reg = new RegExp('(^|&)q=([^&]*)(&|$)');
var r = document.referrer.match(reg);
if (r != null) {
var ref = document.referrer;
var _date = new Date();
_date.setDate(_date.getDate()+30);
var exp = _date.toGMTString();
document.cookie='inquireTrackGoogle='+ref+';path=/;expires='+exp;
}
})();
</script>
<!-- Global site tag (gtag.js) - Google Ads: 823612164 -->
<script async src="https://www.googletagmanager.com/gtag/js?id=AW-823612164"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'AW-823612164');
</script>
<!-- End Google -->
<!--@IN-ARTICLE-GOOGLE@-->
<!--@ADDTHIS-WIDGET@-->
<!--@PASSPARAM@--><?php echo $passParam ?>
</body>
</html>

File diff suppressed because one or more lines are too long

@ -0,0 +1,105 @@
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<directoryBrowse enabled="true" />
<handlers>
<clear />
<add name="php-5.6.28" path="*.php" verb="GET,HEAD,POST" modules="FastCgiModule" scriptProcessor="C:\php-5.6.28\php-cgi.exe" resourceType="Either" requireAccess="Script" />
<add name="WebDAV" path="*" verb="PROPFIND,PROPPATCH,MKCOL,PUT,COPY,DELETE,MOVE,LOCK,UNLOCK" modules="WebDAVModule" resourceType="Unspecified" requireAccess="None" />
<add name="AXD-ISAPI-4.0_32bit" path="*.axd" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
<add name="PageHandlerFactory-ISAPI-4.0_32bit" path="*.aspx" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
<add name="SimpleHandlerFactory-ISAPI-4.0_32bit" path="*.ashx" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
<add name="WebServiceHandlerFactory-ISAPI-4.0_32bit" path="*.asmx" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
<add name="HttpRemotingHandlerFactory-rem-ISAPI-4.0_32bit" path="*.rem" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
<add name="HttpRemotingHandlerFactory-soap-ISAPI-4.0_32bit" path="*.soap" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
<add name="svc-ISAPI-4.0_32bit" path="*.svc" verb="*" modules="IsapiModule" scriptProcessor="C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
<add name="rules-ISAPI-4.0_32bit" path="*.rules" verb="*" modules="IsapiModule" scriptProcessor="C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
<add name="xoml-ISAPI-4.0_32bit" path="*.xoml" verb="*" modules="IsapiModule" scriptProcessor="C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
<add name="xamlx-ISAPI-4.0_32bit" path="*.xamlx" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
<add name="aspq-ISAPI-4.0_32bit" path="*.aspq" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
<add name="cshtm-ISAPI-4.0_32bit" path="*.cshtm" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
<add name="cshtml-ISAPI-4.0_32bit" path="*.cshtml" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
<add name="vbhtm-ISAPI-4.0_32bit" path="*.vbhtm" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
<add name="vbhtml-ISAPI-4.0_32bit" path="*.vbhtml" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
<add name="AXD-ISAPI-4.0_64bit" path="*.axd" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="C:\Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
<add name="PageHandlerFactory-ISAPI-4.0_64bit" path="*.aspx" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="C:\Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
<add name="SimpleHandlerFactory-ISAPI-4.0_64bit" path="*.ashx" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="C:\Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
<add name="WebServiceHandlerFactory-ISAPI-4.0_64bit" path="*.asmx" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="C:\Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
<add name="HttpRemotingHandlerFactory-rem-ISAPI-4.0_64bit" path="*.rem" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="C:\Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
<add name="HttpRemotingHandlerFactory-soap-ISAPI-4.0_64bit" path="*.soap" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="C:\Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
<add name="svc-ISAPI-4.0_64bit" path="*.svc" verb="*" modules="IsapiModule" scriptProcessor="C:\Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
<add name="rules-ISAPI-4.0_64bit" path="*.rules" verb="*" modules="IsapiModule" scriptProcessor="C:\Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
<add name="xoml-ISAPI-4.0_64bit" path="*.xoml" verb="*" modules="IsapiModule" scriptProcessor="C:\Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
<add name="xamlx-ISAPI-4.0_64bit" path="*.xamlx" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="C:\Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
<add name="aspq-ISAPI-4.0_64bit" path="*.aspq" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="C:\Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
<add name="cshtm-ISAPI-4.0_64bit" path="*.cshtm" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="C:\Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
<add name="cshtml-ISAPI-4.0_64bit" path="*.cshtml" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="C:\Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
<add name="vbhtm-ISAPI-4.0_64bit" path="*.vbhtm" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="C:\Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
<add name="vbhtml-ISAPI-4.0_64bit" path="*.vbhtml" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="C:\Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
<add name="TraceHandler-Integrated-4.0" path="trace.axd" verb="GET,HEAD,POST,DEBUG" type="System.Web.Handlers.TraceHandler" preCondition="integratedMode,runtimeVersionv4.0" />
<add name="WebAdminHandler-Integrated-4.0" path="WebAdmin.axd" verb="GET,DEBUG" type="System.Web.Handlers.WebAdminHandler" preCondition="integratedMode,runtimeVersionv4.0" />
<add name="AssemblyResourceLoader-Integrated-4.0" path="WebResource.axd" verb="GET,DEBUG" type="System.Web.Handlers.AssemblyResourceLoader" preCondition="integratedMode,runtimeVersionv4.0" />
<add name="PageHandlerFactory-Integrated-4.0" path="*.aspx" verb="GET,HEAD,POST,DEBUG" type="System.Web.UI.PageHandlerFactory" preCondition="integratedMode,runtimeVersionv4.0" />
<add name="SimpleHandlerFactory-Integrated-4.0" path="*.ashx" verb="GET,HEAD,POST,DEBUG" type="System.Web.UI.SimpleHandlerFactory" preCondition="integratedMode,runtimeVersionv4.0" />
<add name="WebServiceHandlerFactory-Integrated-4.0" path="*.asmx" verb="GET,HEAD,POST,DEBUG" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" preCondition="integratedMode,runtimeVersionv4.0" />
<add name="HttpRemotingHandlerFactory-rem-Integrated-4.0" path="*.rem" verb="GET,HEAD,POST,DEBUG" type="System.Runtime.Remoting.Channels.Http.HttpRemotingHandlerFactory, System.Runtime.Remoting, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" preCondition="integratedMode,runtimeVersionv4.0" />
<add name="HttpRemotingHandlerFactory-soap-Integrated-4.0" path="*.soap" verb="GET,HEAD,POST,DEBUG" type="System.Runtime.Remoting.Channels.Http.HttpRemotingHandlerFactory, System.Runtime.Remoting, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" preCondition="integratedMode,runtimeVersionv4.0" />
<add name="svc-Integrated-4.0" path="*.svc" verb="*" type="System.ServiceModel.Activation.ServiceHttpHandlerFactory, System.ServiceModel.Activation, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" preCondition="integratedMode,runtimeVersionv4.0" />
<add name="rules-Integrated-4.0" path="*.rules" verb="*" type="System.ServiceModel.Activation.ServiceHttpHandlerFactory, System.ServiceModel.Activation, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" preCondition="integratedMode,runtimeVersionv4.0" />
<add name="xoml-Integrated-4.0" path="*.xoml" verb="*" type="System.ServiceModel.Activation.ServiceHttpHandlerFactory, System.ServiceModel.Activation, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" preCondition="integratedMode,runtimeVersionv4.0" />
<add name="xamlx-Integrated-4.0" path="*.xamlx" verb="GET,HEAD,POST,DEBUG" type="System.Xaml.Hosting.XamlHttpHandlerFactory, System.Xaml.Hosting, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" preCondition="integratedMode,runtimeVersionv4.0" />
<add name="aspq-Integrated-4.0" path="*.aspq" verb="GET,HEAD,POST,DEBUG" type="System.Web.HttpForbiddenHandler" preCondition="integratedMode,runtimeVersionv4.0" />
<add name="cshtm-Integrated-4.0" path="*.cshtm" verb="GET,HEAD,POST,DEBUG" type="System.Web.HttpForbiddenHandler" preCondition="integratedMode,runtimeVersionv4.0" />
<add name="cshtml-Integrated-4.0" path="*.cshtml" verb="GET,HEAD,POST,DEBUG" type="System.Web.HttpForbiddenHandler" preCondition="integratedMode,runtimeVersionv4.0" />
<add name="vbhtm-Integrated-4.0" path="*.vbhtm" verb="GET,HEAD,POST,DEBUG" type="System.Web.HttpForbiddenHandler" preCondition="integratedMode,runtimeVersionv4.0" />
<add name="vbhtml-Integrated-4.0" path="*.vbhtml" verb="GET,HEAD,POST,DEBUG" type="System.Web.HttpForbiddenHandler" preCondition="integratedMode,runtimeVersionv4.0" />
<add name="ScriptHandlerFactoryAppServices-Integrated-4.0" path="*_AppService.axd" verb="*" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" preCondition="integratedMode,runtimeVersionv4.0" />
<add name="ScriptResourceIntegrated-4.0" path="ScriptResource.axd" verb="GET,HEAD" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" preCondition="integratedMode,runtimeVersionv4.0" />
<add name="ASPClassic" path="*.asp" verb="GET,HEAD,POST" modules="IsapiModule" scriptProcessor="%windir%\system32\inetsrv\asp.dll" resourceType="File" />
<add name="SecurityCertificate" path="*.cer" verb="GET,HEAD,POST" modules="IsapiModule" scriptProcessor="%windir%\system32\inetsrv\asp.dll" resourceType="File" />
<add name="ISAPI-dll" path="*.dll" verb="*" modules="IsapiModule" resourceType="File" requireAccess="Execute" allowPathInfo="true" />
<add name="TraceHandler-Integrated" path="trace.axd" verb="GET,HEAD,POST,DEBUG" type="System.Web.Handlers.TraceHandler" preCondition="integratedMode" />
<add name="WebAdminHandler-Integrated" path="WebAdmin.axd" verb="GET,DEBUG" type="System.Web.Handlers.WebAdminHandler" preCondition="integratedMode" />
<add name="AssemblyResourceLoader-Integrated" path="WebResource.axd" verb="GET,DEBUG" type="System.Web.Handlers.AssemblyResourceLoader" preCondition="integratedMode" />
<add name="PageHandlerFactory-Integrated" path="*.aspx" verb="GET,HEAD,POST,DEBUG" type="System.Web.UI.PageHandlerFactory" preCondition="integratedMode" />
<add name="SimpleHandlerFactory-Integrated" path="*.ashx" verb="GET,HEAD,POST,DEBUG" type="System.Web.UI.SimpleHandlerFactory" preCondition="integratedMode" />
<add name="WebServiceHandlerFactory-Integrated" path="*.asmx" verb="GET,HEAD,POST,DEBUG" type="System.Web.Services.Protocols.WebServiceHandlerFactory, System.Web.Services, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" preCondition="integratedMode,runtimeVersionv2.0" />
<add name="HttpRemotingHandlerFactory-rem-Integrated" path="*.rem" verb="GET,HEAD,POST,DEBUG" type="System.Runtime.Remoting.Channels.Http.HttpRemotingHandlerFactory, System.Runtime.Remoting, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" preCondition="integratedMode,runtimeVersionv2.0" />
<add name="HttpRemotingHandlerFactory-soap-Integrated" path="*.soap" verb="GET,HEAD,POST,DEBUG" type="System.Runtime.Remoting.Channels.Http.HttpRemotingHandlerFactory, System.Runtime.Remoting, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" preCondition="integratedMode,runtimeVersionv2.0" />
<add name="AXD-ISAPI-2.0" path="*.axd" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv2.0,bitness32" responseBufferLimit="0" />
<add name="PageHandlerFactory-ISAPI-2.0" path="*.aspx" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv2.0,bitness32" responseBufferLimit="0" />
<add name="SimpleHandlerFactory-ISAPI-2.0" path="*.ashx" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv2.0,bitness32" responseBufferLimit="0" />
<add name="WebServiceHandlerFactory-ISAPI-2.0" path="*.asmx" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv2.0,bitness32" responseBufferLimit="0" />
<add name="HttpRemotingHandlerFactory-rem-ISAPI-2.0" path="*.rem" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv2.0,bitness32" responseBufferLimit="0" />
<add name="HttpRemotingHandlerFactory-soap-ISAPI-2.0" path="*.soap" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv2.0,bitness32" responseBufferLimit="0" />
<add name="AXD-ISAPI-2.0-64" path="*.axd" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v2.0.50727\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv2.0,bitness64" responseBufferLimit="0" />
<add name="PageHandlerFactory-ISAPI-2.0-64" path="*.aspx" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v2.0.50727\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv2.0,bitness64" responseBufferLimit="0" />
<add name="SimpleHandlerFactory-ISAPI-2.0-64" path="*.ashx" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v2.0.50727\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv2.0,bitness64" responseBufferLimit="0" />
<add name="WebServiceHandlerFactory-ISAPI-2.0-64" path="*.asmx" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v2.0.50727\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv2.0,bitness64" responseBufferLimit="0" />
<add name="HttpRemotingHandlerFactory-rem-ISAPI-2.0-64" path="*.rem" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v2.0.50727\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv2.0,bitness64" responseBufferLimit="0" />
<add name="HttpRemotingHandlerFactory-soap-ISAPI-2.0-64" path="*.soap" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v2.0.50727\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv2.0,bitness64" responseBufferLimit="0" />
<add name="CGI-exe" path="*.exe" verb="*" modules="CgiModule" resourceType="File" requireAccess="Execute" allowPathInfo="true" />
<add name="SSINC-stm" path="*.stm" verb="GET,POST" modules="ServerSideIncludeModule" resourceType="File" />
<add name="SSINC-shtm" path="*.shtm" verb="GET,POST" modules="ServerSideIncludeModule" resourceType="File" />
<add name="SSINC-shtml" path="*.shtml" verb="GET,POST" modules="ServerSideIncludeModule" resourceType="File" />
<add name="TRACEVerbHandler" path="*" verb="TRACE" modules="ProtocolSupportModule" requireAccess="None" />
<add name="OPTIONSVerbHandler" path="*" verb="OPTIONS" modules="ProtocolSupportModule" requireAccess="None" />
<add name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" path="*." verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
<add name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" path="*." verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="C:\Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
<add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="GET,HEAD,POST,DEBUG" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
<add name="StaticFile" path="*" verb="*" modules="StaticFileModule,DefaultDocumentModule,DirectoryListingModule" resourceType="Either" requireAccess="Read" />
</handlers>
<defaultDocument>
<files>
<clear />
<add value="index.php" />
<add value="Default.htm" />
<add value="Default.asp" />
<add value="index.htm" />
<add value="index.html" />
<add value="iisstart.htm" />
<add value="default.aspx" />
</files>
</defaultDocument>
</system.webServer>
</configuration>

@ -158,19 +158,19 @@ function information_check() {
description_length = parseInt(description_length / 2)
}
if (description_length < 80 || description_length > 160) {
$("#error-tops").append("<li><small>SEO述长度必须在80~160个字符之间[" + description_length + "个]</small></li>");
$("#error-tops").append("<li><small>SEO述长度必须在80~160个字符之间[" + description_length + "个]</small></li>");
flag = false
}
var og_description = $("#meta_note").val();
var og_description_length = get_string_length(og_description);
if (sitecode == 'jp' || sitecode == 'ru') og_description_length = parseInt(og_description_length / 2);
if (og_description_length < 80 || og_description_length > 160) {
$("#error-tops").append('<li><small>og:description信备注长度必须在80~160个字符之间[' + og_description_length + '个]</small></li>');
$("#error-tops").append('<li><small>og:description信备注长度必须在80~160个字符之间[' + og_description_length + '个]</small></li>');
flag = false;
}
var content_num = content_length;
if (content_num < 1500) {
$("#error-tops").append("<li><small>文章字数能少于1500字[" + content_num + "字]</small></li>");
$("#error-tops").append("<li><small>文章字数能少于1500字[" + content_num + "字]</small></li>");
flag = false
}
var content = $("#ic_content").val();
@ -202,7 +202,7 @@ function information_check() {
}
});
if (a_num > 50) {
$("#error-tops").append("<li><small>链接数量不能超过50个[" + a_num + "个]</small></li>");
$("#error-tops").append("<li><small>链接数針丝能超过50个[" + a_num + "个]</small></li>");
flag = false
}
var h1_count = 0;
@ -215,7 +215,7 @@ function information_check() {
title = title.split(",")[0];
title = $.trim(title);
if (h1_content.toLowerCase() != title.toLowerCase()) {
$("#error-tops").append("<li><small>H1与Title的第一个关键词不相同</small></li>");
$("#error-tops").append("<li><small>H1与Title的第一个关键话丝相坌</small></li>");
flag = false
}
}
@ -230,14 +230,14 @@ function information_check() {
title = $.trim(title);
if (h1_content.toLowerCase() != title.toLowerCase()) {
img_alt_tips = '{"name":"h1_content","value":""},';
$("#error-tops").append("<li><small>H1与Title的第一个关键词不相同</small></li>");
$("#error-tops").append("<li><small>H1与Title的第一个关键话丝相坌</small></li>");
flag = false
}
}
})
}
if (h1_count > 1) {
$("#error-tops").append("<li><small>有且能有一个H1标签[" + h1_count + "个]</small></li>");
$("#error-tops").append("<li><small>有且能有一个H1标签[" + h1_count + "个]</small></li>");
flag = false
}
var display_count = $("#display_count").text();
@ -285,7 +285,7 @@ function information_check() {
$(".error-tips").removeClass("hide")
}
if (!unsubmit_flag) {
alert('文章存在空链接或者有图片没有填写Alt关键字,请完成后再进行提交');
alert('文章存在空链接或者有图片没有填写Alt关键字,请完戝坎冝进行杝交');
$("#rule_check_flag").val('0')
} else {
$("#rule_check_flag").val('1')
@ -323,7 +323,7 @@ function successfun(responseText, statusText, xhr, form) {
}
} else {
if (responseText[key].name == "ok_go") {
$.modaldialog.success('提交成功,正在跳转到下个页面...');
$.modaldialog.success('杝交戝功,正在跳转到下个页面...');
setTimeout(function() {
window.location.href = responseText[key].value
},
@ -381,15 +381,15 @@ function updateCdnCache(url, msg_obj){
success: function(json,Status) {
//console.log(json.msg);
if(json.msg == 'success'){
$("#" + msg_obj).html('cdn缓存更新成功!');
$("#" + msg_obj).html('cdn缓存更新戝功=');
}else{
$("#" + msg_obj).html('cdn缓存更新失败');
$("#" + msg_obj).html('cdn缓存更新失败');
}
},
error:function(json,responseText){
console.log(json);
console.log(responseText);
$("#" + msg_obj).html('cdn更新失败,请联系cyc');
$("#" + msg_obj).html('cdn更新失败,请蝔系cyc');
}
})
}
@ -585,13 +585,13 @@ $.post(url, {'psd_URL':ic_url, 'psd_SiteCode':sitecode}, function(data){
if (json.result == 'ok'){
$("#mobile_friendly_status").html(json.data);
} else{
$("#mobile_friendly_status").html('获取不到分数');
$("#mobile_friendly_status").html('获坖丝到分数');
}
$('#btn-mobile-friendly').button('reset');
});
}
//弹出静态化更新窗口,并自动点击更新
//弹出静思化更新窗坣,并自动点击更新
function show_cache_refresh_modal(url){
$('#static_html_url').val(url);
updateCache($('#static_html_url').val(), 'cache_refresh_modal_msg');

Loading…
Cancel
Save