Merge branch 'master' of github.com:hainatravel/information-system

master
赵鹏 11 months ago
commit 277aeebe30

@ -900,7 +900,32 @@ class Information extends CI_Controller
break; break;
default: default:
} }
$breadcrumb_data = $this->Information_model->get_path_exclude_self($information->is_id, $information->is_path);
// CH Home 下层节点名称和链接映射
$group_map = [
278008010 => [
'ic_url' => '/travelguide/culture/',
'ic_url_title' => 'Chinese Culture'
],
278008011 => [
'ic_url' => '/citytour/',
'ic_url_title' => 'Destinations'
],
278008012 => [
'ic_url' => '/aboutus/',
'ic_url_title' => 'About Us'
],
278008013 => [
'ic_url' => '/citytour/',
'ic_url_title' => 'City Tours'
],
278008014 => [
'ic_url' => '/tour/',
'ic_url_title' => 'China Tours'
]
];
$breadcrumb_data = $this->Information_model->get_breadcrumb_data($information->is_id, $information->is_path, $group_map);
$breadcrumb_structured_data_content = $this->load->view( $breadcrumb_structured_data_content = $this->load->view(
$template_path . '-structured-data-breadcrumb', $template_path . '-structured-data-breadcrumb',
@ -1047,7 +1072,7 @@ class Information extends CI_Controller
$author = $this->Operator_model->get_author_nikename($information->ic_author); $author = $this->Operator_model->get_author_nikename($information->ic_author);
if (!empty($author)) { if (!empty($author)) {
$data_H1['author'] = $author->OPI_FirstName; $data_H1['author'] = $author->OPI_FirstName;
$data_H1['OPI_Code'] = $author->OPI_Code; $data_H1['OPI_Code'] = $author->OPI_Code;
} else { } else {
$author_web = $this->Infoauthors_model->detail_by_id($information->ic_author); //原始作者,可能是在线作者等 $author_web = $this->Infoauthors_model->detail_by_id($information->ic_author); //原始作者,可能是在线作者等
if (!empty($author_web)) { if (!empty($author_web)) {
@ -1977,6 +2002,28 @@ class Information extends CI_Controller
} }
} }
// 顾问英文名反馈标签
$feedback_advisor_array = [];
preg_match_all('^<!--@FEEDBACK-advisor_(.*)@-->^', $information->ic_content, $feedback_advisor_array);
if (!empty($feedback_advisor_array)) {
foreach ($feedback_advisor_array[0] as $index => $tag_name) {
$advisor_name = $feedback_advisor_array[1][$index];
$feedback_list = $this->Feedback_model->get_feedback_by_advisor_name($advisor_name);
$feedback_content = $this->load->view(
'mobile_first/gh-feedback-advisor-list',
array('feedback_list' => $feedback_list),
true
);
$information->ic_content = str_replace(
$tag_name,
$feedback_content,
$information->ic_content
);
}
}
if (is_file('D:/wwwroot/origin-www.globalhighlights.com/css/gh-global.css')) { //主样式表,内联模式,优先读取本地,没有在从网络读取,为了加速 if (is_file('D:/wwwroot/origin-www.globalhighlights.com/css/gh-global.css')) { //主样式表,内联模式,优先读取本地,没有在从网络读取,为了加速
$main_css_string = compress_css(file_get_contents('D:/wwwroot/origin-www.globalhighlights.com/css/gh-global.css')); $main_css_string = compress_css(file_get_contents('D:/wwwroot/origin-www.globalhighlights.com/css/gh-global.css'));
} else { } else {
@ -2276,6 +2323,15 @@ class Information extends CI_Controller
); );
$information->ic_content = str_replace('<!--@LANTERN-FORM@-->', $lantern_form_content, $information->ic_content); $information->ic_content = str_replace('<!--@LANTERN-FORM@-->', $lantern_form_content, $information->ic_content);
// 水灯节2025表单
$lantern_form_content_2025 = $this->load->view(
'mobile_first/ah-lantern-form-2025',
array('information' => $information),
true
);
$information->ic_content = str_replace('<!--@LANTERN-FORM-2025@-->', $lantern_form_content_2025, $information->ic_content);
// CAD 跨年表单 // CAD 跨年表单
$new_year_countdown_form_content = $this->load->view( $new_year_countdown_form_content = $this->load->view(
'mobile_first/ah-new-year-countdown', 'mobile_first/ah-new-year-countdown',

@ -200,4 +200,56 @@ class Feedback_model extends CI_Model {
return $feedback_list; return $feedback_list;
} }
/**
* 根据顾问英文名查找反馈信息
*/
function get_feedback_by_advisor_name($advisor_name) {
$feedback_query =
$this->HT->query("
select top 3
tad.tad_content,
tai.tai_customerid,
tai.tai_title,
tai.tai_getdate,
tai.tai_url,
vci.cii2_name
from Eva_TAInfo tai
join Eva_TADetail tad on tad.TAD_TAI_SN = tai.TAI_SN
join V_CIty_Info vci on vci.cii_sn = tai.tai_cii_sn and vci.LGC_LGC = 1
where tad.TAD_SN in (
select TAD_SN
from Eva_TADetail e
join V_Operator_Info v on e.TAD_ObjList like '%,' + cast(v.OPI_SN as varchar) + ',%'
where e.TAD_ObjType = 99002
and v.LGC_LGC = 1
and v.OPI2_Name = ?
)
order by tai.tai_getdate desc;
",
array($advisor_name));
$feedback_result = $feedback_query->result();
$feedback_list = [];
$customer_id_list = [];
foreach ($feedback_result as $feedback_row) {
$createdOn = new DateTime($feedback_row->tai_getdate);
$createdOnString = $createdOn->format('M Y');
if (!in_array($feedback_row->tai_customerid, $customer_id_list)) {
$feedback = [
'title' => $feedback_row->tai_title,
'customer' => $feedback_row->tai_customerid,
'content' => $feedback_row->tad_content,
'url' => $feedback_row->tai_url,
'createdOn' => $createdOnString
];
$feedback_list[] = $feedback;
$customer_id_list[] = $feedback_row->tai_customerid;
}
}
return $feedback_list;
}
} }

