From cf31f456e7481af7db9ba37a9be0336a7f5b9cd8 Mon Sep 17 00:00:00 2001 From: ycc Date: Thu, 5 Nov 2020 14:36:20 +0800 Subject: [PATCH] import html to informaction system --- application/config/config.php | 1 + application/controllers/import.php | 62 +- application/controllers/information.php | 2 + application/controllers/welcome.php | 18 +- application/models/import_model.php | 9 +- application/models/information_model.php | 10 +- .../views/bootstrap3/information_edit.php | 4 +- application/views/bootstrap3/welcome.php | 62 + application/views/mobile_first/ch-backup.php | 136 ++ application/views/mobile_first/ch.php | 1810 +++++++++++++++++ css/mobile-menu.css | 349 ++++ js/jqcloud/jqcloud-1.0.4.min.js | 11 + js/jqcloud/jqcloud.css | 49 + 13 files changed, 2508 insertions(+), 15 deletions(-) create mode 100644 application/views/bootstrap3/welcome.php create mode 100644 application/views/mobile_first/ch-backup.php create mode 100644 application/views/mobile_first/ch.php create mode 100644 css/mobile-menu.css create mode 100644 js/jqcloud/jqcloud-1.0.4.min.js create mode 100644 js/jqcloud/jqcloud.css 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 @@
+ @@ -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 @@ + + + + +<!--@TITLE@--> + + + + + + + + + + + + + + + + +
+
+ + China Highlights ® + CUSTOMIZE +
+
+ + + +
+
+
+ + + + +
+ + + + +
+ Start planning your tailor-made China tour … + Create My Trip +
+ + + + + + + +
+ + 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 + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + +

信息更新提醒

+ + + +

页面头部大图

+
+ xxx +
+ + +

信息头部分类,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.

+ + +

社媒分享按钮

+
+ Follow Us +
    +
  • xxx
  • +
  • xxx
  • +
  • xxx
  • +
+
+ + +

信息页面作者,更新时间

+
By Candice SongUpdate 20.08.2020
+ +
+
+ +

段落文字

+

Discover China through our unique tours with award-winning guides and with 1:1 help from a dedicated China expert, every step of the way. China Highlights have specialized in private China tours for over 20 years; it's all we do. "Nihao and welcome to China!"

+

Discover China through our unique tours with award-winning guides and with 1:1 help from a dedicated China expert, every step of the way. China Highlights have specialized in private China tours for over 20 years; it's all we do. "Nihao and welcome to China!"

+ + +

视频

+
+
+ + +

信息页面插图

+
+ xxx + Fish is a must for the Chinese New Year reunion dinner. +
+ + +

统一H2标题

+

Chinese New Year Foods — Most Have Lucky Meanings

+ + +

信息页面表格

+
+
+ Solar Date (2020) + + Lunar Date + + Title +
+ January 17th + + December 23rd + + Little Year +
+ January 24th + + December 30th + + Chinese New Year's Eve +
+ January 25th + + January 1st + + Spring Festival +
+ February 8th + + January 15th + + Lantern Festival +
+
+ + +

统一H3标题

+

Chinese New Year Foods — Most Have Lucky Meanings

+ + +

列表

+ + + +

信息页面中广告图

+
+ xxx +
+ + +

信息页面加载更多内容按钮

+ + +
+ +

信息页面文章推荐

+
+
+

New Update

+
+ + + +
+
+
+

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.

+ the people standing on the bank of the lake + painting on the rock + +

Enjoythe 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.

+ sunset at the first bend of the Yellow River + Gers on the grassland + +

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.

+ the white pagoda of Langyi Monastery + the colorful building of Saige lamasery + +
+ + +

产品页面whyus内容

+
+ Longji Terraced Fields +
+

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

+ + the certificate of TA excellent 2020 + + 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

+ + + Discover the Mysterious Tibetan Area of Northern Sichuan 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.

+ the decorations of Duomei Linka Hotel +
+ the lobby of the Duomei Linka Hotel + the bedroom of Duomei Linka Hotel +
+ + +
+ + + +

产品页面价格

+
+ FromCNY 8340p/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 + + + +
+

产品页面预定按钮

+ + + + + +

底部

+
+
+

xxx

+ Contact us via WeChat +
+ +
+ Follow Us + + + +
+ + + + +
+ Featured on + xxx +
+
+ +
+ + + + + + + + + + + + + \ 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