diff --git a/application/config/config.php b/application/config/config.php
index 966a3298..f702ddf0 100644
--- a/application/config/config.php
+++ b/application/config/config.php
@@ -388,6 +388,7 @@ $config['proxy_ips'] = '';
//各站信息组和人员权限分配
$config['site'] = array(
'cht' => array('site_code' => 'cht', 'site_id' => 14, 'site_lgc' => '1', 'site_url' => 'https://www.chinahighlights.com', 'site_image_url' => '//images.chinahighlights.com', 'site_authors' => array('zzy', 'spt', 'yl', 'gavin', 'sw', 'zl', 'wbl', 'yqw', 'lf', 'zhm', 'pkl'), 'site_user' => ',ycc,lmr, zyh,J,shw,B,zzy,WJJ,Tony,pcf,zxy,wst,wz,v,S,yyg,yxd,wj,sw,yl,hx,spt,wmr,zl,syt,gavin,zm,htc,yqw,bhn,lmj,wbl,yqw,LYY,zhm,si'),
+ 'ch' => array('site_code' => 'ch', 'site_id' => 14, 'site_lgc' => '1', 'site_url' => 'https://www.chinahighlights.com', 'site_image_url' => '//images.chinahighlights.com', 'site_authors' => array('TDJ'), 'site_user' => ',ycc,'),
'gm' => array('site_code' => 'gm', 'site_id' => 22, 'site_lgc' => '4', 'site_url' => 'https://www.chinarundreisen.com', 'site_image_url' => '//bilder.chinarundreisen.com', 'site_authors' => array('DX', 'X', 'K', 'Lan', 'lmr', 'zyh', 'ZYHL', 'TDJ'), 'site_user' => ',ycc,lmr,B,zyh,DX,X,K,htc,zm,bhn,Lan,Tony,zyh,J,v,ZYHL,TDJ,LYY,shw,'),
'vc' => array('site_code' => 'vc', 'site_id' => 30, 'site_lgc' => '5', 'site_url' => 'https://www.voyageschine.com', 'site_image_url' => '//images.voyageschine.com', 'site_authors' => array('JE', 'kq', 'lya', 'lyz', 'zyh'), 'site_user' => ',ycc,lmr, zyh,JE,htc,kq,lya,bhn,Tony,zyh,B,J,lyz,LYY,'),
'jp' => array('site_code' => 'jp', 'site_id' => 88, 'site_lgc' => '3', 'site_url' => 'https://www.arachina.com', 'site_image_url' => '//images.arachina.com', 'site_authors' => array('hql', 'LLM', 'SHX', 'lmr', 'zyh', 'zb'), 'site_user' => ',ycc,lmr, zyh,hql,LLM,SHX,htc,zpl,Tony,zyh,J,B,zb,LYY,'),
diff --git a/application/controllers/import.php b/application/controllers/import.php
index a538d067..cbe82353 100644
--- a/application/controllers/import.php
+++ b/application/controllers/import.php
@@ -14,7 +14,7 @@ class Import extends CI_Controller
// $this->load->model('Area_model');
$this->load->model('Import_model');
// $this->load->model('InfoContents_model');
- // $this->load->model('InfoStructures_model');
+ $this->load->model('InfoStructures_model');
$this->load->library('simple_html_dom_lib');
}
@@ -51,7 +51,7 @@ class Import extends CI_Controller
$h_id=$item->h_id;
$file=$item->h_file;
$h_done=1;
- //$file='D:\wwwroot\gh-html\chinahighlights\xian\tour-planning-md.htm';
+ //$file='f:\asiahighlights\myanmar\top-restaurants';
if (!is_file($file)) {
echo '文件不存在:'.$file;
continue;
@@ -61,10 +61,17 @@ class Import extends CI_Controller
echo '文件加载失败:'.$file;
continue;
}
+ $h_source=$html_object->outertext;
$h_content=$html_object->find('div[id=mainContentRight]', 0);
if (empty($h_content)) {
$h_content=$html_object->find('div[id=content]', 0);
}
+ if (empty($h_content)) {
+ $h_content=$html_object->find('div.Information', 0);
+ }
+ if (empty($h_content)) {
+ $h_content=$html_object->find('div[id=content_main]', 0);
+ }
if (empty($h_content)) {
$h_content=$html_object->find('div[id=mainContent]', 0);
}
@@ -89,10 +96,11 @@ class Import extends CI_Controller
} else {
$h_content=$h_content->innertext;
}
-
+//echo $h_content;die();
$h_url=str_replace('\\', '/', $file);
- $h_url=str_replace('D:/wwwroot/gh-html/chinahighlights/', 'https://www.chinahighlights.com/', $h_url);
- $h_url=str_replace('D:/wwwroot/gh-html/asiahighlights/', 'https://www.asiahighlights.com/', $h_url);
+ $h_url=str_replace('F:/recovery-html/chinahighlights/', '/', $h_url);
+ $h_url=str_replace('F:/recovery-html/asiahighlights/', '/', $h_url);
+ $h_url=str_replace('d:/asiahighlights-htm/', '/', $h_url);
$h_url=str_replace('index-md.htm', '', $h_url);
$h_url=str_replace('-md.htm', '.htm', $h_url);
@@ -129,10 +137,52 @@ class Import extends CI_Controller
echo 'h_description:'.$h_description.'';
echo '
';
//echo $h_content;
- $this->Import_model->update_html_info($h_id, $h_h1, $h_title, $h_url, $h_description, $h_content, $h_done);
+ $this->Import_model->update_html_info($h_id, $h_h1, $h_title, $h_url, $h_description, $h_content,$h_source, $h_done);
}
}
+ //给节点分组
+ public function allot_group($sitecode){
+ $this->HT = $this->load->database('INFO', TRUE);
+ $sql=' select top 10 hg.*,isnull((select top 1 hg2.g_is_id from html_group hg2 where hg2.g_id=hg.g_panrent_id),0) as panrent_is_id from html_group hg where hg.g_done=0 and hg.g_sitecode=? order by hg.g_id asc ';
+ $query=$this->HT->query($sql,$sitecode);
+ if(empty($query->result())){
+ echo '处理完毕';
+ return;
+ }
+
+ foreach ($query->result() as $item) {
+ //是根节点
+ if($item->g_panrent_id==0){
+ $this->HT->query('update Tourmanager.dbo.infoStructures set is_parent_id=-99 ,is_path= cast(is_id as varchar(max))+\',\',is_level=0,is_sort=0 where is_id=?',$item->g_is_id);
+ }else{
+ //修改分类结构
+ $panrent_is=$this->InfoStructures_model->Detail($item->panrent_is_id);
+ $is_parent_id=$panrent_is->is_id;
+ $is_path=$panrent_is->is_path.$item->g_is_id.',';
+ $is_id=$item->g_is_id;
+ $this->HT->query('update Tourmanager.dbo.infoStructures set is_parent_id=? ,is_path= ?,is_level=1 where is_id=?',array($is_parent_id,$is_path,$is_id));
+
+ $url_arr=explode(',',$item->g_url);
+ print_r($url_arr);
+ foreach($url_arr as $item_url){
+ $query_like=$this->HT->query('select ic_id,ic_title,ic_url,is_id,is_parent_id,is_path,is_level from Tourmanager.dbo.infoContents inner join Tourmanager.dbo.infoStructures on is_ic_id=ic_id and ic_sitecode=is_sitecode
+where ic_sitecode=? and ic_url like \'%'.trim($item_url).'%\' order by ic_id asc',$sitecode);
+ if(!empty($query_like->result())){
+ foreach($query_like->result() as $item_child){
+ $child_is_id=$item_child->is_id;
+ $child_is_parent_id=$is_id;
+ $child_is_path=$is_path.$child_is_id.',';
+ $this->HT->query('update Tourmanager.dbo.infoStructures set is_parent_id=? ,is_path= ?,is_level=2 where is_id=?',array($child_is_parent_id,$child_is_path,$child_is_id));
+ }
+ }
+ }
+ }
+ print_r($this->HT->queries);
+ $this->HT->query('update html_group set g_done=1 where g_id=?',$item->g_id);
+ }
+ }
+
public function clear_site()
{
$this->Import_model->import_clear_site();
diff --git a/application/controllers/information.php b/application/controllers/information.php
index 17987478..b852ef0d 100644
--- a/application/controllers/information.php
+++ b/application/controllers/information.php
@@ -330,6 +330,8 @@ 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)){
$data['mobile_first_template']=$this->load->view($mobile_first_template_path, '', TRUE);
+ }else{
+ $data['mobile_first_template']='没有找到移动模板';
}
$this->load->view('bootstrap3/header', $data);
diff --git a/application/controllers/welcome.php b/application/controllers/welcome.php
index e782bc19..fe237c5c 100644
--- a/application/controllers/welcome.php
+++ b/application/controllers/welcome.php
@@ -18,12 +18,25 @@ class Welcome extends CI_Controller {
}
public function index() {
-
+ $data=array();
$data['countryList'] = $this->Area_model->get_country_list();
$data['provinceList'] = $this->Area_model->get_province_list();
$data['city_list'] = $this->Area_model->get_municipalities_list();
$data['lastEditList'] = $this->Information_model->get_last_edit_list();
$data['last_city_list'] = $this->Area_model->get_last_edit_city();
+
+ $data['groupList']=$this->Information_model->group_list();
+
+ if($this->config->item('site_code')=='ch' || $this->config->item('site_code')=='ah' ){
+
+ $this->load->view('bootstrap3/header', $data);
+ $this->load->view('bootstrap3/welcome');
+ $this->load->view('bootstrap3/footer');
+ return;
+ }
+
+
+
if ($this->config->item('site_code') == 'pgr') {
$data['countryList'] = $this->Area_model->get_country_list_for_site("'589','645','632','517','31','28','609','630','9','708','709'");
@@ -33,6 +46,9 @@ class Welcome extends CI_Controller {
$this->load->view('bootstrap/welcome');
$this->load->view('bootstrap/footer');
}
+
+
+
public function search($isrecommend = false) {
//先搜索url,如果找到唯一就跳走,多于一条的则列出来,一条没有的就去搜索信息
diff --git a/application/models/import_model.php b/application/models/import_model.php
index b7888ea5..47f4d051 100644
--- a/application/models/import_model.php
+++ b/application/models/import_model.php
@@ -10,15 +10,16 @@ class Import_model extends CI_Model
}
function not_done_html_info($h_sitecode){
- $sql="select top 1000 * from html_infos where h_sitecode=? and h_done=2 order by h_id desc";
+ $sql="select top 500 * from html_infos where h_sitecode=? and h_done=0 order by h_id desc";
$query=$this->HT->query($sql,$h_sitecode);
return $query->result();
}
- function update_html_info($h_id,$h_h1,$h_title,$h_url,$h_description,$h_content,$h_done){
- $sql=' update html_infos set h_done=? ,h_url=N?, h_description=N? ,h_h1=N? ,h_title=N?,h_content=N? where h_id=? ';
- return $this->HT->query($sql,array($h_done,$h_url,$h_description,$h_h1,$h_title,$h_content,$h_id));
+ function update_html_info($h_id,$h_h1,$h_title,$h_url,$h_description,$h_content,$h_source,$h_done){
+ $sql=' update html_infos set h_done=? ,h_url=N?, h_description=N? ,h_h1=N? ,h_title=N?,h_content=N? ,h_source=N? where h_id=? ';
+ return $this->HT->query($sql,array($h_done,$h_url,$h_description,$h_h1,$h_title,$h_content,$h_source,$h_id));
}
+
function import_clear()
{
diff --git a/application/models/information_model.php b/application/models/information_model.php
index 8a2cb0f6..e598093f 100644
--- a/application/models/information_model.php
+++ b/application/models/information_model.php
@@ -199,7 +199,7 @@ class Information_model extends CI_Model {
$this->orderBy ? $sql.=$this->orderBy : false;
$query = $this->HT->query($sql, array($site_code ? $site_code : $this->config->item('site_code')));
- //print_r($this->HT->queries);die();
+ //print_r($this->HT->queries);
if ($this->topNum === 1) {
if ($query->num_rows() > 0) {
$row = $query->row();
@@ -416,6 +416,14 @@ class Information_model extends CI_Model {
return $query->row();
}
+
+ //获取分组列表
+ function group_list(){
+ $this->init();
+ $this->search =' AND is_level<=1 ';
+ $this->orderBy = ' ORDER BY is1.is_level ASC, is1.is_sort ASC,is1.is_path ASC ';
+ return $this->GetList();
+ }
}
diff --git a/application/views/bootstrap3/information_edit.php b/application/views/bootstrap3/information_edit.php
index 05b1e850..3bd64213 100644
--- a/application/views/bootstrap3/information_edit.php
+++ b/application/views/bootstrap3/information_edit.php
@@ -487,8 +487,6 @@
filebrowserUploadUrl: '/wysiwyg/ckfinder/core/connector/php/connector.php?command=QuickUpload&type=image',
contentsCss:'config->item("css_source_" . $this->config->item("site_code")); ?>'
});
- //如果是cht站点,默认显示手机预览框
- switch_preview_tree();
};
function switch_preview_tree(){
@@ -577,6 +575,7 @@
+
信息标题 & IC_ID: ic_id; ?>
@@ -660,7 +659,6 @@ if ($embody == 1) {
ic_sitecode == 'ah') {?>
-
diff --git a/application/views/bootstrap3/welcome.php b/application/views/bootstrap3/welcome.php
new file mode 100644
index 00000000..32ea6320
--- /dev/null
+++ b/application/views/bootstrap3/welcome.php
@@ -0,0 +1,62 @@
+
+
+
+
+
+
+
+
+
+ 最新编辑
+
+
+ #
+ 标题
+ 时间
+
+
+
+ $item){ ?>
+
+
+ ic_url_title; ?>
+ ic_datetime)); ?>
+
+
+
+
+
+
+
+ is_level==0){?>
+
+
+
ic_title; ?>
+
+
+ is_level==0){
+ foreach($groupList as $item_child){
+ if($item_child->is_parent_id==$item->is_id){
+ echo ' '.$item_child->ic_title.' ';
+ }
+ }
+ } ?>
+
+
+
+
.col-xs-6 .col-md-4
+
+
diff --git a/application/views/mobile_first/ch-backup.php b/application/views/mobile_first/ch-backup.php
new file mode 100644
index 00000000..b5c7f548
--- /dev/null
+++ b/application/views/mobile_first/ch-backup.php
@@ -0,0 +1,136 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/application/views/mobile_first/ch.php b/application/views/mobile_first/ch.php
new file mode 100644
index 00000000..6fc1f453
--- /dev/null
+++ b/application/views/mobile_first/ch.php
@@ -0,0 +1,1810 @@
+
+
+
+
+
+ 6 Recommended Destinations for Your China Tours 2020
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
信息更新提醒
+
+
+
+
页面头部大图
+
+
+
+
+
+
信息头部分类,H1,副标题
+
+
Chinese Food
+
Spicy - Central China, Especially Sichuan and Hunan
+
Spiciness is also called the "pungent flavor"
+ among the five flavors. It can not only whet
+ the appetite.
+
+
+
社媒分享按钮
+
+
+
+
信息页面作者,更新时间
+
By Candice Song Update 20.08.2020
+
+
+
+
+
信息页面文章推荐
+
+
+
+
Read Next
+
+
+
+
+
+
+
+
+
信息页面TM引导
+
+
We are here to help you... start planning your tailor-made China tour with 1-1 help from our travel advisors.
+
+ Create Your Trip
+
+
+
+
+
+
产品页面内导航
+
+
+
+
+
产品页面亮点内容
+
+
Tour 'Wow' Points
+
+
Discover a Little-Known Pristine Land on the Border between Qinghai and Sichuan
+
This is the ancient battlefield of King Gesar as told in the Tibetan legend. It is a forgotten wonderland blessed by the Tibetan gods.
+
+
+
+
Enjoy the Sunset at the First Bend of the Yellow River
+
Drive through the paradise of the local nomadic people in the Nuoergai Wetland Nature Reserve. Enjoy the ribbon-like bends of the Yellow River at sunset.
+
+
+
+
Uncover the Small Sects of the Tibetan Buddhism at the Less Touristy Monasteries.
+
The magnificent golden roof, the white pagodas, the colorful butter sculptures and thousands of prayer wheels of the monasteries will bring you to the spirit world of the Tibetan Buddhism.
+
+
+
+
+
+
+
产品页面whyus内容
+
+
+
+
We Fix the Uncertainty & Concern:
+
+ Confirm where you can go.
+ Help guide you to get the required travel documents.
+ Offer the best options when last minute changes occur.
+ Promise full refund for any reason when canceling before your arrival day.
+
+
+
Tourist Trap? Never Happens with Us:
+
+ You control the pace of the trip and won't be pushed.
+ No time or money wasted in commission shops.
+ No no-shows or risky bookings with one-man companies.
+
+
+
+
+
+
+
+
+
产品页面预定流程和用户反馈
+
+
+
Finish Your Booking in as Quick as 1 Day
+
+
+
+
+
Tell us your dream travel idea
+
+
+
+
Work out your unique plan with 1 to 1 expert advice
+
+
+
+
+
+
10000+ Travelers Say
+
+
+
+
10000+ excellent reviews
+
+
+
+
产品页面用户反馈
+
+
Best experience ever!
+
Our tour guide Mervyn was extremely knowledgeable. We had to change our plans due to a virus closure and she found other activities that we loved! By the end of the trip we felt like we had made a close friend and would enjoy spending time together again.
+
Angela T from US, July, 2020
+
+
+
+
+
+
+
Tour Map
+
+
+
+
+
+
Itinerary Quick Look
+
+
+
产品页面具体行程
+
+
+
DAY 1
+
Chengdu to Songpan (322 km, 6 hrs)
+
Drive from Chengdu to Songpan and enjoy the mountain scenery along the way. Explore the Songpan ancient town in the late afternoon.
+
+
+
DAY 2
+
Songpan to Ruoergai to Tangke (200 km, 3½ hrs)
+
Ruoergai Huahu (Flower Lake) , the Roergai grasslands, and the sunset at the first bend of the Yellow River.
+
+
+
DAY 3
+
Tangke to A'ba (140 km, 3 hrs)
+
Saige Lamasery and Langyi Monastery
+
+
+
DAY 4
+
A'ba
+
The Lianbaoyeze Scenic Area. This is a secret place hidden away in the mountains and includes a beautiful lake surrounded by peaks.
+
+
+
DAY 5
+
5 A'ba to Chengdu (477 km, 8 hrs)
+
Drive from A'ba back to Chengdu. Visit the Ganbao Tibetan village on the way.
+
+
+
+
+
+
产品页面酒店
+
+
Hotel Selection
+
+
+
—the Icing on the Cake
+
+
Boutique hotels are recommended to enrich your travel experience.
+
+
+
+
+
+
+
+
+
+
+
+
产品页面价格
+
+
FromCNY 8340 p/p
+
Based on a private tour for 2 people. price varies depending on program, travel date, number of people and chosen hotel
+
Price includes:
+
+ Private air-conditioned business car with big windows and ample space
+ English speaking local guide
+ Activities, hotels, and meals listed in the itinerary
+ 24/7 helpline for while you are traveling
+
+
+
+
+
产品页面微信
+
Contact us via WeChat or click the red button to start planning.
+
chinahighlightstour
+
+
+
+
+
产品页面预定按钮
+
+
+
+
+
+
底部
+
+
+
+
Contact us via WeChat
+
+
+
+
+
+
+
+
+
Featured on
+
+
+
+
+ © 1998-2020 China Highlights — Discovery Your Way!
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/css/mobile-menu.css b/css/mobile-menu.css
new file mode 100644
index 00000000..127d5b87
--- /dev/null
+++ b/css/mobile-menu.css
@@ -0,0 +1,349 @@
+/* Icons (made with Icomoon.io) */
+
+@font-face {
+ font-family: 'feather';
+ font-weight: normal;
+ font-style: normal;
+ src: url('//data.chinahighlights.com/css/fonts/feather.eot?1gafuo');
+ src: url('//data.chinahighlights.com/css/fonts/feather.eot?1gafuo#iefix') format('embedded-opentype'), url('//data.chinahighlights.com/css/fonts/feather.woff2?1gafuo') format('woff2'), url('//data.chinahighlights.com/css/fonts/feather.ttf?1gafuo') format('truetype'), url('//data.chinahighlights.com/css/fonts/feather.woff?1gafuo') format('woff'), url('//data.chinahighlights.com/css/fonts/feather.svg?1gafuo#feather') format('svg');
+}
+
+.icon {
+ font-family: 'feather';
+ font-weight: normal;
+ font-style: normal;
+ font-variant: normal;
+ line-height: 1;
+ text-transform: none;
+ /* Better Font Rendering =========== */
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+ speak: none;
+}
+
+.icon--arrow-left:before {
+ content: '\e901';
+}
+
+.icon--menu:before {
+ content: '\e903';
+}
+
+.icon--cross:before {
+ content: '\e117';
+}
+
+
+/* Menu styles */
+
+.menu {
+ position: fixed;
+ top: 120px;
+ left: 0;
+ width: 300px;
+ height: calc(100vh - 120px);
+ background: #1c1d22;
+}
+
+.menu__wrap {
+ position: absolute;
+ top: 3.5em;
+ bottom: 0;
+ overflow: hidden;
+ width: 100%;
+}
+
+.menu__level {
+ position: absolute;
+ top: 0;
+ left: 0;
+ visibility: hidden;
+ overflow: hidden;
+ overflow-y: scroll;
+ width: calc(100% + 50px);
+ height: 100%;
+ margin: 0;
+ padding: 0;
+ list-style-type: none;
+}
+
+.menu__level:focus {
+ outline: none;
+}
+
+.menu__level--current {
+ visibility: visible;
+}
+
+.menu__item {
+ display: block;
+ width: calc(100% - 50px);
+}
+
+.menu__link {
+ font-weight: 600;
+ position: relative;
+ display: block;
+ padding: 1em 2.5em 1em 1.5em;
+ color: #bdbdbd;
+ -webkit-transition: color 0.1s;
+ transition: color 0.1s;
+}
+
+.menu__link[data-submenu]::after {
+ content: '\e904';
+ font-family: 'feather';
+ position: absolute;
+ right: 0;
+ padding: 0.25em 1.25em;
+ color: #2a2b30;
+}
+
+.menu__link:hover,
+.menu__link:focus,
+.menu__link[data-submenu]:hover::after,
+.menu__link[data-submenu]:focus::after {
+ color: #5c5edc;
+}
+
+.menu__link--current::before {
+ content: '\00B7';
+ font-size: 1.5em;
+ line-height: 0;
+ position: absolute;
+ top: 50%;
+ left: 0.5em;
+ height: 4px;
+ color: #5c5edc;
+}
+
+[class^='animate-'],
+[class*=' animate-'] {
+ visibility: visible;
+}
+
+.animate-outToRight .menu__item {
+ -webkit-animation: outToRight 0.6s both cubic-bezier(0.7, 0, 0.3, 1);
+ animation: outToRight 0.6s both cubic-bezier(0.7, 0, 0.3, 1);
+}
+
+@-webkit-keyframes outToRight {
+ to {
+ opacity: 0;
+ -webkit-transform: translate3d(100%, 0, 0);
+ transform: translate3d(100%, 0, 0);
+ }
+}
+
+@keyframes outToRight {
+ to {
+ opacity: 0;
+ -webkit-transform: translate3d(100%, 0, 0);
+ transform: translate3d(100%, 0, 0);
+ }
+}
+
+.animate-outToLeft .menu__item {
+ -webkit-animation: outToLeft 0.6s both cubic-bezier(0.7, 0, 0.3, 1);
+ animation: outToLeft 0.6s both cubic-bezier(0.7, 0, 0.3, 1);
+}
+
+@-webkit-keyframes outToLeft {
+ to {
+ opacity: 0;
+ -webkit-transform: translate3d(-100%, 0, 0);
+ transform: translate3d(-100%, 0, 0);
+ }
+}
+
+@keyframes outToLeft {
+ to {
+ opacity: 0;
+ -webkit-transform: translate3d(-100%, 0, 0);
+ transform: translate3d(-100%, 0, 0);
+ }
+}
+
+.animate-inFromLeft .menu__item {
+ -webkit-animation: inFromLeft 0.6s both cubic-bezier(0.7, 0, 0.3, 1);
+ animation: inFromLeft 0.6s both cubic-bezier(0.7, 0, 0.3, 1);
+}
+
+@-webkit-keyframes inFromLeft {
+ from {
+ opacity: 0;
+ -webkit-transform: translate3d(-100%, 0, 0);
+ transform: translate3d(-100%, 0, 0);
+ }
+ to {
+ opacity: 1;
+ -webkit-transform: translate3d(0, 0, 0);
+ transform: translate3d(0, 0, 0);
+ }
+}
+
+@keyframes inFromLeft {
+ from {
+ opacity: 0;
+ -webkit-transform: translate3d(-100%, 0, 0);
+ transform: translate3d(-100%, 0, 0);
+ }
+ to {
+ opacity: 1;
+ -webkit-transform: translate3d(0, 0, 0);
+ transform: translate3d(0, 0, 0);
+ }
+}
+
+.animate-inFromRight .menu__item {
+ -webkit-animation: inFromRight 0.6s both cubic-bezier(0.7, 0, 0.3, 1);
+ animation: inFromRight 0.6s both cubic-bezier(0.7, 0, 0.3, 1);
+}
+
+@-webkit-keyframes inFromRight {
+ from {
+ opacity: 0;
+ -webkit-transform: translate3d(100%, 0, 0);
+ transform: translate3d(100%, 0, 0);
+ }
+ to {
+ opacity: 1;
+ -webkit-transform: translate3d(0, 0, 0);
+ transform: translate3d(0, 0, 0);
+ }
+}
+
+@keyframes inFromRight {
+ from {
+ opacity: 0;
+ -webkit-transform: translate3d(100%, 0, 0);
+ transform: translate3d(100%, 0, 0);
+ }
+ to {
+ opacity: 1;
+ -webkit-transform: translate3d(0, 0, 0);
+ transform: translate3d(0, 0, 0);
+ }
+}
+
+.menu__breadcrumbs {
+ font-size: 0.65em;
+ line-height: 1;
+ position: relative;
+ padding: 2.5em 3.75em 1.5em 2.5em;
+}
+
+.menu__breadcrumbs a {
+ font-weight: bold;
+ display: inline-block;
+ cursor: pointer;
+ vertical-align: middle;
+ letter-spacing: 1px;
+ text-transform: uppercase;
+ color: #5c5edc;
+}
+
+.menu__breadcrumbs a:last-child {
+ pointer-events: none;
+}
+
+.menu__breadcrumbs a:hover,
+.menu__breadcrumbs a:focus {
+ color: #8182e0;
+}
+
+.menu__breadcrumbs a:not(:last-child)::after {
+ content: '\e902';
+ font-family: 'feather';
+ display: inline-block;
+ padding: 0 0.5em;
+ color: #33353e;
+}
+
+.menu__breadcrumbs a:not(:last-child):hover::after,
+.menu__breadcrumbs a:not(:last-child):focus::after {
+ color: #33353e;
+}
+
+.menu__back {
+ font-size: 1.05em;
+ position: absolute;
+ z-index: 100;
+ top: 0;
+ right: 2.25em;
+ margin: 0;
+ padding: 1.365em 0.65em 0 0;
+ cursor: pointer;
+ color: #2a2b30;
+ border: none;
+ background: none;
+}
+
+.menu__back--hidden {
+ pointer-events: none;
+ opacity: 0;
+}
+
+.menu__back:hover,
+.menu__back:focus {
+ color: #fff;
+ outline: none;
+}
+
+
+/* Open and close buttons */
+
+.action {
+ position: absolute;
+ display: block;
+ margin: 0;
+ padding: 0;
+ cursor: pointer;
+ border: none;
+ background: none;
+}
+
+.action:focus {
+ outline: none;
+}
+/*
+.action--open {
+ font-size: 1.5em;
+ top: 1em;
+ left: 1em;
+ display: none;
+ color: #fff;
+ position: fixed;
+ z-index: 1000;
+}
+*/
+.action--close {
+ font-size: 1.1em;
+ top: 1.25em;
+ right: 1em;
+ display: none;
+ color: #45464e;
+}
+
+@media screen and (max-width: 40em) {
+
+ /*
+ .action--open,*/
+ .action--close {
+ display: block;
+ }
+ .menu {
+ z-index: 1000;
+ top: 0;
+ width: 100%;
+ height: 100vh;
+ -webkit-transform: translate3d(-100%, 0, 0);
+ transform: translate3d(-100%, 0, 0);
+ -webkit-transition: -webkit-transform 0.3s;
+ transition: transform 0.3s;
+ }
+ .menu--open {
+ -webkit-transform: translate3d(0, 0, 0);
+ transform: translate3d(0, 0, 0);
+ }
+}
diff --git a/js/jqcloud/jqcloud-1.0.4.min.js b/js/jqcloud/jqcloud-1.0.4.min.js
new file mode 100644
index 00000000..960a4299
--- /dev/null
+++ b/js/jqcloud/jqcloud-1.0.4.min.js
@@ -0,0 +1,11 @@
+/*!
+ * jQCloud Plugin for jQuery
+ *
+ * Version 1.0.4
+ *
+ * Copyright 2011, Luca Ongaro
+ * Licensed under the MIT license.
+ *
+ * Date: 2013-05-09 18:54:22 +0200
+*/
+(function(e){"use strict";e.fn.jQCloud=function(t,n){var r=this,i=r.attr("id")||Math.floor(Math.random()*1e6).toString(36),s={width:r.width(),height:r.height(),center:{x:(n&&n.width?n.width:r.width())/2,y:(n&&n.height?n.height:r.height())/2},delayedMode:t.length>50,shape:!1,encodeURI:!0,removeOverflowing:!0};n=e.extend(s,n||{}),r.addClass("jqcloud").width(n.width).height(n.height),r.css("position")==="static"&&r.css("position","relative");var o=function(){var s=function(e,t){var n=function(e,t){return Math.abs(2*e.offsetLeft+e.offsetWidth-2*t.offsetLeft-t.offsetWidth)t.weight?-1:0});var u=n.shape==="rectangular"?18:2,a=[],f=n.width/n.height,l=function(o,l){var c=i+"_word_"+o,h="#"+c,p=6.28*Math.random(),d=0,v=0,m=0,g=5,y="",b="",w;l.html=e.extend(l.html,{id:c}),l.html&&l.html["class"]&&(y=l.html["class"],delete l.html["class"]),t[0].weight>t[t.length-1].weight&&(g=Math.round((l.weight-t[t.length-1].weight)/(t[0].weight-t[t.length-1].weight)*9)+1),w=e("").attr(l.html).addClass("w"+g+" "+y),l.link?(typeof l.link=="string"&&(l.link={href:l.link}),n.encodeURI&&(l.link=e.extend(l.link,{href:encodeURI(l.link.href).replace(/'/g,"%27")})),b=e("").attr(l.link).text(l.text)):b=l.text,w.append(b);if(!!l.handlers)for(var E in l.handlers)l.handlers.hasOwnProperty(E)&&typeof l.handlers[E]=="function"&&e(w).bind(E,l.handlers[E]);r.append(w);var S=w.width(),x=w.height(),T=n.center.x-S/2,N=n.center.y-x/2,C=w[0].style;C.position="absolute",C.left=T+"px",C.top=N+"px";while(s(w[0],a)){if(n.shape==="rectangular"){v++,v*u>(1+Math.floor(m/2))*u*(m%4%2===0?1:f)&&(v=0,m++);switch(m%4){case 1:T+=u*f+Math.random()*2;break;case 2:N-=u+Math.random()*2;break;case 3:T-=u*f+Math.random()*2;break;case 0:N+=u+Math.random()*2}}else d+=u,p+=(o%2===0?1:-1)*u,T=n.center.x-S/2+d*Math.cos(p)*f,N=n.center.y+d*Math.sin(p)-x/2;C.left=T+"px",C.top=N+"px"}if(n.removeOverflowing&&(T<0||N<0||T+S>n.width||N+x>n.height)){w.remove();return}a.push(w[0]),e.isFunction(l.afterWordRender)&&l.afterWordRender.call(w)},c=function(i){i=i||0;if(!r.is(":visible")){setTimeout(function(){c(i)},10);return}i