@ -31,6 +31,7 @@
'LXW' => 'https://www.globalhighlights.com/aboutus/team/carper-li', 'LXW' => 'https://www.globalhighlights.com/aboutus/team/carper-li',
'zzyGH' => 'https://www.globalhighlights.com/aboutus/team/ruru-zhou', 'zzyGH' => 'https://www.globalhighlights.com/aboutus/team/ruru-zhou',
]; ];
$OPI_Code = empty($OPI_Code) ? '' : $OPI_Code;
if (!empty($meta_news_createdate)) {?> if (!empty($meta_news_createdate)) {?>
<div class="authorupdate"> <div class="authorupdate">
Written by Written by

@ -0,0 +1,552 @@
<script src="https://www.recaptcha.net/recaptcha/enterprise.js?render=6Lf828MhAAAAANNetijCXKwW5ARyhcJ-b1Hhslja"></script>
<div class="tmbottom">
<h3 style="font-size: 24px; line-height: 22px;">Chiang Mai CAD Yi Peng Festival 2025</h3>
<form id='ticket_form' action="https://www.asiahighlights.com/orders/lantern_save" method="post" >
<p style="font-size: 22px;"><strong>Select Date:</strong></p>
<div class="selectHotl" style="margin-bottom: 20px;" id="ticket_date_november15th">
<div class="optionLable">
<input type="radio" value="2025-11-5" checked id="november15th" name="ticket_date">
<label for="november15th">
November 5th, 2025
</label>
</div>
<div class="optionLable" id="ticket_date_november16th">
<input type="radio" value="2025-11-6" id="november16th" name="ticket_date">
<label for="november16th">
November 6th, 2025
</label>
</div>
</div>
<p style="font-size: 22px;"><strong>Select a Ticket Type:</strong></p>
<div class="selectHotl" style="margin-bottom: 20px;">
<div class="optionLable" id="ticket_type_premium_khomloy">
<input type="radio" value="Premium+Transfer+Dinner" checked id="premium_khomloy" data-price="179" name="ticket_type">
<label for="premium_khomloy" style="font-size:18px;">
Premium+Transfer+Dinner
<div class="selectionMemo">
US$179 (6400THB)
</div>
</label>
</div>
<div class="optionLable" id="ticket_type_vip_khomloy">
<input type="radio" value="VIP+Transfer+Dinner" id="vip_khomloy" data-price="169" name="ticket_type">
<label for="vip_khomloy" style="font-size:18px;">
VIP+Transfer+Dinner
<div class="selectionMemo">
US$169 (5900THB)
</div>
</label>
</div>
<div class="optionLable" id="ticket_type_standard_khomloy">
<input type="radio" value="Standard+Transfer+Dinner" id="standard_khomloy" data-price="129" name="ticket_type">
<label for="standard_khomloy" style="font-size:18px;">
Standard+Transfer+Dinner
<div class="selectionMemo">
US$129 (4600THB)
</div>
</label>
</div>
</div>
<div id="ticket_type_errmsg" style="display: none">
<div class="requiredArea" style="margin-top:-10px;">Please select at least one option.</div>
</div>
<p style="font-size: 22px;"><strong>Select Ticket Quantity</strong></p>
<div class="peopleSelect" style="width: auto;">
<span class="formMemo">
Adults and older children (8+ years old)
</span>
<div class="numberBtn">
<input class="minaddBtn reduceadult" id='minusButton' type="button" value="-">
<input class="number" id="adultNumberValue" readonly="readonly" type="text" value="1"
name="adult" style="width: 50px;
height: 22px;
top: -5px;
position: relative;
text-align: center;
font-size: 20px;">
<input class="minaddBtn addadult" id='plusButton' type="button" value="+">
</div>
</div>
<div class="payonline_price">Total price: <strong id="totalPriceText">$129</strong></div>
<p style="margin-top: 50px;"><strong>Please provide correct personal info. Double check.</strong></p>
<input class="FullName" id="ticket_realname" name="fullname"
placeholder="Your name * (exactly per passport)" required="" type="text" value="" />
<div id="ticket_realname_errmsg" style="display: none">
<div class="requiredArea" style="margin-top:-10px;">Please enter your name.</div>
</div>
<input class="EmailAddress" id="ticket_email" name="email" placeholder="Email *" required="" type="text"
value="" />
<div id="ticket_email_errmsg" style="display: none">
<div class="requiredArea" style="margin-top:-10px;">Please enter your email.</div>
</div>
<div id="ticket_email_verify_errmsg" style="display: none">
<div class="requiredArea" style="margin-top:-10px;">Please verify your email.</div>
</div>
<select name="country_code" class="country_code">
<option style="font-weight: 600;" value="United States +1">United States&nbsp; &nbsp;+1</option>
<option style="font-weight: 600;" value="United Kingdom +44">United Kingdom&nbsp; &nbsp;+44</option>
<option style="font-weight: 600;" value="Australia +61">Australia&nbsp; &nbsp;+61</option>
<option style="font-weight: 600;" value="Canada +1">Canada&nbsp; &nbsp;+1</option>
<option style="font-weight: 600;" value="France +33">France&nbsp; &nbsp;+33</option>
<option style="font-weight: 600;" value="Germany +49">Germany&nbsp; &nbsp;+49</option>
<option style="font-weight: 600; " value="Italy +39">Italy&nbsp; &nbsp;+39</option>
<option style="font-weight: 600; " value="Mexico +52">Mexico&nbsp; &nbsp;+52</option>
<option style="font-weight: 600; " value="Netherlands +31">Netherlands&nbsp; &nbsp;+31</option>
<option style="font-weight: 600; " value="Singapore +65">Singapore&nbsp; &nbsp;+65</option>
<option value="Afghanistan +93">Afghanistan &nbsp; &nbsp;+93</option>
<option value="Albania +355">Albania &nbsp; &nbsp;+355</option>
<option value="Algeria +213">Algeria&nbsp; &nbsp;+213</option>
<option value="American Samoa +1">American Samoa&nbsp; &nbsp;+1684</option>
<option value="Andorra +376">Andorra&nbsp; &nbsp;+376</option>
<option value="Angola +244">Angola&nbsp; &nbsp;+244</option>
<option value="Anguilla +1">Anguilla&nbsp; &nbsp;+1264</option>
<option value="Australia +61">Australia&nbsp; &nbsp;+61</option>
<option value="Antigua and Barbuda +1">Antigua and Barbuda&nbsp; &nbsp;+1268</option>
<option value="Argentina +54">Argentina&nbsp; &nbsp;+54</option>
<option value="Armenia +374">Armenia &nbsp; &nbsp;+374</option>
<option value="Aruba +297">Aruba&nbsp; &nbsp;+297</option>
<option value="Ascension Island +247">Ascension Island&nbsp; &nbsp;+247</option>
<option value="Austria +43">Austria&nbsp; &nbsp;+43</option>
<option value="Azerbaijan +994">Azerbaijan&nbsp; &nbsp;+994</option>
<option value="Bahamas +1">Bahamas&nbsp; &nbsp;+1242</option>
<option value="Bahrain +973">Bahrain&nbsp; &nbsp;+973</option>
<option value="Bangladesh +880">Bangladesh&nbsp; &nbsp;+880</option>
<option value="Barbados +1">Barbados&nbsp; &nbsp;+1246</option>
<option value="Belarus +375">Belarus&nbsp; &nbsp;+375</option>
<option value="Belgium +32">Belgium&nbsp; &nbsp;+32</option>
<option value="Belize +501">Belize&nbsp; &nbsp;+501</option>
<option value="Benin +229">Benin&nbsp; &nbsp;+229</option>
<option value="Bermuda +1">Bermuda&nbsp; &nbsp;+1441</option>
<option value="Bhutan +975">Bhutan&nbsp; &nbsp;+975</option>
<option value="Bolivia +591">Bolivia&nbsp; &nbsp;+591</option>
<option value="Bosnia and Herzegovina +387">Bosnia and Herzegovina&nbsp; &nbsp;+387</option>
<option value="Botswana +267">Botswana&nbsp; &nbsp;+267</option>
<option value="Brazil +55">Brazil&nbsp; &nbsp;+55</option>
<option value="British Indian Ocean Territory +246">British Indian Ocean Territory&nbsp; &nbsp;+246</option>
<option value="British Virgin Islands +1">British Virgin Islands&nbsp; &nbsp;+1284</option>
<option value="Brunei +673">Brunei&nbsp; &nbsp;+673</option>
<option value="Bulgaria +359">Bulgaria &nbsp; &nbsp;+359</option>
<option value="Burkina Faso +226">Burkina Faso&nbsp; &nbsp;+226</option>
<option value="Burundi +257">Burundi&nbsp; &nbsp;+257</option>
<option value="Cambodia +855">Cambodia&nbsp; &nbsp;+855</option>
<option value="Cameroon +237">Cameroon&nbsp; &nbsp;+237</option>
<option value="Canada +1">Canada&nbsp; &nbsp;+1</option>
<option value="Cape Verde +238">Cape Verde&nbsp; &nbsp;+238</option>
<option value="Caribbean Netherlands +599">Caribbean Netherlands&nbsp; &nbsp;+599</option>
<option value="Cayman Islands +1">Cayman Islands&nbsp; &nbsp;+1345</option>
<option value="Central African Republic +236">Central African Republic&nbsp; &nbsp;+236</option>
<option value="Chad +235">Chad&nbsp; &nbsp;+235</option>
<option value="Chile +56">Chile&nbsp; &nbsp;+56</option>
<option value="China +86">China&nbsp; &nbsp;+86</option>
<option value="Christmas Island +61">Christmas Island&nbsp; &nbsp;+6189164</option>
<option value="Cocos Islands +61">Cocos Islands&nbsp; &nbsp;+6189162</option>
<option value="Colombia +57">Colombia&nbsp; &nbsp;+57</option>
<option value="Comoros +269">Comoros&nbsp; &nbsp;+269</option>
<option value="Congo +243">Congo (DRC)&nbsp; &nbsp;+243</option>
<option value="Congo +242">Congo (Republic)&nbsp; &nbsp;+242</option>
<option value="Cook Islands +682">Cook Islands&nbsp; &nbsp;+682</option>
<option value="Costa Rica +506">Costa Rica&nbsp; &nbsp;+506</option>
<option value="Côte d'Ivoire +225">Côte d'Ivoire&nbsp; &nbsp;+225</option>
<option value="Croatia +385">Croatia&nbsp; &nbsp;+385</option>
<option value="Cuba +53">Cuba&nbsp; &nbsp;+53</option>
<option value="Curaçao +599">Curaçao&nbsp; &nbsp;+599</option>
<option value="Cyprus +357">Cyprus&nbsp; &nbsp;+357</option>
<option value="Czech Republic +420">Czech Republic&nbsp; &nbsp;+420</option>
<option value="Denmark +45">Denmark&nbsp; &nbsp;+45</option>
<option value="Djibouti +253">Djibouti&nbsp; &nbsp;+253</option>
<option value="Dominica +1">Dominica&nbsp; &nbsp;+1767</option>
<option value="Dominican Republic +1">Dominican Republic&nbsp; &nbsp;+1809</option>
<option value="Ecuador +593">Ecuador&nbsp; &nbsp;+593</option>
<option value="Egypt +20">Egypt&nbsp; &nbsp;+20</option>
<option value="El Salvador +503">El Salvador&nbsp; &nbsp;+503</option>
<option value="Equatorial Guinea +240">Equatorial Guinea&nbsp; &nbsp;+240</option>
<option value="Eritrea +291">Eritrea&nbsp; &nbsp;+291</option>
<option value="Estonia +372">Estonia&nbsp; &nbsp;+372</option>
<option value="Eswatini +268">Eswatini&nbsp; &nbsp;+268</option>
<option value="Ethiopia +251">Ethiopia&nbsp; &nbsp;+251</option>
<option value="Falkland Islands +500">Falkland Islands&nbsp; &nbsp;+500</option>
<option value="Faroe Islands +298">Faroe Islands&nbsp; &nbsp;+298</option>
<option value="Fiji +679">Fiji&nbsp; &nbsp;+679</option>
<option value="Finland +358">Finland&nbsp; &nbsp;+358</option>
<option value="France +33">France&nbsp; &nbsp;+33</option>
<option value="French Guiana +594">French Guiana&nbsp; &nbsp;+594</option>
<option value="French Polynesia +689">French Polynesia&nbsp; &nbsp;+689</option>
<option value="Gabon +241">Gabon&nbsp; &nbsp;+241</option>
<option value="Gambia +220">Gambia&nbsp; &nbsp;+220</option>
<option value="Georgia +995">Georgia&nbsp; &nbsp;+995</option>
<option value="Germany +49">Germany&nbsp; &nbsp;+49</option>
<option value="Ghana +233">Ghana&nbsp; &nbsp;+233</option>
<option value="Gibraltar +350">Gibraltar&nbsp; &nbsp;+350</option>
<option value="Greece +30">Greece&nbsp; &nbsp;+30</option>
<option value="Greenland +299">Greenland&nbsp; &nbsp;+299</option>
<option value="Grenada +1">Grenada&nbsp; &nbsp;+1473</option>
<option value="Guadeloupe +590">Guadeloupe&nbsp; &nbsp;+590</option>
<option value="Guam +1">Guam&nbsp; &nbsp;+1671</option>
<option value="Guatemala +502">Guatemala&nbsp; &nbsp;+502</option>
<option value="Guernsey +44">Guernsey&nbsp; &nbsp;+441481</option>
<option value="Guinea +224">Guinea&nbsp; &nbsp;+224</option>
<option value="Guinea-Bissau +245">Guinea-Bissau&nbsp; &nbsp;+245</option>
<option value="Guyana +592">Guyana&nbsp; &nbsp;+592</option>
<option value="Haiti +509">Haiti&nbsp; &nbsp;+509</option>
<option value="Honduras +504">Honduras&nbsp; &nbsp;+504</option>
<option value="Hong Kong +852">Hong Kong&nbsp; &nbsp;+852</option>
<option value="Hungary +36">Hungary&nbsp; &nbsp;+36</option>
<option value="Iceland +354">Iceland&nbsp; &nbsp;+354</option>
<option value="India +91">India&nbsp; &nbsp;+91</option>
<option value="Indonesia +62">Indonesia&nbsp; &nbsp;+62</option>
<option value="Iran +98">Iran&nbsp; &nbsp;+98</option>
<option value="Iraq +964">Iraq&nbsp; &nbsp;+964</option>
<option value="Ireland +353">Ireland&nbsp; &nbsp;+353</option>
<option value="Isle of Man +44">Isle of Man&nbsp; &nbsp;+44</option>
<option value="Israel +972">Israel&nbsp; &nbsp;+972</option>
<option value="Italy +39">Italy&nbsp; &nbsp;+39</option>
<option value="Jamaica +1">Jamaica&nbsp; &nbsp;+1876</option>
<option value="Japan +81">Japan&nbsp; &nbsp;+81</option>
<option value="Jersey +44">Jersey&nbsp; &nbsp;+44</option>
<option value="Jordan +962">Jordan&nbsp; &nbsp;+962</option>
<option value="Kazakhstan +7">Kazakhstan &nbsp; &nbsp;+7</option>
<option value="Kenya +254">Kenya&nbsp; &nbsp;+254</option>
<option value="Kiribati +686">Kiribati&nbsp; &nbsp;+686</option>
<option value="Kosovo +383">Kosovo&nbsp; &nbsp;+383</option>
<option value="Kuwait +965">Kuwait&nbsp; &nbsp;+965</option>
<option value="Kyrgyzstan +996">Kyrgyzstan &nbsp; &nbsp;+996</option>
<option value="Laos +856">Laos&nbsp; &nbsp;+856</option>
<option value="Latvia +371">Latvia &nbsp; &nbsp;+371</option>
<option value="Lebanon +961">Lebanon&nbsp; &nbsp;+961</option>
<option value="Lesotho +266">Lesotho&nbsp; &nbsp;+266</option>
<option value="Liberia +231">Liberia&nbsp; &nbsp;+231</option>
<option value="Libya +218">Libya&nbsp; &nbsp;+218</option>
<option value="Liechtenstein +423">Liechtenstein&nbsp; &nbsp;+423</option>
<option value="Lithuania +370">Lithuania&nbsp; &nbsp;+370</option>
<option value="Luxembourg +352">Luxembourg&nbsp; &nbsp;+352</option>
<option value="Macau +853">Macau&nbsp; &nbsp;+853</option>
<option value="Macedonia +389">Macedonia&nbsp; &nbsp;+389</option>
<option value="Madagascar +261">Madagascar&nbsp; &nbsp;+261</option>
<option value="Malawi +265">Malawi&nbsp; &nbsp;+265</option>
<option value="Malaysia +60">Malaysia&nbsp; &nbsp;+60</option>
<option value="Maldives +960">Maldives&nbsp; &nbsp;+960</option>
<option value="Mali +223">Mali&nbsp; &nbsp;+223</option>
<option value="Malta +356">Malta&nbsp; &nbsp;+356</option>
<option value="Marshall +692">Marshall Islands&nbsp; &nbsp;+692</option>
<option value="Martinique +596">Martinique&nbsp; &nbsp;+596</option>
<option value="Mauritania +222">Mauritania&nbsp; &nbsp;+222</option>
<option value="Mauritius +230">Mauritius&nbsp; &nbsp;+230</option>
<option value="Mayotte +262">Mayotte&nbsp; &nbsp;+262</option>
<option value="Micronesia +691">Micronesia&nbsp; &nbsp;+691</option>
<option value="Moldova +373">Moldova&nbsp; &nbsp;+373</option>
<option value="Monaco +377">Monaco&nbsp; &nbsp;+377</option>
<option value="Mongolia +976">Mongolia&nbsp; &nbsp;+976</option>
<option value="Montenegro +382">Montenegro&nbsp; &nbsp;+382</option>
<option value="Montserrat +1">Montserrat&nbsp; &nbsp;+1664</option>
<option value="Morocco +212">Morocco&nbsp; &nbsp;+212</option>
<option value="Mozambique +258">Mozambique&nbsp; &nbsp;+258</option>
<option value="Myanmar +95">Myanmar &nbsp; &nbsp;+95</option>
<option value="Namibia +264">Namibia&nbsp; &nbsp;+264</option>
<option value="Nauru +674">Nauru&nbsp; &nbsp;+674</option>
<option value="Nepal +977">Nepal&nbsp; &nbsp;+977</option>
<option value="New Caledonia +687">New Caledonia&nbsp; &nbsp;+687</option>
<option value="New Zealand +64">New Zealand&nbsp; &nbsp;+64</option>
<option value="Nicaragua +505">Nicaragua&nbsp; &nbsp;+505</option>
<option value="Niger +227">Niger&nbsp; &nbsp;+227</option>
<option value="Nigeria +234">Nigeria&nbsp; &nbsp;+234</option>
<option value="Niue +683">Niue&nbsp; &nbsp;+683</option>
<option value="Norfolk Island +672">Norfolk Island&nbsp; &nbsp;+6723</option>
<option value="North Korea +850">North Korea&nbsp; &nbsp;+850</option>
<option value="Northern Mariana Islands +1">Northern Mariana Islands&nbsp; &nbsp;+1670</option>
<option value="Norway +47">Norway&nbsp; &nbsp;+47</option>
<option value="Oman +968">Oman&nbsp; &nbsp;+968</option>
<option value="Pakistan +92">Pakistan&nbsp; &nbsp;+92</option>
<option value="Palau +680">Palau&nbsp; &nbsp;+680</option>
<option value="Palestine +970">Palestine &nbsp; &nbsp;+970</option>
<option value="Panama +507">Panama &nbsp; &nbsp;+507</option>
<option value="Papua New Guinea 675">Papua New Guinea&nbsp; &nbsp;+675</option>
<option value="Paraguay +595">Paraguay&nbsp; &nbsp;+595</option>
<option value="Peru +51">Peru &nbsp; &nbsp;+51</option>
<option value="Philippines +63">Philippines&nbsp; &nbsp;+63</option>
<option value="Poland +48">Poland&nbsp; &nbsp;+48</option>
<option value="Portugal +351">Portugal&nbsp; &nbsp;+351</option>
<option value="Puerto Rico +1">Puerto Rico&nbsp; &nbsp;+1787</option>
<option value="Qatar +974">Qatar&nbsp; &nbsp;+974</option>
<option value="Réunion +262">Réunion&nbsp; &nbsp;+262</option>
<option value="Romania +40">Romania&nbsp; &nbsp;+40</option>
<option value="Russia +7">Russia&nbsp; &nbsp;+7</option>
<option value="Rwanda +250">Rwanda&nbsp; &nbsp;+250</option>
<option value="Saint Barthélemy +590">Saint Barthélemy&nbsp; &nbsp;+590</option>
<option value="Saint Helena +290">Saint Helena&nbsp; &nbsp;+290</option>
<option value="Saint Kitts and Nevis +1">Saint Kitts and Nevis&nbsp; &nbsp;+1869</option>
<option value="Saint Lucia +1">Saint Lucia&nbsp; &nbsp;+1758</option>
<option value="Saint Martin +590">Saint Martin&nbsp; &nbsp;+590</option>
<option value="Saint Pierre and Miquelon +508">Saint Pierre and Miquelon&nbsp; &nbsp;+508</option>
<option value="Saint Vincent and the Grenadines +1">Saint Vincent and the Grenadines&nbsp; &nbsp;+1784</option>
<option value="Samoa +685">Samoa&nbsp; &nbsp;+685</option>
<option value="San Marino +378">San Marino&nbsp; &nbsp;+378</option>
<option value="São Tomé and Príncipe +239">São Tomé and Príncipe&nbsp; &nbsp;+239</option>
<option value="Saudi Arabia +966">Saudi Arabia &nbsp; &nbsp;+966</option>
<option value="Senegal +221">Senegal &nbsp; &nbsp;+221</option>
<option value="Serbia +381">Serbia&nbsp; &nbsp;+381</option>
<option value="Seychelles +248">Seychelles&nbsp; &nbsp;+248</option>
<option value="Sierra Leone +232">Sierra Leone&nbsp; &nbsp;+232</option>
<option value="Sint Maarten +1">Sint Maarten&nbsp; &nbsp;+1721</option>
<option value="Slovakia +421">Slovakia&nbsp; &nbsp;+421</option>
<option value="Slovenia +386">Slovenia&nbsp; &nbsp;+386</option>
<option value="Solomon Islands +677">Solomon Islands&nbsp; &nbsp;+677</option>
<option value="Somalia +252">Somalia&nbsp; &nbsp;+252</option>
<option value="South Africa +27">South Africa&nbsp; &nbsp;+27</option>
<option value="South Korea +82">South Korea&nbsp; &nbsp;+82</option>
<option value="South Sudan +211">South Sudan&nbsp; &nbsp;+211</option>
<option value="Spain +34">Spain&nbsp; &nbsp;+34</option>
<option value="Sri Lanka +94">Sri Lanka &nbsp; &nbsp;+94</option>
<option value="Sudan +249">Sudan&nbsp; &nbsp;+249</option>
<option value="Suriname">Suriname&nbsp; &nbsp;+597</option>
<option value="Svalbard and Jan Mayen +47">Svalbard and Jan Mayen&nbsp; &nbsp;+47</option>
<option value="Sweden +46">Sweden&nbsp; &nbsp;+46</option>
<option value="Switzerland +41">Switzerland&nbsp; &nbsp;+41</option>
<option value="Syria +963">Syria &nbsp; &nbsp;+963</option>
<option value="Taiwan +886">Taiwan&nbsp; &nbsp;+886</option>
<option value="Tajikistan +992">Tajikistan&nbsp; &nbsp;+992</option>
<option value="Tanzania +255">Tanzania&nbsp; &nbsp;+255</option>
<option value="Thailand +66">Thailand&nbsp; &nbsp;+66</option>
<option value="Timor-Leste +670">Timor-Leste&nbsp; &nbsp;+670</option>
<option value="Togo +228">Togo&nbsp; &nbsp;+228</option>
<option value="Tokelau +690">Tokelau&nbsp; &nbsp;+690</option>
<option value="Tonga +676">Tonga&nbsp; &nbsp;+676</option>
<option value="Trinidad and Tobago +1">Trinidad and Tobago&nbsp; &nbsp;+1868</option>
<option value="Tunisia +216">Tunisia&nbsp; &nbsp;+216</option>
<option value="Turkey +90">Turkey&nbsp; &nbsp;+90</option>
<option value="Turkmenistan +993">Turkmenistan&nbsp; &nbsp;+993</option>
<option value="Turks and Caicos Islands +1">Turks and Caicos Islands&nbsp; &nbsp;+1649</option>
<option value="Tuvalu +688">Tuvalu&nbsp; &nbsp;+688</option>
<option value="U.S. Virgin Islands +1">U.S. Virgin Islands&nbsp; &nbsp;+1340</option>
<option value="Uganda +256">Uganda&nbsp; &nbsp;+256</option>
<option value="Ukraine +380">Ukraine&nbsp; &nbsp;+380</option>
<option value="United Arab Emirates +971">United Arab Emirates &nbsp; &nbsp;+971</option>
<option value="United Kingdom +44">United Kingdom&nbsp; &nbsp;+44</option>
<option value="United States +1">United States&nbsp; &nbsp;+1</option>
<option value="Uruguay +598">Uruguay&nbsp; &nbsp;+598</option>
<option value="Uzbekistan +998">Uzbekistan&nbsp; &nbsp;+998</option>
<option value="Vanuatu +678">Vanuatu&nbsp; &nbsp;+678</option>
<option value="Vatican City +39">Vatican City&nbsp; &nbsp;+379</option>
<option value="Venezuela +58">Venezuela&nbsp; &nbsp;+58</option>
<option value="Vietnam +84">Vietnam&nbsp; &nbsp;+84</option>
<option value="Wallis and Futuna +681">Wallis and Futuna&nbsp; &nbsp;+681</option>
<option value="Western Sahara +212">Western Sahara &nbsp; &nbsp;+21228</option>
<option value="Yemen +967">Yemen&nbsp; &nbsp;+967</option>
<option value="Zambia +260">Zambia&nbsp; &nbsp;+260</option>
<option value="Zimbabwe +263">Zimbabwe&nbsp; &nbsp;+263</option>
<option value="Åland Islands +385">Åland Islands&nbsp; &nbsp;+35818</option>
</select>
<input class="Inquiryphone" id="ticket_PhoneNo" name="PhoneNo"
placeholder="Phone number *" type="tel" value="" />
<div id="ticket_contact_errmsg" style="display: none">
<div class="requiredArea" style="margin-top:-10px;">Please enter your phone number.</div>
</div>
<textarea name="other_travelers_names" placeholder="If booking two or more tickets,please fill in other traveler name(s) here:(per passport, e.g.Smith Sarah Jean)."></textarea>
<input name="total_price" id="totalPriceHidden" type="hidden" value="10000" />
<input name="product_code" id="cli_no" type="hidden" value="YDFW-AH"/>
<input name="itinerary" type="hidden" value="<?php echo $information->ic_title; ?>" />
<button class="sendButton" id="submit_ticket_button" name="submit_ticket_form"
type="button">Proceed to Payment</button>
<p style=" text-align: center;
font-style: italic;
margin-top: -15px;
line-height: 20px;"><strong>Once we receive your payment, our travel advisor will contact you within 24 hours and send you your e-ticket.</strong></p>
</form>
</div>
<script>
function calcTotalPrice(ticketPrice, adultNumber) {
var totalPrice = ticketPrice * adultNumber;
if (adultNumber >= 10) {
totalPrice = totalPrice * 0.95;
}
totalPrice = totalPrice.toFixed(2);
totalPriceHidden.value = totalPrice;
totalPriceText.innerText = '$' + totalPrice;
}
var adultNumberNode = document.getElementById("adultNumberValue");
var ticketDateList = document.querySelectorAll("input[name='ticket_date']");
var ticketTypeList = document.querySelectorAll("input[name='ticket_type']");
var ticket_type_premium_khomloy_div = document.getElementById("ticket_type_premium_khomloy");
var ticket_type_vip_khomloy_div = document.getElementById("ticket_type_vip_khomloy");
var ticket_type_standard_khomloy_div = document.getElementById("ticket_type_standard_khomloy");
var ticket_type_premium_heritage_div = document.getElementById("ticket_type_premium_heritage");
var ticket_type_vip_heritage_div = document.getElementById("ticket_type_vip_heritage");
var premium_khomloy_radio = document.getElementById("premium_khomloy");
var premium_heritage_radio = document.getElementById("premium_heritage");
var ticket_date_november15th = document.getElementById("ticket_date_november15th");
var ticket_date_november16th = document.getElementById("ticket_date_november16th");
var venueList = document.querySelectorAll("input[name='Venue']");
var totalPriceText = document.getElementById("totalPriceText");
var totalPriceHidden = document.getElementById("totalPriceHidden");
var adultNumberValue = parseInt(adultNumberNode.value);
var currentTicketPrice = 10000;
for (var i = 0; i < venueList.length; i++) {
var venueNode = venueList[i];
venueNode.addEventListener('click', function (event) {
var currentTarget = event.currentTarget;
if (currentTarget.id === 'Khomloy') {
setKhomloyTicket();
}
if (currentTarget.id === 'Heritage') {
setHeritageTicket();
}
});
}
for (var i = 0; i < ticketTypeList.length; i++) {
var ticketTypeNode = ticketTypeList[i];
var dataPrice = parseInt(ticketTypeNode.getAttribute('data-price'));
if (ticketTypeNode.checked) {
currentTicketPrice = dataPrice;
calcTotalPrice(currentTicketPrice, adultNumberValue);
}
ticketTypeNode.addEventListener('click', function (event) {
var currentTarget = event.currentTarget;
currentTicketPrice = parseInt(currentTarget.getAttribute('data-price'));
adultNumberValue = parseInt(adultNumberNode.value);
calcTotalPrice(currentTicketPrice, adultNumberValue);
});
}
function setKhomloyTicket() {
ticket_type_premium_khomloy_div.style.display = '';
ticket_type_vip_khomloy_div.style.display = '';
ticket_type_standard_khomloy_div.style.display = '';
ticket_type_premium_heritage_div.style.display = 'none';
ticket_type_vip_heritage_div.style.display = 'none';
ticket_date_november15th.style.display = '';
ticket_date_november16th.style.display = '';
premium_khomloy_radio.checked = true;
currentTicketPrice = parseInt(premium_khomloy_radio.getAttribute('data-price'));
adultNumberValue = parseInt(adultNumberNode.value);
calcTotalPrice(currentTicketPrice, adultNumberValue);
}
function setHeritageTicket() {
ticket_type_premium_khomloy_div.style.display = 'none';
ticket_type_vip_khomloy_div.style.display = 'none';
ticket_type_standard_khomloy_div.style.display = 'none';
ticket_type_premium_heritage_div.style.display = '';
ticket_type_vip_heritage_div.style.display = '';
ticket_date_november15th.style.display = '';
ticket_date_november16th.style.display = 'none';
premium_heritage_radio.checked = true;
currentTicketPrice = parseInt(premium_heritage_radio.getAttribute('data-price'));
adultNumberValue = parseInt(adultNumberNode.value);
calcTotalPrice(currentTicketPrice, adultNumberValue);
}
var plusButton = document.getElementById("plusButton");
var minusButton = document.getElementById("minusButton");
plusButton.addEventListener('click', function (event) {
adultNumberValue = parseInt(adultNumberNode.value) + 1;
adultNumberNode.value = adultNumberValue;
calcTotalPrice(currentTicketPrice, adultNumberValue);
});
minusButton.addEventListener('click', function (event) {
var beforeValue = parseInt(adultNumberNode.value);
if (beforeValue > 1) {
adultNumberValue = beforeValue - 1;
adultNumberNode.value = adultNumberValue;
calcTotalPrice(currentTicketPrice, adultNumberValue);
}
});
</script>
<script>
var submit_ticket_button = document.getElementById("submit_ticket_button");
var ticket_form = document.getElementById("ticket_form");
submit_ticket_button.addEventListener('click', function (event) {
var validateResult = validateTicketForm();
if (validateResult) {
if (typeof (grecaptcha) === "undefined") {
console.warn('grecaptcha is disabled.');
ticket_form.submit();
} else {
grecaptcha.enterprise.ready(async () => {
const token = await grecaptcha.enterprise.execute('6Lf828MhAAAAANNetijCXKwW5ARyhcJ-b1Hhslja', { action: 'ADD_TO_CART' });
var el = document.createElement("input");
el.type = "hidden";
el.name = "__grecaptcha_token__";
el.value = token;
ticket_form.appendChild(el);
ticket_form.submit();
submit_ticket_button.innerText = "Submitted successfully";
});
}
}
});
function validateTicketForm() {
var result = true;
var realnameVal = document.getElementById("ticket_realname").value;
var emailVal = document.getElementById("ticket_email").value;
var contactVal = document.getElementById("ticket_PhoneNo").value;
var realnameErrEl = document.getElementById("ticket_realname_errmsg");
var emailErrEl = document.getElementById("ticket_email_errmsg");
var emailVerifyErrEl = document.getElementById("ticket_email_verify_errmsg");
var contactErrEl = document.getElementById("ticket_contact_errmsg");
var ticketTypeErrEl = document.getElementById("ticket_type_errmsg");
realnameErrEl.style.display = 'none';
emailErrEl.style.display = 'none';
emailVerifyErrEl.style.display = 'none';
contactErrEl.style.display = 'none';
ticketTypeErrEl.style.display = 'none';
var selectedTicketType = false;
for (var i = 0; i < ticketTypeList.length; i++) {
var ticketTypeNode = ticketTypeList[i];
if (ticketTypeNode.checked) {
selectedTicketType = true;
}
}
if (!selectedTicketType) {
ticketTypeErrEl.style.display = '';
result = false;
}
if (realnameVal === '') {
realnameErrEl.style.display = '';
result = false;
}
if (emailVal === '') {
emailErrEl.style.display = '';
result = false;
} else {
var emailPattern = /^[\w\-\.]+@[\w\-\.]+(\.\w+)+$/;
if (!emailPattern.test(emailVal)) {
emailVerifyErrEl.style.display = '';
result = false;
}
}
if (contactVal === '') {
contactErrEl.style.display = '';
result = false;
}
return result;
}
</script>

@ -28,20 +28,21 @@
'LXW' => 'https://www.globalhighlights.com/aboutus/team/carper-li', 'LXW' => 'https://www.globalhighlights.com/aboutus/team/carper-li',
'zzyGH' => 'https://www.globalhighlights.com/aboutus/team/ruru-zhou', 'zzyGH' => 'https://www.globalhighlights.com/aboutus/team/ruru-zhou',
]; ];
if (!empty($meta_news_createdate)) {?> $OPI_Code = empty($OPI_Code) ? '' : $OPI_Code;
<div class="authorupdate"> if (!empty($meta_news_createdate)) {?>
Written by <div class="authorupdate">
<?php if (array_key_exists($OPI_Code, $OPI_CodeUrls)) {?> Written by
<strong><a href="<?php echo $OPI_CodeUrls[$OPI_Code]; ?>" target="_blank"><?php echo $author; ?></a></strong> <?php if (array_key_exists($OPI_Code, $OPI_CodeUrls)) {?>
<?php } else { ?> <strong><a href="<?php echo $OPI_CodeUrls[$OPI_Code]; ?>" target="_blank"><?php echo $author; ?></a></strong>
<strong><?php echo $author; ?></strong> <?php } else { ?>
<?php }?> <strong><?php echo $author; ?></strong>
Updated <?php echo date("M. j, Y", strtotime($meta_news_createdate)); ?> <?php }?>
</div> Updated <?php echo date("M. j, Y", strtotime($meta_news_createdate)); ?>
<?php } ?> </div>
<?php if ($ads_by_google) { ?> <?php } ?>
<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-4231674166786366" <?php if ($ads_by_google) { ?>
crossorigin="anonymous"></script> <script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-4231674166786366"
<?php } ?> crossorigin="anonymous"></script>
<?php } ?>
</section> </section>
</div> </div>

@ -74,8 +74,6 @@
<li class="dropdown"><a href="/tour/" class="p_topnavilink" id="china_tours_2021">China Tours</a> <li class="dropdown"><a href="/tour/" class="p_topnavilink" id="china_tours_2021">China Tours</a>
<div class="chinatourspc dropdown-content"> <div class="chinatourspc dropdown-content">
<ul class="list-reset sidebar"> <ul class="list-reset sidebar">
<li class="start-nav-item"><a href="/tour/year.htm" id="tours_year_2021">China Tours
2024/2025</a></li>
<li class="start-nav-item"><a href="/tour/expats-tours.htm" <li class="start-nav-item"><a href="/tour/expats-tours.htm"
id="china_expats_tours_2021">China Expats Tours</a></li> id="china_expats_tours_2021">China Expats Tours</a></li>
<li class="start-nav-item"><a href="/tour/winter-vacation/" <li class="start-nav-item"><a href="/tour/winter-vacation/"

@ -131,8 +131,7 @@
</li> </li>
<li class="menu__item" role="menuitem"><a class="menu__link" href="/tour/family-tours/">Family Tours</a> <li class="menu__item" role="menuitem"><a class="menu__link" href="/tour/family-tours/">Family Tours</a>
</li> </li>
<li class="menu__item" role="menuitem"><a class="menu__link" href="/tour/year.htm">China Tours 2024/2025</a>
</li>
<li class="menu__item" role="menuitem"><a class="menu__link" href="/tour/china-panda-tours/">Panda Tours</a> <li class="menu__item" role="menuitem"><a class="menu__link" href="/tour/china-panda-tours/">Panda Tours</a>
</li> </li>
<li class="menu__item" role="menuitem"><a class="menu__link" href="/greatwall/hiking.htm">Great Wall <li class="menu__item" role="menuitem"><a class="menu__link" href="/greatwall/hiking.htm">Great Wall

@ -0,0 +1,37 @@
<p style="text-align: center;margin-top: 80px;margin-bottom: 0;clear:both;">Discover real reviews of <a href="/about-us/highlights-travel-family">Highlights Travel Family</a>'s best-rated service across trusted platforms. </p>
<div class="visible-xs" style="margin: 20px 20px 110px 20px; ">
<img class="img-responsive" height="69" src="https://images.chinahighlights.com/allpicture/2024/07/22bf1a7554fc4906bdeaa6536ffe514b_cut_175x68_241_1719916246.png" style="float: left; width: 150px; margin: 0 auto;
display: block;" width="175" alt="Trip Advisor 2024 certificate">
<img height="40" src="https://data.asiahighlights.com/image/forms/ah-ch-gh-tp-rating.png" style="width: 120px; height: auto; display: block;
float: right;" width="211" alt="Tour Review">
</div>
<div class="table-responsive" style="margin-bottom: 20px; margin-top: 30px;">
<table style="width: max-content;">
<tbody>
<tr>
<td class="hidden-xs feedback_logo">
<img class="img-responsive" height="69" src="https://images.asiahighlights.com/allpicture/2024/04/b3e0271ca0874b7cb0342ea6f2987723_cut_175x68_241.jpg" style="margin: 0px auto; " width="175" alt="Tour Review"> <img alt="Tour Review" class="img-responsive" height="278" src="https://images.asiahighlights.com/allpicture/2024/04/0c58b3494bc04eeb9c5d3bdf55e55fad_cut_200x111_241.jpg" style="width: 170px; display: block; margin: 10px auto 0px; " width="1133">
</td>
<?php foreach ($feedback_list as $index => $feedback) {?>
<td class="tour_feedback feedback_content">
<strong>
<?php echo $feedback['title'] ?>
</strong>
<img src="<?php if (strpos($feedback['url'], 'trustpilot.com') == true) { echo 'https://images.asiahighlights.com/allpicture/2024/04/eba8a46e43514b55bb4e1dd15d9b5712_cut_211x40_241.jpg'; } else if (strpos($feedback['url'], 'tripadvisor.com') == true) { echo 'https://images.asiahighlights.com/allpicture/2024/04/8bebcc898ce54b64a46ced58580966d4_cut_104x19_241.jpg'; } ?>" style="height: 20px; width: auto;" alt="Tour Review">
<p>
<?php echo $feedback['content'] ?>
</p>
<a href="<?php echo $feedback['url'] ?>" target="_blank" rel="nofollow">More</a>
<div class="customer_name">
<?php echo $feedback['customer'] ?>, <?php echo $feedback['createdOn'] ?>
</div>
</td>
<?php }?>
</tr>
</tbody>
</table>
</div>

@ -28,6 +28,7 @@
'LXW' => 'https://www.globalhighlights.com/aboutus/team/carper-li', 'LXW' => 'https://www.globalhighlights.com/aboutus/team/carper-li',
'zzyGH' => 'https://www.globalhighlights.com/aboutus/team/ruru-zhou', 'zzyGH' => 'https://www.globalhighlights.com/aboutus/team/ruru-zhou',
]; ];
$OPI_Code = empty($OPI_Code) ? '' : $OPI_Code;
if (!empty($meta_news_createdate)) {?> if (!empty($meta_news_createdate)) {?>
<div class="authorupdate"> <div class="authorupdate">
Written by Written by

Loading…
Cancel
Save